muser-8.x-1.x-dev/modules/custom/muser_system/muser_system.install

modules/custom/muser_system/muser_system.install
<?php

use Drupal\Core\Url;
use Drupal\node\Entity\Node;

/**
 * Implements hook_requirements().
 */
function muser_system_requirements($phase) {

  $requirements = [];

  switch ($phase) {
    case 'runtime':
      $requirements['muser_system_round'] = _muser_system_get_current_round_info();
      $requirements['muser_system_scheduled_emails'] = _muser_system_get_scheduled_emails_info();
      break;
  }

  return $requirements;

}

function _muser_system_get_current_round_info() {

  if ($round_nid = muser_project_get_current_round()) {
    $round = Node::load($round_nid);
  }

  $last_run = \Drupal::state()->get('muser_system.set_current_round_checked');
  $checked = _muser_system_format_last_checked($last_run);

  $check_url = Url::fromRoute('muser_system.run_set_current_round')->toString();
  if (empty($round)) {
    $manage_url = Url::fromRoute('view.rounds.page_1')->toString();
    $create_url = Url::fromRoute('node.add', ['node_type' => 'round'])->toString();
    $requirements = [
      'title' => t('Muser current round'),
      'value' => t('Not set'),
      'severity' => REQUIREMENT_WARNING,
      'description' => t('There is no current Round set. You may <a href="@manage_url">manage Rounds</a> or <a href="@create_url">create a new Round</a>.<br/>Last checked: %checked. <a href="@check_url">Check current round now</a>', [
        '@manage_url' => $manage_url,
        '@create_url' => $create_url,
        '%checked' => $checked,
        '@check_url' => $check_url,
      ]),
    ];
  }
  else {
    $round_url = Url::fromRoute('entity.node.canonical', ['node' => $round->id()])->toString();
    $requirements = [
      'title' => t('Muser current round'),
      'severity' => REQUIREMENT_OK,
      'value' => t('Set to <a href="@round_url">@title</a>.', [
        '@round_url' => $round_url,
        '@title' => $round->label(),
      ]),
      'description' => t('Last checked: %checked. <a href="@check_url">Check current round now</a>', [
        '%checked' => $checked,
        '@check_url' => $check_url]),
    ];
  }

  return $requirements;

}

function _muser_system_get_scheduled_emails_info() {
  $last_run = \Drupal::state()->get('muser_system.scheduled_emails_checked');
  $checked = _muser_system_format_last_checked($last_run);
  $check_url = Url::fromRoute('muser_system.run_send_emails')->toString();
  if (\Drupal::service('settings')::get('do_not_send_scheduled_emails')) {
    // Sending is being prevented.
    $requirements = [
      'title' => t('Muser scheduled emails'),
      'severity' => REQUIREMENT_WARNING,
      'value' => t('Sending of scheduled emails is being prevented by a settings override. Last checked: %checked.', ['%checked' => $checked]),
      'description' => t('<a href="@check_url">Check emails now</a>', ['@check_url' => $check_url]),
    ];
  }
  else {
    $requirements = [
      'title' => t('Muser scheduled emails'),
      'severity' => REQUIREMENT_OK,
      'value' => t('Last checked: %checked.', ['%checked' => $checked]),
      'description' => t('<a href="@check_url">Check emails now</a>', ['@check_url' => $check_url]),
    ];
  }
  return $requirements;
}

function _muser_system_format_last_checked($timestamp) {
  if ($timestamp) {
    /** @var \Drupal\Core\Datetime\DateFormatter $datetime */
    $datetime = \Drupal::service('date.formatter');
    $checked = t('@diff ago', ['@diff' => $datetime->formatTimeDiffSince($timestamp)]);
  }
  else {
    $checked = t('Never');
  }
  return $checked;
}

/**
 * Update entity definitions.
 */
function muser_system_update_8001() {
  $entity_type_manager = \Drupal::entityTypeManager();
  $entity_type_manager->clearCachedDefinitions();
  $entity_type_ids = [];
  $change_summary = \Drupal::service('entity.definition_update_manager')->getChangeSummary();
  foreach ($change_summary as $entity_type_id => $change_list) {
    $entity_type = $entity_type_manager->getDefinition($entity_type_id);
    \Drupal::entityDefinitionUpdateManager()->installEntityType($entity_type);
    $entity_type_ids[] = $entity_type_id;
  }
  return t("Installed/Updated the entity type(s): @entity_type_ids", [
    '@entity_type_ids' => implode(', ', $entity_type_ids),
  ]);
}

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

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