Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('user_setting_add') || permission_exists('user_setting_edit')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //retrieve allowed setting categories if (!permission_exists('user_setting_category_edit')) { if (is_array($_SESSION['settings']) && sizeof($_SESSION['settings']) > 0) { foreach ($_SESSION['groups'] as $index => $group) { $group_name = $group['group_name']; if (is_array($_SESSION['settings'][$group_name]) && sizeof($_SESSION['settings'][$group_name]) > 0) { foreach ($_SESSION['settings'][$group_name] as $category) { $categories[] = strtolower($category); } } } } if (is_array($categories) && sizeof($categories) > 0) { $allowed_categories = array_unique($categories); sort($allowed_categories, SORT_NATURAL); } unset($group, $group_name, $index, $category, $categories); } //action add or update if (is_uuid($_REQUEST["id"])) { $action = "update"; $user_setting_uuid = $_REQUEST["id"]; } else { $action = "add"; } //set the user_uuid if (is_uuid($_GET["user_uuid"])) { $user_uuid = $_GET["user_uuid"]; } //get http post variables and set them to php variables if (count($_REQUEST) > 0) { $user_setting_category = strtolower($_REQUEST["user_setting_category"]); $user_setting_subcategory = strtolower($_POST["user_setting_subcategory"]); $user_setting_name = strtolower($_POST["user_setting_name"]); $user_setting_value = $_POST["user_setting_value"]; $user_setting_order = $_POST["user_setting_order"]; $user_setting_enabled = strtolower($_POST["user_setting_enabled"]); $user_setting_description = $_POST["user_setting_description"]; } if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { $msg = ''; if ($action == "update") { $user_setting_uuid = $_POST["user_setting_uuid"]; } //validate the token $token = new token; if (!$token->validate($_SERVER['PHP_SELF'])) { message::add($text['message-invalid_token'],'negative'); header('Location: ../users/user_edit.php?id='.$user_uuid); exit; } //check for all required/authorized data if (strlen($user_setting_category) == 0 || (is_array($allowed_categories) && sizeof($allowed_categories) > 0 && !in_array(strtolower($user_setting_category), $allowed_categories))) { $msg .= $text['message-required'].$text['label-category']."
\n"; } if (strlen($user_setting_subcategory) == 0) { $msg .= $text['message-required'].$text['label-subcategory']."
\n"; } if (strlen($user_setting_name) == 0) { $msg .= $text['message-required'].$text['label-type']."
\n"; } //if (strlen($user_setting_value) == 0) { $msg .= $text['message-required'].$text['label-value']."
\n"; } if (strlen($user_setting_order) == 0) { $msg .= $text['message-required'].$text['label-order']."
\n"; } if (strlen($user_setting_enabled) == 0) { $msg .= $text['message-required'].$text['label-enabled']."
\n"; } //if (strlen($user_setting_description) == 0) { $msg .= $text['message-required'].$text['label-description']."
\n"; } if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { require_once "resources/header.php"; require_once "resources/persist_form_var.php"; echo "
\n"; echo "
\n"; echo $msg."
"; echo "
\n"; persistformvar($_POST); echo "
\n"; require_once "resources/footer.php"; return; } //add or update the database if ($_POST["persistformvar"] != "true") { // fix null $user_setting_order = ($user_setting_order != '') ? $user_setting_order : 'null'; //update switch timezone variables if ($user_setting_category == "domain" && $user_setting_subcategory == "time_zone" && $user_setting_name == "name" ) { //get the dialplan_uuid $sql = "select dialplan_uuid from v_dialplans "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and app_uuid = '9f356fe7-8cf8-4c14-8fe2-6daf89304458' "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $dialplan_uuid = $database->select($sql, $parameters, 'column'); unset($sql, $parameters); //get the action $sql = "select dialplan_detail_uuid from v_dialplan_details "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and dialplan_uuid = :dialplan_uuid "; $sql .= "and dialplan_detail_tag = 'action' "; $sql .= "and dialplan_detail_type = 'set' "; $sql .= "and dialplan_detail_data like 'timezone=%' "; $parameters['domain_uuid'] = $domain_uuid; $parameters['dialplan_uuid'] = $dialplan_uuid; $database = new database; $dialplan_detail_uuid = $database->select($sql, $parameters, 'column'); if (is_uuid($dialplan_detail_uuid)) { $detail_action = "update"; } unset($sql, $parameters); //update the timezone if ($detail_action == "update") { $p = new permissions; $p->add('dialplan_detail_edit', 'temp'); $array['dialplan_details'][0]['dialplan_detail_uuid'] = $dialplan_detail_uuid; $array['dialplan_details'][0]['dialplan_detail_data'] = 'timezone='.$user_setting_value; } else { $p = new permissions; $p->add('dialplan_detail_add', 'temp'); $array['dialplan_details'][0]['domain_uuid'] = $domain_uuid; $array['dialplan_details'][0]['dialplan_detail_uuid'] = uuid(); $array['dialplan_details'][0]['dialplan_uuid'] = $dialplan_uuid; $array['dialplan_details'][0]['dialplan_detail_tag'] = 'action'; $array['dialplan_details'][0]['dialplan_detail_type'] = 'set'; $array['dialplan_details'][0]['dialplan_detail_data'] = 'timezone='.$user_setting_value; $array['dialplan_details'][0]['dialplan_detail_inline'] = 'true'; $array['dialplan_details'][0]['dialplan_detail_group'] = 0; } if (is_array($array) && sizeof($array) != 0) { $database = new database; $database->app_name = 'user_settings'; $database->app_uuid = '3a3337f7-78d1-23e3-0cfd-f14499b8ed97'; $database->save($array); unset($array); $p->delete('dialplan_detail_edit', 'temp'); $p->delete('dialplan_detail_add', 'temp'); } } //add the user setting if ($action == "add" && permission_exists('user_setting_add')) { $array['user_settings'][0]['user_setting_uuid'] = uuid(); } //update the user setting if ($action == "update" && permission_exists('user_setting_edit')) { $array['user_settings'][0]['user_setting_uuid'] = $user_setting_uuid; } //execute add or update if (is_array($array) && sizeof($array) != 0) { $array['user_settings'][0]['user_uuid'] = $user_uuid; $array['user_settings'][0]['domain_uuid'] = $domain_uuid; $array['user_settings'][0]['user_setting_category'] = $user_setting_category; $array['user_settings'][0]['user_setting_subcategory'] = $user_setting_subcategory; $array['user_settings'][0]['user_setting_name'] = $user_setting_name; $array['user_settings'][0]['user_setting_value'] = $user_setting_value; $array['user_settings'][0]['user_setting_order'] = $user_setting_order; $array['user_settings'][0]['user_setting_enabled'] = $user_setting_enabled; $array['user_settings'][0]['user_setting_description'] = $user_setting_description; $database = new database; $database->app_name = 'user_settings'; $database->app_uuid = '3a3337f7-78d1-23e3-0cfd-f14499b8ed97'; $database->save($array); unset($array); } //update time zone if ($user_setting_category == "domain" && $user_setting_subcategory == "time_zone" && $user_setting_name == "name" && strlen($user_setting_value) > 0 ) { $sql = "select * from v_dialplans "; $sql .= "where app_uuid = '34dd307b-fffe-4ead-990c-3d070e288126' "; $sql .= "and domain_uuid = :domain_uuid "; $parameters['domain_uuid'] = $_SESSION["domain_uuid"]; $database = new database; $result = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); $time_zone_found = false; if (is_array($result) && sizeof($result) != 0) { foreach ($result as &$row) { //get the dialplan_uuid $dialplan_uuid = $row["dialplan_uuid"]; //get the dialplan details $sql = "select * from v_dialplan_details "; $sql .= "where dialplan_uuid = :dialplan_uuid "; $sql .= "and domain_uuid = :domain_uuid "; $parameters['dialplan_uuid'] = $dialplan_uuid; $parameters['domain_uuid'] = $_SESSION["domain_uuid"]; $database = new database; $sub_result = $database->select($sql, $parameters, 'all'); if (is_array($sub_result) && sizeof($sub_result) != 0) { foreach ($sub_result as $sub_row) { $dialplan_detail_uuid = $sub_row["dialplan_detail_uuid"]; $dialplan_detail_tag = $sub_row["dialplan_detail_tag"]; //action //condition $dialplan_detail_type = $sub_row["dialplan_detail_type"]; //set $dialplan_detail_data = $sub_row["dialplan_detail_data"]; $dialplan_detail_group = $sub_row["dialplan_detail_group"]; if ($dialplan_detail_tag == "action" && $dialplan_detail_type == "set") { $data_array = explode("=", $dialplan_detail_data); if ($data_array[0] == "timezone") { $time_zone_found = true; break; } } } } unset($sql, $parameters, $sub_result, $sub_row); //add the time zone if (!$time_zone_found) { $dialplan_detail_uuid = "eb3b3a4e-88ea-4306-b2a8-9f52d3c95f2f"; $array['dialplan_details'][0]['domain_uuid'] = $_SESSION["domain_uuid"]; $array['dialplan_details'][0]['dialplan_uuid'] = $dialplan_uuid; $array['dialplan_details'][0]['dialplan_detail_uuid'] = $dialplan_detail_uuid; $array['dialplan_details'][0]['dialplan_detail_tag'] = 'action'; $array['dialplan_details'][0]['dialplan_detail_type'] = 'set'; $array['dialplan_details'][0]['dialplan_detail_data'] = 'timezone='.$user_setting_value; $array['dialplan_details'][0]['dialplan_detail_group'] = strlen($dialplan_detail_group) > 0 ? $dialplan_detail_group : 'null'; $array['dialplan_details'][0]['dialplan_detail_order'] = '15'; $p = new permissions; $p->add('dialplan_detail_add', 'temp'); $database = new database; $database->app_name = 'user_settings'; $database->app_uuid = '3a3337f7-78d1-23e3-0cfd-f14499b8ed97'; $database->save($array); unset($array); $p->delete('dialplan_detail_add', 'temp'); } //update the time zone if ($time_zone_found) { $array['dialplan_details'][0]['dialplan_detail_uuid'] = $dialplan_detail_uuid; $array['dialplan_details'][0]['dialplan_detail_data'] = 'timezone='.$user_setting_value; $array['dialplan_details'][0]['domain_uuid'] = $_SESSION["domain_uuid"]; $array['dialplan_details'][0]['dialplan_uuid'] = $dialplan_uuid; $p = new permissions; $p->add('dialplan_detail_edit', 'temp'); $database = new database; $database->app_name = 'user_settings'; $database->app_uuid = '3a3337f7-78d1-23e3-0cfd-f14499b8ed97'; $database->save($array); unset($array); $p->delete('dialplan_detail_edit', 'temp'); } } } } //redirect the browser if ($action == "update") { message::add($text['message-update']); } if ($action == "add") { message::add($text['message-add']); } header("Location: /core/users/user_edit.php?id=".$user_uuid); return; } } //pre-populate the form if (is_uuid($_GET["id"]) && count($_GET) > 0 && $_POST["persistformvar"] != "true") { $user_setting_uuid = $_GET["id"]; $sql = "select user_setting_category, user_setting_subcategory, user_setting_name, user_setting_value, user_setting_order, cast(user_setting_enabled as text), user_setting_description "; $sql .= "from v_user_settings "; $sql .= "where user_setting_uuid = :user_setting_uuid "; $sql .= "and user_uuid = :user_uuid "; $parameters['user_setting_uuid'] = $user_setting_uuid; $parameters['user_uuid'] = $user_uuid; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && sizeof($row) != 0) { $user_setting_category = $row["user_setting_category"]; $user_setting_subcategory = $row["user_setting_subcategory"]; $user_setting_name = $row["user_setting_name"]; $user_setting_value = $row["user_setting_value"]; $user_setting_order = $row["user_setting_order"]; $user_setting_enabled = $row["user_setting_enabled"]; $user_setting_description = $row["user_setting_description"]; } unset($sql, $parameters, $row); } //create token $object = new token; $token = $object->create($_SERVER['PHP_SELF']); //show the header require_once "resources/header.php"; if ($action == "update") { $document['title'] = $text['title-user_setting-edit']; } else if ($action == "add") { $document['title'] = $text['title-user_setting-add']; } //show the content echo "
\n"; echo "
\n"; echo "
"; if ($action == "update") { echo "".$text['header-user_setting-edit'].""; } if ($action == "add") { echo "".$text['header-user_setting-add'].""; } echo "
\n"; echo "
\n"; echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'style'=>'margin-right: 15px;','link'=>'/core/users/user_edit.php?id='.urlencode($user_uuid)]); echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']); echo "
\n"; echo "
\n"; echo "
\n"; if ($action == "update") { echo $text['description-user_setting-edit']."\n"; } if ($action == "add") { echo $text['description-user_setting-add']."\n"; } echo "

\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo " ".$text['label-category']."\n"; echo "\n"; if (permission_exists('user_setting_category_edit')) { echo " \n"; } else { echo " "; } echo "
\n"; echo $text['description-category']."\n"; echo "
\n"; echo " ".$text['label-subcategory']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-subcategory']."\n"; echo "
\n"; echo " ".$text['label-type']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-type']."\n"; echo "
\n"; echo " ".$text['label-value']."\n"; echo "\n"; if ($user_setting_category == "domain" && $user_setting_subcategory == "menu" && $user_setting_name == "uuid" ) { echo " \n"; } else if ($user_setting_category == "domain" && $user_setting_subcategory == "template" && $user_setting_name == "name" ) { echo " \n"; } else if ($user_setting_category == "domain" && $user_setting_subcategory == "language" && $user_setting_name == "code" ) { echo " \n"; } else if ($user_setting_category == "domain" && $user_setting_subcategory == "time_zone" && $user_setting_name == "name" ) { echo " \n"; } else if ($user_setting_category == "domain" && $user_setting_subcategory == "time_format" && $user_setting_name == "text" ) { echo " \n"; } else if ($user_setting_subcategory == 'password' || substr_count($user_setting_subcategory, '_password') > 0 || $user_setting_category == "login" && $user_setting_subcategory == "password_reset_key" && $user_setting_name == "text") { echo " \n"; } else if ($user_setting_category == "theme" && substr_count($user_setting_subcategory, "_color") > 0 && ($user_setting_name == "text" || $user_setting_name == 'array')) { echo " \n"; } else if ($user_setting_category == "theme" && substr_count($user_setting_subcategory, "_font") > 0 && $user_setting_name == "text") { $user_setting_value = str_replace('"', "'", $user_setting_value); if ($fonts = get_available_fonts('alpha')) { echo " "; echo " \n"; } else { echo " \n"; } } else if ($user_setting_category == "fax" && $user_setting_subcategory == "page_size" && $user_setting_name == "text" ) { echo " "; } else if ($user_setting_category == "fax" && $user_setting_subcategory == "resolution" && $user_setting_name == "text" ) { echo " "; } else if ($user_setting_category == "theme" && $user_setting_subcategory == "domain_visible" && $user_setting_name == "text" ) { echo " \n"; } else if ($user_setting_category == "theme" && $user_setting_subcategory == "cache" && $user_setting_name == "boolean" ) { echo " \n"; } else if ( ($user_setting_category == "theme" && $user_setting_subcategory == "menu_main_icons" && $user_setting_name == "boolean") || ($user_setting_category == "theme" && $user_setting_subcategory == "menu_sub_icons" && $user_setting_name == "boolean") ) { echo " \n"; } else if ($user_setting_category == "theme" && $user_setting_subcategory == "menu_brand_type" && $user_setting_name == "text" ) { echo " \n"; } else if ($user_setting_category == "theme" && $user_setting_subcategory == "menu_style" && $user_setting_name == "text" ) { echo " \n"; } else if ($user_setting_category == "theme" && $user_setting_subcategory == "menu_position" && $user_setting_name == "text" ) { echo " \n"; } else if ($user_setting_category == "theme" && $user_setting_subcategory == "logo_align" && $user_setting_name == "text" ) { echo " \n"; } elseif ($user_setting_category == "theme" && $user_setting_subcategory == "menu_side_state" && $user_setting_name == "text" ) { echo " \n"; } elseif ($user_setting_category == "theme" && $user_setting_subcategory == "menu_side_toggle" && $user_setting_name == "text" ) { echo " \n"; } elseif ($user_setting_category == "theme" && $user_setting_subcategory == "menu_side_toggle_body_width" && $user_setting_name == "text" ) { echo " \n"; } elseif ($user_setting_category == "theme" && $user_setting_subcategory == "menu_side_item_main_sub_close" && $user_setting_name == "text" ) { echo " \n"; } else if ($user_setting_category == "theme" && $user_setting_subcategory == "body_header_brand_type" && $user_setting_name == "text" ) { echo " \n"; } elseif ($user_setting_category == "users" && $user_setting_subcategory == "username_format" && $user_setting_name == "text" ) { echo " \n"; } elseif ($user_setting_category == "destinations" && $user_setting_subcategory == "dialplan_details" && $user_setting_name == "boolean" ) { echo " \n"; } elseif ($user_setting_category == "destinations" && $user_setting_subcategory == "dialplan_mode" && $user_setting_name == "text" ) { echo " \n"; } elseif ($user_setting_category == "destinations" && $user_setting_subcategory == "select_mode" && $user_setting_name == "text" ) { echo " \n"; } elseif ($user_setting_category == "destinations" && $user_setting_subcategory == "unique" && $user_setting_name == "boolean" ) { echo " \n"; } else { echo " \n"; } echo "
\n"; echo $text['description-value']."\n"; if ($user_setting_category == "theme" && substr_count($user_setting_subcategory, "_font") > 0 && $user_setting_name == "text") { echo "  ".$text['label-reference'].": ".$text['label-web_fonts']."\n"; } echo "
\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo " ".$text['label-order']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-order']."\n"; echo "
\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo " "; echo "
\n"; echo " ".$text['label-enabled']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-setting_enabled']."\n"; echo "
\n"; echo " ".$text['label-description']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-description']."\n"; echo "
\n"; echo " \n"; if ($action == "update") { echo " \n"; } echo " \n"; echo "
"; echo "
"; echo "
"; echo "\n"; //include the footer require_once "resources/footer.php"; ?>