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

电子政务应用

开发平台:

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: basic_config.php,v $
  15. // | $Date: 2004/02/13 00:04:40 $
  16. // | $Revision: 1.20 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Basic Configuration
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. require_once('./global.php');
  23. //Nullify WTN-WDYL Team
  24. include "./settings_include.php";
  25. ########################################################################################
  26. admin_header('Links', 'Basic Configuration');
  27. // get config data
  28. $config = unserialize(get_data('config'));
  29. // submit, stored value, first option
  30. if (!$_REQUEST['curconfig']) {
  31. if (is_array($config)) {
  32. $_REQUEST['curconfig'] = @max($config);
  33. } else {
  34. $_REQUEST['curconfig'] = 1;
  35. }
  36. }
  37. ########################################################################################
  38. // update any settings we have changed and update the page we are on
  39. if ($_REQUEST['submit']) {
  40. // updates any non setting data
  41. update_config($_REQUEST['curconfig']);
  42. // add page to stored progress
  43. $config[] = $_REQUEST['curconfig'];
  44. $config = array_unique($config);
  45. update_data('config', serialize($config));
  46. // update settings
  47. update_settings();
  48. // get the settings again
  49. get_settings();
  50. // we now want to view the next page
  51. if (!$_REQUEST['smtp_override']) {
  52. $_REQUEST['curconfig']++;
  53. }
  54. }
  55. ########################################################################################
  56. // display the steps (current page, undone, done)
  57. for ($i=1; $i < 9; $i++) {
  58. if (@in_array($i, $config)) {
  59. if ($i == $_REQUEST['curconfig']) {
  60. $bgcolor = "#64A0AA";
  61. } else {
  62. $bgcolor = "#347077";
  63. }
  64. } else {
  65. if ($i == $_REQUEST['curconfig']) {
  66. $bgcolor = "#BF4343";
  67. } else {
  68. $bgcolor = "#8F1313";
  69. }
  70. }
  71. $html .= "<td width="12%" bgcolor="$bgcolor"><a href="basic_config.php?basic_config=1&curconfig=$i" class="stepCaptionPrev">Step <strong>$i</strong></a></td>";
  72. }
  73. echo "<table width="100%" border="0" cellpadding="2" cellspacing="2"><tr align="center"> " . $html . "</tr></table>";
  74. // now show this steps page
  75. show_config($_REQUEST['curconfig']);
  76. ################# FUNCTION update_config() ###################
  77. function update_config($step) {
  78. global $_REQUEST, $db, $settings;
  79. ############################### UPDATE CATS / PRIS ###############################
  80. if ($step == 7) {
  81. if ($_REQUEST['update_step']) {
  82. $categories = $db->query_return_array_id("SELECT id, name FROM ticket_cat", 'name');
  83. if (is_array($categories)) {
  84. foreach ($categories AS $key => $var) {
  85. if (!@in_array($key, $_REQUEST['category_list'])) {
  86. $cat_delete[] = $key;
  87. }
  88. }
  89. }
  90. $priorities = $db->query_return_array_id("SELECT id, name FROM ticket_pri", 'name');
  91. if (is_array($priorities)) {
  92. foreach ($priorities AS $key => $var) {
  93. if (!@in_array($key, $_REQUEST['priority_list'])) {
  94. $pri_delete[] = $key;
  95. }
  96. }
  97. }
  98. if (is_array($cat_delete)) {
  99. // delete langauage bits
  100. $category_languages = unserialize(get_data('category_languages'));
  101. foreach ($category_languages AS $key => $var) {
  102. foreach ($cat_delete AS $key2 => $var2) {
  103. unset($category_languages[$key][$key2]);
  104. }
  105. }
  106. update_data('category_languages', serialize($category_languages));
  107. $db->query("UPDATE ticket SET category = '0' WHERE category IN " . array2sql($cat_delete));
  108. $db->query("DELETE FROM ticket_cat WHERE id IN " . array2sql($cat_delete));
  109. }
  110. if (is_array($pri_delete)) {
  111. $db->query("UPDATE ticket SET priority = '0' WHERE priority IN " . array2sql($pri_delete));
  112. $db->query("DELETE FROM ticket_pri WHERE id IN " . array2sql($pri_delete));
  113. // delete langauage bits
  114. $priority_languages = unserialize(get_data('category_languages'));
  115. foreach ($priority_languages AS $key => $var) {
  116. foreach ($pri_delete AS $key2 => $var2) {
  117. unset($priority_languages[$key][$key2]);
  118. }
  119. }
  120. update_data('priority_languages', serialize($priority_languages));
  121. }
  122. }
  123. if (is_array($_REQUEST['category_list'])) {
  124. foreach ($_REQUEST['category_list'] AS $key => $var) {
  125. if (!in_array_keys($var, $categories)) {
  126. $db->query("
  127. INSERT INTO ticket_cat SET
  128. name = '" . addslashes($var) . "',
  129. user_view = 1,
  130. user_select = 1
  131. ");
  132. }
  133. }
  134. }
  135. if (is_array($_REQUEST['priority_list'])) {
  136. foreach ($_REQUEST['priority_list'] AS $key => $var) {
  137. if (!in_array_keys($var, $priorities)) {
  138. $db->query("
  139. INSERT INTO ticket_pri SET
  140. name = '" . addslashes($var) . "',
  141. user_view = 1,
  142. user_select = 1
  143. ");
  144. }
  145. }
  146. }
  147. }
  148. }
  149. ################# FUNCTION show_config() ###################
  150. function show_config($step) {
  151. global $_REQUEST, $db, $settings, $config;
  152. echo "<br /><form method="post" action="basic_config.php">";
  153. ############################### FINISHED ###############################
  154. if ($step == 8 ) {
  155. $noform = 1;
  156. echo table_border("
  157. <b>STEP 8:</b> Congratulations! You have completed the basic configuration. You may need to complete a number of steps to make the email gateway work, you should read the installation documentation to review any further steps you need to take.<br /><br />
  158. At this point you may wish to do one of the following:
  159. <ul>
  160. <li>Edit the <a href="templates.php">templates</a> to better integrate DeskPRO with your website</li>
  161. <li>Create <a href="tech.php?do=add">technicians</a> to support your customers</li>
  162. <li>Create <a href="user_fields.php">custom user</a> or <a href="ticket_fields.php">ticket fields</a></li>
  163. <li>Modify your <a href="category.php">category</a> or <a href="priority.php">priority</a> options</li>
  164. <li>Review other <a href="settings.php">settings</a> you can modify to find tune your DeskPRO installation</li>
  165. <li>Create new or modify further <a href="email.php">options</a> and create <a href="email.php?do=view">more accounts</a> for the email gateway or configure <a href="pop.php?do=view">POP3 mail</a> collection</li>
  166. </ul>
  167. ");
  168. echo "<br /><br />";
  169. if (count($config) == 6) {
  170. $submit_name = "Click here to mark Basic Config Completed";
  171. } elseif (count($config) == 7) {
  172. $noform = 1;
  173. }
  174. }
  175. ############################### CATS / PRIS ###############################
  176. if ($step == 7) {
  177. echo table_border("
  178. <b>STEP 7:</b> This section allows you to quickly create some categories and priorities. There are a whole range of category and priority settings that you might want to edit after you have completed this configuration process.<br /><br />Note that any tickets you have already created that have a category or priority you remove will have their category or priority set as unspecified.
  179. ");
  180. $categories = $db->query_return_array_id("SELECT id, name FROM ticket_cat", 'name');
  181. if (is_array($categories)) {
  182. foreach ($categories AS $key => $var) {
  183. $html_cat .= "<option value="$key">$var</option>";
  184. }
  185. }
  186. $priorities = $db->query_return_array_id("SELECT id, name FROM ticket_pri", 'name');
  187. if (is_array($priorities)) {
  188. foreach ($priorities AS $key => $var) {
  189. $html_pri .= "<option value="$key">$var</option>";
  190. }
  191. }
  192. echo get_javascript('selectAdd.js');
  193. ?>
  194.   <br /><br />
  195.   <table cellpadding="4" cellspacing="0" align="center" width="90%">
  196.   <tr><td align="center"><b>Control your Categories</b></td><td align="center"><b>Control Your Priorities</b></td></tr>
  197.   <tr><td align="center">
  198.       <select name="category_list[]" size="10" multiple="multiple" style="width:200px" id="category_list">
  199.       <?php echo $html_cat ?>
  200.       </select>
  201.   <p align="center">
  202.   <input name="Button" type="button" onClick="return removeFrom('category_add', 'category_list')" value="Remove">
  203.   </p>
  204.   <input type="input" name="category_add" id="category_add">
  205.   <input type="button" name="addc" value="Add Category" onclick="addElement('category_add', 'category_list')">
  206.   </td><td align="center">
  207.       <select name="priority_list[]" size="10" multiple="multiple" style="width:200px" id="priority_list">
  208.   <?php echo $html_pri?>
  209.   </select>
  210.   <p align="center">
  211.   <input name="Button" type="button" onClick="return removeFrom('priority_add', 'priority_list')" value="Remove">
  212.   <br /> <br />
  213.   <input type="input" name="priority_add" id="priority_add">
  214.   <input type="button" name="addc" value="Add Priority" onclick="addElement('priority_add', 'priority_list')">
  215.   </td></tr></table><br /><br />
  216. <?php
  217. $submit_extra = "onclick="selectSubmit('priority_list');selectSubmit('category_list')"";
  218. }
  219. ############################### EMAIL GATEWAY ###############################
  220. if ($step == 6) {
  221. echo table_border("
  222. <b>STEP 6:</b> The following settings control the installation of the email gateway. The email gateway is a system whereby users can create and reply to tickets via email. There is a lot of documentation about the email gateway in the admin manual. The following settings determine how the email gateway will work.
  223. ");
  224. show_settings('
  225. basic_config.php', 
  226. '', 
  227. false, 
  228. array('use_email', 'email_tech', 'email_return'),
  229. false,
  230. $extra
  231. );
  232. }
  233. ############################### SMTP ###############################
  234. if ($step == 5) {
  235. if (($_REQUEST['submit'] OR $_REQUEST['smtp_send_test']) AND $settings['use_smtp']) {
  236. if (!validate_email($_REQUEST['test_email'])) {
  237. alert('You have not entered a valid test email address');
  238. $step = 4;
  239. } else {
  240. require_once(INCLUDE_PATH . 'functions/mail/class_smtp.php');
  241. require_once(INCLUDE_PATH . 'functions/mail/class_htmlMimeMail.php');
  242. require_once(INCLUDE_PATH . 'functions/mail/class_mimePart.php');
  243. require_once(INCLUDE_PATH . 'functions/mail/class_RFC822.php');
  244. $mail = new htmlMimeMail();
  245. $body = "This is a test message sent by the DeskPRO installation system.rnIt can be safely deleted.";
  246. $to = array($_REQUEST['test_email']);
  247. $from = $settings['email_from'];
  248. $subject = "DeskPRO SMTP Test Mail";
  249. $mail->setSMTPParams($settings['smtp_host'], $settings['smtp_port'], $settings['smtp_helo'], FALSE, $settings['smtp_user'], $settings['smtp_pass']);
  250. $mail->setText(wordwrap(trim($body), 79));
  251. $mail->setReturnPath($_REQUEST['settings']['email_from']);
  252. $mail->setCrlf("rn");
  253. $mail->setFrom($from);
  254. $mail->setSubject(trim($subject));
  255. $mail->setHeader('X-Mailer', 'DeskPRO Nullified');
  256. $result = $mail->send($to, 'smtp');
  257. if ($result) {
  258. // set that we are using SMTP mailing
  259. $db->query("UPDATE settings SET value = '1' WHERE settings = 'use_smtp'");
  260. echo table_border("
  261. <b>STEP 5:</b> We have just tested sending email through your server and found no errors.<br /><br />You should confirm that you received an email at $_REQUEST[test_email].<ul><li>If you have then email sending is working and you can continue to the next step.</li><li>If you did not receive an email you can :<ul><li><a href="basic_config.php?curconfig=5">Try this step again</a></li><li>Manually configure your <a href="basic_config.php?curconfig=5&type=smtp">SMTP settings</a></li></ul></li></ul>
  262. ") . "<br />";
  263. } else {
  264. echo table_border("
  265. <b>STEP 5:</b> The mail could not be sent. Any error messages received by DeskPRO during the attempt are shown below:<br /><br />" . join('<br />', $mail->errors) . "<br /><br />If the server couldn't be contacted, or if it requires you to authenticate before it will permit you to send mail, you should manually configure your SMTP settings. You can <A href="basic_config.php?curconfig=5">try this step again</A> or you can manually configure your <A href="basic_config.php?curconfig=5&type=smtp">SMTP settings</A>.") . "<br />";
  266. }
  267. }
  268. } elseif (!$_REQUEST['type']) {
  269. echo form_hidden('smtp_override', '1');
  270. echo form_hidden('smtp_manual', '1');
  271. echo table_border("
  272. <b>STEP 5:</b> We are now going to test your servers ability to send mail. If you wish to manually enter your SMTP settings or to disable sending mail via STMP please click <a href="basic_config.php?curconfig=5&type=smtp">here</a>.
  273. ");
  274. $extra[] = array('Test Email Address', 'Please enter an email address we can send a test email to. This will test that your server is properly sending email', form_input('test_email'), form_hidden('smtp_send_test', '1'));
  275. show_settings('
  276. basic_config.php', 
  277. '', 
  278. false, 
  279. 'sdsdfsdf',
  280. false,
  281. $extra
  282. );
  283. } elseif ($_REQUEST['type'] == 'smtp') {
  284. echo form_hidden('smtp_override', '1');
  285. echo table_border("
  286. <b>STEP 5:</b> These settings control the way mail is sent by DeskPRO. It is possible that PHP (the language DeskPRO is written in) is already set up to send mail through a setting in the php.ini file. Even if this is the case it is recommended that you use the internal SMTP settings provided below. This allows DeskPRO complete control over the email sent, is more efficient and of particular importance allows us to set the return-path header in emails sent.
  287. ");
  288. $extra[] = array('Test Email Address', 'Please enter an email address we can send a test email to. This will test that your server is properly sending email', form_input('test_email'), form_hidden('smtp_send_test', '1'));
  289. show_settings('
  290. basic_config.php', 
  291. 'SMTP Settings',
  292. false,
  293. '',
  294. false,
  295. $extra
  296. );
  297. }
  298. }
  299. ############################### EMAILS ###############################
  300. if ($step == 4) {
  301. echo table_border("
  302. <b>STEP 4:</b> The following sets configure certain email addresses that are important for DeskPRO to be able to send emails correctly. Please note that you <b>should</b> have an internet connection avaliable at this point because we will run an email test before loading the next page.
  303. ");
  304. $extra[] = array('Test Email Address', 'Please enter an email address we can send a test email to. This will test that your server is properly sending email', form_input('test_email'), form_hidden('smtp_send_test', '1'));
  305. show_settings('
  306. basic_config.php', 
  307. '',
  308. false,
  309. array('technical_email', 'email_bounce', 'email_from_name', 'email_from', 'email_offemail'),
  310. false,
  311. $extra
  312. );
  313. }
  314. ############################### LANGUAGES ###############################
  315. if ($step == 3) {
  316. echo table_border("
  317. <b>STEP 3:</b> These settings control your language options. The default option is to enable multiple languages. The advantage of doing this is that your customers can use DeskPRO in their own language. Enabling multiple languages will result in you being asked to enter certain text in other languages (for example category names) however this is always optional. If DeskPRO does not have a translation for a certain piece of text it will simpy use the default.<br /><br />
  318. It is also important that you specify your Default Language. This is the language that will be automatically presented to your users who have made no language preference. You can disable multiple languages but set your default language as any option you wish.<br /><br />
  319. If the language you wish to use is not listed this means that a language pack has not been created for this language. You can either contact DeskPRO staff to arrange for a translation or translate the necessary files yourself. Details on doing this are available in the admin manual. Once the translation is completed you could come back and modidy your choice of default language.
  320. ");
  321. $languages = $db->query_return_array_id("SELECT id, name FROM languages", 'name');
  322. $extra[] = array('Default Language', 'Choose the default language to show to users who have not choosen a language.', form_select('default_language', $languages, 'settings', $settings['default_language']));
  323. show_settings('
  324. basic_config.php', 
  325. '', 
  326. false, 
  327. array('language_on'),
  328. false,
  329. $extra
  330. );
  331. }
  332. ############################### TIMEZONE ###############################
  333. if ($step == 2) {
  334. echo table_border("
  335. <b>STEP 2:</b> The following settings configure the timezone you wish your installation of DeskPRO to default to.
  336. ");
  337. show_settings('
  338. basic_config.php', 
  339. '', 
  340. false, 
  341. array('timezone', 'timezone_offset'),
  342. false,
  343. $extra
  344. );
  345. }
  346. ############################### 1: PATHS / NAMES ###############################
  347. if ($step == 1) {
  348. echo table_border("
  349. <B>STEP 1:</B>
  350. Welcome to the DeskPRO Basic Configuration System. This process is a number of steps that guides you through setting up everything you need to get DeskPRO up and running. Once you have completed the Basic Configuration there are a whole range of further configurations you can make but this process will set everything you need to open up your contact system to your clients.<br /><br />
  351. You can jump to any step you wish and if you need to make changes you can always come back to the basic configuration system. Nothing you specify here is in any way permanent, you can change all options whenever you wish.<br /><br />
  352. <b>STEP 1:</b> These settings control the location of your DeskPRO installation. The information is used to produce correct links to your system. It is very important that these settings are set correctly.");
  353. show_settings('
  354. basic_config.php', 
  355. '', 
  356. false, 
  357. array('site_name', 'helpdesk_url', 'site_url'),
  358. false
  359. );
  360. }
  361. ####################################################################################
  362. if (!$submit_name) {
  363. $submit_name = "Update & Continue to Step " . ($step + 1) . " >>";
  364. }
  365. echo form_hidden('curconfig', $step);
  366. echo form_hidden('update_step', 1);
  367. $step++;
  368. if (!$noform) {
  369. echo "<center><input type="submit" $submit_extra name="submit" value="$submit_name"></center>";
  370. }
  371. }