acquia_connector-8.x-1.22/src/EventSubscriber/KernelView/CodeStudioMessage.php

src/EventSubscriber/KernelView/CodeStudioMessage.php
<?php

namespace Drupal\acquia_connector\EventSubscriber\KernelView;

use Drupal\Core\Messenger\MessengerInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\KernelEvent;
use Symfony\Component\HttpKernel\KernelEvents;

/**
 * Custom Code Studio Message Event Subscriber.
 *
 * This class checks for Code Studio environment variables and displays a
 * message indicating the environment you're in if those variables are found.
 *
 * @package Drupal\acquia_connector\EventSubscriber
 */
class CodeStudioMessage implements EventSubscriberInterface {

  use StringTranslationTrait;

  /**
   * Drupal Messenger Service.
   *
   * @var \Drupal\Core\Messenger\MessengerInterface
   */
  protected $messenger;

  /**
   * InitSubscriber constructor.
   *
   * @param \Drupal\Core\Messenger\MessengerInterface $messenger
   *   Drupal Messenger Service.
   */
  public function __construct(MessengerInterface $messenger) {
    $this->messenger = $messenger;
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    $events[KernelEvents::VIEW][] = ['onViewRenderArray', 100];
    return $events;
  }

  /**
   * {@inheritdoc}
   */
  public function onViewRenderArray(KernelEvent $event) {
    // Only load script in CD Environment (née ODE).
    $ah_env = getenv('AH_SITE_ENVIRONMENT');
    if (!$this->isOdeEnvironment($ah_env)) {
      return;
    }
    $required_variables = [
      'CODE_STUDIO_CI_PROJECT_ID',
      'CODE_STUDIO_CI_MERGE_REQUEST_IID',
      'CODE_STUDIO_CI_PROJECT_ID',
      'CODE_STUDIO_CI_PROJECT_PATH',
    ];
    foreach ($required_variables as $required_variable) {
      if (!getenv($required_variable)) {
        // Exit early if a required variable is missing.
        return;
      }
    }

    $this->messenger->addStatus($this->t('This Acquia Continuous Delivery Environment (CDE) was automatically created by <a href=":code_studio_url" target="_blank">Acquia Code Studio</a> for merge request <a href=":merge_request_url" target="_blank">!@merge_request_iid</a> for <a href=":project_url" target"_blank">@project_path</a>. It will be destroyed when the merge request is closed or merged.', [
      ':code_studio_url' => getenv('CODE_STUDIO_CI_SERVER_URL'),
      '@merge_request_iid' => getenv('CODE_STUDIO_CI_MERGE_REQUEST_IID'),
      ':merge_request_url' => getenv('CODE_STUDIO_CI_SERVER_URL') . '/' . getenv('CODE_STUDIO_CI_PROJECT_PATH') . '/-/merge_requests/' . getenv('CODE_STUDIO_CI_MERGE_REQUEST_IID'),
      '@project_path' => getenv('CODE_STUDIO_CI_PROJECT_PATH'),
      ':project_url' => getenv('CODE_STUDIO_CI_SERVER_URL') . '/' . getenv('CODE_STUDIO_CI_PROJECT_PATH'),
    ]));
  }

  /**
   * Is AH ODE.
   *
   * @param string $ah_env
   *   Environment machine name.
   *
   * @return false|int
   *   TRUE if ODE, FALSE otherwise.
   */
  protected function isOdeEnvironment($ah_env) {
    // CDEs (formerly 'ODEs') can be 'ode1', 'ode2', ...
    return (preg_match('/^ode\d*$/', $ah_env));
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc