/modules/workorder/include.php

https://github.com/MyITCRM/myitcrm1 · PHP · 473 lines · 332 code · 82 blank · 59 comment · 36 complexity · 1f09b412fd08f25910e4ed3ba25d56ae MD5 · raw file

  1. <?php
  2. #####################################
  3. # Display a single open work order #
  4. #####################################
  5. function display_single_open_workorder($db, $wo_id){
  6. $sql = "SELECT ".PRFX."TABLE_WORK_ORDER.*,
  7. ".PRFX."TABLE_CUSTOMER.CUSTOMER_ID,
  8. ".PRFX."TABLE_CUSTOMER.CUSTOMER_DISPLAY_NAME,
  9. ".PRFX."TABLE_CUSTOMER.CUSTOMER_ADDRESS,
  10. ".PRFX."TABLE_CUSTOMER.CUSTOMER_CITY,
  11. ".PRFX."TABLE_CUSTOMER.CUSTOMER_STATE,
  12. ".PRFX."TABLE_CUSTOMER.CUSTOMER_ZIP,
  13. ".PRFX."TABLE_CUSTOMER.CUSTOMER_PHONE,
  14. ".PRFX."TABLE_CUSTOMER.CUSTOMER_WORK_PHONE,
  15. ".PRFX."TABLE_CUSTOMER.CUSTOMER_MOBILE_PHONE,
  16. ".PRFX."TABLE_CUSTOMER.CUSTOMER_EMAIL,
  17. ".PRFX."TABLE_CUSTOMER.CUSTOMER_TYPE,
  18. ".PRFX."TABLE_CUSTOMER.CUSTOMER_FIRST_NAME,
  19. ".PRFX."TABLE_CUSTOMER.CUSTOMER_LAST_NAME,
  20. ".PRFX."TABLE_CUSTOMER.CUSTOMER_WWW,
  21. ".PRFX."TABLE_CUSTOMER.DISCOUNT,
  22. ".PRFX."TABLE_CUSTOMER.CREDIT_TERMS,
  23. ".PRFX."TABLE_CUSTOMER.CUSTOMER_NOTES,
  24. ".PRFX."TABLE_CUSTOMER.CREATE_DATE,
  25. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_ID,
  26. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_DISPLAY_NAME,
  27. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_WORK_PHONE,
  28. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_HOME_PHONE,
  29. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_MOBILE_PHONE,
  30. ".PRFX."TABLE_SCHEDULE.SCHEDULE_START,
  31. ".PRFX."TABLE_SCHEDULE.SCHEDULE_END,
  32. ".PRFX."TABLE_SCHEDULE.SCHEDULE_NOTES
  33. FROM ".PRFX."TABLE_WORK_ORDER
  34. LEFT JOIN ".PRFX."TABLE_CUSTOMER ON ".PRFX."TABLE_WORK_ORDER.CUSTOMER_ID = ".PRFX."TABLE_CUSTOMER.CUSTOMER_ID
  35. LEFT JOIN ".PRFX."TABLE_EMPLOYEE ON ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_ASSIGN_TO = ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_ID
  36. LEFT JOIN ".PRFX."TABLE_SCHEDULE ON ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_ID = ".PRFX."TABLE_SCHEDULE.WORK_ORDER_ID
  37. WHERE ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_ID =".$db->qstr($wo_id)." LIMIT 1";
  38. if(!$result = $db->Execute($sql)) {
  39. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  40. exit;
  41. } else {
  42. $single_workorder_array = $result->GetArray();
  43. if(empty($single_workorder_array)) {
  44. return false;
  45. } else {
  46. return $single_workorder_array;
  47. }
  48. }
  49. }
  50. #####################################
  51. # Display all open Work orders to #
  52. #####################################
  53. function display_workorders($db, $page_no, $where){
  54. global $smarty;
  55. $max_results = 5;
  56. $from = (($page_no * $max_results) - $max_results);
  57. $results = $db->Execute("SELECT COUNT(*) as Num FROM ".PRFX."TABLE_WORK_ORDER WHERE WORK_ORDER_STATUS =".$db->qstr($status));
  58. $total_results = $results->FetchRow();
  59. $total_pages = ceil($total_results["Num"] / $max_results);
  60. if($page_no > 1){
  61. $prev = ($page_no - 1);
  62. $smarty->assign("previous", $prev);
  63. }
  64. if($page_no < $total_pages){
  65. $next = ($page_no + 1);
  66. $smarty->assign("next", $next);
  67. }
  68. $sql = "SELECT
  69. ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_ID,
  70. ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_OPEN_DATE,
  71. ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_ASSIGN_TO,
  72. ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_SCOPE,
  73. ".PRFX."TABLE_CUSTOMER.CUSTOMER_ID,
  74. ".PRFX."TABLE_CUSTOMER.CUSTOMER_DISPLAY_NAME,
  75. ".PRFX."TABLE_CUSTOMER.CUSTOMER_ADDRESS,
  76. ".PRFX."TABLE_CUSTOMER.CUSTOMER_CITY,
  77. ".PRFX."TABLE_CUSTOMER.CUSTOMER_STATE,
  78. ".PRFX."TABLE_CUSTOMER.CUSTOMER_ZIP,
  79. ".PRFX."TABLE_CUSTOMER.CUSTOMER_PHONE,
  80. ".PRFX."TABLE_CUSTOMER.CUSTOMER_WORK_PHONE,
  81. ".PRFX."TABLE_CUSTOMER.CUSTOMER_MOBILE_PHONE,
  82. ".PRFX."TABLE_CUSTOMER.CUSTOMER_EMAIL,
  83. ".PRFX."TABLE_CUSTOMER.CUSTOMER_TYPE,
  84. ".PRFX."TABLE_CUSTOMER.CUSTOMER_FIRST_NAME,
  85. ".PRFX."TABLE_CUSTOMER.CUSTOMER_LAST_NAME,
  86. ".PRFX."TABLE_CUSTOMER.DISCOUNT,
  87. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_ID,
  88. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_DISPLAY_NAME,
  89. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_WORK_PHONE,
  90. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_HOME_PHONE,
  91. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_MOBILE_PHONE,
  92. ".PRFX."CONFIG_WORK_ORDER_STATUS.CONFIG_WORK_ORDER_STATUS
  93. FROM ".PRFX."TABLE_WORK_ORDER
  94. LEFT JOIN ".PRFX."TABLE_CUSTOMER ON ".PRFX."TABLE_WORK_ORDER.CUSTOMER_ID = ".PRFX."TABLE_CUSTOMER.CUSTOMER_ID
  95. LEFT JOIN ".PRFX."TABLE_EMPLOYEE ON ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_ASSIGN_TO = ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_ID
  96. LEFT JOIN ".PRFX."CONFIG_WORK_ORDER_STATUS ON ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_CURRENT_STATUS = ".PRFX."CONFIG_WORK_ORDER_STATUS.CONFIG_WORK_ORDER_STATUS_ID
  97. ".$where." GROUP BY ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_ID ORDER BY ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_ID DESC";
  98. if(!$result = $db->Execute($sql)) {
  99. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  100. exit;
  101. }
  102. $workorders_array = $result->GetArray();
  103. if(empty($workorders_array)) {
  104. return false;
  105. } else {
  106. return $workorders_array;
  107. }
  108. }
  109. #############################
  110. # Display Work Order Notes #
  111. #############################
  112. function display_workorder_notes($db, $wo_id){
  113. $sql = "SELECT ".PRFX."TABLE_WORK_ORDER_NOTES.*, ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_DISPLAY_NAME FROM ".PRFX."TABLE_WORK_ORDER_NOTES, ".PRFX."TABLE_EMPLOYEE WHERE WORK_ORDER_ID=".$db->qstr($wo_id)." AND ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_ID = ".PRFX."TABLE_WORK_ORDER_NOTES.WORK_ORDER_NOTES_ENTER_BY ";
  114. if(!$result = $db->Execute($sql)) {
  115. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  116. exit;
  117. }
  118. $work_order_notes = $result->GetArray();
  119. return $work_order_notes;
  120. }
  121. #############################
  122. # Display Work Order Status #
  123. #############################
  124. function display_workorder_status($db, $wo_id){
  125. $sql = "SELECT ".PRFX."TABLE_WORK_ORDER_STATUS.*, ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_DISPLAY_NAME
  126. FROM ".PRFX."TABLE_WORK_ORDER_STATUS, ".PRFX."TABLE_EMPLOYEE
  127. WHERE ".PRFX."TABLE_WORK_ORDER_STATUS.WORK_ORDER_ID=".$db->qstr($wo_id)."
  128. AND ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_ID = ".PRFX."TABLE_WORK_ORDER_STATUS.WORK_ORDER_STATUS_ENTER_BY ORDER BY ".PRFX."TABLE_WORK_ORDER_STATUS.WORK_ORDER_STATUS_ID";
  129. if(!$result = $db->Execute($sql)) {
  130. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  131. exit;
  132. }
  133. $work_order_status = $result->GetArray();
  134. return $work_order_status;
  135. }
  136. $smarty->assign('wo_stat', display_workorder_status($db, $wo_id));
  137. #########################################
  138. # Display Customer Contact Information #
  139. #########################################
  140. function display_customer_info($db, $customer_id){
  141. $sql = "SELECT * FROM ".PRFX."TABLE_CUSTOMER WHERE CUSTOMER_ID=".$db->qstr($customer_id);
  142. if(!$result = $db->Execute($sql)) {
  143. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  144. exit;
  145. }
  146. $customer_array = $result->GetArray();
  147. return $customer_array;
  148. }
  149. #############################################################
  150. # Display all open Work orders to #
  151. #############################################################
  152. function display_tech($db){
  153. $sql = "SELECT EMPLOYEE_ID, EMPLOYEE_LOGIN FROM ".PRFX."TABLE_EMPLOYEE";
  154. if(!$result = $db->Execute($sql)) {
  155. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  156. exit;
  157. }
  158. while($row = $result->FetchRow())
  159. {
  160. $id = $row["EMPLOYEE_ID"];
  161. $tech = $row["EMPLOYEE_LOGIN"];
  162. $tech_array[$id]=$tech;
  163. }
  164. return $tech_array;
  165. }
  166. #############################################################
  167. # Insert New Work Order #
  168. #############################################################
  169. function insert_new_workorder($db,$VAR){
  170. global $smarty;
  171. //Remove Extra Slashes caused by Magic Quotes
  172. $work_order_description_string = $VAR['work_order_description'];
  173. $work_order_description_string = stripslashes($work_order_description_string);
  174. $work_order_comments_string = $VAR['work_order_comments'];
  175. $work_order_comments_string = stripslashes($work_order_comments_string);
  176. $sql = "INSERT INTO ".PRFX."TABLE_WORK_ORDER SET
  177. CUSTOMER_ID =".$db->qstr($VAR["customer_ID"] ).",
  178. WORK_ORDER_OPEN_DATE =".$db->qstr(time() ).",
  179. WORK_ORDER_STATUS =".$db->qstr(10 ).",
  180. WORK_ORDER_CURRENT_STATUS =".$db->qstr(1 ).",
  181. WORK_ORDER_CREATE_BY =".$db->qstr($VAR["created_by"] ).",
  182. WORK_ORDER_SCOPE =".$db->qstr($VAR["scope"] ).",
  183. WORK_ORDER_DESCRIPTION =".$db->qstr($work_order_description_string ).",
  184. LAST_ACTIVE =".$db->qstr(time() ).",
  185. WORK_ORDER_COMMENT =".$db->qstr($work_order_comments_string );
  186. if(!$result = $db->Execute($sql)) {
  187. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  188. exit;
  189. }
  190. $wo_id = $db->Insert_ID();
  191. $VAR['wo_id'] = $wo_id;
  192. $VAR['work_order_status_notes'] = "Work Order Created";
  193. insert_new_status($db,$VAR);
  194. insert_new_note($db,$VAR);
  195. if(!empty($VAR['SCHEDULE_notes'])){
  196. insert_new_note($db,$VAR);
  197. }
  198. $smarty->assign('wo_id', $wo_id);
  199. $smarty->assign('customer_id', $customer_id);
  200. $smarty->display("workorder/new_results.tpl");
  201. }
  202. #############################################################
  203. # Insert Status note #
  204. #############################################################
  205. function insert_new_status($db,$VAR){
  206. $sql = "INSERT INTO ".PRFX."TABLE_WORK_ORDER_STATUS SET
  207. WORK_ORDER_ID =". $db->qstr( $VAR["wo_id"] ).",
  208. WORK_ORDER_STATUS_DATE =". $db->qstr( time() ).",
  209. WORK_ORDER_STATUS_NOTES =". $db->qstr( $VAR["work_order_status_notes"] ).",
  210. WORK_ORDER_STATUS_ENTER_BY =". $db->qstr( $_SESSION['login_id'] );
  211. if(!$result = $db->Execute($sql)) {
  212. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  213. exit;
  214. }
  215. update_last_active($db,$VAR["wo_id"]);
  216. return true;
  217. }
  218. ####################################################
  219. # Update Work Order Satus #
  220. ####################################################
  221. function update_status($db,$VAR){
  222. $sql = "UPDATE ".PRFX."TABLE_WORK_ORDER SET
  223. WORK_ORDER_CURRENT_STATUS =". $db->qstr( $VAR["status"] ).",
  224. LAST_ACTIVE =". $db->qstr(time())."
  225. WHERE WORK_ORDER_ID =". $db->qstr($VAR["wo_id"]);
  226. if(!$result = $db->Execute($sql)) {
  227. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  228. exit;
  229. }
  230. if($VAR["status"] == '1') {
  231. $c_status = "Created";
  232. } elseif ($VAR["status"] == '2') {
  233. $c_status = "Assigned";
  234. } elseif ($VAR["status"] == '3') {
  235. $c_status = "Waiting For Parts";
  236. } elseif ($VAR["status"] == '6' ){
  237. $c_status = "Closed";
  238. } elseif ($VAR["status"] == '7') {
  239. $c_status = "Awaiting Payment";
  240. } elseif ($VAR["status"] == '8') {
  241. $c_status = "Payment Made";
  242. } elseif ($VAR["status"] == '9') {
  243. $c_status = "Pending";
  244. } elseif ($VAR["status"] == '10') {
  245. $c_status = "Open";
  246. }
  247. $VAR['work_order_status_notes'] = "Work Order Changed status to ".$c_status;
  248. insert_new_status($db,$VAR);
  249. return true;
  250. }
  251. ########################################
  252. # Display Status #
  253. ########################################
  254. function display_status($db){
  255. $sql = "SELECT * FROM ".PRFX."CONFIG_WORK_ORDER_STATUS WHERE DISPLAY='1'";
  256. if(!$result = $db->Execute($sql)) {
  257. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  258. exit;
  259. }
  260. while($row = $result->FetchRow()){
  261. $id = $row["CONFIG_WORK_ORDER_STATUS_ID"];
  262. $status = $row["CONFIG_WORK_ORDER_STATUS"];
  263. $status_array[$id] = $status;
  264. }
  265. return $status_array;
  266. }
  267. #########################################
  268. # Display Parts #
  269. #########################################
  270. function display_parts($db,$wo_id) {
  271. $q = "SELECT * FROM ".PRFX."ORDERS WHERE WO_ID=".$db->qstr( $wo_id );
  272. if(!$rs = $db->execute($q)) {
  273. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  274. exit;
  275. }
  276. $arr = $rs->GetArray();
  277. return $arr;
  278. }
  279. ##################################
  280. # Display resolution #
  281. ##################################
  282. function display_resolution($db,$wo_id) {
  283. $q="SELECT ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_CLOSE_BY,
  284. ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_RESOLUTION,
  285. ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_CLOSE_DATE,
  286. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_ID,
  287. ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_DISPLAY_NAME
  288. FROM ".PRFX."TABLE_WORK_ORDER
  289. LEFT JOIN ".PRFX."TABLE_EMPLOYEE ON (".PRFX."TABLE_WORK_ORDER.WORK_ORDER_CLOSE_BY = ".PRFX."TABLE_EMPLOYEE.EMPLOYEE_ID)
  290. WHERE ".PRFX."TABLE_WORK_ORDER.WORK_ORDER_ID=".$db->qstr($wo_id);
  291. if(!$rs = $db->Execute($q)) {
  292. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  293. exit;
  294. } else {
  295. $resolution = $rs->GetArray();
  296. return $resolution;
  297. }
  298. }
  299. ########################################
  300. # Add New Note #
  301. ########################################
  302. function insert_new_note($db,$VAR){
  303. //Remove Extra Slashes caused by Magic Quotes
  304. $work_order_notes_string = $VAR['work_order_notes'];
  305. $work_order_notes_string = stripslashes($work_order_notes_string);
  306. $sql = "INSERT INTO ".PRFX."TABLE_WORK_ORDER_NOTES SET
  307. WORK_ORDER_ID =". $db->qstr( $VAR["wo_id"] ).",
  308. WORK_ORDER_NOTES_DESCRIPTION =". $db->qstr( $work_order_notes_string ).",
  309. WORK_ORDER_NOTES_ENTER_BY =". $db->qstr( $_SESSION["login_id"] ).",
  310. WORK_ORDER_NOTES_DATE =". $db->qstr( time() );
  311. if(!$result = $db->Execute($sql)) {
  312. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  313. exit;
  314. } else {
  315. update_last_active($db,$VAR["wo_id"]);
  316. }
  317. return true;
  318. }
  319. ########################################
  320. # Close Work Order #
  321. ########################################
  322. function close_work_order($db,$VAR){
  323. //Remove Extra Slashes caused by Magic Quotes
  324. $resolution_string = $VAR['resolution'];
  325. $resolution_string = stripslashes($resolution_string);
  326. /* Insert resolution and close information */
  327. $sql = "UPDATE ".PRFX."TABLE_WORK_ORDER SET
  328. WORK_ORDER_STATUS ='9',
  329. WORK_ORDER_CLOSE_DATE = ". $db->qstr( time() ).",
  330. WORK_ORDER_RESOLUTION = ". $db->qstr( $resolution_string ).",
  331. WORK_ORDER_CLOSE_BY = ". $db->qstr( $_SESSION['login_id'] ).",
  332. WORK_ORDER_ASSIGN_TO = ". $db->qstr( $_SESSION['login_id'] ).",
  333. WORK_ORDER_CURRENT_STATUS ='7'
  334. WHERE WORK_ORDER_ID = ". $db->qstr( $VAR['wo_id'] );
  335. if(!$result = $db->Execute($sql)) {
  336. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  337. exit;
  338. }
  339. /* Update status notes */
  340. $arr = array('wo_id'=>$VAR["wo_id"], 'work_order_status_notes'=>'Work Order has been closed and set to Awating Payment');
  341. insert_new_status($db,$arr);
  342. return true;
  343. }
  344. ########################################
  345. # Close Work Order with no invoice #
  346. ########################################
  347. function close_work_order_no_invoice($db,$VAR){
  348. //Remove Extra Slashes caused by Magic Quotes
  349. $resolution_string = $VAR['resolution'];
  350. $resolution_string = stripslashes($resolution_string);
  351. /* Insert resolution and close information */
  352. $sql = "UPDATE ".PRFX."TABLE_WORK_ORDER SET
  353. WORK_ORDER_STATUS ='6',
  354. WORK_ORDER_CLOSE_DATE = ". $db->qstr( time() ).",
  355. WORK_ORDER_RESOLUTION = ". $db->qstr( $resolution_string ).",
  356. WORK_ORDER_CLOSE_BY = ". $db->qstr( $_SESSION['login_id'] ).",
  357. WORK_ORDER_ASSIGN_TO = ". $db->qstr( $_SESSION['login_id'] ).",
  358. WORK_ORDER_CURRENT_STATUS ='6'
  359. WHERE WORK_ORDER_ID = ". $db->qstr( $VAR['wo_id'] );
  360. if(!$result = $db->Execute($sql)) {
  361. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  362. exit;
  363. }
  364. /* Update status notes */
  365. $arr = array('wo_id'=>$VAR["wo_id"], 'work_order_status_notes'=>'Work Order has been closed and No Invoice Required');
  366. insert_new_status($db,$arr);
  367. return true;
  368. }
  369. ###############################
  370. # Get Work Order schedule #
  371. ###############################
  372. function get_work_order_schedule ($db,$wo_id){
  373. $sql = "SELECT * FROM ".PRFX."TABLE_SCHEDULE WHERE WORK_ORDER_ID=".$db->qstr($wo_id);
  374. if(!$rs = $db->Execute($sql)) {
  375. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  376. exit;
  377. }
  378. $schedule = $rs->GetArray();
  379. return $schedule;
  380. }
  381. #################################
  382. # Update Last Active #
  383. #################################
  384. function update_last_active($db,$wo_id) {
  385. $q = "UPDATE ".PRFX."TABLE_WORK_ORDER SET LAST_ACTIVE=".$db->qstr(time())." WHERE WORK_ORDER_ID=".$db->qstr($wo_id);
  386. if(!$rs = $db->execute($q)) {
  387. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  388. exit;
  389. }
  390. }
  391. ?>