default_settings.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558
  1. <?php
  2. /*
  3. FusionPBX
  4. Version: MPL 1.1
  5. The contents of this file are subject to the Mozilla Public License Version
  6. 1.1 (the "License"); you may not use this file except in compliance with
  7. the License. You may obtain a copy of the License at
  8. http://www.mozilla.org/MPL/
  9. Software distributed under the License is distributed on an "AS IS" basis,
  10. WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11. for the specific language governing rights and limitations under the
  12. License.
  13. The Original Code is FusionPBX
  14. The Initial Developer of the Original Code is
  15. Mark J Crane <[email protected]>
  16. Portions created by the Initial Developer are Copyright (C) 2008 - 2022
  17. the Initial Developer. All Rights Reserved.
  18. Contributor(s):
  19. Mark J Crane <[email protected]>
  20. */
  21. //set the include path
  22. $conf = glob("{/usr/local/etc,/etc}/fusionpbx/config.conf", GLOB_BRACE);
  23. set_include_path(parse_ini_file($conf[0])['document.root']);
  24. //includes files
  25. require_once "resources/require.php";
  26. require_once "resources/check_auth.php";
  27. //check permissions
  28. if (permission_exists('default_setting_view')) {
  29. //access granted
  30. }
  31. else {
  32. echo "access denied";
  33. exit;
  34. }
  35. //add multi-lingual support
  36. $language = new text;
  37. $text = $language->get();
  38. //get the http post data
  39. $search = $_REQUEST['search'] ?? '';
  40. $default_setting_category = $_REQUEST['default_setting_category'] ?? '';
  41. if (is_array($_POST['default_settings'])) {
  42. $action = $_POST['action'];
  43. $domain_uuid = $_POST['domain_uuid'];
  44. $default_settings = $_POST['default_settings'];
  45. } else {
  46. $action = '';
  47. $domain_uuid = '';
  48. $default_settings = '';
  49. }
  50. //sanitize the variables
  51. $action = preg_replace('#[^a-zA-Z0-9_\-\.]#', '', $action);
  52. $search = preg_replace('#[^a-zA-Z0-9_\-\. ]#', '', $search);
  53. $default_setting_category = preg_replace('#[^a-zA-Z0-9_\-\.]#', '', $default_setting_category);
  54. //build the query string
  55. $query_string = '';
  56. if ($search != '') {
  57. $query_string .= 'search='.urlencode($search);
  58. }
  59. if ($default_setting_category != '') {
  60. if ($query_string == '') { $query_string = ''; } else { $query_string .= '&'; }
  61. $query_string .= 'default_setting_category='.urlencode($default_setting_category);
  62. }
  63. //process the http post data by action
  64. if ($action != '' && is_array($default_settings) && @sizeof($default_settings) != 0) {
  65. switch ($action) {
  66. case 'copy':
  67. if (permission_exists('default_setting_add')) {
  68. $obj = new default_settings;
  69. $obj->domain_uuid = $domain_uuid;
  70. $obj->copy($default_settings);
  71. }
  72. break;
  73. case 'toggle':
  74. if (permission_exists('default_setting_edit')) {
  75. $obj = new default_settings;
  76. $obj->toggle($default_settings);
  77. }
  78. break;
  79. case 'delete':
  80. if (permission_exists('default_setting_delete')) {
  81. $obj = new default_settings;
  82. $obj->delete($default_settings);
  83. }
  84. break;
  85. }
  86. header('Location: default_settings.php?'.($query_string != '' ? $query_string : null));
  87. exit;
  88. }
  89. //get order and order by
  90. $order_by = $_GET["order_by"];
  91. $order = $_GET["order"];
  92. //get the count
  93. $sql = "select count(default_setting_uuid) from v_default_settings ";
  94. if (isset($search) && !empty($search)) {
  95. $sql .= "where (";
  96. $sql .= " lower(default_setting_category) like :search ";
  97. $sql .= " or lower(default_setting_subcategory) like :search ";
  98. $sql .= " or lower(default_setting_name) like :search ";
  99. $sql .= " or lower(default_setting_value) like :search ";
  100. $sql .= " or lower(default_setting_description) like :search ";
  101. $sql .= ") ";
  102. $parameters['search'] = '%'.$search.'%';
  103. }
  104. if (isset($default_setting_category) && !empty($default_setting_category)) {
  105. $sql .= (stripos($sql,'WHERE') === false) ? 'where ' : 'and ';
  106. $sql .= "lower(default_setting_category) = :default_setting_category ";
  107. $parameters['default_setting_category'] = strtolower($default_setting_category);
  108. }
  109. $database = new database;
  110. $num_rows = $database->select($sql, $parameters, 'column');
  111. //get the list
  112. $sql = "select default_setting_uuid, default_setting_category, default_setting_subcategory, default_setting_name, ";
  113. $sql .= "default_setting_value, cast(default_setting_enabled as text), default_setting_description ";
  114. $sql .= "from v_default_settings ";
  115. if (isset($search) && !empty($search)) {
  116. $sql .= "where (";
  117. $sql .= " lower(default_setting_category) like :search ";
  118. $sql .= " or lower(default_setting_subcategory) like :search ";
  119. $sql .= " or lower(default_setting_name) like :search ";
  120. $sql .= " or lower(default_setting_value) like :search ";
  121. $sql .= " or lower(default_setting_description) like :search ";
  122. $sql .= ") ";
  123. $parameters['search'] = '%'.$search.'%';
  124. }
  125. if (isset($default_setting_category) && !empty($default_setting_category)) {
  126. $sql .= (stripos($sql,'WHERE') === false) ? 'where ' : 'and ';
  127. $sql .= "lower(default_setting_category) = :default_setting_category ";
  128. $parameters['default_setting_category'] = strtolower($default_setting_category);
  129. }
  130. $sql .= order_by($order_by, $order, 'default_setting_category, default_setting_subcategory, default_setting_order', 'asc');
  131. //$sql .= limit_offset($rows_per_page, $offset ?? ''); //$offset is always null
  132. $database = new database;
  133. $default_settings = $database->select($sql, $parameters, 'all');
  134. unset($sql, $parameters);
  135. //get default setting categories
  136. $sql = "select ";
  137. $sql .= "distinct(d1.default_setting_category), ";
  138. $sql .= "( ";
  139. $sql .= " select ";
  140. $sql .= " count(d2.default_setting_category) ";
  141. $sql .= " from v_default_settings as d2 ";
  142. $sql .= " where d2.default_setting_category = d1.default_setting_category ";
  143. if (!empty($search)) {
  144. $sql .= " and (";
  145. $sql .= " lower(d2.default_setting_category) like :search ";
  146. $sql .= " or lower(d2.default_setting_subcategory) like :search ";
  147. $sql .= " or lower(d2.default_setting_name) like :search ";
  148. $sql .= " or lower(d2.default_setting_value) like :search ";
  149. $sql .= " or lower(d2.default_setting_description) like :search ";
  150. $sql .= " ) ";
  151. $parameters['search'] = '%'.$search.'%';
  152. }
  153. $sql .= ") as quantity ";
  154. $sql .= "from v_default_settings as d1 ";
  155. $sql .= "order by d1.default_setting_category asc ";
  156. $database = new database;
  157. $rows = $database->select($sql, $parameters, 'all');
  158. if (is_array($rows) && @sizeof($rows) != 0) {
  159. foreach ($rows as $row) {
  160. $default_setting_categories[$row['default_setting_category']] += $row['quantity'];
  161. }
  162. }
  163. unset($sql, $rows, $row);
  164. //get the list of categories
  165. if (is_array($default_setting_categories) && @sizeof($default_setting_categories) != 0) {
  166. foreach ($default_setting_categories as $default_setting_category => $quantity) {
  167. $category = strtolower($default_setting_category);
  168. switch ($category) {
  169. case "api" : $category = "API"; break;
  170. case "cdr" : $category = "CDR"; break;
  171. case "ldap" : $category = "LDAP"; break;
  172. case "ivr_menu" : $category = "IVR Menu"; break;
  173. default:
  174. $category = str_replace("_", " ", $category);
  175. $category = str_replace("-", " ", $category);
  176. $category = ucwords($category);
  177. }
  178. $categories[$default_setting_category]['formatted'] = $category;
  179. $categories[$default_setting_category]['count'] = $quantity;
  180. }
  181. ksort($categories);
  182. unset($default_setting_categories, $default_setting_category, $category);
  183. }
  184. //get the list of installed apps from the core and mod directories
  185. $config_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/app_config.php");
  186. $x=0;
  187. foreach ($config_list as $config_path) {
  188. include($config_path);
  189. $x++;
  190. }
  191. $x = 0;
  192. foreach ($apps as $app) {
  193. if (is_array($app['default_settings'])) {
  194. foreach ($app['default_settings'] as $setting) {
  195. $setting_array[$x] = ($setting);
  196. $setting_array[$x]['app_uuid'] = $app['uuid'];
  197. $x++;
  198. }
  199. }
  200. }
  201. //create a function to find matching row in array and return the row or boolean
  202. function find_in_array($search_array, $field, $value, $type = 'boolean') {
  203. foreach($search_array as $row) {
  204. if ($row[$field] == $value) {
  205. if ($type == 'boolean') {
  206. return true;
  207. }
  208. if ($type == 'row') {
  209. return $row;
  210. }
  211. break;
  212. }
  213. }
  214. if ($type == 'boolean') {
  215. return false;
  216. }
  217. }
  218. //create token
  219. $object = new token;
  220. $token = $object->create($_SERVER['PHP_SELF']);
  221. //include the header
  222. $document['title'] = $text['title-default_settings'];
  223. require_once "resources/header.php";
  224. //copy settings javascript
  225. if (permission_exists("domain_select") && permission_exists("domain_setting_add") && count($_SESSION['domains']) > 1) {
  226. echo "<script language='javascript' type='text/javascript'>\n";
  227. echo " function show_domains() {\n";
  228. echo " document.getElementById('action').value = 'copy';\n";
  229. echo " document.getElementById('btn_copy').style.display = 'none'; \n";
  230. echo " document.getElementById('btn_copy_cancel').style.display = 'inline'; \n";
  231. echo " document.getElementById('target_domain_uuid').style.display = 'inline'; \n";
  232. echo " document.getElementById('btn_paste').style.display = 'inline'; \n";
  233. echo " }";
  234. echo " function hide_domains() {\n";
  235. echo " document.getElementById('action').value = '';\n";
  236. echo " document.getElementById('btn_copy_cancel').style.display = 'none'; \n";
  237. echo " document.getElementById('target_domain_uuid').style.display = 'none'; \n";
  238. echo " document.getElementById('target_domain_uuid').selectedIndex = 0;\n";
  239. echo " document.getElementById('btn_paste').style.display = 'none'; \n";
  240. echo " document.getElementById('btn_copy').style.display = 'inline'; \n";
  241. echo " }\n";
  242. echo "</script>";
  243. }
  244. //show the content
  245. echo "<div class='action_bar' id='action_bar'>\n";
  246. echo " <div class='heading'><b>".$text['title-default_settings']." (".number_format($num_rows).")</b></div>\n";
  247. echo " <div class='actions'>\n";
  248. echo button::create(['type'=>'button','label'=>$text['label-domain'],'icon'=>$_SESSION['theme']['button_icon_domain'],'style'=>'','link'=>PROJECT_PATH.'/core/domain_settings/domain_settings.php?id='.$domain_uuid]);
  249. echo button::create(['label'=>$text['button-reload'],'icon'=>$_SESSION['theme']['button_icon_reload'],'type'=>'button','id'=>'button_reload','link'=>'default_settings_reload.php'.($search != '' ? '?search='.urlencode($search) : null),'style'=>'margin-right: 15px;']);
  250. if (permission_exists('default_setting_add')) {
  251. echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'default_setting_edit.php?'.$query_string]);
  252. }
  253. if (permission_exists('default_setting_add') && $default_settings) {
  254. if (permission_exists("domain_select") && permission_exists("domain_setting_add") && count($_SESSION['domains']) > 1) {
  255. echo button::create(['type'=>'button','label'=>$text['button-copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display: none;','icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','onclick'=>'show_domains();']);
  256. echo button::create(['type'=>'button','label'=>$text['button-cancel'],'id'=>'btn_copy_cancel','icon'=>$_SESSION['theme']['button_icon_cancel'],'style'=>'display: none;','onclick'=>'hide_domains();']);
  257. echo "<select name='domain_uuid' class='formfld' style='display: none; width: auto;' id='target_domain_uuid' onchange=\"document.getElementById('domain_uuid').value = this.options[this.selectedIndex].value;\">\n";
  258. echo " <option value=''>(".$text['label-duplicate'].")</option>\n";
  259. echo " <option value='' selected='selected' disabled='disabled'>".$text['label-domain']."...</option>\n";
  260. foreach ($_SESSION['domains'] as $domain) {
  261. echo " <option value='".escape($domain["domain_uuid"])."'>".escape($domain["domain_name"])."</option>\n";
  262. }
  263. echo " </select>";
  264. echo button::create(['type'=>'button','label'=>$text['button-paste'],'icon'=>$_SESSION['theme']['button_icon_paste'],'id'=>'btn_paste','style'=>'display: none;','onclick'=>"if (confirm('".$text['confirm-copy']."')) { list_action_set('copy'); list_form_submit('form_list'); } else { this.blur(); return false; }"]);
  265. }
  266. }
  267. if (permission_exists('default_setting_edit') && $default_settings) {
  268. echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'id'=>'btn_toggle','name'=>'btn_toggle','style'=>'display: none;','onclick'=>"modal_open('modal-toggle','btn_toggle');"]);
  269. }
  270. if (permission_exists('default_setting_delete') && $default_settings) {
  271. echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
  272. }
  273. echo "<form id='form_search' class='inline' method='get'>\n";
  274. if (is_array($categories) && @sizeof($categories) != 0) {
  275. echo "<select name='default_setting_category' class='formfld' style='width: auto; margin-left: 15px;' id='select_category' onchange='this.form.submit();'>\n";
  276. echo " <option value=''>".$text['label-category']."...</option>\n";
  277. echo " <option value=''>".$text['label-all']."</option>\n";
  278. foreach ($categories as $category_name => $category) {
  279. $selected = ($_GET['default_setting_category'] == $category_name) ? " selected='selected'" : "";
  280. echo " <option value='".escape($category_name)."' $selected>".escape($category['formatted']).($category['count'] ? " (".$category['count'].")" : null)."</option>\n";
  281. }
  282. echo " <option disabled='disabled'>\n";
  283. echo " <option value=''>".$text['label-all']."</option>\n";
  284. echo " </select>";
  285. }
  286. echo "<input type='text' class='txt list-search' name='search' id='search' style='margin-left: 0 !important;' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown=''>";
  287. echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search']);
  288. //echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'default_settings.php','style'=>($search == '' ? 'display: none;' : null)]);
  289. if ($paging_controls_mini != '') {
  290. echo "<span style='margin-left: 15px;'>".$paging_controls_mini."</span>\n";
  291. }
  292. echo " </form>\n";
  293. echo " </div>\n";
  294. echo " <div style='clear: both;'></div>\n";
  295. echo "</div>\n";
  296. if (permission_exists('default_setting_edit') && $default_settings) {
  297. echo modal::create(['id'=>'modal-toggle','type'=>'toggle','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_toggle','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('toggle'); list_form_submit('form_list');"])]);
  298. }
  299. if (permission_exists('default_setting_delete') && $default_settings) {
  300. echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
  301. }
  302. echo $text['description-default_settings']."\n";
  303. echo "<br /><br />\n";
  304. echo "<form id='form_list' method='post'>\n";
  305. echo "<input type='hidden' id='action' name='action' value=''>\n";
  306. echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
  307. echo "<input type='hidden' name='domain_uuid' id='domain_uuid'>";
  308. if (is_array($default_settings) && @sizeof($default_settings) != 0) {
  309. $x = 0;
  310. foreach ($default_settings as $row) {
  311. $default_setting_category = strtolower($row['default_setting_category']);
  312. $default_setting_category = preg_replace('#[^a-zA-Z0-9_\-\.]#', '', $default_setting_category);
  313. $label_default_setting_category = $row['default_setting_category'];
  314. $label_default_setting_category = preg_replace('#[^a-zA-Z0-9_\-\. ]#', '', $label_default_setting_category);
  315. //check if the default setting uuid exists in the array
  316. $field = find_in_array($setting_array, 'default_setting_uuid', $row['default_setting_uuid'], 'row');
  317. unset($setting_bold, $enabled_bold, $default_value, $default_enabled);
  318. if (is_array($field)) {
  319. if ($row['default_setting_value'] !== $field['default_setting_value']) {
  320. $setting_bold = 'font-weight:bold;';
  321. }
  322. if (!empty($field['default_setting_value'])) {
  323. $default_value = 'Default: '.$field['default_setting_value'];
  324. }
  325. else {
  326. $default_value = 'Default: null';
  327. }
  328. if ($row['default_setting_enabled'] != $field['default_setting_enabled']) {
  329. $default_enabled = $field['default_setting_enabled'];
  330. $enabled_bold = true;
  331. }
  332. }
  333. else {
  334. $default_value = 'Custom';
  335. $setting_bold = 'font-weight:bold;';
  336. }
  337. unset($field);
  338. switch (strtolower($label_default_setting_category)) {
  339. case "api" : $label_default_setting_category = "API"; break;
  340. case "cdr" : $label_default_setting_category = "CDR"; break;
  341. case "ldap" : $label_default_setting_category = "LDAP"; break;
  342. case "ivr_menu" : $label_default_setting_category = "IVR Menu"; break;
  343. default:
  344. $label_default_setting_category = str_replace("_", " ", $label_default_setting_category);
  345. $label_default_setting_category = str_replace("-", " ", $label_default_setting_category);
  346. $label_default_setting_category = ucwords($label_default_setting_category);
  347. }
  348. if ($previous_default_setting_category != $row['default_setting_category']) {
  349. if ($previous_default_setting_category != '') {
  350. echo "</table>\n";
  351. echo "<br />\n";
  352. echo "</div>\n";
  353. }
  354. echo "<div class='category' id='category_".$default_setting_category."'>\n";
  355. echo "<b>".escape($label_default_setting_category)."</b><br>\n";
  356. echo "<table class='list'>\n";
  357. echo "<tr class='list-header'>\n";
  358. if (permission_exists('default_setting_add') || permission_exists('default_setting_edit') || permission_exists('default_setting_delete')) {
  359. echo " <th class='checkbox'>\n";
  360. echo " <input type='checkbox' id='checkbox_all_".$default_setting_category."' name='checkbox_all' onclick=\"list_all_toggle('".$default_setting_category."'); checkbox_on_change(this);\">\n";
  361. echo " </th>\n";
  362. }
  363. if ($_GET['show'] == 'all' && permission_exists('default_setting_all')) {
  364. echo th_order_by('domain_name', $text['label-domain'], $order_by, $order);
  365. }
  366. echo th_order_by('default_setting_subcategory', $text['label-subcategory'], $order_by, $order, null, "class='pct-35'");
  367. echo th_order_by('default_setting_name', $text['label-type'], $order_by, $order, null, "class='pct-10 hide-sm-dn'");
  368. echo th_order_by('default_setting_value', $text['label-value'], $order_by, $order, null, "class='pct-30'");
  369. echo th_order_by('default_setting_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
  370. echo " <th class='pct-25 hide-sm-dn'>".$text['label-description']."</th>\n";
  371. if (permission_exists('default_setting_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
  372. echo " <td class='action-button'>&nbsp;</td>\n";
  373. }
  374. echo "</tr>\n";
  375. }
  376. if (permission_exists('default_setting_edit')) {
  377. $list_row_url = "default_setting_edit.php?id=".urlencode($row['default_setting_uuid']).'&'.$query_string;
  378. }
  379. echo "<tr class='list-row' href='".$list_row_url."'>\n";
  380. if (permission_exists('default_setting_add') || permission_exists('default_setting_edit') || permission_exists('default_setting_delete')) {
  381. echo " <td class='checkbox'>\n";
  382. echo " <input type='checkbox' name='default_settings[$x][checked]' id='checkbox_".$x."' class='checkbox_".$default_setting_category."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all_".$default_setting_category."').checked = false; }\">\n";
  383. echo " <input type='hidden' name='default_settings[$x][uuid]' value='".escape($row['default_setting_uuid'])."' />\n";
  384. echo " </td>\n";
  385. }
  386. if ($_GET['show'] == 'all' && permission_exists('default_setting_all')) {
  387. echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
  388. }
  389. echo " <td class='overflow no-wrap'>";
  390. if (permission_exists('default_setting_edit')) {
  391. echo "<a href='".$list_row_url."'>".escape($row['default_setting_subcategory'])."</a>";
  392. }
  393. else {
  394. echo escape($row['default_setting_subcategory']);
  395. }
  396. echo " </td>\n";
  397. $setting_types = ['Array','Boolean','Code','Dir','Name','Numeric','Text','UUID'];
  398. echo " <td class='hide-sm-dn'>".$setting_types[array_search(strtolower($row['default_setting_name']), array_map('strtolower',$setting_types))]."</td>\n";
  399. echo " <td class='overflow no-wrap' title=\"".escape($default_value)."\" style=\"".$setting_bold."\">\n";
  400. $category = $row['default_setting_category'];
  401. $subcategory = $row['default_setting_subcategory'];
  402. $name = $row['default_setting_name'];
  403. if ($category == "domain" && $subcategory == "menu" && $name == "uuid" ) {
  404. $sql = "select * from v_menus ";
  405. $sql .= "where menu_uuid = :menu_uuid ";
  406. $parameters['menu_uuid'] = $row['default_setting_value'];
  407. $database = new database;
  408. $sub_result = $database->select($sql, $parameters, 'all');
  409. foreach ($sub_result as &$sub_row) {
  410. echo $sub_row["menu_language"]." - ".$sub_row["menu_name"]."\n";
  411. }
  412. unset($sql, $sub_result, $sub_row);
  413. }
  414. else if ($category == "domain" && $subcategory == "template" && $name == "name" ) {
  415. echo " ".ucwords($row['default_setting_value']);
  416. }
  417. else if ($category == "domain" && $subcategory == "time_format" && $name == "text" ) {
  418. switch ($row['default_setting_value']) {
  419. case '12h': echo $text['label-12-hour']; break;
  420. case '24h': echo $text['label-24-hour']; break;
  421. }
  422. }
  423. else if (
  424. ( $category == "theme" && $subcategory == "menu_main_icons" && $name == "boolean" ) ||
  425. ( $category == "theme" && $subcategory == "menu_sub_icons" && $name == "boolean" ) ||
  426. ( $category == "theme" && $subcategory == "menu_brand_type" && $name == "text" ) ||
  427. ( $category == "theme" && $subcategory == "menu_style" && $name == "text" ) ||
  428. ( $category == "theme" && $subcategory == "menu_position" && $name == "text" ) ||
  429. ( $category == "theme" && $subcategory == "body_header_brand_type" && $name == "text" ) ||
  430. ( $category == "theme" && $subcategory == "logo_align" && $name == "text" )
  431. ) {
  432. echo " ".$text['label-'.$row['default_setting_value']];
  433. }
  434. else if ($category == 'theme' && $subcategory == 'custom_css_code' && $name == 'text') {
  435. echo " [...]\n";
  436. }
  437. else if ($subcategory == 'password' || substr_count($subcategory, '_password') > 0 || $category == "login" && $subcategory == "password_reset_key" && $name == "text" || substr_count($subcategory, '_secret') > 0) {
  438. echo " ".str_repeat('*', strlen($row['default_setting_value'] ?? ''));
  439. }
  440. else if ($category == 'theme' && $subcategory == 'button_icons' && $name == 'text') {
  441. echo " ".$text['option-button_icons_'.$row['default_setting_value']]."\n";
  442. }
  443. else if ($category == 'theme' && $subcategory == 'menu_side_state' && $name == 'text') {
  444. echo " ".$text['option-'.$row['default_setting_value']]."\n";
  445. }
  446. else if ($category == 'theme' && $subcategory == 'menu_side_toggle' && $name == 'text') {
  447. echo " ".$text['option-'.$row['default_setting_value']]."\n";
  448. }
  449. else if ($category == 'theme' && $subcategory == 'menu_side_toggle_body_width' && $name == 'text') {
  450. echo " ".$text['option-'.$row['default_setting_value']]."\n";
  451. }
  452. else if ($category == 'theme' && $subcategory == 'menu_side_item_main_sub_close' && $name == 'text') {
  453. echo " ".$text['option-'.$row['default_setting_value']]."\n";
  454. }
  455. else if ($category == 'theme' && $subcategory == 'input_toggle_style' && $name == 'text') {
  456. echo " ".$text['option-'.$row['default_setting_value']]."\n";
  457. }
  458. else if (substr_count($subcategory, "_color") > 0 && ($name == "text" || $name == 'array')) {
  459. echo " ".(img_spacer('15px', '15px', 'background: '.escape($row['default_setting_value']).'; margin-right: 4px; vertical-align: middle; border: 1px solid '.(color_adjust($row['default_setting_value'], -0.18)).'; padding: -1px;'));
  460. echo "<span style=\"font-family: 'Courier New'; line-height: 6pt;\">".escape($row['default_setting_value'])."</span>\n";
  461. }
  462. else if ($category == 'users' && $subcategory == 'username_format' && $name == 'text') {
  463. echo " ".$text['option-username_format_'.$row['default_setting_value']]."\n";
  464. }
  465. else if ($category == 'recordings' && $subcategory == 'storage_type' && $name == 'text') {
  466. echo " ".$text['label-'.$row['default_setting_value']]."\n";
  467. }
  468. else if ($category == 'destinations' && $subcategory == 'dialplan_mode' && $name == 'text') {
  469. echo " ".$text['label-'.$row['default_setting_value']]."\n";
  470. }
  471. else if ($category == 'destinations' && $subcategory == 'select_mode' && $name == 'text') {
  472. echo " ".$text['label-'.$row['default_setting_value']]."\n";
  473. }
  474. else if ($category == 'voicemail' && ($subcategory == 'message_caller_id_number' || $subcategory == 'message_date_time') && $name == 'text') {
  475. echo " ".$text['label-'.$row['default_setting_value']]."\n";
  476. }
  477. else if ($row['default_setting_value'] == 'true' || $row['default_setting_value'] == 'false') {
  478. echo " ".$text['label-'.$row['default_setting_value']]."\n";
  479. }
  480. else {
  481. echo " ".escape($row['default_setting_value'])."\n";
  482. }
  483. echo " </td>\n";
  484. if (permission_exists('default_setting_edit')) {
  485. echo " <td class='no-link center'>\n";
  486. if (isset($enabled_bold)) {
  487. echo button::create(['type'=>'submit','class'=>'link','style'=>'font-weight:bold', 'label'=>$text['label-'.$row['default_setting_enabled']],'title'=>$text['button-toggle'],'onclick'=>"list_self_check('checkbox_".$x."'); list_action_set('toggle'); list_form_submit('form_list')"]);
  488. }
  489. else {
  490. echo button::create(['type'=>'submit','class'=>'link','label'=>$text['label-'.$row['default_setting_enabled']],'title'=>$text['button-toggle'],'onclick'=>"list_self_check('checkbox_".$x."'); list_action_set('toggle'); list_form_submit('form_list')"]);
  491. }
  492. }
  493. else {
  494. echo " <td class='center' title=\"".escape($default_enabled)."\" style=\"".$setting_bold."\">\n";
  495. echo $text['label-'.$row['default_setting_enabled']];
  496. }
  497. echo " </td>\n";
  498. echo " <td class='description overflow hide-sm-dn' title=\"".escape($row['default_setting_description'])."\">".escape($row['default_setting_description'])."</td>\n";
  499. if (permission_exists('default_setting_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
  500. echo " <td class='action-button'>\n";
  501. echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
  502. echo " </td>\n";
  503. }
  504. echo "</tr>\n";
  505. //set the previous category
  506. $previous_default_setting_category = $row['default_setting_category'];
  507. $x++;
  508. }
  509. unset($default_settings);
  510. }
  511. echo "</table>\n";
  512. echo "<br />\n";
  513. echo "</div>\n";
  514. echo "<div align='center'>".$paging_controls."</div>\n";
  515. echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
  516. echo "</form>\n";
  517. //include the footer
  518. require_once "resources/footer.php";
  519. ?>