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

电子政务应用

开发平台:

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: index.php,v $
  15. // | $Date: 2004/02/12 21:16:57 $
  16. // | $Revision: 1.10 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Basic Configuration
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. if (function_exists('set_time_limit') and get_cfg_var('safe_mode') == 0) {
  23. @set_time_limit(1200);
  24. }
  25. define('DEVELOPERMODE', '1');
  26. define('DONOT_LOGQUERIES', '1');
  27. define('INSTALLER', 1);
  28. @include_once('./../includes/config.php');
  29. require_once('./../includes/global.php');
  30. require_once('./../includes/functions/admin-tech_functions.php');
  31. require_once('./../includes/functions/general_functions.php');
  32. require_once('./../includes/functions/database/mysql.php');
  33. require_once('./../includes/functions/conditional_functions.php');
  34. install_header('DeskPRO Installation & Upgrade');
  35. if (!in_string('index.php', $_SERVER['SCRIPT_NAME']) AND !in_string('index.php', $_SERVER['PHP_SELF'])) {
  36. echo "This file can only be run when the filename is <b>index.php</b>. Please rename it to run the file.";
  37. exit();
  38. }
  39. $latest_version = '2.0.1';
  40. ?>
  41. <script language="javascript">
  42. function visyes(id) {
  43. e=document.getElementById(id).style;
  44. e.display='';
  45. }
  46. </script>
  47. <?php
  48. ######################################################################################################################
  49. ############################################ EMPTY DATABASE #################################################
  50. ######################################################################################################################
  51. if ($_REQUEST['do'] == "delete_database") {
  52. echo "<center>Please <a href="index.php?do=delete_database2">confirm</a> that you wish to empty the database " . DATABASE_NAME . ". This will delete <b>ALL</b> tables and is completly irreversible.</center>";
  53. exit();
  54. }
  55. if ($_REQUEST['do'] == "delete_database2") {
  56. $db = new DB_Sql;
  57. $db->Halt_On_Error = 'no';
  58. $db->User=constant('DATABASE_USER');
  59. $db->Password=constant('DATABASE_PASSWORD');
  60. $db->Host=constant('DATABASE_HOST');
  61. $db->Database=constant('DATABASE_NAME');
  62. $db->connect();
  63. $db->query("DROP database " . DATABASE_NAME);
  64. if (!$db->geterrno()) {
  65. $db->query("CREATE database " . DATABASE_NAME);
  66. if (!$errno = mysql_errno()) {
  67. alert('Your database has been emptied.');
  68. } else {
  69. alert('Your database was deleted but could not be recreated.');
  70. }
  71. } else {
  72. alert("Your database could not be deleted. Please check the database user has permission to perform this action. mySQL Error number: " . $db->geterrno() . " mySQL Error description: " . $db->geterrdesc());
  73. }
  74. unset($_REQUEST['do']);
  75. }
  76. if (!$_REQUEST['do']) {
  77. ######################################################################################################################
  78. ############################################ START INSTALL / UPGRADE #################################################
  79. ######################################################################################################################
  80. ?>
  81. <b>Welcome to the DeskPRO Installer & Upgrader.<br />
  82. Nullified by WTN-WDYL Team `2004'<br /></b>
  83. <br />
  84. <?php
  85. $fail += check_config();
  86. $fail += check_thelicense();
  87. $fail += check_php_ver();
  88. $fail += check_mysql();
  89. $fail += check_pcre();
  90. $fail += check_graphs_perms();
  91. $fail += check_encoding();
  92. $warning += check_gd();
  93. $warning += check_sessions();
  94. echo "<br /><br />";
  95. if ($fail) {
  96. echo "<P>Please correct the following problems, and reload this page. DeskPro v2.0 installation cannot continue until these are resolved:</P><UL>n";
  97. echo $askhostto;
  98. echo "</UL>";
  99. exit();
  100. }
  101. $db = new DB_Sql;
  102. $db->User=constant('DATABASE_USER');
  103. $db->Password=constant('DATABASE_PASSWORD');
  104. $db->Host=constant('DATABASE_HOST');
  105. $db->Database=constant('DATABASE_NAME');
  106. $db->Halt_On_Error = 'no';
  107. $db->connect();
  108. $errno = mysql_errno();
  109. // we have connected to database, lets check for tables
  110. if (!$errno) {
  111. $send_to_deskpro .= "- We connected to the Databasen";
  112. $db->query("SHOW TABLES");
  113. if ($db->num_rows()) {
  114. $send_to_deskpro .= "- The database contained tablesn";
  115. // if we get here we have tables in this database. This is probably bad
  116. while ($result = $db->row_array()) {
  117. $send_to_deskpro .= "- Database table $result[0] foundn";
  118. // need to work out if this  *is* deskpro
  119. $table_array[] = $result[0];
  120. // pick unusal v2 table
  121. if ($result[0] == 'tech_internal_help_entry') {
  122. $send_to_deskpro .= "- We found the tech_internal_help_entry table suggesting a DeskPRO v2 installn";
  123. $using_deskpro = 1;
  124. }
  125. // pick v1 table
  126. if ($result[0] == 'categories') {
  127. $send_to_deskpro .= "- We found the categories table suggesting a DeskPRO v1 installn";
  128. $using_deskpro = 1;
  129. $deskpro_v1 = 1;
  130. }
  131. }
  132. $result = $db->query_return("SELECT * FROM settings WHERE settings = 'deskpro_version'");
  133. if (is_array($result)) {
  134. $send_to_deskpro .= "- We found the DeskPRO version row in the settings tablen";
  135. $deskpro_version = $result['value'];
  136. $send_to_deskpro .= "- We found the DeskPRO version, it is $result[value]n";
  137. }
  138. // we now know if this is deskpro, what version of deskpro if it is and the table.
  139. if ($deskpro_version OR $using_deskpro) {
  140. $doupgrade = 1;
  141. echo "<span class="cp_temp_orig">DeskPRO database found with v$deskpro_version</span><br /><br />";
  142. echo "The database <i><b>" . DATABASE_NAME . "</b></i> already contains an installation of DeskPRO";
  143. if ($deskpro_version) {
  144. echo " v$deskpro_version.";
  145. }
  146. if ($deskpro_version == $latest_version) {
  147. echo "<br /><br />You already have the latest version of DeskPRO installed. <br /><br /> If you wish to reinstall DeskPRO you must first delete your database. This is irreversible and results in complete loss of your current data. " . jprompt('Are you sure you wish to delete your database?', 'index.php?do=delete_database', ' delete your database');
  148. exit();
  149. }
  150. echo " You can now start the DeskPRO upgrade process. If you wish to perform a fresh installation of DeskPRO you will first have to " . jprompt('Are you sure you wish to delete your database?', 'index.php?do=delete_database', 'empty your database') . ", (this is irreversible) and start with a new database from scratch.";
  151. ?>
  152. <br /><br />
  153. Please verify that you have backed up your database. You can back up your database using the <I>mysqldump</I> utility
  154. (included with MySQL). Alternately, you can use a utility such as 
  155. phpMyAdmin. Please note that 
  156. we can not be held responsible for any problems with the upgrade process. It is essential you have made a backup and that you have checked your backup is complete.<br /><br />
  157. We are now going to upgrade your DeskPRO installation from v<?php echo "$deskpro_version to v$latest_version";?>. If this is not the version of DeskPRO you currently have installed, please contact DeskPRO Support.<br /><br />
  158. The upgrade system will upgrade your software to the latest version of
  159. DeskPRO.<br /><br />
  160. <center>
  161. <form action="index.php" method="post" name="upgrade">
  162. <?php
  163. if ($deskpro_v1) {
  164. echo "<input type="hidden" name="do" value="upgrade_v1">";
  165. } else {
  166. echo "<input type="hidden" name="do" value="upgrade_v2">";
  167. }
  168. ?>
  169. <script language="JavaScript">
  170. function jprompt_2(message,url) {
  171. input_box=confirm(message);
  172. if (input_box==true) {
  173. document.upgrade.submit();
  174. }
  175. }
  176. document.write('<input type="button" name="upgrade" value="<?php echo "Upgrade v$deskpro_version to v$latest_version";?>" onclick="jprompt_2('This will immediately begin the upgrade process. Do NOT proceed until you have backed up your database! Without a backup, this process cannot be reversed!')">');
  177. </script>
  178. <noscript>
  179. <input type="submit" name="upgrade" value="Perform Upgrade" />
  180. </noscript>
  181. </form>
  182. <?php
  183. } else {
  184. echo "The database you specified in config.php already has tables in it. It is not recommended that you install DeskPRO in a database that already has tables are there are likely to be conflicts. You can either " . jprompt('Are you sure you wish to delete your database?', 'index.php?do=delete_database', ' delete your database') . " which is irreverisble or continue with the <a href="index.php?fromindex=1">install</a>";
  185. }
  186. } else {
  187. $send_to_deskpro .= "- The database contains no tablesn";
  188. }
  189. } else {
  190. $send_to_deskpro .= "- We could not connect to the databasen";
  191. }
  192. if (!$doupgrade) {
  193. // if we get here we either have no database found or an empty database.
  194. echo " <span class="cp_temp_orig">No current installations where found.</span><br /><center><form method="post" action="index.php"><input type="hidden" name="do" value="install"><input type="submit" name="go" value="Start Installation"></form>";
  195. }
  196. echo "</center><hr>If this the result above is not what you where expecting, click <a href="javascript:visyes('report');">here</a>.<br /><br />";
  197. echo "<div id="report" name="report" style="display:none">Error.<br /><br />
  198. <textarea style="width:100%" rows="15">$send_to_deskpro</textarea></div>
  199. ";
  200. }
  201. ######################################################################################################################
  202. ############################################ INSTALL #################################################################
  203. ######################################################################################################################
  204. if ($_REQUEST['do'] == 'install') {
  205. /*
  206. Lets install the latest version of DeskPRO
  207. */
  208. give_default($_REQUEST['step'], 1);
  209. include('./install.php');
  210. if (!defined('FINISHED')) {
  211. $step = $_REQUEST['step'] + 1;
  212. echo "<BR><BR>To continue the installation, <A HREF="index.php?do=install&step=$step">click here.</A>n";
  213. exit();
  214. }
  215. exit();
  216. }
  217. ######################################################################################################################
  218. ############################################ UPGRADE v1 -> v2 #################################################################
  219. ######################################################################################################################
  220. if ($_REQUEST['do'] == 'upgrade_v1') {
  221. /*
  222. Upgrades the system from v1.1.x to v2.0.0
  223. Once we complete this we continue upgrading to v2.x.y
  224. */
  225. $db = new DB_Sql;
  226. $db->Halt_On_Error = 'yes';
  227. $db->User=constant('DATABASE_USER');
  228. $db->Password=constant('DATABASE_PASSWORD');
  229. $db->Host=constant('DATABASE_HOST');
  230. $db->Database=constant('DATABASE_NAME');
  231. $db->connect();
  232. $db2 = new DB_Sql;
  233. $db2->Halt_On_Error = 'yes';
  234. $db2->User=constant('DATABASE_USER');
  235. $db2->Password=constant('DATABASE_PASSWORD');
  236. $db2->Host=constant('DATABASE_HOST');
  237. $db2->Database=constant('DATABASE_NAME');
  238. $db2->connect();
  239. $this_version = $db->query_return("SELECT value FROM settings WHERE settings = 'deskpro_version'");
  240. $this_version = $this_version['value'];
  241. give_default($_REQUEST['step'], 1);
  242. include('./upgrade_v1_v2/upgrade-110-197.php');
  243. if (!defined('FINISHED')) {
  244. if (defined('CUSTOMDIRECT')) {
  245. echo "<BR><BR>To continue the upgrade, <A HREF="index.php?do=upgrade_v1&step=$step&$extra_variables">click here.</A>n";
  246. exit();
  247. } else {
  248. $step = $_REQUEST['step'] + 1;
  249. echo "<BR><BR>To continue the upgrade, <A HREF="index.php?do=upgrade_v1&step=$step">click here.</A>n";
  250. exit();
  251. }
  252. } else {
  253. echo "<BR><BR>Upgrade to v2.0.0 now finished. We now need to upgrade to $latest_version, <A HREF="index.php?do=upgrade_v2">click here.</A>n";
  254. }
  255. exit();
  256. }
  257. ######################################################################################################################
  258. ############################################ UPGRADE v2.x - v2.y #################################################################
  259. ######################################################################################################################
  260. if ($_REQUEST['do'] == 'upgrade_v2') {
  261. $db = new DB_Sql;
  262. $db->Halt_On_Error = 'no';
  263. $db->User=constant('DATABASE_USER');
  264. $db->Password=constant('DATABASE_PASSWORD');
  265. $db->Host=constant('DATABASE_HOST');
  266. $db->Database=constant('DATABASE_NAME');
  267. $db2 = new DB_Sql;
  268. $db2->Halt_On_Error = 'yes';
  269. $db2->User=constant('DATABASE_USER');
  270. $db2->Password=constant('DATABASE_PASSWORD');
  271. $db2->Host=constant('DATABASE_HOST');
  272. $db2->Database=constant('DATABASE_NAME');
  273. $db2->connect();
  274. give_default($_REQUEST['step'], 1);
  275. /*
  276. The upgrade system. We will always upgrade to the latest version.
  277. Key is to find the the version of DeskPRO we are currently working on.
  278. At the end we run any standard queries
  279. */
  280. $upgrades = array(
  281. '2.0.0' => 200,
  282. '2.0.1' => 201,
  283. '2.0.2' => 202,
  284. '2.1.0' => 210
  285. );
  286. $this_version = $db->query_return("SELECT value FROM settings WHERE settings = 'deskpro_version'");
  287. $this_version = $this_version['value'];
  288. $this_version = $upgrades["$this_version"];
  289. #################### DO THE UPGRADE TO v2.0.1 #################### 
  290. if ($this_version == 200) {
  291. include('./upgrade_v2/201.php');
  292. if (!defined('FINISHED')) {
  293. $step = $_REQUEST['step'] + 1;
  294. echo "<BR><BR>To continue the upgrade, <A HREF="index.php?do=upgrade_v2&step=$step">click here.</A>n";
  295. exit();
  296. } else {
  297. echo "<BR><BR>To continue the upgrade, <a href="index.php?do=upgrade_v2standard">click here.</A>n";
  298. exit();
  299. }
  300. }
  301. #################### DO THE UPGRADE TO v2.0.2 #################### 
  302. if ($this_version == 200) {
  303. include('./upgrade_v2/202.php');
  304. }
  305. #################### DO STANDARD CODE (INSTALL / UPGRADE) #################### 
  306. }
  307. ######################################################################################################################
  308. ############################################ GLOBAL CHANGES #################################################################
  309. ######################################################################################################################
  310. if ($_REQUEST['do'] == 'upgrade_v2standard') {
  311. $db = new DB_Sql;
  312. $db->Halt_On_Error = 'yes';
  313. $db->User=constant('DATABASE_USER');
  314. $db->Password=constant('DATABASE_PASSWORD');
  315. $db->Host=constant('DATABASE_HOST');
  316. $db->Database=constant('DATABASE_NAME');
  317. if (!$_REQUEST['step']) {
  318. do_message("Upgrading your web templates");
  319. sort_web_templates();
  320. do_message_yes();
  321. echo "<BR><BR>To continue the upgrade, <a href="index.php?do=upgrade_v2standard&step=1">click here.</A>n";
  322. } elseif ($_REQUEST['step'] == 1) {
  323. do_message("Upgrading your email templates");
  324. sort_email_templates();
  325. do_message_yes();
  326. echo "<BR><BR>To continue the upgrade, <a href="index.php?do=upgrade_v2standard&step=2">click here.</A>n";
  327. } elseif ($_REQUEST['step'] == 2) {
  328. do_message("Upgrading the template words");
  329. sort_words();
  330. do_message_yes();
  331. echo "<BR><BR>To continue the upgrade, <a href="index.php?do=upgrade_v2standard&step=3">click here.</A>n";
  332. } elseif ($_REQUEST['step'] == 3) {
  333. do_message("Upgrading default data");
  334. load_data('data.sql');
  335. do_message_yes();
  336. echo "<BR><BR>To continue the upgrade, <a href="index.php?do=upgrade_v2standard&step=4">click here.</A>n";
  337. } elseif ($_REQUEST['step'] == 4) {
  338. do_message("Updating the settings");
  339. $settings_data = $db->query_return_array("SELECT * FROM settings");
  340. $queries = array(
  341. "DELETE FROM settings",
  342. "DELETE FROM settings_cat"
  343. );
  344. execute($queries);
  345. load_data('settings.sql');
  346. $queries = array(
  347. "DELETE FROM settings WHERE settings = ''"
  348. );
  349. if (is_array($settings_data)) {
  350. foreach ($settings_data AS $data) {
  351. $data['value'] = mysql_escape_string($data['value']);
  352. $queries[] = "UPDATE settings SET value = '$data[value]' WHERE settings = '$data[settings]'";
  353. }
  354. }
  355. execute($queries);
  356. do_message_yes();
  357. echo "<BR><BR>To continue the upgrade, <a href="index.php?do=upgrade_v2standard&step=5">click here.</A>n";
  358. } elseif ($_REQUEST['step'] == 5) {
  359. echo "Congratulations, your upgrade to DeskPRO v$latest_version is now complete<br /><br />You must now delete the /install/index.php file. You can then log into the <a href="./../admin/index.php">admin area</a>.";
  360. }
  361. }
  362. ######################################################################################################################
  363. ############################################ FUNCTIONS #################################################################
  364. ######################################################################################################################
  365. /*
  366. function sort_templates
  367. - This function sets the templates, email templates and words to the current version
  368. - It expects that the languages have already been created
  369. - The data will have an installid. This value refers to the installid for the language that element of data belongs to
  370. */
  371. function sort_web_templates() {
  372. global $db;
  373. include('./v2data/templates.php');
  374. $db->query("DELETE FROM template WHERE backup = '1'");
  375. foreach ($template_data AS $key => $var) {
  376. $var['template'] = parse_conditionals($var['template_unparsed']);
  377. // create the backup
  378. $db->query("
  379. INSERT INTO template SET 
  380. name = '" . addslashes($var['name']) . "',
  381. description = '" . addslashes($var['description']) . "',
  382. template = '" . addslashes($var['template']) . "',
  383. backup = 1,
  384. template_unparsed = '" . addslashes($var['template_unparsed']) . "',
  385. category = '" . addslashes($var['category']) . "'
  386. ");
  387. // need details on current template (but not the backup we just created)
  388. $result = $db->query_return("
  389. SELECT changed, template_unparsed FROM template 
  390. WHERE name = '" . addslashes($var['name']) . "' 
  391. AND !backup
  392. ");
  393. // dosen't exist so create it
  394. if (!$db->num_rows()) {
  395. $db->query("
  396. INSERT INTO template SET 
  397. name = '" . addslashes($var['name']) . "',
  398. description = '" . addslashes($var['description']) . "',
  399. template = '" . addslashes($var['template']) . "',
  400. template_unparsed = '" . addslashes($var['template_unparsed']) . "',
  401. category = '" . addslashes($var['category']) . "'
  402. ");
  403. } else {
  404. // first check it is actually different, if the template is the same
  405. // we only update the description
  406. if ($result['template_unparsed'] == $var['template_unparsed']) {
  407. $db->query("
  408. UPDATE template SET
  409. description = '" . addslashes($var['description']) . "',
  410. category = '" . addslashes($var['category']) . "',
  411. changed = '',
  412. upgraded = ''
  413. WHERE name = '" . addslashes($var['name']) . "'
  414. AND !backup
  415. ");
  416. } else {
  417. // template has changed, and user has edited it; leave template alone but
  418. // tell user it has changed
  419. if ($result['changed'] == 1) {
  420. $db->query("
  421. UPDATE template SET
  422. description = '" . addslashes($var['description']) . "',
  423. category = '" . addslashes($var['category']) . "',
  424. upgraded = 1,
  425. version_upgrade = '$latest_version'
  426. WHERE name = '" . addslashes($var['name']) . "'
  427. AND !backup
  428. ");
  429. // template has changed but user has not edited it; automatically update the
  430. // template
  431. } else {
  432. $db->query("
  433. UPDATE template SET
  434. description = '" . addslashes($var['description']) . "',
  435. template = '" . addslashes($var['template']) . "',
  436. template_unparsed = '" . addslashes($var['template_unparsed']) . "',
  437. category = '" . addslashes($var['category']) . "'
  438. WHERE name = '" . addslashes($var['name']) . "'
  439. AND !backup
  440. ");
  441. }
  442. }
  443. }
  444. }
  445. }
  446. function sort_email_templates() {
  447. global $db;
  448. // need to link the installid (deskpro language id) to the actual language id
  449. $db->query("SELECT id, name, installid FROM languages WHERE !custom");
  450. while ($result = $db->row_array()) {
  451. $language_convert[$result[installid]] = $result[id];
  452. $language_convert_name[$result[installid]] = $result[name];
  453. }
  454. include('./v2data/email_templates.php');
  455. $db->query("DELETE FROM template_email WHERE backup = '1'");
  456. foreach ($template_data AS $key => $var) {
  457. $var['template'] = parse_conditionals($var['template_unparsed']);
  458. // create the backup
  459. $db->query("
  460. INSERT INTO template_email SET 
  461. name = '" . addslashes($var['name']) . "',
  462. description = '" . addslashes($var['description']) . "',
  463. category = '" . addslashes($var['category']) . "',
  464. template = '" . addslashes($var['template']) . "',
  465. subject =  '" . addslashes($var['subject']) . "',
  466. language = '" . addslashes($language_convert[$var[language]]) . "',
  467. backup = 1,
  468. template_unparsed = '" . addslashes($var['template_unparsed']) . "'
  469. ");
  470. // need details on current template
  471. $result = $db->query_return("
  472. SELECT changed, template_unparsed FROM template_email
  473. WHERE name = '" . addslashes($var['name']) . "'
  474. AND !backup
  475. AND language = '" . $language_convert[$var[language]] . "'
  476. ");
  477. // dosen't exist so create it
  478. if (!$db->num_rows()) {
  479. $debug .= "$var[name] for language " . $language_convert_name[$var[language]] . " does not exist, creating it.n";
  480. // create the template
  481. $db->query("
  482. INSERT INTO template_email SET 
  483. name = '" . addslashes($var['name']) . "',
  484. description = '" . addslashes($var['description']) . "',
  485. category = '" . addslashes($var['category']) . "',
  486. subject =  '" . addslashes($var['subject']) . "',
  487. language = '" . $language_convert[$var[language]] . "',
  488. template_unparsed = '" . addslashes($var['template_unparsed']) . "',
  489. template = '" . addslashes($var['template']) . "'
  490. ");
  491. } else {
  492. // first check it is actually different, if the template is the same
  493. // we only update the description
  494. if ($result['template_unparsed'] == $var['template_unparsed']) {
  495. $debug .= "$var[name] for language " . $language_convert_name[$var[language]] . " is the same. Updating the description.n";
  496. $db->query("
  497. UPDATE template_email SET
  498. description = '" . addslashes($var['description']) . "',
  499. category = '" . addslashes($var['category']) . "',
  500. changed = '',
  501. upgraded = ''
  502. WHERE name = '" . addslashes($var['name']) . "'
  503. AND language = '" . addslashes($var['name']) . "'
  504. AND !backup
  505. ");
  506. } else {
  507. // exists and is changed
  508. if ($result['changed'] == 1) {
  509. $debug .= "$var[name] for language " . $language_convert_name[$var[language]] . " Template has changed and user has edited it. Set as upgraded.n";
  510. $db->query("
  511. UPDATE template_email SET
  512. description = '" . addslashes($var['description']) . "',
  513. upgraded = 1,
  514. version_upgrade = '$latest_version'
  515. WHERE name = '" . addslashes($var['name']) . "'
  516. AND !backup
  517. AND language = '" . $language_convert[$var[language]] . "'
  518. ");
  519. // exists but is unchanged so just overwrite it
  520. } else {
  521. $debug .= "$var[name] for language " . $language_convert_name[$var[language]] . " Template has changed but user has not touched it, overwrite the template.n";
  522. $db->query("
  523. UPDATE template_email SET
  524. subject = '" . addslashes($var['subject']) . "',
  525. description = '" . addslashes($var['description']) . "',
  526. template = '" . addslashes($var['template']) . "',
  527. template_unparsed = '" . addslashes($var['template_unparsed']) . "'
  528. WHERE name = '" . addslashes($var['name']) . "'
  529. AND !backup
  530. AND language = '" . $language_convert[$var[language]] . "'
  531. ");
  532. }
  533. }
  534. }
  535. }
  536. // echo "<textarea style="width:100%" rows="15">$debug</textarea>";
  537. }
  538. function sort_words() {
  539. global $db;
  540. // need to link the installid (deskpro language id) to the actual language id
  541. $db->query("SELECT id, installid FROM languages WHERE !custom");
  542. while ($result = $db->row_array()) {
  543. $language_convert[$result[installid]] = $result[id];
  544. }
  545. include('./v2data/words.php');
  546. $db->query("DELETE FROM template_words WHERE !cust");
  547. foreach ($template_data AS $key => $var) {
  548. $db->query("
  549. INSERT INTO template_words SET
  550. wordref = '" . addslashes($var[wordref]) . "',
  551. text = '" . addslashes($var[text]) . "',
  552. category = '" . addslashes($var[category]) . "',
  553. language = '" . $language_convert[$var[language]] . "'
  554. ");
  555. }
  556. }
  557. function check_php_ver() {
  558. global $askhostto;
  559. $fail = 0;
  560. $phpversion = phpversion();
  561. $minver = intval(str_replace('.', '', '4.1.0'));
  562. $maxver = intval(str_replace('.', '', '4.3.0'));
  563. $curver = intval(str_replace('.', '', $phpversion));
  564. echo "<li>PHP version ($phpversion): ";
  565. if ($curver >= $maxver ) {
  566. echo '<span class="cp_temp_orig">PASS</span></li>';
  567. } elseif ($curver >= $minver) {
  568. echo '<span class="cp_temp_warning">WARNING</span></li>';
  569. $askhostto .= "<li>Recompile PHP to at least 4.3.0<li>n";
  570. $warning ++;
  571. } else {
  572. echo '<span class="cp_temp_edit">FAIL</span></li>';
  573. $askhostto .= "<li>Upgrade PHP to at least 4.1.0.</li>n";
  574. $fail++;
  575. }
  576. return $fail;
  577. }
  578. function check_mysql() {
  579. global $askhostto;
  580. $fail = 0;
  581. echo "<li>MySQL support: ";
  582. if (function_exists('mysql_connect')) {
  583. echo '<span class="cp_temp_orig">PASS</span></li>';
  584. } else {
  585. echo '<span class="cp_temp_edit">FAIL</span></li>';
  586. $askhostto .= "<li>Recompile PHP with MySQL support.</li>n";
  587. $fail++;
  588. }
  589. return $fail;
  590. }
  591. function check_pcre() {
  592. global $askhostto;
  593. $fail = 0;
  594. echo "<li>PCRE support: ";
  595. if (function_exists('preg_replace')) {
  596. echo '<span class="cp_temp_orig">PASS</span></li>';
  597. } else {
  598. echo '<span class="cp_temp_edit">FAIL</span></li>';
  599. $askhostto .= "<li>Recompile PHP with PCRE support.</li>n";
  600. $fail++;
  601. }
  602. return $fail;
  603. }
  604. function check_gd() {
  605. global $askhostto;
  606. $warning = 0;
  607. echo "<li>GD support: ";
  608. if (function_exists('gd_info')) {
  609. echo '<span class="cp_temp_orig">PASS</span></li>';
  610. } else {
  611. echo '<span class="cp_temp_warning">WARNING</span></li>';
  612. $askhostto .= "<li>Recompile PHP with GD support.<li>n";
  613. $warning ++;
  614. }
  615. return $warning;
  616. }
  617. function check_encoding() {
  618. global $askhostto;
  619. $fail = 0;
  620. echo "<li>Check encoding: ";
  621. if (!defined('IS_ENCODED')) {
  622. echo "<span class="cp_temp_orig">PASS</span> (Encoding not required)";
  623. } else {
  624. if (extension_loaded('ionCube Loader')) {
  625. echo "<span class="cp_temp_orig">PASS</span> (Ioncube extension found)";
  626. } else {
  627. echo '<span class="cp_temp_edit">FAIL</span></li>';
  628. $askhostto .= "<li>You must install the ioncube decoder. Instructions can be found <a href="loader_help.php">here</a>.</li>";
  629. $fail++;
  630. }
  631. }
  632. return $fail;
  633. }
  634. function check_config() {
  635. global $askhostto;
  636. $fail = 0;
  637. echo "<li>Config.php file: ";
  638. if (!@include_once('./../includes/config.php')) {
  639. echo '<span class="cp_temp_edit">FAIL</span></li>';
  640. $askhostto .= "<li><b>Config.php has not been created</b> : Before you can install DeskPRO you must create a config.php file. This file contains your mySQL information (mysql location, database name, username and password). The file config_new.php is contained inside the /includes/ folder. You should edit that file and rename it to config.php.</li>";
  641. $fail++;
  642. } else {
  643. echo "<span class="cp_temp_orig">PASS</span>";
  644. }
  645. return $fail;
  646. }
  647. function check_thelicense() {
  648. }
  649. function check_sessions() {
  650. global $askhostto;
  651. $warning = 0;
  652. echo "<li>SESSIONS support: ";
  653. if (function_exists('session_id')) {
  654. echo '<span class="cp_temp_orig">PASS</span></li>';
  655. } else {
  656. echo '<span class="cp_temp_warning">WARNING</span></li>';
  657. $askhostto .= "<li>Recompile PHP with SESSIONS support.<li>n";
  658. $warning ++;
  659. }
  660. return $warning;
  661. }
  662. function check_graphs_perms() {
  663. global $askhostto;
  664. $fail = 0;
  665. echo "<li>GRAPH directory: ";
  666. if (function_exists('posix_getpwuid')) {
  667. if (!$userinfo = @posix_getpwuid(@posix_getuid())) {
  668. $userinfo = '(cannot determine current running username)';
  669. } else {
  670. $userinfo = "(which is running as user '$userinfo[name]')";
  671. }
  672. } else {
  673. $userinfo = '(cannot determine current running username)';
  674. }
  675. if (!file_exists('./../admin/graphs') OR !is_dir('./../admin/graphs') OR !is_writable('./../admin/graphs')) {
  676. echo "<span class="cp_temp_edit">FAIL</span>";
  677. $askhostto .= "<LI>Create the directory admin/graphs/, and make it writable by the server process $userinfo.</LI>";
  678. $fail++;
  679. } else {
  680. echo "<span class="cp_temp_orig">PASS</span>";
  681. }
  682. return $fail;
  683. }
  684. function check_schema_files() {
  685. global $warnhost, $schemafiles;
  686. echo "<LI>DeskPro v2.0 schema files: ";
  687. foreach ($schemafiles AS $file => $descr) {
  688. if (is_file($file)) {
  689. if (is_readable($file)) {
  690. $schemafiles[$file]['status'] = "Present and readable.";
  691. } else {
  692. $warn++;
  693. $schemafiles[$file]['status'] = "<B>Present, but not readable.</B>";
  694. }
  695. } else {
  696. $warn++;
  697. $schemafiles[$file]['status'] = "<B>Not present or not a regular file.</B>";
  698. }
  699. }
  700. if ($warn) {
  701. $warnhost .= "<LI>One or more schema files is missing. Without access to all the schema
  702. files, the installer cannot automatically load the database for you.
  703. <TABLE CELLPADDING="2"><TR><TD><B><U>File</U></B></TD><TD><B><U>Status</U></B></TD><TD><B><U>Description</U></B></TD></TR>";
  704. foreach($schemafiles AS $file => $descr) {
  705. $warnhost .= "<TR><TD><I>$file</I></TD><TD>{$schemafiles[$file]['status']}</TD><TD>{$schemafiles[$file]['descr']}</TD></TR>";
  706. }
  707. $warnhost .= "</LI>";
  708. } else {
  709. echo "Pass</LI>";
  710. }
  711. return $warn;
  712. }
  713. function do_message($text) {
  714. echo "$text ... ";
  715. }
  716. function do_message_yes() {
  717. echo "<span class="cp_temp_orig">Completed</span><br /><br />";
  718. }
  719. /*
  720. returns:
  721. true/false (if conection worked)
  722. value (the error)
  723. true (if the problem was lack of a database)
  724. */
  725. function check_mysql_connection() {
  726. $db = new DB_Sql;
  727. $db->User=constant('DATABASE_USER');
  728. $db->Password=constant('DATABASE_PASSWORD');
  729. $db->Host=constant('DATABASE_HOST');
  730. $db->Database=constant('DATABASE_NAME');
  731. $db->Halt_On_Error = 'no';
  732. $db->connect();
  733. $dbname = constant('DATABASE_NAME');
  734. $errno = mysql_errno();
  735. if ($errno == 2005) {
  736. return array(false, 'Could not connect to MySQL server at '.constant('DATABASE_HOST'));
  737. } elseif ($errno == 1045) {
  738. return array(false, 'Could not log on to server using the username and password you specified.');
  739. } elseif ($errno == 1049) {
  740. return array(false, true, true);
  741. } elseif ($errno == 0) {
  742. return array(true);
  743. } else {
  744. return array(false, mysql_error());
  745. }
  746. }
  747. /*
  748. returns:
  749. true/false (if database creation worked)
  750. value (the error))
  751. */
  752. function create_database($dbname) {
  753. mysql_query("CREATE DATABASE $dbname");
  754. if (mysql_errno()) {
  755. return array(false, "The following error occured when attempting to create database '$dbname': " . mysql_errno() . ': ' . mysql_error() . "</LI>");
  756. } else {
  757. return true;
  758. }
  759. }
  760. function select_database() {
  761. global $db, $askhostto, $dbname;
  762. $fail = 0;
  763. echo "<LI>Can access database '$dbname': ";
  764. $db->select_db($dbname);
  765. if (mysql_errno()) {
  766. echo "<span class="cp_temp_edit">FAIL</span></li>";
  767. $askhostto .= "<LI>The following error occured when attempting to select database '$dbname': " . mysql_errno() . ': ' . mysql_error() . "</LI>";
  768. $fail++;
  769. } else {
  770. echo "<span class="cp_temp_orig">PASS</span></li>";
  771. }
  772. return $fail;
  773. }
  774. function load_data($name) {
  775. global $db, $schemafiles, $warnhost;
  776. if (!$data = file("./../install/v2data/" . $name)) {
  777. echo "Error";
  778. return 0;
  779. } else {
  780. foreach($data AS $query) {
  781. $db->query(trim($query));
  782. }
  783. return 1;
  784. }
  785. }
  786. function error($name) {
  787. global $schemafiles;
  788. echo "<P>An error has occured loading data from $name ({$schemafiles[$name]['descr']}).
  789. Until this problem has been resolved, DeskPRO cannot be used; the database is NOT
  790. ready for use. If this file exists but can't be read, check its permissions.
  791. If this file was not included with your distribution, please contact
  792. our support staff for assistance.</P>";
  793. exit;
  794. }
  795. function install_check() {
  796. if (!defined('INSTALLER')) {
  797. print "Security Alert : Script not called by installation system.";
  798. exit;
  799. }
  800. }
  801. function execute($queries) {
  802. global $db;
  803. if (is_array($queries)) {
  804. foreach ($queries AS $query) {
  805. $db->query($query);
  806. }
  807. }
  808. }
  809. function install_header($title) {
  810. if (defined('INSTALL_HEADER_YES')) {
  811. return;
  812. }
  813. define('INSTALL_HEADER_YES', 1);
  814. ?>
  815. <html><head>
  816. <link rel="stylesheet" href="./../includes/css/admin-tech.css" type="text/css">
  817. <link rel="stylesheet" href="./install.css" type="text/css">
  818. <script language="javascript" src="./../includes/javascript/general.js"></script>
  819. </head><body bgcolor="#7BA2D6" title="DeskPRO Installation - <?php echo $title;?>">
  820. <table width="720" style="border: #000000 1px solid;" cellpadding="0" cellspacing="0" align="center" bgcolor="#FFFFFF">
  821. <tr><td>
  822. <table width="733" border="0" cellspacing="0" cellpadding="0">
  823.   <tr>
  824. <td align="right" valign="bottom"><!--WTN-WDYL--><IMG height=66 
  825. src="./images/intpic010.gif" width=165 border=0></td>
  826. <td valign="bottom">
  827.   <table width="608" border="0" cellspacing="0" cellpadding="0">
  828. <tr bgcolor="#CC3333">
  829.   <td height="45" colspan="2" valign="bottom">
  830. <p><IMG 
  831. src="./images/intpic030.gif"></p>
  832.   </td>
  833. </tr>
  834. <tr>
  835.   <td width="471" height="24" background="./images/intpic040.gif">&nbsp;</td>
  836.   <td width="137">&nbsp;</td>
  837. </tr>
  838.   </table>
  839. </td>
  840.   </tr>
  841. </table>
  842. <br /><br />
  843. <table width="98%" align="center"><tr><td>
  844. <?php
  845. }