From 27cbb830a7bd72f13181acc5999a6bed4f74f5ae Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 15 Apr 2011 23:40:43 -0700 Subject: [PATCH] more work on email contacts --- boot.php | 2 +- database.sql | 4 ++ include/{imap.php => email.php} | 29 ++++---- include/poller.php | 113 +++++++++++++++++++++----------- update.php | 9 +++ 5 files changed, 105 insertions(+), 52 deletions(-) rename include/{imap.php => email.php} (83%) diff --git a/boot.php b/boot.php index 0c2c3163b5..eeaf513984 100644 --- a/boot.php +++ b/boot.php @@ -4,7 +4,7 @@ set_time_limit(0); define ( 'FRIENDIKA_VERSION', '2.1.950' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); -define ( 'DB_UPDATE_VERSION', 1051 ); +define ( 'DB_UPDATE_VERSION', 1052 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index b88e5e5ff9..e134d74381 100644 --- a/database.sql +++ b/database.sql @@ -64,6 +64,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( `issued-id` char(255) NOT NULL, `dfrn-id` char(255) NOT NULL, `url` char(255) NOT NULL, + `addr` char(255) NOT NULL, `alias` char(255) NOT NULL, `pubkey` text NOT NULL, `prvkey` text NOT NULL, @@ -508,6 +509,9 @@ CREATE TABLE IF NOT EXISTS `mailacct` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `uid` INT NOT NULL, `server` CHAR( 255 ) NOT NULL , +`port` INT NOT NULL, +`ssltype` CHAR( 16 ) NOT NULL, +`mailbox` CHAR( 255 ) NOT NULL, `user` CHAR( 255 ) NOT NULL , `pass` CHAR( 255 ) NOT NULL , `reply_to` CHAR( 255 ) NOT NULL , diff --git a/include/imap.php b/include/email.php similarity index 83% rename from include/imap.php rename to include/email.php index 018727639a..c7a006da0b 100644 --- a/include/imap.php +++ b/include/email.php @@ -1,28 +1,31 @@ subtype)=='plain') - $plainmsg. = trim($data) ."\n\n"; + $plainmsg .= trim($data) ."\n\n"; else - $htmlmsg. = $data ."

"; + $htmlmsg .= $data ."

"; $charset = $params['charset']; // assume all parts are same charset } @@ -96,7 +99,7 @@ function getpart($mbox,$mid,$p,$partno) { // There are no PHP functions to parse embedded messages, // so this just appends the raw source to the main message. elseif ($p->type==2 && $data) { - $plainmsg. = $data."\n\n"; + $plainmsg .= $data."\n\n"; } // SUBPART RECURSION diff --git a/include/poller.php b/include/poller.php index b878ef2954..37109f17d4 100644 --- a/include/poller.php +++ b/include/poller.php @@ -1,4 +1,5 @@ set_baseurl(get_config('system','url')); @@ -85,6 +89,9 @@ function poller_run($argv, $argc){ continue; foreach($res as $contact) { + + $xml = false; + if($manual_id) $contact['last-update'] = '0000-00-00 00:00:00'; @@ -158,7 +165,7 @@ function poller_run($argv, $argc){ : datetime_convert('UTC','UTC',$contact['last-update'], ATOM_TIME) ); - if($contact['network'] === 'dfrn') { + if($contact['network'] === NETWORK_DFRN) { $idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']); @@ -175,12 +182,12 @@ function poller_run($argv, $argc){ . '&type=data&last_update=' . $last_update . '&perm=' . $perm ; - $xml = fetch_url($url); + $handshake_xml = fetch_url($url); - logger('poller: handshake with url ' . $url . ' returns xml: ' . $xml, LOGGER_DATA); + logger('poller: handshake with url ' . $url . ' returns xml: ' . $handshake_xml, LOGGER_DATA); - if(! $xml) { + if(! $handshake_xml) { logger("poller: $url appears to be dead - marking for death "); // dead connection - might be a transient event, or this might // mean the software was uninstalled or the domain expired. @@ -197,7 +204,7 @@ function poller_run($argv, $argc){ continue; } - if(! strstr($xml,'status) == 1) { logger("poller: $url replied status 1 - marking for death "); @@ -265,51 +272,81 @@ function poller_run($argv, $argc){ $xml = post_url($contact['poll'],$postvars); } - else { + elseif(($contact['network'] === NETWORK_OSTATUS) + || ($contact['network'] === NETWORK_DIASPORA) + || ($contact['network'] === NETWORK_FEED) ) { - // $contact['network'] !== 'dfrn' + // Upgrading DB fields from an older Friendika version + // Will only do this once per notify-enabled OStatus contact if(($contact['notify']) && (! $contact['writable'])) { q("UPDATE `contact` SET `writable` = 1 WHERE `id` = %d LIMIT 1", intval($contact['id']) ); } + $xml = fetch_url($contact['poll']); } - - logger('poller: received xml : ' . $xml, LOGGER_DATA); - - if(! strstr($xml,'