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

电子政务应用

开发平台:

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: tech.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.32 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Technician maintenance (administration interface)
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. require_once('./global.php');
  23. //Nullify WTN-WDYL Team
  24. // default do
  25. $_REQUEST['do'] = trim($_REQUEST['do']);
  26. if (!isset($_REQUEST['do']) or $_REQUEST['do'] == "") {
  27. $_REQUEST['do'] = "view";
  28. }
  29. // globalise variables
  30. $global = array (
  31. array('id')
  32. );
  33. rg($global);
  34. ############################### EMAIL TECHS ###############################
  35. if ($_REQUEST['do'] == "email") {
  36. admin_header('Technicians', 'Email');
  37. $table[] = array('<b>From Email Address</b>', form_input('from'));
  38. $table[] = array('<b>Email Subject</b>', form_input('subject'));
  39. $table[] = array('<b>Email Body</b>', form_textarea('body', 100, 20));
  40. table_header('Email Technicians', 'tech.php', array('do' => 'email2'));
  41. table_content('', $table);
  42. table_footer('Send Email');
  43. unset($columns, $table);
  44. }
  45. ############################### EMAIL TECHS ###############################
  46. if ($_REQUEST['do'] == "email2") {
  47. admin_header('Technicians', 'Email');
  48. echo "<br />";
  49. $db->query("SELECT email FROM tech");
  50. while ($tech = $db->row_array()) {
  51. if (validate_email($tech[email])) {
  52. dp_mail($tech[email], $_REQUEST[subject], $_REQUEST[body], $_REQUEST[from]);
  53. echo "Email sent to $tech[email]<br />";
  54. }
  55. }
  56. echo "<br /><b>All Sent</b>";
  57. }
  58. ############################### 1st STAGE OF NEW TECH CREATION ###############################
  59. if ($_REQUEST['do'] == "add") {
  60. admin_header('Technicians', 'Add Technician');
  61. $db->query("SELECT id,username FROM tech");
  62. while ($result = $db->row_array()) {
  63. // Disabled for demo
  64. if ($REQUEST[username] == 'admin') {
  65. alert("Editing the 'admin' account is disabled in the demo.");
  66. $error = 1;
  67. }
  68. // Disabled for demo
  69. if ($REQUEST[username] == 'admin') {
  70. alert("Editing the 'admin' account is disabled in the demo.");
  71. $error = 1;
  72. }
  73. $tech_array[$result[id]] = $result[username];
  74. }
  75. $table[] = array('<input type="radio" name="permission" value="1" checked>', 'To create a new technician based on the permissions of another technician', form_select('tech_id', $tech_array));
  76. $table[] = array('<input type="radio" name="permission" value="0">', 'Create a new technician not based on the permissions of another technician');
  77. table_header('Create New User', 'tech.php', array('do' => 'add2'));
  78. table_content('', $table);
  79. table_footer('Create Technician');
  80. unset($table);
  81. }
  82. ############################### CREATE / UPDATE TECH ###############################
  83. if (($_REQUEST['do'] == "submit") OR ($_REQUEST['do'] == "update")) {
  84. if (($user[id] == $id) AND ($id != '') AND ($_REQUEST[is_admin] != 1)) {
  85. alert('You can not remove your own admin status');
  86. $error = 1;
  87. }
  88. if ($_REQUEST['username'] == '') {
  89. alert('You did not enter a username');
  90. $error = 1;
  91. }
  92. if ($_REQUEST['password'] == '') {
  93. alert('You have not entered a password');
  94. $error = 1;
  95. unset($_REQUEST['password']);
  96. }
  97. if ($_REQUEST['password'] != $_REQUEST['password2']) {
  98. alert('The passwords do not match');
  99. $error = 1;
  100. unset($_REQUEST['password']);
  101. }
  102. if (!validate_email($_REQUEST[email])) {
  103. alert('You have not entered a valid email address');
  104. $error = 1;
  105. }
  106. if (!$error) {
  107. if ($_REQUEST['do'] == "submit") {
  108. $query = "INSERT INTO tech SET";
  109. } elseif ($_REQUEST['do'] == "update") {
  110. $query = "UPDATE tech SET";
  111. }
  112. $query .= " username = '" . mysql_escape_string($_REQUEST[username]) . "',";
  113. if ($_REQUEST['password'] != "**********") {
  114. $query .= "password = '" . mysql_escape_string($_REQUEST[password]) . "', ";
  115. }
  116. $query .= "
  117. signature = '" . mysql_escape_string($_REQUEST[signature]) . "',
  118. email = '" . mysql_escape_string($_REQUEST['email']) . "',
  119. p_close_ticket = '" . $_REQUEST['p_close_ticket'] . "',
  120. p_tech_view = '" . $_REQUEST['p_tech_view'] . "',
  121. p_tech_edit = '$_REQUEST[p_tech_edit]',
  122. p_add_k = '$_REQUEST[p_add_k]',
  123. p_edit_k = '$_REQUEST[p_edit_k]',
  124. p_delete_k = '$_REQUEST[p_delete_k]',
  125. p_add_c_k = '$_REQUEST[p_add_c_k]',
  126. p_edit_c_k = '$_REQUEST[p_edit_c_k]',
  127. p_delete_c_k = '$_REQUEST[p_delete_c_k]',
  128. p_delete_announcements = '$_REQUEST[p_delete_announcements]',
  129. p_edit_announcements = '$_REQUEST[p_edit_announcements]',
  130. p_add_announcements = '$_REQUEST[p_add_announcements]',
  131. p_delete_users = '$_REQUEST[p_delete_users]',
  132. p_approve_new_registrations = '$_REQUEST[p_approve_new_registrations]',
  133. p_create_users = '$_REQUEST[p_create_users]',
  134. p_edit_users = '$_REQUEST[p_edit_users]',
  135. p_delete_own = '$_REQUEST[p_delete_own]',
  136. p_delete_other = '$_REQUEST[p_delete_other]',
  137. p_quickedit = '$_REQUEST[p_quickedit]',
  138. p_user_expire = '$_REQUEST[p_user_expire]',
  139. p_global_note = '$_REQUEST[p_global_note]',
  140. p_html_tech = '$_REQUEST[p_html_tech]',
  141. p_html_user = '$_REQUEST[p_html_user]',
  142. is_admin = '$_REQUEST[is_admin]',
  143. alert_reply_your = 1,
  144. alert_new_cat = 1,
  145. alert_pm = 1,
  146. alert_sound = 1,
  147. alert_popup = 1,
  148. email_new_email = 1,
  149. email_own_email = 1,
  150. email_reply_email = 1,
  151. email_assigned = 1,
  152. email_pm = 1
  153. ";
  154. if ($_REQUEST['do'] == "submit") {
  155. $db->query($query);
  156. jump('tech.php', 'Technician Created');
  157. }
  158. if ($_REQUEST['do'] == "update") {
  159. $query .= " WHERE id = '$id'";
  160. $db->query($query);
  161. jump('tech.php', 'Technician Updated');
  162. }
  163. } else {
  164. $tech = $_REQUEST;
  165. $_REQUEST['do'] = 'redo';
  166. $password = $_REQUEST['password'];
  167. }
  168. }
  169. ############################### FORM TO CREATE / UPDATE TECH ###############################
  170. if (($_REQUEST['do'] == "add2") OR ($_REQUEST['do'] == "edit") OR ($_REQUEST['do'] == "redo")) {
  171. if ($_REQUEST['do'] == "edit") {
  172. $tech = $db->query_return("SELECT * FROM tech WHERE id = '$id'");
  173. $password = '**********';
  174. admin_header('Technicians', 'Edit Technician');
  175. } else {
  176. admin_header('Technicians', 'Add Technician');
  177. // sort out permissions if creating from another technician
  178. if ($_REQUEST[permission] == "1") {
  179. $tech = $db->query_return("SELECT * FROM tech WHERE id = '$_REQUEST[tech_id]'");
  180. echo table_border("<center><b>Permissions have been prefilled with the permissions assigned to technician $tech[username]</b></center>");
  181. echo "<BR>";
  182. unset($tech[username], $tech[password], $tech[email], $tech[real_name]);
  183. }
  184. }
  185. $bit = form_input('username', $tech[username], '30');
  186. $table[] = array('<b>Username</b><br />Your technicians username', $bit);
  187. $bit = form_password('password', $password, '30');
  188. $table[] = array('<b>Password</b><br />Your technicians password', $bit);
  189. $bit = form_password('password2', $password, '30');
  190. $table[] = array('<b>Password</b><br />Please confirm the password', $bit);
  191. $bit = form_textarea('signature', '30', '5', $tech[signature]);
  192. $table[] = array('<b>Signature</b><br />A signature for your technician', $bit);
  193. $bit = form_input('email', $tech[email], '30');
  194. $table[] = array('<b>Email</b><br />Your technicians email', $bit);
  195. $bit = form_radio_yn('is_admin', '', $tech[is_admin]);
  196. $table[] = array('<b>Is Admin</b><br />Do you wish to grant access to the admin control panel to your technician?', $bit);
  197. $table[] = table_midheader('General Permissions');
  198. $bit = form_radio_yn('p_add_announcements', '', $tech[p_add_announcements]);
  199. $table[] = array('<b>PERMISSION: can add announcements</b><br />Can your technician add announcements?', $bit);
  200. $bit = form_radio_yn('p_delete_announcements', '', $tech[p_delete_announcements]);
  201. $table[] = array('<b>PERMISSION: can edit announcements</b><br />Can your technician edit announcements?', $bit);
  202. $bit = form_radio_yn('p_edit_announcements', '', $tech[p_edit_announcements]);
  203. $table[] = array('<b>PERMISSION: delete announcements</b><br />Can your technician delete announcements?', $bit);
  204. $bit = form_radio_yn('p_quickedit', '', $tech[p_quickedit]);
  205. $table[] = array('<b>PERMISSION: edit quick responses</b><br />Can your technician add, edit, delete, and categorize quick responses?', $bit);
  206. $bit = form_radio_yn('p_html_tech', '', $tech[p_html_tech]);
  207. $table[] = array('<b>PERMISSION: can use unquoted HTML for techs</b><br />Is unquoted HTML submitted by this technician for objects viewed by other technicians allowed?', $bit);
  208. $bit = form_radio_yn('p_html_user', '', $tech[p_html_user]);
  209. $table[] = array('<b>PERMISSION: can use unquoted HTML for users</b><br />Is unquoted HTML submitted by this technician for objects viewed by users allowed?', $bit);
  210. $table[] = table_midheader('User Permissions');
  211. $bit = form_radio_yn('p_create_users', '', $tech[p_create_users]);
  212. $table[] = array('<b>PERMISSION: create Users</b><br />Can your technician create users?', $bit);
  213. $bit = form_radio_yn('p_edit_users', '', $tech[p_edit_users]);
  214. $table[] = array('<b>PERMISSION: edit user details</b><br />Can your technician edit the user fields set as editable in the user field settings?', $bit);
  215. $bit = form_radio_yn('p_delete_users', '', $tech[p_delete_users]);
  216. $table[] = array('<b>PERMISSION: delete users</b><br />Can your technician delete users?', $bit);
  217. $bit = form_radio_yn('p_approve_new_registrations', '', $tech[p_approve_new_registrations]);
  218. $table[] = array('<b>PERMISSION: approve new registrations</b><br />Can your technician approve new pending user registrations?', $bit);
  219. $bit = form_radio_yn('p_user_expire', '', $tech[p_user_expire]);
  220. $table[] = array('<b>PERMISSION: edit user expiration</b><br />Can your technician set and update user expirations?', $bit);
  221. $bit = form_radio_yn('p_global_note', '', $tech[p_global_note]);
  222. $table[] = array('<b>PERMISSION: edit global user notes</b><br />Can your technician create, edit, and delete global user notes that all technicians can see?', $bit);
  223. $table[] = table_midheader('Ticket Permissions');
  224. $bit = form_radio_yn('p_delete_own', '', $tech[p_delete_own]);
  225. $table[] = array('<b>PERMISSION: delete own tickets</b><br />Can your technician delete their own tickets?', $bit);
  226. $bit = form_radio_yn('p_delete_other', '', $tech[p_delete_other]);
  227. $table[] = array('<b>PERMISSION: delete techs tickets</b><br />Can your technician delete other techs tickets?', $bit);
  228. $bit = form_radio_yn('p_close_ticket', '', $tech[p_close_ticket]);
  229. $table[] = array('<b>PERMISSION: close and re-open tickets</b><br />Can your technician close and re-open tickets?', $bit);
  230. $bit = form_radio_yn('p_tech_view', '', $tech[p_tech_view]);
  231. $table[] = array('<b>PERMISSION: view techs tickets</b><br />Can your technician view other techs tickets?', $bit);
  232. $bit = form_radio_yn('p_tech_edit', '', $tech[p_tech_edit]);
  233. $table[] = array('<b>PERMISSION: edit techs tickets</b><br />Can your technician edit other techs tickets?', $bit);
  234. $table[] = table_midheader('FAQ Permissions');
  235. $bit = form_radio_yn('p_add_k', '', $tech[p_add_k]);
  236. $table[] = array('<b>PERMISSION: add to knowledgebase</b><br />Can your technician add entries to the knowledgebase?', $bit);
  237. $bit = form_radio_yn('p_edit_k', '', $tech[p_edit_k]);
  238. $table[] = array('<b>PERMISSION: edit knowledge base entry</b><br />Can your technician edit entries in the knowledgebase?', $bit);
  239. $bit = form_radio_yn('p_delete_k', '', $tech[p_delete_k]);
  240. $table[] = array('<b>PERMISSION: delete knowledgebase entry</b><br />Can your technician delete entries in the knowledgebase?', $bit);
  241. $bit = form_radio_yn('p_add_c_k', '', $tech[p_add_c_k]);
  242. $table[] = array('<b>PERMISSION: add knowledgebase category</b><br />Can your technician add new categories to the knowledgebase?', $bit);
  243. $bit = form_radio_yn('p_delete_c_k', '', $tech[p_delete_c_k]);
  244. $table[] = array('<b>PERMISSION: delete knowledgebase category</b><br />Can your technician delete categories in the knowlegebase?', $bit);
  245. $bit = form_radio_yn('p_edit_c_k', '', $tech[p_edit_c_k]);
  246. $table[] = array('<b>PERMISSION: edit knowledgebase category</b><br />Can your technician edit categories in the knowlegebase?', $bit);
  247. if ($_REQUEST['do'] == "add2" OR $_REQUEST['do'] == "redo") {
  248. table_header('Your new technician', 'tech.php', array('do' => 'submit'));
  249. table_content('', $table);
  250. table_footer('Create Technician');
  251. unset($table);
  252. } else {
  253. table_header('Edit your technician', 'tech.php', array('do' => 'update', 'id' => $tech[id]));
  254. table_content('', $table);
  255. table_footer('Update Technician');
  256. unset($table);
  257. }
  258. }
  259. ############################### DELETE TECH ###############################
  260. if ($_REQUEST['do'] == "delete") {
  261. if ($id != $user['id']) {
  262. $db->query("DELETE FROM tech WHERE id = '$id'");
  263. $db->query("DELETE FROM tech_attachments WHERE techid = '$id'");
  264. $db->query("DELETE FROM tech_bookmarks WHERE techid = '$id'");
  265. $db->query("DELETE FROM tech_email WHERE techid = '$id'");
  266. $db->query("DELETE FROM tech_notes WHERE techid = '$id'");
  267. $db->query("DELETE FROM tech_session WHERE techid = '$id'");
  268. $db->query("DELETE FROM tech_start_tickets WHERE techid = '$id'");
  269. $db->query("DELETE FROM tech_ticket_save WHERE techid = '$id'");
  270. $db->query("DELETE FROM tech_ticket_watch WHERE techid = '$id'");
  271. $db->query("DELETE FROM tech_timelog WHERE techid = '$id'");
  272. $db->query("DELETE FROM calendar_task_tech WHERE techid = '$id'");
  273. $db->query("SELECT id FROM ticket WHERE tech = '$id'");
  274. while ($logs = $db->row_array()) { // Add entries to ticket logs for each affected ticket
  275. ticketlog($logs[id], 'tech', $id, 0);
  276. }
  277. $db->query("UPDATE ticket SET tech = '0' WHERE tech = '$id'");
  278. jump('tech.php', 'Tech Deleted');
  279. } else {
  280. mistake("You cannot delete your own account!");
  281. }
  282. }
  283. ############################### DISABLE TECH ###############################
  284. if ($_REQUEST['do'] == "disable") {
  285. if ($id != $user['id']) {
  286. $db->query("SELECT id FROM ticket WHERE tech = '$id'");
  287. while ($logs = $db->row_array()) { // Add entries to ticket logs for each affected ticket
  288. ticketlog($logs[id], 12, $id, 0);
  289. }
  290. $db->query("UPDATE ticket SET tech = '0' WHERE tech = '$id'");
  291. $db->query("UPDATE tech SET disabled = '1' WHERE id = '$id'");
  292. jump('tech.php', 'Tech Disabled');
  293. } else {
  294. mistake('You cannot disable your own account!');
  295. }
  296. }
  297. ############################### ENABLE TECH ###############################
  298. if ($_REQUEST['do'] == "enable") {
  299. $db->query("UPDATE tech SET disabled = '0' WHERE id = '$id'");
  300. jump('tech.php', 'Tech Enabled');
  301. }
  302. ############################### VIEW TECHS ###############################
  303. if ($_REQUEST['do'] == "view") {
  304. admin_header('Technicians', 'View Technicians');
  305. $db->query("SELECT id, disabled, username, cats_admin from tech");
  306. while ($tech = $db->row_array()) {
  307. // check current category restrictions
  308. if (strlen($tech[cats_admin])) {
  309. $pbit = "Category restrictions <font color="red">enabled</font>";
  310. } else {
  311. $pbit = "No Category restrictions";
  312. }
  313. $table[] = array(
  314. iff($tech[disabled], "<b>DISABLED</b> <i><a href="tech.php?do=edit&id=$tech[id]">" . $tech[username] . "</a></i>", "<b><a href="tech.php?do=edit&id=$tech[id]">" . $tech[username] . "</a></b>"),
  315. "$pbit - <a href="tech.php?do=cats&id=$tech[id]"><b>Edit</b></a>", 
  316. "<a href="tech.php?do=edit&id=$tech[id]">Edit</a>",
  317. iff($tech[disabled], 
  318. jprompt("Re-enable technician $tech[username]", 
  319. "tech.php?do=enable&id=$tech[id]", 
  320. 'Enable', 
  321. 1), 
  322. jprompt("Confirm disabling of technician $tech[username]\nThe technician's tickets will be set as unassigned.", 
  323. "tech.php?do=disable&id=$tech[id]",
  324. 'Disable', 
  325. 1)
  326. ),
  327. jprompt("Confirm deletion of technician $tech[username]\nThe technician's tickets will be set as unassigned\nDeleting a technician (instead of disabling) will result in loss of information\nin reports and in the ticket log. Where ever possible, disable the technician instead.", 
  328. "tech.php?do=delete&id=$tech[id]", 
  329. 'Delete', 
  330. 1)
  331. );
  332. }
  333. $table[] = array('<CENTER><A HREF="tech.php?do=add">Add a Technician</A></center>');
  334. $cols = array('Technician's Name', 'Edit Category Permissions', 'Edit', 'Disable', 'Delete');
  335. table_header('Edit your technician');
  336. table_content($cols, $table);
  337. table_footer();
  338. }
  339. ############################### VIEW TECHS ###############################
  340. if ($_REQUEST['do'] == "cats") {
  341. admin_header('Technicians', 'Technician Categories');
  342. $tech = $db->query_return("SELECT cats_admin FROM tech WHERE id = '$id'");
  343. $restrictions = explode(',', $tech[cats_admin]);
  344. $table[] = array('<b>No Category Specified</b>', form_radio_yn(0, 'categories', in_array('0', $restrictions)));
  345. $db->query("SELECT id, name FROM ticket_cat");
  346. while ($result = $db->row_array()) {
  347. $table[] = array('<b>' .$result[name] . '</b>', form_radio_yn($result[id], 'categories', in_array($result[id], $restrictions)));
  348. }
  349. $cols = array('Category Name', 'Select YES to disable tech's access to this category');
  350. table_header('Update Category Access', 'tech.php', array('do' => 'cats2', 'id' => $id));
  351. table_content($cols, $table);
  352. table_footer('Update Category Access');
  353. }
  354. ############################### VIEW TECHS ###############################
  355. if ($_REQUEST['do'] == "cats2") {
  356. foreach ($_REQUEST['categories'] AS $key => $var) {
  357. if ($var == '1') {
  358. $disabled .= $key . ',';
  359. }
  360. }
  361. $disabled = substr($disabled, 0, -1);
  362. $db->query("UPDATE tech SET cats_admin = '$disabled' WHERE id = '$id'");
  363. jump('tech.php', 'Selected categories disabled to this technician');
  364. }