<?php

declare(strict_types=1);

namespace Drupal\test_theme_alter\Hook;

use Drupal\Core\Hook\Attribute\Hook;

/**
 * Hook implementations for test_theme_alter.
 */
class TestThemeAlterHooks {

  /**
   * Implements hook_TYPE_alter().
   *
   * Same as CommonTestHooks::drupalAlterAlter(), but here, we verify that themes
   * can also alter and come last. This file gets included by
   * CommonTestHooks::includeThemeFunction().
   */
  #[Hook('drupal_alter_alter')]
  public function drupalAlterAlter(&$data, &$arg2 = NULL, &$arg3 = NULL): void {
    // Alter first argument.
    if (is_array($data)) {
      $data['foo'] .= ' theme';
    }
    elseif (is_object($data)) {
      $data->foo .= ' theme';
    }
    // Alter second argument, if present.
    if (isset($arg2)) {
      if (is_array($arg2)) {
        $arg2['foo'] .= ' theme';
      }
      elseif (is_object($arg2)) {
        $arg2->foo .= ' theme';
      }
    }
    // Try to alter third argument, if present.
    if (isset($arg3)) {
      if (is_array($arg3)) {
        $arg3['foo'] .= ' theme';
      }
      elseif (is_object($arg3)) {
        $arg3->foo .= ' theme';
      }
    }
  }

}
