diff options
-rwxr-xr-x | boot.php | 1 | ||||
-rwxr-xr-x | include/items.php | 9 | ||||
-rw-r--r-- | include/poller.php | 10 |
3 files changed, 20 insertions, 0 deletions
@@ -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; |