class StatusReportDetailsController in Acquia Content Hub 8.2
Controller for status report details.
@package Drupal\acquia_contenthub_publisher\Controller
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\acquia_contenthub_publisher\Controller\StatusReportDetailsController
Expanded class hierarchy of StatusReportDetailsController
1 file declares its use of StatusReportDetailsController
- ContentHubStatusDetailsTest.php in tests/
src/ Kernel/ ContentHubStatusDetailsTest.php
File
- modules/
acquia_contenthub_publisher/ src/ Controller/ StatusReportDetailsController.php, line 15
Namespace
Drupal\acquia_contenthub_publisher\ControllerView source
class StatusReportDetailsController extends ControllerBase {
/**
* The Acquia ContentHub Client object.
*
* @var \Acquia\ContentHubClient\ContentHubClient
*/
protected $client;
/**
* Graph colors mapped to statuses.
*
* @var array
*/
protected $graphColors = [
'queued' => '#555555',
'exported' => '#29A8E1',
'confirmed' => '#7CD7F2',
'imported' => '#33D1FF',
'pending' => '#56B7FF',
];
/**
* StatusReportDetailsController constructor.
*
* @param \Drupal\acquia_contenthub\Client\ClientFactory $client_factory
* The client factory.
*/
public function __construct(ClientFactory $client_factory) {
$this->client = $client_factory
->getClient();
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('acquia_contenthub.client.factory'));
}
/**
* Returns the "Webhook Details" Section.
*
* @return array
* Renderable array.
*
* @throws \Exception
*/
public function getWebhookDetails(string $uuid) {
$client_entity = $this->client
->getEntity($uuid);
if (!$client_entity instanceof ClientCDFObject) {
return [];
}
if ($client_entity
->getType() != 'client') {
return [];
}
$webhook = $client_entity
->getMetadata()['settings']['webhook'];
$webhook_uuid = $webhook['uuid'];
$webhook_url = $webhook['settings_url'];
$content['single_details_page'] = [
'#type' => 'html_tag',
'#tag' => 'div',
'#attributes' => [
'id' => 'single_details_page',
],
'#value' => '',
];
$content['single_details_page']['details'] = [
'#type' => 'html_tag',
'#tag' => 'div',
'#attributes' => [
'id' => 'single_details',
],
];
$content['single_details_page']['details']['webhook_subheader'] = [
'#type' => 'html_tag',
'#tag' => 'h2',
'#value' => $this
->t('Webhook Details'),
];
$content['single_details_page']['details']['webhook_url'] = [
'#type' => 'html_tag',
'#tag' => 'p',
'#value' => $this
->t('<label>Domain</label>@url', [
'@url' => $webhook_url,
]),
];
$content['single_details_page']['details']['webhook_uuid'] = [
'#type' => 'html_tag',
'#tag' => 'p',
'#value' => $this
->t('<label>UUID</label>@uuid', [
'@uuid' => $webhook_uuid,
]),
];
// If this client has no interests, stop processing.
try {
$interests = $this->client
->getInterestsByWebhook($webhook_uuid);
} catch (\Exception $e) {
$interests = [];
}
if (empty($interests)) {
$content['single_details_page']['details']['no_details'] = [
'#type' => 'html_tag',
'#tag' => 'p',
'#value' => $this
->t('<label>Status</label>No syndication data found'),
];
return $content;
}
foreach ($client_entity
->getMetadata()['metrics'] as $type => $metrics) {
$data_type = 'data';
$data = $metrics[$data_type] ?? [];
if (empty($data) || !is_array($data)) {
continue;
}
$total = array_sum($data);
$status = implode(', ', array_map(function ($v, $k) {
return sprintf("%s %s", $v, $k);
}, $data, array_keys($data)));
$content['single_details_page']['details'][$type . '_details'] = [
'#type' => 'html_tag',
'#tag' => 'p',
'#value' => $this
->t('<label>@type Status</label>@status out of @total entities', [
'@type' => ucfirst($type),
'@status' => $status,
'@total' => $total,
]),
];
$content['single_details_page']['details'][$type . '_updated'] = [
'#type' => 'html_tag',
'#tag' => 'p',
'#value' => $this
->t('<label>Last Updated</label>@date', [
'@date' => $this
->getTime($client_entity
->getMetadata()['metrics'][$type]['last_updated']),
'@total' => $total,
]),
];
$content['single_details_page'][$type . '_graph'] = [
'#type' => 'html_tag',
'#tag' => 'div',
'#attributes' => [
'id' => $type . '_chart',
],
'#value' => '',
];
foreach ($data as $k => $v) {
$content['#attached']['drupalSettings']['acquia_contenthub_' . $type . '_status'][$k] = $v;
$content['#attached']['drupalSettings']['acquia_contenthub_' . $type . '_color'][$k] = $this->graphColors[$k];
}
if ($total > 0) {
$content['#attached']['drupalSettings']['acquia_contenthub_' . $type . '_status']['total'] = $total;
}
}
$content['#attached']['library'][] = 'acquia_contenthub_publisher/acquia_contenthub_publisher_details';
$content['#attached']['library'][] = 'acquia_contenthub_publisher/google_charts';
return $content;
}
/**
* Time formatting.
*
* @param int $time
* Timestamp of last update.
*
* @return string
* Time as formatted.
*
* @throws \Exception;
*/
protected function getTime(int $time) {
if ($time === 0) {
return 'Not Found';
}
$formatted_time = \Drupal::service('date.formatter')
->format($time, 'long');
return $formatted_time;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StatusReportDetailsController:: |
protected | property | The Acquia ContentHub Client object. | |
StatusReportDetailsController:: |
protected | property | Graph colors mapped to statuses. | |
StatusReportDetailsController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
StatusReportDetailsController:: |
protected | function | Time formatting. | |
StatusReportDetailsController:: |
public | function | Returns the "Webhook Details" Section. | |
StatusReportDetailsController:: |
public | function | StatusReportDetailsController constructor. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |