You are here

class MailListController in Mail Editor 8

Same name and namespace in other branches
  1. 2.0.x src/Controller/MailListController.php \Drupal\mail_edit\Controller\MailListController

List all of the emails that may be edited by the module.

Hierarchy

Expanded class hierarchy of MailListController

File

src/Controller/MailListController.php, line 13

Namespace

Drupal\mail_edit\Controller
View source
class MailListController extends ControllerBase {

  /**
   * List the emails.
   *
   * @return array
   *   A render array.
   */
  public function listAll() {
    $render = [
      '#theme' => 'table',
      '#attributes' => [],
      '#header' => [
        $this
          ->t('Module'),
        $this
          ->t('Description'),
        $this
          ->t('Length (characters)'),
        $this
          ->t('Actions'),
      ],
      '#rows' => [],
    ];

    // Build rows out of the templates.
    foreach ($this
      ->getAllTemplates() as $config_name => $templates) {
      $config_label = $config_name;
      if ($config_name == 'user.mail') {
        $config_label = t('Drupal core');
      }
      foreach ($templates as $name => $data) {
        $body_length = mb_strlen($data['body']);
        if ($body_length === 0) {
          $body_length = $this
            ->t('empty');
        }
        $args = [
          'id' => $config_name . '.' . $name,
        ];
        $render['#rows'][] = [
          $config_label,
          Xss::filter($data['description']),
          $body_length,
          Link::createFromRoute($this
            ->t('Edit'), 'mail_edit.edit', $args),
        ];
      }
    }
    return $render;
  }

  /**
   * Get a list of all templates provided by the site.
   *
   * @return array
   *   A list of all templates provided by module hooks.
   */
  private function getAllTemplates() {
    $all_templates = [];
    $module_handler = \Drupal::moduleHandler();

    // Trigger hook_mail_edit_templates().
    // Get a list of the email templates as defined by other modules.
    foreach ($module_handler
      ->invokeAll('mail_edit_templates') as $config_name => $templates) {
      $config_data = $this
        ->config($config_name)
        ->getRawData();

      // Make sure data was actually found.
      if (empty($config_data)) {
        $config_data = [];
      }

      // Process each of the defined templates.
      foreach ($templates as $key => $label) {

        // Keys will not be numeric if they are in $key => $label format, so if
        // the key is numeric then it was provided as just a list of keys.
        if (is_numeric($key)) {
          $key = $label;
        }

        // Make sure the config structure exists.
        if (!isset($config_data[$key])) {
          $config_data[$key] = [
            'subject' => '',
            'body' => '',
          ];
        }
        $data = $config_data[$key];

        // If an email's description is provided then use it, otherwise just
        // use the email's subject line.
        if ($key != $label) {
          $data['description'] = $label;
        }
        else {
          $data['description'] = $data['subject'];
        }
        $all_templates[$config_name][$key] = $data;
      }
    }

    // Trigger hook_mail_edit_templates_list_alter().
    // Allow modules to adjust the list of available templates, e.g. to remove
    // items from the list for security purposes.
    $module_handler
      ->alter('mail_edit_templates_list', $all_templates);
    return $all_templates;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ControllerBase::$configFactory protected property The configuration factory.
ControllerBase::$currentUser protected property The current user service. 1
ControllerBase::$entityFormBuilder protected property The entity form builder.
ControllerBase::$entityManager protected property The entity manager.
ControllerBase::$entityTypeManager protected property The entity type manager.
ControllerBase::$formBuilder protected property The form builder. 2
ControllerBase::$keyValue protected property The key-value storage. 1
ControllerBase::$languageManager protected property The language manager. 1
ControllerBase::$moduleHandler protected property The module handler. 2
ControllerBase::$stateService protected property The state service.
ControllerBase::cache protected function Returns the requested cache bin.
ControllerBase::config protected function Retrieves a configuration object.
ControllerBase::container private function Returns the service container.
ControllerBase::create public static function Instantiates a new instance of this class. Overrides ContainerInjectionInterface::create 40
ControllerBase::currentUser protected function Returns the current user. 1
ControllerBase::entityFormBuilder protected function Retrieves the entity form builder.
ControllerBase::entityManager Deprecated protected function Retrieves the entity manager service.
ControllerBase::entityTypeManager protected function Retrieves the entity type manager.
ControllerBase::formBuilder protected function Returns the form builder service. 2
ControllerBase::keyValue protected function Returns a key/value storage collection. 1
ControllerBase::languageManager protected function Returns the language manager service. 1
ControllerBase::moduleHandler protected function Returns the module handler. 2
ControllerBase::redirect protected function Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait::redirect
ControllerBase::state protected function Returns the state storage service.
LinkGeneratorTrait::$linkGenerator protected property The link generator. 1
LinkGeneratorTrait::getLinkGenerator Deprecated protected function Returns the link generator.
LinkGeneratorTrait::l Deprecated protected function Renders a link to a route given a route name and its parameters.
LinkGeneratorTrait::setLinkGenerator Deprecated public function Sets the link generator service.
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.
MailListController::getAllTemplates private function Get a list of all templates provided by the site.
MailListController::listAll public function List the emails.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
RedirectDestinationTrait::$redirectDestination protected property The redirect destination service. 1
RedirectDestinationTrait::getDestinationArray protected function Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url.
RedirectDestinationTrait::getRedirectDestination protected function Returns the redirect destination service.
RedirectDestinationTrait::setRedirectDestination public function Sets the redirect destination service.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
UrlGeneratorTrait::$urlGenerator protected property The url generator.
UrlGeneratorTrait::getUrlGenerator Deprecated protected function Returns the URL generator service.
UrlGeneratorTrait::setUrlGenerator Deprecated public function Sets the URL generator service.
UrlGeneratorTrait::url Deprecated protected function Generates a URL or path for a specific route based on the given parameters.