TaxonomyTermController

  1. drupal
    1. 7 modules/taxonomy/taxonomy.module
    2. 8 core/modules/taxonomy/taxonomy.entity.inc

Controller class for taxonomy terms.

This extends the DrupalDefaultEntityController class. Only alteration is that we match the condition on term name case-independently.

Hierarchy

Properties

NameDescription
DrupalDefaultEntityController::$cacheWhether this entity type should use the static cache.
DrupalDefaultEntityController::$entityCacheStatic cache of entities.
DrupalDefaultEntityController::$entityInfoArray of information about the entity.
DrupalDefaultEntityController::$entityTypeEntity type for this controller instance.
DrupalDefaultEntityController::$hookLoadArgumentsAdditional arguments to pass to hook_TYPE_load().
DrupalDefaultEntityController::$idKeyName of the entity's ID field in the entity database table.
DrupalDefaultEntityController::$revisionKeyName of entity's revision database table field, if it supports revisions.
DrupalDefaultEntityController::$revisionTableThe table that stores revisions, if the entity supports revisions.

Functions & methods

NameDescription
DrupalDefaultEntityController::attachLoadAttaches data to entities upon loading. This will attach fields, if the entity is fieldable. It calls hook_entity_load() for modules which need to add data to all entities. It also calls hook_TYPE_load() on the loaded entities. For…
DrupalDefaultEntityController::cacheSetStores entities in the static entity cache.
DrupalDefaultEntityController::loadImplements DrupalEntityControllerInterface::load(). Overrides DrupalEntityControllerInterface::load
DrupalDefaultEntityController::resetCacheImplements DrupalEntityControllerInterface::resetCache(). Overrides DrupalEntityControllerInterface::resetCache
DrupalDefaultEntityController::__constructConstructor: sets basic variables. Overrides DrupalEntityControllerInterface::__construct
TaxonomyTermController::buildQueryBuilds the query to load the entity. Overrides DrupalDefaultEntityController::buildQuery
TaxonomyTermController::cacheGetGets entities from the static cache. Overrides DrupalDefaultEntityController::cacheGet

File

modules/taxonomy/taxonomy.module, line 1129
Enables the organization of content into categories.

View source
class TaxonomyTermController extends DrupalDefaultEntityController {

  protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE) {
    $query = parent::buildQuery($ids, $conditions, $revision_id);
    $query->addTag('translatable');
    $query->addTag('term_access');
    // When name is passed as a condition use LIKE.
    if (isset($conditions['name'])) {
      $query_conditions = &$query->conditions();
      foreach ($query_conditions as $key => $condition) {
        if ($condition['field'] == 'base.name') {
          $query_conditions[$key]['operator'] = 'LIKE';
          $query_conditions[$key]['value'] = db_like($query_conditions[$key]['value']);
        }
      }
    }
    // Add the machine name field from the {taxonomy_vocabulary} table.
    $query->innerJoin('taxonomy_vocabulary', 'v', 'base.vid = v.vid');
    $query->addField('v', 'machine_name', 'vocabulary_machine_name');
    return $query;
  }

  protected function cacheGet($ids, $conditions = array()) {
    $terms = parent::cacheGet($ids, $conditions);
    // Name matching is case insensitive, note that with some collations
    // LOWER() and drupal_strtolower() may return different results.
    foreach ($terms as $term) {
      $term_values = (array) $term;
      if (isset($conditions['name']) && drupal_strtolower($conditions['name'] != drupal_strtolower($term_values['name']))) {
        unset($terms[$term->tid]);
      }
    }
    return $terms;
  }
}
Login or register to post comments