menu_token_panel_context.inc in Menu Token 7
File
plugins/menu_token_panel_context.inc
View source
<?php
class menu_token_panel_context extends menu_token_handler {
function form_options($options) {
}
function form_submit($form, &$form_state) {
}
function form_validate($form, &$form_state) {
}
function form_alter(&$form, &$form_state) {
}
function object_load($options) {
$original_map = arg();
$parts = array_slice($original_map, 0, MENU_MAX_PARTS);
$ancestors = menu_get_ancestors($parts);
$router_item = db_query_range('SELECT * FROM {menu_router} WHERE path IN (:ancestors) ORDER BY fit DESC', 0, 1, array(
':ancestors' => $ancestors,
))
->fetchAssoc();
if ($router_item['page_callback'] == 'page_manager_page_execute') {
$entity_type = $options['_type'];
$router_item = menu_get_item();
$subtask_id = $router_item['page_arguments'][0];
$page = page_manager_page_load($subtask_id);
$task = page_manager_get_task($page->task);
$subtask = page_manager_get_task_subtask($task, $subtask_id);
$contexts = array();
$args = array();
foreach ($router_item['page_arguments'] as $count => $arg) {
if (is_object($arg) && get_class($arg) == 'ctools_context') {
$contexts[$arg->id] = $arg;
$args[] = $arg->original_argument;
}
else {
if ($count) {
$args[] = $arg;
}
}
}
$count = 0;
$names = page_manager_page_get_named_arguments($page->path);
$bits = explode('/', $page->path);
if ($page->arguments) {
foreach ($page->arguments as $name => $argument) {
if ($bits[$names[$name]][0] == '!') {
ctools_include('context');
$argument['keyword'] = $name;
if (isset($args[$count])) {
if (empty($argument['settings']['use_tail'])) {
$value = $args[$count];
}
else {
$value = implode('/', array_slice($args, $count));
}
$context = ctools_context_get_context_from_argument($argument, $value);
}
else {
$context = ctools_context_get_context_from_argument($argument, NULL, TRUE);
}
if ($context) {
$contexts[$context->id] = $context;
}
}
$count++;
}
}
foreach ($contexts as $key => $context) {
list($key, $thing, $entity) = $context->type;
if ($entity == $entity_type) {
return $context->data;
}
}
}
}
}