class EntityCacheControllerHelper

  1. cis7 sites/all/modules/ulmus/entitycache/entitycache.module EntityCacheControllerHelper
  2. cle7 sites/all/modules/ulmus/entitycache/entitycache.module EntityCacheControllerHelper
  3. elmsmedia7 sites/all/modules/ulmus/entitycache/entitycache.module EntityCacheControllerHelper
  4. icor7 sites/all/modules/ulmus/entitycache/entitycache.module EntityCacheControllerHelper
  5. meedjum_blog7 sites/all/modules/ulmus/entitycache/entitycache.module EntityCacheControllerHelper
  6. mooc7 sites/all/modules/ulmus/entitycache/entitycache.module EntityCacheControllerHelper

Entity cache helper.

Note: while this class is not a real entity controller it needs to extend DrupalDefaultEntityController to get access to protected properties.


Expanded class hierarchy of EntityCacheControllerHelper


Contains filters are case sensitive
Namesort descending Modifiers Type Description
DrupalDefaultEntityController::$cache protected property Whether this entity type should use the static cache.
DrupalDefaultEntityController::$entityCache protected property Static cache of entities.
DrupalDefaultEntityController::$entityInfo protected property Array of information about the entity.
DrupalDefaultEntityController::$entityType protected property Entity type for this controller instance.
DrupalDefaultEntityController::$hookLoadArguments protected property Additional arguments to pass to hook_TYPE_load().
DrupalDefaultEntityController::$idKey protected property Name of the entity's ID field in the entity database table.
DrupalDefaultEntityController::$revisionKey protected property Name of entity's revision database table field, if it supports revisions.
DrupalDefaultEntityController::$revisionTable protected property The table that stores revisions, if the entity supports revisions.
DrupalDefaultEntityController::attachLoad protected function Attaches data to entities upon loading.
DrupalDefaultEntityController::buildQuery protected function Builds the query to load the entity.
DrupalDefaultEntityController::cacheGet protected function Gets entities from the static cache.
DrupalDefaultEntityController::cacheSet protected function Stores entities in the static entity cache.
DrupalDefaultEntityController::load public function Implements DrupalEntityControllerInterface::load(). Overrides DrupalEntityControllerInterface::load
DrupalDefaultEntityController::resetCache public function Implements DrupalEntityControllerInterface::resetCache(). Overrides DrupalEntityControllerInterface::resetCache
DrupalDefaultEntityController::__construct public function Constructor: sets basic variables.
EntityCacheControllerHelper::entityCacheAttachLoad public static function Allow modules to implement uncached entity hooks.
EntityCacheControllerHelper::entityCacheGet public static function
EntityCacheControllerHelper::entityCacheLoad public static function
EntityCacheControllerHelper::entityCacheSet public static function
EntityCacheControllerHelper::resetEntityCache public static function


sites/all/modules/ulmus/entitycache/entitycache.module, line 25
Allows for caching of core entities.

View source
class EntityCacheControllerHelper extends DrupalDefaultEntityController {

  public static function resetEntityCache($controller, array $ids = NULL) {
    // Reset the persistent cache.
    if (!empty($ids)) {
      cache_clear_all($ids, 'cache_entity_' . $controller->entityType);
    else {
      // Force all cached entries to be deleted.
      cache_clear_all('*', 'cache_entity_' . $controller->entityType, TRUE);

    // Give modules the chance to act on any entity.
    foreach (module_implements('entitycache_reset') as $module) {
      $function = $module . '_entitycache_reset';
      $function($ids, $controller->entityType);
    // Give modules the chance to act on a specific entity type.
    foreach (module_implements('entitycache_' . $controller->entityType . '_reset') as $module) {
      $function = $module . '_entitycache_' . $controller->entityType . '_reset';

  public static function entityCacheLoad($controller, $ids = array(), $conditions = array()) {
    $entities = array();
    $cached_entities = array();
    $queried_entities = array();

    // Revisions are not statically cached, and require a different query to
    // other conditions, so separate the revision id into its own variable.
    if ($controller->revisionKey && isset($conditions[$controller->revisionKey])) {
      $revision_id = $conditions[$controller->revisionKey];
    else {
      $revision_id = FALSE;

    // Create a new variable which is either a prepared version of the $ids
    // array for later comparison with the entity cache, or FALSE if no $ids
    // were passed. The $ids array is reduced as items are loaded from cache,
    // and we need to know if it's empty for this reason to avoid querying the
    // database when all requested entities are loaded from cache.
    $passed_ids = !empty($ids) ? array_flip($ids) : FALSE;
    // Try to load entities from the static cache, if the entity type supports
    // static caching.
    if ($controller->cache && !$revision_id) {
      $entities += $controller->cacheGet($ids, $conditions);
      // If any entities were loaded, remove them from the ids still to load.
      if ($passed_ids) {
        $ids = array_keys(array_diff_key($passed_ids, $entities));

    if (!empty($controller->entityInfo['entity cache']) && !$revision_id && $ids && !$conditions) {
      $entities += $cached_entities = self::entityCacheGet($controller, $ids, $conditions);
      // If any entities were loaded, remove them from the ids still to load.
      $ids = array_diff($ids, array_keys($cached_entities));

      if ($controller->cache) {
        // Add entities to the cache if we are not loading a revision.
        if (!empty($cached_entities) && !$revision_id) {

    // Load any remaining entities from the database. This is the case if $ids
    // is set to FALSE (so we load all entities), if there are any ids left to
    // load, if loading a revision, or if $conditions was passed without $ids.
    if ($ids === FALSE || $ids || $revision_id || ($conditions && !$passed_ids)) {
      // Build the query.
      $query = $controller->buildQuery($ids, $conditions, $revision_id);
      $queried_entities = $query->execute()->fetchAllAssoc($controller->idKey);

    // Pass all entities loaded from the database through $controller->attachLoad(),
    // which attaches fields (if supported by the entity type) and calls the
    // entity type specific load callback, for example hook_node_load().
    if (!empty($queried_entities)) {
      $controller->attachLoad($queried_entities, $revision_id);
      $entities += $queried_entities;

    if (!empty($controller->entityInfo['entity cache'])) {
      // Add entities to the entity cache if we are not loading a revision.
      if (!empty($queried_entities) && !$revision_id) {
        self::entityCacheSet($controller, $queried_entities);

    if ($controller->cache) {
      // Add entities to the cache if we are not loading a revision.
      if (!empty($queried_entities) && !$revision_id) {

    // Ensure that the returned array is ordered the same as the original
    // $ids array if this was passed in and remove any invalid ids.
    if ($passed_ids) {
      // Remove any invalid ids from the array.
      $passed_ids = array_intersect_key($passed_ids, $entities);
      foreach ($entities as $entity) {
        $passed_ids[$entity->{$controller->idKey}] = $entity;
      $entities = $passed_ids;

    return $entities;

  public static function entityCacheGet($controller, $ids, $conditions = array()) {
    $cached_entities = array();
    if ($ids && !$conditions) {
      $cached = cache_get_multiple($ids, 'cache_entity_' . $controller->entityType);
      if ($cached) {
        foreach ($cached as $item) {
          $cached_entities[$item->cid] = $item->data;
        self::entityCacheAttachLoad($controller, $cached_entities);
    return $cached_entities;

  public static function entityCacheSet($controller, $entities) {
    foreach ($entities as $item) {
      cache_set($item->{$controller->idKey}, $item, 'cache_entity_' . $controller->entityType);

   * Allow modules to implement uncached entity hooks.
   * Perform two additional hook invocations for modules needing to add
   * uncacheable data to objects while serving the request.
   * @see entitycache_entitycache_node_load()
  public static function entityCacheAttachLoad($controller, $entities) {
    // Give modules the chance to act on any entity.
    foreach (module_implements('entitycache_load') as $module) {
      $function = $module . '_entitycache_load';
      $function($entities, $controller->entityType);
    // Give modules the chance to act on a specific entity type.
    foreach (module_implements('entitycache_' . $controller->entityType . '_load') as $module) {
      $function = $module . '_entitycache_' . $controller->entityType . '_load';



Error message

  • Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/elmsln_community/ in drupal_send_headers() (line 1499 of /var/www/html/elmsln_community/
  • Error: Call to undefined function apc_delete() in DrupalAPCCache->clear() (line 289 of /var/www/html/elmsln_community/
The website encountered an unexpected error. Please try again later.