OStatus conversation: Prevent posting loops
This commit is contained in:
parent
05597b564d
commit
00888a73bb
1 changed files with 15 additions and 6 deletions
|
@ -1,5 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
define('OSTATUS_DEFAULT_POLL_INTERVAL', 30); // given in minutes
|
define('OSTATUS_DEFAULT_POLL_INTERVAL', 30); // given in minutes
|
||||||
|
define('OSTATUS_DEFAULT_POLL_TIMEFRAME', 1440); // given in minutes
|
||||||
|
|
||||||
function check_conversations() {
|
function check_conversations() {
|
||||||
$last = get_config('system','ostatus_last_poll');
|
$last = get_config('system','ostatus_last_poll');
|
||||||
|
@ -8,17 +9,25 @@ function check_conversations() {
|
||||||
if(! $poll_interval)
|
if(! $poll_interval)
|
||||||
$poll_interval = OSTATUS_DEFAULT_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) {
|
if($last) {
|
||||||
$next = $last + ($poll_interval * 60);
|
$next = $last + ($poll_interval * 60);
|
||||||
if($next > time()) {
|
if($next > time()) {
|
||||||
logger('complete_conversation: poll intervall not reached');
|
logger('complete_conversation: poll interval not reached');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
logger('complete_conversation: cron_start');
|
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'",
|
$conversations = q("SELECT * FROM `term` WHERE `type` = 7 AND `term` > '%s'",
|
||||||
dbesc($start));
|
dbesc($start));
|
||||||
foreach ($conversations AS $conversation) {
|
foreach ($conversations AS $conversation) {
|
||||||
|
@ -100,18 +109,18 @@ function complete_conversation($itemid, $conversation_url, $only_add_conversatio
|
||||||
else
|
else
|
||||||
$parent_uri = $parent["uri"];
|
$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));
|
intval($message["uid"]), dbesc($single_conv->id));
|
||||||
if ($message_exists) {
|
if ($message_exists) {
|
||||||
|
if ($parent["id"] != 0) {
|
||||||
$existing_message = $message_exists[0];
|
$existing_message = $message_exists[0];
|
||||||
$r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `thr-parent` = '%s' WHERE `id` = %d LIMIT 1",
|
$r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `thr-parent` = '%s' WHERE `id` = %d LIMIT 1",
|
||||||
intval($parent["id"]),
|
intval($parent["id"]),
|
||||||
dbesc($parent["uri"]),
|
dbesc($parent["uri"]),
|
||||||
dbesc($parent_uri),
|
dbesc($parent_uri),
|
||||||
intval($existing_message["id"]));
|
intval($existing_message["id"]));
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$arr = array();
|
$arr = array();
|
||||||
|
|
Loading…
Reference in a new issue