From fb9ec6bad89afc69ebce9767771e03e8632202bd Mon Sep 17 00:00:00 2001 From: Matt Mullenweg Date: Sat, 24 Apr 2004 22:43:47 +0000 Subject: [PATCH] New mail functionality. git-svn-id: https://develop.svn.wordpress.org/trunk@1153 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-mail.php | 243 ++++++++++++---------------------------------------- 1 file changed, 53 insertions(+), 190 deletions(-) diff --git a/wp-mail.php b/wp-mail.php index b2ac2accfc..17466ec620 100644 --- a/wp-mail.php +++ b/wp-mail.php @@ -3,45 +3,29 @@ require(dirname(__FILE__) . '/wp-config.php'); require_once(ABSPATH.WPINC.'/class-pop3.php'); - -timer_start(); - -$output_debugging_info = 0; # =1 if you want to output debugging info - -if (get_settings('use_phoneemail')) { - // if you're using phone email, the email will already be in your timezone - $time_difference = 0; -} - error_reporting(2037); - - $pop3 = new POP3(); -if(!$pop3->connect(get_settings('mailserver_url'), get_settings('mailserver_port'))) { +if (!$pop3->connect(get_settings('mailserver_url'), get_settings('mailserver_port'))) : echo "Ooops $pop3->ERROR
\n"; exit; -} +endif; -$Count = $pop3->login(get_settings('mailserver_login'), get_settings('mailserver_pass')); -if((!$Count) || ($Count == -1)) { - echo "

Login Failed: $pop3->ERROR

\n"; - $pop3->quit(); - exit; -} +$count = $pop3->login(get_settings('mailserver_login'), get_settings('mailserver_pass')); +if (0 == $count) die(__('There doesn’t seem to be any new mail.')); -// ONLY USE THIS IF YOUR PHP VERSION SUPPORTS IT! -//register_shutdown_function($pop3->quit()); +for ($i=1; $i <= $count; $i++) : -for ($iCount=1; $iCount<=$Count; $iCount++) { + $message = $pop3->get($i); - $MsgOne = $pop3->get($iCount); - if((!$MsgOne) || (gettype($MsgOne) != 'array')) { - echo "oops, $pop3->ERROR
\n"; - $pop3->quit(); + if(!$pop3->delete($i)) { + echo '

Oops '.$pop3->ERROR.'

'; + $pop3->reset(); exit; + } else { + echo "

Mission complete, message $i deleted.

"; } $content = ''; @@ -50,10 +34,9 @@ for ($iCount=1; $iCount<=$Count; $iCount++) { $bodysignal = 0; $dmonths = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); - while ( list ( $lineNum,$line ) = each ($MsgOne) ) { - if (strlen($line) < 3) { - $bodysignal = 1; - } + foreach ($message as $line) : + if (strlen($line) < 3) $bodysignal = 1; + if ($bodysignal) { $content .= $line; } else { @@ -74,13 +57,6 @@ for ($iCount=1; $iCount<=$Count; $iCount++) { if (!preg_match('#\=\?(.+)\?Q\?(.+)\?\=#i', $subject)) { $subject = wp_iso_descrambler($subject); } - if (get_settings('use_phoneemail')) { - $subject = explode(get_settings('phoneemail_separator'), $subject); - $subject = trim($subject[0]); - } - if (!ereg(get_settings('subjectprefix'), $subject)) { - continue; - } } if (preg_match('/Date: /', $line)) { // of the form '20 Mar 2002 20:32:37' $ddate = trim($line); @@ -109,183 +85,70 @@ for ($iCount=1; $iCount<=$Count; $iCount++) { $post_date_gmt = gmdate('Y-m-d H:i:s', $ddate_U); } } - } + endforeach; $ddate_today = time() + ($time_difference * 3600); $ddate_difference_days = ($ddate_today - $ddate_U) / 86400; - # starts buffering the output - ob_start(); + $subject = trim(str_replace(get_settings('subjectprefix'), '', $subject)); - if ($ddate_difference_days > 14) { - echo 'Too old
'; - continue; + if ($content_type == 'multipart/alternative') { + $content = explode('--'.$boundary, $content); + $content = $content[2]; + $content = explode('Content-Transfer-Encoding: quoted-printable', $content); + $content = strip_tags($content[1], '


'); } + $content = trim($content); - if (preg_match('/'.get_settings('subjectprefix').'/', $subject)) { + echo "

Content-type: $content_type, boundary: $boundary

\n"; + echo "

Raw content:

".$content.'

'; - $userpassstring = ''; + $content = trim($content); - echo '
'; - echo "

$iCount

Subject: $subject

\n"; + $content = trim($content); - $subject = trim(str_replace(get_settings('subjectprefix'), '', $subject)); + $post_title = xmlrpc_getposttitle($content); - if ($content_type == 'multipart/alternative') { - $content = explode('--'.$boundary, $content); - $content = $content[2]; - $content = explode('Content-Transfer-Encoding: quoted-printable', $content); - $content = strip_tags($content[1], '


'); - } - $content = trim($content); + if ($post_title == '') $post_title = $subject; - echo "

Content-type: $content_type, boundary: $boundary

\n"; - echo "

Raw content:

".$content.'

'; - - $btpos = strpos($content, get_settings('bodyterminator')); - if ($btpos) { - $content = substr($content, 0, $btpos); - } - $content = trim($content); + if (empty($post_categories)) $post_categories[] = get_settings('default_category'); - $blah = explode("\n", $content); - $firstline = $blah[0]; - $secondline = $blah[1]; + $post_title = addslashes(trim($post_title)); + $content = preg_replace("|\n([^\n])|", " $1", $content); + $content = addslashes(trim($content)); - if (get_settings('use_phoneemail')) { - $btpos = strpos($firstline, get_settings('phoneemail_separator')); - if ($btpos) { - $userpassstring = trim(substr($firstline, 0, $btpos)); - $content = trim(substr($content, $btpos+strlen(get_settings('phoneemail_separator')), strlen($content))); - $btpos = strpos($content, get_settings('phoneemail_separator')); - if ($btpos) { - $userpassstring = trim(substr($content, 0, $btpos)); - $content = trim(substr($content, $btpos+strlen(get_settings('phoneemail_separator')), strlen($content))); - } - } - $contentfirstline = $blah[1]; - } else { - $userpassstring = $firstline; - $contentfirstline = ''; - } - $flat = 999.0; - $flon = 999.0; - $secondlineParts = explode(':',$secondline); - if(strncmp($secondlineParts[0],"POS",3)==0) { - echo "Found POS:
\n"; - //echo "Second parts is:".$secondlineParts[1]; - // the second line is the postion listing line - $secLineParts = explode(',',$secondlineParts[1]); - $flatStr = $secLineParts[0]; - $flonStr = $secLineParts[1]; - //echo "String are ".$flatStr.$flonStr; - $flat = floatval($secLineParts[0]); - $flon = floatval($secLineParts[1]); - //echo "values are ".$flat." and ".$flon; - // ok remove that position... we should not have it in the final output - $content = str_replace($secondline,'',$content); - } + $sql = "INSERT INTO $tableposts (post_author, post_date, post_date_gmt, post_content, post_title, post_modified, post_modified_gmt) VALUES (1, '$post_date', '$post_date_gmt', '$content', '$post_title', '$post_date', '$post_date_gmt')"; - $blah = explode(':', $userpassstring); - $user_login = $blah[0]; - $user_pass = md5($blah[1]); + $result = $wpdb->query($sql); + $post_ID = $wpdb->insert_id; - $content = $contentfirstline.str_replace($firstline, '', $content); - $content = trim($content); - echo "

Login: $user_login, Pass: $user_pass

"; + pingback($content, $post_ID); - $sql = "SELECT ID, user_level FROM $tableusers WHERE user_login='$user_login' AND user_pass='$user_pass' ORDER BY ID DESC LIMIT 1"; - $result = $wpdb->get_row($sql); + echo "\n

Posted title: $post_title
"; + echo "\nPosted content:

".$content.'

'; - if (!$result) { - echo '

Wrong login or password.

'; - continue; - } +if (!$post_categories) $post_categories[] = 1; +foreach ($post_categories as $post_category) : + $post_category = intval($post_category); - $user_level = $result->user_level; - $post_author = $result->ID; + // Double check it's not there already + $exists = $wpdb->get_row("SELECT * FROM $tablepost2cat WHERE post_id = $post_ID AND category_id = $post_category"); - if ($user_level > 0) { - - $post_title = xmlrpc_getposttitle($content); - $post_categories[] = xmlrpc_getpostcategory($content); - - if ($post_title == '') { - $post_title = $subject; - } - if (empty($post_categories)) { - $post_categories[] = get_settings('default_category'); - } - - if (!$thisisforfunonly) { - $post_title = addslashes(trim($post_title)); - $content = preg_replace("|\n([^\n])|", " $1", $content); - $content = addslashes(trim($content)); - if($flat > 500) { - $sql = "INSERT INTO $tableposts (post_author, post_date, post_date_gmt, post_content, post_title, post_modified, post_modified_gmt) VALUES ($post_author, '$post_date', '$post_date_gmt', '$content', '$post_title', '$post_date', '$post_date_gmt')"; - } else { - $sql = "INSERT INTO $tableposts (post_author, post_date, post_date_gmt, post_content, post_title, post_modified, post_modified_gmt, post_lat, post_lon) VALUES ($post_author, '$post_date', '$post_date_gmt', '$content', '$post_title', '$post_date', '$post_date_gmt', $flat, $flon)"; - } - $result = $wpdb->query($sql); - $post_ID = $wpdb->insert_id; - - if (isset($sleep_after_edit) && $sleep_after_edit > 0) { - sleep($sleep_after_edit); - } - - $blog_ID = 1; - if($flat < 500) { - pingGeoUrl($post_ID); - } - - pingback($content, $post_ID); - } - echo "\n

Posted title: $post_title
"; - echo "\nPosted content:

".$content.'

'; - - if (!$post_categories) $post_categories[] = 1; - foreach ($post_categories as $post_category) { - $post_category = intval($post_category); - - // Double check it's not there already - $exists = $wpdb->get_row("SELECT * FROM $tablepost2cat WHERE post_id = $post_ID AND category_id = $post_category"); - - if (!$exists && $result) { - $wpdb->query(" - INSERT INTO $tablepost2cat - (post_id, category_id) - VALUES - ($post_ID, $post_category) - "); - } - } - - if(!$pop3->delete($iCount)) { - echo '

Oops '.$pop3->ERROR.'

'; - $pop3->reset(); - exit; - } else { - echo "

Mission complete, message $iCount deleted.

"; - } - - } else { - echo '

Level 0 users can\'t post.

'; - } - echo '
'; - if ($output_debugging_info) { - ob_end_flush(); - } else { - ob_end_clean(); - } + if (!$exists && $result) { + $wpdb->query(" + INSERT INTO $tablepost2cat + (post_id, category_id) + VALUES + ($post_ID, $post_category) + "); } -} +endforeach; + +endfor; $pop3->quit(); -timer_stop($output_debugging_info); -exit; - ?> \ No newline at end of file