]> git.mxchange.org Git - friendica.git/commitdiff
OStatus conversation: Prevent posting loops
authorMichael Vogel <icarus@dabo.de>
Sun, 3 Mar 2013 16:58:35 +0000 (17:58 +0100)
committerMichael Vogel <icarus@dabo.de>
Sun, 3 Mar 2013 16:58:35 +0000 (17:58 +0100)
include/ostatus_conversation.php

index cecbb0496421e6195fbc4fdd37263628455d4c8d..36ba207abefeba2cf500df8a514184c6946d8cf2 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 define('OSTATUS_DEFAULT_POLL_INTERVAL', 30); // given in minutes
+define('OSTATUS_DEFAULT_POLL_TIMEFRAME', 1440); // given in minutes
 
 function check_conversations() {
         $last = get_config('system','ostatus_last_poll');
@@ -8,17 +9,25 @@ function check_conversations() {
         if(! $poll_interval)
                 $poll_interval = OSTATUS_DEFAULT_POLL_INTERVAL;
 
+       // Don't poll if the interval is set negative
+       if ($poll_interval < 0)
+               return;
+
+        $poll_timeframe = intval(get_config('system','ostatus_poll_timeframe'));
+        if(! $poll_timeframe)
+                $poll_timeframe = OSTATUS_DEFAULT_POLL_TIMEFRAME;
+
         if($last) {
                 $next = $last + ($poll_interval * 60);
                 if($next > time()) {
-                        logger('complete_conversation: poll intervall not reached');
+                        logger('complete_conversation: poll interval not reached');
                         return;
                 }
         }
 
         logger('complete_conversation: cron_start');
 
-        $start = date("Y-m-d H:i:s", time() - 86400);
+        $start = date("Y-m-d H:i:s", time() - ($poll_timeframe * 60));
         $conversations = q("SELECT * FROM `term` WHERE `type` = 7 AND `term` > '%s'", 
                                 dbesc($start));
         foreach ($conversations AS $conversation) {
@@ -100,18 +109,18 @@ function complete_conversation($itemid, $conversation_url, $only_add_conversatio
                        else
                                $parent_uri = $parent["uri"];
 
-                       if ($parent["id"] != 0) {
-                               $message_exists = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
+                       $message_exists = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
                                                        intval($message["uid"]), dbesc($single_conv->id));
-                               if ($message_exists) {
+                       if ($message_exists) {
+                               if ($parent["id"] != 0) {
                                        $existing_message = $message_exists[0];
                                        $r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `thr-parent` = '%s' WHERE `id` = %d LIMIT 1",
                                                intval($parent["id"]),
                                                dbesc($parent["uri"]),
                                                dbesc($parent_uri),
                                                intval($existing_message["id"]));
-                                       continue;
                                }
+                               continue;
                        }
 
                        $arr = array();