diff options
-rw-r--r-- | includes/common.inc | 13 | ||||
-rw-r--r-- | includes/file.inc | 2 | ||||
-rw-r--r-- | modules/comment/comment.module | 2 | ||||
-rw-r--r-- | modules/node/node.module | 1 | ||||
-rw-r--r-- | modules/system/system.api.php | 26 | ||||
-rw-r--r-- | modules/taxonomy/taxonomy.module | 4 | ||||
-rw-r--r-- | modules/user/user.module | 2 |
7 files changed, 50 insertions, 0 deletions
diff --git a/includes/common.inc b/includes/common.inc index 20b0648c7..d04f938ea 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -6575,6 +6575,19 @@ function entity_path($entity_type, $entity) { return $info['path callback']($entity); } } +/** + * Invokes entity insert/update hooks. + * + * @param $op + * One of 'insert' or 'update'. + * @param $entity_type + * The entity type; e.g. 'node' or 'user'. + * @param $entity + * The entity object being operated on. + */ +function entity_invoke($op, $entity_type, $entity) { + module_invoke_all('entity_' . $op, $entity, $entity_type); +} /** * Performs one or more XML-RPC request(s). diff --git a/includes/file.inc b/includes/file.inc index ccac9cabc..b03e9d4d9 100644 --- a/includes/file.inc +++ b/includes/file.inc @@ -512,11 +512,13 @@ function file_save(stdClass $file) { drupal_write_record('file', $file); // Inform modules about the newly added file. module_invoke_all('file_insert', $file); + entity_invoke('insert', 'file', $file); } else { drupal_write_record('file', $file, 'fid'); // Inform modules that the file has been updated. module_invoke_all('file_update', $file); + entity_invoke('update', 'file', $file); } return $file; diff --git a/modules/comment/comment.module b/modules/comment/comment.module index 664d2aca8..97d862f73 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -1370,6 +1370,7 @@ function comment_save($comment) { field_attach_update('comment', $comment); // Allow modules to respond to the updating of a comment. module_invoke_all('comment_update', $comment); + entity_invoke('update', 'comment', $comment); // Add an entry to the watchdog log. watchdog('content', 'Comment: updated %subject.', array('%subject' => $comment->subject), WATCHDOG_NOTICE, l(t('view'), 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid))); } @@ -1453,6 +1454,7 @@ function comment_save($comment) { // Tell the other modules a new comment has been submitted. module_invoke_all('comment_insert', $comment); + entity_invoke('insert', 'comment', $comment); // Add an entry to the watchdog log. watchdog('content', 'Comment: added %subject.', array('%subject' => $comment->subject), WATCHDOG_NOTICE, l(t('view'), 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid))); } diff --git a/modules/node/node.module b/modules/node/node.module index c454bd7fc..58a264749 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -1049,6 +1049,7 @@ function node_save($node) { $function('node', $node); module_invoke_all('node_' . $op, $node); + entity_invoke($op, 'node', $node); // Update the node access table for this node. node_access_acquire_grants($node); diff --git a/modules/system/system.api.php b/modules/system/system.api.php index 2563728f0..78cc24e2a 100644 --- a/modules/system/system.api.php +++ b/modules/system/system.api.php @@ -221,6 +221,32 @@ function hook_entity_load($entities, $type) { } /** + * Act on entities when inserted. + * + * Generic insert hook called for all entity types via entity_invoke(). + * + * @param $entity + * The entity object. + * @param $type + * The type of entity being inserted (i.e. node, user, comment). + */ +function hook_entity_insert($entity, $type) { +} + +/** + * Act on entities when updated. + * + * Generic update hook called for all entity types via entity_invoke(). + * + * @param $entity + * The entity object. + * @param $type + * The type of entity being updated (i.e. node, user, comment). + */ +function hook_entity_update($entity, $type) { +} + +/** * Define administrative paths. * * Modules may specify whether or not the paths they define in hook_menu() are diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module index 8e70c5a84..a5dda375b 100644 --- a/modules/taxonomy/taxonomy.module +++ b/modules/taxonomy/taxonomy.module @@ -338,12 +338,14 @@ function taxonomy_vocabulary_save($vocabulary) { if (!empty($vocabulary->vid) && !empty($vocabulary->name)) { $status = drupal_write_record('taxonomy_vocabulary', $vocabulary, 'vid'); module_invoke_all('taxonomy_vocabulary_update', $vocabulary); + entity_invoke('update', 'taxonomy_vocabulary', $vocabulary); } elseif (empty($vocabulary->vid)) { $status = drupal_write_record('taxonomy_vocabulary', $vocabulary); field_attach_create_bundle('taxonomy_term', $vocabulary->machine_name); taxonomy_vocabulary_create_field($vocabulary); module_invoke_all('taxonomy_vocabulary_insert', $vocabulary); + entity_invoke('insert', 'taxonomy_vocabulary', $vocabulary); } cache_clear_all(); @@ -470,11 +472,13 @@ function taxonomy_term_save($term) { $status = drupal_write_record('taxonomy_term_data', $term, 'tid'); field_attach_update('taxonomy_term', $term); module_invoke_all('taxonomy_term_update', $term); + entity_invoke('update', 'taxonomy_term', $term); } else { $status = drupal_write_record('taxonomy_term_data', $term); field_attach_insert('taxonomy_term', $term); module_invoke_all('taxonomy_term_insert', $term); + entity_invoke('insert', 'taxonomy_term', $term); } db_delete('taxonomy_term_hierarchy') diff --git a/modules/user/user.module b/modules/user/user.module index ba935046c..dca04f216 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -483,6 +483,7 @@ function user_save($account, $edit = array(), $category = 'account') { } user_module_invoke('update', $edit, $user, $category); + entity_invoke('update', 'user', $user); } else { // Allow 'uid' to be set by the caller. There is no danger of writing an @@ -515,6 +516,7 @@ function user_save($account, $edit = array(), $category = 'account') { field_attach_insert('user', $object); user_module_invoke('insert', $edit, $user, $category); + entity_invoke('insert', 'user', $user); // Note, we wait with saving the data column to prevent module-handled // fields from being saved there. |