function restful_menu in RESTful 7
Same name and namespace in other branches
- 7.2 restful.module \restful_menu()
Implements hook_menu().
File
- ./
restful.module, line 137
Code
function restful_menu() {
$base_path = variable_get('restful_hook_menu_base_path', 'api');
$items = array();
foreach (restful_get_restful_plugins() as $plugin) {
if (!$plugin['hook_menu']) {
// Plugin explicitly declared no hook menu should be created automatically
// for it.
continue;
}
$item = array(
'title' => $plugin['name'],
'access callback' => 'restful_menu_access_callback',
'access arguments' => array(
$plugin['resource'],
),
'page callback' => 'restful_menu_process_callback',
'page arguments' => array(
$plugin['resource'],
),
'delivery callback' => 'restful_formatted_delivery',
'type' => MENU_CALLBACK,
);
// If there is no specific menu item allow the different version variations.
if ($plugin['hook_menu'] && empty($plugin['menu_item'])) {
// Add the version string to the arguments.
$item['access arguments'][] = 1;
$item['page arguments'][] = 1;
// Ex: api/v1.2/articles
$items[$base_path . '/v' . $plugin['major_version'] . '.' . $plugin['minor_version'] . '/' . $plugin['resource']] = $item;
// Ex: api/v1/articles will use the latest minor version.
$items[$base_path . '/v' . $plugin['major_version'] . '/' . $plugin['resource']] = $item;
// Ex: api/articles will use the header or the latest version.
// Do not add the version string to the arguments.
$item['access arguments'] = $item['page arguments'] = array(
1,
);
$items[$base_path . '/' . $plugin['resource']] = $item;
}
else {
$items[$plugin['menu_item']] = $item;
}
}
// Make sure the CRSF token endpoint is not HAL.
if (!empty($items[$base_path . '/session/token'])) {
$items[$base_path . '/session/token']['delivery callback'] = 'restful_unprepared_delivery';
}
// Make sure the Login endpoint has the correct access callback.
if (!empty($items[$base_path . '/login'])) {
$items[$base_path . '/login']['access callback'] = 'user_is_anonymous';
}
// Add administration page.
$items['admin/config/services/restful'] = array(
'title' => 'RESTful',
'description' => 'Administer the RESTful module.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'restful_admin_settings',
),
'access arguments' => array(
'administer restful',
),
'file' => 'restful.admin.inc',
);
$items['admin/config/services/restful/restful'] = $items['admin/config/services/restful'];
$items['admin/config/services/restful/restful']['type'] = MENU_DEFAULT_LOCAL_TASK;
return $items;
}