ticket_fields.php
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:46k
源码类别:

电子政务应用

开发平台:

Java

  1. <?php
  2. // +-------------------------------------------------------------+
  3. // | DeskPRO v [2.0.1 Production]
  4. // | Copyright (C) 2001 - 2004 Headstart Solutions Limited
  5. // | Supplied by WTN-WDYL
  6. // | Nullified by WTN-WDYL
  7. // | Distribution via WebForum, ForumRU and associated file dumps
  8. // +-------------------------------------------------------------+
  9. // | DESKPRO IS NOT FREE SOFTWARE
  10. // +-------------------------------------------------------------+
  11. // | License ID : Full Enterprise License =) ...
  12. // | License Owner : WTN-WDYL Team
  13. // +-------------------------------------------------------------+
  14. // | $RCSfile: ticket_fields.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.26 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Custom ticket field maintenance (administration page)
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. require_once('./global.php');
  23. //Nullify WTN-WDYL Team
  24. admin_header('Links', 'Ticket Fields');
  25. // default do
  26. $_REQUEST['do'] = trim($_REQUEST['do']);
  27. if (!isset($_REQUEST['do']) or $_REQUEST['do'] == "") {
  28. $_REQUEST['do'] = "view";
  29. }
  30. // globalise variables
  31. $global = array (
  32. array('id', 'number'),
  33. array('type')
  34. );
  35. rg($global);
  36. language_check();
  37. ############################### CREATE INDEX ###############################
  38. if ($_REQUEST['do'] == 'createindex') {
  39. $db->query("SHOW INDEX FROM ticket");
  40. while ($index = $db->row_array()) {
  41. $indexed[$index['Column_name']] = 1;
  42. }
  43. $column = $db->query_return("SELECT name FROM ticket_def WHERE id = '$_REQUEST[id]'");
  44. $column = $column['name'];
  45. if (!$indexed[$column]) {
  46. $db->query("CREATE INDEX $column ON ticket ($column(20))");
  47. alert('Index created.');
  48. $_REQUEST['do'] = 'view';
  49. } else {
  50. alert('Index already present.');
  51. }
  52. }
  53. ############################### DELETE INDEX ###############################
  54. if ($_REQUEST['do'] == 'dropindex') {
  55. $db->query("SHOW INDEX FROM ticket");
  56. while ($index = $db->row_array()) {
  57. $indexed[$index['Column_name']] = 1;
  58. }
  59. $column = $db->query_return("SELECT name FROM ticket_def WHERE id = '$_REQUEST[id]'");
  60. $column = $column['name'];
  61. if ($indexed[$column]) {
  62. $db->query("DROP INDEX $column ON ticket");
  63. alert('Index removed.');
  64. $_REQUEST['do'] = 'view';
  65. } else {
  66. alert('No index present.');
  67. }
  68. }
  69. ############################### CREATE NEW PROFILE FIELDS ###############################
  70. if (($_REQUEST['do'] == "new3") OR ($_REQUEST['do'] == "update")) {
  71. if ($_REQUEST['regex'] != NULL) {
  72. $match = @preg_match($_REQUEST['regex'], '');
  73. if (!is_int($match)) { // It's invalid unless $match is an integer
  74. mistake('The regular expression you specified is invalid. Refer to
  75. PHP's manual 
  76. for current information about PHP's implementation of Perl-compatible 
  77. Regular Expressions. This may assist you in building a valid regular
  78. expression. Please go back and correct the regular expression.');
  79. exit;
  80. }
  81. }
  82. // code for creating a new field
  83. if ($_REQUEST['do'] == "new3") {
  84. $query = "INSERT INTO ticket_def SET ";
  85. // get max field number
  86. $db->query("SELECT name FROM ticket_def WHERE name LIKE 'custom%'");
  87. while ($results = $db->row_array()) {
  88. eregi("^custom([0-9]*)", $results[name], $value);
  89. if ($max < $value[1]) {
  90. $max = $value[1];
  91. }
  92. }
  93. $max++;
  94. $name = "custom" . $max;
  95. // create the column
  96. $db->query("ALTER TABLE ticket ADD $name MEDIUMTEXT");
  97. // sort out field
  98. $user_field[formtype] = $_REQUEST[formtype];
  99. // code for updating a field
  100. } elseif ($_REQUEST['do'] == "update") {
  101. $user_field = $db->query_return("SELECT * FROM ticket_def WHERE id = " . intval($id));
  102. $query = "UPDATE ticket_def SET ";
  103. $name = $user_field[name];
  104. }
  105. ############################### THE FIELD DATA ############################### 
  106. if (($user_field[formtype] == "checkbox") OR 
  107. ($user_field[formtype] == "radio") OR 
  108. ($user_field[formtype] == "select")) {
  109. // build array of current data
  110. $temp_data = unserialize($user_field[data]);
  111. if (is_array($temp_data)) {
  112. foreach($temp_data AS $key => $var) {
  113. $with_content[] = $temp_data[$key][0];
  114. }
  115. }
  116. // build array of new data
  117. if (is_array($_REQUEST[elementid])) {
  118. foreach($_REQUEST[elementid] AS $key => $var) {
  119. if (!is_int($key)) {
  120. $key++;
  121. }
  122. if ($_REQUEST[name][$key] != "") {
  123. $data[] = array(
  124. $key,
  125. $_REQUEST[order][$key],
  126. $_REQUEST[name][$key],
  127. $_REQUEST[start][$key]
  128. );
  129. } else {
  130. // check if there used to be value
  131. if (is_array($with_content)) {
  132. if (in_array($key, $with_content)) {
  133. // row needs to be deleted from the database
  134. $db->query("
  135. UPDATE ticket SET $user_field[name] = REPLACE ($user_field[name], '$key|||', '')
  136. ");
  137. }
  138. }
  139. }
  140. }
  141. }
  142. // sort based on order
  143. if (is_array($data)) {
  144. usort($data, "array_order2"); 
  145. }
  146. // convert to data to store in database
  147. $data = serialize($data);
  148. }
  149. ############################### LANGUAGE BITS ###############################
  150. if ($settings[language_on]) {
  151. $_REQUEST[display_name] = serialize($_REQUEST[display_name]);
  152. $_REQUEST[description] = serialize($_REQUEST[description]);
  153. $_REQUEST[error_message] = serialize($_REQUEST[error_message]);
  154. } else {
  155. $display_name = unserialize($user_field[display_name]);
  156. $description = unserialize($user_field[description]);
  157. $error_message = unserialize($user_field[error_message]);
  158. $display_name[$settings[default_language]] = $_REQUEST['display_name'];
  159. $description[$settings[default_language]] = $_REQUEST['description'];
  160. $error_message[$settings[default_language]] = $_REQUEST['error_message'];
  161. $_REQUEST[display_name] = serialize($display_name);
  162. $_REQUEST[description] = serialize($description);
  163. $_REQUEST[error_message] = serialize($error_message);
  164. }
  165. ############################### INPUT ############################### 
  166. if ($user_field[formtype] == "input") {
  167. $query .= "
  168. name = '$name',
  169. display_name = '".mysql_escape_string($_REQUEST['display_name'])."',
  170. description = '".mysql_escape_string($_REQUEST['description'])."',
  171. ticket_start  = '".mysql_escape_string($_REQUEST['ticket_start'])."',
  172. user_viewable = '".mysql_escape_string($_REQUEST['user_viewable'])."',
  173. user_editable = '".mysql_escape_string($_REQUEST['user_editable'])."',
  174. tech_viewable = '".mysql_escape_string($_REQUEST['tech_viewable'])."',
  175. tech_editable = '".mysql_escape_string($_REQUEST['tech_editable'])."',
  176. default_value = '".mysql_escape_string($_REQUEST['default_value'])."',
  177. parsed_default_value = '".mysql_escape_string($_REQUEST['parsed_default_value'])."',
  178. minlength = '".mysql_escape_string($_REQUEST['minlength'])."',
  179. maxlength = '".mysql_escape_string($_REQUEST['maxlength'])."',
  180. displayorder = '".mysql_escape_string($_REQUEST['displayorder'])."',
  181. regex = '".mysql_escape_string($_REQUEST['regex'])."',
  182. error_message = '".mysql_escape_string($_REQUEST['error_message'])."',
  183. length = '".mysql_escape_string($_REQUEST['length'])."',
  184. formtype = 'input'
  185. ";
  186. ############################### TEXTAREA ############################### 
  187. } elseif ($user_field[formtype] == "textarea") {
  188. $query .= "
  189. name = '$name',
  190. display_name = '".mysql_escape_string($_REQUEST['display_name'])."',
  191. description = '".mysql_escape_string($_REQUEST['description'])."',
  192. ticket_start  = '".mysql_escape_string($_REQUEST['ticket_start'])."',
  193. user_viewable = '".mysql_escape_string($_REQUEST['user_viewable'])."',
  194. user_editable = '".mysql_escape_string($_REQUEST['user_editable'])."',
  195. tech_viewable = '".mysql_escape_string($_REQUEST['tech_viewable'])."',
  196. tech_editable = '".mysql_escape_string($_REQUEST['tech_editable'])."',
  197. default_value = '".mysql_escape_string($_REQUEST['default_value'])."',
  198. parsed_default_value = '".mysql_escape_string($_REQUEST['parsed_default_value'])."',
  199. minlength = '".mysql_escape_string($_REQUEST['minlength'])."',
  200. maxlength = '".mysql_escape_string($_REQUEST['maxlength'])."',
  201. displayorder = '".mysql_escape_string($_REQUEST['displayorder'])."',
  202. regex = '".mysql_escape_string($_REQUEST['regex'])."',
  203. error_message = '".mysql_escape_string($_REQUEST['error_message'])."',
  204. length = '".mysql_escape_string($_REQUEST['length'])."',
  205. height = '".mysql_escape_string($_REQUEST['height'])."',
  206. formtype = 'textarea'
  207. ";
  208. ############################### RADIO ############################### 
  209. } elseif ($user_field[formtype] == "radio") {
  210. $query .= "
  211. name = '$name',
  212. data = '".mysql_escape_string($data)."',
  213. display_name = '".mysql_escape_string($_REQUEST['display_name'])."',
  214. description = '".mysql_escape_string($_REQUEST['description'])."',
  215. required = '".mysql_escape_string($_REQUEST['required'])."',
  216. ticket_start  = '".mysql_escape_string($_REQUEST['ticket_start'])."',
  217. user_viewable = '".mysql_escape_string($_REQUEST['user_viewable'])."',
  218. user_editable = '".mysql_escape_string($_REQUEST['user_editable'])."',
  219. tech_viewable = '".mysql_escape_string($_REQUEST['tech_viewable'])."',
  220. tech_editable = '".mysql_escape_string($_REQUEST['tech_editable'])."',
  221. displayorder = '".mysql_escape_string($_REQUEST['displayorder'])."',
  222. extrainput = '".mysql_escape_string($_REQUEST['extrainput'])."',
  223. perline = '".mysql_escape_string($_REQUEST['perline'])."',
  224. extrainput_location = '".mysql_escape_string($_REQUEST['extrainput_location'])."',
  225. extrainput_text = '".mysql_escape_string($_REQUEST['extrainput_text'])."',
  226. minlength = '".mysql_escape_string($_REQUEST['minlength'])."',
  227. maxlength = '".mysql_escape_string($_REQUEST['maxlength'])."',
  228. regex = '".mysql_escape_string($_REQUEST['regex'])."',
  229. error_message = '".mysql_escape_string($_REQUEST['error_message'])."',
  230. length = '".mysql_escape_string($_REQUEST['length'])."',
  231. formtype = 'radio'
  232. ";
  233. ############################### SELECT ############################### 
  234. } elseif ($user_field[formtype] == "select") {
  235. $query .= "
  236. name = '$name',
  237. data = '".mysql_escape_string($data)."',
  238. display_name = '".mysql_escape_string($_REQUEST['display_name'])."',
  239. description = '".mysql_escape_string($_REQUEST['description'])."',
  240. required = '".mysql_escape_string($_REQUEST['required'])."',
  241. ticket_start  = '".mysql_escape_string($_REQUEST['ticket_start'])."',
  242. user_viewable = '".mysql_escape_string($_REQUEST['user_viewable'])."',
  243. user_editable = '".mysql_escape_string($_REQUEST['user_editable'])."',
  244. tech_viewable = '".mysql_escape_string($_REQUEST['tech_viewable'])."',
  245. tech_editable = '".mysql_escape_string($_REQUEST['tech_editable'])."',
  246. displayorder = '".mysql_escape_string($_REQUEST['displayorder'])."',
  247. extrainput = '".mysql_escape_string($_REQUEST['extrainput'])."',
  248. extrainput_location = '".mysql_escape_string($_REQUEST['extrainput_location'])."',
  249. extrainput_text = '".mysql_escape_string($_REQUEST['extrainput_text'])."',
  250. minlength = '".mysql_escape_string($_REQUEST['minlength'])."',
  251. maxlength = '".mysql_escape_string($_REQUEST['maxlength'])."',
  252. maxoptions = '".mysql_escape_string($_REQUEST['maxoptions'])."',
  253. minoptions = '".mysql_escape_string($_REQUEST['minoptions'])."',
  254. multiselect = '".mysql_escape_string($_REQUEST['multiselect'])."',
  255. height = '".mysql_escape_string($_REQUEST['height'])."',
  256. regex = '".mysql_escape_string($_REQUEST['regex'])."',
  257. error_message = '".mysql_escape_string($_REQUEST['error_message'])."',
  258. length = '".mysql_escape_string($_REQUEST['length'])."',
  259. formtype = 'select'
  260. ";
  261. ############################### CHECKBOX ############################### 
  262. } elseif ($user_field[formtype] == "checkbox") {
  263. $query .= "
  264. name = '$name',
  265. data = '".mysql_escape_string($data)."',
  266. display_name = '".mysql_escape_string($_REQUEST['display_name'])."',
  267. description = '".mysql_escape_string($_REQUEST['description'])."',
  268. minoptions = '".mysql_escape_string($_REQUEST['minoptions'])."',
  269. maxoptions = '".mysql_escape_string($_REQUEST['maxoptions'])."',
  270. ticket_start  = '".mysql_escape_string($_REQUEST['ticket_start'])."',
  271. user_viewable = '".mysql_escape_string($_REQUEST['user_viewable'])."',
  272. user_editable = '".mysql_escape_string($_REQUEST['user_editable'])."',
  273. tech_viewable = '".mysql_escape_string($_REQUEST['tech_viewable'])."',
  274. tech_editable = '".mysql_escape_string($_REQUEST['tech_editable'])."',
  275. displayorder = '".mysql_escape_string($_REQUEST['displayorder'])."',
  276. extrainput = '".mysql_escape_string($_REQUEST['extrainput'])."',
  277. multiselect = '".mysql_escape_string($_REQUEST['multiselect'])."',
  278. minlength = '".mysql_escape_string($_REQUEST['minlength'])."',
  279. maxlength = '".mysql_escape_string($_REQUEST['maxlength'])."',
  280. perline = '".mysql_escape_string($_REQUEST['perline'])."',
  281. error_message = '".mysql_escape_string($_REQUEST['error_message'])."',
  282. length = '".mysql_escape_string($_REQUEST['length'])."',
  283. formtype = 'checkbox'
  284. ";
  285. ############################### SYSTEM ############################### 
  286. } elseif ($user_field[formtype] == "system") {
  287. unset($data);
  288. $data[when][reg1] = $_REQUEST['reg1'];
  289. $data[when][reg2] = $_REQUEST['reg2'];
  290. $data[when][usermod] = $_REQUEST['usermod'];
  291. $data[when][techmod] = $_REQUEST['techmod'];
  292. $data[when][technew] = $_REQUEST['technew'];
  293. $data[code][code] = $_REQUEST['code'];
  294. $data[code][variable] = $_REQUEST['variable'];
  295. $data = serialize($data);
  296. $query .= "
  297. name = '$name',
  298. data = '".mysql_escape_string($data)."',
  299. display_name = '".mysql_escape_string($_REQUEST['display_name'])."',
  300. description = '".mysql_escape_string($_REQUEST['description'])."',
  301. user_viewable = '".mysql_escape_string($_REQUEST['user_viewable'])."',
  302. tech_viewable = '".mysql_escape_string($_REQUEST['tech_viewable'])."',
  303. formtype = 'system'
  304. ";
  305. }
  306. ############################### FINISH AND REDIRECT ############################### 
  307. if ($_REQUEST['do'] == "new3") {
  308. $db->query($query);
  309. $id = $db->last_id();
  310. jump("ticket_fields.php?do=edit&id=$id", 'New field has been created<br />Redirecting you to your new field');
  311. } else {
  312. $db->query($query . "WHERE id = " . intval($id));
  313. jump("ticket_fields.php?do=edit&id=$id", 'Field has been updated<br />Redirecting you to the updated field');
  314. }
  315. }
  316. ############################### EDIT PROFILE FIELDS ###############################
  317. if (($_REQUEST['do'] == "edit") OR ($_REQUEST['do'] == "new2")) {
  318. // set form action for field editing
  319. if ($_REQUEST['do'] == "edit") {
  320. $user_field = $db->query_return("
  321. SELECT * FROM ticket_def
  322. WHERE id = '$id'
  323. ");
  324. echo "
  325. <form do="ticket_fields.php" method="post" name="fields">
  326. <input type="hidden" name="do" value="update">
  327. <input type="hidden" name="id" value="$user_field[id]">
  328. ";
  329. // set form action for new field creation
  330. } else {
  331. $user_field[formtype] = $type;
  332. echo "
  333. <form do="ticket_fields.php" method="post"  name="fields">
  334. <input type="hidden" name="do" value="new3">
  335. <input type="hidden" name="type" value="$user_field[formtype]">
  336. ";
  337. }
  338. ############################### LANGUAGE BITS ############################### 
  339. $user_field[display_name] = unserialize($user_field[display_name]);
  340. $user_field[description] = unserialize($user_field[description]);
  341. $user_field[error_message] = unserialize($user_field[error_message]);
  342. if ($settings[language_on]) {
  343. $name = "<div id="name"><table cellpadding="2" cellspacing="0">";
  344. $description = "<div id="description"><table cellpadding="2" cellspacing="0">";
  345. $error = "<div id="error"><table cellpadding="2" cellspacing="0">";
  346. $db->query("SELECT * FROM languages WHERE is_selectable = 1");
  347. while ($lang = $db->row_array()) {
  348. $name .= "<tr><td><b>$lang[name]</b>:</td><td>" . form_input($lang[id], $user_field[display_name][$lang[id]], 30, 'display_name') . "</td></tr>";
  349. $description .= "<tr><td><b>$lang[name]</b>:</td><td>" . form_textarea($lang[id], 40, 5, $user_field[description][$lang[id]], 'description') . "</td></tr>";
  350. $error .= "<tr><td><b>$lang[name]</b>:</td><td>" . form_textarea($lang[id], 40, 5, $user_field[error_message][$lang[id]], 'error_message') . "</td></tr>";
  351. }
  352. $name .= "</table><input type="button" value="Hide Language Options" onclick="oc('name');oc('name2')"></div><div id="name2"><input type="button" value="View Language Options" onclick="oc('name');oc('name2');"><div><script>oc('name')</script>";
  353. $description .= "</table><input type="button" value="Hide Language Options" onclick="oc('description');oc('description2')"></div><div id="description2"><input type="button" value="View Language Options" onclick="oc('description');oc('description2');"><div><script>oc('description')</script>";
  354. $error .= "</table><input type="button" value="Hide Language Options" onclick="oc('error');oc('error2')"></div><div id="error2"><input type="button" value="View Language Options" onclick="oc('error');oc('error2');"><div><script>oc('error')</script>";
  355. } else {
  356. $name = form_input('display_name', $user_field[display_name][$settings[default_language]]);
  357. $description = form_textarea('description', 50, 5, $user_field[description][$settings[default_language]]);
  358. $error = form_textarea('error_message', 50, 5, $user_field[error_message][$settings[default_language]]);
  359. }
  360. ############################### STANDARD FOR ALL ############################### 
  361. // display options
  362. $table[] = array('<b>Display Name</b><br />This is the name of the field that will be presented to technicians and users', $name);
  363. // show different message if new/edit
  364. if ($_REQUEST['do'] == "edit") {
  365. $table[] = array('<b>Database Name</b><br />This is the name of the field as it is in the database. This is the name you would use to call the value in your templates', $user_field[name]);
  366. } else {
  367. $table[] = array('<b>Database Name</b><br />This is the name of the field as it is in the database. This is the name you would use to call the value in your templates', '<I>Generated upon field creation</I>');
  368. }
  369. $table[] = array('<b>Description</b><br />The description that will be presented for this field to your users', $description);
  370. if ($user_field[formtype] != "system") {
  371. $table[] = array('<b>Display During Ticket Creation</b><br />Do you wish this field to be presented to the user during new ticket creation?', form_radio_yn('ticket_start', '', $user_field[ticket_start]));
  372. }
  373. $width = array('60%', '40%');
  374. table_header('Field Details');
  375. table_content('', $table, '', '', '', '', $width);
  376. table_footer();
  377. unset($table, $width);
  378. // field permissions
  379. $table[] = array('<b>User Viewable</b><br />Do you wish to allow your users to view this field?', form_radio_yn('user_viewable', '', $user_field[user_viewable]));
  380. if ($user_field[formtype] != "system") {
  381. $table[] = array('<b>User Editable</b><br />Do you wish to allow your users to edit the data held in this field?', form_radio_yn('user_editable', '', $user_field[user_editable]));
  382. }
  383. $table[] = array('<b>Tech Viewable</b><br />Do you wish to allow your staff to view this field?', form_radio_yn('tech_viewable', '', $user_field[tech_viewable]));
  384. if ($user_field[formtype] != "system") {
  385. $table[] = array('<b>Tech Editable</b><br />Do you wish to allow your staff to edit this field?', form_radio_yn('tech_editable', '', $user_field[tech_editable]));
  386. }
  387. $width = array('60%', '40%');
  388. table_header('Field Permissions');
  389. table_content('', $table, '', '', '', '', $width);
  390. table_footer();
  391. unset($table, $width);
  392. ############################### INPUT ############################### 
  393. if ($user_field[formtype] == "input") {
  394. echo form_hidden('formtype', 'input');
  395. // regex
  396. $table[] = array('<b>Minimum Characters</b><br />You can set a minimum number of characters that the user must enter in this field. Set to 0 for no stipulation (and to allow the field to be left empty)', form_input('minlength', $user_field[minlength], '3'));
  397. $table[] = array('<b>Maximum Characters</b><br />You can set a maximum number of characters that the user may enter. Set to 0 to allow for unlimited entry', form_input('maxlength', $user_field[maxlength], '3'));
  398. $table[] = array('<b>Custom Regex</b><br />You may use a custom regex to validate the input. You can find details about creating these in PHP's manual. A custom regex overrides any stipulations on minimum or maximum field length', form_input('regex', $user_field[regex], '45'));
  399. $table[] = array('<b>Error Message</b><br />If the user enters text that fails the criteria you have specified above, this is the error that will be presented', $error);
  400. $width = array('60%', '40%');
  401. table_header('Field Criteria');
  402. table_content('', $table, '', '', '', '', $width);
  403. table_footer();
  404. unset($table, $width);
  405. // default value
  406. $table[] = array('<b>Default Value</b><br />You may specify a default starting value here', form_input('default_value', $user_field[default_value], '45'));
  407. $table[] = array('<b>Parsed Default Value</b><br />You may specify a parsed default value. This overrides any default value you may have set.', form_input('parsed_default_value', $user_field[parsed_default_value], '45'));
  408. $width = array('60%', '40%');
  409. table_header('Default Value');
  410. table_content('', $table, '', '', '', '', $width);
  411. table_footer();
  412. unset($table, $width);
  413. // display properties
  414. $table[] = array('<b>Length</b><br />How long do you wish the INPUT field to be?', form_input('length', $user_field[length], '4'));
  415. $table[] = array('<b>Order</b><br />What order you wish the field to be displayed in relation to your other fields?', form_input('displayorder', $user_field[displayorder], '4'));
  416. $width = array('60%', '40%');
  417. table_header('Field Display Properties');
  418. table_content('', $table, '', '', '', '', $width);
  419. table_footer();
  420. unset($table, $width);
  421. ############################### TEXTAREA ############################### 
  422. } elseif ($user_field[formtype] == "textarea") {
  423. echo form_hidden('formtype', 'textarea');
  424. // regex
  425. $table[] = array('<b>Minimum Characters</b><br />You can set a minimum number of characters that the user must enter in this field. Set to 0 for no stipulation (and to allow the field to be left empty)', form_input('minlength', $user_field[minlength], '3'));
  426. $table[] = array('<b>Maximum Characters</b><br />You can set a maximum number of characters that the user may enter. Set to 0 to allow for unlimited entry', form_input('maxlength', $user_field[maxlength], '3'));
  427. $table[] = array('<b>Custom Regex</b><br />You may use a custom regex to validate the input. You can find details about creating these in PHP's manual. A custom regex overrides any stipulations on minimum or maximum field length', form_input('regex', $user_field[regex], '45'));
  428. $table[] = array('<b>Error Message</b><br />If the user enters text that fails the criteria you have specified above, this is the error that will be presented', $error);
  429. $width = array('60%', '40%');
  430. table_header('Field Criteria');
  431. table_content('', $table, '', '', '', '', $width);
  432. table_footer();
  433. unset($table, $width);
  434. // default value
  435. $table[] = array('<b>Default Value</b><br />You may specify a default starting value here', form_input('default_value', $user_field[default_value], '45'));
  436. $table[] = array('<b>Parsed Default Value</b><br />You may specify a parsed default value. This overrides any default value you may have set.', form_input('parsed_default_value', $user_field[parsed_default_value], '45'));
  437. $width = array('60%', '40%');
  438. table_header('Default Value');
  439. table_content('', $table, '', '', '', '', $width);
  440. table_footer();
  441. unset($table, $width);
  442. // display properties
  443. $table[] = array('<b>Length</b><br />How long do you wish the TEXTAREA field to be?', form_input('length', $user_field[length], '4'));
  444. $table[] = array('<b>Height</b><br />How many lines do you wish the TEXTAREA field to have?', form_input('height', $user_field[height], '4'));
  445. $table[] = array('<b>Order</b><br />What order you wish the field to be displayed in relation to your other fields?', form_input('displayorder', $user_field[displayorder], '4'));
  446. $width = array('60%', '40%');
  447. table_header('Field Display Properties');
  448. table_content('', $table, '', '', '', '', $width);
  449. table_footer();
  450. unset($table, $width);
  451. ############################### RADIO ############################### 
  452. } elseif ($user_field[formtype] == "radio") {
  453. echo form_hidden('formtype', 'radio');
  454. // regex
  455. $table[] = array('<b>Require a Selection</b><br />Set yes to require the selection of a radio element)', form_radio_yn('required', '', $user_field[required]));
  456. $table[] = array('<b>Error Message</b><br />The error message to be displayed if the user does not select an option. If you are enabling the extra INPUT field and have a custom regex which is not satisfied then this message would then be displayed.', $error);
  457. $width = array('60%', '40%');
  458. table_header('Field Criteria');
  459. table_content('', $table, '', '', '', '', $width);
  460. table_footer();
  461. unset($table, $width);
  462. // display properties
  463. $table[] = array('<b>Order</b><br />What order you wish the field to be displayed in relation to your other fields?', form_input('displayorder', $user_field[displayorder], '3'));
  464. $table[] = array('<b>Radio Elements Per line</b><br />How many radio elements do you want to display per line?', form_input('perline', $user_field[perline], '3'));
  465. $width = array('60%', '40%');
  466. table_header('Field Display Properties');
  467. table_content('', $table, '', '', '', '', $width);
  468. table_footer();
  469. unset($table, $width);
  470. // extra bit
  471. $table[] = array('<b>Allow Alternative Input</b><br />Selecting Yes will generate an alternative INPUT field that will allow your user to enter custom information if none of the SELECT options are suitable. If you enable this feature it will override the requirement of a selection you may have set earlier.', form_radio_yn('extrainput', '', $user_field[extrainput], '', 'onClick="extrainput2();"'));
  472. $table[] = array('<b>Minimum Characters</b><br />You can set a minimum number of characters that the user must enter in this field. Set to 0 for no stipulation (and to allow the field to be left empty)', form_input('minlength', $user_field[minlength], '3'));
  473. $table[] = array('<b>Maximum Characters</b><br />You can set a maximum number of characters that the user may enter. Set to 0 to allow for unlimited entry', form_input('maxlength', $user_field[maxlength], '3'));
  474. $table[] = array('<b>Custom Regex</b><br />You may use a custom regex to validate the input. You can find details about creating these in PHP's manual.', form_input('regex', $user_field[regex], '45'));
  475. $table[] = array('<b>Length</b><br />How long do you wish the INPUT field to be?', form_input('length', $user_field[length], '3'));
  476. $table[] = array('<b>Extrainput Text</b><br />The text to display to explain the presence of the input box. For example <I>Or enter your own option</I>', form_input('extrainput_text', $user_field[extrainput_text], 45));
  477. $table[] = array('<b>Extrainput Location</b><br />Do you want the INPUT field to be displayed on a new line?', form_radio_yn('extrainput_location', '', $user_field[extrainput_location]));
  478. $width = array('60%', '40%');
  479. table_header('Extra Input');
  480. table_content('', $table, '', '', '', '', $width);
  481. table_footer();
  482. unset($table, $width);
  483. $field_data = unserialize($user_field[data]);
  484. // get max number for creating new fields
  485. if (is_array($field_data)) {
  486. while (list ($key, $val) = each ($field_data)) {
  487. $array_count[] = $field_data[$key][0];
  488. }
  489. $max = max($array_count);
  490. reset($field_data);
  491. }
  492. $field_data[] = array($max+1, '', '', '', '');
  493. $field_data[] = array($max+2, '', '', '', '');
  494. $field_data[] = array($max+3, '', '', '', '');
  495. $field_data[] = array($max+4, '', '', '', '');
  496. $field_data[] = array($max+5, '', '', '', '');
  497. while (list ($key, $val) = each ($field_data)) {
  498. $table[] = array(
  499. $val[0] . form_hidden($key, '1', $arrayto='elementid'),
  500. form_input($val[0], $val[1], '3', 'order'), 
  501. iff($val[2], "<B>$val[2]</B>", "<I>n/a</I>"),
  502. form_input($val[0], $val[2], '45', 'name'), 
  503. form_radio_yn($val[0], 'start', $val[3])
  504. );
  505. }
  506. $columns = array('ID', 'Order', 'Current Value', 'New / Edit Value', 'Select by Default');
  507. table_header('Field Data');
  508. table_content($columns, $table);
  509. table_footer();
  510. unset($table);
  511. // javascript to control options
  512. ?>
  513. <SCRIPT>
  514. function extrainput2() {
  515. var value;
  516. for (value = 0; value < document.fields.extrainput.length; value++)
  517. {
  518. if (document.fields.extrainput[value].checked == true)
  519. {
  520. yesno = document.fields.extrainput[value].value;
  521. }
  522. }
  523. if (yesno == '1')
  524. {
  525. document.fields.minlength.disabled=false;
  526. document.fields.maxlength.disabled=false;
  527. document.fields.regex.disabled=false;
  528. document.fields.length.disabled=false;
  529. document.fields.extrainput_location[0].disabled=false;
  530. document.fields.extrainput_location[1].disabled=false;
  531. document.fields.extrainput_text.disabled=false;
  532. } else {
  533. document.fields.minlength.disabled=true;
  534. document.fields.maxlength.disabled=true;
  535. document.fields.regex.disabled=true;
  536. document.fields.length.disabled=true;
  537. document.fields.extrainput_location[0].disabled=true;
  538. document.fields.extrainput_location[1].disabled=true;
  539. document.fields.extrainput_text.disabled=true;
  540. }
  541. }
  542. extrainput2();
  543. </SCRIPT>
  544. <?
  545. // javascript to only allow one selected by default
  546. ############################### SELECT ############################### 
  547. } elseif ($user_field[formtype] == "select") {
  548. echo form_hidden('formtype', 'select');
  549. // regex
  550. $table[] = array('<b>Require a Selection</b><br />Do you wish to require a selection. Note this field has no affect if you allow multiple selections, you should use the minimum option setting to control the amount of required information.', form_radio_yn('required', '', $user_field[required]));
  551. $table[] = array('<b>Allow multiple selections</b><br />By allowing multiple selections your users can pick a number of options from the select menu. In terms of HTML, the element becomes a multiselect field. <b>Note:</b> enabling multiselect disables the alternative input option', form_radio_yn('multiselect', '', $user_field[multiselect], '', 'onClick="multipleselect();"'));
  552. $table[] = array('<b>Maximum Options</b><br />The maximum number of options that can be selected. Set a 0 to have no maximum. (only applies if you are allowing multiple selections)', form_input('maxoptions', $user_field[maxoptions], '3'));
  553. $table[] = array('<b>Minimum Options</b><br />The minimum amount of options that must be selected. Set a 0 to have no minumum. (only applies if you are allowing multiple selections otherwise use the require a selection setting)', form_input('minoptions', $user_field[minoptions], '3'));
  554. $table[] = array('<b>Error Message</b><br />The error message to be displayed if the user does not select an option. If you are enabling the extra INPUT field and have a custom regex which is not satisfied then this message would then be displayed.', $error);
  555. $width = array('60%', '40%');
  556. table_header('Field Criteria');
  557. table_content('', $table, '', '', '', '', $width);
  558. table_footer();
  559. unset($table, $width);
  560. // display properties
  561. $table[] = array('<b>Order</b><br />What order you wish the field to be displayed in relation to your other fields?', form_input('displayorder', $user_field[displayorder], '3'));
  562. $table[] = array('<b>Height</b><br />How many rows do you wish to display for the select menu', form_input('height', $user_field[height], '3'));
  563. $width = array('60%', '40%');
  564. table_header('Field Display Properties');
  565. table_content('', $table, '', '', '', '', $width);
  566. table_footer();
  567. unset($table, $width);
  568. // extra bit
  569. $table[] = array('<b>Allow Alternative Input</b><br />Selecting Yes will generate an alternative INPUT field that will allow your user to enter custom information if none of the SELECT options are suitable. If you enable this feature it will override the requirement of a selection you may have set earlier.', form_radio_yn('extrainput', '', $user_field[extrainput], '', 'onClick="extrainput2();"'));
  570. $table[] = array('<b>Minimum Characters</b><br />You can set a minimum number of characters that the user must enter in this field. Set to 0 for no stipulation (and to allow the field to be left empty)', form_input('minlength', $user_field[minlength], '3'));
  571. $table[] = array('<b>Maximum Characters</b><br />You can set a maximum number of characters that the user may enter. Set to 0 to allow for unlimited entry', form_input('maxlength', $user_field[maxlength], '3'));
  572. $table[] = array('<b>Custom Regex</b><br />You may use a custom regex to validate the input. You can find details about creating these in PHP's manual', form_input('regex', $user_field[regex], '45'));
  573. $table[] = array('<b>Length</b><br />How long do you wish the INPUT field to be?', form_input('length', $user_field[length], '3'));
  574. $table[] = array('<b>Extrainput Text</b><br />The text to display to explain the presence of the input box. For example <I>Or enter your own option</I>', form_input('extrainput_text', $user_field[extrainput_text], 45));
  575. $table[] = array('<b>Extrainput Location</b><br />Do you want the INPUT field to be displayed on a new line?', form_radio_yn('extrainput_location', '', $user_field[extrainput_location]));
  576. $width = array('60%', '40%');
  577. table_header('Extra Input');
  578. table_content('', $table, '', '', '', '', $width);
  579. table_footer();
  580. unset($table, $width);
  581. $field_data = unserialize($user_field[data]);
  582. // get max number for creating new fields
  583. if (is_array($field_data)) {
  584. while (list ($key, $val) = each ($field_data)) {
  585. $array_count[] = $field_data[$key][0];
  586. }
  587. $max = max($array_count);
  588. reset($field_data);
  589. }
  590. $field_data[] = array($max+1, '', '', '');
  591. $field_data[] = array($max+2, '', '', '');
  592. $field_data[] = array($max+3, '', '', '');
  593. $field_data[] = array($max+4, '', '', '');
  594. $field_data[] = array($max+5, '', '', '');
  595. while (list ($key, $val) = each ($field_data)) {
  596. $table[] = array(
  597. $val[0] . form_hidden($val[0], '1', $arrayto='elementid'),
  598. form_input($val[0], $val[1], '3', 'order'), 
  599. iff($val[2], "<B>$val[2]</B>", "<I>n/a</I>"),
  600. form_input($val[0], $val[2], '45', 'name'),
  601. form_radio_yn($val[0], 'start', $val[3])
  602. );
  603. }
  604. $columns = array('ID', 'Order', 'Current Value', 'New / Edit Value', 'Select by Default');
  605. table_header('Field Data');
  606. table_content($columns, $table);
  607. table_footer();
  608. unset($table);
  609. // javascript to control options
  610. ?>
  611. <SCRIPT>
  612. function extrainput2() {
  613. var value;
  614. for (value = 0; value < document.fields.extrainput.length; value++)
  615. {
  616. if (document.fields.extrainput[value].checked == true)
  617. {
  618. yesno = document.fields.extrainput[value].value;
  619. }
  620. }
  621. if (yesno == '1')
  622. {
  623. document.fields.minlength.disabled=false;
  624. document.fields.maxlength.disabled=false;
  625. document.fields.regex.disabled=false;
  626. document.fields.length.disabled=false;
  627. document.fields.extrainput_location[0].disabled=false;
  628. document.fields.extrainput_location[1].disabled=false;
  629. document.fields.extrainput_text.disabled=false;
  630. } else {
  631. document.fields.minlength.disabled=true;
  632. document.fields.maxlength.disabled=true;
  633. document.fields.regex.disabled=true;
  634. document.fields.length.disabled=true;
  635. document.fields.extrainput_location[0].disabled=true;
  636. document.fields.extrainput_location[1].disabled=true;
  637. document.fields.extrainput_text.disabled=true;
  638. }
  639. }
  640. function multipleselect() {
  641. var value;
  642. for (value = 0; value < document.fields.multiselect.length; value++)
  643. {
  644. if (document.fields.multiselect[value].checked == true)
  645. {
  646. yesno = document.fields.multiselect[value].value;
  647. }
  648. }
  649. if (yesno == '1') {
  650. document.fields.maxoptions.disabled=false;
  651. document.fields.minoptions.disabled=false;
  652. document.fields.required[0].disabled=true;
  653. document.fields.required[1].disabled=true;
  654. document.fields.extrainput[1].checked=true;
  655. extrainput2();
  656. document.fields.extrainput[0].disabled=true;
  657. } else {
  658. document.fields.maxoptions.disabled=true;
  659. document.fields.minoptions.disabled=true;
  660. document.fields.required[0].disabled=false;
  661. document.fields.required[1].disabled=false;
  662. document.fields.extrainput[0].disabled=false;
  663. }
  664. }
  665. extrainput2();
  666. multipleselect();
  667. </SCRIPT>
  668. <?
  669. ############################### CHECKBOX ############################### 
  670. } elseif ($user_field[formtype] == "checkbox") {
  671. echo form_hidden('formtype', 'checkbox');
  672. // regex
  673. $table[] = array('<b>Maximum Options</b><br />The maximum amount of options that can be selected. (Set a 0 to have no maximum.)', form_input('maxoptions', $user_field[maxoptions], '3'));
  674. $table[] = array('<b>Minimum Options</b><br />The minimum amount of options that must be selected. (Set as 0 to require no minimum number of options.)', form_input('minoptions', $user_field[minoptions], '3'));
  675. $table[] = array('<b>Error Message</b><br />The error message to be displayed if the user does not select an option. If you are enabling the extra INPUT field and have a custom regex which is not satisfied then this message would then be displayed.', $error);
  676. $width = array('60%', '40%');
  677. table_header('Field Criteria');
  678. table_content('', $table, '', '', '', '', $width);
  679. table_footer();
  680. unset($table, $width);
  681. // display properties
  682. $table[] = array('<b>Order</b><br />What order you wish the field to be displayed in relation to your other fields?', form_input('displayorder', $user_field[displayorder], '3'));
  683. $table[] = array('<b>Checkboxes Per line</b><br />How many checkboxes do you want to display per line?', form_input('perline', $user_field[perline], '3'));
  684. $width = array('60%', '40%');
  685. table_header('Field Display Properties');
  686. table_content('', $table, '', '', '', '', $width);
  687. table_footer();
  688. unset($table, $width);
  689. $field_data = unserialize($user_field[data]);
  690. // get max number for creating new fields
  691. if (is_array($field_data)) {
  692. while (list ($key, $val) = each ($field_data)) {
  693. $array_count[] = $field_data[$key][0];
  694. }
  695. $max = max($array_count);
  696. reset($field_data);
  697. }
  698. $field_data[] = array($max+1, '', '', '', '');
  699. $field_data[] = array($max+2, '', '', '', '');
  700. $field_data[] = array($max+3, '', '', '', '');
  701. $field_data[] = array($max+4, '', '', '', '');
  702. $field_data[] = array($max+5, '', '', '', '');
  703. while (list ($key, $val) = each ($field_data)) {
  704. $table[] = array(
  705. $val[0] . form_hidden($key, '1', $arrayto='elementid'),
  706. form_input($val[0], $val[1], '3', 'order'), 
  707. iff($val[2], "<B>$val[2]</B>", "<I>n/a</I>"),
  708. form_input($val[0], $val[2], '45', 'name'),
  709. form_radio_yn($val[0], 'start', $val[3])
  710. );
  711. }
  712. $columns = array('ID', 'Order', 'Current Value', 'New / Edit Value', 'Select by Default');
  713. table_header('Field Data');
  714. table_content($columns, $table);
  715. table_footer();
  716. unset($table);
  717. ############################### SYSTEM ############################### 
  718. } elseif ($user_field[formtype] == "system") {
  719. $field_data = unserialize($user_field[data]);
  720. echo form_hidden('formtype', 'system');
  721. // creation time
  722. $table[] = array('<b>Run during registration (page 1)</b><br />Do you wish the code to be executed during the 1st page of user regisration whereupon the variable will be passed as a hidden form element to the 2nd page and then saved?', form_radio_yn('reg1', '', $field_data[when][reg1]));
  723. $table[] = array('<b>Run during registration (page 2)</b><br />Do you wish the code to be executed during the 2nd page of registration?', form_radio_yn('reg2', '', $field_data[when][reg2]));
  724. $table[] = array('<b>Run during user profile modification</b><br />Do you wish the code to be executed when a user modifies their profile?', form_radio_yn('usermod', '', $field_data[when][usermod]));
  725. $table[] = array('<b>Run during tech profile modification</b><br />Do you wish the code to be executed when a tech modifies a users profile?', form_radio_yn('techmod', '', $field_data[when][techmod]));
  726. $table[] = array('<b>Run during tech user creation</b><br />Do you wish the code to be executed when a tech creates a user?', form_radio_yn('technew', '', $field_data[when][technew]));
  727. $width = array('60%', '40%');
  728. table_header('Run Time');
  729. table_content('', $table, '', '', '', '', $width);
  730. table_footer();
  731. unset($table, $width);
  732. $table[] = array('<b>Code</b><br />Any PHP code you wish to run (to manipulate a variable)', form_textarea('code', '70', '5', $field_data[code][code]));
  733. $table[] = array('<b>Variable</b><br />The variable you wish to store for this field', form_input('variable', $field_data[code][variable], '45'));
  734. $width = array('60%', '40%');
  735. table_header('Code');
  736. table_content('', $table, '', '', '', '', $width);
  737. table_footer();
  738. unset($table, $width);
  739. }
  740. // show different form button if new/edit
  741. if ($_REQUEST['do'] == "edit") {
  742. echo "<br /><center><input type="submit" name="submit" value="Update Field Options"></center></form>";
  743. } else {
  744. echo "<br /><center><input type="submit" name="submit" value="Create New Field"></center></form>";
  745. }
  746. }
  747. ############################### SELECT TYPE OF NEW FIELD TO CREATE ###############################
  748. if ($_REQUEST['do'] == "add") {
  749. $table[] = array('<b>INPUT</b>', 'This field allows the user to enter text on one line. Useful for words and short sentances', '<a href="ticket_fields.php?do=new2&type=input">create</a>');
  750. $table[] = array('<b>TEXTAREA</b>', 'Allows for text input across a number of lines. Useful for where more information is required.', '<a href="ticket_fields.php?do=new2&type=textarea">create</a>');
  751. $table[] = array('<b>SELECT</b>', 'This field allows the user to select from a number of options contained in a list',  '<a href="ticket_fields.php?do=new2&type=select">create</a>');
  752. $table[] = array('<b>RADIO</b>', 'Allows the user from pick one from a number of options where the options are displayed as radio buttons',  '<a href="ticket_fields.php?do=new2&type=radio">create</a>');
  753. $table[] = array('<b>CHECKBOX</b>', 'Allows the user to select a number of options where the options are displayed as checkboxes',  '<a href="ticket_fields.php?do=new2&type=checkbox">create</a>');
  754. table_header('Create New Field');
  755. table_content('', $table);
  756. table_footer();
  757. unset($table, $width);
  758. }
  759. ############################### DELETE CUSTOM PROFILE FIELDS ###############################
  760. if ($_REQUEST['do'] == "delete") {
  761. $field = $db->query_return("SELECT name FROM ticket_def WHERE id = " . intval($id));
  762. // delete the field and column
  763. $db->query("DELETE FROM ticket_def WHERE id = " . intval($id));
  764. $db->query("ALTER TABLE ticket DROP $field[name]");
  765. // Update tech's field display preference; remove this deleted field from it.
  766. $techs = $db->query_return_array('SELECT id, fielddisplay FROM tech');
  767. if ($db->num_rows()) {
  768. foreach ($techs AS $tech) {
  769. $tech['fielddisplay'] = unserialize($tech['fielddisplay']);
  770. if (!@count($tech['fielddisplay']['custom'])) {
  771. // Tech has no preference here, move on.
  772. continue;
  773. }
  774. $tech['fielddisplay']['custom'] = array_diff($tech['fielddisplay']['custom'], array($id));
  775. $tech['fielddisplay'] = serialize($tech['fielddisplay']);
  776. $db->query("UPDATE tech SET fielddisplay = '" . mysql_escape_string($tech['fielddisplay']) . "' WHERE id = $tech[id]");
  777. }
  778. }
  779. jump('ticket_fields.php?action=view', 'Custom Profile Field Deleted');
  780. }
  781. ############################### LIST CUSTOM PROFILE FIELDS ###############################
  782. if ($_REQUEST['do'] == "view") {
  783. // Fetch indexes
  784. $db->query("SHOW INDEX FROM ticket");
  785. while ($index = $db->row_array()) {
  786. $indexed[$index['Column_name']] = 1;
  787. }
  788. // select the articles
  789. $db->query("
  790. SELECT * FROM ticket_def
  791. ORDER BY displayorder
  792. ");
  793. while ($ticket_fields = $db->row_array()) {
  794. $ticket_fields[display_name] = unserialize($ticket_fields[display_name]);
  795. $ticket_fields[display_name] = $ticket_fields[display_name][$settings[default_language]];
  796. if ($indexed[$ticket_fields['name']]) {
  797. $index = jprompt('This will remove the index for this field. Searches on this field may take longer, but changes to the tickets table that involve this field may be faster after this change. This operation may take some time if there are many tickets.', 
  798. "ticket_fields.php?do=dropindex&id=$ticket_fields[id]",
  799. 'Remove Index');
  800. } else {
  801. $index = jprompt('This will create an index for this field. Searches on this field may be faster, but changes to the tickets table that involve this field may take longer after this change. This operation may take some time if there are many tickets.', 
  802. "ticket_fields.php?do=createindex&id=$ticket_fields[id]",
  803. 'Create Index');
  804. }
  805. ${"table_$ticket_fields[formtype]"}[] = array(
  806. $ticket_fields[display_name], 
  807. $ticket_fields[name], 
  808. ifynb($ticket_fields[user_viewable]),
  809. ifynb($ticket_fields[user_editable]),
  810. ifynb($ticket_fields[tech_viewable]),
  811. ifynb($ticket_fields[tech_editable]),
  812. $index,
  813. $ticket_fields[displayorder], 
  814. "<a href="ticket_fields.php?do=edit&id=$ticket_fields[id]">edit</a>",
  815. jprompt('Are you sure you want to delete this custom field?', "ticket_fields.php?do=delete&id=$ticket_fields[id]", 'Delete')
  816. );
  817. }
  818. // build the row headings
  819. $columns = array('Display name', 'SQL name', 'User Viewable', 'User Editable', 'Tech Viewable', 'Tech Editable', 'Index', 'Order', 'Edit', 'Delete');
  820. table_header('Input Fields');
  821. table_content($columns, $table_input);
  822. table_footer();
  823. table_header('Select Fields');
  824. table_content($columns, $table_select);
  825. table_footer();
  826. table_header('Textarea Fields');
  827. table_content($columns, $table_textarea);
  828. table_footer();
  829. table_header('Radio Fields');
  830. table_content($columns, $table_radio);
  831. table_footer();
  832. table_header('Checkbox Fields');
  833. table_content($columns, $table_checkbox);
  834. table_footer();
  835. $columns = array('Display name', 'SQL name', 'User Viewable', 'Tech Viewable', 'Order', 'Edit', 'Delete');
  836. /*
  837. table_header('System Fields');
  838. table_content($columns, $table_system);
  839. table_footer();
  840. */
  841. }