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

电子政务应用

开发平台:

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: email2.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.17 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Facility to send e-mail to all (or some) users
  20. // |   (administration interface)
  21. // +-------------------------------------------------------------+
  22. error_reporting(E_ALL & ~E_NOTICE);
  23. require_once('./global.php');
  24. //Nullify WTN-WDYL Team
  25. admin_header('Email Users', 'Email Users');
  26. // default do
  27. $_REQUEST['do'] = trim($_REQUEST['do']);
  28. if (!isset($_REQUEST['do']) or $_REQUEST['do'] == "") {
  29. $_REQUEST['do'] = "step1";
  30. }
  31. if ($_REQUEST['do'] == "step2" OR $_REQUEST['do'] == "step3") {
  32. if ($_REQUEST['do'] == "step3") {
  33. $_REQUEST = array_merge($_REQUEST, unserialize($_REQUEST['variables']));
  34. $_REQUEST['do'] = "step3";
  35. }
  36. //////////////////// USERID RANGE ////////////////////
  37. give_default($_REQUEST[greater], 0);
  38. $where .= " WHERE id >= '" . mysql_escape_string($_REQUEST[greater]) . "'";
  39. if ($_REQUEST[lessthan]) {
  40. $where .= " AND id <= '" . mysql_escape_string($_REQUEST[lessthan]) . "'";
  41. }
  42. //////////////////// CUSTOM FIELDS ////////////////////
  43. $db->query("SELECT * FROM user_def ORDER BY displayorder");
  44. while ($result = $db->row_array()) {
  45. $where .= field_search($result, 
  46. $_REQUEST[custom_fields][$result[name]], 
  47. $_REQUEST[custom_fields]['extra' . $result[name]],
  48. 'user',
  49. $_REQUEST[custom_fields][$result[name]."_match"],
  50. $_REQUEST[custom_fields][$result[name]."_not"]);
  51. }
  52. //////////////////// EMAIL / USERNAME ////////////////////
  53. if (trim($_REQUEST[username]) != '') {
  54. $where .= " AND username LIKE '" . mysql_escape_string($_REQUEST[username]) . "'";
  55. }
  56. if (trim($_REQUEST[email]) != '') {
  57. $where .= " AND email LIKE '" . mysql_escape_string($_REQUEST[email]) . "'";
  58. }
  59. //////////////////// DATES ////////////////////
  60. // earliest date registered
  61. if ($_REQUEST['ydate_registered_start']) {
  62. $time = mktime(0, 0, 0, $_REQUEST['mdate_registered_start'], $_REQUEST['ddate_registered_start'], $_REQUEST['ydate_registered_start']);
  63. $where .= " AND date_registered >= '$time'";
  64. }
  65. // lastest date registered
  66. if ($_REQUEST['ydate_registered_end']) {
  67. $time = mktime(0, 0, 0, $_REQUEST['mdate_registered_end'], $_REQUEST['ddate_registered_end'], $_REQUEST['ydate_registered_end']);
  68. $where .= " AND date_registered <= '$time'";
  69. }
  70. if ($_REQUEST['do'] == 'step2') {
  71. //////////////////// GET RESULTS ////////////////////
  72. $db->query("SELECT * FROM user $where");
  73. $total = $db->num_rows();
  74. echo table_border("<b>Your email will be sent to <u>$total</u> users who matched the criteria you specified.</b><br />If you were expecting a different number of users please check your <a href="email2.php?variables_serialized=" . urlencode(serialize($_REQUEST)) . "">search settings</a> were entered correctly.");
  75. $table[] = array('<b>From Email Address</b>', form_input('from'));
  76. $table[] = array('<b>From Name</b>', form_input('name'));
  77. $table[] = array('<b>Email Subject</b>', form_input('subject'));
  78. $table[] = array('<b>Email Body</b><br /><br />You can use $user_fields[username], $user_fields[id], $user_fields[customX] etc. to have specific user values placed<br />in the email body.', form_textarea('body', 100, 20));
  79. table_header('STEP 2 : SEND EMAIL', 'email2.php', array('do' => 'step3', 'variables' => serialize($_REQUEST)), '', 'searchform');
  80. table_content('', $table);
  81. table_footer('Send Email');
  82. unset($columns, $table);
  83. } elseif ($_REQUEST['do'] == 'step3') {
  84. $db->query("SELECT * FROM user $where");
  85. $total = $db->num_rows();
  86. echo table_border("<b>Your email is currently being sent to <u>$total</u> users who matched the criteria you specified.</b><br />Please be patient while the system finishes emailing.");
  87. // time to start emailing!
  88. while ($user_fields = $db->row_array()) {
  89. if (validate_email($user_fields[email])) {
  90. foreach(array_keys($user_fields) AS $name) {
  91. if (stristr($name, 'custom')) {
  92. $user_fields[$name] = field_display($fielddata[$name], $user_fields[$name], 1);
  93. $_REQUEST['body'] = str_replace("$user_fields[$name]", $user_fields[$name], $_REQUEST['body']);
  94. }
  95. }
  96. dp_mail($user_fields[email], $_REQUEST[subject], $_REQUEST[body], $_REQUEST[from]);
  97. echo "Email sent to $user_fields[email]<br />";
  98. }
  99. }
  100. }
  101. }
  102. ############################################# EMAIL USERS ############################################# 
  103. if ($_REQUEST['do'] == "step1") {
  104. $table[] = table_midheader('User Properties');
  105. if ($_REQUEST[variables_serialized]) {
  106. $_REQUEST = array_merge($_REQUEST, unserialize($_REQUEST['variables_serialized']));
  107. }
  108. // id range
  109. $bit = form_input('greater', $_REQUEST['greater'], 3) . " < <b>ID</b> > " . form_input('lessthan', $_REQUEST['lessthan'], 3);
  110. $table[] = array('<b>User ID Range</b>', $bit);
  111. // user owner
  112. $bit = form_input('username', $_REQUEST['username'], 30);
  113. $table[] = array('<b>Username</b><br />% wildcard may be used', $bit);
  114. $bit = form_input('email', $_REQUEST['email'], 30);
  115. $table[] = array('<b>Email</b><br />% wildcard may be used', $bit);
  116. // sort dates for display
  117. if ($_REQUEST['ydate_registered_start']) {
  118. $date = "$_REQUEST[ydate_registered_start]-$_REQUEST[mdate_registered_start]-$_REQUEST[ddate_registered_start]";
  119. } else {
  120. $date = "2001-01-01";
  121. }
  122. if ($_REQUEST['ydate_registered_end']) {
  123. $date2 = "$_REQUEST[ydate_registered_end]-$_REQUEST[mdate_registered_end]-$_REQUEST[ddate_registered_end]";
  124. } else {
  125. $date2 = date('Y-m-d', (mktime() + 3400));
  126. }
  127. // date of registration
  128. $bit =  'From ' . form_date('date_registered_start', '', '', '', 1, $date) . "<a href="#" onClick="datePop('searchform', 'date_registered_start')">".html_image('tech/pribut020.gif')."</a>&nbsp;&nbsp;To " . form_date('date_registered_end', '', '', '', 1, $date2) .
  129. "<a href="#" onClick="datePop('searchform', 'date_registered_end')">".html_image('tech/pribut020.gif')."</a>";
  130. $table[] = array('<b>Date Registered</b>', $bit);
  131. unset($date, $date2);
  132. $db->query("SELECT * FROM user_def WHERE tech_viewable = 1");
  133. if ($db->num_rows()) {
  134. $table[] = table_midheader('Custom User Fields');
  135. }
  136. while ($result = $db->row_array()) {
  137. $display_name = unserialize($result[display_name]);
  138. $display_name = $display_name[$settings[default_language]];
  139. $array_fields[$result[name]] = $display_name;
  140. $bit = field_def($result, 'redo', $_REQUEST[custom_fields][$result[name]], $_REQUEST[custom_fields]["extra" . $result[name]], '', 'custom_fields', 1);
  141. $table[] = array("<b>$display_name</b>", $bit);
  142. }
  143. table_header('STEP 1 : SELECT USERS', 'email2.php', array('do' => 'step2'), '', 'searchform');
  144. table_content($columns, $table);
  145. table_footer('Search');
  146. unset($columns, $table);
  147. }
  148. #############################################
  149. admin_footer();
  150. ?>