mirror of
https://github.com/flarum/framework.git
synced 2025-05-23 07:09: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
68 lines
1.6 KiB
PHP
68 lines
1.6 KiB
PHP
<?php namespace Flarum\Api\Serializers;
|
|
|
|
class NotificationSerializer extends Serializer
|
|
{
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected $type = 'notifications';
|
|
|
|
/**
|
|
* A map of notification types (key) to the serializer that should be used
|
|
* to output the notification's subject (value).
|
|
*
|
|
* @var array
|
|
*/
|
|
protected static $subjectSerializers = [];
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function getDefaultAttributes($notification)
|
|
{
|
|
return [
|
|
'id' => (int) $notification->id,
|
|
'contentType' => $notification->type,
|
|
'content' => $notification->data,
|
|
'time' => $notification->time->toRFC3339String(),
|
|
'isRead' => (bool) $notification->is_read,
|
|
'unreadCount' => $notification->unread_count
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @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 ($notification) {
|
|
return static::$subjectSerializers[$notification->type];
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @param $type
|
|
* @param $serializer
|
|
*/
|
|
public static function setSubjectSerializer($type, $serializer)
|
|
{
|
|
static::$subjectSerializers[$type] = $serializer;
|
|
}
|
|
}
|