protected function TrafficRegistry::getTagIds in URLs queuer 8
Retrieve database IDs for the given set of tags or add missing.
Parameters
string[] $tags: Unassociative list of cache tags.
bool $add_missing: Add tags that are missing to the database.
Return value
string[] Associative array with ID as key and the tag as value.
Throws
\LogicException Thrown when $tags is left empty.
2 calls to TrafficRegistry::getTagIds()
- TrafficRegistry::add in src/
TrafficRegistry.php  - Register a new URL or path with its associated cache tags at the registry.
 - TrafficRegistry::getUrls in src/
TrafficRegistry.php  - Collect URLs and paths associated with the given list of tags.
 
File
- src/
TrafficRegistry.php, line 156  
Class
- TrafficRegistry
 - Provides a database-driven traffic registry with URLs and tags.
 
Namespace
Drupal\purge_queuer_urlCode
protected function getTagIds(array $tags, $add_missing = TRUE) {
  if (empty($tags)) {
    throw new \LogicException('$path cannot be empty!');
  }
  // Define the closure that queries existing tags from the database.
  $load_from_db = function (&$tags, &$ids) {
    $db_results = $this->connection
      ->select('purge_queuer_url_tag', 't')
      ->fields('t', [
      'tagid',
      'tag',
    ])
      ->condition('tag', $tags, 'IN')
      ->execute();
    foreach ($db_results as $tag) {
      $ids[intval($tag->tagid)] = $tag->tag;
      unset($tags[array_search($tag->tag, $tags)]);
    }
  };
  // First attempt to load everything from the database.
  $ids = [];
  $load_from_db($tags, $ids);
  // When given tags don't exist, they're left in $tags.
  // Missing tags are left in $tags, add them to the database if needed.
  if (count($tags) && $add_missing) {
    $q = $this->connection
      ->insert('purge_queuer_url_tag')
      ->fields([
      'tag',
    ]);
    foreach ($tags as $tag) {
      $q
        ->values([
        'tag' => $tag,
      ]);
    }
    $q
      ->execute();
    $load_from_db($tags, $ids);
  }
  return $ids;
}