emailtemplates.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: emailtemplates.php,v $
  15. // | $Date: 2004/02/12 21:16:57 $
  16. // | $Revision: 1.23 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - E-mail template maintenance (administration interface)
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. require_once('./global.php');
  23. //Nullify WTN-WDYL Team
  24. require_once(INCLUDE_PATH . 'functions/conditional_functions.php');
  25. // default do
  26. $_REQUEST['do'] = trim($_REQUEST['do']);
  27. if (!isset($_REQUEST['do']) or $_REQUEST['do'] == "") {
  28. $_REQUEST['do'] = "view_user";
  29. }
  30. // globalise variables
  31. $global = array (
  32. array('category'),
  33. array('id'),
  34. array('language')
  35. );
  36. rg($global);
  37. // set language to 1 if not using languages
  38. if (!$language) {
  39. $language = $settings[default_language];
  40. }
  41. /* email template categories:
  42. 1 - USER EMAILS
  43. 2 - TECH EMAILS
  44. */
  45. ########################################################################################
  46. ###############################     VIEW TECH TEMPLATES     ###############################
  47. ########################################################################################
  48. if ($_REQUEST['do'] == "view_tech") {
  49. admin_header('Email Templates', 'View Email Templates');
  50. /***************************************************
  51. DEFAULT TEMPLATES
  52. ***************************************************/
  53. // names of english templates
  54. $db->query("
  55. SELECT * FROM template_email 
  56. WHERE category = 'Tech Emails'
  57. AND backup = 0
  58. ORDER by custom, displayorder
  59. ");
  60. while ($template = $db->row_array()) {
  61. if ($template[custom] == 1 AND !$y) {
  62. $table[] = table_midheader('Your Custom Templates');
  63. $y = true;
  64. }
  65. unset($word);
  66. if ($template[upgraded] == "1") {
  67. $word = "<font color="red">CHANGED</font>";
  68. } elseif ($template[changed] == 1) {
  69. $word = "<font color="orange">EDITED</font>";
  70. $table[] = array(
  71. "<b>$template[name]</b> $word",
  72. $template[description],
  73. iff($template[changed] AND !$template[custom], jprompt('Are you sure you want to restore this template to its original?\nAll your modifications will be lost', "emailtemplates.php?do=restore&id=$template[id]", 'Restore Default')),
  74. "<a href="emailtemplates.php?do=edit&id=$template[id]">Edit</a>",
  75. iff($template[custom], jprompt('Confirm deletion of this template', "emailtemplates.php?do=delete&id=$template[id]", "Delete"))
  76. );
  77. }
  78. $columns = array('Name', 'Description', 'Restore Default', 'Edit', 'Delete');
  79. table_header("Default Templates");
  80. table_content($columns, $table, '', '', '', '', $width, $bottomline);
  81. table_footer();
  82. echo "<b>KEY:</b><ul>
  83. <li><font color="red">CHANGED</font> : The template has been upgraded since you last changed it. You should find the changes made or revert the template.</li>
  84. <li><font color="orange">EDITED</font> : You have made changes to this template.</li>
  85. </ul>
  86. ";
  87. }
  88. ########################################################################################
  89. ###############################     VIEW USER TEMPLATES     ###############################
  90. ########################################################################################
  91. if ($_REQUEST['do'] == "view_user") {
  92. admin_header('Email Templates', 'View User Templates');
  93. /***************************************************
  94. PICK LANGUAGE
  95. ***************************************************/
  96. /////////////// SELECT LANGUAGE ///////////////
  97. if ($settings[language_on] == "1") {
  98. $db->query("SELECT * FROM languages");
  99. while ($lang = $db->row_array()) {
  100. $languages[$lang[id]] = "$lang[name]";
  101. }
  102. $table[] = array(
  103. "<b>Currently viewing $languages[$language] templates:</b>", 
  104. form_select('language', $languages, '', $language) . '<input type="submit" name="submit" value="Change">'
  105. );
  106. echo form_hidden('do', 'view_user');
  107. echo "<form action="emailtemplates.php" method="post">";
  108. table_nohead($table);
  109. unset($table);
  110. echo '<br />';
  111. }
  112. /***************************************************
  113. DEFAULT TEMPLATES
  114. ***************************************************/
  115. // details on current language
  116. $thislanguage = $db->query_return("SELECT * FROM languages WHERE id = $language");
  117. if ($thislanguage[custom] == "1") {
  118. $table = array('This language is a custom set of templates created by you. Changes made to these templates will have no corresponding updated icons that would appear on changes made to template sets downloaded with DeskPRO.');
  119. echo "<BR>";
  120. echo table_nohead($table);
  121. unset($table);
  122. echo "<br /><br />";
  123. }
  124. // names of english templates
  125. $db->query("
  126. SELECT name FROM template_email 
  127. WHERE language = 1 
  128. AND custom != 1 
  129. AND category = 'User Emails'
  130. AND backup = 0
  131. ORDER by displayorder
  132. ");
  133. while ($result = $db->row_array()) {
  134. $engtemplates_cat[] = $result[name];
  135. }
  136. // get default templates
  137. $db->query("
  138. SELECT * FROM template_email 
  139. WHERE language = '$language' 
  140. AND category = 'User Emails'
  141. AND backup = 0
  142. ORDER by category, displayorder
  143. ");
  144. while ($template = $db->row_array()) {
  145. unset($word);
  146. $templates_temp[] = $template[name];
  147. if ($template[upgraded] == "1") {
  148. $word = "<font color="red">CHANGED</font>";
  149. } elseif ($template[changed] == 1) {
  150. $word = "<font color="orange">EDITED</font>";
  151. // restore link
  152. $bit = jprompt('Are you sure you want to restore this template to its original?\nAll your modifications will be lost', "emailtemplates.php?do=restore&id=$template[id]", 'Restore Default');
  153. // set if we have a restore to default link
  154. if ($thislanguage[custom] != 1) {
  155. $table[] = array(
  156. "<b>$template[name]</b> $word",
  157. $template[description],
  158. iff($template[changed], $bit, ''),
  159. "<a href="emailtemplates.php?do=edit&id=$template[id]">Edit</a>"
  160. );
  161. } else {
  162. $table[] = array(
  163. "<b>$template[name]</b> $word",
  164. $template[description],
  165. "<a href="emailtemplates.php?do=edit&id=$template[id]">Edit</a>",
  166. );
  167. }
  168. }
  169. // extra rows for uncreated templates
  170. if ($thislanguage[custom] == "1") {
  171. if (is_array($templates_temp)) {
  172. $notemplate = array_diff($engtemplates_cat, $templates_temp);
  173. } else {
  174. $notemplate = $engtemplates_cat;
  175. }
  176. }
  177. if (count($notemplate) > 0) {
  178. $uncreated = 1;
  179. $table[] = table_midheader('These are standard templates that you have not created for the ' . $thislanguage[name] . ' language');
  180. foreach($notemplate AS $key => $var) {
  181. $table[] = array(
  182. "<b><I>$var</I></b>", 
  183. '',
  184. '',
  185. "<a href="emailtemplates.php?name=$var&language=$language&do=newdefault">Create</a>"
  186. );
  187. }
  188. // add any empty columns needed
  189. foreach ($table AS $key => $var) {
  190. if (count($var) == 3) {
  191. $table[$key][] = '';
  192. }
  193. }
  194. }
  195. if ($settings[language_on] AND $uncreated) {
  196. $columns = array('Name', 'Description', 'Edit', 'Create');
  197. } elseif ($thislanguage[custom] == 1) {
  198. $columns = array('Name', 'Description', 'Edit');
  199. } else {
  200. $columns = array('Name', 'Description', 'Restore Default', 'Edit');
  201. }
  202. table_header("Default Templates");
  203. table_content($columns, $table, '', '', '', '', $width, $bottomline);
  204. table_footer();
  205. unset($templates_temp, $table, $bottomline, $columns, $uncreated, $notemplate);
  206. /***************************************************
  207. CUSTOM TEMPLATES
  208. ***************************************************/
  209. // get custom templates
  210. $db->query("SELECT * FROM template_email WHERE category = '$category' AND language = '$language' AND custom = 1");
  211. $count = $db->num_rows();
  212. while ($template = $db->row_array()) {
  213. $templates_temp[] = $template[name];
  214. // delete link (depends on language setting)
  215. if ($settings[language_on] == "1") {
  216. $bit = jprompt_multi('Are you sure you want to delete this custom template?', "Do you wish to delete this custom template for ALL languages?\nCancel will only delete the $languages[$language] template", "emailtemplates.php?do=delete_all&id=$template[id]", "emailtemplates.php?do=delete&id=$template[id]",'Delete');
  217. } else {
  218. $bit = jprompt('Are you sure you want to delete this template?', "emailtemplates.php?do=restore&id=$template[id]", 'Delete');
  219. }
  220. $table[] = array(
  221. "<b>$template[name]</b>",
  222. $template[description],
  223. $bit,
  224. "<a href="emailtemplates.php?do=editcustom&id=$template[id]">Edit</a>"
  225. );
  226. }
  227. // get sum of custom templates
  228. $db->query("SELECT DISTINCT name FROM template_email WHERE custom = 1 AND category = '$category'");
  229. while ($result = $db->row_array()) {
  230. $customtemplates[] = $result[name];
  231. }
  232. // extra rows for custom templates exisiting in other languages
  233. if (is_array($templates_temp)) {
  234. $notemplate = array_diff($customtemplates, $templates_temp);
  235. } else {
  236. $notemplate = $customtemplates;
  237. }
  238. if (count($notemplate) > 0) {
  239. $uncreated = 1;
  240. $table[] = table_midheader('These are custom templates that have been created for other languages but not for the ' . $thislanguage[name] . ' language');
  241. foreach($notemplate AS $key => $var) {
  242. $table[] = array("
  243. <b><I>$var</I></b>", 
  244. '',
  245. '',
  246. '',
  247. "<a href="emailtemplates.php?do=newcustom&language=$language&name=$var">Create</a>"
  248. );
  249. }
  250. // add any empty columns needed
  251. foreach ($table AS $key => $var) {
  252. if (count($var) == 4) {
  253. $table[$key][] = '';
  254. }
  255. }
  256. }
  257. if ($uncreated) {
  258. $cols = array('Name', 'Description', 'Delete', 'Edit', 'Create');
  259. } else {
  260. $cols = array('Name', 'Description', 'Delete', 'Edit');
  261. }
  262. if (($count > 0) OR (count($notemplate) > 0)) {
  263. table_header("Custom Templates");
  264. table_content($cols, $table, '', '', '', '', $width, $bottomline);
  265. table_footer();
  266. }
  267. echo "<b>KEY:</b><ul>
  268. <li><font color="red">CHANGED</font> : The template has been upgraded since you last changed it. You should find the changes made or revert the template.</li>
  269. <li><font color="orange">EDITED</font> : You have made changes to this template.</li>
  270. </ul>
  271. ";
  272. }
  273. ############################### DELETE CUSTOM TEMPLATE ###############################
  274. if ($_REQUEST['do'] == 'delete') {
  275. $template = $db->query_return("SELECT * FROM template_email WHERE id = '$id'");
  276. if ($template[custom] != 1) {
  277. mistake('You can only delete custom templates');
  278. }
  279. $db->query("DELETE FROM template_email WHERE id = '$id'");
  280. if ($template['category']  == 'User Emails') {
  281. jump("emailtemplates.php?do=view_email", 'The email template has been deleted');
  282. } else {
  283. jump("emailtemplates.php?do=view_tech", 'The email template has been deleted');
  284. }
  285. }
  286. ############################### TRANSLATE (2) ###############################
  287. if ($_REQUEST['do'] == 'newdefault2') {
  288. $template = parse_conditionals($_REQUEST[template_unparsed]);
  289. $db->query(" INSERT INTO template_email SET
  290. name = '" . mysql_escape_string($_REQUEST['name']) . "',
  291. description = '" . mysql_escape_string($_REQUEST['description']) . "',
  292. template = '" . mysql_escape_string($template) . "',
  293. template_unparsed = '" . mysql_escape_string($_REQUEST['template_unparsed']) . "',
  294. category= 'User Emails',
  295. custom = '1',
  296. subject = '" . mysql_escape_string($_REQUEST['subject']) . "',
  297. language = '$_REQUEST[language]'
  298. ");
  299. jump("emailtemplates.php?do=view_user&language=$_REQUEST[language]", 'Template Translated');
  300. }
  301. ############################### TRANSLATE (1) ###############################
  302. if ($_REQUEST['do'] == 'newdefault') {
  303. // get the language details
  304. $db->query("SELECT * FROM languages");
  305. while ($language = $db->row_array()) {
  306. if ($language['id'] == $_REQUEST['language']) {
  307. $this_language = $language;
  308. }
  309. $lang[$language[id]] = $language[name];
  310. }
  311. $template = $db->query_return("SELECT * FROM template_email WHERE name = '" . addslashes($_REQUEST['name']) . "' AND backup AND language = '$settings[default_language]'");
  312. admin_header('Email Templates', 'Create Email Template',
  313. array('dir' => $this_language['direction'], 'lang' => $this_language['isocode'], 'charset' => $this_language['contenttype'])
  314. );
  315. $table[] = array('<b>Name</b>', '<input DISABLED value="' . $_REQUEST['name'] . '" size="40">' . form_hidden('name', $_REQUEST['name']));
  316. $table[] = array('<b>Category</b>', form_select('category', array('User Emails', 'Tech Emails'), '', '', 1));
  317. $table[] = array('<b>Language</b>', form_select('language', $lang, NULL, $_REQUEST['language'], NULL, NULL, NULL, NULL, NULL, NULL, 1));
  318. $table[] = array('<b>Description</b>', form_textarea('description', '60', '4', $template[description]));
  319. $table[] = array('<b>Subject</b>', form_input('subject', $template[subject], 80));
  320. $table[] = array('<b>Template</b>', form_textarea('template_unparsed', '100', '30', $template[template_unparsed]));
  321. table_header("Translate Template", 'emailtemplates.php', array('do' => 'newdefault2', 'language' => $_REQUEST[language]));
  322. table_content($columns, $table);
  323. table_footer('Create Template');
  324. unset($table);
  325. }
  326. ############################### CREATE A NEW TEMPLATE ###############################
  327. if ($_REQUEST['do'] == "add") {
  328. // get the language details
  329. $db->query("SELECT * FROM languages");
  330. while ($language = $db->row_array()) {
  331. if ($language['id'] == $_REQUEST['language']) {
  332. $this_language = $language;
  333. }
  334. $lang[$language[id]] = $language[name];
  335. }
  336. admin_header('Email Templates', 'Create Email Template',
  337. array('dir' => $this_language['direction'], 'lang' => $this_language['isocode'], 'charset' => $this_language['contenttype'])
  338. );
  339. $table[] = array('<b>Name</b>', form_input('name', '', 40));
  340. $table[] = array('<b>Category</b>', form_select('category', array('User Emails', 'Tech Emails'), '', '', 1));
  341. $table[] = array('<b>Language</b>', form_select('language', $lang, $_REQUEST[language]));
  342. $table[] = array('<b>Description</b>', form_textarea('description', '60', '4'));
  343. $table[] = array('<b>Subject</b>', form_input('subject', '', 80));
  344. $table[] = array('<b>Template</b>', form_textarea('template_unparsed', '100', '30', $template[template_unparsed]));
  345. table_header("Create Custom Template", 'emailtemplates.php', array('do' => 'add2'));
  346. table_content($columns, $table);
  347. table_footer('Create Template');
  348. unset($table);
  349. }
  350. ############################### CREATE A TEMPLATE (2) ###############################
  351. if ($_REQUEST['do'] == "add2") {
  352. $template = parse_conditionals($_REQUEST[template_unparsed]);
  353. $db->query(" INSERT INTO template_email SET
  354. name = '" . mysql_escape_string($_REQUEST['name']) . "',
  355. description = '" . mysql_escape_string($_REQUEST['description']) . "',
  356. template = '" . mysql_escape_string($template) . "',
  357. template_unparsed = '" . mysql_escape_string($_REQUEST['template_unparsed']) . "',
  358. category= '" . mysql_escape_string($_REQUEST['category']) . "',
  359. custom = '1',
  360. subject = '" . mysql_escape_string($_REQUEST['subject']) . "'" .
  361. iff($_REQUEST['category'] == 'User Emails', ", language = '$_REQUEST[language]'") .
  362. "");
  363. if ($_RESULT['category'] == 'User Emails') {
  364. jump("emailtemplates.php?do=view_user&language=$_REQUEST[language]", 'Template Created');
  365. } else {
  366. jump("emailtemplates.php?do=view_tech", 'Template Created');
  367. }
  368. }
  369. ############################### EDIT TEMPLATE ###############################
  370. if ($_REQUEST['do'] == "edit") {
  371. $template = $db->query_return("SELECT * FROM template_email WHERE id = '$id'");
  372. if ($template['language']) {
  373. // get the language details
  374. $db->query("SELECT * FROM languages");
  375. while ($language = $db->row_array()) {
  376. if ($language['id'] == $template['language']) {
  377. $this_language = $language;
  378. }
  379. $lang[$language[id]] = $language[name];
  380. }
  381. }
  382. admin_header('Email Templates', '',
  383. array('dir' => $this_language['direction'], 'lang' => $this_language['isocode'], 'charset' => $this_language['contenttype'])
  384. );
  385. $table[] = array('<b>Name</b>', form_input('name', $template['name'], 40));
  386. if ($template['category'] == 'User_Emails') {
  387. $table[] = array('<b>Language</b>', form_select('language', $lang, '', $template['language']));
  388. }
  389. $table[] = array('<b>Description</b>', form_textarea('description', '60', '4', $template[description]));
  390. $table[] = array('<b>Subject</b>', form_input('subject', $template['subject'], 80));
  391. $table[] = array('<b>Template</b>', form_textarea('template_unparsed', '100', '30', $template[template_unparsed]));
  392. table_header("Edit Template", 'emailtemplates.php', array('do' => 'edit2', 'id' => $template['id']));
  393. table_content($columns, $table);
  394. table_footer('Edit Template');
  395. unset($table);
  396. }
  397. ############################### EDIT TEMPLATE (2) ###############################
  398. if ($_REQUEST['do'] == "edit2") {
  399. $template = parse_conditionals($_REQUEST[template_unparsed]);
  400. $db->query(" UPDATE template_email SET
  401. name = '" . mysql_escape_string($_REQUEST['name']) . "',
  402. description = '" . mysql_escape_string($_REQUEST['description']) . "',
  403. template = '" . mysql_escape_string($template) . "',
  404. template_unparsed = '" . mysql_escape_string($_REQUEST['template_unparsed']) . "',
  405. changed = 1,
  406. subject = '" . mysql_escape_string($_REQUEST['subject']) . "',
  407. language = '$_REQUEST[language]'
  408. WHERE id = '$id'
  409. ");
  410. $template = $db->query_return("SELECT * FROM template_email WHERE id = '$id'");
  411. if ($template['category'] == 'User Emails') {
  412. jump("emailtemplates.php?do=view_user&language=$_REQUEST[language]", 'Template Updated');
  413. } else {
  414. jump("emailtemplates.php?do=view_tech&language=$_REQUEST[language]", 'Template Updated');
  415. }
  416. }
  417. ############################### RESTORE TEMPLATE (1) ###############################
  418. if ($_REQUEST['do'] == "restore") {
  419. $template = $db->query_return("SELECT * FROM template_email WHERE id = $id");
  420. if (!$db->num_rows()) {
  421. mistake('Template to restore not found.');
  422. }
  423. $template_backup = $db->query_return("
  424. SELECT * FROM template_email 
  425. WHERE name = '$template[name]'
  426. AND language = '$template[language]'
  427. AND backup = 1
  428. ");
  429. if ($db->num_rows()) {
  430. $db->query("
  431. UPDATE template_email SET 
  432. template = '" . mysql_escape_string($template_backup[template]) . "',
  433. subject = '" . mysql_escape_string($template_backup[subject]) . "',
  434. template_unparsed = '" . mysql_escape_string($template_backup[template_unparsed]) . "',
  435. upgraded = 0,
  436. changed = 0,
  437. backup = 0
  438. WHERE id = '$id'
  439. ");
  440. if ($template_backup['category'] == 'Tech Emails') {
  441. jump("emailtemplates.php?do=view_tech", "Template restored from backup");
  442. } else {
  443. jump("emailtemplates.php?language=$template[language]", "Template restored from backup");
  444. }
  445. } else {
  446. mistake('Backup template not found');
  447. }
  448. }