class SubscriberCommon in Acquia Content Hub 8
Common methods for subscriber audit.
@package Drupal\acquia_contenthub_audit
Hierarchy
- class \Drupal\acquia_contenthub_subscriber\SubscriberCommon
 
Expanded class hierarchy of SubscriberCommon
1 file declares its use of SubscriberCommon
- SubscriberAudit.php in acquia_contenthub_audit/
src/ SubscriberAudit.php  
1 string reference to 'SubscriberCommon'
- acquia_contenthub_subscriber.services.yml in acquia_contenthub_subscriber/
acquia_contenthub_subscriber.services.yml  - acquia_contenthub_subscriber/acquia_contenthub_subscriber.services.yml
 
1 service uses SubscriberCommon
File
- acquia_contenthub_subscriber/
src/ SubscriberCommon.php, line 15  
Namespace
Drupal\acquia_contenthub_subscriberView source
class SubscriberCommon {
  /**
   * The list of entities returned by the executed filters.
   *
   * @var array
   */
  protected $entities = [];
  /**
   * A map of entity uuids to the filter they matched.
   *
   * @var array
   */
  protected $filterMap = [];
  /**
   * The Query Generator.
   *
   * @var \Drupal\acquia_contenthub_subscriber\ESQueryGeneratorInterface
   */
  protected $generator;
  /**
   * Entity Storage for Content Hub Filters.
   *
   * @var \Drupal\Core\Entity\EntityStorageInterface
   */
  protected $contentHubFilterStorage;
  /**
   * The Content Hub Search Service.
   *
   * @var \Drupal\acquia_contenthub\ContentHubSearch
   */
  protected $search;
  /**
   * Public Constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The Entity Type Manager Service.
   * @param \Drupal\acquia_contenthub\ContentHubSearch $search
   *   The Acquia ContentHub Search Service.
   * @param \Drupal\acquia_contenthub_subscriber\ESQueryGeneratorInterface $generator
   *   The Query Generator Service.
   */
  public function __construct(EntityTypeManagerInterface $entity_type_manager, ContentHubSearch $search, ESQueryGeneratorInterface $generator) {
    $this->contentHubFilterStorage = $entity_type_manager
      ->getStorage('contenthub_filter');
    $this->search = $search;
    $this->generator = $generator;
  }
  /**
   * Executes all filters.
   */
  public function executeAllFilters($include_none = FALSE) {
    $contenthub_filters = $this->contentHubFilterStorage
      ->loadMultiple();
    foreach ($contenthub_filters as $filter) {
      if ($filter
        ->getPublishStatus() === FALSE && !$include_none) {
        continue;
      }
      $entities = $this
        ->executeFilter($filter, 0, 1);
      // Do something with the entities.
      $total = $entities['total'];
      // Dividing into batches of 1000 entities.
      $iterations = ceil($total / 1000);
      for ($i = 0; $i < $iterations; $i++) {
        $start = $i * 1000;
        $this->entities += $this
          ->executeFilter($filter, $start);
      }
    }
    unset($this->entities['total']);
    return $this->entities;
  }
  /**
   * Execute a given filter and return the retrieved entities.
   *
   * @param \Drupal\acquia_contenthub_subscriber\ContentHubFilterInterface $contenthub_filter
   *   The filter to execute.
   * @param int $start
   *   The start for query paging.
   * @param int $size
   *   The limit for query paging.
   *
   * @return \Acquia\ContentHubClient\Entity[]
   *   An array of entities.
   */
  public function executeFilter(ContentHubFilterInterface $contenthub_filter, $start = 0, $size = 1000) {
    $options = [
      'start' => $start,
      'count' => $size,
    ];
    // Obtain the Filter conditions.
    $conditions = $contenthub_filter
      ->getConditions();
    if (!empty($conditions)) {
      $items = $this
        ->getElasticSearchQueryResponse($contenthub_filter, NULL, NULL, $options);
      $entities = [
        'total' => $items['total'] ?? 0,
      ];
      if (!isset($items['hits'])) {
        return $entities;
      }
      foreach ($items['hits'] as $item) {
        if (!in_array($item['_source']['data']['type'], ContentHubEntityDependency::getPostDependencyEntityTypes())) {
          $entities[$item['_source']['data']['uuid']] = new ContentHubEntity($item['_source']['data']);
        }
      }
      $entities_uuids = $entities;
      foreach (array_keys($entities_uuids) as $uuid) {
        $this->filterMap[$uuid] = $contenthub_filter
          ->id();
      }
      return $entities;
    }
    // If we reach here, return empty array.
    return [];
  }
  /**
   * Obtains the filter entities.
   */
  public function getFilterEntities() {
    return $this->entities;
  }
  /**
   * Resets the storage for filter entities.
   */
  public function resetFilterEntities() {
    $this->entities = [];
  }
  /**
   * Gets the filter map.
   */
  public function getFilterMap() {
    return $this->filterMap;
  }
  /**
   * Obtains an Elasticsearch query response.
   */
  protected function getElasticSearchQueryResponse(ContentHubFilterInterface $filter, $asset_uuid, $asset_type, array $options = []) {
    return $this->search
      ->executeSearchQuery($this->generator
      ->getElasticSearchQuery($filter, $asset_uuid, $asset_type, $options));
  }
}Members
| 
            Name | 
                  Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| 
            SubscriberCommon:: | 
                  protected | property | Entity Storage for Content Hub Filters. | |
| 
            SubscriberCommon:: | 
                  protected | property | The list of entities returned by the executed filters. | |
| 
            SubscriberCommon:: | 
                  protected | property | A map of entity uuids to the filter they matched. | |
| 
            SubscriberCommon:: | 
                  protected | property | The Query Generator. | |
| 
            SubscriberCommon:: | 
                  protected | property | The Content Hub Search Service. | |
| 
            SubscriberCommon:: | 
                  public | function | Executes all filters. | |
| 
            SubscriberCommon:: | 
                  public | function | Execute a given filter and return the retrieved entities. | |
| 
            SubscriberCommon:: | 
                  protected | function | Obtains an Elasticsearch query response. | |
| 
            SubscriberCommon:: | 
                  public | function | Obtains the filter entities. | |
| 
            SubscriberCommon:: | 
                  public | function | Gets the filter map. | |
| 
            SubscriberCommon:: | 
                  public | function | Resets the storage for filter entities. | |
| 
            SubscriberCommon:: | 
                  public | function | Public Constructor. |