You are here

function enforce_revlog_nodeapi in Enforce revision log message 6

Implementation of hook_nodeapi()

Displays a message when the revision log is empty.

File

./enforce_revlog.module, line 85
Allows enforcing unpriviledged users to enter a log message every time a node revision is created or reverted

Code

function enforce_revlog_nodeapi(&$node, $op, $arg = 0) {
  switch ($op) {
    case 'prepare':

      // We should enable enforce_revlog on this form if:
      if ($node->nid && variable_get('enforce_revlog_node_type_' . $node->type, 0) && !user_access('skip revision log message')) {
        $node->enforce_revlog = TRUE;
      }
      break;
    case 'validate':

      // A log message will only be required if:
      if ($node->nid && $node->revision && $node->op == $node->submit && variable_get('enforce_revlog_node_type_' . $node->type, 0) && !user_access('skip revision log message') && empty($node->log)) {

        // different message if user is a node administrator
        $message = user_access('administer nodes') ? t('Please enter a revision log message or uncheck the revision checkbox.') : t('Please enter a revision log message.');
        form_set_error('log', $message);
      }
      break;
    case 'presave':

      // Trigger only if we're reverting a revision
      // Determined thanks to a custom property in the node object
      if (!empty($node->enforce_revlog_revision_revert)) {

        // Adding the custom log message to the standard one
        $node->log = $node->enforce_revlog_log_message . ' (' . $node->log . ')';

        // Deleting custom object properties, there aren't needed anymore
        unset($node->enforce_revlog_log_message, $node->enforce_revlog_revision_revert);
      }
      break;
  }
}