]> git.mxchange.org Git - friendica.git/blobdiff - include/onepoll.php
Continued with code convention:
[friendica.git] / include / onepoll.php
index 516f1dfd4d7308096480f14ce108afb5ba570ec5..d92cb915b6eb0ce96801086699f40c01fa542866 100644 (file)
@@ -24,15 +24,12 @@ function onepoll_run(&$argv, &$argc){
                unset($db_host, $db_user, $db_pass, $db_data);
        };
 
-
        require_once('include/session.php');
        require_once('include/datetime.php');
-       require_once('library/simplepie/simplepie.inc');
        require_once('include/items.php');
        require_once('include/Contact.php');
        require_once('include/email.php');
        require_once('include/socgraph.php');
-       require_once('include/pidfile.php');
        require_once('include/queue_fn.php');
 
        load_config('config');
@@ -61,18 +58,10 @@ function onepoll_run(&$argv, &$argc){
                return;
        }
 
-       $lockpath = get_lockpath();
-       if ($lockpath != '') {
-               $pidfile = new pidfile($lockpath, 'onepoll'.$contact_id);
-               if ($pidfile->is_already_running()) {
-                       logger("onepoll: Already running for contact ".$contact_id);
-                       if ($pidfile->running_time() > 9*60) {
-                               $pidfile->kill();
-                               logger("killed stale process");
-                       }
-                       exit;
-               }
-       }
+       // Don't check this stuff if the function is called by the poller
+       if (App::callstack() != "poller_run")
+               if (App::is_already_running('onepoll'.$contact_id, '', 540))
+                       return;
 
        $d = datetime_convert();
 
@@ -104,7 +93,7 @@ function onepoll_run(&$argv, &$argc){
                        where `cid` = %d and updated > UTC_TIMESTAMP() - INTERVAL 1 DAY",
                        intval($contact['id'])
                );
-               if (count($r))
+               if (dbm::is_result($r))
                        if (!$r[0]['total'])
                                poco_load($contact['id'],$importer_uid,0,$contact['poco']);
        }
@@ -154,8 +143,9 @@ function onepoll_run(&$argv, &$argc){
        $r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` INNER JOIN `user` on `contact`.`uid` = `user`.`uid` WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
                intval($importer_uid)
        );
-       if(! count($r))
+       if (! dbm::is_result($r)) {
                return;
+       }
 
        $importer = $r[0];
 
@@ -335,7 +325,9 @@ function onepoll_run(&$argv, &$argc){
                if($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['blocked'] || $contact['readonly'])
                        return;
 
-               $xml = fetch_url($contact['poll']);
+               $cookiejar = tempnam(get_temppath(), 'cookiejar-onepoll-');
+               $xml = fetch_url($contact['poll'], false, $redirects, 0, Null, $cookiejar);
+               unlink($cookiejar);
        }
        elseif($contact['network'] === NETWORK_MAIL || $contact['network'] === NETWORK_MAIL2) {
 
@@ -402,7 +394,7 @@ function onepoll_run(&$argv, &$argc){
                                                        dbesc($datarray['uri'])
                                                );
 
-                                               if(count($r)) {
+                                               if (dbm::is_result($r)) {
                                                        logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user']." UID: ".$importer_uid." URI: ".$datarray['uri'],LOGGER_DEBUG);
 
                                                        // Only delete when mails aren't automatically moved or deleted
@@ -452,10 +444,10 @@ function onepoll_run(&$argv, &$argc){
                                                                        $refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
                                                        }
                                                        $qstr = implode(',',$refs_arr);
-                                                       $r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
+                                                       $r = q("SELECT `uri` , `parent-uri` FROM `item` USE INDEX (`uid_uri`) WHERE `uri` IN ($qstr) AND `uid` = %d LIMIT 1",
                                                                intval($importer_uid)
                                                        );
-                                                       if(count($r))
+                                                       if (dbm::is_result($r))
                                                                $datarray['parent-uri'] = $r[0]['parent-uri'];  // Set the parent as the top-level item
        //                                                      $datarray['parent-uri'] = $r[0]['uri'];
                                                }
@@ -484,10 +476,11 @@ function onepoll_run(&$argv, &$argc){
 
                                                // If it seems to be a reply but a header couldn't be found take the last message with matching subject
                                                if(!x($datarray,'parent-uri') and $reply) {
-                                                       $r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `title` = \"%s\" AND `uid` = %d ORDER BY `created` DESC LIMIT 1",
+                                                       $r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `title` = \"%s\" AND `uid` = %d AND `network` = '%s' ORDER BY `created` DESC LIMIT 1",
                                                                dbesc(protect_sprintf($datarray['title'])),
-                                                               intval($importer_uid));
-                                                       if(count($r))
+                                                               intval($importer_uid),
+                                                               dbesc(NETWORK_MAIL));
+                                                       if (dbm::is_result($r))
                                                                $datarray['parent-uri'] = $r[0]['parent-uri'];
                                                }