We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit 509f31af authored by mattl's avatar mattl

Favorite plugin now "extends" Activity on NoticeAsActivity

Got this mainly from my patches to FreeSocial. The idea is to migrate
also the Note activity to a plugin and have everything be handled as
events, only filling out the basic "context" stuff in the Notice class.
parent 6e481d35
......@@ -243,7 +243,7 @@ class EventPlugin extends MicroAppPlugin
*
* @return ActivityObject
*/
function onEndNoticeAsActivity(Notice $stored, Activity $act, Profile $scoped=null) {
protected function extendActivity(Notice $stored, Activity $act, Profile $scoped=null) {
switch ($stored->object_type) {
case RSVP::POSITIVE:
case RSVP::NEGATIVE:
......
......@@ -187,6 +187,24 @@ class FavoritePlugin extends ActivityHandlerPlugin
return $object;
}
// FIXME: Put this in lib/activityhandlerplugin.php when we're ready
// with the other microapps/activityhandlers as well.
// Also it should be StartNoticeAsActivity (with a prepped Activity, including ->context etc.)
public function onEndNoticeAsActivity(Notice $stored, Activity $act, Profile $scoped=null)
{
if (!$this->isMyNotice($stored)) {
return true;
}
common_debug('Extending activity '.$stored->id.' with '.get_called_class());
$this->extendActivity($stored, $act, $scoped);
return false;
}
public function extendActivity(Notice $stored, Activity $act, Profile $scoped=null)
{
Fave::extendActivity($stored, $act, $scoped);
}
public function activityObjectFromNotice(Notice $notice)
{
......
......@@ -271,6 +271,19 @@ class Fave extends Managed_DataObject
return $object;
}
/**
* Retrieves the _targeted_ notice of a verb (such as the notice that was
* _favorited_, but not the favorite activity itself).
*
* @param Notice $stored The activity notice.
*
* @throws NoResultException when it can't find what it's looking for.
*/
static public function getTargetFromStored(Notice $stored)
{
return self::fromStored($stored)->getTarget();
}
static public function getObjectType()
{
return 'activity';
......@@ -312,6 +325,17 @@ class Fave extends Managed_DataObject
return $object;
}
static public function extendActivity(Notice $stored, Activity $act, Profile $scoped=null)
{
$target = self::getTargetFromStored($stored);
$act->target = $target->asActivityObject();
$act->objects = array(clone($act->target));
$act->context->replyToID = $target->getUri();
$act->context->replyToUrl = $target->getUrl();
$act->title = ActivityUtils::verbToTitle($act->verb);
}
static function saveActivityObject(ActivityObject $actobj, Notice $stored)
{
$object = self::parseActivityObject($actobj, $stored);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment