From c721c3a20e17783835672365ce56fe64876002c7 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 23 May 2013 17:24:15 -0700 Subject: implement time travelling posts --- boot.php | 1 + include/items.php | 9 +++++++++ include/poller.php | 10 ++++++++++ 3 files changed, 20 insertions(+) diff --git a/boot.php b/boot.php index 80d7fe9d4..c9d0f7fe6 100755 --- a/boot.php +++ b/boot.php @@ -413,6 +413,7 @@ define ( 'ITEM_SPAM', 0x0008); define ( 'ITEM_DELETED', 0x0010); define ( 'ITEM_UNPUBLISHED', 0x0020); define ( 'ITEM_WEBPAGE', 0x0040); // is a static web page, not a conversational item +define ( 'ITEM_DELAYED_PUBLISH', 0x0080); /** * Item Flags diff --git a/include/items.php b/include/items.php index 9abc2e330..ca8cbdfc0 100755 --- a/include/items.php +++ b/include/items.php @@ -1486,6 +1486,15 @@ function item_store($arr,$force_parent = false) { $arr['item_flags'] = $arr['item_flags'] | ITEM_UNSEEN; + + // handle time travelers + // Allow a bit of fudge in case somebody just has a slightly slow/fast clock + + $d1 = new DateTime('now +10 minutes'); + $d2 = new DateTime($arr['created']); + if($d2 > $d1) + $arr['item_restrict'] = $arr['item_restrict'] | ITEM_DELAYED_PUBLISH; + $arr['llink'] = z_root() . '/display/' . $arr['mid']; if(! $arr['plink']) diff --git a/include/poller.php b/include/poller.php index 33e882735..43c7b497b 100644 --- a/include/poller.php +++ b/include/poller.php @@ -38,6 +38,16 @@ function poller_run($argv, $argc){ intval(ACCOUNT_EXPIRED) ); + // publish any applicable items that were set to be published in the future + // (time travel posts) + + q("update item set item_restrict = ( item_restrict ^ %d ) + where ( item_restrict & %d ) and created <= UTC_TIMESTAMP() ", + intval(ITEM_DELAYED_PUBLISH), + intval(ITEM_DELAYED_PUBLISH) + ); + + $abandon_days = intval(get_config('system','account_abandon_days')); if($abandon_days < 1) $abandon_days = 0; -- cgit v1.2.3