monitoring-8.x-1.x-dev/src/Plugin/monitoring/SensorPlugin/ElysiaCronSensorPlugin.php

src/Plugin/monitoring/SensorPlugin/ElysiaCronSensorPlugin.php
<?php
/**
 * @file
 * Contains \Drupal\monitoring\Plugin\monitoring\SensorPlugin\ElysiaCronSensorPlugin.
 */

namespace Drupal\monitoring\Plugin\monitoring\SensorPlugin;

use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\monitoring\Attribute\SensorPlugin;
use Drupal\monitoring\Result\SensorResultInterface;
use Drupal\monitoring\SensorPlugin\SensorPluginBase;

/**
 * Monitors elysia cron channels for last execution.
 */
#[SensorPlugin(
  id: 'elysia_cron',
  label: new TranslatableMarkup('Elysia Cron'),
  provider: 'elysia_cron',
  addable: FALSE,
)]
class ElysiaCronSensorPlugin extends SensorPluginBase {

  /**
   * {@inheritdoc}
   */
  public function runSensor(SensorResultInterface $result) {
    // The channel name.
    $name = $this->sensorConfig->getSetting('name');
    $query = \Drupal::database()->select('elysia_cron', 'e')->fields('e', array($this->sensorConfig->getSetting('metric')));
    $query->condition('name', $name);

    $value = $query->execute()->fetchField();

    // In case we are querying for last_run, the value is the seconds ago.
    if ($this->sensorConfig->getSetting('metric') == 'last_run') {
      $value = \Drupal::time()->getRequestTime() - $value;
      $result->addStatusMessage('@time ago', array('@time' => \Drupal::service('date.formatter')->formatInterval($value)));
    }
    else {
      // metric last_execution_time
      $result->addStatusMessage('at @time', array('@time' => \Drupal::service('date.formatter')->format($value)));
    }

    $result->setValue($value);
  }
}

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

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