forked from GNUsocial/gnu-social
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.
This commit is contained in:
parent
6e481d35ed
commit
509f31af0e
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user