NodeController

  1. drupal
    1. 7 modules/node/node.module

Controller class for nodes.

This extends the DrupalDefaultEntityController class, adding required special handling for node objects.

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::cacheGetGets entities from the static cache.
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
NodeController::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… Overrides DrupalDefaultEntityController::attachLoad
NodeController::buildQueryBuilds the query to load the entity. Overrides DrupalDefaultEntityController::buildQuery

File

modules/node/node.module, line 3922
The core that allows content to be submitted to the site. Modules and scripts may programmatically submit nodes using the usual form API pattern.

View source
class NodeController extends DrupalDefaultEntityController {

  protected function attachLoad(&$nodes, $revision_id = FALSE) {
    // Create an array of nodes for each content type and pass this to the
    // object type specific callback.
    $typed_nodes = array();
    foreach ($nodes as $id => $entity) {
      $typed_nodes[$entity->type][$id] = $entity;
    }

    // Call object type specific callbacks on each typed array of nodes.
    foreach ($typed_nodes as $node_type => $nodes_of_type) {
      if (node_hook($node_type, 'load')) {
        $function = node_type_get_base($node_type) . '_load';
        $function($nodes_of_type);
      }
    }
    // Besides the list of nodes, pass one additional argument to
    // hook_node_load(), containing a list of node types that were loaded.
    $argument = array_keys($typed_nodes);
    $this->hookLoadArguments = array($argument);
    parent::attachLoad($nodes, $revision_id);
  }

  protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE) {
    // Ensure that uid is taken from the {node} table,
    // alias timestamp to revision_timestamp and add revision_uid.
    $query = parent::buildQuery($ids, $conditions, $revision_id);
    $fields = &$query->getFields();
    unset($fields['timestamp']);
    $query->addField('revision', 'timestamp', 'revision_timestamp');
    $fields['uid']['table'] = 'base';
    $query->addField('revision', 'uid', 'revision_uid');
    return $query;
  }
}
Login or register to post comments