menu_node_access.module in Panels Extras 7
Same filename and directory in other branches
menu_node_access.module Add a node selection rule "Node : Belongs to a Menu"
File
menu_node_access/menu_node_access.moduleView source
<?php
// $Id$ menu_node_access.module,v 1.1 2011/03/02 11:58:48 chriscalip Exp $
/**
* @file menu_node_access.module
* Add a node selection rule "Node : Belongs to a Menu"
*/
/**
* Implements hook_ctools_plugin_directory().
*/
function menu_node_access_ctools_plugin_directory($module, $plugin) {
if ($module == 'ctools' && $plugin == 'access') {
return "plugins/access";
}
}
/**
* Implements hook_node_load().
*/
function menu_node_access_node_load($nodes, $types) {
if (!is_array($nodes)) {
return;
}
// TODO: Optimize for multiple nodes.
foreach ($nodes as $node) {
// Ensure the menu object is loaded.
$node->menu_node_links = menu_node_access_get_links($node->nid);
}
}
/**
* Get the relevant menu links for a node.
*
* @param $nid
* The node id.
* @param $router
* Boolean flag indicating whether to attach the menu router link to the $item object.
* If set to TRUE, the router will be set as $item->menu_router.
* @return
* An array of complete menu_link objects or an empy array on failure.
*/
function menu_node_access_get_links($nid, $router = FALSE) {
$result = db_query("SELECT * FROM {menu_links} WHERE link_path = :link_path", array(
':link_path' => 'node/' . $nid,
));
$items = array();
foreach ($result as $data) {
if ($router) {
$data->menu_router = menu_get_item('node/' . $nid);
}
$items[$data->mlid] = $data;
}
return $items;
}
Functions
Name![]() |
Description |
---|---|
menu_node_access_ctools_plugin_directory | Implements hook_ctools_plugin_directory(). |
menu_node_access_get_links | Get the relevant menu links for a node. |
menu_node_access_node_load | Implements hook_node_load(). |