yf_core_menu classMenu API methods.
| File | plugins/sys/classes/yf_core_menu.class.php |
|---|---|
| Use | _class('core_menu') |
A site sets them in its config with $PROJECT_CONF['core_menu']['NAME'] = ...;
| Property | Default | Description |
|---|---|---|
$USE_DYNAMIC_ATTS |
true |
|
$_active_modules |
null |
|
$_error_no_menus_raised |
null |
|
$_menu_items |
null |
|
$_menus_infos |
null |
public function show($params)
Show menu (alias for the '_show_menu').
public function show($params)
{
return $this->_show_menu($params);
}
_ hooks and helpers; not routable as page actionspublic function __call($name, $args)
Catch missing method call.
public function __call($name, $args)
{
return main()->extend_call($this, $name, $args);
}
public function _apply_custom_fields($cur_menu_info, $menu_items)
public function _apply_custom_fields($cur_menu_info, $menu_items)
{
$custom_fields = [];
if ($cur_menu_info['custom_fields']) {
foreach (explode(',', str_replace(';', ',', trim($cur_menu_info['custom_fields']))) as $f) {
$f = trim($f);
if ($f) {
$custom_fields[$f] = $f;
}
}
}
if ($this->USE_DYNAMIC_ATTS && $custom_fields) {
foreach ((array) $menu_items as $item_id => $item_info) {
$custom_attrs = [];
if ( ! strlen($item_info['other_info'])) {
continue;
}
$custom_attrs = (array) _attrs_string2array($item_info['other_info']);
foreach ((array) $custom_fields as $f) {
$menu_items[$item_id][$f] = (string) ($custom_attrs[$f]);
}
}
}
return $menu_items;
}
public function _count_levels(&$children, $start_id = 0, $level = 0)
public function _count_levels(&$children, $start_id = 0, $level = 0)
{
$ids = [];
foreach ((array) $children[$start_id] as $id => $_tmp) {
$ids[$id] = $level;
if (isset($children[$id])) {
foreach ((array) $this->_count_levels($children, $id, $level + 1) as $_id => $_level) {
$ids[$_id] = $_level;
}
}
}
return $ids;
}
public function _is_current_page($item)
public function _is_current_page($item)
{
$object = ($_GET['object'] ?? null);
$action = ($_GET['action'] ?? null);
$id = ($_GET['id'] ?? null);
$is_cur_page = false;
parse_str($item['location'], $u);
// Check if we are on the current page
if (isset($u['object']) && $u['object'] && $u['object'] == $object) {
if (isset($u['action']) && $u['action']) {
if ($u['action'] == $action) {
// Needed for static pages
if ($u['id']) {
if ($u['id'] == $id) {
$is_cur_page = true;
}
} else {
$is_cur_page = true;
}
}
} else {
$is_cur_page = true;
}
}
return $is_cur_page;
}
public function _recursive_sort_items($items = [], $skip_item_id = 0)
Get and sort items ordered array (recursively).
public function _recursive_sort_items($items = [], $skip_item_id = 0)
{
$children = [];
foreach ((array) $items as $id => $info) {
$parent_id = $info['parent_id'];
if ($skip_item_id == $id) {
continue;
}
$children[$parent_id][$id] = $id;
}
$ids = $this->_count_levels($children, 0);
$new_items = [];
foreach ((array) $ids as $id => $level) {
$new_items[$id] = $items[$id] + ['level' => $level];
}
return $new_items;
}