diff options
author | matthew.gregg <matthew.gregg@gmail.com> | 2008-06-22 23:08:37 -0400 |
---|---|---|
committer | matthew.gregg <matthew.gregg@gmail.com> | 2008-06-22 23:08:37 -0400 |
commit | 0b21ac3dd79d2bf39341a4f0ff3566def8282eae (patch) | |
tree | 61ed08b832cda8e104dee168b300133c90540231 /lib/util.php | |
parent | 6dbf7beb0bfce429f1c39b64e85cdac8229cb72d (diff) |
First pass at replies support http://laconi.ca/PITS/00080
Doesn't handle a reply to a user that has never updated.
darcs-hash:20080623030837-982e4-532ccd8899fd8be00575f8840da0defb44cd56f8.gz
Diffstat (limited to 'lib/util.php')
-rw-r--r-- | lib/util.php | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/util.php b/lib/util.php index 4b781c0a8..0aa1bd53e 100644 --- a/lib/util.php +++ b/lib/util.php @@ -808,6 +808,38 @@ function common_redirect($url, $code=307) { common_end_xml(); } +function common_save_replies($notice) { + # extract all @messages + preg_match_all('/(?:^|\s)@([a-z0-9]{1,64})/', $notice->content, $match); + $current_user = common_current_user(); + $sender = $current_user->getProfile(); + #store replied only for first @ (what user/notice what the reply directed, we assume first @ is it) + $reply_for = User::staticGet('nickname', $match[1][0]); + for ($i=0; $i<count($match[1]); $i++) { + $nickname = $match[1][$i]; + #don't reply to myself + if ($sender->nickname == $nickname) { + continue; + } + $reply = DB_DataObject::factory('reply'); + $reply->notice_id = $notice->id; + $recipient_user = User::staticGet('nickname', $nickname); + #if recipient doesn't exist, skip + if (!$recipient_user) { + continue; + } + $reply->user_id = $recipient_user->id; + $reply->created = DB_DataObject_Cast::dateTime(); + $recipient_notice = $reply_for->getCurrentNotice(); + $reply->replied_id = $recipient_notice->id; + $id = $reply->insert(); + if (!$id) { + common_server_error(_t('Problem saving reply.')); + return; + } + } +} + function common_broadcast_notice($notice, $remote=false) { if (common_config('queue', 'enabled')) { # Do it later! |