function page_manager_load_task_handlers
Load all task handlers for a given task/subtask.
4 calls to page_manager_load_task_handlers()
- page_manager_load_sorted_handlers in page_manager/
page_manager.module - Load all task handlers for a given task and subtask and sort them.
- page_manager_page_delete in page_manager/
plugins/ tasks/ page.inc - Remove a page subtask.
- page_manager_page_export in page_manager/
plugins/ tasks/ page.inc - Export a page subtask.
- page_manager_page_save in page_manager/
plugins/ tasks/ page.inc - Write a page subtask to the database.
File
-
page_manager/
page_manager.module, line 525
Code
function page_manager_load_task_handlers($task, $subtask_id = NULL, $default_handlers = NULL) {
ctools_include('export');
$conditions = array(
'task' => $task['name'],
);
if (isset($subtask_id)) {
$conditions['subtask'] = $subtask_id;
}
$handlers = ctools_export_load_object('page_manager_handlers', 'conditions', $conditions);
$defaults = isset($default_handlers) ? $default_handlers : page_manager_get_default_task_handlers($task, $subtask_id);
foreach ($defaults as $name => $default) {
$result = page_manager_compare_task_handlers($handlers, $defaults, $name);
if ($result) {
$handlers[$name] = $result;
// Ensure task and subtask are correct, because it's easy to change task
// names when editing a default and fail to do it on the associated handlers.
$result->task = $task['name'];
$result->subtask = $subtask_id;
}
}
// Override weights from the weight table.
if ($handlers) {
$names = array();
$placeholders = array();
foreach ($handlers as $handler) {
$names[] = $handler->name;
$placeholders[] = "'%s'";
}
$result = db_query('SELECT name, weight FROM {page_manager_weights} WHERE name IN (:names)', array(
':names' => $names,
));
foreach ($result as $weight) {
$handlers[$weight->name]->weight = $weight->weight;
}
}
return $handlers;
}