mirror of
https://github.com/flarum/core.git
synced 2025-10-16 17:27:05 +02:00
Upgrade to L5 + huge refactor + more. closes #2
New stuff: - Signup + email confirmation. - Updated authentication strategy with remember cookies. closes #5 - New search system with some example gambits! This is cool - check out the source. Fulltext drivers will be implemented as decorators overriding the EloquentPostRepository’s findByContent method. - Lay down the foundation for bootstrapping the Ember app. - Update Web layer’s asset manager to properly publish CSS/JS files. - Console commands to run installation migrations and seeds. Refactoring: - New structure: move models, repositories, commands, and events into their own namespaces, rather than grouping by entity. - All events are classes. - Use L5 middleware and command bus implementations. - Clearer use of repositories and the Active Record pattern. Repositories are used only for retrieval of ActiveRecord objects, and then save/delete operations are called directly on those ActiveRecords. This way, we don’t over-abstract at the cost of Eloquent magic, but testing is still easy. - Refactor of Web layer so that it uses the Actions routing architecture. - “Actor” concept instead of depending on Laravel’s Auth. - General cleanup!
This commit is contained in:
62
src/Api/Serializers/BaseSerializer.php
Normal file
62
src/Api/Serializers/BaseSerializer.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php namespace Flarum\Api\Serializers;
|
||||
|
||||
use Tobscure\JsonApi\SerializerAbstract;
|
||||
use Flarum\Api\Events\SerializeAttributes;
|
||||
use Flarum\Api\Events\SerializeRelationship;
|
||||
use Flarum\Core\Support\Actor;
|
||||
|
||||
/**
|
||||
* A base serializer to call Flarum events at common serialization points.
|
||||
*/
|
||||
abstract class BaseSerializer extends SerializerAbstract
|
||||
{
|
||||
/**
|
||||
* The actor who is requesting the serialized objects.
|
||||
*
|
||||
* @var \Flarum\Core\Support\Actor
|
||||
*/
|
||||
protected static $actor;
|
||||
|
||||
/**
|
||||
* Set the actor who is requesting the serialized objects.
|
||||
*
|
||||
* @param \Flarum\Core\Support\Actor $actor
|
||||
* @return void
|
||||
*/
|
||||
public static function setActor(Actor $actor)
|
||||
{
|
||||
static::$actor = $actor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fire an event to allow custom serialization of attributes.
|
||||
*
|
||||
* @param mixed $model The model to serialize.
|
||||
* @param array $attributes Attributes that have already been serialized.
|
||||
* @return array
|
||||
*/
|
||||
protected function attributesEvent($model, $attributes = [])
|
||||
{
|
||||
event(new SerializeAttributes($this, $model, $attributes));
|
||||
|
||||
return $attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fire an event to allow for custom links and includes.
|
||||
*
|
||||
* @param string $name
|
||||
* @param array $arguments
|
||||
* @return void
|
||||
*/
|
||||
public function __call($name, $arguments)
|
||||
{
|
||||
if ($link = starts_with($name, 'link') || starts_with($name, 'include')) {
|
||||
$model = isset($arguments[0]) ? $arguments[0] : null;
|
||||
$relations = isset($arguments[1]) ? $arguments[1] : null;
|
||||
$type = $link ? 'link' : 'include';
|
||||
$name = substr($name, strlen($type));
|
||||
return event(new SerializeRelationship($this, $model, $type, $name, $relations), null, true);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user