function menu_reference_get_menu_hierarchy in Menu Reference 7
Return list of all menu links as options list for field widget.
Parameters
$menu_name: Machine-readable menu name to load links for.
Return value
array Array of menu items.
2 calls to menu_reference_get_menu_hierarchy()
- menu_references_filter_handler::get_value_options in views/
handlers/ menu_references_filter_handler.inc - Child classes should be used to override this function and set the 'value options', unless 'options callback' is defined as a valid function or static public method to generate these values.
- menu_reference_field_widget_form in ./
menu_reference.module - Implements hook_field_widget_form().
File
- ./
menu_reference.module, line 223 - Primarily Drupal hooks and global API functions for module Menu Reference.
Code
function menu_reference_get_menu_hierarchy($menu_name, $languages = array(), $items = array(), $level = 0) {
if (empty($items)) {
$args = array(
':menu' => $menu_name,
);
$query = "SELECT m.load_functions, m.to_arg_functions, m.access_callback, m.access_arguments, m.page_callback, m.page_arguments, m.delivery_callback, m.title, m.title_callback, m.title_arguments, m.type, m.description, ml.*\n FROM {menu_links} ml LEFT JOIN {menu_router} m ON m.path = ml.router_path\n WHERE ml.menu_name = :menu";
if (!empty($languages)) {
$query .= " AND ml.language IN (:languages)";
$args[':languages'] = $languages;
}
$query .= " ORDER BY p1 ASC, p2 ASC, p3 ASC, p4 ASC, p5 ASC, p6 ASC, p7 ASC, p8 ASC, p9 ASC";
$result = db_query($query, $args, array(
'fetch' => PDO::FETCH_ASSOC,
));
$links = array();
foreach ($result as $item) {
$links[] = $item;
}
$items = menu_tree_data($links);
}
$language_list = language_list();
$options = array();
foreach ($items as $item) {
$level_prefix = $level > 0 ? str_repeat('--', $level) . ' ' : '';
$text = $level_prefix . $item['link']['link_title'];
if (empty($languages) && isset($item['link']['language']) && $item['link']['language'] != LANGUAGE_NONE) {
$text .= ' (' . $language_list[$item['link']['language']]->native . ')';
}
$options[$item['link']['mlid']] = $text;
if (!empty($item['below'])) {
$options += menu_reference_get_menu_hierarchy($menu_name, $languages, $item['below'], $level + 1);
}
}
return $options;
}