]> git.mxchange.org Git - friendica.git/blobdiff - include/poller.php
use "contacts/<id_contact>" url as subject id, as statusnet and twitter use urls...
[friendica.git] / include / poller.php
index 4e1e30ad5cb02ffcbd9d1193b567c96d74e2d4c0..7490bfa819adcc561dd8f80b3962a263576fef9a 100644 (file)
@@ -16,7 +16,6 @@ function poller_run($argv, $argc){
        unset($db_host, $db_user, $db_pass, $db_data);
        };
 
-       $mbox = null;
 
        require_once('session.php');
        require_once('datetime.php');
@@ -27,6 +26,8 @@ function poller_run($argv, $argc){
 
        $a->set_baseurl(get_config('system','url'));
 
+       load_hooks();
+
        logger('poller: start');
        
        // run queue delivery process in the background
@@ -62,10 +63,12 @@ function poller_run($argv, $argc){
 
        $sql_extra = (($manual_id) ? " AND `id` = $manual_id " : "");
 
+       reload_plugins();
+
        $d = datetime_convert();
+
        call_hooks('cron', $d);
 
-       reload_plugins();
 
        $contacts = q("SELECT `id` FROM `contact` 
                WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
@@ -288,26 +291,30 @@ function poller_run($argv, $argc){
                                $xml = fetch_url($contact['poll']);
                        }
                        elseif($contact['network'] === NETWORK_MAIL) {
-                               if(! $mbox) {
-                                       $x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1",
-                                               intval($importer_uid)
-                                       );
-                                       $mailconf = q("SELECT * FROM `mailacct` WHERE `server` != '' AND `uid` = %d LIMIT 1",
-                                               intval($importer_uid)
-                                       );
-                                       if(count($x) && count($mailconf)) {
-                                           $mailbox = construct_mailbox_name($mailconf[0]);
-                                               $password = '';
-                                               openssl_private_decrypt(hex2bin($mailconf[0]['pass']),$password,$x[0]['prvkey']);
-                                               $mbox = email_connect($mailbox,$mailconf[0]['user'],$password);
-                                               unset($password);
-                                               if($mbox) {
-                                                       q("UPDATE `mailacct` SET `last_check` = '%d' WHERE `id` = %d AND `uid` = %d LIMIT 1",
-                                                               dbesc(datetime_convert()),
-                                                               intval($mailconf[0]['id']),
-                                                               intval($importer_uid)
-                                                       );
-                                               }
+
+                               $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
+                               if($mail_disabled)
+                                       continue;
+
+                               $mbox = null;
+                               $x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1",
+                                       intval($importer_uid)
+                               );
+                               $mailconf = q("SELECT * FROM `mailacct` WHERE `server` != '' AND `uid` = %d LIMIT 1",
+                                       intval($importer_uid)
+                               );
+                               if(count($x) && count($mailconf)) {
+                                   $mailbox = construct_mailbox_name($mailconf[0]);
+                                       $password = '';
+                                       openssl_private_decrypt(hex2bin($mailconf[0]['pass']),$password,$x[0]['prvkey']);
+                                       $mbox = email_connect($mailbox,$mailconf[0]['user'],$password);
+                                       unset($password);
+                                       if($mbox) {
+                                               q("UPDATE `mailacct` SET `last_check` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
+                                                       dbesc(datetime_convert()),
+                                                       intval($mailconf[0]['id']),
+                                                       intval($importer_uid)
+                                               );
                                        }
                                }
                                if($mbox) {
@@ -351,7 +358,7 @@ function poller_run($argv, $argc){
 
                                                        if(count($r)) {
                                                                if($meta->deleted && ! $r[0]['deleted']) {
-                                                                       q("UPDATE `item` SET `deleted` = `, `changed` = '%s' WHERE `id` = %d LIMIT 1",
+                                                                       q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
                                                                                dbesc(datetime_convert()),
                                                                                intval($r[0]['id'])
                                                                        );
@@ -365,6 +372,13 @@ function poller_run($argv, $argc){
                                                        if(! $r)
                                                                continue;
                                                        $datarray['body'] = escape_tags($r['body']);
+
+                                                       // some mailing lists have the original author as 'from' - add this sender info to msg body. 
+                                                       // todo: adding a gravatar for the original author would be cool
+
+                                                       if(! stristr($meta->from,$contact['addr']))
+                                                               $datarray['body'] = t('From: ') . escape_tags($meta->from) . "\n\n" . $datarray['body'];
+
                                                        $datarray['uid'] = $importer_uid;
                                                        $datarray['contact-id'] = $contact['id'];
                                                        if($datarray['parent-uri'] === $datarray['uri'])
@@ -383,6 +397,8 @@ function poller_run($argv, $argc){
                                                        );
                                                }
                                        }
+
+                                       imap_close($mbox);
                                }
                        }
                        elseif($contact['network'] === NETWORK_FACEBOOK) {
@@ -435,8 +451,6 @@ function poller_run($argv, $argc){
                }
        }
 
-       if($mbox && function_exists('imap_close'))
-               imap_close($mbox);
                
        return;
 }