You are here

public function OrphanedFilterHandler::onDeleteWebhook in Acquia Content Hub 8.2

Gathers information about orphaned filters.

Parameters

\Drupal\acquia_contenthub\Event\AcquiaContentHubUnregisterEvent $event: The event being dispatched.

Throws

\Exception

File

src/EventSubscriber/Unregister/OrphanedFilterHandler.php, line 50

Class

OrphanedFilterHandler
Discovers filters which belongs to given webhook.

Namespace

Drupal\acquia_contenthub\EventSubscriber\Unregister

Code

public function onDeleteWebhook(AcquiaContentHubUnregisterEvent $event) : void {
  $client = $this->clientFactory
    ->getClient();
  $webhooks = $client
    ->getWebHooks();
  $deleted_webhook_filters = [];
  $other_webhook_filters = [];
  $client_name = '';
  foreach ($webhooks as $webhook) {
    if ($webhook
      ->getUuid() === $event
      ->getWebhookUuid()) {

      // Filters belong to webhook which will be deleted.
      $deleted_webhook_filters = $webhook
        ->getFilters();

      // Client name which belongs to webhook which will be deleted.
      $client_name = $webhook
        ->getClientName();
      $event
        ->setClientName($client_name);
      continue;
    }

    // Filters list belong to other webhooks.
    $other_webhook_filters = array_merge($webhook
      ->getFilters(), $other_webhook_filters);
  }

  // Filters which belong only to deleted webhook.
  $orphaned_filters = array_diff($deleted_webhook_filters, $other_webhook_filters);
  $this
    ->setFiltersInEvent($orphaned_filters, $client_name, $event);
}