[ Index ]
 

Code source de WordPress 2.1.2

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/ -> wp-mail.php (source)

   1  <?php
   2  require(dirname(__FILE__) . '/wp-config.php');
   3  
   4  require_once(ABSPATH.WPINC.'/class-pop3.php');
   5  
   6  error_reporting(2037);
   7  
   8  $time_difference = get_option('gmt_offset') * 3600;
   9  
  10  $phone_delim = '::';
  11  
  12  $pop3 = new POP3();
  13  
  14  if (!$pop3->connect(get_option('mailserver_url'), get_option('mailserver_port')))
  15      wp_die($pop3->ERROR);
  16  
  17  $count = $pop3->login(get_option('mailserver_login'), get_option('mailserver_pass'));
  18  if (0 == $count) wp_die(__('There doesn&#8217;t seem to be any new mail.'));
  19  
  20  
  21  for ($i=1; $i <= $count; $i++) :
  22  
  23      $message = $pop3->get($i);
  24  
  25      $content = '';
  26      $content_type = '';
  27      $boundary = '';
  28      $bodysignal = 0;
  29      $dmonths = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
  30                       'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
  31      foreach ($message as $line) :
  32          if (strlen($line) < 3) $bodysignal = 1;
  33  
  34          if ($bodysignal) {
  35              $content .= $line;
  36          } else {
  37              if (preg_match('/Content-Type: /i', $line)) {
  38                  $content_type = trim($line);
  39                  $content_type = substr($content_type, 14, strlen($content_type)-14);
  40                  $content_type = explode(';', $content_type);
  41                  $content_type = $content_type[0];
  42              }
  43              if (($content_type == 'multipart/alternative') && (preg_match('/boundary="/', $line)) && ($boundary == '')) {
  44                  $boundary = trim($line);
  45                  $boundary = explode('"', $boundary);
  46                  $boundary = $boundary[1];
  47              }
  48              if (preg_match('/Subject: /i', $line)) {
  49                  $subject = trim($line);
  50                  $subject = substr($subject, 9, strlen($subject)-9);
  51                  $subject = wp_iso_descrambler($subject);
  52                  // Captures any text in the subject before $phone_delim as the subject
  53                  $subject = explode($phone_delim, $subject);
  54                  $subject = $subject[0];
  55              }
  56  
  57              // Set the author using the email address (To or Reply-To, the last used)
  58              // otherwise use the site admin
  59              if (preg_match('/From: /', $line) | preg_match('Reply-To: /', $line))  {
  60                  $author=trim($line);
  61              if ( ereg("([a-zA-Z0-9\_\-\.]+@[\a-zA-z0-9\_\-\.]+)", $author , $regs) ) {
  62                  $author = $regs[1];
  63                  echo "Author = {$author} <p>";
  64                  $author = $wpdb->escape($author);
  65                  $result = $wpdb->get_row("SELECT ID FROM $wpdb->users WHERE user_email='$author' LIMIT 1");
  66                  if (!$result)
  67                      $post_author = 1;
  68                  else
  69                      $post_author = $result->ID;
  70              } else
  71                  $post_author = 1;
  72              }
  73  
  74              if (preg_match('/Date: /i', $line)) { // of the form '20 Mar 2002 20:32:37'
  75                  $ddate = trim($line);
  76                  $ddate = str_replace('Date: ', '', $ddate);
  77                  if (strpos($ddate, ',')) {
  78                      $ddate = trim(substr($ddate, strpos($ddate, ',')+1, strlen($ddate)));
  79                  }
  80                  $date_arr = explode(' ', $ddate);
  81                  $date_time = explode(':', $date_arr[3]);
  82  
  83                  $ddate_H = $date_time[0];
  84                  $ddate_i = $date_time[1];
  85                  $ddate_s = $date_time[2];
  86  
  87                  $ddate_m = $date_arr[1];
  88                  $ddate_d = $date_arr[0];
  89                  $ddate_Y = $date_arr[2];
  90                  for ($j=0; $j<12; $j++) {
  91                      if ($ddate_m == $dmonths[$j]) {
  92                          $ddate_m = $j+1;
  93                      }
  94                  }
  95  
  96                  $time_zn = intval($date_arr[4]) * 36;
  97                  $ddate_U = gmmktime($ddate_H, $ddate_i, $ddate_s, $ddate_m, $ddate_d, $ddate_Y);
  98                  $ddate_U = $ddate_U - $time_zn;
  99                  $post_date = gmdate('Y-m-d H:i:s', $ddate_U + $time_difference);
 100                  $post_date_gmt = gmdate('Y-m-d H:i:s', $ddate_U);
 101              }
 102          }
 103      endforeach;
 104  
 105      $subject = trim(str_replace(get_option('subjectprefix'), '', $subject));
 106  
 107      if ($content_type == 'multipart/alternative') {
 108          $content = explode('--'.$boundary, $content);
 109          $content = $content[2];
 110          $content = explode('Content-Transfer-Encoding: quoted-printable', $content);
 111          $content = strip_tags($content[1], '<img><p><br><i><b><u><em><strong><strike><font><span><div>');
 112      }
 113      $content = trim($content);
 114      // Captures any text in the body after $phone_delim as the body
 115      $content = explode($phone_delim, $content);
 116      $content[1] ? $content = $content[1] : $content = $content[0];
 117  
 118      echo "<p><b>Content-type:</b> $content_type, <b>boundary:</b> $boundary</p>\n";
 119      echo "<p><b>Raw content:</b><br /><pre>".$content.'</pre></p>';
 120  
 121      $content = trim($content);
 122  
 123      $post_content = apply_filters('phone_content', $content);
 124  
 125      $post_title = xmlrpc_getposttitle($content);
 126  
 127      if ($post_title == '') $post_title = $subject;
 128  
 129      if (empty($post_categories)) $post_categories[] = get_option('default_email_category');
 130  
 131      $post_category = $post_categories;
 132  
 133      // or maybe we should leave the choice to email drafts? propose a way
 134      $post_status = 'publish';
 135  
 136      $post_data = compact('post_content','post_title','post_date','post_date_gmt','post_author','post_category', 'post_status');
 137      $post_data = add_magic_quotes($post_data);
 138  
 139      $post_ID = wp_insert_post($post_data);
 140  
 141      if (!$post_ID) {
 142          // we couldn't post, for whatever reason. better move forward to the next email
 143          continue;
 144      }
 145  
 146      do_action('publish_phone', $post_ID);
 147  
 148      echo "\n<p><b>Author:</b> $post_author</p>";
 149      echo "\n<p><b>Posted title:</b> $post_title<br />";
 150      echo "\n<b>Posted content:</b><br /><pre>".$content.'</pre></p>';
 151  
 152      if(!$pop3->delete($i)) {
 153          echo '<p>Oops '.$pop3->ERROR.'</p></div>';
 154          $pop3->reset();
 155          exit;
 156      } else {
 157          echo "<p>Mission complete, message <strong>$i</strong> deleted.</p>";
 158      }
 159  
 160  endfor;
 161  
 162  $pop3->quit();
 163  
 164  ?>


Généré le : Fri Mar 30 19:41:27 2007 par Balluche grâce à PHPXref 0.7