Portions created by the Initial Developer are Copyright (C) 2008-2023 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes files require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('default_setting_add') || permission_exists('default_setting_edit')) { //access granted } else { echo "access denied"; exit; } //connect to the database $database = new database; //add multi-lingual support $language = new text; $text = $language->get(); //define the variables $default_setting_category = ''; $default_setting_subcategory = ''; $default_setting_name = ''; $default_setting_value = ''; $default_setting_order = ''; $default_setting_enabled = ''; $default_setting_description = ''; $search = ''; //action add or update if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) { $action = "update"; $default_setting_uuid = $_REQUEST["id"]; } else { $action = "add"; } //get the search variable if (!empty($_REQUEST['search'])) { $search = $_REQUEST['search']; } //get http post variables and set them to php variables if (!empty($_REQUEST)) { $default_setting_category = strtolower($_REQUEST["default_setting_category"] ?? ''); $default_setting_subcategory = strtolower($_POST["default_setting_subcategory"] ?? ''); $default_setting_name = strtolower($_POST["default_setting_name"] ?? ''); $default_setting_value = $_POST["default_setting_value"] ?? ''; $default_setting_order = $_POST["default_setting_order"] ?? ''; $default_setting_enabled = $_POST["default_setting_enabled"] ?? 'false'; $default_setting_description = $_POST["default_setting_description"] ?? ''; } //sanitize the variables $search = preg_replace('#[^a-zA-Z0-9_\-\. ]#', '', $search); $default_setting_category = preg_replace('#[^a-zA-Z0-9_\-\.]#', '', $default_setting_category); //build the query string $query_string = ''; if (!empty($search)) { $query_string .= 'search='.urlencode($search); } if ($default_setting_category != '') { if ($query_string == '') { $query_string = ''; } else { $query_string .= '&'; } $query_string .= 'default_setting_category='.urlencode($default_setting_category); } //process the http post if (!empty($_POST) && (empty($_POST["persistformvar"]) || $_POST["persistformvar"] != "true")) { //set the default_setting_uuid if ($action == "update") { $default_setting_uuid = $_POST["default_setting_uuid"]; } else { $default_setting_uuid = uuid(); } //validate the token $token = new token; if (!$token->validate($_SERVER['PHP_SELF'])) { message::add($text['message-invalid_token'],'negative'); header('Location: default_settings.php?'.$query_string); exit; } //check for all required data $msg = ''; if (empty($default_setting_category)) { $msg .= $text['message-required'].$text['label-category']."
\n"; } if (empty($default_setting_subcategory)) { $msg .= $text['message-required'].$text['label-subcategory']."
\n"; } if (empty($default_setting_name)) { $msg .= $text['message-required'].$text['label-type']."
\n"; } //if (empty($default_setting_value)) { $msg .= $text['message-required'].$text['label-value']."
\n"; } if (empty($default_setting_order)) { $msg .= $text['message-required'].$text['label-order']."
\n"; } if (empty($default_setting_enabled)) { $msg .= $text['message-required'].$text['label-enabled']."
\n"; } //if (empty($default_setting_description)) { $msg .= $text['message-required'].$text['label-description']."
\n"; } if (!empty($msg) && empty($_POST["persistformvar"])) { 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 (empty($_POST["persistformvar"]) || $_POST["persistformvar"] != "true") { // fix null $default_setting_order = ($default_setting_order != '') ? $default_setting_order : 'null'; //update switch timezone variables if ($default_setting_category == "domain" && $default_setting_subcategory == "time_zone" && $default_setting_name == "name" ) { //get the dialplan_uuid $sql = "select dialplan_uuid from v_dialplans "; $sql .= "where app_uuid = 'd49ee3bd-5085-4619-a2f9-2b62c8c461c5' "; $dialplan_uuid = $database->select($sql, null, 'column'); unset($sql); //get the action $sql = "select dialplan_detail_uuid from v_dialplan_details "; $sql .= "where dialplan_uuid = :dialplan_uuid "; $sql .= "and dialplan_detail_tag = 'action' "; $sql .= "and dialplan_detail_type = 'set' "; $sql .= "and dialplan_detail_data like 'timezone=%' "; $parameters['dialplan_uuid'] = $dialplan_uuid; $dialplan_detail_uuid = $database->select($sql, $parameters, 'column'); $detail_action = is_uuid($dialplan_detail_uuid) ? 'update' : 'add'; unset($sql, $parameters); //update the timezone $p = permissions::new(); if ($detail_action == "update") { $array['dialplan_details'][0]['dialplan_detail_uuid'] = $dialplan_detail_uuid; $array['dialplan_details'][0]['dialplan_detail_data'] = 'timezone='.$default_setting_value; $p->add('dialplan_detail_edit', 'temp'); } else { $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='.$default_setting_value; $array['dialplan_details'][0]['dialplan_detail_inline'] = 'true'; $array['dialplan_details'][0]['dialplan_detail_group'] = '0'; $array['dialplan_details'][0]['dialplan_detail_order'] = '20'; $p->add('dialplan_detail_add', 'temp'); } if (is_array($array) && sizeof($array) != 0) { $database->app_name = 'default_settings'; $database->app_uuid = '2c2453c0-1bea-4475-9f44-4d969650de09'; $database->save($array); unset($array); $p->delete('dialplan_detail_edit', 'temp'); $p->delete('dialplan_detail_add', 'temp'); } //update the dialplan xml $dialplans = new dialplan; $dialplans->source = "details"; $dialplans->destination = "database"; $dialplans->uuid = $dialplan_uuid; $dialplans->xml(); //clear the cache $cache = new cache; $cache->delete("dialplan:".$domain_name); } elseif ($default_setting_category == "destinations" && $default_setting_subcategory == "dialplan_mode" ) { //clear the cache $cache = new cache; $cache->delete("dialplan:mode"); } //build the array of data $x = 0; $array['default_settings'][$x]['default_setting_uuid'] = $default_setting_uuid; $array['default_settings'][$x]['default_setting_category'] = $default_setting_category; $array['default_settings'][$x]['default_setting_subcategory'] = $default_setting_subcategory; $array['default_settings'][$x]['default_setting_name'] = $default_setting_name; $array['default_settings'][$x]['default_setting_value'] = $default_setting_value; $array['default_settings'][$x]['default_setting_order'] = $default_setting_order; $array['default_settings'][$x]['default_setting_enabled'] = $default_setting_enabled; $array['default_settings'][$x]['default_setting_description'] = $default_setting_description; //save to the data $database->app_name = 'default_settings'; $database->app_uuid = '2c2453c0-1bea-4475-9f44-4d969650de09'; $database->save($array); $message = $database->message; //set the message and redirect the user if ($action == "add" && permission_exists('default_setting_add')) { message::add($text['message-add']); header("Location: default_settings.php?".$query_string."#anchor_".$default_setting_category); return; } if ($action == "update" && permission_exists('default_setting_edit')) { message::add($text['message-update']); header("Location: default_settings.php?".$query_string."#anchor_".$default_setting_category); return; } } } //pre-populate the form if (count($_GET) > 0 && empty($_POST["persistformvar"])) { $default_setting_uuid = $_GET["id"] ?? ''; $sql = "select default_setting_uuid, default_setting_category, default_setting_subcategory, default_setting_name, default_setting_value, default_setting_order, cast(default_setting_enabled as text), default_setting_description "; $sql .= "from v_default_settings "; $sql .= "where default_setting_uuid = :default_setting_uuid "; $parameters['default_setting_uuid'] = $default_setting_uuid; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && sizeof($row) != 0) { $default_setting_category = $row["default_setting_category"]; $default_setting_subcategory = $row["default_setting_subcategory"]; $default_setting_name = $row["default_setting_name"]; $default_setting_value = $row["default_setting_value"]; $default_setting_order = $row["default_setting_order"]; $default_setting_enabled = $row["default_setting_enabled"]; $default_setting_description = $row["default_setting_description"]; } unset($sql, $parameters); } //set the defaults if (empty($default_setting_enabled)) { $default_setting_enabled = 'true'; } //create token $object = new token; $token = $object->create($_SERVER['PHP_SELF']); //include the header if ($action == "update") { $document['title'] = $text['title-default_setting-edit']; } elseif ($action == "add") { $document['title'] = $text['title-default_setting-add']; } require_once "resources/header.php"; //show the content echo "
\n"; echo "
\n"; echo "
"; if ($action == "add") { echo "".$text['header-default_setting-add'].""; } if ($action == "update") { echo "".$text['header-default_setting-edit'].""; } echo "
\n"; echo "
\n"; echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'default_settings.php?'.$query_string]); echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','onclick'=>'submit_form();']); echo "
\n"; echo "
\n"; echo "
\n"; if ($action == "add") { echo $text['description-default_setting-add']."\n"; } if ($action == "update") { echo $text['description-default_setting-edit']."\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 "
\n"; echo " ".$text['label-category']."\n"; echo "\n"; echo " \n"; 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"; $setting_types = ['Array','Boolean','Code','Dir','Name','Numeric','Text','UUID']; echo " \n"; unset($setting_types, $setting_type); echo "
\n"; echo $text['description-type']."\n"; echo "
\n"; echo " ".$text['label-value']."\n"; echo "\n"; $category = $default_setting_category; $subcategory = $default_setting_subcategory; $name = $default_setting_name; if ($category == "cdr" && $subcategory == "format" && $name == "text" ) { echo " \n"; } elseif ($category == "cdr" && $subcategory == "storage" && $name == "text" ) { echo " \n"; } elseif ($category == "domain" && $subcategory == "menu" && $name == "uuid" ) { echo " \n"; } elseif ($category == "domain" && $subcategory == "template" && $name == "name" ) { echo " \n"; } elseif ($category == "domain" && $subcategory == "language" && $name == "code" ) { echo " \n"; } elseif ($category == "email" && $subcategory == "smtp_auth" && $name == "var" ) { echo " \n"; } elseif ($category == "email" && $subcategory == "smtp_secure" && $name == "var" ) { echo " \n"; } elseif ($category == "domain" && $subcategory == "time_zone" && $name == "name" ) { echo " \n"; } elseif ($category == "domain" && $subcategory == "time_format" && $name == "text" ) { echo " \n"; } elseif ($category == "domain" && $subcategory == "setting_value_input_type" && $name == "text" ) { echo " \n"; } elseif ($subcategory == 'password' || substr_count($subcategory, '_password') > 0 || $category == "login" && $subcategory == "password_reset_key" && $name == "text") { echo " \n"; } elseif (substr_count($subcategory, "_color") > 0 && ($name == "text" || $name == 'array')) { echo " \n"; } elseif ($category == "theme" && substr_count($subcategory, "_font") > 0 && $name == "text") { $default_setting_value = str_replace('"', "'", $default_setting_value); if ($fonts = get_available_fonts('alpha')) { echo " "; echo " \n"; } else { echo " \n"; } } elseif ($category == "fax" && $subcategory == "page_size" && $name == "text" ) { echo " "; } elseif ($category == "fax" && $subcategory == "resolution" && $name == "text" ) { echo " "; } elseif ($category == "provision" && $subcategory == "aastra_time_format" && $name == "text" ) { echo " \n"; } elseif ($category == "provision" && $subcategory == "aastra_date_format" && $name == "text" ) { echo " \n"; } elseif ($category == "message" && $subcategory == "display_last" && $name == "text") { $array = explode(' ',$default_setting_value); if (!is_numeric($array[0])) { $array[1] = $array[0]; $array[0] = ''; } echo " \n"; echo " \n"; echo " \n"; unset($array); } elseif ($category == "theme" && $subcategory == "domain_visible" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "menu_brand_type" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "menu_style" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "menu_position" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "logo_align" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "custom_css_code" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "button_icons" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "menu_side_state" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "menu_side_toggle" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "menu_side_toggle_body_width" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "menu_side_item_main_sub_close" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "body_header_brand_type" && $name == "text" ) { echo " \n"; } elseif ($category == "theme" && $subcategory == "input_toggle_style" && $name == "text" ) { echo " \n"; } elseif ($category == "users" && $subcategory == "username_format" && $name == "text" ) { echo " \n"; } elseif ($category == "voicemail" && $subcategory == "voicemail_file" && $name == "text" ) { echo " \n"; } elseif ($category == "voicemail" && ($subcategory == "message_caller_id_number" || $subcategory == "message_date_time") && $name == "text" ) { echo " \n"; } elseif ($category == "recordings" && $subcategory == "storage_type" && $name == "text" ) { echo " \n"; } elseif ($category == "destinations" && $subcategory == "dialplan_mode" && $name == "text" ) { echo " \n"; } elseif ($category == "destinations" && $subcategory == "select_mode" && $name == "text" ) { echo " \n"; } elseif (is_json($default_setting_value)) { echo " \n"; } elseif ($name == "boolean") { echo " \n"; } else { if (!empty($_SESSION['domain']['setting_value_input_type']) && $_SESSION['domain']['setting_value_input_type']['text'] == 'textarea') { echo " \n"; } else { echo " \n"; } } echo "
\n"; echo $text['description-value']."\n"; if ($category == "theme" && substr_count($subcategory, "_font") > 0 && $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 " ".$text['label-enabled']."\n"; echo "\n"; if (substr($_SESSION['theme']['input_toggle_style']['text'], 0, 6) == 'switch') { echo " \n"; } else { echo " \n"; } echo "
\n"; echo $text['description-enabled']."\n"; echo "
\n"; echo " ".$text['label-description']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-description']."\n"; echo "
"; echo "
"; echo "

"; if ($action == "update") { echo "\n"; echo "\n"; } echo "\n"; echo "
"; if (empty($_REQUEST["id"]) && !empty($_REQUEST["default_setting_category"])) { echo ""; } echo "\n"; //include the footer require_once "resources/footer.php"; ?>