From 833e599d18d06f8756792b45e9f403f77058d364 Mon Sep 17 00:00:00 2001
From: quietone <quietone@2572884.no-reply.drupal.org>
Date: Thu, 24 Oct 2024 14:14:01 +1300
Subject: [PATCH] Issue #2479449 by sudiptadas19, smustgrave, akashkumar07,
 rithesh bk, rpayanm, pradhumanjain2311, tstoeckler, mrinalini9, tatisilva,
 larowlan, andypost, dawehner, xjm, yesct: contact_menu_local_tasks_alter()
 should check whether ['tabs'][0] is set

---
 core/modules/contact/contact.module           |  2 +-
 .../contact/tests/src/Unit/ContactTest.php    | 24 +++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 core/modules/contact/tests/src/Unit/ContactTest.php

diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module
index 5f0f18c2ad29..007492e4cfbe 100644
--- a/core/modules/contact/contact.module
+++ b/core/modules/contact/contact.module
@@ -98,7 +98,7 @@ function contact_entity_extra_field_info() {
  * email address configured.
  */
 function contact_menu_local_tasks_alter(&$data, $route_name) {
-  if ($route_name == 'entity.user.canonical') {
+  if ($route_name == 'entity.user.canonical' && isset($data['tabs'][0])) {
     foreach ($data['tabs'][0] as $href => $tab_data) {
       if ($href == 'entity.user.contact_form') {
         $link_params = $tab_data['#link']['url']->getRouteParameters();
diff --git a/core/modules/contact/tests/src/Unit/ContactTest.php b/core/modules/contact/tests/src/Unit/ContactTest.php
new file mode 100644
index 000000000000..b1abf037238f
--- /dev/null
+++ b/core/modules/contact/tests/src/Unit/ContactTest.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Drupal\Tests\contact\Unit;
+
+use Drupal\Tests\UnitTestCase;
+
+/**
+ * @group contact
+ */
+class ContactTest extends UnitTestCase {
+
+  /**
+   * Test contact_menu_local_tasks_alter doesn't throw warnings.
+   */
+  public function testLocalTasksAlter(): void {
+    require_once $this->root . '/core/modules/contact/contact.module';
+    $data = [];
+    \contact_menu_local_tasks_alter($data, 'entity.user.canonical');
+    $this->assertTrue(TRUE, 'No warning thrown');
+  }
+
+}
-- 
GitLab