| Server IP : 103.161.17.216 / Your IP : 216.73.216.1 Web Server : nginx/1.18.0 System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/app.houseland.info/modules/menu_setup/helpers/ |
Upload File : |
<?php
use app\services\utilities\Arr;
defined('BASEPATH') or exit('No direct script access allowed');
function app_admin_sidebar_custom_options($items)
{
return _apply_menu_items_options($items, json_decode(get_option('aside_menu_active')));
}
function app_admin_sidebar_custom_positions($items)
{
return _apply_menu_items_position($items, json_decode(get_option('aside_menu_active')));
}
function app_admin_setup_menu_custom_options($items)
{
return _apply_menu_items_options($items, json_decode(get_option('setup_menu_active')));
}
function app_admin_setup_menu_custom_positions($items)
{
return _apply_menu_items_position($items, json_decode(get_option('setup_menu_active')));
}
function _apply_menu_items_options($items, $options)
{
foreach ($items as $key => $item) {
if (isset($options->{$item['slug']})) {
if (isset($options->{$item['slug']}->disabled)
&& $options->{$item['slug']}->disabled === 'true') {
// Main item is disabled
unset($items[$key]);
} else {
// Main item has custom icon
if (isset($options->{$item['slug']}->icon) && $options->{$item['slug']}->icon === false) {
// False is when user set the icon empty from the builder
$items[$key]['icon'] = '';
} elseif (!empty($options->{$item['slug']}->icon)) {
$items[$key]['icon'] = $options->{$item['slug']}->icon;
}
}
foreach ($item['children'] as $childKey => $child) {
if (isset($options->{$item['slug']}->children->{$child['slug']})) {
if (isset($options->{$item['slug']}->children->{$child['slug']}->disabled)
&& $options->{$item['slug']}->children->{$child['slug']}->disabled === 'true') {
// Is disabled
unset($items[$key]['children'][$childKey]);
} else {
// Has custom icon
if ($options->{$item['slug']}->children->{$child['slug']}->icon === false) {
$items[$key]['children'][$childKey]['icon'] = '';
} elseif (!empty($options->{$item['slug']}->children->{$child['slug']}->icon)) {
$items[$key]['children'][$childKey]['icon'] = $options->{$item['slug']}->children->{$child['slug']}->icon;
}
}
}
}
}
}
return $items;
}
function _apply_menu_items_position($items, $options)
{
if (!is_array($options)) {
$CI = &get_instance();
// Has applied options
$newItems = [];
$newItemsAddedKeys = [];
foreach ($options as $key => $item) {
// Check if the item is found because can be removed
if ($newItem = $CI->app_menu->filter_item($items, $item->id)) {
$newItems[$key] = $newItem;
$newItemsAddedKeys[] = $key;
$newItems[$key]['children'] = [];
if (isset($item->children)) {
foreach ($item->children as $child) {
if (property_exists($child, 'id') && $newChildItem = $CI->app_menu->filter_item($items, $child->id)) {
$newItems[$key]['children'][] = $newChildItem;
$newItemsAddedKeys[] = $newChildItem['slug'];
}
}
}
}
}
// Let's check if item is missed from $items to $newItems
foreach ($items as $key => $item) {
if (!in_array($key, $newItemsAddedKeys)) {
$newItems[$key] = $item;
}
if (isset($item['collapse'])) {
foreach ($item['children'] as $childKey => $child) {
if (!in_array($child['slug'], $newItemsAddedKeys)) {
$newItems[$key]['children'][] = $child;
}
}
$newItems[$key]['children'] = Arr::uniqueByKey($newItems[$key]['children'], 'slug');
}
}
$items = $newItems;
}
// Finally apply the positions
foreach ($items as $key => $item) {
if (isset($options->{$item['slug']})) {
$items[$key]['position'] = (int) $options->{$item['slug']}->position;
foreach ($item['children'] as $childKey => $child) {
if (isset($options->{$item['slug']}->children->{$child['slug']})) {
$items[$key]['children'][$childKey]['position'] = (int) $options->{$item['slug']}->children->{$child['slug']}->position;
}
}
}
}
return $items;
}
function _menu_options_filter_child($menu_options, $slug)
{
foreach ($menu_options as $option) {
if (isset($option->children)) {
foreach ($option->children as $childKey => $child) {
if ($child->id == $slug) {
return $child;
}
}
}
}
return false;
}
function app_get_menu_setup_icon($menu_options, $slug, $group)
{
$child = _menu_options_filter_child($menu_options, $slug);
// No options applied
if (!isset($menu_options->{$slug}) && $child === false) {
return get_instance()->app_menu->get_initial_icon($slug, $group);
}
// Icon is set empty by user on parent item
if (isset($menu_options->{$slug})
&& $menu_options->{$slug}->icon === false) {
return '';
}
// Icon is set empty by user on child item
if ($child !== false && $child->icon === false) {
return '';
}
// no icon applied, get the initial icon
if (isset($menu_options->{$slug}) && $menu_options->{$slug}->icon === '') {
return get_instance()->app_menu->get_initial_icon($slug, $group);
} elseif (isset($menu_options->{$slug})) {
// Custom icon is set on parent
return $menu_options->{$slug}->icon;
}
// no icon applied, get the initial icon
if ($child && $child->icon === '') {
return get_instance()->app_menu->get_initial_icon($slug, $group);
} elseif ($child) {
// Custom icon is set on child
return $child->icon;
}
return '';
}