summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/comment/comment.module2
-rw-r--r--modules/node/node.module2
-rw-r--r--modules/rdf/rdf.module19
-rw-r--r--modules/system/system.api.php22
-rw-r--r--modules/taxonomy/taxonomy.pages.inc1
-rw-r--r--modules/user/user.module1
6 files changed, 47 insertions, 0 deletions
diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index 1f24e44eb..3bbc3d991 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -879,6 +879,7 @@ function comment_build_content($comment, $node, $view_mode = 'full') {
// Build fields content.
field_attach_prepare_view('comment', array($comment->cid => $comment), $view_mode);
+ entity_prepare_view('comment', array($comment->cid => $comment));
$comment->content += field_attach_view('comment', $comment, $view_mode);
// Prior to Drupal 7, the comment body was a simple text variable, but with
@@ -997,6 +998,7 @@ function comment_links($comment, $node) {
*/
function comment_view_multiple($comments, $node, $view_mode = 'full', $weight = 0) {
field_attach_prepare_view('comment', $comments, $view_mode);
+ entity_prepare_view('comment', $comments);
$build = array(
'#sorted' => TRUE,
diff --git a/modules/node/node.module b/modules/node/node.module
index b56199455..32b107abe 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1209,6 +1209,7 @@ function node_build_content($node, $view_mode = 'full') {
// 'prepare_view' step. An internal flag prevents the operation from running
// twice.
field_attach_prepare_view('node', array($node->nid => $node), $view_mode);
+ entity_prepare_view('node', array($node->nid => $node));
$node->content += field_attach_view('node', $node, $view_mode);
// Always display a read more link on teasers because we have no way
@@ -2254,6 +2255,7 @@ function node_feed($nids = FALSE, $channel = array()) {
*/
function node_view_multiple($nodes, $view_mode = 'teaser', $weight = 0) {
field_attach_prepare_view('node', $nodes, $view_mode);
+ entity_prepare_view('node', $nodes);
$build = array();
foreach ($nodes as $node) {
$build['nodes'][$node->nid] = node_view($node, $view_mode);
diff --git a/modules/rdf/rdf.module b/modules/rdf/rdf.module
index c25ae9323..31f3e2821 100644
--- a/modules/rdf/rdf.module
+++ b/modules/rdf/rdf.module
@@ -595,6 +595,25 @@ function rdf_field_attach_view_alter(&$output, $context) {
}
/**
+ * Implements hook_entity_prepare_view().
+ */
+function rdf_entity_prepare_view($entities, $entity_type) {
+ $uids = array();
+ // In the case of both nodes and comments, the full $account object for the
+ // author is needed in rdf_preprocess_username(), however this is not
+ // available from node_load() or comment_load(). If the users are loaded
+ // for the first time in rdf_preprocess_username() this will issue an
+ // individual user_load() for each account, so pre-load the users needed
+ // here where we can take advantage of user_load_multiple().
+ if ($entity_type == 'node' || $entity_type == 'comment') {
+ foreach ($entities as $entity) {
+ $uids[$entity->uid] = $entity->uid;
+ }
+ user_load_multiple($uids);
+ }
+}
+
+/**
* Wraps a template variable in an HTML element with the desired attributes.
*
* This is called by rdf_process() shortly before the theme system renders
diff --git a/modules/system/system.api.php b/modules/system/system.api.php
index f78556c4c..f8f20b8cc 100644
--- a/modules/system/system.api.php
+++ b/modules/system/system.api.php
@@ -264,6 +264,28 @@ function hook_admin_paths_alter(&$paths) {
}
/**
+ * Act on entities as they are being prepared for view.
+ *
+ * Allows you to operate on multiple entities as they are being prepared for
+ * view. Only use this if attaching the data during the entity_load() phase
+ * is not appropriate, for example when attaching other 'entity' style objects.
+ *
+ * @param $entities
+ * The entities keyed by entity ID.
+ * @param $type
+ * The type of entities being loaded (i.e. node, user, comment).
+ */
+function hook_entity_prepare_view($entities, $type) {
+ // Load a specific node into the user object for later theming.
+ if ($type == 'user') {
+ $nodes = mymodule_get_user_nodes(array_keys($entities));
+ foreach ($entities as $uid => $entity) {
+ $entity->user_node = $nodes[$uid];
+ }
+ }
+}
+
+/**
* Perform periodic actions.
*
* This hook will only be called if cron.php is run (e.g. by crontab).
diff --git a/modules/taxonomy/taxonomy.pages.inc b/modules/taxonomy/taxonomy.pages.inc
index e4987e52b..712e8bc75 100644
--- a/modules/taxonomy/taxonomy.pages.inc
+++ b/modules/taxonomy/taxonomy.pages.inc
@@ -31,6 +31,7 @@ function taxonomy_term_page($term) {
drupal_add_css(drupal_get_path('module', 'taxonomy') . '/taxonomy.css');
field_attach_prepare_view('taxonomy_term', array($term->tid => $term), 'full');
+ entity_prepare_view('taxonomy_term', array($term->tid => $term));
$build = array();
$build += field_attach_view('taxonomy_term', $term);
$build['term_description'] = array(
diff --git a/modules/user/user.module b/modules/user/user.module
index 8db32ccd6..313ff34a4 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -2158,6 +2158,7 @@ function user_build_content($account, $view_mode = 'full') {
// Build fields content.
field_attach_prepare_view('user', array($account->uid => $account), $view_mode);
+ entity_prepare_view('user', array($account->uid => $account));
$account->content += field_attach_view('user', $account, $view_mode);
// Populate $account->content with a render() array.