You are here

function _pm_arg_load in Chaos Tool Suite (ctools) 6

Same name and namespace in other branches
  1. 7 page_manager/plugins/tasks/page.inc \_pm_arg_load()

Load a context from an argument for a given page task.

Helper function for pm_arg_load(), which is in page_manager.module because drupal's menu system does not allow loader functions to reside in separate files.

Parameters

$value: The incoming argument value.

$subtask: The subtask id.

$argument: The numeric position of the argument in the path, counting from 0.

Return value

A context item if one is configured, the argument if one is not, or FALSE if restricted or invalid.

3 calls to _pm_arg_load()
pm_arg_load in page_manager/page_manager.module
Page manager arg load function because menu system will not load extra files for these; they must be in a .module.
pm_arg_tail_load in page_manager/page_manager.module
Special arg_load function to use %menu_tail like functionality to get everything after the arg together as a single value.
pm_uid_arg_load in page_manager/page_manager.module
Special menu _load() function for the user:uid argument.

File

page_manager/plugins/tasks/page.inc, line 538
Handle the 'page' task, which creates pages with arbitrary tasks and lets handlers decide how they will be rendered.

Code

function _pm_arg_load($value, $subtask, $argument) {
  $page = page_manager_page_load($subtask);
  if (!$page) {
    return FALSE;
  }
  $path = explode('/', $page->path);
  if (empty($path[$argument])) {
    return FALSE;
  }
  $keyword = substr($path[$argument], 1);
  if (empty($page->arguments[$keyword])) {
    return $value;
  }
  $page->arguments[$keyword]['keyword'] = $keyword;
  ctools_include('context');
  $context = ctools_context_get_context_from_argument($page->arguments[$keyword], $value);

  // convert false equivalents to false.
  return $context ? $context : FALSE;
}