You are here

function eck_revision_menu in ECK Revision 7

Implements hook_menu().

File

./eck_revision.module, line 69
ECK Revision module.

Code

function eck_revision_menu() {
  module_load_include('inc', 'eck', 'eck.entity_type');
  module_load_include('inc', 'eck', 'eck.bundle');
  $items = array();
  foreach (EntityType::loadAll() as $entity_type) {
    $entity_type_info = entity_get_info($entity_type->name);

    // Verify if revision are enabled.
    if (isset($entity_type_info['revision table']) && !empty($entity_type_info['revision table'])) {
      foreach (Bundle::loadByEntityType($entity_type) as $bundle) {
        $crud_info = get_bundle_crud_info($entity_type->name, $bundle->name);
        if (isset($crud_info['view']) && !empty($crud_info['view'])) {
          $info = $crud_info['view'];
          $arg_ref = isset($info['entity_id']) ? $info['entity_id'] : 2;
          $items[$info['path'] . '/revisions'] = array(
            'title' => 'Revisions',
            'page callback' => 'eck_revision_revision_overview',
            'page arguments' => array(
              $entity_type->name,
              $arg_ref,
            ),
            'access callback' => '_eck_revision_revision_access',
            'access arguments' => array(
              'view',
              $entity_type->name,
              $bundle->name,
            ),
            'weight' => 2,
            'type' => MENU_LOCAL_TASK,
            'file' => 'eck_revision.pages.inc',
          );
          $items[$info['path'] . '/revisions/%/view'] = array(
            'title' => 'Revisions',
            'page callback' => 'eck_revision_revision_view',
            'page arguments' => array(
              $entity_type->name,
              $arg_ref + 2,
            ),
            'access callback' => '_eck_revision_revision_access',
            'access arguments' => array(
              'view',
              $entity_type->name,
              $bundle->name,
            ),
          );
          $items[$info['path'] . '/revisions/%/revert'] = array(
            'title' => 'Revert to earlier revision',
            'page callback' => 'drupal_get_form',
            'page arguments' => array(
              'eck_revision_revision_revert_confirm',
              $entity_type->name,
              $arg_ref,
              $arg_ref + 2,
            ),
            'access callback' => '_eck_revision_revision_access',
            'access arguments' => array(
              'update',
              $entity_type->name,
              $bundle->name,
            ),
            'file' => 'eck_revision.pages.inc',
          );
          $items[$info['path'] . '/revisions/%/delete'] = array(
            'title' => 'Delete earlier revision',
            'page callback' => 'drupal_get_form',
            'page arguments' => array(
              'eck_revision_revision_delete_confirm',
              $entity_type->name,
              $arg_ref,
              $arg_ref + 2,
            ),
            'access callback' => '_eck_revision_revision_access',
            'access arguments' => array(
              'delete',
              $entity_type->name,
              $bundle->name,
            ),
            'file' => 'eck_revision.pages.inc',
          );
        }
      }
    }
  }
  return $items;
}