]> git.mxchange.org Git - friendica.git/blobdiff - include/poller.php
theme name cleanup - rename default to loozah, provide sane fallbacks and change...
[friendica.git] / include / poller.php
index 8234becbb92b95d7ec32dc3fef203f6314aa6abf..1d88fe447fb9e6a018b9b8e076382f7c8ace4ef9 100644 (file)
@@ -1,14 +1,19 @@
 <?php
-
-
-       require_once('boot.php');
-
-       $a = new App;
-
-       @include('.htconfig.php');
-       require_once('dba.php');
-       $db = new dba($db_host, $db_user, $db_pass, $db_data);
-               unset($db_host, $db_user, $db_pass, $db_data);
+require_once("boot.php");
+
+function poller_run($argv, $argc){
+  global $a, $db;
+
+  if(is_null($a)){
+    $a = new App;
+  }
+  
+  if(is_null($db)){
+    @include(".htconfig.php");
+    require_once("dba.php");
+    $db = new dba($db_host, $db_user, $db_pass, $db_data);
+    unset($db_host, $db_user, $db_pass, $db_data);
+  };
 
        require_once('session.php');
        require_once('datetime.php');
        $a->set_baseurl(get_config('system','url'));
 
        logger('poller: start');
-
+       
        // run queue delivery process in the background
 
        $php_path = ((x($a->config,'php_path') && strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
-       proc_close(proc_open("\"$php_path\" \"include/queue.php\" &", array(), $foo));
-
+       //proc_close(proc_open("\"$php_path\" \"include/queue.php\" &", array(), $foo));
+       proc_run($php_path,"include/queue.php");
+       
+       // clear old cache
+       q("DELETE FROM `cache` WHERE `updated`<'%s'",
+               dbesc(datetime_convert('UTC','UTC',"now - 30 days")));
 
+       $manual_id  = 0;
        $hub_update = false;
-       $force = false;
+       $force      = false;
 
        if(($argc > 1) && ($argv[1] == 'force'))
                $force = true;
 
+       if(($argc > 1) && intval($argv[1])) {
+               $manual_id = intval($argv[1]);
+               $force     = true;
+       }
+
+       $sql_extra = (($manual_id) ? " AND `id` = $manual_id " : "");
+
        // 'stat' clause is a temporary measure until we have federation subscriptions working both directions
        $contacts = q("SELECT * FROM `contact` 
                WHERE ( ( `network` = 'dfrn' AND ( `dfrn-id` != '' OR (`issued-id` != '' AND `duplex` = 1)))
-               OR ( `network` IN ( 'stat', 'feed' ) AND `poll` != '' )) 
+               OR ( `network` IN ( 'stat', 'feed' ) AND `poll` != '' ))
+               $sql_extra 
                AND `self` = 0 AND `blocked` = 0 AND `readonly` = 0 ORDER BY RAND()");
 
-       if(! count($contacts))
-               killme();
+       if(! count($contacts)){
+               return;
+       }
 
        foreach($contacts as $contact) {
 
+               if($manual_id)
+                       $contact['last-update'] = '0000-00-00 00:00:00';
+
                if($contact['priority'] || $contact['subhub']) {
 
                        $hub_update = true;
@@ -61,7 +83,7 @@
                                $contact['priority'] = (($interval !== false) ? intval($interval) : 3);
                                $hub_update = false;
 
-                               if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day"))
+                               if((datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day")) || $force)
                                                $hub_update = true;
                        }
 
                        $xml = post_url($contact['poll'],$postvars);
                }
                else {
+
                        // $contact['network'] !== 'dfrn'
 
                        $xml = fetch_url($contact['poll']);
 
                logger('poller: received xml : ' . $xml, LOGGER_DATA);
 
-               if(! strlen($xml))
+               if(! strstr($xml,'<?xml')) {
+                       logger('poller: post_handshake: response from ' . $url . ' did not contain XML.');
+                       $r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
+                               dbesc(datetime_convert()),
+                               intval($contact['id'])
+                       );
                        continue;
+               }
 
                consume_feed($xml,$importer,$contact,$hub,1);
 
                }
 
 
-               $r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
-                       dbesc(datetime_convert()),
+               $updated = datetime_convert();
+
+               $r = q("UPDATE `contact` SET `last-update` = '%s', `success_update` = '%s' WHERE `id` = %d LIMIT 1",
+                       dbesc($updated),
+                       dbesc($updated),
                        intval($contact['id'])
                );
 
                // loop - next contact
        }  
                
-       killme();
-
-
+       return;
+}
 
+if (array_search(__file__,get_included_files())===0){
+  poller_run($argv,$argc);
+  killme();
+}