user_setting_edit.php 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  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-2019
  17. the Initial Developer. All Rights Reserved.
  18. Contributor(s):
  19. Mark J Crane <[email protected]>
  20. */
  21. //includes
  22. require_once "root.php";
  23. require_once "resources/require.php";
  24. require_once "resources/check_auth.php";
  25. //check permissions
  26. if (permission_exists('user_setting_add') || permission_exists('user_setting_edit')) {
  27. //access granted
  28. }
  29. else {
  30. echo "access denied";
  31. exit;
  32. }
  33. //add multi-lingual support
  34. $language = new text;
  35. $text = $language->get();
  36. //retrieve allowed setting categories
  37. if (!permission_exists('user_setting_category_edit')) {
  38. if (is_array($_SESSION['settings']) && sizeof($_SESSION['settings']) > 0) {
  39. foreach ($_SESSION['groups'] as $index => $group) {
  40. $group_name = $group['group_name'];
  41. if (is_array($_SESSION['settings'][$group_name]) && sizeof($_SESSION['settings'][$group_name]) > 0) {
  42. foreach ($_SESSION['settings'][$group_name] as $category) {
  43. $categories[] = strtolower($category);
  44. }
  45. }
  46. }
  47. }
  48. if (is_array($categories) && sizeof($categories) > 0) {
  49. $allowed_categories = array_unique($categories);
  50. sort($allowed_categories, SORT_NATURAL);
  51. }
  52. unset($group, $group_name, $index, $category, $categories);
  53. }
  54. //action add or update
  55. if (is_uuid($_REQUEST["id"])) {
  56. $action = "update";
  57. $user_setting_uuid = $_REQUEST["id"];
  58. }
  59. else {
  60. $action = "add";
  61. }
  62. //set the user_uuid
  63. if (is_uuid($_GET["user_uuid"])) {
  64. $user_uuid = $_GET["user_uuid"];
  65. }
  66. //get http post variables and set them to php variables
  67. if (count($_REQUEST) > 0) {
  68. $user_setting_category = strtolower($_REQUEST["user_setting_category"]);
  69. $user_setting_subcategory = strtolower($_POST["user_setting_subcategory"]);
  70. $user_setting_name = strtolower($_POST["user_setting_name"]);
  71. $user_setting_value = $_POST["user_setting_value"];
  72. $user_setting_order = $_POST["user_setting_order"];
  73. $user_setting_enabled = strtolower($_POST["user_setting_enabled"]);
  74. $user_setting_description = $_POST["user_setting_description"];
  75. }
  76. if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
  77. $msg = '';
  78. if ($action == "update") {
  79. $user_setting_uuid = $_POST["user_setting_uuid"];
  80. }
  81. //validate the token
  82. $token = new token;
  83. if (!$token->validate($_SERVER['PHP_SELF'])) {
  84. message::add($text['message-invalid_token'],'negative');
  85. header('Location: ../users/user_edit.php?id='.$user_uuid);
  86. exit;
  87. }
  88. //check for all required/authorized data
  89. 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']."<br>\n"; }
  90. if (strlen($user_setting_subcategory) == 0) { $msg .= $text['message-required'].$text['label-subcategory']."<br>\n"; }
  91. if (strlen($user_setting_name) == 0) { $msg .= $text['message-required'].$text['label-type']."<br>\n"; }
  92. //if (strlen($user_setting_value) == 0) { $msg .= $text['message-required'].$text['label-value']."<br>\n"; }
  93. if (strlen($user_setting_order) == 0) { $msg .= $text['message-required'].$text['label-order']."<br>\n"; }
  94. if (strlen($user_setting_enabled) == 0) { $msg .= $text['message-required'].$text['label-enabled']."<br>\n"; }
  95. //if (strlen($user_setting_description) == 0) { $msg .= $text['message-required'].$text['label-description']."<br>\n"; }
  96. if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
  97. require_once "resources/header.php";
  98. require_once "resources/persist_form_var.php";
  99. echo "<div align='center'>\n";
  100. echo "<table><tr><td>\n";
  101. echo $msg."<br />";
  102. echo "</td></tr></table>\n";
  103. persistformvar($_POST);
  104. echo "</div>\n";
  105. require_once "resources/footer.php";
  106. return;
  107. }
  108. //add or update the database
  109. if ($_POST["persistformvar"] != "true") {
  110. // fix null
  111. $user_setting_order = ($user_setting_order != '') ? $user_setting_order : 'null';
  112. //update switch timezone variables
  113. if ($user_setting_category == "domain" && $user_setting_subcategory == "time_zone" && $user_setting_name == "name" ) {
  114. //get the dialplan_uuid
  115. $sql = "select dialplan_uuid from v_dialplans ";
  116. $sql .= "where domain_uuid = :domain_uuid ";
  117. $sql .= "and app_uuid = '9f356fe7-8cf8-4c14-8fe2-6daf89304458' ";
  118. $parameters['domain_uuid'] = $domain_uuid;
  119. $database = new database;
  120. $dialplan_uuid = $database->select($sql, $parameters, 'column');
  121. unset($sql, $parameters);
  122. //get the action
  123. $sql = "select dialplan_detail_uuid from v_dialplan_details ";
  124. $sql .= "where domain_uuid = :domain_uuid ";
  125. $sql .= "and dialplan_uuid = :dialplan_uuid ";
  126. $sql .= "and dialplan_detail_tag = 'action' ";
  127. $sql .= "and dialplan_detail_type = 'set' ";
  128. $sql .= "and dialplan_detail_data like 'timezone=%' ";
  129. $parameters['domain_uuid'] = $domain_uuid;
  130. $parameters['dialplan_uuid'] = $dialplan_uuid;
  131. $database = new database;
  132. $dialplan_detail_uuid = $database->select($sql, $parameters, 'column');
  133. if (is_uuid($dialplan_detail_uuid)) {
  134. $detail_action = "update";
  135. }
  136. unset($sql, $parameters);
  137. //update the timezone
  138. if ($detail_action == "update") {
  139. $p = new permissions;
  140. $p->add('dialplan_detail_edit', 'temp');
  141. $array['dialplan_details'][0]['dialplan_detail_uuid'] = $dialplan_detail_uuid;
  142. $array['dialplan_details'][0]['dialplan_detail_data'] = 'timezone='.$user_setting_value;
  143. }
  144. else {
  145. $p = new permissions;
  146. $p->add('dialplan_detail_add', 'temp');
  147. $array['dialplan_details'][0]['domain_uuid'] = $domain_uuid;
  148. $array['dialplan_details'][0]['dialplan_detail_uuid'] = uuid();
  149. $array['dialplan_details'][0]['dialplan_uuid'] = $dialplan_uuid;
  150. $array['dialplan_details'][0]['dialplan_detail_tag'] = 'action';
  151. $array['dialplan_details'][0]['dialplan_detail_type'] = 'set';
  152. $array['dialplan_details'][0]['dialplan_detail_data'] = 'timezone='.$user_setting_value;
  153. $array['dialplan_details'][0]['dialplan_detail_inline'] = 'true';
  154. $array['dialplan_details'][0]['dialplan_detail_group'] = 0;
  155. }
  156. if (is_array($array) && sizeof($array) != 0) {
  157. $database = new database;
  158. $database->app_name = 'user_settings';
  159. $database->app_uuid = '3a3337f7-78d1-23e3-0cfd-f14499b8ed97';
  160. $database->save($array);
  161. unset($array);
  162. $p->delete('dialplan_detail_edit', 'temp');
  163. $p->delete('dialplan_detail_add', 'temp');
  164. }
  165. }
  166. //add the user setting
  167. if ($action == "add" && permission_exists('user_setting_add')) {
  168. $array['user_settings'][0]['user_setting_uuid'] = uuid();
  169. }
  170. //update the user setting
  171. if ($action == "update" && permission_exists('user_setting_edit')) {
  172. $array['user_settings'][0]['user_setting_uuid'] = $user_setting_uuid;
  173. }
  174. //execute add or update
  175. if (is_array($array) && sizeof($array) != 0) {
  176. $array['user_settings'][0]['user_uuid'] = $user_uuid;
  177. $array['user_settings'][0]['domain_uuid'] = $domain_uuid;
  178. $array['user_settings'][0]['user_setting_category'] = $user_setting_category;
  179. $array['user_settings'][0]['user_setting_subcategory'] = $user_setting_subcategory;
  180. $array['user_settings'][0]['user_setting_name'] = $user_setting_name;
  181. $array['user_settings'][0]['user_setting_value'] = $user_setting_value;
  182. $array['user_settings'][0]['user_setting_order'] = $user_setting_order;
  183. $array['user_settings'][0]['user_setting_enabled'] = $user_setting_enabled;
  184. $array['user_settings'][0]['user_setting_description'] = $user_setting_description;
  185. $database = new database;
  186. $database->app_name = 'user_settings';
  187. $database->app_uuid = '3a3337f7-78d1-23e3-0cfd-f14499b8ed97';
  188. $database->save($array);
  189. unset($array);
  190. }
  191. //update time zone
  192. if ($user_setting_category == "domain" && $user_setting_subcategory == "time_zone" && $user_setting_name == "name" && strlen($user_setting_value) > 0 ) {
  193. $sql = "select * from v_dialplans ";
  194. $sql .= "where app_uuid = '34dd307b-fffe-4ead-990c-3d070e288126' ";
  195. $sql .= "and domain_uuid = :domain_uuid ";
  196. $parameters['domain_uuid'] = $_SESSION["domain_uuid"];
  197. $database = new database;
  198. $result = $database->select($sql, $parameters, 'all');
  199. unset($sql, $parameters);
  200. $time_zone_found = false;
  201. if (is_array($result) && sizeof($result) != 0) {
  202. foreach ($result as &$row) {
  203. //get the dialplan_uuid
  204. $dialplan_uuid = $row["dialplan_uuid"];
  205. //get the dialplan details
  206. $sql = "select * from v_dialplan_details ";
  207. $sql .= "where dialplan_uuid = :dialplan_uuid ";
  208. $sql .= "and domain_uuid = :domain_uuid ";
  209. $parameters['dialplan_uuid'] = $dialplan_uuid;
  210. $parameters['domain_uuid'] = $_SESSION["domain_uuid"];
  211. $database = new database;
  212. $sub_result = $database->select($sql, $parameters, 'all');
  213. if (is_array($sub_result) && sizeof($sub_result) != 0) {
  214. foreach ($sub_result as $sub_row) {
  215. $dialplan_detail_uuid = $sub_row["dialplan_detail_uuid"];
  216. $dialplan_detail_tag = $sub_row["dialplan_detail_tag"]; //action //condition
  217. $dialplan_detail_type = $sub_row["dialplan_detail_type"]; //set
  218. $dialplan_detail_data = $sub_row["dialplan_detail_data"];
  219. $dialplan_detail_group = $sub_row["dialplan_detail_group"];
  220. if ($dialplan_detail_tag == "action" && $dialplan_detail_type == "set") {
  221. $data_array = explode("=", $dialplan_detail_data);
  222. if ($data_array[0] == "timezone") {
  223. $time_zone_found = true;
  224. break;
  225. }
  226. }
  227. }
  228. }
  229. unset($sql, $parameters, $sub_result, $sub_row);
  230. //add the time zone
  231. if (!$time_zone_found) {
  232. $dialplan_detail_uuid = "eb3b3a4e-88ea-4306-b2a8-9f52d3c95f2f";
  233. $array['dialplan_details'][0]['domain_uuid'] = $_SESSION["domain_uuid"];
  234. $array['dialplan_details'][0]['dialplan_uuid'] = $dialplan_uuid;
  235. $array['dialplan_details'][0]['dialplan_detail_uuid'] = $dialplan_detail_uuid;
  236. $array['dialplan_details'][0]['dialplan_detail_tag'] = 'action';
  237. $array['dialplan_details'][0]['dialplan_detail_type'] = 'set';
  238. $array['dialplan_details'][0]['dialplan_detail_data'] = 'timezone='.$user_setting_value;
  239. $array['dialplan_details'][0]['dialplan_detail_group'] = strlen($dialplan_detail_group) > 0 ? $dialplan_detail_group : 'null';
  240. $array['dialplan_details'][0]['dialplan_detail_order'] = '15';
  241. $p = new permissions;
  242. $p->add('dialplan_detail_add', 'temp');
  243. $database = new database;
  244. $database->app_name = 'user_settings';
  245. $database->app_uuid = '3a3337f7-78d1-23e3-0cfd-f14499b8ed97';
  246. $database->save($array);
  247. unset($array);
  248. $p->delete('dialplan_detail_add', 'temp');
  249. }
  250. //update the time zone
  251. if ($time_zone_found) {
  252. $array['dialplan_details'][0]['dialplan_detail_uuid'] = $dialplan_detail_uuid;
  253. $array['dialplan_details'][0]['dialplan_detail_data'] = 'timezone='.$user_setting_value;
  254. $array['dialplan_details'][0]['domain_uuid'] = $_SESSION["domain_uuid"];
  255. $array['dialplan_details'][0]['dialplan_uuid'] = $dialplan_uuid;
  256. $p = new permissions;
  257. $p->add('dialplan_detail_edit', 'temp');
  258. $database = new database;
  259. $database->app_name = 'user_settings';
  260. $database->app_uuid = '3a3337f7-78d1-23e3-0cfd-f14499b8ed97';
  261. $database->save($array);
  262. unset($array);
  263. $p->delete('dialplan_detail_edit', 'temp');
  264. }
  265. }
  266. }
  267. }
  268. //redirect the browser
  269. if ($action == "update") {
  270. message::add($text['message-update']);
  271. }
  272. if ($action == "add") {
  273. message::add($text['message-add']);
  274. }
  275. header("Location: /core/users/user_edit.php?id=".$user_uuid);
  276. return;
  277. }
  278. }
  279. //pre-populate the form
  280. if (is_uuid($_GET["id"]) && count($_GET)>0 && $_POST["persistformvar"] != "true") {
  281. $user_setting_uuid = $_GET["id"];
  282. $sql = "select * from v_user_settings ";
  283. $sql .= "where user_uuid = :user_uuid ";
  284. $sql .= "and user_setting_uuid = :user_setting_uuid ";
  285. $parameters['user_uuid'] = $user_uuid;
  286. $parameters['user_setting_uuid'] = $user_setting_uuid;
  287. $database = new database;
  288. $row = $database->select($sql, $parameters, 'row');
  289. if (is_array($row) && sizeof($row) != 0) {
  290. $user_setting_category = $row["user_setting_category"];
  291. $user_setting_subcategory = $row["user_setting_subcategory"];
  292. $user_setting_name = $row["user_setting_name"];
  293. $user_setting_value = $row["user_setting_value"];
  294. $user_setting_order = $row["user_setting_order"];
  295. $user_setting_enabled = $row["user_setting_enabled"];
  296. $user_setting_description = $row["user_setting_description"];
  297. }
  298. unset($sql, $parameters, $row);
  299. }
  300. //create token
  301. $object = new token;
  302. $token = $object->create($_SERVER['PHP_SELF']);
  303. //show the header
  304. require_once "resources/header.php";
  305. if ($action == "update") {
  306. $document['title'] = $text['title-user_setting-edit'];
  307. }
  308. else if ($action == "add") {
  309. $document['title'] = $text['title-user_setting-add'];
  310. }
  311. //show the content
  312. echo "<form name='frm' id='frm' method='post'>\n";
  313. echo "<div class='action_bar' id='action_bar'>\n";
  314. echo " <div class='heading'>";
  315. if ($action == "update") {
  316. echo "<b>".$text['header-user_setting-edit']."</b>";
  317. }
  318. if ($action == "add") {
  319. echo "<b>".$text['header-user_setting-add']."</b>";
  320. }
  321. echo "</div>\n";
  322. echo " <div class='actions'>\n";
  323. 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)]);
  324. echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'onclick'=>'submit_form();']);
  325. echo " </div>\n";
  326. echo " <div style='clear: both;'></div>\n";
  327. echo "</div>\n";
  328. if ($action == "update") {
  329. echo $text['description-user_setting-edit']."\n";
  330. }
  331. if ($action == "add") {
  332. echo $text['description-user_setting-add']."\n";
  333. }
  334. echo "<br /><br />\n";
  335. echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
  336. echo "<tr>\n";
  337. echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
  338. echo " ".$text['label-category']."\n";
  339. echo "</td>\n";
  340. echo "<td width='70%' class='vtable' align='left'>\n";
  341. if (permission_exists('user_setting_category_edit')) {
  342. echo " <input type='text' class='formfld' name='user_setting_category' id='user_setting_category' maxlength='255' value=\"".escape($user_setting_category)."\">\n";
  343. }
  344. else {
  345. echo " <select class='formfld' name='user_setting_category' id='user_setting_category' onchange=\"$('#user_setting_subcategory').trigger('focus');\">\n";
  346. echo " <option value=''></option>\n";
  347. if (is_array($allowed_categories) && sizeof($allowed_categories) > 0) {
  348. foreach ($allowed_categories as $category) {
  349. $selected = ($user_setting_category == $category) ? 'selected' : null;
  350. echo " <option value='".$category."' ".$selected.">".ucwords(str_replace('_',' ',$category))."</option>\n";
  351. }
  352. }
  353. echo " </select>";
  354. }
  355. echo "<br />\n";
  356. echo $text['description-category']."\n";
  357. echo "</td>\n";
  358. echo "</tr>\n";
  359. echo "<tr>\n";
  360. echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
  361. echo " ".$text['label-subcategory']."\n";
  362. echo "</td>\n";
  363. echo "<td class='vtable' align='left'>\n";
  364. echo " <input class='formfld lowercase' type='text' name='user_setting_subcategory' id='user_setting_subcategory' maxlength='255' value=\"".escape($user_setting_subcategory)."\">\n";
  365. echo "<br />\n";
  366. echo $text['description-subcategory']."\n";
  367. echo "</td>\n";
  368. echo "</tr>\n";
  369. echo "<tr>\n";
  370. echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
  371. echo " ".$text['label-type']."\n";
  372. echo "</td>\n";
  373. echo "<td class='vtable' align='left'>\n";
  374. echo " <input class='formfld lowercase' type='text' name='user_setting_name' id='user_setting_name' maxlength='255' value=\"".escape($user_setting_name)."\">\n";
  375. echo "<br />\n";
  376. echo $text['description-type']."\n";
  377. echo "</td>\n";
  378. echo "</tr>\n";
  379. echo "<tr>\n";
  380. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  381. echo " ".$text['label-value']."\n";
  382. echo "</td>\n";
  383. echo "<td class='vtable' align='left'>\n";
  384. if ($user_setting_category == "domain" && $user_setting_subcategory == "menu" && $user_setting_name == "uuid" ) {
  385. echo " <select class='formfld' id='user_setting_value' name='user_setting_value' style=''>\n";
  386. echo " <option value=''></option>\n";
  387. $sql = "select * from v_menus ";
  388. $sql .= "order by menu_language, menu_name asc ";
  389. $database = new database;
  390. $result = $database->select($sql, null, 'all');
  391. if (is_array($result) && sizeof($result) != 0) {
  392. foreach ($result as $row) {
  393. if (strtolower($user_setting_value) == strtolower($row["menu_uuid"])) {
  394. echo " <option value='".strtolower($row["menu_uuid"])."' selected='selected'>".escape($row["menu_language"])." - ".escape($row["menu_name"])."\n";
  395. }
  396. else {
  397. echo " <option value='".strtolower($row["menu_uuid"])."'>".escape($row["menu_language"])." - ".escape($row["menu_name"])."</option>\n";
  398. }
  399. }
  400. }
  401. unset($sql, $result, $row);
  402. echo " </select>\n";
  403. }
  404. else if ($user_setting_category == "domain" && $user_setting_subcategory == "template" && $user_setting_name == "name" ) {
  405. echo " <select class='formfld' id='user_setting_value' name='user_setting_value' style=''>\n";
  406. echo " <option value=''></option>\n";
  407. //add all the themes to the list
  408. $theme_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes';
  409. if ($handle = opendir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes')) {
  410. while (false !== ($dir_name = readdir($handle))) {
  411. if ($dir_name != "." && $dir_name != ".." && $dir_name != ".svn" && $dir_name != ".git" && is_dir($theme_dir.'/'.$dir_name)) {
  412. $dir_label = str_replace('_', ' ', $dir_name);
  413. $dir_label = str_replace('-', ' ', $dir_label);
  414. if ($dir_name == $user_setting_value) {
  415. echo " <option value='".escape($dir_name)."' selected='selected'>".ucwords($dir_label)."</option>\n";
  416. }
  417. else {
  418. echo " <option value='".escape($dir_name)."'>".ucwords($dir_label)."</option>\n";
  419. }
  420. }
  421. }
  422. closedir($handle);
  423. }
  424. echo " </select>\n";
  425. }
  426. else if ($user_setting_category == "domain" && $user_setting_subcategory == "language" && $user_setting_name == "code" ) {
  427. echo " <select class='formfld' id='user_setting_value' name='user_setting_value' style=''>\n";
  428. echo " <option value=''></option>\n";
  429. foreach ($_SESSION['app']['languages'] as $key => $value) {
  430. if ($user_setting_value == $key) {
  431. echo " <option value='$value' selected='selected'>$value</option>\n";
  432. }
  433. else {
  434. echo " <option value='$value'>$value</option>\n";
  435. }
  436. }
  437. echo " </select>\n";
  438. }
  439. else if ($user_setting_category == "domain" && $user_setting_subcategory == "time_zone" && $user_setting_name == "name" ) {
  440. echo " <select class='formfld' id='user_setting_value' name='user_setting_value' style=''>\n";
  441. echo " <option value=''></option>\n";
  442. //$list = DateTimeZone::listAbbreviations();
  443. $time_zone_identifiers = DateTimeZone::listIdentifiers();
  444. $previous_category = '';
  445. $x = 0;
  446. foreach ($time_zone_identifiers as $key => $val) {
  447. $time_zone = explode("/", $val);
  448. $category = $time_zone[0];
  449. if ($category != $previous_category) {
  450. if ($x > 0) {
  451. echo " </optgroup>\n";
  452. }
  453. echo " <optgroup label='".$category."'>\n";
  454. }
  455. if (strlen($val) > 0) {
  456. $time_zone_offset = get_time_zone_offset($val)/3600;
  457. $time_zone_offset_hours = floor($time_zone_offset);
  458. $time_zone_offset_minutes = ($time_zone_offset - $time_zone_offset_hours) * 60;
  459. $time_zone_offset_minutes = number_pad($time_zone_offset_minutes, 2);
  460. if ($time_zone_offset > 0) {
  461. $time_zone_offset_hours = number_pad($time_zone_offset_hours, 2);
  462. $time_zone_offset_hours = "+".$time_zone_offset_hours;
  463. }
  464. else {
  465. $time_zone_offset_hours = str_replace("-", "", $time_zone_offset_hours);
  466. $time_zone_offset_hours = "-".number_pad($time_zone_offset_hours, 2);
  467. }
  468. }
  469. if ($val == $user_setting_value) {
  470. echo " <option value='".$val."' selected='selected'>(UTC ".$time_zone_offset_hours.":".$time_zone_offset_minutes.") ".$val."</option>\n";
  471. }
  472. else {
  473. echo " <option value='".$val."'>(UTC ".escape($time_zone_offset_hours).":".escape($time_zone_offset_minutes).") ".$val."</option>\n";
  474. }
  475. $previous_category = $category;
  476. $x++;
  477. }
  478. echo " </select>\n";
  479. }
  480. else if ($user_setting_category == "domain" && $user_setting_subcategory == "time_format" && $user_setting_name == "text" ) {
  481. echo " <select class='formfld' id='user_setting_value' name='user_setting_value'>\n";
  482. echo " <option value='24h' ".(($user_setting_value == "24h") ? "selected='selected'" : null).">".$text['label-24-hour']."</option>\n";
  483. echo " <option value='12h' ".(($user_setting_value == "12h") ? "selected='selected'" : null).">".$text['label-12-hour']."</option>\n";
  484. echo " </select>\n";
  485. }
  486. 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") {
  487. echo " <input class='formfld' type='password' id='user_setting_value' name='user_setting_value' maxlength='255' onmouseover=\"this.type='text';\" onfocus=\"this.type='text';\" onmouseout=\"if (!$(this).is(':focus')) { this.type='password'; }\" onblur=\"this.type='password';\" value=\"".escape($user_setting_value)."\">\n";
  488. }
  489. else if ($user_setting_category == "theme" && substr_count($user_setting_subcategory, "_color") > 0 && ($user_setting_name == "text" || $user_setting_name == 'array')) {
  490. echo " <input type='text' class='formfld colorpicker' id='user_setting_value' name='user_setting_value' value=\"".$user_setting_value."\">\n";
  491. }
  492. else if ($user_setting_category == "theme" && substr_count($user_setting_subcategory, "_font") > 0 && $user_setting_name == "text") {
  493. $user_setting_value = str_replace('"', "'", $user_setting_value);
  494. if ($fonts = get_available_fonts('alpha')) {
  495. echo " <select class='formfld' id='sel_user_setting_value' onchange=\"if (this.selectedIndex == $('select#sel_user_setting_value option').length - 1) { $('#txt_user_setting_value').val('').fadeIn('fast'); $('#txt_user_setting_value').trigger('focus'); } else { $('#txt_user_setting_value').fadeOut('fast', function(){ $('#txt_user_setting_value').val($('#sel_user_setting_value').val()) }); } \">\n";
  496. echo " <option value=''></option>\n";
  497. echo " <optgroup label='".$text['label-web_fonts']."'>\n";
  498. $option_found = false;
  499. foreach ($fonts as $n => $font) {
  500. if ($user_setting_value == $font) {
  501. $selected = 'selected';
  502. $option_found = true;
  503. }
  504. else {
  505. unset($selected);
  506. }
  507. echo " <option value='".$font."' ".$selected.">".$font."</option>\n";
  508. }
  509. echo " </optgroup>\n";
  510. echo " <option value='' disabled='disabled'></option>\n";
  511. echo " <option value='' ".(($user_setting_value != '' && $option_found == false) ? 'selected' : null).">".$text['label-other']."...</option>\n";
  512. echo " </select>";
  513. echo " <input type='text' class='formfld' ".(($user_setting_value == '' || $option_found) ? "style='display: none;'" : null)." id='txt_user_setting_value' name='user_setting_value' value=\"".escape($user_setting_value)."\">\n";
  514. }
  515. else {
  516. echo " <input type='text' class='formfld' id='user_setting_value' name='user_setting_value' value=\"".escape($user_setting_value)."\">\n";
  517. }
  518. }
  519. else if ($user_setting_category == "fax" && $user_setting_subcategory == "page_size" && $user_setting_name == "text" ) {
  520. echo " <select class='formfld' id='user_setting_value' name='user_setting_value' style=''>\n";
  521. echo " <option value='letter' ".(($user_setting_value == 'letter') ? 'selected' : null).">Letter</option>";
  522. echo " <option value='legal' ".(($user_setting_value == 'legal') ? 'selected' : null).">Legal</option>";
  523. echo " <option value='a4' ".(($user_setting_value == 'a4') ? 'selected' : null).">A4</option>";
  524. echo " </select>";
  525. }
  526. else if ($user_setting_category == "fax" && $user_setting_subcategory == "resolution" && $user_setting_name == "text" ) {
  527. echo " <select class='formfld' id='user_setting_value' name='user_setting_value' style=''>\n";
  528. echo " <option value='normal' ".(($user_setting_value == 'normal') ? 'selected' : null).">".$text['label-normal']."</option>";
  529. echo " <option value='fine' ".(($user_setting_value == 'fine') ? 'selected' : null).">".$text['label-fine']."</option>";
  530. echo " <option value='superfine' ".(($user_setting_value == 'superfine') ? 'selected' : null).">".$text['label-superfine']."</option>";
  531. echo " </select>";
  532. }
  533. else if ($user_setting_category == "theme" && $user_setting_subcategory == "domain_visible" && $user_setting_name == "text" ) {
  534. echo " <select class='formfld' id='user_setting_value' name='user_setting_value'>\n";
  535. echo " <option value='false' ".(($user_setting_value == "false") ? "selected='selected'" : null).">".$text['label-false']."</option>\n";
  536. echo " <option value='true' ".(($user_setting_value == "true") ? "selected='selected'" : null).">".$text['label-true']."</option>\n";
  537. echo " </select>\n";
  538. }
  539. else if ($user_setting_category == "theme" && $user_setting_subcategory == "cache" && $user_setting_name == "boolean" ) {
  540. echo " <select class='formfld' id='user_setting_value' name='user_setting_value'>\n";
  541. echo " <option value='true' ".(($user_setting_value == "true") ? "selected='selected'" : null).">".$text['label-true']."</option>\n";
  542. echo " <option value='false' ".(($user_setting_value == "false") ? "selected='selected'" : null).">".$text['label-false']."</option>\n";
  543. echo " </select>\n";
  544. }
  545. else if (
  546. ($user_setting_category == "theme" && $user_setting_subcategory == "menu_main_icons" && $user_setting_name == "boolean") ||
  547. ($user_setting_category == "theme" && $user_setting_subcategory == "menu_sub_icons" && $user_setting_name == "boolean")
  548. ) {
  549. echo " <select class='formfld' id='user_setting_value' name='user_setting_value'>\n";
  550. echo " <option value='true' ".(($user_setting_value == "true") ? "selected='selected'" : null).">".$text['label-true']."</option>\n";
  551. echo " <option value='false' ".(($user_setting_value == "false") ? "selected='selected'" : null).">".$text['label-false']."</option>\n";
  552. echo " </select>\n";
  553. }
  554. else if ($user_setting_category == "theme" && $user_setting_subcategory == "menu_brand_type" && $user_setting_name == "text" ) {
  555. echo " <select class='formfld' id='user_setting_value' name='user_setting_value'>\n";
  556. echo " <option value='image' ".(($user_setting_value == "image") ? "selected='selected'" : null).">".$text['label-image']."</option>\n";
  557. echo " <option value='text' ".(($user_setting_value == "text") ? "selected='selected'" : null).">".$text['label-text']."</option>\n";
  558. echo " <option value='none' ".(($user_setting_value == "none") ? "selected='selected'" : null).">".$text['label-none']."</option>\n";
  559. echo " </select>\n";
  560. }
  561. else if ($user_setting_category == "theme" && $user_setting_subcategory == "menu_style" && $user_setting_name == "text" ) {
  562. echo " <select class='formfld' id='user_setting_value' name='user_setting_value'>\n";
  563. echo " <option value='fixed' ".(($user_setting_value == "fixed") ? "selected='selected'" : null).">".$text['label-fixed']."</option>\n";
  564. echo " <option value='static' ".(($user_setting_value == "static") ? "selected='selected'" : null).">".$text['label-static']."</option>\n";
  565. echo " <option value='inline' ".(($user_setting_value == "inline") ? "selected='selected'" : null).">".$text['label-inline']."</option>\n";
  566. echo " </select>\n";
  567. }
  568. else if ($user_setting_category == "theme" && $user_setting_subcategory == "menu_position" && $user_setting_name == "text" ) {
  569. echo " <select class='formfld' id='user_setting_value' name='user_setting_value'>\n";
  570. echo " <option value='top' ".(($user_setting_value == "top") ? "selected='selected'" : null).">".$text['label-top']."</option>\n";
  571. echo " <option value='bottom' ".(($user_setting_value == "bottom") ? "selected='selected'" : null).">".$text['label-bottom']."</option>\n";
  572. echo " </select>\n";
  573. }
  574. else if ($user_setting_category == "theme" && $user_setting_subcategory == "logo_align" && $user_setting_name == "text" ) {
  575. echo " <select class='formfld' id='user_setting_value' name='user_setting_value'>\n";
  576. echo " <option value='left' ".(($user_setting_value == "left") ? "selected='selected'" : null).">".$text['label-left']."</option>\n";
  577. echo " <option value='center' ".(($user_setting_value == "center") ? "selected='selected'" : null).">".$text['label-center']."</option>\n";
  578. echo " <option value='right' ".(($user_setting_value == "right") ? "selected='selected'" : null).">".$text['label-right']."</option>\n";
  579. echo " </select>\n";
  580. }
  581. else {
  582. echo " <input class='formfld' type='text' id='user_setting_value' name='user_setting_value' maxlength='255' value=\"".escape($user_setting_value)."\">\n";
  583. }
  584. echo "<br />\n";
  585. echo $text['description-value']."\n";
  586. if ($user_setting_category == "theme" && substr_count($user_setting_subcategory, "_font") > 0 && $user_setting_name == "text") {
  587. echo "&nbsp;&nbsp;".$text['label-reference'].": <a href='https://www.google.com/fonts' target='_blank'>".$text['label-web_fonts']."</a>\n";
  588. }
  589. echo "</td>\n";
  590. echo "</tr>\n";
  591. echo "</table>\n";
  592. echo "<div id='tr_order' ".(($user_setting_name != 'array') ? "style='display: none;'" : null).">\n";
  593. echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
  594. echo "<tr>\n";
  595. echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
  596. echo " ".$text['label-order']."\n";
  597. echo "</td>\n";
  598. echo "<td width='70%' class='vtable' align='left'>\n";
  599. echo " <select name='user_setting_order' class='formfld'>\n";
  600. $i=0;
  601. while($i<=999) {
  602. $selected = ($i == $user_setting_order) ? "selected" : null;
  603. if (strlen($i) == 1) {
  604. echo " <option value='00$i' ".$selected.">00$i</option>\n";
  605. }
  606. if (strlen($i) == 2) {
  607. echo " <option value='0$i' ".$selected.">0$i</option>\n";
  608. }
  609. if (strlen($i) == 3) {
  610. echo " <option value='$i' ".$selected.">$i</option>\n";
  611. }
  612. $i++;
  613. }
  614. echo " </select>\n";
  615. echo " <br />\n";
  616. echo $text['description-order']."\n";
  617. echo "</td>\n";
  618. echo "</tr>\n";
  619. echo "</table>\n";
  620. echo "</div>\n";
  621. echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
  622. echo "<tr>\n";
  623. echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap>\n";
  624. echo " ".$text['label-enabled']."\n";
  625. echo "</td>\n";
  626. echo "<td width='70%' class='vtable' align='left'>\n";
  627. echo " <select class='formfld' name='user_setting_enabled'>\n";
  628. if ($user_setting_enabled == "true") {
  629. echo " <option value='true' selected='selected'>".$text['label-true']."</option>\n";
  630. }
  631. else {
  632. echo " <option value='true'>".$text['label-true']."</option>\n";
  633. }
  634. if ($user_setting_enabled == "false") {
  635. echo " <option value='false' selected='selected'>".$text['label-false']."</option>\n";
  636. }
  637. else {
  638. echo " <option value='false'>".$text['label-false']."</option>\n";
  639. }
  640. echo " </select>\n";
  641. echo "<br />\n";
  642. echo $text['description-setting_enabled']."\n";
  643. echo "</td>\n";
  644. echo "</tr>\n";
  645. echo "<tr>\n";
  646. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  647. echo " ".$text['label-description']."\n";
  648. echo "</td>\n";
  649. echo "<td class='vtable' align='left'>\n";
  650. echo " <input class='formfld' type='text' name='user_setting_description' maxlength='255' value=\"".escape($user_setting_description)."\">\n";
  651. echo "<br />\n";
  652. echo $text['description-description']."\n";
  653. echo "</td>\n";
  654. echo "</tr>\n";
  655. echo " <tr>\n";
  656. echo " <td colspan='2' align='right'>\n";
  657. echo " <input type='hidden' name='user_uuid' value='".escape($user_uuid)."'>\n";
  658. if ($action == "update") {
  659. echo " <input type='hidden' name='user_setting_uuid' value='".escape($user_setting_uuid)."'>\n";
  660. }
  661. echo " <input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
  662. echo " </td>\n";
  663. echo " </tr>";
  664. echo "</table>";
  665. echo "<br />";
  666. echo "</form>";
  667. echo "<script>\n";
  668. //capture enter key to submit form
  669. echo " $(window).on('keypress',function(event){\n";
  670. echo " if (event.which == 13) { submit_form(); }\n";
  671. echo " });\n";
  672. //hide/convert password fields then submit form
  673. echo " function submit_form() {\n";
  674. echo " $('input:password').css('visibility','hidden');\n";
  675. echo " $('input:password').attr({type:'text'});\n";
  676. echo " $('form#frm').submit();\n";
  677. echo " }\n";
  678. //define lowercase class
  679. echo " $('.lowercase').on('blur',function(){ this.value = this.value.toLowerCase(); });";
  680. //show order if array
  681. echo " $('#user_setting_name').on('keyup',function(){ \n";
  682. echo " (this.value.toLowerCase() == 'array') ? $('#tr_order').slideDown('fast') : $('#tr_order').slideUp('fast');\n";
  683. echo " });\n";
  684. echo "</script>\n";
  685. //include the footer
  686. require_once "resources/footer.php";
  687. ?>