aggregator_menu

  1. drupal
    1. 4.7 aggregator.module
    2. 5
    3. 6 aggregator.module
    4. 7 aggregator.module
Versions
4.7 – 5 aggregator_menu($may_cache)
6 – 7 aggregator_menu()

Implementation of hook_menu().

Code

modules/aggregator/aggregator.module, line 31

<?php
function aggregator_menu($may_cache) {
  $items = array();
  $edit = user_access('administer news feeds');
  $view = user_access('access news feeds');

  if ($may_cache) {
    $items[] = array(
      'path' => 'admin/content/aggregator', 
      'title' => t('News aggregator'), 
      'description' => t("Configure which content your site aggregates from other sites, how often it polls them, and how they're categorized."), 
      'callback' => 'aggregator_admin_overview', 
      'access' => $edit,
    );
    $items[] = array(
      'path' => 'admin/content/aggregator/add/feed', 
      'title' => t('Add feed'), 
      'callback' => 'drupal_get_form', 
      'callback arguments' => array('aggregator_form_feed'), 
      'access' => $edit, 
      'type' => MENU_LOCAL_TASK,
    );
    $items[] = array(
      'path' => 'admin/content/aggregator/add/category', 
      'title' => t('Add category'), 
      'callback' => 'drupal_get_form', 
      'callback arguments' => array('aggregator_form_category'), 
      'access' => $edit, 
      'type' => MENU_LOCAL_TASK,
    );
    $items[] = array(
      'path' => 'admin/content/aggregator/remove', 
      'title' => t('Remove items'), 
      'callback' => 'drupal_get_form', 
      'callback arguments' => array('aggregator_admin_remove_feed'), 
      'access' => $edit, 
      'type' => MENU_CALLBACK,
    );
    $items[] = array(
      'path' => 'admin/content/aggregator/update', 
      'title' => t('Update items'), 
      'callback' => 'aggregator_admin_refresh_feed', 
      'access' => $edit, 
      'type' => MENU_CALLBACK,
    );
    $items[] = array(
      'path' => 'admin/content/aggregator/list', 
      'title' => t('List'), 
      'type' => MENU_DEFAULT_LOCAL_TASK, 
      'weight' => -10,
    );
    $items[] = array(
      'path' => 'admin/content/aggregator/settings', 
      'title' => t('Settings'), 
      'callback' => 'drupal_get_form', 
      'callback arguments' => array('aggregator_admin_settings'), 
      'type' => MENU_LOCAL_TASK, 
      'weight' => 10, 
      'access' => $edit,
    );

    $items[] = array(
      'path' => 'aggregator', 
      'title' => t('News aggregator'), 
      'callback' => 'aggregator_page_last', 
      'access' => $view, 
      'weight' => 5,
    );
    $items[] = array(
      'path' => 'aggregator/sources', 
      'title' => t('Sources'), 
      'callback' => 'aggregator_page_sources', 
      'access' => $view,
    );
    $items[] = array(
      'path' => 'aggregator/categories', 
      'title' => t('Categories'), 
      'callback' => 'aggregator_page_categories', 
      'access' => $view, 
      'type' => MENU_ITEM_GROUPING,
    );
    $items[] = array(
      'path' => 'aggregator/rss', 
      'title' => t('RSS feed'), 
      'callback' => 'aggregator_page_rss', 
      'access' => $view, 
      'type' => MENU_CALLBACK,
    );
    $items[] = array(
      'path' => 'aggregator/opml', 
      'title' => t('OPML feed'), 
      'callback' => 'aggregator_page_opml', 
      'access' => $view, 
      'type' => MENU_CALLBACK,
    );

    $result = db_query('SELECT title, cid FROM {aggregator_category} ORDER BY title');
    while ($category = db_fetch_array($result)) {
      $items[] = array(
        'path' => 'aggregator/categories/' . $category['cid'], 
        'title' => $category['title'], 
        'callback' => 'aggregator_page_category', 
        'access' => $view,
      );
    }
  }
  else {
    // Add the CSS for this module
    // We put this in !$may_cache so it's only added once per request
    drupal_add_css(drupal_get_path('module', 'aggregator') . '/aggregator.css');

    if (arg(0) == 'aggregator' && is_numeric(arg(2))) {
      if (arg(1) == 'sources') {
        $feed = aggregator_get_feed(arg(2));
        if ($feed) {
          $items[] = array(
            'path' => 'aggregator/sources/' . $feed['fid'], 
            'title' => $feed['title'], 
            'callback' => 'aggregator_page_source', 
            'access' => $view, 
            'type' => MENU_CALLBACK,
          );
          $items[] = array(
            'path' => 'aggregator/sources/' . $feed['fid'] . '/view', 
            'title' => t('View'), 
            'type' => MENU_DEFAULT_LOCAL_TASK, 
            'weight' => -10,
          );
          $items[] = array(
            'path' => 'aggregator/sources/' . $feed['fid'] . '/categorize', 
            'title' => t('Categorize'), 
            'callback' => 'drupal_get_form', 
            'callback arguments' => array('aggregator_page_source'), 
            'access' => $edit, 
            'type' => MENU_LOCAL_TASK,
          );
          $items[] = array(
            'path' => 'aggregator/sources/' . $feed['fid'] . '/configure', 
            'title' => t('Configure'), 
            'callback' => 'drupal_get_form', 
            'callback arguments' => array('aggregator_form_feed', $feed), 
            'access' => $edit, 
            'type' => MENU_LOCAL_TASK, 
            'weight' => 1,
          );
        }
      }
      else if (arg(1) == 'categories') {
        $category = aggregator_get_category(arg(2));
        if ($category) {
          $items[] = array(
            'path' => 'aggregator/categories/' . $category['cid'] . '/view', 
            'title' => t('View'), 
            'type' => MENU_DEFAULT_LOCAL_TASK, 
            'weight' => -10,
          );
          $items[] = array(
            'path' => 'aggregator/categories/' . $category['cid'] . '/categorize', 
            'title' => t('Categorize'), 
            'callback' => 'drupal_get_form', 
            'callback arguments' => array('aggregator_page_category'), 
            'access' => $edit, 
            'type' => MENU_LOCAL_TASK,
          );
          $items[] = array(
            'path' => 'aggregator/categories/' . $category['cid'] . '/configure', 
            'title' => t('Configure'), 
            'callback' => 'drupal_get_form', 
            'callback arguments' => array('aggregator_form_category', $category), 
            'access' => $edit, 
            'type' => MENU_LOCAL_TASK, 
            'weight' => 1,
          );
        }
      }
    }
    else if (arg(2) == 'aggregator' && is_numeric(arg(5))) {
      if (arg(4) == 'feed') {
        $feed = aggregator_get_feed(arg(5));
        if ($feed) {
          $items[] = array(
            'path' => 'admin/content/aggregator/edit/feed/' . $feed['fid'], 
            'title' => t('Edit feed'), 
            'callback' => 'drupal_get_form', 
            'callback arguments' => array('aggregator_form_feed', $feed), 
            'access' => $edit, 
            'type' => MENU_CALLBACK,
          );
        }
      }
      else {
        $category = aggregator_get_category(arg(5));
        if ($category) {
          $items[] = array(
            'path' => 'admin/content/aggregator/edit/category/' . $category['cid'], 
            'title' => t('Edit category'), 
            'callback' => 'drupal_get_form', 
            'callback arguments' => array('aggregator_form_category', $category), 
            'access' => $edit, 
            'type' => MENU_CALLBACK,
          );
        }
      }
    }
  }

  return $items;
}
?>