From 29103f5d0ed5b5319086d6ee701947a7de22eec0 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 27 Dec 2010 11:29:16 -0800 Subject: [PATCH] send and receive bookmarks by Salmon --- plugins/Bookmark/BookmarkPlugin.php | 46 +++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/plugins/Bookmark/BookmarkPlugin.php b/plugins/Bookmark/BookmarkPlugin.php index 99cfc1284e..8fa73abc61 100644 --- a/plugins/Bookmark/BookmarkPlugin.php +++ b/plugins/Bookmark/BookmarkPlugin.php @@ -461,6 +461,52 @@ class BookmarkPlugin extends Plugin return true; } + /** + * Handle a posted bookmark from Salmon + * + * @param Activity $activity activity to handle + * @param mixed $target user or group targeted + * + * @return boolean hook value + */ + + function onStartHandleSalmonTarget($activity, $target) { + + if ($activity->verb == ActivityVerb::POST && + $activity->objects[0]->type == ActivityObject::BOOKMARK) { + + $this->log(LOG_INFO, "Checking {$activity->id} as a valid Salmon slap."); + + if ($target instanceof User_group) { + $uri = $target->getUri(); + if (!in_array($uri, $activity->context->attention)) { + throw new ClientException(_("Bookmark not posted to this group.")); + } + } else if ($target instanceof User) { + $uri = $target->uri; + $original = null; + if (!empty($activity->context->replyToID)) { + $original = Notice::staticGet('uri', $activity->context->replyToID); + } + if (!in_array($uri, $activity->context->attention) && + (empty($original) || $original->profile_id != $target->id)) { + throw new ClientException(_("Bookmark not posted to this user.")); + } + } else { + throw new ServerException(_("Don't know how to handle this kind of target.")); + } + + $author = Ostatus_profile::ensureActivityObjectProfile($activity->actor); + + self::_postRemoteBookmark($author, + $activity); + + return false; + } + + return true; + } + static private function _postRemoteBookmark(Ostatus_profile $author, Activity $activity) { $bookmark = $activity->objects[0]; -- 2.39.5