mirror of
https://github.com/flarum/framework.git
synced 2025-05-22 22:59:57 +08:00

- Use contextual namespaces within Flarum\Core - Clean up and docblock everything - Refactor Activity/Notification blueprint stuff - Refactor Formatter stuff - Refactor Search stuff - Upgrade to JSON-API 1.0 - Removed “addedPosts” and “removedPosts” relationships from discussion API. This was used for adding/removing event posts after renaming a discussion etc. Instead we should make an additional request to get all new posts Todo: - Fix Extenders and extensions - Get rid of repository interfaces - Fix other bugs I’ve inevitably introduced
64 lines
1.3 KiB
PHP
64 lines
1.3 KiB
PHP
<?php namespace Flarum\Api\Serializers;
|
|
|
|
class ActivitySerializer extends Serializer
|
|
{
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
protected $type = 'activity';
|
|
|
|
/**
|
|
* A map of activity types (key) to the serializer that should be used to
|
|
* output the activity's subject (value).
|
|
*
|
|
* @var array
|
|
*/
|
|
protected static $subjectSerializers = [];
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function getDefaultAttributes($activity)
|
|
{
|
|
return [
|
|
'contentType' => $activity->type,
|
|
'time' => $activity->time->toRFC3339String()
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @return callable
|
|
*/
|
|
public function user()
|
|
{
|
|
return $this->hasOne('Flarum\Api\Serializers\UserBasicSerializer');
|
|
}
|
|
|
|
/**
|
|
* @return callable
|
|
*/
|
|
public function sender()
|
|
{
|
|
return $this->hasOne('Flarum\Api\Serializers\UserBasicSerializer');
|
|
}
|
|
|
|
/**
|
|
* @return callable
|
|
*/
|
|
public function subject()
|
|
{
|
|
return $this->hasOne(function ($activity) {
|
|
return static::$subjectSerializers[$activity->type];
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @param $type
|
|
* @param $serializer
|
|
*/
|
|
public static function setSubjectSerializer($type, $serializer)
|
|
{
|
|
static::$subjectSerializers[$type] = $serializer;
|
|
}
|
|
}
|