diff --git a/resources/classes/menu.php b/resources/classes/menu.php
index c3542855d8..3ab7b1372f 100644
--- a/resources/classes/menu.php
+++ b/resources/classes/menu.php
@@ -26,10 +26,6 @@
/**
* menu class
- *
- * @method null delete
- * @method null toggle
- * @method null copy
*/
if (!class_exists('menu')) {
class menu {
@@ -43,7 +39,6 @@ if (!class_exists('menu')) {
private $table;
private $toggle_field;
private $toggle_values;
- private $description_field;
private $location;
public $menu_uuid;
public $menu_language;
@@ -55,6 +50,24 @@ if (!class_exists('menu')) {
*/
private $database;
+ /**
+ * Settings object set in the constructor. Must be a settings object and cannot be null.
+ * @var settings Settings Object
+ */
+ private $settings;
+
+ /**
+ * User UUID set in the constructor. This can be passed in through the $settings_array associative array or set in the session global array
+ * @var string
+ */
+ private $user_uuid;
+
+ /**
+ * Domain UUID set in the constructor. This can be passed in through the $settings_array associative array or set in the session global array
+ * @var string
+ */
+ private $domain_uuid;
+
/**
* called when the object is created
*/
@@ -64,12 +77,25 @@ if (!class_exists('menu')) {
$this->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
$this->location = 'menus.php';
+ $this->domain_uuid = $setting_array['domain_uuid'] ?? $_SESSION['domain_uuid'] ?? '';
+ $this->user_uuid = $setting_array['user_uuid'] ?? $_SESSION['user_uuid'] ?? '';
+
//open a database connection
if (empty($setting_array['database'])) {
$this->database = database::new();
} else {
$this->database = $setting_array['database'];
}
+
+ //load the settings
+ if (empty($setting_array['settings'])) {
+ $this->settings = new settings(['database' => $this->database, 'domain_uuid' => $this->domain_uuid, 'user_uuid' => $this->user_uuid]);
+ } else {
+ $this->settings = $setting_array['settings'];
+ }
+
+ //add multi-lingual support
+ $this->text = (new text)->get();
}
/**
@@ -82,14 +108,10 @@ if (!class_exists('menu')) {
if (permission_exists($this->name.'_delete')) {
- //add multi-lingual support
- $language = new text;
- $text = $language->get();
-
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
- message::add($text['message-invalid_token'],'negative');
+ message::add($this->text['message-invalid_token'],'negative');
header('Location: '.$this->location);
exit;
}
@@ -137,7 +159,7 @@ if (!class_exists('menu')) {
$p->delete('menu_language_delete', 'temp');
//set message
- message::add($text['message-delete']);
+ message::add($this->text['message-delete']);
}
unset($records);
}
@@ -151,14 +173,10 @@ if (!class_exists('menu')) {
if (permission_exists($this->name.'_delete')) {
- //add multi-lingual support
- $language = new text;
- $text = $language->get();
-
//validate the token
$token = new token;
if (!$token->validate('/core/menu/menu_item_list.php')) {
- message::add($text['message-invalid_token'],'negative');
+ message::add($this->text['message-invalid_token'],'negative');
header('Location: '.$this->location);
exit;
}
@@ -220,7 +238,7 @@ if (!class_exists('menu')) {
$p->delete('menu_item_group_delete', 'temp');
//set message
- message::add($text['message-delete']);
+ message::add($this->text['message-delete']);
}
unset($records);
}
@@ -239,14 +257,10 @@ if (!class_exists('menu')) {
if (permission_exists($this->name.'_edit')) {
- //add multi-lingual support
- $language = new text;
- $text = $language->get();
-
//validate the token
$token = new token;
if (!$token->validate('/core/menu/menu_item_list.php')) {
- message::add($text['message-invalid_token'],'negative');
+ message::add($this->text['message-invalid_token'],'negative');
header('Location: '.$this->location);
exit;
}
@@ -294,7 +308,7 @@ if (!class_exists('menu')) {
unset($array);
//set message
- message::add($text['message-toggle']);
+ message::add($this->text['message-toggle']);
}
unset($records, $states);
}
@@ -756,7 +770,7 @@ if (!class_exists('menu')) {
$sql .= "and menu_item_uuid is not null ";
$sql .= ") ";
$sql .= "order by i.menu_item_order asc ";
- $parameters['menu_language'] = $_SESSION['domain']['language']['code'] ?? null;
+ $parameters['menu_language'] = $this->settings->get('domain', 'language', 'en-us');
$parameters['menu_uuid'] = $this->menu_uuid;
$result = $this->database->select($sql, $parameters, 'all');
unset($sql, $parameters);
@@ -791,7 +805,7 @@ if (!class_exists('menu')) {
private function menu_child_array($menu_item_level, $menu_item_uuid) {
//set the level
- $menu_item_level = $menu_item_level + 1;
+ $menu_item_level++;
//if there are no groups then set the public group
if (!isset($_SESSION['groups'][0]['group_name'])) {
@@ -824,7 +838,7 @@ if (!class_exists('menu')) {
}
$sql .= ") ";
$sql .= "order by l.menu_item_title, i.menu_item_order asc ";
- $parameters['menu_language'] = $_SESSION['domain']['language']['code'];
+ $parameters['menu_language'] = $this->settings->get('domain', 'language', 'en-us');
$parameters['menu_uuid'] = $this->menu_uuid;
$parameters['menu_item_parent_uuid'] = $menu_item_uuid;
$sub_result = $this->database->select($sql, $parameters, 'all');
@@ -902,20 +916,16 @@ if (!class_exists('menu')) {
//add the menu items
$this->restore();
}
- unset($sql, $parameters, $result, $row);
}
/**
* build the fixed, static or inline horizontal menu html
+ * @param array $menu_array Associative array of menu items
*/
public function menu_horizontal($menu_array) {
- //add multi-lingual support
- $language = new text;
- $text = $language->get();
-
//determine menu behavior
- $menu_style = !empty($_SESSION['theme']['menu_style']['text']) ? $_SESSION['theme']['menu_style']['text'] : 'fixed';
+ $menu_style = $this->settings->get('theme', 'menu_style', 'fixed');
switch ($menu_style) {
case 'inline':
$menu_type = 'default';
@@ -931,9 +941,9 @@ if (!class_exists('menu')) {
break;
case 'fixed':
default:
- $menu_type = 'fixed-'.(!empty($_SESSION['theme']['menu_position']['text']) ? $_SESSION['theme']['menu_position']['text'] : 'top');
+ $menu_type = 'fixed-'.$this->settings->get('theme', 'menu_position', 'top');
if (!http_user_agent('mobile')) {
- $menu_width = !empty($_SESSION['theme']['menu_width_fixed']['text']) ? $_SESSION['theme']['menu_width_fixed']['text'] : 'calc(90% - 20px)';
+ $menu_width = $this->settings->get('theme', 'menu_width_fixed', 'calc(90% - 20px)');
}
$menu_brand = true;
$menu_corners = null;
@@ -946,17 +956,17 @@ if (!class_exists('menu')) {
if ($menu_brand) {
//define menu brand mark
- $menu_brand_text = (!empty($_SESSION['theme']['menu_brand_text']['text'])) ? escape($_SESSION['theme']['menu_brand_text']['text']) : "FusionPBX";
- switch ($_SESSION['theme']['menu_brand_type']['text'] ?? null) {
+ $menu_brand_text = escape($this->settings->get('theme', 'menu_brand_text', 'FusionPBX'));
+ switch ($this->settings->get('theme', 'menu_brand_type', '')) {
case 'text':
$html .= " ".$menu_brand_text."\n";
break;
case 'image_text':
- $menu_brand_image = (!empty($_SESSION['theme']['menu_brand_image']['text'])) ? escape($_SESSION['theme']['menu_brand_image']['text']) : PROJECT_PATH."/themes/default/images/logo.png";
+ $menu_brand_image = escape($this->settings->get('theme', 'menu_brand_image', PROJECT_PATH.'/themes/default/images/logo.png'));
$html .= " ";
$html .= " ";
- if (!empty($_SESSION['theme']['menu_brand_image_hover']['text'])) {
- $html .= "";
+ if (!empty($this->settings->get('theme', 'menu_brand_image_hover'))) {
+ $html .= "";
}
$html .= "\n";
$html .= " ".$menu_brand_text."\n";
@@ -965,11 +975,11 @@ if (!class_exists('menu')) {
break;
case 'image':
default:
- $menu_brand_image = !empty($_SESSION['theme']['menu_brand_image']['text']) ? escape($_SESSION['theme']['menu_brand_image']['text']) : PROJECT_PATH."/themes/default/images/logo.png";
+ $menu_brand_image = escape($this->settings->get('theme', 'menu_brand_image', PROJECT_PATH.'/themes/default/images/logo.png'));
$html .= " ";
$html .= "
";
- if (isset($_SESSION['theme']['menu_brand_image_hover']['text']) && !empty($_SESSION['theme']['menu_brand_image_hover']['text'])) {
- $html .= "";
+ if (!empty($this->settings->get('theme', 'menu_brand_image_hover', ''))) {
+ $html .= "";
}
$html .= "\n";
$html .= " \n";
@@ -997,7 +1007,7 @@ if (!class_exists('menu')) {
}
$mod_a_2 = (!empty($menu_parent['menu_item_link']) && !$submenu) ? $menu_parent['menu_item_link'] : '#';
$mod_a_3 = ($menu_parent['menu_item_category'] == 'external') ? "target='_blank' " : null;
- if (isset($_SESSION['theme']['menu_main_icons']['boolean']) && $_SESSION['theme']['menu_main_icons']['boolean'] == 'true') {
+ if ($this->settings->get('theme', 'menu_main_icons', true) === true) {
if (!empty($menu_parent['menu_item_icon']) && substr($menu_parent['menu_item_icon'], 0, 3) == 'fa-') { // font awesome icon
$menu_main_icon = "";
}
@@ -1030,7 +1040,7 @@ if (!class_exists('menu')) {
}
$mod_a_3 = ($menu_sub['menu_item_category'] == 'external') ? "target='_blank' " : null;
$menu_sub_icon = null;
- if ($_SESSION['theme']['menu_sub_icons']['boolean'] != 'false') {
+ if ($this->settings->get('theme', 'menu_sub_icons', true) !== false) {
if (!empty($menu_sub['menu_item_icon']) && substr($menu_sub['menu_item_icon'], 0, 3) == 'fa-') { // font awesome icon
$menu_sub_icon = "";
}
@@ -1038,7 +1048,7 @@ if (!class_exists('menu')) {
$menu_sub_icon = null;
}
}
- $html .= "