From: Evan Prodromou Date: Mon, 27 Dec 2010 19:29:16 +0000 (-0800) Subject: send and receive bookmarks by Salmon X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=29103f5d0ed5b5319086d6ee701947a7de22eec0;p=quix0rs-gnu-social.git send and receive bookmarks by Salmon --- 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];