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

电子政务应用

开发平台:

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: 201.php,v $
  15. // | $Date: 2004/02/12 21:16:57 $
  16. // | $Revision: 1.10 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Worker script to upgrade from v2.0.0 Beta 1 to v2.0.0 Beta 2
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. ob_implicit_flush();
  23. install_check();
  24. ############################################# STEP 1 #############################################
  25. if ($_REQUEST['step'] == 1) {
  26. /*
  27. - Remove duplicated id indexes (unique when we have primary already)
  28. - Set some ids as primary which are currently just an index
  29. */
  30. $db->Halt_On_Error = 'no';
  31. do_message("Removing duplicate id indexes & adding primary keys");
  32. $queries = array(
  33. "ALTER TABLE `gateway_error` DROP INDEX `id`",
  34. "ALTER TABLE `gateway_error` ADD INDEX (`id`)",
  35. "ALTER TABLE `gateway_error` CHANGE `id` `id` INT( 10 ) DEFAULT '0' NOT NULL AUTO_INCREMENT",
  36. "ALTER TABLE `gateway_error` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` ) ",
  37. "ALTER TABLE `gateway_error` DROP INDEX `id`",
  38. "ALTER TABLE `escalate` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` ) ",
  39. "ALTER TABLE `languages` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` ) ",
  40. "ALTER TABLE `user_help_cats` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` ) ",
  41. "ALTER TABLE `ticket_notes` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` ) ",
  42. "ALTER TABLE `tech_ticket_save` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` ) ",
  43. "ALTER TABLE `ticket_fielddisplay` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` ) ",
  44. "ALTER TABLE `blobs ` DROP INDEX `id`",
  45. "ALTER TABLE `calendar_task` DROP INDEX `id`",
  46. "ALTER TABLE `faq_articles` DROP INDEX `id`",
  47. "ALTER TABLE `faq_attachments` DROP INDEX `id`",
  48. "ALTER TABLE `faq_cats` DROP INDEX `id`",
  49. "ALTER TABLE `faq_comments` DROP INDEX `id`",
  50. "ALTER TABLE `faq_searchlog` DROP INDEX `id`",
  51. "ALTER TABLE `faq_searchlog` DROP INDEX `id_2`",
  52. "ALTER TABLE `faq_word` DROP INDEX `id`",
  53. "ALTER TABLE `gateway_accounts` DROP INDEX `id`",
  54. "ALTER TABLE `gateway_spam` DROP INDEX `id`",
  55. "ALTER TABLE `gateway_spam` DROP INDEX `id_2`",
  56. "ALTER TABLE `news` DROP INDEX `id`",
  57. "ALTER TABLE `quickreply` DROP INDEX `id`",
  58. "ALTER TABLE `quickreply_cat` DROP INDEX `id`",
  59. "ALTER TABLE `report` DROP INDEX `id`",
  60. "ALTER TABLE `report_stat` DROP INDEX `id`",
  61. "ALTER TABLE `report_style` DROP INDEX `id`",
  62. "ALTER TABLE `search` DROP INDEX `id`",
  63. "ALTER TABLE `search` DROP INDEX `techid_2`",
  64. "ALTER TABLE `settings` DROP INDEX `id`",
  65. "ALTER TABLE `settings_cat` DROP INDEX `id`",
  66. "ALTER TABLE `tech` DROP INDEX `id`",
  67. "ALTER TABLE `tech_attachments` DROP INDEX `id`",
  68. "ALTER TABLE `tech_news` DROP INDEX `id`",
  69. "ALTER TABLE `tech_sendmail` DROP INDEX `id`",
  70. "ALTER TABLE `tech_ticket_watch` DROP INDEX `id`",
  71. "ALTER TABLE `template_cat` DROP INDEX `id`",
  72. "ALTER TABLE `template_email` DROP INDEX `id`",
  73. "ALTER TABLE `template_replace` DROP INDEX `id`",
  74. "ALTER TABLE `ticket_attachments` DROP INDEX `id`",
  75. "ALTER TABLE `ticket_cat` DROP INDEX `id`",
  76. "ALTER TABLE `ticket_def` DROP INDEX `id`",
  77. "ALTER TABLE `ticket_log` DROP INDEX `id`",
  78. "ALTER TABLE `ticket_message` DROP INDEX `id`",
  79. "ALTER TABLE `ticket_pri` DROP INDEX `id`",
  80. "ALTER TABLE `user` DROP INDEX `id`",
  81. "ALTER TABLE `user_def` DROP INDEX `id`",
  82. "ALTER TABLE `user_notes` DROP INDEX `id`",
  83. "ALTER TABLE `user_help_cats` DROP INDEX `id`",
  84. "ALTER TABLE `tech_ticket_save` DROP INDEX `id`",
  85. "ALTER TABLE `ticket` DROP INDEX `id`"
  86. );
  87. execute($queries);
  88. do_message_yes();
  89. }
  90. ############################################# STEP 2 #############################################
  91. if ($_REQUEST['step'] == 2) {
  92. /*
  93. - Add new fields to the database
  94. - Modify fields in the database
  95. */
  96. $db->Halt_On_Error = 'no';
  97. do_message("Adding / modifying database fields");
  98. $queries = array(
  99. "ALTER TABLE template_words ADD cust INT(1) NOT NULL DEFAULT '0'",
  100. "ALTER TABLE calendar_task ADD timezone_dst int(1) NOT NULL DEFAULT ''",
  101. "ALTER TABLE calendar_task ADD timezone int(10) NOT NULL DEFAULT ''",
  102. "ALTER TABLE user ADD name varchar(250) NOT NULL DEFAULT ''",
  103. "ALTER TABLE user ADD timezone INT(10) NOT NULL DEFAULT ''",
  104. "ALTER TABLE user ADD timezone_dst INT(1) NOT NULL DEFAULT ''",
  105. "ALTER TABLE calendar_task ADD weekstart int(11) NOT NULL DEFAULT '0'",
  106. "ALTER TABLE faq_articles ADD views int(10) NOT NULL DEFAULT '0'",
  107. "ALTER TABLE faq_comments ADD new int(1) NOT NULL DEFAULT '0'",
  108. "ALTER TABLE languages ADD isocode varchar(250) NOT NULL DEFAULT ''",
  109. "ALTER TABLE languages ADD contenttype varchar(250) NOT NULL DEFAULT ''",
  110. "ALTER TABLE languages ADD direction enum('ltr', 'rtl') default 'ltr' NOT NULL",
  111. "ALTER TABLE query_log ADD filename varchar(250) NOT NULL DEFAULT ''",
  112. "ALTER TABLE settings ADD options varchar(250)  NOT NULL DEFAULT ''",
  113. "ALTER TABLE tech ADD email_faq int(1) NOT NULL DEFAULT '0'",
  114. "ALTER TABLE tech ADD userfield_selection mediumtext NOT NULL DEFAULT ''",
  115. "ALTER TABLE tech ADD timezone varchar(32)  NOT NULL DEFAULT ''",
  116. "ALTER TABLE tech ADD p_html_tech int(1) NOT NULL DEFAULT '0'",
  117. "ALTER TABLE tech ADD p_html_user int(1) NOT NULL DEFAULT '0'",
  118. "ALTER TABLE tech ADD timezone_dst int(11) NOT NULL DEFAULT '0'",
  119. "ALTER TABLE user ADD timezone varchar(32) NOT NULL DEFAULT ''",
  120. "ALTER TABLE user ADD weekstart int(11) NOT NULL DEFAULT '0'",
  121. "ALTER TABLE query_log CHANGE duration duration decimal(15,10)",
  122. "ALTER TABLE `settings` CHANGE category category int(10) NOT NULL default '0'",
  123. "ALTER TABLE `pm_relations` CHANGE `pmid` `pmid` INT( 10 ) DEFAULT '0' NOT NULL",
  124. "ALTER TABLE `pm_relations` DROP INDEX `pmid`",
  125. "ALTER TABLE `pm_relations` DROP INDEX techid",
  126. "ALTER TABLE `pm_relations` DROP PRIMARY KEY , ADD PRIMARY KEY ( `pmid`, `techid` ) ",
  127. "ALTER TABLE quickreply DROP global",
  128. "ALTER TABLE settings DROP `int`",
  129. "ALTER TABLE settings DROP `type`",
  130. "ALTER TABLE tech DROP faq_editor_yes",
  131. "ALTER TABLE tech DROP faq_editor_no",
  132. "ALTER TABLE ticket DROP date_reply",
  133. "ALTER TABLE ticket DROP closed_by"
  134. );
  135. execute($queries);
  136. do_message_yes();
  137. }
  138. ############################################# STEP 3 #############################################
  139. if ($_REQUEST['step'] == 3) {
  140. /*
  141. - Drop unused tables
  142. - Create new tables
  143. */
  144. $db->Halt_On_Error = 'no';
  145. do_message("Removing unused tables & creating tech_sendmail table");
  146. $queries = array(
  147. "DROP TABLE settingcat",
  148. "DROP TABLE ticket_message_source",
  149. "DROP TABLE faq_wordindex",
  150. "DROP TABLE spellwords",
  151. "DROP TABLE tech_cat",
  152. "DROP TABLE template_backup",
  153. "DROP TABLE templatecat",
  154. "CREATE TABLE tech_sendmail (
  155.   id int(10) NOT NULL auto_increment,
  156.   parent int(10) NOT NULL default '0',
  157.   techid int(10) NOT NULL default '0',
  158.   subject varchar(255) NOT NULL default '',
  159.   message mediumtext NOT NULL,
  160.   from_email varchar(255) NOT NULL default '',
  161.   to_email varchar(255) NOT NULL default '',
  162.   tracking int(1) NOT NULL default '0',
  163.   awaiting_reply int(1) NOT NULL default '0',
  164.   pass varchar(7) NOT NULL default '',
  165.   date_sent int(10) NOT NULL default '0',
  166.   PRIMARY KEY  (id),
  167.   UNIQUE KEY id (id)
  168. )"
  169. );
  170. execute($queries);
  171. do_message_yes();
  172. }
  173. ############################################# STEP 4 #############################################
  174. if ($_REQUEST['step'] == 4) {
  175. /*
  176. Some queries to run but not produce errors
  177. */
  178. $db->Halt_On_Error = 'no';
  179. do_message("Adding new indexes (1)");
  180. $queries = array(
  181. "ALTER TABLE `tech_ticket_watch` DROP INDEX techid ",
  182. "ALTER TABLE `tech_ticket_watch` ADD INDEX (`techid`,`created`)",
  183. "ALTER TABLE `ticket_def` DROP INDEX name ",
  184. "ALTER TABLE `ticket_cat` DROP INDEX user_view ",
  185. "ALTER TABLE `template_email` DROP INDEX name ",
  186. "ALTER TABLE `template_email` ADD INDEX (`name`)",
  187. "ALTER TABLE `template` DROP INDEX name ",
  188. "ALTER TABLE `template` ADD INDEX (`name`)",
  189. "ALTER TABLE `faq_cats_related` DROP INDEX show_cat ",
  190. "ALTER TABLE `faq_cats_related` ADD INDEX (`show_cat`)",
  191. "ALTER TABLE `faq_comments` DROP INDEX new",
  192. "ALTER TABLE `faq_comments` ADD INDEX (`new`)",
  193. "ALTER TABLE `faq_comments` DROP INDEX articleid",
  194. "ALTER TABLE `faq_comments` ADD INDEX (`articleid`)",
  195. "ALTER TABLE `quickreply` DROP INDEX techid",
  196. "ALTER TABLE `quickreply` ADD INDEX (`techid`) ",
  197. "ALTER TABLE `tech_attachments` DROP INDEX techid",
  198. "ALTER TABLE `tech_attachments` ADD INDEX (`techid`) ",
  199. "ALTER TABLE `tech_attachments` DROP INDEX category",
  200. "ALTER TABLE `tech_attachments` ADD INDEX (`category`) ",
  201. "ALTER TABLE `tech_email` DROP INDEX fieldname",
  202. "ALTER TABLE `tech_help_entry` DROP INDEX category",
  203. "ALTER TABLE `tech_help_entry` ADD INDEX (`category`) ",
  204. "ALTER TABLE `tech_notes` DROP INDEX category",
  205. "ALTER TABLE `tech_notes` DROP INDEX techid",
  206. "ALTER TABLE `tech_notes` ADD INDEX (`techid`,`category`) ",
  207. "ALTER TABLE `tech_email` DROP INDEX techid",
  208. "ALTER TABLE `tech_email` ADD INDEX techid",
  209. "ALTER TABLE `tech_bookmarks` DROP INDEX category",
  210. "ALTER TABLE `tech_bookmarks` DROP INDEX techid",
  211. "ALTER TABLE `tech_bookmarks` ADD INDEX (`techid`,`category`) ",
  212. "ALTER TABLE `tech_session` DROP INDEX techid",
  213. "ALTER TABLE `tech_session` ADD INDEX (`techid`) ",
  214. "ALTER TABLE `faq_articles` DROP INDEX ref ",
  215. "ALTER TABLE `faq_articles` ADD UNIQUE (`ref`) ",
  216. "ALTER TABLE `tech_ticket_search` DROP INDEX techid",
  217. "ALTER TABLE `tech_ticket_search` ADD INDEX (`techid`) ",
  218. "ALTER TABLE `tech_timelog` DROP INDEX techid",
  219. "ALTER TABLE `tech_timelog` ADD INDEX (`techid`) ",
  220. "ALTER TABLE `tech_timelog_archive` DROP INDEX techid",
  221. "ALTER TABLE `tech_timelog_archive` ADD INDEX (`techid`) ",
  222. "ALTER TABLE `template_words` DROP INDEX language",
  223. "ALTER TABLE `template_words` ADD INDEX (`language`) ",
  224. "ALTER TABLE `template_words` DROP INDEX category",
  225. "ALTER TABLE `template_words` DROP INDEX wordref"
  226. );
  227. execute($queries);
  228. do_message_yes();
  229. }
  230. ############################################# STEP 5 #############################################
  231. if ($_REQUEST['step'] == 5) {
  232. /*
  233. Some queries to run but not produce errors
  234. */
  235. $db->Halt_On_Error = 'no';
  236. do_message("Adding new indexes (2)");
  237. $queries = array(
  238. "ALTER TABLE `ticket` DROP INDEX date_opened",
  239. "ALTER TABLE `ticket` ADD INDEX (`date_opened`) ",
  240. "ALTER TABLE `ticket_log` DROP INDEX techid",
  241. "ALTER TABLE `ticket_log` ADD INDEX (`techid`) ",
  242. "ALTER TABLE `ticket_message` DROP INDEX date",
  243. "ALTER TABLE `user` DROP INDEX username",
  244. "ALTER TABLE `user` ADD INDEX (`username`) ",
  245. "ALTER TABLE `user` DROP INDEX email",
  246. "ALTER TABLE `user` ADD INDEX (`email`) ",
  247. "ALTER TABLE `user` DROP INDEX awaiting_manual_validation",
  248. "ALTER TABLE `user` ADD INDEX (`awaiting_manual_validation`) ",
  249. "ALTER TABLE `user_bill` DROP INDEX ticketid",
  250. "ALTER TABLE `user_bill` DROP INDEX userid",
  251. "ALTER TABLE `user_bill` ADD INDEX (`ticketid`, `userid`) ",
  252. "ALTER TABLE `user_notes` DROP INDEX userid",
  253. "ALTER TABLE `user_notes` ADD INDEX (`userid`, `techid`) ",
  254. "ALTER TABLE `user_session` DROP INDEX userid",
  255. "ALTER TABLE `user_session` ADD INDEX (`userid`) ",
  256. "ALTER TABLE `query_log` DROP INDEX duration",
  257. "ALTER TABLE `query_log` ADD INDEX (`duration`) ",
  258. "ALTER TABLE `query_log` DROP INDEX stamp",
  259. "ALTER TABLE `query_log` ADD INDEX (`stamp`) "
  260. );
  261. execute($queries);
  262. do_message_yes();
  263. }
  264. ############################################# STEP 6 #############################################
  265. if ($_REQUEST['step'] == 6) {
  266. $db->Halt_On_Error = 'yes';
  267. /*
  268. 2.0.1 changes
  269. */
  270. do_message("Delete orphaned templates");
  271. $db->query("DELETE FROM template_email WHERE (language = 0 AND category != 'Tech Emails')");
  272. $db->query("DELETE FROM template_email WHERE (category != 'User Emails' AND category != 'Tech Emails')");
  273. do_message_yes();
  274. do_message("Updating calendar timezone fields");
  275. $queries = array(
  276. "ALTER TABLE calendar_task CHANGE timezone timezone int(10) NOT NULL default '0'",
  277. "ALTER TABLE calendar_task CHANGE weekstart weekstart int(10) NOT NULL default '0'",
  278. "ALTER TABLE calendar_task CHANGE timezone_dst timezone_dst int(1) NOT NULL default '0'",
  279. "ALTER TABLE gateway_pop_accounts CHANGE target target varchar(64) NOT NULL default 'user'", 
  280. "ALTER TABLE ticket CHANGE authcode authcode varchar(250) NOT NULL default ''" 
  281. );
  282. execute($queries);
  283. do_message_yes();
  284. do_message("Updating tech & user timezone fields");
  285. $queries = array(
  286. "ALTER TABLE tech CHANGE timezone timezone int(10) NOT NULL default '0'",
  287. "ALTER TABLE tech CHANGE weekstart weekstart int(10) NOT NULL default '0'",
  288. "ALTER TABLE tech CHANGE timezone_dst timezone_dst int(1) NOT NULL default '0'",
  289. "ALTER TABLE user CHANGE timezone timezone int(10) NOT NULL default '0'",
  290. "ALTER TABLE user CHANGE timezone_dst timezone_dst int(1) NOT NULL default '0'",
  291. "ALTER TABLE template_email CHANGE language language int(10) NOT NULL default '0'"
  292. );
  293. execute($queries);
  294. do_message_yes();
  295. // we need to redo the languages for the new language import system
  296. do_message("Updating the languages");
  297. $result = $db->query_return("
  298. SELECT COUNT(*) AS total FROM languages WHERE id = 1 OR id = 2 OR id = 3 OR id = 4 OR id = 5
  299. ");
  300. if ($result['total'] == 5) {
  301. $queries = array(
  302. "ALTER TABLE languages ADD installid int(10) NOT NULL default '0'",
  303. "UPDATE languages SET installid = 1 WHERE id = 1",
  304. "UPDATE languages SET installid = 2 WHERE id = 2",
  305. "UPDATE languages SET installid = 3 WHERE id = 3",
  306. "UPDATE languages SET installid = 4 WHERE id = 4",
  307. "UPDATE languages SET installid = 5 WHERE id = 5"
  308. );
  309. } else {
  310. $queries = array(
  311. "ALTER TABLE languages ADD installid int(10) NOT NULL default '0'",
  312. "DELETE FROM languages WHERE id = 1 OR id = 2 OR id = 3 OR id = 4 OR id = 5",
  313. "INSERT INTO languages VALUES (1,'English',1,0,'en','ISO-8859-1','ltr',1)",
  314. "INSERT INTO languages VALUES (2,'Spanish',1,0,'es','ISO-8859-1','ltr',2)",
  315. "INSERT INTO languages VALUES (3,'Hebrew',1,0,'he','ISO-8859-8-i','rtl',3)",
  316. "INSERT INTO languages VALUES (4,'Dutch',1,0,'nl','ISO-8859-1','ltr',4)",
  317. "INSERT INTO languages VALUES (5,'Danish',1,0,'da','ISO-8859-1','ltr',5)"
  318. );
  319. }
  320. $queries[] = "INSERT INTO languages VALUES (6, 'Russian', 1, 0, 'ru', 'ISO-8859-5', 'ltr', 6)";
  321. execute($queries);
  322. do_message_yes();
  323. // remove reports of too many templates from beta/rc releases
  324. do_message("Removing orphaned email templates");
  325. $db->query("DELETE FROM template_email WHERE !custom AND name NOT IN ('BODY_article_accepted', 'BODY_article_changed', 'BODY_article_deleted', 'BODY_category_updated', 'BODY_cc', 'BODY_changepass', 'BODY_comment_sent', 'BODY_comment_standard', 'BODY_email_warning', 'BODY_error_new', 'BODY_error_reply', 'BODY_faq_article_sent', 'BODY_newemail_confirm', 'BODY_newpass', 'BODY_newquestion', 'BODY_newquestion_tech', 'BODY_newquestion_validate', 'BODY_question_closed', 'BODY_question_reopened', 'BODY_question_staff_reply', 'BODY_question_user_reply', 'BODY_register', 'BODY_register_confirm', 'BODY_register_confirmed', 'BODY_register_confirmed_tech', 'BODY_register_manually_validated', 'BODY_register_tech', 'EMAIL_footer', 'TECHBODY_digest', 'TECHBODY_error_reply', 'TECHBODY_faq', 'TECHBODY_newpm', 'TECHBODY_newquestion', 'TECHBODY_newquestion_sms', 'TECHBODY_newtask', 'TECHBODY_newuser', 'TECHBODY_ownership', 'TECHBODY_reply', 'TECHBODY_reply_sms', 'TECHBODY_report', 'TECHBODY_task_reminder', 'TECHBODY_task_toggled')");
  326. $db->query("DELETE FROM template WHERE !custom AND name NOT IN ('ERROR_default', 'FAQ_article', 'FAQ_article_print', 'FAQ_category', 'FAQ_comment', 'FAQ_email', 'FAQ_header', 'FAQ_home', 'FAQ_new', 'FAQ_search', 'FAQ_subscriptions', 'FRONT_index', 'FRONT_news', 'HELP_content', 'HELP_footer', 'HF_css', 'HF_footer', 'HF_header', 'HF_header_small', 'HF_language', 'HTML_bordertable_end', 'HTML_bordertable_start', 'HTML_rowspacer', 'HTML_tablebitall', 'HTML_tablebit_end', 'HTML_tablebit_start', 'HTML_tableelement_end', 'HTML_tableelement_start', 'LIST_ticketlisting', 'NEW_expired', 'NEW_newticket', 'PROFILE_emails', 'PROFILE_header', 'PROFILE_login', 'PROFILE_password', 'PROFILE_profile', 'REDIRECT_standard_redirect', 'REG_register', 'VIEW_edit', 'VIEW_main', 'VIEW_print')");
  327. $languages = $db->query_return_array_id("SELECT * FROM languages", 'name');
  328. foreach ($languages AS $key => $var) {
  329. $db->query("
  330. SELECT COUNT(*) AS total, name 
  331. FROM template_email
  332. WHERE !backup
  333. AND language = '$key'
  334. GROUP BY name 
  335. HAVING total > 1
  336. ");
  337. while ($result = $db->row_array()) {
  338. $db2->query("
  339. SELECT id 
  340. FROM template_email 
  341. WHERE name = '" . addslashes($result[name]) . "'
  342. AND language = '$key'
  343. AND !backup
  344. ");
  345. unset($i);
  346. while ($result = $db2->row_array()) {
  347. if ($i) {
  348. $delete_ids[] = $result[id];
  349. } else {
  350. $i++;
  351. }
  352. }
  353. }
  354. }
  355. $db->query("DELETE FROM template_email WHERE id IN " . array2sql($delete_ids));
  356. do_message_yes();
  357. }
  358. ############################################# STEP 7 #############################################
  359. if ($_REQUEST['step'] == 7) {
  360. $db->Halt_On_Error = 'yes';
  361. do_message("Updating tickets");
  362. $refs = array();
  363. $db->query("SELECT ref, COUNT(*) AS total FROM ticket GROUP BY ref HAVING total >= 2");
  364. while ($result = $db->row_array()) {
  365. $refs[] = $result['ref'];
  366. }
  367. // create a new temp column to indicate which need updating
  368. if ($db->num_rows()) {
  369. $db2->query("ALTER TABLE ticket ADD ref_temp int(1) NOT NULL DEFAULT '0'");
  370. foreach ($refs AS $key => $var) {
  371. $db->query("
  372. SELECT id, userid 
  373. FROM ticket 
  374. WHERE ref = '" . addslashes($var) . "'
  375. ORDER BY id ASC
  376. ");
  377. while ($result = $db->row_array()) {
  378. // first ticket?
  379. if ($i) {
  380. $db2->query("UPDATE ticket SET ref_temp = '1' WHERE id = '$result[id]'");
  381. } else {
  382. $db2->query("UPDATE ticket SET ref_temp = '2' WHERE id = '$result[id]'");
  383. }
  384. $i++;
  385. }
  386. }
  387. $db->query("SELECT id FROM ticket WHERE ref_temp = '1'");
  388. while ($result = $db->row_array()) {
  389. $ids[] = $result['id'];
  390. }
  391. $db->query("SELECT id FROM ticket WHERE ref_temp = '2'");
  392. while ($result = $db->row_array()) {
  393. $ids_2[] = $result['id'];
  394. }
  395. foreach ($ids AS $key => $var) {
  396. $authcode = substr(md5(rand(0,100000) . mktime()), 0, 8);
  397. $db2->query("
  398. UPDATE ticket SET 
  399. ref = '" . make_ticket_ref() . "',
  400. authcode = '" . addslashes($authcode) . "'
  401. WHERE id = '$var'
  402. ");
  403. }
  404. foreach ($ids_2 AS $key => $var) {
  405. $authcode = substr(md5(rand(0,100000) . mktime()), 0, 8);
  406. $db2->query("
  407. UPDATE ticket SET 
  408. authcode = '" . addslashes($authcode) . "'
  409. WHERE id = '$var'
  410. ");
  411. }
  412. $db->query("ALTER TABLE ticket DROP ref_temp");
  413. }
  414. do_message_yes();
  415. do_message("Creating ticket index");
  416. $db->Halt_On_Error = 'no';
  417. $db->query("ALTER TABLE `ticket` DROP INDEX `ref` ");
  418. $db->Halt_On_Error = 'yes';
  419. $db->query("ALTER TABLE `ticket` ADD UNIQUE (`ref`)"); 
  420. do_message_yes();
  421. }
  422. ############################################# STEP 8 #############################################
  423. // give tickets an authcode
  424. if ($_REQUEST['step'] == 8) {
  425. do_message("Setting ticket auth codes");
  426. $db->query("SELECT id FROM ticket WHERE !authcode");
  427. if ($db->num_rows()) {
  428. while ($res = $db->row_array()) {
  429. $process[] = $res['id'];
  430. }
  431. foreach($process AS $id) {
  432. $authcode = substr(md5(rand(0,100000) . mktime()), 0, 8);
  433. $db->query("UPDATE ticket SET authcode = '" . mysql_escape_string($authcode) . "' WHERE id = '$id'");
  434. }
  435. }
  436. do_message_yes();
  437. }
  438. ############################################# STEP 9 #############################################
  439. if ($_REQUEST['step'] == 9) {
  440. $db->Halt_On_Error = 'yes';
  441. do_message("Updating version number to v2.0.1");
  442. $db->query("UPDATE settings SET value = '2.0.1' WHERE settings = 'deskpro_version'");
  443. do_message_yes();
  444. define('FINISHED', 1);
  445. }
  446. ?>