You are here

function revisioning_revisionapi in Revisioning 6.3

Same name and namespace in other branches
  1. 8 revisioning_api.inc \revisioning_revisionapi()
  2. 6.4 revisioning_api.inc \revisioning_revisionapi()
  3. 7 revisioning_api.inc \revisioning_revisionapi()

Implementation of hook_revisionapi().

Act on various revision events.

@TODO: Add more operations if needed.

Parameters

$op: Operation

$node: Node of current operation (loaded with vid of the operation).

"Pre" operations can be useful to get values before they are lost or changed, for example, to save a backup of revision before it's deleted. Also, for "pre" operations vetoing mechanics could be implemented, so it would be possible to veto an operation via hook_revisionapi(). For example, when the hook is returning FALSE, operation will be vetoed.

File

./revisioning_api.inc, line 82
API functions of Revisioning module

Code

function revisioning_revisionapi($op, $node) {
  switch ($op) {
    case 'pre revert':

      // Invoke corresponding Rules event
      if (module_exists('rules')) {
        rules_invoke_event('revisioning_pre_revert', $node);
      }
      break;
    case 'post revert':

      // Invoke the revisioning trigger passing 'revert' as the operation
      if (module_exists('trigger')) {
        module_invoke_all('revisioning', 'revert', $node, $node->vid);
      }

      // Invoke corresponding Rules event
      if (module_exists('rules')) {
        rules_invoke_event('revisioning_post_revert', $node);
      }
      break;
    case 'pre publish':

      // Invoke corresponding Rules event
      if (module_exists('rules')) {
        rules_invoke_event('revisioning_pre_publish', $node);
      }
      break;
    case 'post publish':

      // Invoke the revisioning trigger passing 'publish' as the operation
      if (module_exists('trigger')) {
        module_invoke_all('revisioning', 'publish', $node);
      }

      // Invoke corresponding Rules event
      if (module_exists('rules')) {
        rules_invoke_event('revisioning_post_publish', $node);
      }
      break;

    //case 'pre unpublish':

    // Not implemented: do we really need it ?
    case 'post unpublish':

      // Invoke the revisioning trigger passing 'unpublish' as the operation
      if (module_exists('trigger')) {
        module_invoke_all('revisioning', 'unpublish', $node);
      }

      // Invoke corresponding Rules event
      if (module_exists('rules')) {
        rules_invoke_event('revisioning_post_unpublish', $node);
      }
      break;
    case 'pre delete':

      // Invoke corresponding Rules event
      if (module_exists('rules')) {
        rules_invoke_event('revisioning_pre_delete', $node);
      }
      break;
    case 'post delete':
      break;
  }
}