OStatus conversation: Prevent posting loops

This commit is contained in:
Michael Vogel 2013-03-03 17:58:35 +01:00
parent 05597b564d
commit 00888a73bb
1 changed files with 15 additions and 6 deletions

View 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();