diff options
author | friendica <info@friendica.com> | 2013-11-06 18:28:36 -0800 |
---|---|---|
committer | friendica <info@friendica.com> | 2013-11-06 18:28:36 -0800 |
commit | 6162de142c2765c770f43bf269f0444310551705 (patch) | |
tree | 6a3052455f58f8d3c9afe38ef993ca126757fe25 /include | |
parent | 8b9633e46b7cdd4241e369d8f9cf10cec14956d2 (diff) | |
download | volse-hubzilla-6162de142c2765c770f43bf269f0444310551705.tar.gz volse-hubzilla-6162de142c2765c770f43bf269f0444310551705.tar.bz2 volse-hubzilla-6162de142c2765c770f43bf269f0444310551705.zip |
allow private mail sender to set an expiration on their messages. Once expired the message is destroyed at both ends (subject to the granularity of the polling interval) and is gone. Officially it takes some form of language independent string like 2013/11/22, but English speakers can use anything that strtotime() understands, like "+30 minutes" or "next Tuesday".
Diffstat (limited to 'include')
-rwxr-xr-x | include/items.php | 6 | ||||
-rw-r--r-- | include/message.php | 13 | ||||
-rw-r--r-- | include/poller.php | 5 |
3 files changed, 20 insertions, 4 deletions
diff --git a/include/items.php b/include/items.php index 5fcbb0cc5..520ea7230 100755 --- a/include/items.php +++ b/include/items.php @@ -910,6 +910,7 @@ function encode_mail($item) { $x['message_id'] = $item['mid']; $x['message_parent'] = $item['parent_mid']; $x['created'] = $item['created']; + $x['expires'] = $item['expires']; $x['title'] = $item['title']; $x['body'] = $item['body']; $x['from'] = encode_item_xchan($item['from']); @@ -939,6 +940,10 @@ function get_mail_elements($x) { $arr['title'] = (($x['title'])? htmlentities($x['title'],ENT_COMPAT,'UTF-8',false) : ''); $arr['created'] = datetime_convert('UTC','UTC',$x['created']); + if((! array_key_exists('expires',$x)) || ($x['expires'] === '0000-00-00 00:00:00')) + $arr['expires'] = '0000-00-00 00:00:00'; + else + $arr['expires'] = datetime_convert('UTC','UTC',$x['expires']); $arr['mail_flags'] = 0; @@ -2465,6 +2470,7 @@ function mail_store($arr) { $arr['from_xchan'] = ((x($arr,'from_xchan')) ? notags(trim($arr['from_xchan'])) : ''); $arr['to_xchan'] = ((x($arr,'to_xchan')) ? notags(trim($arr['to_xchan'])) : ''); $arr['created'] = ((x($arr,'created') !== false) ? datetime_convert('UTC','UTC',$arr['created']) : datetime_convert()); + $arr['expires'] = ((x($arr,'expires') !== false) ? datetime_convert('UTC','UTC',$arr['expires']) : '0000-00-00 00:00:00'); $arr['title'] = ((x($arr,'title')) ? notags(trim($arr['title'])) : ''); $arr['parent_mid'] = ((x($arr,'parent_mid')) ? notags(trim($arr['parent_mid'])) : ''); $arr['body'] = ((x($arr,'body')) ? trim($arr['body']) : ''); diff --git a/include/message.php b/include/message.php index e54a6cd83..3bcd5e209 100644 --- a/include/message.php +++ b/include/message.php @@ -8,7 +8,7 @@ require_once('include/attach.php'); // send a private message -function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=''){ +function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto='',$expires = ''){ $ret = array('success' => false); @@ -22,6 +22,10 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=' if(! strlen($subject)) $subject = t('[no subject]'); +// if(! $expires) +// $expires = '0000-00-00 00:00:00'; +// else +// $expires = datetime_convert(date_default_timezone_get(),'UTC',$expires); if($uid) { $r = q("select * from channel where channel_id = %d limit 1", @@ -111,8 +115,8 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=' - $r = q("INSERT INTO mail ( account_id, mail_flags, channel_id, from_xchan, to_xchan, title, body, attach, mid, parent_mid, created ) - VALUES ( %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )", + $r = q("INSERT INTO mail ( account_id, mail_flags, channel_id, from_xchan, to_xchan, title, body, attach, mid, parent_mid, created, expires ) + VALUES ( %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )", intval($channel['channel_account_id']), intval(MAIL_OBSCURED), intval($channel['channel_id']), @@ -123,7 +127,8 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=' dbesc($jattach), dbesc($mid), dbesc($replyto), - dbesc(datetime_convert()) + dbesc(datetime_convert()), + dbesc($expires) ); // verify the save diff --git a/include/poller.php b/include/poller.php index f3a997913..b1f89955c 100644 --- a/include/poller.php +++ b/include/poller.php @@ -42,6 +42,11 @@ function poller_run($argv, $argc){ intval(ACCOUNT_EXPIRED), intval(ACCOUNT_EXPIRED) ); + + // expire any expired mail + + q("delete from mail where expires != '0000-00-00 00:00:00' and expires < UTC_TIMESTAMP() "); + // Ensure that every channel pings a directory server once a month. This way we can discover // channels and sites that quietly vanished and prevent the directory from accumulating stale |