public function SiteSchemaManager::writeCache

Writes the cache of site schema types.

1 call to SiteSchemaManager::writeCache()
SiteSchemaManager::getTypes in drupal/core/modules/rdf/lib/Drupal/rdf/SiteSchema/SiteSchemaManager.php
Get the array of site schema types.

File

drupal/core/modules/rdf/lib/Drupal/rdf/SiteSchema/SiteSchemaManager.php, line 36
Contains SiteSchemaManager.

Class

SiteSchemaManager

Namespace

Drupal\rdf\SiteSchema

Code

public function writeCache() {
  $data = array();

  // Type URIs correspond to bundles. Iterate through the bundles to get the
  // URI and data for them.
  $entity_info = entity_get_info();
  foreach (entity_get_bundles() as $entity_type => $bundles) {

    // Only content entities are supported currently.
    // @todo Consider supporting config entities.
    $entity_type_info = $entity_info[$entity_type];
    $reflection = new ReflectionClass($entity_type_info['class']);
    if ($reflection
      ->implementsInterface('\\Drupal\\Core\\Config\\Entity\\ConfigEntityInterface')) {
      continue;
    }
    foreach ($bundles as $bundle => $bundle_info) {

      // Get a type URI for the bundle in each of the defined schemas.
      foreach ($this->siteSchemas as $schema) {
        $bundle_uri = $schema
          ->bundle($entity_type, $bundle)
          ->getUri();
        $data[$bundle_uri] = array(
          'entity_type' => $entity_type,
          'bundle' => $bundle,
        );
      }
    }
  }

  // These URIs only change when entity info changes, so cache it permanently
  // and only clear it when entity_info is cleared.
  $this->cache
    ->set('rdf:site_schema:types', $data, CacheBackendInterface::CACHE_PERMANENT, array(
    'entity_info' => TRUE,
  ));
}