From 38bea345620738f0095b9d7f8fc6e2fe1774116a Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Wed, 2 Jul 2014 11:37:46 +0200 Subject: [PATCH] Moved functions into ActivityHandlerPlugin from MicroAppPlugin Dummy functions in Favorite plugin so far --- lib/activityhandlerplugin.php | 363 +++++++++++++++++- lib/microappplugin.php | 325 ---------------- plugins/Blog/BlogPlugin.php | 6 +- plugins/Bookmark/BookmarkPlugin.php | 10 +- plugins/Event/EventPlugin.php | 6 +- plugins/Favorite/FavoritePlugin.php | 19 + .../GNUsocialPhoto/GNUsocialPhotoPlugin.php | 6 +- .../GNUsocialVideo/GNUsocialVideoPlugin.php | 6 +- plugins/Poll/PollPlugin.php | 10 +- plugins/QnA/QnAPlugin.php | 6 +- 10 files changed, 388 insertions(+), 369 deletions(-) diff --git a/lib/activityhandlerplugin.php b/lib/activityhandlerplugin.php index 6767633d61..6e9e23422e 100644 --- a/lib/activityhandlerplugin.php +++ b/lib/activityhandlerplugin.php @@ -1,20 +1,20 @@ . + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . */ if (!defined('GNUSOCIAL')) { exit(1); } @@ -83,14 +83,14 @@ abstract class ActivityHandlerPlugin extends Plugin /** * Check if a given notice object should be handled by this micro-app * plugin. - * - * The default implementation checks against the activity type list - * returned by $this->types(). You can override this method to expand - * your checks, but follow the execution chain to get it right. - * - * @param Notice $notice - * @return boolean - */ + * + * The default implementation checks against the activity type list + * returned by $this->types(). You can override this method to expand + * your checks, but follow the execution chain to get it right. + * + * @param Notice $notice + * @return boolean + */ function isMyNotice(Notice $notice) { return $this->isMyVerb($notice->verb) && $this->isMyType($notice->object_type); } @@ -103,4 +103,329 @@ abstract class ActivityHandlerPlugin extends Plugin function isMyType($type) { return count($this->types())===0 || ActivityUtils::compareTypes($type, $this->types()); } + + /** + * Given a parsed ActivityStreams activity, your plugin + * gets to figure out how to actually save it into a notice + * and any additional data structures you require. + * + * This will handle things received via AtomPub, OStatus + * (PuSH and Salmon transports), or ActivityStreams-based + * backup/restore of account data. + * + * You should be able to accept as input the output from your + * $this->activityObjectFromNotice(). Where applicable, try to + * use existing ActivityStreams structures and object types, + * and be liberal in accepting input from what might be other + * compatible apps. + * + * All micro-app classes must override this method. + * + * @fixme are there any standard options? + * + * @param Activity $activity + * @param Profile $actor + * @param array $options=array() + * + * @return Notice the resulting notice + */ + abstract function saveNoticeFromActivity(Activity $activity, Profile $actor, array $options=array()); + + /** + * Given an existing Notice object, your plugin gets to + * figure out how to arrange it into an ActivityStreams + * object. + * + * This will be how your specialized notice gets output in + * Atom feeds and JSON-based ActivityStreams output, including + * account backup/restore and OStatus (PuSH and Salmon transports). + * + * You should be able to round-trip data from this format back + * through $this->saveNoticeFromActivity(). Where applicable, try + * to use existing ActivityStreams structures and object types, + * and consider interop with other compatible apps. + * + * All micro-app classes must override this method. + * + * @fixme this outputs an ActivityObject, not an Activity. Any compat issues? + * + * @param Notice $notice + * + * @return ActivityObject + */ + abstract function activityObjectFromNotice(Notice $notice); + + /** + * When a notice is deleted, you'll be called here for a chance + * to clean up any related resources. + * + * All micro-app classes must override this method. + * + * @param Notice $notice + */ + abstract function deleteRelated(Notice $notice); + + /** + * Called when generating Atom XML ActivityStreams output from an + * ActivityObject belonging to this plugin. Gives the plugin + * a chance to add custom output. + * + * Note that you can only add output of additional XML elements, + * not change existing stuff here. + * + * If output is already handled by the base Activity classes, + * you can leave this base implementation as a no-op. + * + * @param ActivityObject $obj + * @param XMLOutputter $out to add elements at end of object + */ + function activityObjectOutputAtom(ActivityObject $obj, XMLOutputter $out) + { + // default is a no-op + } + + /** + * Called when generating JSON ActivityStreams output from an + * ActivityObject belonging to this plugin. Gives the plugin + * a chance to add custom output. + * + * Modify the array contents to your heart's content, and it'll + * all get serialized out as JSON. + * + * If output is already handled by the base Activity classes, + * you can leave this base implementation as a no-op. + * + * @param ActivityObject $obj + * @param array &$out JSON-targeted array which can be modified + */ + public function activityObjectOutputJson(ActivityObject $obj, array &$out) + { + // default is a no-op + } + + /** + * When a notice is deleted, delete the related objects + * by calling the overridable $this->deleteRelated(). + * + * @param Notice $notice Notice being deleted + * + * @return boolean hook value + */ + function onNoticeDeleteRelated(Notice $notice) + { + if (!$this->isMyNotice($notice)) { + return true; + } + + $this->deleteRelated($notice); + } + + /** + * Render a notice as one of our objects + * + * @param Notice $notice Notice to render + * @param ActivityObject &$object Empty object to fill + * + * @return boolean hook value + */ + function onStartActivityObjectFromNotice(Notice $notice, &$object) + { + if (!$this->isMyNotice($notice)) { + return true; + } + + $object = $this->activityObjectFromNotice($notice); + return false; + } + + /** + * Handle a posted object from PuSH + * + * @param Activity $activity activity to handle + * @param Ostatus_profile $oprofile Profile for the feed + * + * @return boolean hook value + */ + function onStartHandleFeedEntryWithProfile(Activity $activity, $oprofile, &$notice) + { + if (!$this->isMyActivity($activity)) { + return true; + } + + $actor = $oprofile->checkAuthorship($activity); + + if (!$actor instanceof Ostatus_profile) { + // TRANS: Client exception thrown when no author for an activity was found. + throw new ClientException(_('Cannot get author for activity.')); + } + + $object = $activity->objects[0]; + + $options = array('uri' => $object->id, + 'url' => $object->link, + 'is_local' => Notice::REMOTE, + 'source' => 'ostatus'); + + // $actor is an ostatus_profile + $notice = $this->saveNoticeFromActivity($activity, $actor->localProfile(), $options); + + return false; + } + + /** + * Handle a posted object from Salmon + * + * @param Activity $activity activity to handle + * @param mixed $target user or group targeted + * + * @return boolean hook value + */ + + function onStartHandleSalmonTarget(Activity $activity, $target) + { + if (!$this->isMyActivity($activity)) { + return true; + } + + $this->log(LOG_INFO, "Checking {$activity->id} as a valid Salmon slap."); + + if ($target instanceof User_group) { + $uri = $target->getUri(); + if (!array_key_exists($uri, $activity->context->attention)) { + // @todo FIXME: please document (i18n). + // TRANS: Client exception thrown when ... + throw new ClientException(_('Object not posted to this group.')); + } + } else if ($target instanceof User) { + $uri = $target->uri; + $original = null; + if (!empty($activity->context->replyToID)) { + $original = Notice::getKV('uri', $activity->context->replyToID); + } + if (!array_key_exists($uri, $activity->context->attention) && + (empty($original) || + $original->profile_id != $target->id)) { + // @todo FIXME: Please document (i18n). + // TRANS: Client exception when ... + throw new ClientException(_('Object not posted to this user.')); + } + } else { + // TRANS: Server exception thrown when a micro app plugin uses a target that cannot be handled. + throw new ServerException(_('Do not know how to handle this kind of target.')); + } + + $actor = Ostatus_profile::ensureActivityObjectProfile($activity->actor); + + $object = $activity->objects[0]; + + $options = array('uri' => $object->id, + 'url' => $object->link, + 'is_local' => Notice::REMOTE, + 'source' => 'ostatus'); + + // $actor is an ostatus_profile + $this->saveNoticeFromActivity($activity, $actor->localProfile(), $options); + + return false; + } + + /** + * Handle object posted via AtomPub + * + * @param Activity &$activity Activity that was posted + * @param User $user User that posted it + * @param Notice &$notice Resulting notice + * + * @return boolean hook value + */ + function onStartAtomPubNewActivity(Activity &$activity, $user, &$notice) + { + if (!$this->isMyActivity($activity)) { + return true; + } + + $options = array('source' => 'atompub'); + + // $user->getProfile() is a Profile + $notice = $this->saveNoticeFromActivity($activity, + $user->getProfile(), + $options); + + return false; + } + + /** + * Handle object imported from a backup file + * + * @param User $user User to import for + * @param ActivityObject $author Original author per import file + * @param Activity $activity Activity to import + * @param boolean $trusted Is this a trusted user? + * @param boolean &$done Is this done (success or unrecoverable error) + * + * @return boolean hook value + */ + function onStartImportActivity($user, $author, Activity $activity, $trusted, &$done) + { + if (!$this->isMyActivity($activity)) { + return true; + } + + $obj = $activity->objects[0]; + + $options = array('uri' => $object->id, + 'url' => $object->link, + 'source' => 'restore'); + + // $user->getProfile() is a Profile + $saved = $this->saveNoticeFromActivity($activity, + $user->getProfile(), + $options); + + if (!empty($saved)) { + $done = true; + } + + return false; + } + + /** + * Event handler gives the plugin a chance to add custom + * Atom XML ActivityStreams output from a previously filled-out + * ActivityObject. + * + * The atomOutput method is called if it's one of + * our matching types. + * + * @param ActivityObject $obj + * @param XMLOutputter $out to add elements at end of object + * @return boolean hook return value + */ + function onEndActivityObjectOutputAtom(ActivityObject $obj, XMLOutputter $out) + { + if (in_array($obj->type, $this->types())) { + $this->activityObjectOutputAtom($obj, $out); + } + return true; + } + + /** + * Event handler gives the plugin a chance to add custom + * JSON ActivityStreams output from a previously filled-out + * ActivityObject. + * + * The activityObjectOutputJson method is called if it's one of + * our matching types. + * + * @param ActivityObject $obj + * @param array &$out JSON-targeted array which can be modified + * @return boolean hook return value + */ + function onEndActivityObjectOutputJson(ActivityObject $obj, array &$out) + { + if (in_array($obj->type, $this->types())) { + $this->activityObjectOutputJson($obj, $out); + } + return true; + } } diff --git a/lib/microappplugin.php b/lib/microappplugin.php index 50d5ac5ced..c6cf4554dd 100644 --- a/lib/microappplugin.php +++ b/lib/microappplugin.php @@ -70,57 +70,6 @@ abstract class MicroAppPlugin extends ActivityHandlerPlugin */ abstract function tag(); - /** - * Given a parsed ActivityStreams activity, your plugin - * gets to figure out how to actually save it into a notice - * and any additional data structures you require. - * - * This will handle things received via AtomPub, OStatus - * (PuSH and Salmon transports), or ActivityStreams-based - * backup/restore of account data. - * - * You should be able to accept as input the output from your - * $this->activityObjectFromNotice(). Where applicable, try to - * use existing ActivityStreams structures and object types, - * and be liberal in accepting input from what might be other - * compatible apps. - * - * All micro-app classes must override this method. - * - * @fixme are there any standard options? - * - * @param Activity $activity - * @param Profile $actor - * @param array $options=array() - * - * @return Notice the resulting notice - */ - abstract function saveNoticeFromActivity($activity, $actor, $options=array()); - - /** - * Given an existing Notice object, your plugin gets to - * figure out how to arrange it into an ActivityStreams - * object. - * - * This will be how your specialized notice gets output in - * Atom feeds and JSON-based ActivityStreams output, including - * account backup/restore and OStatus (PuSH and Salmon transports). - * - * You should be able to round-trip data from this format back - * through $this->saveNoticeFromActivity(). Where applicable, try - * to use existing ActivityStreams structures and object types, - * and consider interop with other compatible apps. - * - * All micro-app classes must override this method. - * - * @fixme this outputs an ActivityObject, not an Activity. Any compat issues? - * - * @param Notice $notice - * - * @return ActivityObject - */ - abstract function activityObjectFromNotice($notice); - /** * When building the primary notice form, we'll fetch also some * alternate forms for specialized types -- that's you! @@ -136,16 +85,6 @@ abstract class MicroAppPlugin extends ActivityHandlerPlugin */ abstract function entryForm($out); - /** - * When a notice is deleted, you'll be called here for a chance - * to clean up any related resources. - * - * All micro-app classes must override this method. - * - * @param Notice $notice - */ - abstract function deleteRelated($notice); - /** * */ @@ -154,61 +93,6 @@ abstract class MicroAppPlugin extends ActivityHandlerPlugin return 'new'.$this->tag(); } - /** - * Called when generating Atom XML ActivityStreams output from an - * ActivityObject belonging to this plugin. Gives the plugin - * a chance to add custom output. - * - * Note that you can only add output of additional XML elements, - * not change existing stuff here. - * - * If output is already handled by the base Activity classes, - * you can leave this base implementation as a no-op. - * - * @param ActivityObject $obj - * @param XMLOutputter $out to add elements at end of object - */ - function activityObjectOutputAtom(ActivityObject $obj, XMLOutputter $out) - { - // default is a no-op - } - - /** - * Called when generating JSON ActivityStreams output from an - * ActivityObject belonging to this plugin. Gives the plugin - * a chance to add custom output. - * - * Modify the array contents to your heart's content, and it'll - * all get serialized out as JSON. - * - * If output is already handled by the base Activity classes, - * you can leave this base implementation as a no-op. - * - * @param ActivityObject $obj - * @param array &$out JSON-targeted array which can be modified - */ - public function activityObjectOutputJson(ActivityObject $obj, array &$out) - { - // default is a no-op - } - - /** - * When a notice is deleted, delete the related objects - * by calling the overridable $this->deleteRelated(). - * - * @param Notice $notice Notice being deleted - * - * @return boolean hook value - */ - function onNoticeDeleteRelated($notice) - { - if (!$this->isMyNotice($notice)) { - return true; - } - - $this->deleteRelated($notice); - } - /** * Output the HTML for this kind of object in a list * @@ -277,215 +161,6 @@ abstract class MicroAppPlugin extends ActivityHandlerPlugin $nli->showNoticeOptions(); } - /** - * Render a notice as one of our objects - * - * @param Notice $notice Notice to render - * @param ActivityObject &$object Empty object to fill - * - * @return boolean hook value - */ - function onStartActivityObjectFromNotice($notice, &$object) - { - if (!$this->isMyNotice($notice)) { - return true; - } - - $object = $this->activityObjectFromNotice($notice); - return false; - } - - /** - * Handle a posted object from PuSH - * - * @param Activity $activity activity to handle - * @param Ostatus_profile $oprofile Profile for the feed - * - * @return boolean hook value - */ - function onStartHandleFeedEntryWithProfile($activity, $oprofile, &$notice) - { - if (!$this->isMyActivity($activity)) { - return true; - } - - $actor = $oprofile->checkAuthorship($activity); - - if (!$actor instanceof Ostatus_profile) { - // TRANS: Client exception thrown when no author for an activity was found. - throw new ClientException(_('Cannot get author for activity.')); - } - - $object = $activity->objects[0]; - - $options = array('uri' => $object->id, - 'url' => $object->link, - 'is_local' => Notice::REMOTE, - 'source' => 'ostatus'); - - // $actor is an ostatus_profile - $notice = $this->saveNoticeFromActivity($activity, $actor->localProfile(), $options); - - return false; - } - - /** - * Handle a posted object from Salmon - * - * @param Activity $activity activity to handle - * @param mixed $target user or group targeted - * - * @return boolean hook value - */ - - function onStartHandleSalmonTarget($activity, $target) - { - if (!$this->isMyActivity($activity)) { - return true; - } - - $this->log(LOG_INFO, "Checking {$activity->id} as a valid Salmon slap."); - - if ($target instanceof User_group) { - $uri = $target->getUri(); - if (!array_key_exists($uri, $activity->context->attention)) { - // @todo FIXME: please document (i18n). - // TRANS: Client exception thrown when ... - throw new ClientException(_('Object not posted to this group.')); - } - } else if ($target instanceof User) { - $uri = $target->uri; - $original = null; - if (!empty($activity->context->replyToID)) { - $original = Notice::getKV('uri', $activity->context->replyToID); - } - if (!array_key_exists($uri, $activity->context->attention) && - (empty($original) || - $original->profile_id != $target->id)) { - // @todo FIXME: Please document (i18n). - // TRANS: Client exception when ... - throw new ClientException(_('Object not posted to this user.')); - } - } else { - // TRANS: Server exception thrown when a micro app plugin uses a target that cannot be handled. - throw new ServerException(_('Do not know how to handle this kind of target.')); - } - - $actor = Ostatus_profile::ensureActivityObjectProfile($activity->actor); - - $object = $activity->objects[0]; - - $options = array('uri' => $object->id, - 'url' => $object->link, - 'is_local' => Notice::REMOTE, - 'source' => 'ostatus'); - - // $actor is an ostatus_profile - $this->saveNoticeFromActivity($activity, $actor->localProfile(), $options); - - return false; - } - - /** - * Handle object posted via AtomPub - * - * @param Activity &$activity Activity that was posted - * @param User $user User that posted it - * @param Notice &$notice Resulting notice - * - * @return boolean hook value - */ - function onStartAtomPubNewActivity(&$activity, $user, &$notice) - { - if (!$this->isMyActivity($activity)) { - return true; - } - - $options = array('source' => 'atompub'); - - // $user->getProfile() is a Profile - $notice = $this->saveNoticeFromActivity($activity, - $user->getProfile(), - $options); - - return false; - } - - /** - * Handle object imported from a backup file - * - * @param User $user User to import for - * @param ActivityObject $author Original author per import file - * @param Activity $activity Activity to import - * @param boolean $trusted Is this a trusted user? - * @param boolean &$done Is this done (success or unrecoverable error) - * - * @return boolean hook value - */ - function onStartImportActivity($user, $author, $activity, $trusted, &$done) - { - if (!$this->isMyActivity($activity)) { - return true; - } - - $obj = $activity->objects[0]; - - $options = array('uri' => $object->id, - 'url' => $object->link, - 'source' => 'restore'); - - // $user->getProfile() is a Profile - $saved = $this->saveNoticeFromActivity($activity, - $user->getProfile(), - $options); - - if (!empty($saved)) { - $done = true; - } - - return false; - } - - /** - * Event handler gives the plugin a chance to add custom - * Atom XML ActivityStreams output from a previously filled-out - * ActivityObject. - * - * The atomOutput method is called if it's one of - * our matching types. - * - * @param ActivityObject $obj - * @param XMLOutputter $out to add elements at end of object - * @return boolean hook return value - */ - function onEndActivityObjectOutputAtom(ActivityObject $obj, XMLOutputter $out) - { - if (in_array($obj->type, $this->types())) { - $this->activityObjectOutputAtom($obj, $out); - } - return true; - } - - /** - * Event handler gives the plugin a chance to add custom - * JSON ActivityStreams output from a previously filled-out - * ActivityObject. - * - * The activityObjectOutputJson method is called if it's one of - * our matching types. - * - * @param ActivityObject $obj - * @param array &$out JSON-targeted array which can be modified - * @return boolean hook return value - */ - function onEndActivityObjectOutputJson(ActivityObject $obj, array &$out) - { - if (in_array($obj->type, $this->types())) { - $this->activityObjectOutputJson($obj, $out); - } - return true; - } - function onStartShowEntryForms(&$tabs) { $tabs[$this->tag()] = array('title' => $this->appTitle(), diff --git a/plugins/Blog/BlogPlugin.php b/plugins/Blog/BlogPlugin.php index 2d74b6531e..4ff904db0b 100644 --- a/plugins/Blog/BlogPlugin.php +++ b/plugins/Blog/BlogPlugin.php @@ -112,7 +112,7 @@ class BlogPlugin extends MicroAppPlugin return array(Blog_entry::TYPE); } - function saveNoticeFromActivity($activity, $actor, $options=array()) + function saveNoticeFromActivity(Activity $activity, Profile $actor, array $options=array()) { if (count($activity->objects) != 1) { // TRANS: Exception thrown when there are too many activity objects. @@ -143,7 +143,7 @@ class BlogPlugin extends MicroAppPlugin return $notice; } - function activityObjectFromNotice($notice) + function activityObjectFromNotice(Notice $notice) { $entry = Blog_entry::fromNotice($notice); @@ -161,7 +161,7 @@ class BlogPlugin extends MicroAppPlugin return new BlogEntryForm($out); } - function deleteRelated($notice) + function deleteRelated(Notice $notice) { if ($notice->object_type == Blog_entry::TYPE) { $entry = Blog_entry::fromNotice($notice); diff --git a/plugins/Bookmark/BookmarkPlugin.php b/plugins/Bookmark/BookmarkPlugin.php index fec1238e18..1093b435aa 100644 --- a/plugins/Bookmark/BookmarkPlugin.php +++ b/plugins/Bookmark/BookmarkPlugin.php @@ -309,7 +309,7 @@ class BookmarkPlugin extends MicroAppPlugin * * @return boolean hook value */ - function deleteRelated($notice) + function deleteRelated(Notice $notice) { if ($this->isMyNotice($notice)) { @@ -327,12 +327,12 @@ class BookmarkPlugin extends MicroAppPlugin * Save a bookmark from an activity * * @param Activity $activity Activity to save - * @param Profile $profile Profile to use as author + * @param Profile $actor Profile to use as author * @param array $options Options to pass to bookmark-saving code * * @return Notice resulting notice */ - function saveNoticeFromActivity($activity, $profile, $options=array()) + function saveNoticeFromActivity(Activity $activity, Profile $actor, array $options=array()) { $bookmark = $activity->objects[0]; @@ -403,7 +403,7 @@ class BookmarkPlugin extends MicroAppPlugin } } - return Bookmark::saveNew($profile, + return Bookmark::saveNew($actor, $bookmark->title, $url, $tags, @@ -411,7 +411,7 @@ class BookmarkPlugin extends MicroAppPlugin $options); } - function activityObjectFromNotice($notice) + function activityObjectFromNotice(Notice $notice) { assert($this->isMyNotice($notice)); diff --git a/plugins/Event/EventPlugin.php b/plugins/Event/EventPlugin.php index c49103be77..c427278555 100644 --- a/plugins/Event/EventPlugin.php +++ b/plugins/Event/EventPlugin.php @@ -128,7 +128,7 @@ class EventPlugin extends MicroappPlugin * * @return Notice the resulting notice */ - function saveNoticeFromActivity($activity, $actor, $options=array()) + function saveNoticeFromActivity(Activity $activity, Profile $actor, array $options=array()) { if (count($activity->objects) != 1) { // TRANS: Exception thrown when there are too many activity objects. @@ -182,7 +182,7 @@ class EventPlugin extends MicroappPlugin * * @return ActivityObject */ - function activityObjectFromNotice($notice) + function activityObjectFromNotice(Notice $notice) { $happening = null; @@ -288,7 +288,7 @@ class EventPlugin extends MicroappPlugin * * @param Notice $notice */ - function deleteRelated($notice) + function deleteRelated(Notice $notice) { switch ($notice->object_type) { case Happening::OBJECT_TYPE: diff --git a/plugins/Favorite/FavoritePlugin.php b/plugins/Favorite/FavoritePlugin.php index 09a3f8641c..6248b332c4 100644 --- a/plugins/Favorite/FavoritePlugin.php +++ b/plugins/Favorite/FavoritePlugin.php @@ -147,6 +147,20 @@ class FavoritePlugin extends ActivityHandlerPlugin 'format' => '(xml|json)')); } + public function saveNoticeFromActivity(Activity $activity, Profile $actor, array $options=array()) + { + } + + public function activityObjectFromNotice(Notice $notice) + { + } + + public function deleteRelated(Notice $notice) + { + } + + // API stuff + /** * Typically just used to fill out Twitter-compatible API status data. * @@ -180,6 +194,11 @@ class FavoritePlugin extends ActivityHandlerPlugin public function onNoticeDeleteRelated(Notice $notice) { + parent::onNoticeDeleteRelated($notice); + + // The below algorithm is because we have faves not stored as + // proper activities in Notice from legacy versions of SN/GNU social + $fave = new Fave(); $fave->notice_id = $notice->id; diff --git a/plugins/GNUsocialPhoto/GNUsocialPhotoPlugin.php b/plugins/GNUsocialPhoto/GNUsocialPhotoPlugin.php index 0dd348330e..7b5c73d09f 100644 --- a/plugins/GNUsocialPhoto/GNUsocialPhotoPlugin.php +++ b/plugins/GNUsocialPhoto/GNUsocialPhotoPlugin.php @@ -69,7 +69,7 @@ class GNUsocialPhotoPlugin extends MicroAppPlugin return array(Photo::OBJECT_TYPE); } - function saveNoticeFromActivity($activity, $actor, $options=array()) + function saveNoticeFromActivity(Activity $activity, Profile $actor, array $options=array()) { if(count($activity->objects) != 1) { @@ -97,7 +97,7 @@ class GNUsocialPhotoPlugin extends MicroAppPlugin } - function activityObjectFromNotice($notice) + function activityObjectFromNotice(Notice $notice) { $photo = Photo::getByNotice($notice); @@ -132,7 +132,7 @@ class GNUsocialPhotoPlugin extends MicroAppPlugin } } - function deleteRelated($notice) + function deleteRelated(Notice $notice) { $photo = Photo::getByNotice($notice); if ($photo) { diff --git a/plugins/GNUsocialVideo/GNUsocialVideoPlugin.php b/plugins/GNUsocialVideo/GNUsocialVideoPlugin.php index df157c4016..ae44ee7a2d 100644 --- a/plugins/GNUsocialVideo/GNUsocialVideoPlugin.php +++ b/plugins/GNUsocialVideo/GNUsocialVideoPlugin.php @@ -69,7 +69,7 @@ class GNUsocialVideoPlugin extends MicroAppPlugin return array(Video::OBJECT_TYPE); } - function saveNoticeFromActivity($activity, $actor, $options=array()) + function saveNoticeFromActivity(Activity $activity, Profile $actor, array $options=array()) { if(count($activity->objects) != 1) { throw new Exception('Too many activity objects.'); @@ -91,7 +91,7 @@ class GNUsocialVideoPlugin extends MicroAppPlugin } - function activityObjectFromNotice($notice) + function activityObjectFromNotice(Notice $notice) { $object = new ActivityObject(); $object->id = $notice->uri; @@ -120,7 +120,7 @@ class GNUsocialVideoPlugin extends MicroAppPlugin } } - function deleteRelated($notice) + function deleteRelated(Notice $notice) { $vid = Video::getByNotice($notice); if ($vid) { diff --git a/plugins/Poll/PollPlugin.php b/plugins/Poll/PollPlugin.php index 005fa71d42..de882fdf74 100644 --- a/plugins/Poll/PollPlugin.php +++ b/plugins/Poll/PollPlugin.php @@ -142,7 +142,7 @@ class PollPlugin extends MicroAppPlugin * * @return boolean hook value */ - function deleteRelated($notice) + function deleteRelated(Notice $notice) { $p = Poll::getByNotice($notice); @@ -162,7 +162,7 @@ class PollPlugin extends MicroAppPlugin * * @return Notice resulting notice */ - function saveNoticeFromActivity($activity, $profile, $options=array()) + function saveNoticeFromActivity(Activity $activity, Profile $profile, array $options=array()) { // @fixme common_log(LOG_DEBUG, "XXX activity: " . var_export($activity, true)); @@ -219,7 +219,7 @@ class PollPlugin extends MicroAppPlugin } } - function activityObjectFromNotice($notice) + function activityObjectFromNotice(Notice $notice) { assert($this->isMyNotice($notice)); @@ -235,7 +235,7 @@ class PollPlugin extends MicroAppPlugin } } - function activityObjectFromNoticePollResponse($notice) + function activityObjectFromNoticePollResponse(Notice $notice) { $object = new ActivityObject(); $object->id = $notice->uri; @@ -258,7 +258,7 @@ class PollPlugin extends MicroAppPlugin return $object; } - function activityObjectFromNoticePoll($notice) + function activityObjectFromNoticePoll(Notice $notice) { $object = new ActivityObject(); $object->id = $notice->uri; diff --git a/plugins/QnA/QnAPlugin.php b/plugins/QnA/QnAPlugin.php index 0f46e440e9..beae1cb6b2 100644 --- a/plugins/QnA/QnAPlugin.php +++ b/plugins/QnA/QnAPlugin.php @@ -161,7 +161,7 @@ class QnAPlugin extends MicroAppPlugin * * @return Notice the resulting notice */ - function saveNoticeFromActivity($activity, $actor, $options=array()) + function saveNoticeFromActivity(Activity $activity, Profile $actor, array $options=array()) { if (count($activity->objects) != 1) { // TRANS: Exception thrown when there are too many activity objects. @@ -211,7 +211,7 @@ class QnAPlugin extends MicroAppPlugin * @return ActivityObject */ - function activityObjectFromNotice($notice) + function activityObjectFromNotice(Notice $notice) { $question = null; @@ -492,7 +492,7 @@ class QnAPlugin extends MicroAppPlugin * * @param Notice $notice */ - function deleteRelated($notice) + function deleteRelated(Notice $notice) { switch ($notice->object_type) { case QnA_Question::OBJECT_TYPE: