mirror of
https://github.com/flarum/core.git
synced 2025-10-22 20:26:15 +02:00
Massive refactor
- 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
This commit is contained in:
@@ -7,7 +7,7 @@ interface ActionInterface
|
||||
/**
|
||||
* Handle a request to the API, returning an HTTP response.
|
||||
*
|
||||
* @param \Flarum\Api\Request $request
|
||||
* @param Request $request
|
||||
* @return \Psr\Http\Message\ResponseInterface
|
||||
*/
|
||||
public function handle(Request $request);
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php namespace Flarum\Api\Actions\Activity;
|
||||
|
||||
use Flarum\Core\Repositories\UserRepositoryInterface;
|
||||
use Flarum\Core\Repositories\ActivityRepositoryInterface;
|
||||
use Flarum\Core\Users\UserRepositoryInterface;
|
||||
use Flarum\Core\Activity\ActivityRepositoryInterface;
|
||||
use Flarum\Api\Actions\SerializeCollectionAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Tobscure\JsonApi\Document;
|
||||
@@ -9,12 +9,12 @@ use Tobscure\JsonApi\Document;
|
||||
class IndexAction extends SerializeCollectionAction
|
||||
{
|
||||
/**
|
||||
* @var \Flarum\Core\Repositories\UserRepositoryInterface
|
||||
* @var UserRepositoryInterface
|
||||
*/
|
||||
protected $users;
|
||||
|
||||
/**
|
||||
* @var \Flarum\Core\Repositories\ActivityRepositoryInterface
|
||||
* @var ActivityRepositoryInterface
|
||||
*/
|
||||
protected $activity;
|
||||
|
||||
@@ -58,10 +58,8 @@ class IndexAction extends SerializeCollectionAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Flarum\Core\Repositories\UserRepositoryInterface $users
|
||||
* @param \Flarum\Core\Repositories\ActivityRepositoryInterface $activity
|
||||
* @param UserRepositoryInterface $users
|
||||
* @param ActivityRepositoryInterface $activity
|
||||
*/
|
||||
public function __construct(UserRepositoryInterface $users, ActivityRepositoryInterface $activity)
|
||||
{
|
||||
@@ -73,17 +71,24 @@ class IndexAction extends SerializeCollectionAction
|
||||
* Get the activity results, ready to be serialized and assigned to the
|
||||
* document response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
$actor = $request->actor->getUser();
|
||||
$userId = $request->get('filter.user');
|
||||
$actor = $request->actor;
|
||||
|
||||
$user = $this->users->findOrFail($request->get('users'), $actor);
|
||||
$user = $this->users->findOrFail($userId, $actor);
|
||||
|
||||
return $this->activity->findByUser($user->id, $actor, $request->limit, $request->offset, $request->get('type'))
|
||||
return $this->activity->findByUser(
|
||||
$user->id,
|
||||
$actor,
|
||||
$request->limit,
|
||||
$request->offset,
|
||||
$request->get('filter.type')
|
||||
)
|
||||
->load($request->include);
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,7 @@
|
||||
<?php namespace Flarum\Api\Actions\Discussions;
|
||||
|
||||
use Flarum\Core\Commands\StartDiscussionCommand;
|
||||
use Flarum\Core\Commands\ReadDiscussionCommand;
|
||||
use Flarum\Core\Models\Forum;
|
||||
use Flarum\Core\Discussions\Commands\StartDiscussion;
|
||||
use Flarum\Core\Discussions\Commands\ReadDiscussion;
|
||||
use Flarum\Api\Actions\CreateAction as BaseCreateAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -12,17 +11,10 @@ class CreateAction extends BaseCreateAction
|
||||
/**
|
||||
* The command bus.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
/**
|
||||
* The default forum instance.
|
||||
*
|
||||
* @var \Flarum\Core\Models\Forum
|
||||
*/
|
||||
protected $forum;
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
@@ -67,35 +59,33 @@ class CreateAction extends BaseCreateAction
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param \Flarum\Core\Models\Forum $forum
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus, Forum $forum)
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
$this->bus = $bus;
|
||||
$this->forum = $forum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a discussion according to input from the API request.
|
||||
*
|
||||
* @param JsonApiRequest $request
|
||||
* @return \Flarum\Core\Models\Model
|
||||
* @return \Flarum\Core\Discussions\Discussion
|
||||
*/
|
||||
protected function create(JsonApiRequest $request)
|
||||
{
|
||||
$user = $request->actor->getUser();
|
||||
$actor = $request->actor;
|
||||
|
||||
$discussion = $this->bus->dispatch(
|
||||
new StartDiscussionCommand($user, $this->forum, $request->get('data'))
|
||||
new StartDiscussion($actor, $request->get('data'))
|
||||
);
|
||||
|
||||
// After creating the discussion, we assume that the user has seen all
|
||||
// of the posts in the discussion; thus, we will mark the discussion
|
||||
// as read if they are logged in.
|
||||
if ($user->exists) {
|
||||
if ($actor->exists) {
|
||||
$this->bus->dispatch(
|
||||
new ReadDiscussionCommand($discussion->id, $user, 1)
|
||||
new ReadDiscussion($discussion->id, $actor, 1)
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Discussions;
|
||||
|
||||
use Flarum\Core\Commands\DeleteDiscussionCommand;
|
||||
use Flarum\Core\Discussions\Commands\DeleteDiscussion;
|
||||
use Flarum\Api\Actions\DeleteAction as BaseDeleteAction;
|
||||
use Flarum\Api\Request;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -8,16 +8,12 @@ use Illuminate\Contracts\Bus\Dispatcher;
|
||||
class DeleteAction extends BaseDeleteAction
|
||||
{
|
||||
/**
|
||||
* The command bus.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
@@ -25,15 +21,16 @@ class DeleteAction extends BaseDeleteAction
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a discussion.
|
||||
*
|
||||
* @param \Flarum\Api\Request $request
|
||||
* @return void
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function delete(Request $request)
|
||||
{
|
||||
$id = $request->get('id');
|
||||
$actor = $request->actor;
|
||||
$input = $request->all();
|
||||
|
||||
$this->bus->dispatch(
|
||||
new DeleteDiscussionCommand($request->get('id'), $request->actor->getUser())
|
||||
new DeleteDiscussion($id, $actor, $input)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php namespace Flarum\Api\Actions\Discussions;
|
||||
|
||||
use Flarum\Core\Search\Discussions\DiscussionSearchCriteria;
|
||||
use Flarum\Core\Search\Discussions\DiscussionSearcher;
|
||||
use Flarum\Core\Search\SearchCriteria;
|
||||
use Flarum\Core\Discussions\Search\DiscussionSearcher;
|
||||
use Flarum\Api\Actions\SerializeCollectionAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Flarum\Http\UrlGeneratorInterface;
|
||||
@@ -10,16 +10,12 @@ use Tobscure\JsonApi\Document;
|
||||
class IndexAction extends SerializeCollectionAction
|
||||
{
|
||||
/**
|
||||
* The discussion searcher.
|
||||
*
|
||||
* @var \Flarum\Core\Search\Discussions\DiscussionSearcher
|
||||
* @var DiscussionSearcher
|
||||
*/
|
||||
protected $searcher;
|
||||
|
||||
/**
|
||||
* The URL generator.
|
||||
*
|
||||
* @var \Flarum\Http\UrlGeneratorInterface
|
||||
* @var UrlGeneratorInterface
|
||||
*/
|
||||
protected $url;
|
||||
|
||||
@@ -67,10 +63,8 @@ class IndexAction extends SerializeCollectionAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Flarum\Core\Search\Discussions\DiscussionSearcher $searcher
|
||||
* @param \Flarum\Http\UrlGeneratorInterface $url
|
||||
* @param DiscussionSearcher $searcher
|
||||
* @param UrlGeneratorInterface $url
|
||||
*/
|
||||
public function __construct(DiscussionSearcher $searcher, UrlGeneratorInterface $url)
|
||||
{
|
||||
@@ -82,21 +76,23 @@ class IndexAction extends SerializeCollectionAction
|
||||
* Get the discussion results, ready to be serialized and assigned to the
|
||||
* document response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
$criteria = new DiscussionSearchCriteria(
|
||||
$request->actor->getUser(),
|
||||
$request->get('q'),
|
||||
$criteria = new SearchCriteria(
|
||||
$request->actor,
|
||||
$request->get('filter.q'),
|
||||
$request->sort
|
||||
);
|
||||
|
||||
$load = array_merge($request->include, ['state']);
|
||||
|
||||
$results = $this->searcher->search($criteria, $request->limit, $request->offset, $load);
|
||||
|
||||
// TODO: add query params (filter, sort, include) to the pagination URLs
|
||||
static::addPaginationLinks(
|
||||
$document,
|
||||
$request,
|
||||
@@ -104,6 +100,6 @@ class IndexAction extends SerializeCollectionAction
|
||||
$results->areMoreResults()
|
||||
);
|
||||
|
||||
return $results->getDiscussions();
|
||||
return $results->getResults();
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php namespace Flarum\Api\Actions\Discussions;
|
||||
|
||||
use Flarum\Core\Repositories\DiscussionRepositoryInterface;
|
||||
use Flarum\Core\Repositories\PostRepositoryInterface;
|
||||
use Flarum\Core\Discussions\DiscussionRepositoryInterface;
|
||||
use Flarum\Core\Posts\PostRepositoryInterface;
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\Actions\Posts\GetsPosts;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
@@ -12,15 +12,10 @@ class ShowAction extends SerializeResourceAction
|
||||
use GetsPosts;
|
||||
|
||||
/**
|
||||
* @var \Flarum\Core\Repositories\DiscussionRepositoryInterface
|
||||
* @var \Flarum\Core\Discussions\DiscussionRepositoryInterface
|
||||
*/
|
||||
protected $discussions;
|
||||
|
||||
/**
|
||||
* @var \Flarum\Core\Repositories\PostRepositoryInterface
|
||||
*/
|
||||
protected $posts;
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
@@ -69,8 +64,8 @@ class ShowAction extends SerializeResourceAction
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Flarum\Core\Repositories\DiscussionRepositoryInterface $discussions
|
||||
* @param \Flarum\Core\Repositories\PostRepositoryInterface $posts
|
||||
* @param DiscussionRepositoryInterface $discussions
|
||||
* @param PostRepositoryInterface $posts
|
||||
*/
|
||||
public function __construct(DiscussionRepositoryInterface $discussions, PostRepositoryInterface $posts)
|
||||
{
|
||||
@@ -82,25 +77,29 @@ class ShowAction extends SerializeResourceAction
|
||||
* Get a single discussion, ready to be serialized and assigned to the
|
||||
* JsonApi response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Flarum\Core\Discussions\Discussion
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
$user = $request->actor->getUser();
|
||||
$discussionId = $request->get('id');
|
||||
$actor = $request->actor;
|
||||
|
||||
$discussion = $this->discussions->findOrFail($request->get('id'), $user);
|
||||
$discussion = $this->discussions->findOrFail($discussionId, $actor);
|
||||
|
||||
$discussion->posts_ids = $discussion->visiblePosts($user)->orderBy('time')->lists('id');
|
||||
$discussion->posts_ids = $discussion->postsVisibleTo($actor)->orderBy('time')->lists('id');
|
||||
|
||||
// TODO: Refactor to be simpler, and get posts straight from the
|
||||
// discussion's postsVisibleTo relation method.
|
||||
if (in_array('posts', $request->include)) {
|
||||
$length = strlen($prefix = 'posts.');
|
||||
$relations = array_filter(array_map(function ($relationship) use ($prefix, $length) {
|
||||
return substr($relationship, 0, $length) === $prefix ? substr($relationship, $length) : false;
|
||||
$prefixLength = strlen($prefix = 'posts.');
|
||||
|
||||
$postRelations = array_filter(array_map(function ($relation) use ($prefix, $prefixLength) {
|
||||
return substr($relation, 0, $prefixLength) === $prefix ? substr($relation, $prefixLength) : false;
|
||||
}, $request->include));
|
||||
|
||||
$discussion->posts = $this->getPosts($request, ['discussion_id' => $discussion->id])->load($relations);
|
||||
$discussion->posts = $this->getPosts($request, ['discussion_id' => $discussion->id])->load($postRelations);
|
||||
}
|
||||
|
||||
return $discussion;
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php namespace Flarum\Api\Actions\Discussions;
|
||||
|
||||
use Flarum\Core\Commands\EditDiscussionCommand;
|
||||
use Flarum\Core\Commands\ReadDiscussionCommand;
|
||||
use Flarum\Core\Discussions\Commands\EditDiscussion;
|
||||
use Flarum\Core\Discussions\Commands\ReadDiscussion;
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -10,7 +10,7 @@ use Tobscure\JsonApi\Document;
|
||||
class UpdateAction extends SerializeResourceAction
|
||||
{
|
||||
/**
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
@@ -22,11 +22,7 @@ class UpdateAction extends SerializeResourceAction
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public static $include = [
|
||||
'addedPosts' => true,
|
||||
'addedPosts.user' => true,
|
||||
'addedPosts.discussion' => true
|
||||
];
|
||||
public static $include = [];
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
@@ -54,9 +50,7 @@ class UpdateAction extends SerializeResourceAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
@@ -67,24 +61,25 @@ class UpdateAction extends SerializeResourceAction
|
||||
* Update a discussion according to input from the API request, and return
|
||||
* it ready to be serialized and assigned to the JsonApi response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Flarum\Core\Discussions\Discussion
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
$user = $request->actor->getUser();
|
||||
$actor = $request->actor;
|
||||
$discussionId = $request->get('id');
|
||||
$data = $request->get('data');
|
||||
|
||||
if ($data = array_except($request->get('data'), ['readNumber'])) {
|
||||
$discussion = $this->bus->dispatch(
|
||||
new EditDiscussionCommand($discussionId, $user, $data)
|
||||
);
|
||||
}
|
||||
$discussion = $this->bus->dispatch(
|
||||
new EditDiscussion($discussionId, $actor, $data)
|
||||
);
|
||||
|
||||
if ($readNumber = $request->get('data.readNumber')) {
|
||||
// TODO: Refactor the ReadDiscussion (state) command into EditDiscussion?
|
||||
// That's what extensions will do anyway.
|
||||
if ($readNumber = array_get($data, 'attributes.readNumber')) {
|
||||
$state = $this->bus->dispatch(
|
||||
new ReadDiscussionCommand($discussionId, $user, $readNumber)
|
||||
new ReadDiscussion($discussionId, $actor, $readNumber)
|
||||
);
|
||||
|
||||
$discussion = $state->discussion;
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
use Flarum\Api\Request;
|
||||
use Flarum\Core\Repositories\UserRepositoryInterface;
|
||||
use Flarum\Core\Commands\RequestPasswordResetCommand;
|
||||
use Flarum\Core\Commands\RequestPasswordReset;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
use Zend\Diactoros\Response\EmptyResponse;
|
||||
|
||||
@@ -29,7 +29,7 @@ class ForgotAction extends JsonApiAction
|
||||
$email = $request->get('email');
|
||||
|
||||
$this->bus->dispatch(
|
||||
new RequestPasswordResetCommand($email)
|
||||
new RequestPasswordReset($email)
|
||||
);
|
||||
|
||||
return new EmptyResponse();
|
||||
|
@@ -45,9 +45,9 @@ class ShowAction extends SerializeResourceAction
|
||||
* Get the forum, ready to be serialized and assigned to the JsonApi
|
||||
* response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @return array
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Flarum\Core\Forum
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Groups;
|
||||
|
||||
use Flarum\Core\Models\Group;
|
||||
use Flarum\Core\Users\Group;
|
||||
use Flarum\Api\Actions\SerializeCollectionAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Tobscure\JsonApi\Document;
|
||||
@@ -46,12 +46,12 @@ class IndexAction extends SerializeCollectionAction
|
||||
* Get the groups, ready to be serialized and assigned to the document
|
||||
* response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
return Group::get();
|
||||
return Group::all();
|
||||
}
|
||||
}
|
||||
|
@@ -12,11 +12,12 @@ abstract class JsonApiAction implements ActionInterface
|
||||
* Handle an API request and return an API response, handling any relevant
|
||||
* (API-related) exceptions that are thrown.
|
||||
*
|
||||
* @param \Flarum\Api\Request $request
|
||||
* @param Request $request
|
||||
* @return \Psr\Http\Message\ResponseInterface
|
||||
*/
|
||||
public function handle(Request $request)
|
||||
{
|
||||
// TODO: Move this error handling code to middleware?
|
||||
try {
|
||||
return $this->respond($request);
|
||||
} catch (ValidationFailureException $e) {
|
||||
@@ -38,7 +39,7 @@ abstract class JsonApiAction implements ActionInterface
|
||||
/**
|
||||
* Handle an API request and return an API response.
|
||||
*
|
||||
* @param \Flarum\Api\Request $request
|
||||
* @param Request $request
|
||||
* @return \Psr\Http\Message\ResponseInterface
|
||||
*/
|
||||
abstract protected function respond(Request $request);
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Notifications;
|
||||
|
||||
use Flarum\Core\Repositories\NotificationRepositoryInterface;
|
||||
use Flarum\Core\Notifications\NotificationRepositoryInterface;
|
||||
use Flarum\Core\Exceptions\PermissionDeniedException;
|
||||
use Flarum\Api\Actions\SerializeCollectionAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
@@ -9,7 +9,7 @@ use Tobscure\JsonApi\Document;
|
||||
class IndexAction extends SerializeCollectionAction
|
||||
{
|
||||
/**
|
||||
* @var \Flarum\Core\Repositories\NotificationRepositoryInterface
|
||||
* @var NotificationRepositoryInterface
|
||||
*/
|
||||
protected $notifications;
|
||||
|
||||
@@ -55,7 +55,7 @@ class IndexAction extends SerializeCollectionAction
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Flarum\Core\Repositories\NotificationRepositoryInterface $notifications
|
||||
* @param NotificationRepositoryInterface $notifications
|
||||
*/
|
||||
public function __construct(NotificationRepositoryInterface $notifications)
|
||||
{
|
||||
@@ -66,22 +66,22 @@ class IndexAction extends SerializeCollectionAction
|
||||
* Get the notification results, ready to be serialized and assigned to the
|
||||
* document response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
* @throws PermissionDeniedException
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
if (! $request->actor->isAuthenticated()) {
|
||||
$actor = $request->actor;
|
||||
|
||||
if ($actor->isGuest()) {
|
||||
throw new PermissionDeniedException;
|
||||
}
|
||||
|
||||
$user = $request->actor->getUser();
|
||||
$actor->markNotificationsAsRead()->save();
|
||||
|
||||
$user->markNotificationsAsRead()->save();
|
||||
|
||||
return $this->notifications->findByUser($user, $request->limit, $request->offset)
|
||||
return $this->notifications->findByUser($actor, $request->limit, $request->offset)
|
||||
->load($request->include);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Notifications;
|
||||
|
||||
use Flarum\Core\Commands\ReadNotificationCommand;
|
||||
use Flarum\Core\Notifications\Commands\ReadNotification;
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -9,7 +9,7 @@ use Tobscure\JsonApi\Document;
|
||||
class UpdateAction extends SerializeResourceAction
|
||||
{
|
||||
/**
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
@@ -49,9 +49,7 @@ class UpdateAction extends SerializeResourceAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
@@ -62,14 +60,14 @@ class UpdateAction extends SerializeResourceAction
|
||||
* Mark a notification as read, and return it ready to be serialized and
|
||||
* assigned to the JsonApi response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Flarum\Core\Notifications\Notification
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
return $this->bus->dispatch(
|
||||
new ReadNotificationCommand($request->get('id'), $request->actor->getUser())
|
||||
new ReadNotification($request->get('id'), $request->actor)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php namespace Flarum\Api\Actions\Posts;
|
||||
|
||||
use Flarum\Core\Commands\PostReplyCommand;
|
||||
use Flarum\Core\Commands\ReadDiscussionCommand;
|
||||
use Flarum\Core\Posts\Commands\PostReply;
|
||||
use Flarum\Core\Discussions\Commands\ReadDiscussion;
|
||||
use Flarum\Api\Actions\CreateAction as BaseCreateAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -9,7 +9,7 @@ use Illuminate\Contracts\Bus\Dispatcher;
|
||||
class CreateAction extends BaseCreateAction
|
||||
{
|
||||
/**
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
@@ -53,7 +53,7 @@ class CreateAction extends BaseCreateAction
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
@@ -64,24 +64,23 @@ class CreateAction extends BaseCreateAction
|
||||
* Reply to a discussion according to input from the API request.
|
||||
*
|
||||
* @param JsonApiRequest $request
|
||||
* @return \Flarum\Core\Models\Model
|
||||
* @return \Flarum\Core\Posts\Post
|
||||
*/
|
||||
protected function create(JsonApiRequest $request)
|
||||
{
|
||||
$user = $request->actor->getUser();
|
||||
|
||||
$discussionId = $request->get('data.links.discussion.linkage.id');
|
||||
$actor = $request->actor;
|
||||
$discussionId = $request->get('data.relationships.discussion.data.id');
|
||||
|
||||
$post = $this->bus->dispatch(
|
||||
new PostReplyCommand($discussionId, $user, $request->get('data'))
|
||||
new PostReply($discussionId, $actor, $request->get('data'))
|
||||
);
|
||||
|
||||
// After replying, we assume that the user has seen all of the posts
|
||||
// in the discussion; thus, we will mark the discussion as read if
|
||||
// they are logged in.
|
||||
if ($user->exists) {
|
||||
if ($actor->exists) {
|
||||
$this->bus->dispatch(
|
||||
new ReadDiscussionCommand($discussionId, $user, $post->number)
|
||||
new ReadDiscussion($discussionId, $actor, $post->number)
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Posts;
|
||||
|
||||
use Flarum\Core\Commands\DeletePostCommand;
|
||||
use Flarum\Core\Posts\Commands\DeletePost;
|
||||
use Flarum\Api\Actions\DeleteAction as BaseDeleteAction;
|
||||
use Flarum\Api\Request;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -8,14 +8,12 @@ use Illuminate\Contracts\Bus\Dispatcher;
|
||||
class DeleteAction extends BaseDeleteAction
|
||||
{
|
||||
/**
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
@@ -25,13 +23,13 @@ class DeleteAction extends BaseDeleteAction
|
||||
/**
|
||||
* Delete a post.
|
||||
*
|
||||
* @param \Flarum\Api\Request $request
|
||||
* @param Request $request
|
||||
* @return void
|
||||
*/
|
||||
protected function delete(Request $request)
|
||||
{
|
||||
$this->bus->dispatch(
|
||||
new DeletePostCommand($request->get('id'), $request->actor->getUser())
|
||||
new DeletePost($request->get('id'), $request->actor)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -4,12 +4,22 @@ use Flarum\Api\JsonApiRequest;
|
||||
|
||||
trait GetsPosts
|
||||
{
|
||||
/**
|
||||
* @var \Flarum\Core\Posts\PostRepositoryInterface
|
||||
*/
|
||||
protected $posts;
|
||||
|
||||
/**
|
||||
* @param JsonApiRequest $request
|
||||
* @param array $where
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
*/
|
||||
protected function getPosts(JsonApiRequest $request, array $where)
|
||||
{
|
||||
$user = $request->actor->getUser();
|
||||
$actor = $request->actor;
|
||||
|
||||
if (isset($where['discussion_id']) && ($near = $request->get('near')) > 1) {
|
||||
$offset = $this->posts->getIndexForNumber($where['discussion_id'], $near, $user);
|
||||
if (isset($where['discussion_id']) && ($near = $request->get('page.near')) > 1) {
|
||||
$offset = $this->posts->getIndexForNumber($where['discussion_id'], $near, $actor);
|
||||
$offset = max(0, $offset - $request->limit / 2);
|
||||
} else {
|
||||
$offset = 0;
|
||||
@@ -17,7 +27,7 @@ trait GetsPosts
|
||||
|
||||
return $this->posts->findWhere(
|
||||
$where,
|
||||
$user,
|
||||
$actor,
|
||||
$request->sort,
|
||||
$request->limit,
|
||||
$offset
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Posts;
|
||||
|
||||
use Flarum\Core\Repositories\PostRepositoryInterface;
|
||||
use Flarum\Core\Posts\PostRepositoryInterface;
|
||||
use Flarum\Api\Actions\SerializeCollectionAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Tobscure\JsonApi\Document;
|
||||
@@ -9,11 +9,6 @@ class IndexAction extends SerializeCollectionAction
|
||||
{
|
||||
use GetsPosts;
|
||||
|
||||
/**
|
||||
* @var \Flarum\Core\Repositories\PostRepositoryInterface
|
||||
*/
|
||||
protected $posts;
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
@@ -56,9 +51,7 @@ class IndexAction extends SerializeCollectionAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Flarum\Core\Repositories\PostRepositoryInterface $posts
|
||||
* @param PostRepositoryInterface $posts
|
||||
*/
|
||||
public function __construct(PostRepositoryInterface $posts)
|
||||
{
|
||||
@@ -69,26 +62,26 @@ class IndexAction extends SerializeCollectionAction
|
||||
* Get the post results, ready to be serialized and assigned to the
|
||||
* document response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
$postIds = (array) $request->get('ids');
|
||||
$user = $request->actor->getUser();
|
||||
$actor = $request->actor;
|
||||
|
||||
if (count($postIds)) {
|
||||
$posts = $this->posts->findByIds($postIds, $user);
|
||||
$posts = $this->posts->findByIds($postIds, $actor);
|
||||
} else {
|
||||
$where = [];
|
||||
if ($discussionId = $request->get('discussions')) {
|
||||
if ($discussionId = $request->get('filter.discussion')) {
|
||||
$where['discussion_id'] = $discussionId;
|
||||
}
|
||||
if ($number = $request->get('number')) {
|
||||
if ($number = $request->get('page.number')) {
|
||||
$where['number'] = $number;
|
||||
}
|
||||
if ($userId = $request->get('users')) {
|
||||
if ($userId = $request->get('filter.user')) {
|
||||
$where['user_id'] = $userId;
|
||||
}
|
||||
$posts = $this->getPosts($request, $where);
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php namespace Flarum\Api\Actions\Posts;
|
||||
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
use Flarum\Core\Repositories\PostRepositoryInterface;
|
||||
use Flarum\Core\Posts\PostRepositoryInterface;
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Tobscure\JsonApi\Document;
|
||||
@@ -9,7 +9,7 @@ use Tobscure\JsonApi\Document;
|
||||
class ShowAction extends SerializeResourceAction
|
||||
{
|
||||
/**
|
||||
* @var \Flarum\Core\Repositories\PostRepositoryInterface
|
||||
* @var PostRepositoryInterface
|
||||
*/
|
||||
protected $posts;
|
||||
|
||||
@@ -55,9 +55,7 @@ class ShowAction extends SerializeResourceAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Flarum\Core\Repositories\PostRepositoryInterface $posts
|
||||
* @param PostRepositoryInterface $posts
|
||||
*/
|
||||
public function __construct(PostRepositoryInterface $posts)
|
||||
{
|
||||
@@ -68,12 +66,12 @@ class ShowAction extends SerializeResourceAction
|
||||
* Get a single post, ready to be serialized and assigned to the JsonApi
|
||||
* response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Flarum\Core\Posts\Post
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
return $this->posts->findOrFail($request->get('id'), $request->actor->getUser());
|
||||
return $this->posts->findOrFail($request->get('id'), $request->actor);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Posts;
|
||||
|
||||
use Flarum\Core\Commands\EditPostCommand;
|
||||
use Flarum\Core\Posts\Commands\EditPost;
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -9,7 +9,7 @@ use Tobscure\JsonApi\Document;
|
||||
class UpdateAction extends SerializeResourceAction
|
||||
{
|
||||
/**
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
@@ -49,9 +49,7 @@ class UpdateAction extends SerializeResourceAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
@@ -62,14 +60,14 @@ class UpdateAction extends SerializeResourceAction
|
||||
* Update a post according to input from the API request, and return it
|
||||
* ready to be serialized and assigned to the JsonApi response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
return $this->bus->dispatch(
|
||||
new EditPostCommand($request->get('id'), $request->actor->getUser(), $request->get('data'))
|
||||
new EditPost($request->get('id'), $request->actor, $request->get('data'))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -63,8 +63,8 @@ abstract class SerializeAction extends JsonApiAction
|
||||
/**
|
||||
* Handle an API request and return an API response.
|
||||
*
|
||||
* @param \Flarum\Api\Request $request
|
||||
* @return \Psr\Http\Message\ResponseInterface
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function respond(Request $request)
|
||||
{
|
||||
@@ -78,14 +78,15 @@ abstract class SerializeAction extends JsonApiAction
|
||||
$serializer = new static::$serializer($request->actor, $request->include, $request->link);
|
||||
|
||||
$document->setData($this->serialize($serializer, $data));
|
||||
|
||||
return new JsonResponse($document, 200, ['content-type' => 'application/vnd.api+json']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the data to be serialized and assigned to the response document.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return array
|
||||
*/
|
||||
abstract protected function data(JsonApiRequest $request, Document $document);
|
||||
@@ -93,7 +94,7 @@ abstract class SerializeAction extends JsonApiAction
|
||||
/**
|
||||
* Serialize the data as appropriate.
|
||||
*
|
||||
* @param \Tobscure\JsonApi\SerializerInterface $serializer
|
||||
* @param SerializerInterface $serializer
|
||||
* @param array $data
|
||||
* @return \Tobscure\JsonApi\Elements\ElementInterface
|
||||
*/
|
||||
@@ -103,8 +104,8 @@ abstract class SerializeAction extends JsonApiAction
|
||||
* Extract parameters from the request input and assign them to the
|
||||
* request, restricted by the action's specifications.
|
||||
*
|
||||
* @param \Flarum\Api\Request $request
|
||||
* @return void
|
||||
* @param Request $request
|
||||
* @return JsonApiRequest
|
||||
*/
|
||||
protected static function buildJsonApiRequest(Request $request)
|
||||
{
|
||||
@@ -160,8 +161,8 @@ abstract class SerializeAction extends JsonApiAction
|
||||
* Add pagination links to a JSON-API response, based on input parameters
|
||||
* and the default parameters of this action.
|
||||
*
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @param JsonApiRequest $request
|
||||
* @param string $url The base URL to build pagination links with.
|
||||
* @param integer|boolean $total The total number of results (used to build
|
||||
* a 'last' link), or just true if there are more results but how many
|
||||
|
@@ -7,7 +7,7 @@ abstract class SerializeCollectionAction extends SerializeAction
|
||||
/**
|
||||
* Serialize the data as appropriate.
|
||||
*
|
||||
* @param \Tobscure\JsonApi\SerializerInterface $serializer
|
||||
* @param SerializerInterface $serializer
|
||||
* @param array $data
|
||||
* @return \Tobscure\JsonApi\Elements\Collection
|
||||
*/
|
||||
|
@@ -7,7 +7,7 @@ abstract class SerializeResourceAction extends SerializeAction
|
||||
/**
|
||||
* Serialize the data as appropriate.
|
||||
*
|
||||
* @param \Tobscure\JsonApi\SerializerInterface $serializer
|
||||
* @param SerializerInterface $serializer
|
||||
* @param array $data
|
||||
* @return \Tobscure\JsonApi\Elements\Resource
|
||||
*/
|
||||
|
@@ -1,10 +1,10 @@
|
||||
<?php namespace Flarum\Api\Actions;
|
||||
|
||||
use Flarum\Api\Commands\GenerateAccessToken;
|
||||
use Flarum\Api\Request;
|
||||
use Flarum\Core\Commands\GenerateAccessTokenCommand;
|
||||
use Flarum\Core\Repositories\UserRepositoryInterface;
|
||||
use Flarum\Core\Users\UserRepositoryInterface;
|
||||
use Flarum\Core\Exceptions\PermissionDeniedException;
|
||||
use Flarum\Core\Events\UserEmailChangeWasRequested;
|
||||
use Flarum\Core\Users\Events\UserEmailChangeWasRequested;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
use Zend\Diactoros\Response\JsonResponse;
|
||||
|
||||
@@ -23,7 +23,7 @@ class TokenAction extends JsonApiAction
|
||||
/**
|
||||
* Log in and return a token.
|
||||
*
|
||||
* @param \Flarum\Api\Request $request
|
||||
* @param Request $request
|
||||
* @return \Psr\Http\Message\ResponseInterface
|
||||
* @throws PermissionDeniedException
|
||||
*/
|
||||
@@ -40,6 +40,7 @@ class TokenAction extends JsonApiAction
|
||||
|
||||
if (! $user->is_activated) {
|
||||
event(new UserEmailChangeWasRequested($user, $user->email));
|
||||
|
||||
return new JsonResponse([
|
||||
'code' => 'confirm_email',
|
||||
'email' => $user->email
|
||||
@@ -47,7 +48,7 @@ class TokenAction extends JsonApiAction
|
||||
}
|
||||
|
||||
$token = $this->bus->dispatch(
|
||||
new GenerateAccessTokenCommand($user->id)
|
||||
new GenerateAccessToken($user->id)
|
||||
);
|
||||
|
||||
return new JsonResponse([
|
||||
|
@@ -1,7 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Users;
|
||||
|
||||
use Flarum\Core\Models\Forum;
|
||||
use Flarum\Core\Commands\RegisterUserCommand;
|
||||
use Flarum\Core\Users\Commands\RegisterUser;
|
||||
use Flarum\Api\Actions\CreateAction as BaseCreateAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -9,19 +8,10 @@ use Illuminate\Contracts\Bus\Dispatcher;
|
||||
class CreateAction extends BaseCreateAction
|
||||
{
|
||||
/**
|
||||
* The command bus.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
/**
|
||||
* The default forum instance.
|
||||
*
|
||||
* @var \Flarum\Core\Models\Forum
|
||||
*/
|
||||
protected $forum;
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
@@ -58,27 +48,23 @@ class CreateAction extends BaseCreateAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param \Flarum\Core\Models\Forum $forum
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus, Forum $forum)
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
$this->bus = $bus;
|
||||
$this->forum = $forum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a user according to input from the API request.
|
||||
*
|
||||
* @param JsonApiRequest $request
|
||||
* @return \Flarum\Core\Models\Model
|
||||
* @return \Flarum\Core\Users\User
|
||||
*/
|
||||
protected function create(JsonApiRequest $request)
|
||||
{
|
||||
return $this->bus->dispatch(
|
||||
new RegisterUserCommand($request->actor->getUser(), $this->forum, $request->get('data'))
|
||||
new RegisterUser($request->actor, $request->get('data'))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Users;
|
||||
|
||||
use Flarum\Core\Commands\DeleteUserCommand;
|
||||
use Flarum\Core\Users\Commands\DeleteUser;
|
||||
use Flarum\Api\Actions\DeleteAction as BaseDeleteAction;
|
||||
use Flarum\Api\Request;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -8,16 +8,12 @@ use Illuminate\Contracts\Bus\Dispatcher;
|
||||
class DeleteAction extends BaseDeleteAction
|
||||
{
|
||||
/**
|
||||
* The command bus.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
@@ -27,13 +23,12 @@ class DeleteAction extends BaseDeleteAction
|
||||
/**
|
||||
* Delete a user.
|
||||
*
|
||||
* @param \Flarum\Api\Request $request
|
||||
* @return void
|
||||
* @param Request $request
|
||||
*/
|
||||
protected function delete(Request $request)
|
||||
{
|
||||
$this->bus->dispatch(
|
||||
new DeleteUserCommand($request->get('id'), $request->actor->getUser())
|
||||
new DeleteUser($request->get('id'), $request->actor)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Users;
|
||||
|
||||
use Flarum\Core\Commands\DeleteAvatarCommand;
|
||||
use Flarum\Core\Users\Commands\DeleteAvatar;
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -9,7 +9,7 @@ use Tobscure\JsonApi\Document;
|
||||
class DeleteAvatarAction extends SerializeResourceAction
|
||||
{
|
||||
/**
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
@@ -19,9 +19,7 @@ class DeleteAvatarAction extends SerializeResourceAction
|
||||
public static $serializer = 'Flarum\Api\Serializers\UserSerializer';
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
@@ -32,14 +30,14 @@ class DeleteAvatarAction extends SerializeResourceAction
|
||||
* Delete a user's avatar, and return the user ready to be serialized and
|
||||
* assigned to the JsonApi response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @return \Flarum\Core\Models\Discussion
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Flarum\Core\Users\User
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
return $this->bus->dispatch(
|
||||
new DeleteAvatarCommand($request->get('id'), $request->actor->getUser())
|
||||
new DeleteAvatar($request->get('id'), $request->actor)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php namespace Flarum\Api\Actions\Users;
|
||||
|
||||
use Flarum\Core\Search\Users\UserSearchCriteria;
|
||||
use Flarum\Core\Search\Users\UserSearcher;
|
||||
use Flarum\Core\Search\SearchCriteria;
|
||||
use Flarum\Core\Users\Search\UserSearcher;
|
||||
use Flarum\Api\Actions\SerializeCollectionAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Flarum\Http\UrlGeneratorInterface;
|
||||
@@ -10,16 +10,12 @@ use Tobscure\JsonApi\Document;
|
||||
class IndexAction extends SerializeCollectionAction
|
||||
{
|
||||
/**
|
||||
* The user searcher.
|
||||
*
|
||||
* @var \Flarum\Core\Search\Users\UserSearcher
|
||||
* @var UserSearcher
|
||||
*/
|
||||
protected $searcher;
|
||||
|
||||
/**
|
||||
* The URL generator.
|
||||
*
|
||||
* @var \Flarum\Http\UrlGeneratorInterface
|
||||
* @var UrlGeneratorInterface
|
||||
*/
|
||||
protected $url;
|
||||
|
||||
@@ -61,10 +57,8 @@ class IndexAction extends SerializeCollectionAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Flarum\Core\Search\Users\UserSearcher $searcher
|
||||
* @param \Flarum\Http\UrlGeneratorInterface $url
|
||||
* @param UserSearcher $searcher
|
||||
* @param UrlGeneratorInterface $url
|
||||
*/
|
||||
public function __construct(UserSearcher $searcher, UrlGeneratorInterface $url)
|
||||
{
|
||||
@@ -76,15 +70,15 @@ class IndexAction extends SerializeCollectionAction
|
||||
* Get the user results, ready to be serialized and assigned to the
|
||||
* document response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Illuminate\Database\Eloquent\Collection
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
$criteria = new UserSearchCriteria(
|
||||
$request->actor->getUser(),
|
||||
$request->get('q'),
|
||||
$criteria = new SearchCriteria(
|
||||
$request->actor,
|
||||
$request->get('filter.q'),
|
||||
$request->sort
|
||||
);
|
||||
|
||||
@@ -97,6 +91,6 @@ class IndexAction extends SerializeCollectionAction
|
||||
$results->areMoreResults()
|
||||
);
|
||||
|
||||
return $results->getUsers();
|
||||
return $results->getResults();
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Users;
|
||||
|
||||
use Flarum\Core\Repositories\UserRepositoryInterface;
|
||||
use Flarum\Core\Users\UserRepositoryInterface;
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Tobscure\JsonApi\Document;
|
||||
@@ -8,7 +8,7 @@ use Tobscure\JsonApi\Document;
|
||||
class ShowAction extends SerializeResourceAction
|
||||
{
|
||||
/**
|
||||
* @var \Flarum\Core\Repositories\UserRepositoryInterface
|
||||
* @var UserRepositoryInterface
|
||||
*/
|
||||
protected $users;
|
||||
|
||||
@@ -50,9 +50,7 @@ class ShowAction extends SerializeResourceAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Flarum\Core\Repositories\UserRepositoryInterface $users
|
||||
* @param UserRepositoryInterface $users
|
||||
*/
|
||||
public function __construct(UserRepositoryInterface $users)
|
||||
{
|
||||
@@ -63,9 +61,9 @@ class ShowAction extends SerializeResourceAction
|
||||
* Get a single user, ready to be serialized and assigned to the JsonApi
|
||||
* response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @return \Flarum\Core\Models\Discussion
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Flarum\Core\Users\User
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
@@ -75,6 +73,6 @@ class ShowAction extends SerializeResourceAction
|
||||
$id = $this->users->getIdForUsername($id);
|
||||
}
|
||||
|
||||
return $this->users->findOrFail($id, $request->actor->getUser());
|
||||
return $this->users->findOrFail($id, $request->actor);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Users;
|
||||
|
||||
use Flarum\Core\Commands\EditUserCommand;
|
||||
use Flarum\Core\Users\Commands\EditUser;
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -9,14 +9,14 @@ use Tobscure\JsonApi\Document;
|
||||
class UpdateAction extends SerializeResourceAction
|
||||
{
|
||||
/**
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public static $serializer = 'Flarum\Api\Serializers\UserSerializer';
|
||||
public static $serializer = 'Flarum\Api\Serializers\CurrentUserSerializer';
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
@@ -49,9 +49,7 @@ class UpdateAction extends SerializeResourceAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
@@ -62,14 +60,14 @@ class UpdateAction extends SerializeResourceAction
|
||||
* Update a user according to input from the API request, and return it
|
||||
* ready to be serialized and assigned to the JsonApi response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @return \Flarum\Core\Models\Discussion
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Flarum\Core\Users\User
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
return $this->bus->dispatch(
|
||||
new EditUserCommand($request->get('id'), $request->actor->getUser(), $request->get('data'))
|
||||
new EditUser($request->get('id'), $request->actor, $request->get('data'))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php namespace Flarum\Api\Actions\Users;
|
||||
|
||||
use Flarum\Core\Commands\UploadAvatarCommand;
|
||||
use Flarum\Core\Users\Commands\UploadAvatar;
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
@@ -9,7 +9,7 @@ use Tobscure\JsonApi\Document;
|
||||
class UploadAvatarAction extends SerializeResourceAction
|
||||
{
|
||||
/**
|
||||
* @var \Illuminate\Contracts\Bus\Dispatcher
|
||||
* @var Dispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
@@ -49,9 +49,7 @@ class UploadAvatarAction extends SerializeResourceAction
|
||||
public static $sort;
|
||||
|
||||
/**
|
||||
* Instantiate the action.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Bus\Dispatcher $bus
|
||||
* @param Dispatcher $bus
|
||||
*/
|
||||
public function __construct(Dispatcher $bus)
|
||||
{
|
||||
@@ -62,17 +60,17 @@ class UploadAvatarAction extends SerializeResourceAction
|
||||
* Upload an avatar for a user, and return the user ready to be serialized
|
||||
* and assigned to the JsonApi response.
|
||||
*
|
||||
* @param \Flarum\Api\JsonApiRequest $request
|
||||
* @param \Tobscure\JsonApi\Document $document
|
||||
* @return \Flarum\Core\Models\Discussion
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Flarum\Core\Users\User
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
return $this->bus->dispatch(
|
||||
new UploadAvatarCommand(
|
||||
new UploadAvatar(
|
||||
$request->get('id'),
|
||||
$request->http->getUploadedFiles()['avatar'],
|
||||
$request->actor->getUser()
|
||||
$request->actor
|
||||
)
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user