--- /Users/JuliaKM/Desktop/revision_moderation/revision_moderation.module +++ revision_moderationMOD.module @@ -17,7 +17,7 @@ // Admin menu $items['admin/content/node/revisions'] = array( - 'title' => t('Pending revisions'), + 'title' => 'Pending revisions', 'page callback' => 'revision_moderation_pending_revisions_admin', 'access arguments' => array('administer nodes'), 'type' => MENU_LOCAL_TASK, @@ -25,16 +25,16 @@ // Admin menu $items['admin/settings/revision_moderation'] = array( - 'title' => t('Revision moderation'), + 'title' => 'Revision moderation', 'page callback' => 'drupal_get_form', 'page arguments' => array('revision_moderation_settings'), - 'description' => t('Configure revision publishing options.'), + 'description' => 'Configure revision publishing options.', 'access arguments' => array('administer nodes'), ); // Callback to allow users to edit revisions. $items['node/%node/revisions/%/edit'] = array( - 'title' => t('Edit revision'), + 'title' => 'Edit revision', 'load arguments' => array(3), 'page callback' => 'revision_moderation_edit', 'page arguments' => array(1), @@ -47,7 +47,7 @@ // Callback to allow users to publish revisions directly. $items['node/%node/revisions/%/publish'] = array( - 'title' => t('Publish revision'), + 'title' => 'Publish revision', 'load arguments' => array(3), 'page callback' => 'drupal_get_form', 'page arguments' => array('revision_moderation_publish_confirm', 1), @@ -189,7 +189,7 @@ // Only do this logic for non-admin users on nodes with revision moderation // turned on. - // And not editing a chose revision + // And not editing a chosen revision if ($node->nid && $node->revision_moderation == 1 && arg(2) != 'revisions' && (!user_access('administer nodes') || !variable_get('revision_moderation_exempt', 1))) { switch ($op) { @@ -219,6 +219,10 @@ db_query("UPDATE {node} SET vid = %d, title = '%s', status = %d, moderate = %d WHERE nid = %d", $node->original_node->vid, $node->original_node->title, $node->original_node->status, $node->original_node->moderate, $node->nid); drupal_set_message(t('Your changes have been submitted for moderation.')); + + if (module_exists('rules')): + rules_invoke_event('revision_create', $node); + endif; } break; } @@ -385,3 +389,46 @@ watchdog('content', '@type: published %title revision %revision', array('@type' => t($type), '%title' => $title, '%revision' => $vid), WATCHDOG_NOTICE, l(t('view'), "node/$nid/revisions/$vid/view")); $form_state['redirect'] = 'node/'. $nid; } + +/** + * Implementation of hook_token_values(). + */ +function revision_moderation_token_values($type, $object = NULL, $options = array()) { + $values = array(); + if ($type == 'node') { + $values['vid'] = $object->vid; + $current_vid = db_result(db_query('SELECT vid FROM {node} WHERE nid = %d', $object->nid)); + $current_revision_author = db_result(db_query('SELECT uid FROM {node_revisions} WHERE vid = %d', $object->vid)); + if (module_exists('diff')) { + if ($object->vid > $current_vid) { + $difflink = "node/$object->nid/revisions/view/$current_vid/$object->vid"; + } + else { + $difflink = "node/$object->nid/revisions/view/$object->vid/$current_vid"; + } + $values['revision-diff-link'] = url($difflink, array('absolute' => TRUE)); + } + $values['revision-moderation'] = $object->revision_moderation ? t('on') : t('off'); + $values['revision'] = $object->revision ? t('on') : t('off'); + + //find the author of a revision + $revision_author = user_load(array('uid' => $current_revision_author)); + $values['revision-author-name'] = $revision_author->name; + } + return $values; +} + +/** + * Implementation of hook_token_list(). + */ +function revision_moderation_token_list($type = 'all') { + if ($type == 'node') { + $tokens = array(); + $tokens['node']['revision-author-name'] = t('The name of the revision author'); + $tokens['node']['revision-diff-link'] = t('A link to compare two revisions (requires diff)'); + $tokens['node']['revision-moderation'] = t('Whether revision moderation is on. (@on/@off)', array('@on' => t('on'), '@off' => t('off'))); + $tokens['node']['revision'] = t('Whether a new revision is to be created. (@on/@off)', array('@on' => t('on'), '@off' => t('off'))); + $tokens['node']['vid'] = t('Node revision ID'); + return $tokens; + } +} \ No newline at end of file