Controller class for nodes.
This extends the DrupalDefaultEntityController class, adding required special handling for node objects.
Hierarchy
Properties
| Name | Description |
|---|---|
| DrupalDefaultEntityController::$cache | Whether this entity type should use the static cache. |
| DrupalDefaultEntityController::$entityCache | Static cache of entities. |
| DrupalDefaultEntityController::$entityInfo | Array of information about the entity. |
| DrupalDefaultEntityController::$entityType | Entity type for this controller instance. |
| DrupalDefaultEntityController::$hookLoadArguments | Additional arguments to pass to hook_TYPE_load(). |
| DrupalDefaultEntityController::$idKey | Name of the entity's ID field in the entity database table. |
| DrupalDefaultEntityController::$revisionKey | Name of entity's revision database table field, if it supports revisions. |
| DrupalDefaultEntityController::$revisionTable | The table that stores revisions, if the entity supports revisions. |
Functions & methods
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;
}
}