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

电子政务应用

开发平台:

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: upgrade-110-197.php,v $
  15. // | $Date: 2004/02/12 21:16:57 $
  16. // | $Revision: 1.8 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Worker script to upgrade from v1.1.0 to v2.0.0.
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. ob_implicit_flush();
  23. install_check();
  24. ////////////////////////// CREATING TABLES //////////////////////////
  25. if ($_REQUEST['step'] == 1) {
  26. do_message("Removing unused tables");
  27. $queries = array(
  28. "DROP TABLE gateway_error",
  29. "DROP TABLE template"
  30. );
  31. execute($queries);
  32. do_message_yes();
  33. do_message("Loading basic data");
  34. load_data('./../upgrade_v1_v2/upgrade_tables.sql');
  35. do_message_yes();
  36. }
  37. ////////////////////////// UPDATE CATEGORIES, PRIORITIES //////////////////////////
  38. if ($_REQUEST['step'] == 2) {
  39. do_message("Updating category table");
  40. $queries = array(
  41. "RENAME TABLE categories TO ticket_cat",
  42. "ALTER TABLE ticket_cat 
  43. ADD COLUMN user_select int(1) NOT NULL DEFAULT '0',
  44. ADD COLUMN show_category int(10) NOT NULL DEFAULT '0',
  45. ADD COLUMN require_registration int(1) NOT NULL DEFAULT '0',
  46. ADD COLUMN auto_assign_tech int(1) NOT NULL DEFAULT '0'",
  47. "UPDATE ticket_cat SET user_select = '1'"
  48. );
  49. execute($queries);
  50. do_message_yes();
  51. do_message("Updating priority table");
  52. $queries = array(
  53. "RENAME TABLE priority TO ticket_pri",
  54. "ALTER TABLE ticket_pri
  55. ADD COLUMN user_view int(1) NOT NULL DEFAULT '0',
  56. ADD COLUMN user_select int(1) NOT NULL DEFAULT '0',
  57. ADD COLUMN show_priority int(10) NOT NULL DEFAULT '0',
  58. ADD COLUMN require_registration int(1) NOT NULL DEFAULT '0',
  59. ADD COLUMN auto_assign_tech int(1) NOT NULL DEFAULT '0'",
  60. "UPDATE ticket_pri SET user_view = '1', user_select = '1'"
  61. );
  62. execute($queries);
  63. do_message_yes();
  64. }
  65. ////////////////////////// E-MAIL BANS //////////////////////////
  66. if ($_REQUEST['step'] == 3) {
  67. do_message("Updating banned e-mails");
  68. $bans = $db->query_return_array_id("SELECT * FROM email_ban", 'email');
  69. if (is_array($bans)) {
  70. $bans = array_values($bans);
  71. $db->query("INSERT INTO data SET name = 'email_ban', data = '" . mysql_escape_string(serialize($bans)) . "', isdefault = '1'");
  72. }
  73. $db->query("DROP TABLE email_ban");
  74. do_message_yes();
  75. }
  76. ////////////////////////// GATEWAY ACCOUNTS //////////////////////////
  77. if ($_REQUEST['step'] == 4) {
  78. do_message("Updating gateway accounts");
  79. $queries = array(
  80. "RENAME TABLE gateway TO gateway_accounts",
  81. "ALTER TABLE gateway_accounts CHANGE technician tech int(10) NOT NULL DEFAULT 0,
  82. ADD COLUMN is_default int(1) NOT NULL DEFAULT 0"
  83. );
  84. execute($queries);
  85. $gateway = $db->query_return("SELECT min(id) AS id FROM gateway_accounts");
  86. $db->query("UPDATE gateway_accounts SET is_default = '1' WHERE id = '$gateway[id]'");
  87. do_message_yes();
  88. }
  89. ////////////////////////// ANNOUNCEMENTS //////////////////////////
  90. if ($_REQUEST['step'] == 5) {
  91. do_message("Updating announcements");
  92. $queries = array(
  93. "RENAME TABLE announcements TO news",
  94. "ALTER TABLE news ADD COLUMN date int(10) NOT NULL DEFAULT 0,
  95. ADD COLUMN logged_in int(1) NOT NULL DEFAULT 0,
  96. ADD COLUMN logged_out int(1) NOT NULL DEFAULT 0",
  97. "UPDATE news SET date = unix_timestamp()",
  98. "UPDATE news SET logged_in = 1",
  99. "UPDATE news SET logged_out = 1"
  100. );
  101. execute($queries);
  102. do_message_yes();
  103. }
  104. ////////////////////////// PRIVATE MESSAGES //////////////////////////
  105. if ($_REQUEST['step'] == 6) {
  106. do_message("Create private message tables");
  107. $queries = array(
  108. "CREATE TABLE pm_relations (
  109. pmid int(10) NOT NULL DEFAULT 0, 
  110. techid int(10) NOT NULL DEFAULT 0, 
  111. is_read int(1) NOT NULL DEFAULT 0
  112. )",
  113. "CREATE TABLE pm_source (
  114. id int(10) NOT NULL AUTO_INCREMENT,
  115. fromid int(10) NOT NULL default '0', 
  116. title varchar(250) NOT NULL default '', 
  117. message mediumtext NOT NULL, 
  118. timestamp int(10) NOT NULL default '0',
  119. PRIMARY KEY (id)
  120. )"
  121. );
  122. execute($queries);
  123. do_message_yes();
  124. $messages = $db->query_return_array("SELECT * FROM messages");
  125. do_message("Update private messatges");
  126. if (is_array($messages)) {
  127. foreach ($messages AS $message) {
  128. $db->query("INSERT INTO pm_source SET
  129. fromid = '$message[fromid]',
  130. title = '" . mysql_escape_string($message['subject']) . "',
  131. message = '" . mysql_escape_string($message['message']) . "',
  132. timestamp = '$message[send_date]'"
  133. );
  134. if($id = $db->last_id()) {
  135. $db->query("INSERT INTO pm_relations SET
  136. pmid = '$id',
  137. techid = '$message[toid]',
  138. is_read = '$message[is_read]'"
  139. );
  140. }
  141. }
  142. }
  143. $db->query("DROP TABLE messages");
  144. do_message_yes();
  145. }
  146. ////////////////////////// UPDATE TECHS //////////////////////////
  147. if ($_REQUEST['step'] == 7) {
  148. do_message("Getting technician data");
  149. $categories = $db->query_return_array_id("SELECT id FROM ticket_cat", 'id');
  150. $db->query("SELECT * FROM tech_cat");
  151. while ($data = $db->row_array()) {
  152. if ($data['admin_p']) {
  153. $tech_cats[$data['techid']][] = $data['catid'];
  154. }
  155. }
  156. if (is_array($tech_cats)) {
  157. foreach ($tech_cats AS $tech => $cats) {
  158. $tech_cats[$tech] = array_diff($categories, $cats);
  159. }
  160. }
  161. $tech_email = $db->query_return_array("SELECT * FROM tech_email");
  162. do_message_yes();
  163. do_message("Removing technician tables");
  164. $queries = array(
  165. "DROP TABLE tech_email",
  166. "CREATE TABLE tech_email ( 
  167. techid int(10) NOT NULL default '0', 
  168. fieldname varchar(250) NOT NULL default '', 
  169. value varchar(250) NOT NULL default '', 
  170. newreply int(1) NOT NULL default '0', 
  171. newticket int(1) NOT NULL default '0', 
  172. email int(1) NOT NULL default '0', 
  173. sms int(1) NOT NULL default '0', 
  174. KEY fieldname (fieldname,value)
  175. )",
  176. "DROP TABLE tech_sendmail",
  177. "RENAME TABLE tech_ticketwatch TO tech_ticket_watch",
  178. "ALTER TABLE tech_ticket_watch ADD COLUMN created int(10) DEFAULT '0',
  179. CHANGE COLUMN date_todo datetodo date DEFAULT '0000-00-00'"
  180. );
  181. execute($queries);
  182. do_message_yes();
  183. do_message("Updating tech email notifications");
  184. if (is_array($tech_email)) {
  185. foreach ($tech_email AS $tech_email) {
  186. if ($tech_email['cat_id']) {
  187. $data = "fieldname = 'category', value = '$tech_email[cat_id]'";
  188. } else {
  189. $data = "fieldname = 'priority', value = '$tech_email[pri_id]'";
  190. }
  191. if ($tech_email['email']) {
  192. $email = 1;
  193. } else {
  194. $email = 0;
  195. }
  196. $db->query("INSERT INTO tech_email SET
  197. techid = '$tech_email[tech_id]',
  198. newreply = '$tech_email[replys]',
  199. newticket = '$tech_email[tickets]',
  200. email = '$email',
  201. sms = '',
  202. $data"
  203. );
  204. }
  205. }
  206. do_message_yes();
  207. do_message("Updating the user table");
  208. // Now alter and update the actual tech table.
  209. $queries = array(
  210. "ALTER TABLE tech DROP COLUMN real_name,
  211. CHANGE COLUMN all_newticket email_new_email int(1) NOT NULL DEFAULT '0',
  212. CHANGE COLUMN all_replyticket email_reply_email int(1) NOT NULL DEFAULT '0',
  213. CHANGE COLUMN all_ownticket email_own_email int(1) NOT NULL DEFAULT '0',
  214. DROP COLUMN p_cat_control,
  215. ADD COLUMN fielddisplay MEDIUMTEXT NOT NULL DEFAULT '',
  216. ADD COLUMN alert_reply_your int(1) NOT NULL DEFAULT '1',
  217. ADD COLUMN alert_reply_cat int(1) NOT NULL DEFAULT '0',
  218. ADD COLUMN alert_reply_all int(1) NOT NULL DEFAULT '0',
  219. ADD COLUMN alert_new_cat int(1) NOT NULL DEFAULT '1',
  220. ADD COLUMN alert_new_all int(1) NOT NULL DEFAULT '0',
  221. ADD COLUMN alert_pm int(1) NOT NULL DEFAULT '0',
  222. ADD COLUMN alert_sound int(1) NOT NULL DEFAULT '0',
  223. ADD COLUMN alert_popup int(1) NOT NULL DEFAULT '0',
  224. ADD COLUMN alert_time int(10) NOT NULL DEFAULT '0',
  225. ADD COLUMN alert_frequency int(1) NOT NULL DEFAULT '0',
  226. ADD COLUMN cats_user varchar(255) NOT NULL DEFAULT '',
  227. ADD COLUMN cats_admin varchar(255) NOT NULL DEFAULT '',
  228. ADD COLUMN email_new_sms int(1) NOT NULL DEFAULT '0',
  229. ADD COLUMN email_reply_sms int(1) NOT NULL DEFAULT '0',
  230. ADD COLUMN email_own_sms int(1) NOT NULL DEFAULT '0',
  231. ADD COLUMN sms varchar(255) NOT NULL DEFAULT '',
  232. ADD COLUMN faq_editor_yes int(1) NOT NULL DEFAULT '0',
  233. ADD COLUMN faq_editor_no int(1) NOT NULL DEFAULT '0',
  234. ADD COLUMN disabled int(1) NOT NULL DEFAULT '0',
  235. ADD COLUMN email_assigned int(1) NOT NULL DEFAULT '0',
  236. ADD COLUMN email_pm int(1) NOT NULL DEFAULT '0',
  237. ADD COLUMN weekstart int(11) NOT NULL DEFAULT '0',
  238. ADD COLUMN p_approve_new_registrations int(1) NOT NULL DEFAULT '1',
  239. ADD COLUMN password_cookie varchar(8) NOT NULL DEFAULT '',
  240. ADD COLUMN disabled_reason varchar(255) NOT NULL DEFAULT '',
  241. ADD COLUMN email_attachments int(1) NOT NULL DEFAULT '0',
  242. ADD COLUMN email_own_attachments int(1) NOT NULL DEFAULT '0',
  243. ADD COLUMN copy_to_clipboard int(1) NOT NULL DEFAULT '0',
  244. ADD COLUMN p_user_expire int(1) NOT NULL DEFAULT '1',
  245. ADD COLUMN selected_sound varchar(255) NOT NULL DEFAULT '',
  246. ADD COLUMN p_quickedit int(1) NOT NULL DEFAULT '1',
  247. ADD COLUMN p_global_note int(1) NOT NULL DEFAULT '1',
  248. ADD COLUMN footer int(10) NOT NULL DEFAULT '0'",
  249. "UPDATE tech SET password_cookie = md5('username' + rand())"
  250. );
  251. execute($queries);
  252. do_message_yes();
  253. do_message("Updating tech restricted categories");
  254. $techs = $db->query_return_array_id("SELECT id FROM tech");
  255. if (is_array($techs)) {
  256. foreach($techs AS $tech) {
  257. if (is_array($tech_cats[$tech['id']])) {
  258. $db->query("UPDATE tech SET cats_admin = '" . join(',', $tech_cats[$tech['id']]) . "' WHERE id = '$tech[id]'");
  259. }
  260. }
  261. }
  262. do_message_yes();
  263. }
  264. ////////////////////////// UPDATE TASKS //////////////////////////
  265. if ($_REQUEST['step'] == 8) {
  266. do_message("Updating calendar tables");
  267. $tasks = $db->query_return_array("SELECT * FROM tech_todo");
  268. $queries = array(
  269. "DROP TABLE tech_todo",
  270. "CREATE TABLE calendar_task ( 
  271. id int(10) NOT NULL auto_increment, 
  272. title varchar(250) NOT NULL default '', 
  273. description mediumtext NOT NULL, 
  274. techmaker int(10) NOT NULL default '0', 
  275. multistaff int(1) NOT NULL default '0', 
  276. globalcomplete int(1) NOT NULL default '0', 
  277. notifycompletion int(1) NOT NULL default '0', 
  278. repeattype int(1) NOT NULL default '0', 
  279. value1 int(10) NOT NULL default '0', 
  280. value2 varchar(250) NOT NULL default '0', 
  281. starttime time NOT NULL default '00:00:00', 
  282. startdate date NOT NULL default '0000-00-00', 
  283. enddate date NOT NULL default '0000-00-00', 
  284. endtime time NOT NULL default '00:00:00', 
  285. PRIMARY KEY  (id), 
  286. UNIQUE KEY id (id), 
  287. KEY repeattype (repeattype), 
  288. KEY startdate (startdate), 
  289. KEY enddate (enddate))",
  290. "CREATE TABLE calendar_task_tech ( 
  291. id int(10) NOT NULL auto_increment, 
  292. eventid int(10) NOT NULL default '0', 
  293. email_due int(1) NOT NULL default '0', 
  294. email_before1 int(3) NOT NULL default '0', 
  295. email_before2 int(3) NOT NULL default '0', 
  296. techid int(1) NOT NULL default '0', 
  297. completed int(1) NOT NULL default '0', 
  298. stamp int(10) default '0', 
  299. PRIMARY KEY  (id), 
  300. KEY eventid (eventid))"
  301. );
  302. execute($queries);
  303. do_message_yes();
  304. do_message("Updating calendar tasks");
  305. if (is_array($tasks)) {
  306. foreach ($tasks AS $task) {
  307. $db->query("INSERT INTO calendar_task SET
  308. title = '" . mysql_escape_string($task['title']) . "',
  309. description = '" . mysql_escape_string($task['todo']) . "',
  310. startdate = '" . date('Y-m-d', $task['date_added']) . "',
  311. enddate = '" . mysql_escape_string($task['date_todo']) . "',
  312. techmaker = '" . mysql_escape_string($task['techid']) . "'"
  313. );
  314. $id = $db->last_id();
  315. $db->query("INSERT INTO calendar_task_tech SET
  316. eventid = '$id',
  317. techid = '" . mysql_escape_string($task['techid']) . "',
  318. completed = '" . mysql_escape_string($task['completed']) . "',
  319. stamp = '" . mysql_escape_string($task['date_added']) . "'"
  320. );
  321. }
  322. }
  323. do_message_yes();
  324. }
  325. ////////////////////////// CUSTOM FIELDS //////////////////////////
  326. if ($_REQUEST['step'] == 9) {
  327. do_message("Updating user custom field table");
  328. $queries = array(
  329. "RENAME TABLE user_table TO user_def",
  330. "UPDATE user_def SET formtype = 'input' WHERE formtype = 'textfield'",
  331. "ALTER TABLE user_def CHANGE reg_ex regex varchar(255),
  332. CHANGE formlength length int(10),
  333. CHANGE rows height int(10),
  334. CHANGE field_order displayorder int(10),
  335. CHANGE description description mediumtext,
  336. CHANGE display_name display_name mediumtext,
  337. CHANGE parse_default_value parsed_default_value varchar(255),
  338. DROP COLUMN sql_type,
  339. DROP COLUMN listvalues,
  340. DROP COLUMN admin_editable,
  341. CHANGE formtype formtype enum('input','select','textarea','multiselect','radio','checkbox','system') DEFAULT 'select',
  342. ADD COLUMN data mediumtext,
  343. ADD COLUMN extrainput int(1) DEFAULT '0',
  344. ADD COLUMN maxoptions smallint(4) DEFAULT '0',
  345. ADD COLUMN minoptions smallint(4) DEFAULT '0',
  346. ADD COLUMN minlength smallint(6) DEFAULT '0',
  347. ADD COLUMN maxlength smallint(6) DEFAULT '0',
  348. ADD COLUMN error_message varchar(255),
  349. ADD COLUMN required int(1) DEFAULT '0',
  350. ADD COLUMN perline int(2) DEFAULT '0',
  351. ADD COLUMN extrainput_location int(1) DEFAULT '0',
  352. ADD COLUMN extrainput_text varchar(255) DEFAULT '0',
  353. ADD COLUMN multiselect int(1) DEFAULT '0'",
  354. "DELETE FROM user_def WHERE name NOT like '%custom%'"
  355. );
  356. execute($queries);
  357. do_message_yes();
  358. do_message("Updating user custom fields");
  359. $user_customs = $db->query_return_array("SELECT * FROM user_def WHERE name like '%custom%'");
  360. if (is_array($user_customs)) {
  361. foreach ($user_customs AS $user_custom) {
  362. if ($user_custom['formtype'] == 'radio' or $user_custom['formtype'] == 'select') {
  363. // We have to load the data array
  364. $values = explode('###', $user_custom['listvalues']);
  365. if (is_array($values)) {
  366. $i = 0;
  367. $data = array();
  368. foreach($values AS $value) {
  369. $data[] = array($i, $i, $value, 0);
  370. }
  371. }
  372. }
  373. $data = mysql_escape_string(serialize($data));
  374. $display_name = serialize(array('1' => $user_custom['display_name']));
  375. $description = serialize(array('1' => $user_custom['description']));
  376. $error_message = serialize(array('1' => ''));
  377. $display_name = mysql_escape_string($display_name);
  378. $error_message = mysql_escape_string($error_message);
  379. $description = mysql_escape_string($description);
  380. $db->query("UPDATE user_def SET
  381. data = '$data',
  382. display_name = '$display_name',
  383. error_message = '$error_message',
  384. description = '$description'
  385. WHERE id = '$user_custom[id]'"
  386. );
  387. }
  388. }
  389. do_message_yes();
  390. }
  391. ////////////////////////// CUSTOM FIELDS //////////////////////////
  392. if ($_REQUEST['step'] == 10) {
  393. do_message("Updating ticket custom field table");
  394. $queries = array(
  395. "RENAME TABLE ticket_table TO ticket_def",
  396. "UPDATE ticket_def SET formtype = 'input' WHERE formtype = 'textfield'",
  397. "ALTER TABLE ticket_def CHANGE reg_ex regex varchar(255),
  398. CHANGE formlength length int(10),
  399. CHANGE rows height int(10),
  400. CHANGE field_order displayorder int(10),
  401. CHANGE description description mediumtext,
  402. CHANGE display_name display_name mediumtext,
  403. CHANGE user_start ticket_start int(1),
  404. CHANGE parse_default_value parsed_default_value varchar(255),
  405. DROP COLUMN sql_type,
  406. DROP COLUMN listvalues,
  407. DROP COLUMN admin_editable,
  408. CHANGE formtype formtype enum('input','select','textarea','multiselect','radio','checkbox','system') DEFAULT 'select',
  409. ADD COLUMN data mediumtext,
  410. ADD COLUMN extrainput int(1) DEFAULT '0',
  411. ADD COLUMN maxoptions smallint(4) DEFAULT '0',
  412. ADD COLUMN minoptions smallint(4) DEFAULT '0',
  413. ADD COLUMN minlength smallint(6) DEFAULT '0',
  414. ADD COLUMN maxlength smallint(6) DEFAULT '0',
  415. ADD COLUMN error_message varchar(255),
  416. ADD COLUMN required int(1) DEFAULT '0',
  417. ADD COLUMN perline int(2) DEFAULT '0',
  418. ADD COLUMN extrainput_location int(1) DEFAULT '0',
  419. ADD COLUMN extrainput_text varchar(255) DEFAULT '0',
  420. ADD COLUMN multiselect int(1) DEFAULT '0'",
  421. "DELETE FROM ticket_def WHERE name NOT like '%custom%'"
  422. );
  423. execute($queries);
  424. do_message_yes();
  425. do_message("Updating ticket custom fields");
  426. $ticket_customs = $db->query_return_array("SELECT * FROM ticket_def WHERE name like '%custom%'");
  427. if (is_array($ticket_customs)) {
  428. foreach ($ticket_customs AS $ticket_custom) {
  429. if ($ticket_custom['formtype'] == 'radio' or $ticket_custom['formtype'] == 'select') {
  430. // We have to load the data array
  431. $values = explode('###', $ticket_custom['listvalues']);
  432. $data = array();
  433. if (is_array($values)) {
  434. $i = 0;
  435. foreach($values AS $value) {
  436. $data[] = array($i, $i, $value, 0);
  437. }
  438. }
  439. }
  440. $data = mysql_escape_string(serialize($data));
  441. $display_name = array('1' => $ticket_custom['display_name']);
  442. $description = array('1' => $user_custom['description']);
  443. $error_message = array('1' => '');
  444. $display_name = mysql_escape_string(serialize($display_name));
  445. $error_message = mysql_escape_string(serialize($error_message));
  446. $description = mysql_escape_string(serialize($description));
  447. $db->query("UPDATE ticket_def SET
  448. data = '$data',
  449. display_name = '$display_name',
  450. error_message = '$error_message'
  451. WHERE id = '$ticket_custom[id]'"
  452. );
  453. }
  454. }
  455. do_message_yes();
  456. }
  457. ////////////////////////// USER TABLE //////////////////////////
  458. if ($_REQUEST['step'] == 11) {
  459. do_message("Updating ticket custom fields");
  460. $users = $db->query_return_array("SELECT * FROM user");
  461. $totusers = $db->num_rows();
  462. $queries = array(
  463. "CREATE TABLE user2 ( 
  464. id int(10) unsigned NOT NULL auto_increment, 
  465. username varchar(250) NOT NULL default '', 
  466. email varchar(250) NOT NULL default '', 
  467. validate_key varchar(6) NOT NULL default '0', 
  468. awaiting_validation int(1) NOT NULL default '0', 
  469. password varchar(250) NOT NULL default '', 
  470. date_registered int(10) NOT NULL default '0', 
  471. language int(10) NOT NULL default '0', 
  472. password_cookie varchar(8) NOT NULL default '', 
  473. password_url varchar(8) NOT NULL default '', 
  474. autoresponds int(1) NOT NULL default '0', 
  475. disabled int(1) NOT NULL default '0', 
  476. awaiting_manual_validation int(1) NOT NULL default '0', 
  477. expire_tickets int(11) default NULL, 
  478. expire_date int(10) unsigned default NULL, 
  479. expire_type enum('none','ticket','date','both') default 'none', 
  480. disabled_reason varchar(255) default NULL, 
  481. timezone varchar(32) DEFAULT '', 
  482. PRIMARY KEY  (id), 
  483. UNIQUE KEY id (id)) 
  484. TYPE=MyISAM;");
  485. execute($queries);
  486. $user_fields = $db->query_return_array("SELECT name FROM user_def");
  487. if (is_array($user_fields)) {
  488. foreach ($user_fields AS $field) {
  489. $db->query("ALTER TABLE user2 ADD $field[name] MEDIUMTEXT");
  490. }
  491. }
  492. if (is_array($users)) {
  493. $data = array();
  494. $usernames = array();
  495. $total = 0;
  496. foreach ($users AS $user) {
  497. $hash = md5($username . mktime() . rand());
  498. $hash = mysql_escape_string(substr($hash, 0, 8));
  499. $username = make_username($user['email'], NULL, 1);
  500. $i = 0;
  501. if (in_array($username, $usernames)) {
  502. $i++;
  503. while (in_array(($username . $i), $usernames)) {
  504. $i++;
  505. }
  506. $username = ($username . $i);
  507. }
  508. $usernames[] = $username;
  509. $data_tmp = array(
  510. $user['id'], # ID
  511. $username, # Username
  512. $user['email'], # Email
  513. $user['validate_number'], # Validate_key
  514. 0, # awaiting_validation
  515. $user['password'], # password
  516. mktime(), # date_registered
  517. 0, # language
  518. $hash, # password_cookie
  519. $hash, # password_url
  520. 0, # autoresponds
  521. 0, # disabled
  522. 0, # awaiting_manual_validation
  523. NULL, # expire_tickets
  524. NULL, # expire_date
  525. 'none', # expire_type
  526. NULL, # disabled_reason
  527. ''); # timezone
  528. if (is_array($user_fields)) {
  529. foreach ($user_fields AS $field) {
  530. $data_tmp[] = $user[$field['name']];
  531. }
  532. }
  533. $data[] = $data_tmp;
  534. $count++;
  535. if ($count >= 500) {
  536. $db->query("INSERT INTO user2 VALUES " . multi_array2sql($data));
  537. unset($data);
  538. $total += $count;
  539. $count = 0;
  540. }
  541. }
  542. if ($count) {
  543. $db->query("INSERT INTO user2 VALUES " . multi_array2sql($data));
  544. }
  545. }
  546. $db->query("DROP TABLE user");
  547. $db->query("RENAME TABLE user2 TO user");
  548. do_message_yes();
  549. }
  550. ////////////////////////// TICKET TABLE //////////////////////////
  551. if ($_REQUEST['step'] == 12) {
  552. do_message("Updating ticket table");
  553. $queries = array(
  554. "ALTER TABLE ticket
  555. CHANGE COLUMN user_id userid int(10) NOT NULL default '0', 
  556. CHANGE COLUMN admin_owner tech int(10) NOT NULL default '0', 
  557. ADD COLUMN language int(10) NOT NULL default '0', 
  558. CHANGE COLUMN priority priority int(10) NOT NULL default '0',
  559. CHANGE COLUMN category category int(10) NOT NULL default '0', 
  560. CHANGE COLUMN awaiting_reply awaiting_tech int(1) NOT NULL default '0', 
  561. CHANGE COLUMN date_started date_opened int(10) NOT NULL default '0', 
  562. CHANGE COLUMN last_reply date_lastreply int(10) NOT NULL default '0', 
  563. ADD COLUMN date_lastreply_tech int(10) NOT NULL default '0', 
  564. CHANGE COLUMN lock_id lock_techid int(10) NOT NULL default '0', 
  565. CHANGE COLUMN onhold_date date_locked int(10) NOT NULL default '0', 
  566. ADD COLUMN ref varchar(20) NOT NULL default '', 
  567. ADD COLUMN gatewayid int(10) NOT NULL default '0', 
  568. ADD COLUMN ticketemail varchar(250) NOT NULL default '', 
  569. ADD COLUMN nodisplay int(1) NOT NULL default '0', 
  570. ADD COLUMN date_awaiting_toggled INT(10) NOT NULL DEFAULT '0', 
  571. CHANGE COLUMN ticket_pass authcode varchar(8) NOT NULL default '',
  572. DROP COLUMN gateway,
  573. DROP COLUMN is_email,
  574. ADD KEY userid (userid), 
  575. ADD KEY techid (tech), 
  576. ADD KEY category (category), 
  577. ADD KEY priority (priority), 
  578. ADD KEY ref (ref), 
  579. ADD KEY is_open (is_open), 
  580. ADD KEY awaiting_tech (awaiting_tech), 
  581. ADD KEY nodisplay (nodisplay)
  582. ",
  583.         "RENAME TABLE reply TO ticket_message",
  584.         "ALTER TABLE ticket_message
  585.             CHANGE COLUMN admin_id techid int(1) NOT NULL DEFAULT '0',
  586.             ADD COLUMN sourceid int(10) NOT NULL DEFAULT '0',
  587.             ADD COLUMN userid int(10) NOT NULL DEFAULT '0',
  588.             ADD COLUMN striptags int(1) NOT NULL DEFAULT '0'",
  589.         "CREATE INDEX techid ON ticket_message (techid)"
  590. );
  591. execute($queries);
  592. do_message_yes();
  593. }
  594. ////////////////////////// TICKETS //////////////////////////
  595. if ($_REQUEST['step'] == 13) {
  596. $result = $db->query_return("SELECT COUNT(*) AS total FROM ticket WHERE !ref");
  597. $total = $result['total'];
  598. if ($total < 300) {
  599. do_message("Updating $total tickets");
  600. } else {
  601. $left = $total - 300;
  602. do_message("Updating 1,000 tickets ($left remaining)");
  603. }
  604. $db->query("SELECT id FROM ticket WHERE !ref LIMIT 300");
  605. if ($db->num_rows()) {
  606. while ($res = $db->row_array()) {
  607. $process[] = $res['id'];
  608. }
  609. foreach($process AS $id) {
  610. $db->query("UPDATE ticket SET ref = '" . mysql_escape_string(make_ticket_ref()) . "' WHERE id = '$id'");
  611. }
  612. }
  613. do_message_yes();
  614. if ($left) {
  615. define('CUSTOMDIRECT', 1);
  616. $step = 13;
  617. $extra_variables = '';
  618. }
  619. }
  620. ////////////////////////// UPDATE ATTACHMENTS //////////////////////////
  621. if ($_REQUEST['step'] == 14) {
  622. do_message("Create & Alter attachment tables");
  623. $queries = array(
  624. "CREATE TABLE faq_attachments ( 
  625. id int(10) NOT NULL auto_increment, 
  626. blobid int(10) NOT NULL default '0', 
  627. filename varchar(255) NOT NULL default '0', 
  628. filesize varchar(255) NOT NULL default '0', 
  629. extension varchar(10) NOT NULL default '0', 
  630. articleid int(10) NOT NULL default '0', 
  631. techid int(10) NOT NULL default '0', 
  632. timestamp int(10) NOT NULL default '0', 
  633. PRIMARY KEY  (id), 
  634. UNIQUE KEY id (id), 
  635. KEY articleid (articleid))",
  636. "CREATE TABLE tech_attachments ( 
  637. id int(10) NOT NULL auto_increment, 
  638. blobid int(10) NOT NULL default '0', 
  639. filename varchar(250) NOT NULL default '', 
  640. filesize varchar(50) NOT NULL default '', 
  641. techid int(10) NOT NULL default '0', 
  642. category int(10) NOT NULL default '0', 
  643. extension varchar(10) NOT NULL default '', 
  644. timestamp int(10) NOT NULL default '0', 
  645. comments mediumtext NOT NULL, 
  646. PRIMARY KEY  (id), 
  647. UNIQUE KEY id (id))",
  648. "CREATE TABLE blobs ( 
  649. id int(10) unsigned NOT NULL auto_increment, 
  650. blobdata longblob NOT NULL, 
  651. PRIMARY KEY  (id), 
  652. UNIQUE KEY id (id))",
  653. "RENAME TABLE attachments TO ticket_attachments",
  654. "ALTER TABLE ticket_attachments
  655. DROP COLUMN description,
  656. DROP COLUMN uploaded,
  657. CHANGE COLUMN filetype extension varchar(5) NOT NULL DEFAULT '0',
  658. ADD COLUMN blobid int(10) NOT NULL DEFAULT '0',
  659. ADD COLUMN techid int(10) NOT NULL DEFAULT '0',
  660. ADD COLUMN userid int(10) NOT NULL DEFAULT '0',
  661. ADD COLUMN temporaryid int(10) NOT NULL DEFAULT '0',
  662. ADD COLUMN timestamp int(10) NOT NULL DEFAULT '0',
  663. ADD COLUMN toemail int(1) NOT NULL DEFAULT '0'"
  664. );
  665. execute($queries);
  666. do_message_yes();
  667. }
  668. ////////////////////////// UPDATE ATTACHMENT DATA //////////////////////////
  669. if ($_REQUEST['step'] == 15) {
  670. $result = $db->query_return("SELECT COUNT(*) AS total FROM ticket_attachments WHERE !blobid");
  671. $total = $result['total'];
  672. if ($total < 25) {
  673. do_message("Updating $total attachments");
  674. } else {
  675. $left = $total - 25;
  676. do_message("Updating 25 attachments ($left remaining)");
  677. }
  678. $db->query("SELECT * FROM ticket_attachments WHERE !blobid LIMIT 25");
  679. while ($result = $db->row_array()) {
  680. $db2->query("
  681. INSERT INTO blobs SET
  682. blobdata  = '" . mysql_escape_string($result['attachment']) . "'
  683. ");
  684. $id = $db2->last_id();
  685. $db2->query("
  686. UPDATE ticket_attachments SET
  687. blobid = '" . $id . "',
  688. extension = '" . addslashes(attachment_extension($result[filename])) . "',
  689. attachment = ''
  690. WHERE id = '$result[id]'
  691. ");
  692. }
  693. do_message_yes();
  694. if ($left) {
  695. define('CUSTOMDIRECT', 1);
  696. $step = 15;
  697. $extra_variables = '';
  698. } else {
  699. do_message("Dropping old attachment fields");
  700. $db->query("ALTER TABLE ticket_attachments DROP attachment");
  701. do_message_yes();
  702. }
  703. }
  704. ////////////////////////// UPDATE KNOWLEDGE BASE //////////////////////////
  705. if ($_REQUEST['step'] == 16) {
  706. do_message("Updating knowledge base");
  707. $queries = array(
  708. "RENAME TABLE kb_cats TO faq_cats",
  709. "ALTER TABLE faq_cats
  710. CHANGE COLUMN article_number totalarticles int(10),
  711. ADD COLUMN articles int(10) NOT NULL DEFAULT '0',
  712. ADD COLUMN p_loggedin int(1) NOT NULL DEFAULT '0',
  713. ADD COLUMN p_restricted int(1) NOT NULL DEFAULT '0',
  714. ADD COLUMN parentlist varchar(250) NOT NULL DEFAULT '',
  715. ADD COLUMN newdate int(10) NOT NULL DEFAULT '0',
  716. ADD COLUMN editdate int(10) NOT NULL DEFAULT '0'",
  717. "UPDATE faq_cats SET newdate = unix_timestamp(), editdate = unix_timestamp()",
  718. "RENAME TABLE kb_articles TO faq_articles",
  719. "ALTER TABLE faq_articles
  720. CHANGE COLUMN made_by techid_made int(10) NOT NULL DEFAULT '0',
  721. CHANGE COLUMN modified_by techid_modified int(10) NOT NULL DEFAULT '0',
  722. CHANGE COLUMN category_id category int(10) NOT NULL DEFAULT '0',
  723. ADD COLUMN show_order int(10) NOT NULL DEFAULT '0',
  724. ADD COLUMN to_validate int(10) NOT NULL DEFAULT '0',
  725. ADD COLUMN keywords mediumtext NOT NULL DEFAULT '',
  726. ADD COLUMN userid int(10) NOT NULL DEFAULT '0',
  727. ADD COLUMN question_html int(1) NOT NULL DEFAULT '0',
  728. ADD COLUMN answer_html int(1) NOT NULL DEFAULT '0',
  729. ADD COLUMN rating int(10) NOT NULL DEFAULT '0',
  730. ADD COLUMN votes int(10) NOT NULL DEFAULT '0',
  731. ADD COLUMN ref varchar(20) NOT NULL DEFAULT ''",
  732. "RENAME TABLE kb_related TO faq_articles_related"
  733. );
  734. execute($queries);
  735. do_message_yes();
  736. do_message("Updating knowledge base articles");
  737. $faqs = $db->query_return_array_id("SELECT id FROM faq_articles", 'id');
  738. if (is_array($faqs)) {
  739. foreach ($faqs AS $id) {
  740. $db->query("UPDATE faq_articles SET ref = '" . make_ticket_ref('faq_articles') . "' WHERE id = $id");
  741. }
  742. }
  743. require_once('./../tech/faq/faq_include.php');
  744. $db->query("SELECT keywords, id FROM faq_articles");
  745. while ($result = $db->row_array()) {
  746. $words = explode(',', $result['keywords']);
  747. if (@is_array($words)) {
  748. foreach($words AS $key => $var) {
  749. if (trim($var) != '') {
  750. if ($data[$var]) {
  751. $data[$var] .= ',' . $result['id'];
  752. } else {
  753. $data[$var] = $result['id'];
  754. }
  755. }
  756. }
  757. }
  758. }
  759. $db->query("DELETE FROM faq_keywords");
  760. if (is_array($data)) {
  761. $db->query("INSERT INTO faq_keywords (word, articles) VALUES " . insertsql($data) . "");
  762. }
  763. do_message_yes();
  764. do_message("Updating knowledge base counters");
  765. update_counters();
  766. update_parentlist();
  767. do_message_yes();
  768. do_message("Updating version number to v2.0.0");
  769. $db->query("UPDATE settings SET value = '2.0.0' WHERE settings = 'deskpro_version'");
  770. do_message_yes();
  771. }
  772. ////////////////////////// UPDATE KNOWLEDGE BASE //////////////////////////
  773. if ($_REQUEST['step'] == 17) {
  774. do_message("Loading Installation Data");
  775. load_data('./../upgrade_v1_v2/upgrade_data.sql');
  776. do_message_yes();
  777. define('FINISHED', 1);
  778. }
  779. ?>