You are here

public function StatusReportDetailsController::getWebhookDetails in Acquia Content Hub 8.2

Returns the "Webhook Details" Section.

Return value

array Renderable array.

Throws

\Exception

1 string reference to 'StatusReportDetailsController::getWebhookDetails'
acquia_contenthub_publisher.routing.yml in modules/acquia_contenthub_publisher/acquia_contenthub_publisher.routing.yml
modules/acquia_contenthub_publisher/acquia_contenthub_publisher.routing.yml

File

modules/acquia_contenthub_publisher/src/Controller/StatusReportDetailsController.php, line 64

Class

StatusReportDetailsController
Controller for status report details.

Namespace

Drupal\acquia_contenthub_publisher\Controller

Code

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;
}