Use Laravel's class-based Str and Arr helpers

Starting with version 5.9, the global funtions will be deprecated.

* https://laravel-news.com/laravel-5-8-deprecates-string-and-array-helpers
* https://github.com/laravel/framework/pull/26898
This commit is contained in:
Franz Liedke 2019-07-06 00:49:34 +02:00
parent 039973c5f8
commit 32e84d651c
78 changed files with 229 additions and 144 deletions

View File

@ -14,6 +14,7 @@ namespace Flarum\Api;
use Carbon\Carbon; use Carbon\Carbon;
use Flarum\Database\AbstractModel; use Flarum\Database\AbstractModel;
use Flarum\User\User; use Flarum\User\User;
use Illuminate\Support\Str;
/** /**
* @property int $id * @property int $id
@ -38,7 +39,7 @@ class ApiKey extends AbstractModel
{ {
$key = new static; $key = new static;
$key->key = str_random(40); $key->key = Str::random(40);
return $key; return $key;
} }

View File

@ -16,6 +16,7 @@ use Flarum\Discussion\Command\ReadDiscussion;
use Flarum\Discussion\Command\StartDiscussion; use Flarum\Discussion\Command\StartDiscussion;
use Flarum\Post\Floodgate; use Flarum\Post\Floodgate;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -63,14 +64,14 @@ class CreateDiscussionController extends AbstractCreateController
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$ipAddress = array_get($request->getServerParams(), 'REMOTE_ADDR', '127.0.0.1'); $ipAddress = Arr::get($request->getServerParams(), 'REMOTE_ADDR', '127.0.0.1');
if (! $request->getAttribute('bypassFloodgate')) { if (! $request->getAttribute('bypassFloodgate')) {
$this->floodgate->assertNotFlooding($actor); $this->floodgate->assertNotFlooding($actor);
} }
$discussion = $this->bus->dispatch( $discussion = $this->bus->dispatch(
new StartDiscussion($actor, array_get($request->getParsedBody(), 'data', []), $ipAddress) new StartDiscussion($actor, Arr::get($request->getParsedBody(), 'data', []), $ipAddress)
); );
// After creating the discussion, we assume that the user has seen all // After creating the discussion, we assume that the user has seen all

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\Api\Serializer\GroupSerializer; use Flarum\Api\Serializer\GroupSerializer;
use Flarum\Group\Command\CreateGroup; use Flarum\Group\Command\CreateGroup;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -43,7 +44,7 @@ class CreateGroupController extends AbstractCreateController
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
return $this->bus->dispatch( return $this->bus->dispatch(
new CreateGroup($request->getAttribute('actor'), array_get($request->getParsedBody(), 'data', [])) new CreateGroup($request->getAttribute('actor'), Arr::get($request->getParsedBody(), 'data', []))
); );
} }
} }

View File

@ -16,6 +16,7 @@ use Flarum\Discussion\Command\ReadDiscussion;
use Flarum\Post\Command\PostReply; use Flarum\Post\Command\PostReply;
use Flarum\Post\Floodgate; use Flarum\Post\Floodgate;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -62,9 +63,9 @@ class CreatePostController extends AbstractCreateController
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$data = array_get($request->getParsedBody(), 'data', []); $data = Arr::get($request->getParsedBody(), 'data', []);
$discussionId = array_get($data, 'relationships.discussion.data.id'); $discussionId = Arr::get($data, 'relationships.discussion.data.id');
$ipAddress = array_get($request->getServerParams(), 'REMOTE_ADDR', '127.0.0.1'); $ipAddress = Arr::get($request->getServerParams(), 'REMOTE_ADDR', '127.0.0.1');
if (! $request->getAttribute('bypassFloodgate')) { if (! $request->getAttribute('bypassFloodgate')) {
$this->floodgate->assertNotFlooding($actor); $this->floodgate->assertNotFlooding($actor);

View File

@ -16,6 +16,7 @@ use Flarum\User\Exception\PermissionDeniedException;
use Flarum\User\UserRepository; use Flarum\User\UserRepository;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher; use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher; use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -57,9 +58,9 @@ class CreateTokenController implements RequestHandlerInterface
{ {
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$identification = array_get($body, 'identification'); $identification = Arr::get($body, 'identification');
$password = array_get($body, 'password'); $password = Arr::get($body, 'password');
$lifetime = array_get($body, 'lifetime', 3600); $lifetime = Arr::get($body, 'lifetime', 3600);
$user = $this->users->findByIdentification($identification); $user = $this->users->findByIdentification($identification);

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\Api\Serializer\CurrentUserSerializer; use Flarum\Api\Serializer\CurrentUserSerializer;
use Flarum\User\Command\RegisterUser; use Flarum\User\Command\RegisterUser;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -43,7 +44,7 @@ class CreateUserController extends AbstractCreateController
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
return $this->bus->dispatch( return $this->bus->dispatch(
new RegisterUser($request->getAttribute('actor'), array_get($request->getParsedBody(), 'data', [])) new RegisterUser($request->getAttribute('actor'), Arr::get($request->getParsedBody(), 'data', []))
); );
} }
} }

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\Api\Serializer\UserSerializer; use Flarum\Api\Serializer\UserSerializer;
use Flarum\User\Command\DeleteAvatar; use Flarum\User\Command\DeleteAvatar;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -43,7 +44,7 @@ class DeleteAvatarController extends AbstractShowController
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
return $this->bus->dispatch( return $this->bus->dispatch(
new DeleteAvatar(array_get($request->getQueryParams(), 'id'), $request->getAttribute('actor')) new DeleteAvatar(Arr::get($request->getQueryParams(), 'id'), $request->getAttribute('actor'))
); );
} }
} }

View File

@ -13,6 +13,7 @@ namespace Flarum\Api\Controller;
use Flarum\Discussion\Command\DeleteDiscussion; use Flarum\Discussion\Command\DeleteDiscussion;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
class DeleteDiscussionController extends AbstractDeleteController class DeleteDiscussionController extends AbstractDeleteController
@ -35,7 +36,7 @@ class DeleteDiscussionController extends AbstractDeleteController
*/ */
protected function delete(ServerRequestInterface $request) protected function delete(ServerRequestInterface $request)
{ {
$id = array_get($request->getQueryParams(), 'id'); $id = Arr::get($request->getQueryParams(), 'id');
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$input = $request->getParsedBody(); $input = $request->getParsedBody();

View File

@ -13,6 +13,7 @@ namespace Flarum\Api\Controller;
use Flarum\Group\Command\DeleteGroup; use Flarum\Group\Command\DeleteGroup;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
class DeleteGroupController extends AbstractDeleteController class DeleteGroupController extends AbstractDeleteController
@ -36,7 +37,7 @@ class DeleteGroupController extends AbstractDeleteController
protected function delete(ServerRequestInterface $request) protected function delete(ServerRequestInterface $request)
{ {
$this->bus->dispatch( $this->bus->dispatch(
new DeleteGroup(array_get($request->getQueryParams(), 'id'), $request->getAttribute('actor')) new DeleteGroup(Arr::get($request->getQueryParams(), 'id'), $request->getAttribute('actor'))
); );
} }
} }

View File

@ -13,6 +13,7 @@ namespace Flarum\Api\Controller;
use Flarum\Post\Command\DeletePost; use Flarum\Post\Command\DeletePost;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
class DeletePostController extends AbstractDeleteController class DeletePostController extends AbstractDeleteController
@ -36,7 +37,7 @@ class DeletePostController extends AbstractDeleteController
protected function delete(ServerRequestInterface $request) protected function delete(ServerRequestInterface $request)
{ {
$this->bus->dispatch( $this->bus->dispatch(
new DeletePost(array_get($request->getQueryParams(), 'id'), $request->getAttribute('actor')) new DeletePost(Arr::get($request->getQueryParams(), 'id'), $request->getAttribute('actor'))
); );
} }
} }

View File

@ -13,6 +13,7 @@ namespace Flarum\Api\Controller;
use Flarum\User\Command\DeleteUser; use Flarum\User\Command\DeleteUser;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
class DeleteUserController extends AbstractDeleteController class DeleteUserController extends AbstractDeleteController
@ -36,7 +37,7 @@ class DeleteUserController extends AbstractDeleteController
protected function delete(ServerRequestInterface $request) protected function delete(ServerRequestInterface $request)
{ {
$this->bus->dispatch( $this->bus->dispatch(
new DeleteUser(array_get($request->getQueryParams(), 'id'), $request->getAttribute('actor')) new DeleteUser(Arr::get($request->getQueryParams(), 'id'), $request->getAttribute('actor'))
); );
} }
} }

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\User\Command\RequestPasswordReset; use Flarum\User\Command\RequestPasswordReset;
use Flarum\User\UserRepository; use Flarum\User\UserRepository;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -46,7 +47,7 @@ class ForgotPasswordController implements RequestHandlerInterface
*/ */
public function handle(ServerRequestInterface $request): ResponseInterface public function handle(ServerRequestInterface $request): ResponseInterface
{ {
$email = array_get($request->getParsedBody(), 'email'); $email = Arr::get($request->getParsedBody(), 'email');
$this->bus->dispatch( $this->bus->dispatch(
new RequestPasswordReset($email) new RequestPasswordReset($email)

View File

@ -16,6 +16,7 @@ use Flarum\Discussion\Discussion;
use Flarum\Discussion\Search\DiscussionSearcher; use Flarum\Discussion\Search\DiscussionSearcher;
use Flarum\Http\UrlGenerator; use Flarum\Http\UrlGenerator;
use Flarum\Search\SearchCriteria; use Flarum\Search\SearchCriteria;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -75,7 +76,7 @@ class ListDiscussionsController extends AbstractListController
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$query = array_get($this->extractFilter($request), 'q'); $query = Arr::get($this->extractFilter($request), 'q');
$sort = $this->extractSort($request); $sort = $this->extractSort($request);
$criteria = new SearchCriteria($actor, $query, $sort); $criteria = new SearchCriteria($actor, $query, $sort);

View File

@ -15,6 +15,8 @@ use Flarum\Api\Serializer\PostSerializer;
use Flarum\Event\ConfigurePostsQuery; use Flarum\Event\ConfigurePostsQuery;
use Flarum\Post\PostRepository; use Flarum\Post\PostRepository;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
use Tobscure\JsonApi\Exception\InvalidParameterException; use Tobscure\JsonApi\Exception\InvalidParameterException;
@ -64,7 +66,7 @@ class ListPostsController extends AbstractListController
$filter = $this->extractFilter($request); $filter = $this->extractFilter($request);
$include = $this->extractInclude($request); $include = $this->extractInclude($request);
if ($postIds = array_get($filter, 'id')) { if ($postIds = Arr::get($filter, 'id')) {
$postIds = explode(',', $postIds); $postIds = explode(',', $postIds);
} else { } else {
$postIds = $this->getPostIds($request); $postIds = $this->getPostIds($request);
@ -86,7 +88,7 @@ class ListPostsController extends AbstractListController
$limit = $this->extractLimit($request); $limit = $this->extractLimit($request);
$filter = $this->extractFilter($request); $filter = $this->extractFilter($request);
if (($near = array_get($queryParams, 'page.near')) > 1) { if (($near = Arr::get($queryParams, 'page.near')) > 1) {
if (count($filter) > 1 || ! isset($filter['discussion']) || $sort) { if (count($filter) > 1 || ! isset($filter['discussion']) || $sort) {
throw new InvalidParameterException( throw new InvalidParameterException(
'You can only use page[near] with filter[discussion] and the default sort order' 'You can only use page[near] with filter[discussion] and the default sort order'
@ -120,7 +122,7 @@ class ListPostsController extends AbstractListController
$query->skip($offset)->take($limit); $query->skip($offset)->take($limit);
foreach ((array) $sort as $field => $order) { foreach ((array) $sort as $field => $order) {
$query->orderBy(snake_case($field), $order); $query->orderBy(Str::snake($field), $order);
} }
return $query->pluck('id')->all(); return $query->pluck('id')->all();
@ -132,19 +134,19 @@ class ListPostsController extends AbstractListController
*/ */
private function applyFilters(Builder $query, array $filter) private function applyFilters(Builder $query, array $filter)
{ {
if ($discussionId = array_get($filter, 'discussion')) { if ($discussionId = Arr::get($filter, 'discussion')) {
$query->where('discussion_id', $discussionId); $query->where('discussion_id', $discussionId);
} }
if ($number = array_get($filter, 'number')) { if ($number = Arr::get($filter, 'number')) {
$query->where('number', $number); $query->where('number', $number);
} }
if ($userId = array_get($filter, 'user')) { if ($userId = Arr::get($filter, 'user')) {
$query->where('user_id', $userId); $query->where('user_id', $userId);
} }
if ($type = array_get($filter, 'type')) { if ($type = Arr::get($filter, 'type')) {
$query->where('type', $type); $query->where('type', $type);
} }

View File

@ -16,6 +16,7 @@ use Flarum\Http\UrlGenerator;
use Flarum\Search\SearchCriteria; use Flarum\Search\SearchCriteria;
use Flarum\User\Exception\PermissionDeniedException; use Flarum\User\Exception\PermissionDeniedException;
use Flarum\User\Search\UserSearcher; use Flarum\User\Search\UserSearcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -73,7 +74,7 @@ class ListUsersController extends AbstractListController
throw new PermissionDeniedException; throw new PermissionDeniedException;
} }
$query = array_get($this->extractFilter($request), 'q'); $query = Arr::get($this->extractFilter($request), 'q');
$sort = $this->extractSort($request); $sort = $this->extractSort($request);
$criteria = new SearchCriteria($actor, $query, $sort); $criteria = new SearchCriteria($actor, $query, $sort);

View File

@ -18,6 +18,7 @@ use Flarum\User\EmailToken;
use Flarum\User\Exception\PermissionDeniedException; use Flarum\User\Exception\PermissionDeniedException;
use Illuminate\Contracts\Mail\Mailer; use Illuminate\Contracts\Mail\Mailer;
use Illuminate\Mail\Message; use Illuminate\Mail\Message;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -67,7 +68,7 @@ class SendConfirmationEmailController implements RequestHandlerInterface
*/ */
public function handle(ServerRequestInterface $request): ResponseInterface public function handle(ServerRequestInterface $request): ResponseInterface
{ {
$id = array_get($request->getQueryParams(), 'id'); $id = Arr::get($request->getQueryParams(), 'id');
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$this->assertRegistered($actor); $this->assertRegistered($actor);

View File

@ -13,6 +13,7 @@ namespace Flarum\Api\Controller;
use Flarum\Group\Permission; use Flarum\Group\Permission;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -30,8 +31,8 @@ class SetPermissionController implements RequestHandlerInterface
$this->assertAdmin($request->getAttribute('actor')); $this->assertAdmin($request->getAttribute('actor'));
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$permission = array_get($body, 'permission'); $permission = Arr::get($body, 'permission');
$groupIds = array_get($body, 'groupIds'); $groupIds = Arr::get($body, 'groupIds');
Permission::where('permission', $permission)->delete(); Permission::where('permission', $permission)->delete();

View File

@ -16,6 +16,8 @@ use Flarum\Discussion\Discussion;
use Flarum\Discussion\DiscussionRepository; use Flarum\Discussion\DiscussionRepository;
use Flarum\Post\PostRepository; use Flarum\Post\PostRepository;
use Flarum\User\User; use Flarum\User\User;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -73,7 +75,7 @@ class ShowDiscussionController extends AbstractShowController
*/ */
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$discussionId = array_get($request->getQueryParams(), 'id'); $discussionId = Arr::get($request->getQueryParams(), 'id');
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$include = $this->extractInclude($request); $include = $this->extractInclude($request);
@ -86,7 +88,7 @@ class ShowDiscussionController extends AbstractShowController
} }
$discussion->load(array_filter($include, function ($relationship) { $discussion->load(array_filter($include, function ($relationship) {
return ! starts_with($relationship, 'posts'); return ! Str::startsWith($relationship, 'posts');
})); }));
return $discussion; return $discussion;
@ -150,7 +152,7 @@ class ShowDiscussionController extends AbstractShowController
$queryParams = $request->getQueryParams(); $queryParams = $request->getQueryParams();
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
if (($near = array_get($queryParams, 'page.near')) > 1) { if (($near = Arr::get($queryParams, 'page.near')) > 1) {
$offset = $this->posts->getIndexForNumber($discussion->id, $near, $actor); $offset = $this->posts->getIndexForNumber($discussion->id, $near, $actor);
$offset = max(0, $offset - $limit / 2); $offset = max(0, $offset - $limit / 2);
} else { } else {

View File

@ -13,6 +13,7 @@ namespace Flarum\Api\Controller;
use Flarum\Api\Serializer\PostSerializer; use Flarum\Api\Serializer\PostSerializer;
use Flarum\Post\PostRepository; use Flarum\Post\PostRepository;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -52,6 +53,6 @@ class ShowPostController extends AbstractShowController
*/ */
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
return $this->posts->findOrFail(array_get($request->getQueryParams(), 'id'), $request->getAttribute('actor')); return $this->posts->findOrFail(Arr::get($request->getQueryParams(), 'id'), $request->getAttribute('actor'));
} }
} }

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\Api\Serializer\CurrentUserSerializer; use Flarum\Api\Serializer\CurrentUserSerializer;
use Flarum\Api\Serializer\UserSerializer; use Flarum\Api\Serializer\UserSerializer;
use Flarum\User\UserRepository; use Flarum\User\UserRepository;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -47,7 +48,7 @@ class ShowUserController extends AbstractShowController
*/ */
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$id = array_get($request->getQueryParams(), 'id'); $id = Arr::get($request->getQueryParams(), 'id');
if (! is_numeric($id)) { if (! is_numeric($id)) {
$id = $this->users->getIdForUsername($id); $id = $this->users->getIdForUsername($id);

View File

@ -13,6 +13,7 @@ namespace Flarum\Api\Controller;
use Flarum\Extension\ExtensionManager; use Flarum\Extension\ExtensionManager;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
class UninstallExtensionController extends AbstractDeleteController class UninstallExtensionController extends AbstractDeleteController
@ -36,7 +37,7 @@ class UninstallExtensionController extends AbstractDeleteController
{ {
$this->assertAdmin($request->getAttribute('actor')); $this->assertAdmin($request->getAttribute('actor'));
$name = array_get($request->getQueryParams(), 'name'); $name = Arr::get($request->getQueryParams(), 'name');
if ($this->extensions->getExtension($name) == null) { if ($this->extensions->getExtension($name) == null) {
return; return;

View File

@ -16,6 +16,7 @@ use Flarum\Discussion\Command\EditDiscussion;
use Flarum\Discussion\Command\ReadDiscussion; use Flarum\Discussion\Command\ReadDiscussion;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -45,8 +46,8 @@ class UpdateDiscussionController extends AbstractShowController
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$discussionId = array_get($request->getQueryParams(), 'id'); $discussionId = Arr::get($request->getQueryParams(), 'id');
$data = array_get($request->getParsedBody(), 'data', []); $data = Arr::get($request->getParsedBody(), 'data', []);
$discussion = $this->bus->dispatch( $discussion = $this->bus->dispatch(
new EditDiscussion($discussionId, $actor, $data) new EditDiscussion($discussionId, $actor, $data)
@ -54,7 +55,7 @@ class UpdateDiscussionController extends AbstractShowController
// TODO: Refactor the ReadDiscussion (state) command into EditDiscussion? // TODO: Refactor the ReadDiscussion (state) command into EditDiscussion?
// That's what extensions will do anyway. // That's what extensions will do anyway.
if ($readNumber = array_get($data, 'attributes.lastReadPostNumber')) { if ($readNumber = Arr::get($data, 'attributes.lastReadPostNumber')) {
$state = $this->bus->dispatch( $state = $this->bus->dispatch(
new ReadDiscussion($discussionId, $actor, $readNumber) new ReadDiscussion($discussionId, $actor, $readNumber)
); );

View File

@ -13,6 +13,7 @@ namespace Flarum\Api\Controller;
use Flarum\Extension\ExtensionManager; use Flarum\Extension\ExtensionManager;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -42,8 +43,8 @@ class UpdateExtensionController implements RequestHandlerInterface
{ {
$this->assertAdmin($request->getAttribute('actor')); $this->assertAdmin($request->getAttribute('actor'));
$enabled = array_get($request->getParsedBody(), 'enabled'); $enabled = Arr::get($request->getParsedBody(), 'enabled');
$name = array_get($request->getQueryParams(), 'name'); $name = Arr::get($request->getQueryParams(), 'name');
if ($enabled === true) { if ($enabled === true) {
$this->extensions->enable($name); $this->extensions->enable($name);

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\Api\Serializer\GroupSerializer; use Flarum\Api\Serializer\GroupSerializer;
use Flarum\Group\Command\EditGroup; use Flarum\Group\Command\EditGroup;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -42,9 +43,9 @@ class UpdateGroupController extends AbstractShowController
*/ */
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$id = array_get($request->getQueryParams(), 'id'); $id = Arr::get($request->getQueryParams(), 'id');
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$data = array_get($request->getParsedBody(), 'data', []); $data = Arr::get($request->getParsedBody(), 'data', []);
return $this->bus->dispatch( return $this->bus->dispatch(
new EditGroup($id, $actor, $data) new EditGroup($id, $actor, $data)

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\Api\Serializer\NotificationSerializer; use Flarum\Api\Serializer\NotificationSerializer;
use Flarum\Notification\Command\ReadNotification; use Flarum\Notification\Command\ReadNotification;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -42,7 +43,7 @@ class UpdateNotificationController extends AbstractShowController
*/ */
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$id = array_get($request->getQueryParams(), 'id'); $id = Arr::get($request->getQueryParams(), 'id');
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
return $this->bus->dispatch( return $this->bus->dispatch(

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\Api\Serializer\PostSerializer; use Flarum\Api\Serializer\PostSerializer;
use Flarum\Post\Command\EditPost; use Flarum\Post\Command\EditPost;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -50,9 +51,9 @@ class UpdatePostController extends AbstractShowController
*/ */
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$id = array_get($request->getQueryParams(), 'id'); $id = Arr::get($request->getQueryParams(), 'id');
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$data = array_get($request->getParsedBody(), 'data', []); $data = Arr::get($request->getParsedBody(), 'data', []);
return $this->bus->dispatch( return $this->bus->dispatch(
new EditPost($id, $actor, $data) new EditPost($id, $actor, $data)

View File

@ -16,6 +16,7 @@ use Flarum\Api\Serializer\UserSerializer;
use Flarum\User\Command\EditUser; use Flarum\User\Command\EditUser;
use Flarum\User\Exception\PermissionDeniedException; use Flarum\User\Exception\PermissionDeniedException;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -49,9 +50,9 @@ class UpdateUserController extends AbstractShowController
*/ */
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$id = array_get($request->getQueryParams(), 'id'); $id = Arr::get($request->getQueryParams(), 'id');
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$data = array_get($request->getParsedBody(), 'data', []); $data = Arr::get($request->getParsedBody(), 'data', []);
if ($actor->id == $id) { if ($actor->id == $id) {
$this->serializer = CurrentUserSerializer::class; $this->serializer = CurrentUserSerializer::class;
@ -60,7 +61,7 @@ class UpdateUserController extends AbstractShowController
// Require the user's current password if they are attempting to change // Require the user's current password if they are attempting to change
// their own email address. // their own email address.
if (isset($data['attributes']['email']) && $actor->id == $id) { if (isset($data['attributes']['email']) && $actor->id == $id) {
$password = array_get($request->getParsedBody(), 'meta.password'); $password = Arr::get($request->getParsedBody(), 'meta.password');
if (! $actor->checkPassword($password)) { if (! $actor->checkPassword($password)) {
throw new PermissionDeniedException; throw new PermissionDeniedException;

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\Api\Serializer\UserSerializer; use Flarum\Api\Serializer\UserSerializer;
use Flarum\User\Command\UploadAvatar; use Flarum\User\Command\UploadAvatar;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Document;
@ -42,9 +43,9 @@ class UploadAvatarController extends AbstractShowController
*/ */
protected function data(ServerRequestInterface $request, Document $document) protected function data(ServerRequestInterface $request, Document $document)
{ {
$id = array_get($request->getQueryParams(), 'id'); $id = Arr::get($request->getQueryParams(), 'id');
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$file = array_get($request->getUploadedFiles(), 'avatar'); $file = Arr::get($request->getUploadedFiles(), 'avatar');
return $this->bus->dispatch( return $this->bus->dispatch(
new UploadAvatar($id, $file, $actor) new UploadAvatar($id, $file, $actor)

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\Foundation\Application; use Flarum\Foundation\Application;
use Flarum\Settings\SettingsRepositoryInterface; use Flarum\Settings\SettingsRepositoryInterface;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Illuminate\Support\Arr;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Intervention\Image\ImageManager; use Intervention\Image\ImageManager;
use League\Flysystem\Adapter\Local; use League\Flysystem\Adapter\Local;
@ -52,7 +53,7 @@ class UploadFaviconController extends ShowForumController
{ {
$this->assertAdmin($request->getAttribute('actor')); $this->assertAdmin($request->getAttribute('actor'));
$file = array_get($request->getUploadedFiles(), 'favicon'); $file = Arr::get($request->getUploadedFiles(), 'favicon');
$tmpFile = tempnam($this->app->storagePath().'/tmp', 'favicon'); $tmpFile = tempnam($this->app->storagePath().'/tmp', 'favicon');
$file->moveTo($tmpFile); $file->moveTo($tmpFile);

View File

@ -14,6 +14,7 @@ namespace Flarum\Api\Controller;
use Flarum\Foundation\Application; use Flarum\Foundation\Application;
use Flarum\Settings\SettingsRepositoryInterface; use Flarum\Settings\SettingsRepositoryInterface;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Illuminate\Support\Arr;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Intervention\Image\ImageManager; use Intervention\Image\ImageManager;
use League\Flysystem\Adapter\Local; use League\Flysystem\Adapter\Local;
@ -52,7 +53,7 @@ class UploadLogoController extends ShowForumController
{ {
$this->assertAdmin($request->getAttribute('actor')); $this->assertAdmin($request->getAttribute('actor'));
$file = array_get($request->getUploadedFiles(), 'logo'); $file = Arr::get($request->getUploadedFiles(), 'logo');
$tmpFile = tempnam($this->app->storagePath().'/tmp', 'logo'); $tmpFile = tempnam($this->app->storagePath().'/tmp', 'logo');
$file->moveTo($tmpFile); $file->moveTo($tmpFile);

View File

@ -12,6 +12,7 @@
namespace Flarum\Api\Event; namespace Flarum\Api\Event;
use Flarum\Api\Controller\AbstractSerializeController; use Flarum\Api\Controller\AbstractSerializeController;
use Illuminate\Support\Arr;
class WillGetData class WillGetData
{ {
@ -64,7 +65,7 @@ class WillGetData
*/ */
public function removeInclude($name) public function removeInclude($name)
{ {
array_forget($this->controller->include, $name); Arr::forget($this->controller->include, $name);
} }
/** /**
@ -84,7 +85,7 @@ class WillGetData
*/ */
public function removeOptionalInclude($name) public function removeOptionalInclude($name)
{ {
array_forget($this->controller->optionalInclude, $name); Arr::forget($this->controller->optionalInclude, $name);
} }
/** /**
@ -124,7 +125,7 @@ class WillGetData
*/ */
public function removeSortField($field) public function removeSortField($field)
{ {
array_forget($this->controller->sortFields, $field); Arr::forget($this->controller->sortFields, $field);
} }
/** /**

View File

@ -17,6 +17,7 @@ use Flarum\Discussion\Event\Saving;
use Flarum\Foundation\DispatchEventsTrait; use Flarum\Foundation\DispatchEventsTrait;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\Arr;
class EditDiscussionHandler class EditDiscussionHandler
{ {
@ -54,7 +55,7 @@ class EditDiscussionHandler
{ {
$actor = $command->actor; $actor = $command->actor;
$data = $command->data; $data = $command->data;
$attributes = array_get($data, 'attributes', []); $attributes = Arr::get($data, 'attributes', []);
$discussion = $this->discussions->findOrFail($command->discussionId, $actor); $discussion = $this->discussions->findOrFail($command->discussionId, $actor);

View File

@ -20,6 +20,7 @@ use Flarum\Post\Command\PostReply;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher; use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher; use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Support\Arr;
class StartDiscussionHandler class StartDiscussionHandler
{ {
@ -66,7 +67,7 @@ class StartDiscussionHandler
// an opportunity to alter the discussion entity based on data in the // an opportunity to alter the discussion entity based on data in the
// command they may have passed through in the controller. // command they may have passed through in the controller.
$discussion = Discussion::start( $discussion = Discussion::start(
array_get($data, 'attributes.title'), Arr::get($data, 'attributes.title'),
$actor $actor
); );

View File

@ -13,6 +13,7 @@ namespace Flarum\Event;
use DirectoryIterator; use DirectoryIterator;
use Flarum\Locale\LocaleManager; use Flarum\Locale\LocaleManager;
use Illuminate\Support\Arr;
use RuntimeException; use RuntimeException;
/** /**
@ -49,8 +50,8 @@ class ConfigureLocales
throw new RuntimeException("Error parsing composer.json in $name: ".json_last_error_msg()); throw new RuntimeException("Error parsing composer.json in $name: ".json_last_error_msg());
} }
$locale = array_get($json, 'extra.flarum-locale.code'); $locale = Arr::get($json, 'extra.flarum-locale.code');
$title = array_get($json, 'extra.flarum-locale.title', $title); $title = Arr::get($json, 'extra.flarum-locale.title', $title);
} }
if (! isset($locale)) { if (! isset($locale)) {

View File

@ -14,6 +14,7 @@ namespace Flarum\Extension;
use Flarum\Extension\Event\Disabling; use Flarum\Extension\Event\Disabling;
use Flarum\Http\Exception\ForbiddenException; use Flarum\Http\Exception\ForbiddenException;
use Flarum\Settings\SettingsRepositoryInterface; use Flarum\Settings\SettingsRepositoryInterface;
use Illuminate\Support\Arr;
class DefaultLanguagePackGuard class DefaultLanguagePackGuard
{ {
@ -34,7 +35,7 @@ class DefaultLanguagePackGuard
} }
$defaultLocale = $this->settings->get('default_locale'); $defaultLocale = $this->settings->get('default_locale');
$locale = array_get($event->extension->extra, 'flarum-locale.code'); $locale = Arr::get($event->extension->extra, 'flarum-locale.code');
if ($locale === $defaultLocale) { if ($locale === $defaultLocale) {
throw new ForbiddenException('You cannot disable the default language pack!'); throw new ForbiddenException('You cannot disable the default language pack!');

View File

@ -15,6 +15,7 @@ use Flarum\Http\Rememberer;
use Flarum\User\LoginProvider; use Flarum\User\LoginProvider;
use Flarum\User\RegistrationToken; use Flarum\User\RegistrationToken;
use Flarum\User\User; use Flarum\User\User;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Zend\Diactoros\Response\HtmlResponse; use Zend\Diactoros\Response\HtmlResponse;
@ -43,7 +44,7 @@ class ResponseFactory
$provided = $registration->getProvided(); $provided = $registration->getProvided();
if (! empty($provided['email']) && $user = User::where(array_only($provided, 'email'))->first()) { if (! empty($provided['email']) && $user = User::where(Arr::only($provided, 'email'))->first()) {
$user->loginProviders()->create(compact('provider', 'identifier')); $user->loginProviders()->create(compact('provider', 'identifier'));
return $this->makeLoggedInResponse($user); return $this->makeLoggedInResponse($user);

View File

@ -17,6 +17,7 @@ use Flarum\Http\Exception\RouteNotFoundException;
use Flarum\Http\UrlGenerator; use Flarum\Http\UrlGenerator;
use Flarum\User\User; use Flarum\User\User;
use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
class Discussion class Discussion
@ -51,12 +52,12 @@ class Discussion
public function __invoke(Document $document, Request $request) public function __invoke(Document $document, Request $request)
{ {
$queryParams = $request->getQueryParams(); $queryParams = $request->getQueryParams();
$page = max(1, array_get($queryParams, 'page')); $page = max(1, Arr::get($queryParams, 'page'));
$params = [ $params = [
'id' => (int) array_get($queryParams, 'id'), 'id' => (int) Arr::get($queryParams, 'id'),
'page' => [ 'page' => [
'near' => array_get($queryParams, 'near'), 'near' => Arr::get($queryParams, 'near'),
'offset' => ($page - 1) * 20, 'offset' => ($page - 1) * 20,
'limit' => 20 'limit' => 20
] ]
@ -65,7 +66,7 @@ class Discussion
$apiDocument = $this->getApiDocument($request->getAttribute('actor'), $params); $apiDocument = $this->getApiDocument($request->getAttribute('actor'), $params);
$getResource = function ($link) use ($apiDocument) { $getResource = function ($link) use ($apiDocument) {
return array_first($apiDocument->included, function ($value) use ($link) { return Arr::first($apiDocument->included, function ($value) use ($link) {
return $value->type === $link->type && $value->id === $link->id; return $value->type === $link->type && $value->id === $link->id;
}); });
}; };

View File

@ -16,6 +16,7 @@ use Flarum\Api\Controller\ListDiscussionsController;
use Flarum\Frontend\Document; use Flarum\Frontend\Document;
use Flarum\User\User; use Flarum\User\User;
use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
class Index class Index
@ -44,9 +45,9 @@ class Index
{ {
$queryParams = $request->getQueryParams(); $queryParams = $request->getQueryParams();
$sort = array_pull($queryParams, 'sort'); $sort = Arr::pull($queryParams, 'sort');
$q = array_pull($queryParams, 'q'); $q = Arr::pull($queryParams, 'q');
$page = array_pull($queryParams, 'page', 1); $page = Arr::pull($queryParams, 'page', 1);
$sortMap = $this->getSortMap(); $sortMap = $this->getSortMap();

View File

@ -16,6 +16,7 @@ use Flarum\Http\SessionAuthenticator;
use Flarum\User\Command\ConfirmEmail; use Flarum\User\Command\ConfirmEmail;
use Flarum\User\Exception\InvalidConfirmationTokenException; use Flarum\User\Exception\InvalidConfirmationTokenException;
use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -58,7 +59,7 @@ class ConfirmEmailController implements RequestHandlerInterface
public function handle(Request $request): ResponseInterface public function handle(Request $request): ResponseInterface
{ {
try { try {
$token = array_get($request->getQueryParams(), 'token'); $token = Arr::get($request->getQueryParams(), 'token');
$user = $this->bus->dispatch( $user = $this->bus->dispatch(
new ConfirmEmail($token) new ConfirmEmail($token)

View File

@ -18,6 +18,7 @@ use Flarum\Http\Rememberer;
use Flarum\Http\SessionAuthenticator; use Flarum\Http\SessionAuthenticator;
use Flarum\User\Event\LoggedIn; use Flarum\User\Event\LoggedIn;
use Flarum\User\UserRepository; use Flarum\User\UserRepository;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -65,7 +66,7 @@ class LogInController implements RequestHandlerInterface
{ {
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$params = array_only($body, ['identification', 'password']); $params = Arr::only($body, ['identification', 'password']);
$response = $this->apiClient->send(CreateTokenController::class, $actor, [], $params); $response = $this->apiClient->send(CreateTokenController::class, $actor, [], $params);
@ -79,7 +80,7 @@ class LogInController implements RequestHandlerInterface
event(new LoggedIn($this->users->findOrFail($data->userId), $token)); event(new LoggedIn($this->users->findOrFail($data->userId), $token));
if (array_get($body, 'remember')) { if (Arr::get($body, 'remember')) {
$response = $this->rememberer->remember($response, $token); $response = $this->rememberer->remember($response, $token);
} }
} }

View File

@ -20,6 +20,7 @@ use Flarum\User\AssertPermissionTrait;
use Flarum\User\Event\LoggedOut; use Flarum\User\Event\LoggedOut;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -94,7 +95,7 @@ class LogOutController implements RequestHandlerInterface
$session = $request->getAttribute('session'); $session = $request->getAttribute('session');
$actor = $request->getAttribute('actor'); $actor = $request->getAttribute('actor');
$url = array_get($request->getQueryParams(), 'return', $this->app->url()); $url = Arr::get($request->getQueryParams(), 'return', $this->app->url());
// If there is no user logged in, return to the index. // If there is no user logged in, return to the index.
if ($actor->isGuest()) { if ($actor->isGuest()) {
@ -105,8 +106,8 @@ class LogOutController implements RequestHandlerInterface
// allow the user to press a button to complete the log out process. // allow the user to press a button to complete the log out process.
$csrfToken = $session->token(); $csrfToken = $session->token();
if (array_get($request->getQueryParams(), 'token') !== $csrfToken) { if (Arr::get($request->getQueryParams(), 'token') !== $csrfToken) {
$return = array_get($request->getQueryParams(), 'return'); $return = Arr::get($request->getQueryParams(), 'return');
$view = $this->view->make('flarum.forum::log-out') $view = $this->view->make('flarum.forum::log-out')
->with('url', $this->url->to('forum')->route('logout').'?token='.$csrfToken.($return ? '&return='.urlencode($return) : '')); ->with('url', $this->url->to('forum')->route('logout').'?token='.$csrfToken.($return ? '&return='.urlencode($return) : ''));

View File

@ -16,6 +16,7 @@ use Flarum\Http\Controller\AbstractHtmlController;
use Flarum\User\Exception\InvalidConfirmationTokenException; use Flarum\User\Exception\InvalidConfirmationTokenException;
use Flarum\User\PasswordToken; use Flarum\User\PasswordToken;
use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
class ResetPasswordController extends AbstractHtmlController class ResetPasswordController extends AbstractHtmlController
@ -40,7 +41,7 @@ class ResetPasswordController extends AbstractHtmlController
*/ */
public function render(Request $request) public function render(Request $request)
{ {
$token = array_get($request->getQueryParams(), 'token'); $token = Arr::get($request->getQueryParams(), 'token');
$token = PasswordToken::findOrFail($token); $token = PasswordToken::findOrFail($token);

View File

@ -18,6 +18,7 @@ use Flarum\User\PasswordToken;
use Flarum\User\UserValidator; use Flarum\User\UserValidator;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Contracts\Validation\Factory; use Illuminate\Contracts\Validation\Factory;
use Illuminate\Support\Arr;
use Illuminate\Support\MessageBag; use Illuminate\Support\MessageBag;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
@ -72,9 +73,9 @@ class SavePasswordController implements RequestHandlerInterface
{ {
$input = $request->getParsedBody(); $input = $request->getParsedBody();
$token = PasswordToken::findOrFail(array_get($input, 'passwordToken')); $token = PasswordToken::findOrFail(Arr::get($input, 'passwordToken'));
$password = array_get($input, 'password'); $password = Arr::get($input, 'password');
try { try {
// todo: probably shouldn't use the user validator for this, // todo: probably shouldn't use the user validator for this,

View File

@ -13,6 +13,7 @@ namespace Flarum\Foundation;
use Flarum\Foundation\Event\Validating; use Flarum\Foundation\Event\Validating;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\Arr;
use Illuminate\Validation\Factory; use Illuminate\Validation\Factory;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Symfony\Component\Translation\TranslatorInterface; use Symfony\Component\Translation\TranslatorInterface;
@ -89,7 +90,7 @@ abstract class AbstractValidator
*/ */
protected function makeValidator(array $attributes) protected function makeValidator(array $attributes)
{ {
$rules = array_only($this->getRules(), array_keys($attributes)); $rules = Arr::only($this->getRules(), array_keys($attributes));
$validator = $this->validator->make($attributes, $rules, $this->getMessages()); $validator = $this->validator->make($attributes, $rules, $this->getMessages());

View File

@ -127,7 +127,7 @@ class Application extends Container implements ApplicationContract
*/ */
public function config($key, $default = null) public function config($key, $default = null)
{ {
return array_get($this->make('flarum.config'), $key, $default); return Arr::get($this->make('flarum.config'), $key, $default);
} }
/** /**
@ -149,7 +149,7 @@ class Application extends Container implements ApplicationContract
public function url($path = null) public function url($path = null)
{ {
$config = $this->make('flarum.config'); $config = $this->make('flarum.config');
$url = array_get($config, 'url', array_get($_SERVER, 'REQUEST_URI')); $url = Arr::get($config, 'url', Arr::get($_SERVER, 'REQUEST_URI'));
if (is_array($url)) { if (is_array($url)) {
if (isset($url[$path])) { if (isset($url[$path])) {
@ -160,7 +160,7 @@ class Application extends Container implements ApplicationContract
} }
if ($path) { if ($path) {
$url .= '/'.array_get($config, "paths.$path", $path); $url .= '/'.Arr::get($config, "paths.$path", $path);
} }
return $url; return $url;

View File

@ -11,6 +11,7 @@
namespace Flarum\Foundation; namespace Flarum\Foundation;
use Illuminate\Support\Str;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -38,7 +39,7 @@ class MaintenanceModeHandler implements RequestHandlerInterface
private function isApiRequest(ServerRequestInterface $request): bool private function isApiRequest(ServerRequestInterface $request): bool
{ {
return str_contains( return Str::contains(
$request->getHeaderLine('Accept'), $request->getHeaderLine('Accept'),
'application/vnd.api+json' 'application/vnd.api+json'
); );

View File

@ -13,6 +13,7 @@ namespace Flarum\Frontend;
use Flarum\Frontend\Compiler\Source\SourceCollector; use Flarum\Frontend\Compiler\Source\SourceCollector;
use Flarum\Locale\LocaleManager; use Flarum\Locale\LocaleManager;
use Illuminate\Support\Arr;
class AddTranslations class AddTranslations
{ {
@ -56,7 +57,7 @@ class AddTranslations
{ {
$translations = $this->locales->getTranslator()->getCatalogue($locale)->all('messages'); $translations = $this->locales->getTranslator()->getCatalogue($locale)->all('messages');
return array_only( return Arr::only(
$translations, $translations,
array_filter(array_keys($translations), $this->filter) array_filter(array_keys($translations), $this->filter)
); );

View File

@ -14,6 +14,7 @@ namespace Flarum\Frontend\Compiler;
use Flarum\Frontend\Compiler\Source\SourceCollector; use Flarum\Frontend\Compiler\Source\SourceCollector;
use Flarum\Frontend\Compiler\Source\SourceInterface; use Flarum\Frontend\Compiler\Source\SourceInterface;
use Illuminate\Contracts\Filesystem\Filesystem; use Illuminate\Contracts\Filesystem\Filesystem;
use Illuminate\Support\Arr;
class RevisionCompiler implements CompilerInterface class RevisionCompiler implements CompilerInterface
{ {
@ -202,7 +203,7 @@ class RevisionCompiler implements CompilerInterface
if ($this->assetsDir->has(static::REV_MANIFEST)) { if ($this->assetsDir->has(static::REV_MANIFEST)) {
$manifest = json_decode($this->assetsDir->read(static::REV_MANIFEST), true); $manifest = json_decode($this->assetsDir->read(static::REV_MANIFEST), true);
return array_get($manifest, $this->filename); return Arr::get($manifest, $this->filename);
} }
return null; return null;

View File

@ -12,6 +12,7 @@
namespace Flarum\Frontend\Content; namespace Flarum\Frontend\Content;
use Flarum\Frontend\Document; use Flarum\Frontend\Document;
use Illuminate\Support\Arr;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
class Meta class Meta
@ -28,8 +29,8 @@ class Meta
$meta = [ $meta = [
'viewport' => 'width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1', 'viewport' => 'width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1',
'description' => array_get($forumApiDocument, 'data.attributes.description'), 'description' => Arr::get($forumApiDocument, 'data.attributes.description'),
'theme-color' => array_get($forumApiDocument, 'data.attributes.themePrimaryColor') 'theme-color' => Arr::get($forumApiDocument, 'data.attributes.themePrimaryColor')
]; ];
return $meta; return $meta;
@ -39,7 +40,7 @@ class Meta
{ {
$head = []; $head = [];
if ($faviconUrl = array_get($document->getForumApiDocument(), 'data.attributes.faviconUrl')) { if ($faviconUrl = Arr::get($document->getForumApiDocument(), 'data.attributes.faviconUrl')) {
$head['favicon'] = '<link rel="shortcut icon" href="'.e($faviconUrl).'">'; $head['favicon'] = '<link rel="shortcut icon" href="'.e($faviconUrl).'">';
} }

View File

@ -14,6 +14,7 @@ namespace Flarum\Frontend;
use Illuminate\Contracts\Support\Renderable; use Illuminate\Contracts\Support\Renderable;
use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View; use Illuminate\Contracts\View\View;
use Illuminate\Support\Arr;
/** /**
* A view which renders a HTML skeleton for Flarum's frontend app. * A view which renders a HTML skeleton for Flarum's frontend app.
@ -147,7 +148,7 @@ class Document implements Renderable
*/ */
public function render(): string public function render(): string
{ {
$this->view->share('forum', array_get($this->forumApiDocument, 'data.attributes')); $this->view->share('forum', Arr::get($this->forumApiDocument, 'data.attributes'));
return $this->makeView()->render(); return $this->makeView()->render();
} }
@ -174,7 +175,7 @@ class Document implements Renderable
*/ */
protected function makeTitle(): string protected function makeTitle(): string
{ {
return ($this->title ? $this->title.' - ' : '').array_get($this->forumApiDocument, 'data.attributes.title'); return ($this->title ? $this->title.' - ' : '').Arr::get($this->forumApiDocument, 'data.attributes.title');
} }
/** /**

View File

@ -17,6 +17,7 @@ use Flarum\Group\Group;
use Flarum\Group\GroupValidator; use Flarum\Group\GroupValidator;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\Arr;
class CreateGroupHandler class CreateGroupHandler
{ {
@ -51,10 +52,10 @@ class CreateGroupHandler
$this->assertCan($actor, 'createGroup'); $this->assertCan($actor, 'createGroup');
$group = Group::build( $group = Group::build(
array_get($data, 'attributes.nameSingular'), Arr::get($data, 'attributes.nameSingular'),
array_get($data, 'attributes.namePlural'), Arr::get($data, 'attributes.namePlural'),
array_get($data, 'attributes.color'), Arr::get($data, 'attributes.color'),
array_get($data, 'attributes.icon') Arr::get($data, 'attributes.icon')
); );
$this->events->dispatch( $this->events->dispatch(

View File

@ -19,6 +19,7 @@ use Flarum\Group\GroupValidator;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Flarum\User\Exception\PermissionDeniedException; use Flarum\User\Exception\PermissionDeniedException;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\Arr;
class EditGroupHandler class EditGroupHandler
{ {
@ -61,7 +62,7 @@ class EditGroupHandler
$this->assertCan($actor, 'edit', $group); $this->assertCan($actor, 'edit', $group);
$attributes = array_get($data, 'attributes', []); $attributes = Arr::get($data, 'attributes', []);
if (isset($attributes['nameSingular']) && isset($attributes['namePlural'])) { if (isset($attributes['nameSingular']) && isset($attributes['namePlural'])) {
$group->rename($attributes['nameSingular'], $attributes['namePlural']); $group->rename($attributes['nameSingular'], $attributes['namePlural']);

View File

@ -14,6 +14,7 @@ namespace Flarum\Http;
use Carbon\Carbon; use Carbon\Carbon;
use Flarum\Database\AbstractModel; use Flarum\Database\AbstractModel;
use Flarum\User\User; use Flarum\User\User;
use Illuminate\Support\Str;
/** /**
* @property string $token * @property string $token
@ -47,7 +48,7 @@ class AccessToken extends AbstractModel
{ {
$token = new static; $token = new static;
$token->token = str_random(40); $token->token = Str::random(40);
$token->user_id = $userId; $token->user_id = $userId;
$token->created_at = Carbon::now(); $token->created_at = Carbon::now();
$token->last_activity_at = Carbon::now(); $token->last_activity_at = Carbon::now();

View File

@ -13,6 +13,7 @@ namespace Flarum\Http;
use Dflydev\FigCookies\SetCookie; use Dflydev\FigCookies\SetCookie;
use Flarum\Foundation\Application; use Flarum\Foundation\Application;
use Illuminate\Support\Arr;
class CookieFactory class CookieFactory
{ {
@ -54,9 +55,9 @@ class CookieFactory
// Get the cookie settings from the config or use the default values // Get the cookie settings from the config or use the default values
$this->prefix = $app->config('cookie.name', 'flarum'); $this->prefix = $app->config('cookie.name', 'flarum');
$this->path = $app->config('cookie.path', array_get($url, 'path') ?: '/'); $this->path = $app->config('cookie.path', Arr::get($url, 'path') ?: '/');
$this->domain = $app->config('cookie.domain'); $this->domain = $app->config('cookie.domain');
$this->secure = $app->config('cookie.secure', array_get($url, 'scheme') === 'https'); $this->secure = $app->config('cookie.secure', Arr::get($url, 'scheme') === 'https');
} }
/** /**

View File

@ -14,6 +14,7 @@ namespace Flarum\Http\Middleware;
use Flarum\Api\ApiKey; use Flarum\Api\ApiKey;
use Flarum\Http\AccessToken; use Flarum\Http\AccessToken;
use Flarum\User\User; use Flarum\User\User;
use Illuminate\Support\Str;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\MiddlewareInterface as Middleware; use Psr\Http\Server\MiddlewareInterface as Middleware;
@ -29,7 +30,7 @@ class AuthenticateWithHeader implements Middleware
$parts = explode(';', $headerLine); $parts = explode(';', $headerLine);
if (isset($parts[0]) && starts_with($parts[0], self::TOKEN_PREFIX)) { if (isset($parts[0]) && Str::startsWith($parts[0], self::TOKEN_PREFIX)) {
$id = substr($parts[0], strlen(self::TOKEN_PREFIX)); $id = substr($parts[0], strlen(self::TOKEN_PREFIX));
if ($key = ApiKey::where('key', $id)->first()) { if ($key = ApiKey::where('key', $id)->first()) {

View File

@ -11,6 +11,7 @@
namespace Flarum\Http\Middleware; namespace Flarum\Http\Middleware;
use Illuminate\Support\Str;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\MiddlewareInterface as Middleware; use Psr\Http\Server\MiddlewareInterface as Middleware;
@ -20,7 +21,7 @@ class ParseJsonBody implements Middleware
{ {
public function process(Request $request, Handler $handler): Response public function process(Request $request, Handler $handler): Response
{ {
if (str_contains($request->getHeaderLine('content-type'), 'json')) { if (Str::contains($request->getHeaderLine('content-type'), 'json')) {
$input = json_decode($request->getBody(), true); $input = json_decode($request->getBody(), true);
$request = $request->withParsedBody($input ?: []); $request = $request->withParsedBody($input ?: []);

View File

@ -13,6 +13,7 @@ namespace Flarum\Http\Middleware;
use Flarum\Http\AccessToken; use Flarum\Http\AccessToken;
use Flarum\Http\CookieFactory; use Flarum\Http\CookieFactory;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\MiddlewareInterface as Middleware; use Psr\Http\Server\MiddlewareInterface as Middleware;
@ -35,7 +36,7 @@ class RememberFromCookie implements Middleware
public function process(Request $request, Handler $handler): Response public function process(Request $request, Handler $handler): Response
{ {
$id = array_get($request->getCookieParams(), $this->cookie->getName('remember')); $id = Arr::get($request->getCookieParams(), $this->cookie->getName('remember'));
if ($id) { if ($id) {
$token = AccessToken::find($id); $token = AccessToken::find($id);

View File

@ -12,6 +12,7 @@
namespace Flarum\Http\Middleware; namespace Flarum\Http\Middleware;
use Flarum\Locale\LocaleManager; use Flarum\Locale\LocaleManager;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\MiddlewareInterface as Middleware; use Psr\Http\Server\MiddlewareInterface as Middleware;
@ -39,7 +40,7 @@ class SetLocale implements Middleware
if ($actor->exists) { if ($actor->exists) {
$locale = $actor->getPreference('locale'); $locale = $actor->getPreference('locale');
} else { } else {
$locale = array_get($request->getCookieParams(), 'locale'); $locale = Arr::get($request->getCookieParams(), 'locale');
} }
if ($locale && $this->locales->hasLocale($locale)) { if ($locale && $this->locales->hasLocale($locale)) {

View File

@ -16,6 +16,7 @@ use Flarum\Http\CookieFactory;
use Illuminate\Contracts\Config\Repository as ConfigRepository; use Illuminate\Contracts\Config\Repository as ConfigRepository;
use Illuminate\Contracts\Session\Session; use Illuminate\Contracts\Session\Session;
use Illuminate\Session\Store; use Illuminate\Session\Store;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\MiddlewareInterface as Middleware; use Psr\Http\Server\MiddlewareInterface as Middleware;
@ -72,7 +73,7 @@ class StartSession implements Middleware
return new Store( return new Store(
$this->config['cookie'], $this->config['cookie'],
$this->handler, $this->handler,
array_get($request->getCookieParams(), $this->cookie->getName($this->config['cookie'])) Arr::get($request->getCookieParams(), $this->cookie->getName($this->config['cookie']))
); );
} }

View File

@ -14,6 +14,7 @@ namespace Flarum\Install\Console;
use Flarum\Install\AdminUser; use Flarum\Install\AdminUser;
use Flarum\Install\DatabaseConfig; use Flarum\Install\DatabaseConfig;
use Flarum\Install\Installation; use Flarum\Install\Installation;
use Illuminate\Support\Str;
use Symfony\Component\Console\Helper\QuestionHelper; use Symfony\Component\Console\Helper\QuestionHelper;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
@ -51,7 +52,7 @@ class UserDataProvider implements DataProviderInterface
$host = $this->ask('Database host:'); $host = $this->ask('Database host:');
$port = 3306; $port = 3306;
if (str_contains($host, ':')) { if (Str::contains($host, ':')) {
list($host, $port) = explode(':', $host, 2); list($host, $port) = explode(':', $host, 2);
} }

View File

@ -17,6 +17,8 @@ use Flarum\Install\DatabaseConfig;
use Flarum\Install\Installation; use Flarum\Install\Installation;
use Flarum\Install\StepFailed; use Flarum\Install\StepFailed;
use Flarum\Install\ValidationFailed; use Flarum\Install\ValidationFailed;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -60,9 +62,9 @@ class InstallController implements RequestHandlerInterface
->databaseConfig($this->makeDatabaseConfig($input)) ->databaseConfig($this->makeDatabaseConfig($input))
->adminUser($this->makeAdminUser($input)) ->adminUser($this->makeAdminUser($input))
->settings([ ->settings([
'forum_title' => array_get($input, 'forumTitle'), 'forum_title' => Arr::get($input, 'forumTitle'),
'mail_from' => 'noreply@'.preg_replace('/^www\./i', '', parse_url($baseUrl, PHP_URL_HOST)), 'mail_from' => 'noreply@'.preg_replace('/^www\./i', '', parse_url($baseUrl, PHP_URL_HOST)),
'welcome_title' => 'Welcome to '.array_get($input, 'forumTitle'), 'welcome_title' => 'Welcome to '.Arr::get($input, 'forumTitle'),
]) ])
->build(); ->build();
} catch (ValidationFailed $e) { } catch (ValidationFailed $e) {
@ -83,10 +85,10 @@ class InstallController implements RequestHandlerInterface
private function makeDatabaseConfig(array $input): DatabaseConfig private function makeDatabaseConfig(array $input): DatabaseConfig
{ {
$host = array_get($input, 'mysqlHost'); $host = Arr::get($input, 'mysqlHost');
$port = 3306; $port = 3306;
if (str_contains($host, ':')) { if (Str::contains($host, ':')) {
list($host, $port) = explode(':', $host, 2); list($host, $port) = explode(':', $host, 2);
} }
@ -94,10 +96,10 @@ class InstallController implements RequestHandlerInterface
'mysql', 'mysql',
$host, $host,
intval($port), intval($port),
array_get($input, 'mysqlDatabase'), Arr::get($input, 'mysqlDatabase'),
array_get($input, 'mysqlUsername'), Arr::get($input, 'mysqlUsername'),
array_get($input, 'mysqlPassword'), Arr::get($input, 'mysqlPassword'),
array_get($input, 'tablePrefix') Arr::get($input, 'tablePrefix')
); );
} }
@ -109,16 +111,16 @@ class InstallController implements RequestHandlerInterface
private function makeAdminUser(array $input): AdminUser private function makeAdminUser(array $input): AdminUser
{ {
return new AdminUser( return new AdminUser(
array_get($input, 'adminUsername'), Arr::get($input, 'adminUsername'),
$this->getConfirmedAdminPassword($input), $this->getConfirmedAdminPassword($input),
array_get($input, 'adminEmail') Arr::get($input, 'adminEmail')
); );
} }
private function getConfirmedAdminPassword(array $input): string private function getConfirmedAdminPassword(array $input): string
{ {
$password = array_get($input, 'adminPassword'); $password = Arr::get($input, 'adminPassword');
$confirmation = array_get($input, 'adminPasswordConfirmation'); $confirmation = Arr::get($input, 'adminPasswordConfirmation');
if ($password !== $confirmation) { if ($password !== $confirmation) {
throw new ValidationFailed('The admin password did not match its confirmation.'); throw new ValidationFailed('The admin password did not match its confirmation.');

View File

@ -15,6 +15,7 @@ use Flarum\Install\DatabaseConfig;
use Flarum\Install\Step; use Flarum\Install\Step;
use Illuminate\Database\Connectors\MySqlConnector; use Illuminate\Database\Connectors\MySqlConnector;
use Illuminate\Database\MySqlConnection; use Illuminate\Database\MySqlConnection;
use Illuminate\Support\Str;
use RangeException; use RangeException;
class ConnectToDatabase implements Step class ConnectToDatabase implements Step
@ -40,7 +41,7 @@ class ConnectToDatabase implements Step
$version = $pdo->query('SELECT VERSION()')->fetchColumn(); $version = $pdo->query('SELECT VERSION()')->fetchColumn();
if (str_contains($version, 'MariaDB')) { if (Str::contains($version, 'MariaDB')) {
if (version_compare($version, '10.0.5', '<')) { if (version_compare($version, '10.0.5', '<')) {
throw new RangeException('MariaDB version too low. You need at least MariaDB 10.0.5'); throw new RangeException('MariaDB version too low. You need at least MariaDB 10.0.5');
} }

View File

@ -11,6 +11,8 @@
namespace Flarum\Locale; namespace Flarum\Locale;
use Illuminate\Support\Arr;
class LocaleManager class LocaleManager
{ {
/** /**
@ -74,12 +76,12 @@ class LocaleManager
public function getJsFiles(string $locale): array public function getJsFiles(string $locale): array
{ {
$files = array_get($this->js, $locale, []); $files = Arr::get($this->js, $locale, []);
$parts = explode('-', $locale); $parts = explode('-', $locale);
if (count($parts) > 1) { if (count($parts) > 1) {
$files = array_merge(array_get($this->js, $parts[0], []), $files); $files = array_merge(Arr::get($this->js, $parts[0], []), $files);
} }
return $files; return $files;
@ -92,12 +94,12 @@ class LocaleManager
public function getCssFiles(string $locale): array public function getCssFiles(string $locale): array
{ {
$files = array_get($this->css, $locale, []); $files = Arr::get($this->css, $locale, []);
$parts = explode('-', $locale); $parts = explode('-', $locale);
if (count($parts) > 1) { if (count($parts) > 1) {
$files = array_merge(array_get($this->css, $parts[0], []), $files); $files = array_merge(Arr::get($this->css, $parts[0], []), $files);
} }
return $files; return $files;

View File

@ -16,6 +16,7 @@ use Flarum\Database\AbstractModel;
use Flarum\Event\ScopeModelVisibility; use Flarum\Event\ScopeModelVisibility;
use Flarum\User\User; use Flarum\User\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Arr;
/** /**
* Models a notification record in the database. * Models a notification record in the database.
@ -104,7 +105,7 @@ class Notification extends AbstractModel
*/ */
public function getSubjectModelAttribute() public function getSubjectModelAttribute()
{ {
return $this->type ? array_get(static::$subjectModels, $this->type) : null; return $this->type ? Arr::get(static::$subjectModels, $this->type) : null;
} }
/** /**

View File

@ -18,6 +18,7 @@ use Flarum\Post\PostRepository;
use Flarum\Post\PostValidator; use Flarum\Post\PostValidator;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\Arr;
class EditPostHandler class EditPostHandler
{ {
@ -59,7 +60,7 @@ class EditPostHandler
$post = $this->posts->findOrFail($command->postId, $actor); $post = $this->posts->findOrFail($command->postId, $actor);
if ($post instanceof CommentPost) { if ($post instanceof CommentPost) {
$attributes = array_get($data, 'attributes', []); $attributes = Arr::get($data, 'attributes', []);
if (isset($attributes['content'])) { if (isset($attributes['content'])) {
$this->assertCan($actor, 'edit', $post); $this->assertCan($actor, 'edit', $post);

View File

@ -20,6 +20,7 @@ use Flarum\Post\Event\Saving;
use Flarum\Post\PostValidator; use Flarum\Post\PostValidator;
use Flarum\User\AssertPermissionTrait; use Flarum\User\AssertPermissionTrait;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\Arr;
class PostReplyHandler class PostReplyHandler
{ {
@ -86,12 +87,12 @@ class PostReplyHandler
// opportunity to alter the post entity based on data in the command. // opportunity to alter the post entity based on data in the command.
$post = CommentPost::reply( $post = CommentPost::reply(
$discussion->id, $discussion->id,
array_get($command->data, 'attributes.content'), Arr::get($command->data, 'attributes.content'),
$actor->id, $actor->id,
$command->ipAddress $command->ipAddress
); );
if ($actor->isAdmin() && ($time = array_get($command->data, 'attributes.createdAt'))) { if ($actor->isAdmin() && ($time = Arr::get($command->data, 'attributes.createdAt'))) {
$post->created_at = new Carbon($time); $post->created_at = new Carbon($time);
} }

View File

@ -11,6 +11,8 @@
namespace Flarum\Search; namespace Flarum\Search;
use Illuminate\Support\Str;
trait ApplySearchParametersTrait trait ApplySearchParametersTrait
{ {
/** /**
@ -29,10 +31,10 @@ trait ApplySearchParametersTrait
foreach ($sort as $field => $order) { foreach ($sort as $field => $order) {
if (is_array($order)) { if (is_array($order)) {
foreach ($order as $value) { foreach ($order as $value) {
$search->getQuery()->orderByRaw(snake_case($field).' != ?', [$value]); $search->getQuery()->orderByRaw(Str::snake($field).' != ?', [$value]);
} }
} else { } else {
$search->getQuery()->orderBy(snake_case($field), $order); $search->getQuery()->orderBy(Str::snake($field), $order);
} }
} }
} }

View File

@ -11,6 +11,8 @@
namespace Flarum\Settings; namespace Flarum\Settings;
use Illuminate\Support\Arr;
class MemoryCacheSettingsRepository implements SettingsRepositoryInterface class MemoryCacheSettingsRepository implements SettingsRepositoryInterface
{ {
protected $inner; protected $inner;
@ -39,7 +41,7 @@ class MemoryCacheSettingsRepository implements SettingsRepositoryInterface
if (array_key_exists($key, $this->cache)) { if (array_key_exists($key, $this->cache)) {
return $this->cache[$key]; return $this->cache[$key];
} elseif (! $this->isCached) { } elseif (! $this->isCached) {
return array_get($this->all(), $key, $default); return Arr::get($this->all(), $key, $default);
} }
return $default; return $default;

View File

@ -11,6 +11,8 @@
namespace Flarum\Settings; namespace Flarum\Settings;
use Illuminate\Support\Arr;
/** /**
* A settings repository decorator that allows overriding certain values. * A settings repository decorator that allows overriding certain values.
* *
@ -46,7 +48,7 @@ class OverrideSettingsRepository implements SettingsRepositoryInterface
return $this->overrides[$key]; return $this->overrides[$key];
} }
return array_get($this->all(), $key, $default); return Arr::get($this->all(), $key, $default);
} }
public function set($key, $value) public function set($key, $value)

View File

@ -14,6 +14,7 @@ namespace Flarum\Update\Controller;
use Exception; use Exception;
use Flarum\Database\Console\MigrateCommand; use Flarum\Database\Console\MigrateCommand;
use Flarum\Foundation\Application; use Flarum\Foundation\Application;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Server\RequestHandlerInterface;
@ -49,7 +50,7 @@ class UpdateController implements RequestHandlerInterface
{ {
$input = $request->getParsedBody(); $input = $request->getParsedBody();
if (array_get($input, 'databasePassword') !== $this->app->config('database.password')) { if (Arr::get($input, 'databasePassword') !== $this->app->config('database.password')) {
return new HtmlResponse('Incorrect database password.', 500); return new HtmlResponse('Incorrect database password.', 500);
} }

View File

@ -19,6 +19,7 @@ use Flarum\User\User;
use Flarum\User\UserRepository; use Flarum\User\UserRepository;
use Flarum\User\UserValidator; use Flarum\User\UserValidator;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\Arr;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class EditUserHandler class EditUserHandler
@ -64,8 +65,8 @@ class EditUserHandler
$canEdit = $actor->can('edit', $user); $canEdit = $actor->can('edit', $user);
$isSelf = $actor->id === $user->id; $isSelf = $actor->id === $user->id;
$attributes = array_get($data, 'attributes', []); $attributes = Arr::get($data, 'attributes', []);
$relationships = array_get($data, 'relationships', []); $relationships = Arr::get($data, 'relationships', []);
$validate = []; $validate = [];
if (isset($attributes['username'])) { if (isset($attributes['username'])) {
@ -115,7 +116,7 @@ class EditUserHandler
$newGroupIds = []; $newGroupIds = [];
foreach ($relationships['groups']['data'] as $group) { foreach ($relationships['groups']['data'] as $group) {
if ($id = array_get($group, 'id')) { if ($id = Arr::get($group, 'id')) {
$newGroupIds[] = $id; $newGroupIds[] = $id;
} }
} }

View File

@ -22,6 +22,8 @@ use Flarum\User\RegistrationToken;
use Flarum\User\User; use Flarum\User\User;
use Flarum\User\UserValidator; use Flarum\User\UserValidator;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Intervention\Image\ImageManager; use Intervention\Image\ImageManager;
@ -75,19 +77,19 @@ class RegisterUserHandler
$this->assertAdmin($actor); $this->assertAdmin($actor);
} }
$password = array_get($data, 'attributes.password'); $password = Arr::get($data, 'attributes.password');
// If a valid authentication token was provided as an attribute, // If a valid authentication token was provided as an attribute,
// then we won't require the user to choose a password. // then we won't require the user to choose a password.
if (isset($data['attributes']['token'])) { if (isset($data['attributes']['token'])) {
$token = RegistrationToken::validOrFail($data['attributes']['token']); $token = RegistrationToken::validOrFail($data['attributes']['token']);
$password = $password ?: str_random(20); $password = $password ?: Str::random(20);
} }
$user = User::register( $user = User::register(
array_get($data, 'attributes.username'), Arr::get($data, 'attributes.username'),
array_get($data, 'attributes.email'), Arr::get($data, 'attributes.email'),
$password $password
); );
@ -95,7 +97,7 @@ class RegisterUserHandler
$this->applyToken($user, $token); $this->applyToken($user, $token);
} }
if ($actor->isAdmin() && array_get($data, 'attributes.isEmailConfirmed')) { if ($actor->isAdmin() && Arr::get($data, 'attributes.isEmailConfirmed')) {
$user->activate(); $user->activate();
} }

View File

@ -14,6 +14,7 @@ namespace Flarum\User;
use Carbon\Carbon; use Carbon\Carbon;
use Flarum\Database\AbstractModel; use Flarum\Database\AbstractModel;
use Flarum\User\Exception\InvalidConfirmationTokenException; use Flarum\User\Exception\InvalidConfirmationTokenException;
use Illuminate\Support\Str;
/** /**
* @property string $token * @property string $token
@ -54,7 +55,7 @@ class EmailToken extends AbstractModel
{ {
$token = new static; $token = new static;
$token->token = str_random(40); $token->token = Str::random(40);
$token->user_id = $userId; $token->user_id = $userId;
$token->email = $email; $token->email = $email;
$token->created_at = Carbon::now(); $token->created_at = Carbon::now();

View File

@ -13,6 +13,7 @@ namespace Flarum\User;
use Illuminate\Contracts\Auth\Access\Gate as GateContract; use Illuminate\Contracts\Auth\Access\Gate as GateContract;
use Illuminate\Contracts\Container\Container; use Illuminate\Contracts\Container\Container;
use Illuminate\Support\Str;
use InvalidArgumentException; use InvalidArgumentException;
/** /**
@ -98,7 +99,7 @@ class Gate implements GateContract
{ {
if (is_callable($callback)) { if (is_callable($callback)) {
$this->abilities[$ability] = $callback; $this->abilities[$ability] = $callback;
} elseif (is_string($callback) && str_contains($callback, '@')) { } elseif (is_string($callback) && Str::contains($callback, '@')) {
$this->abilities[$ability] = $this->buildAbilityCallback($callback); $this->abilities[$ability] = $this->buildAbilityCallback($callback);
} else { } else {
throw new InvalidArgumentException("Callback must be a callable or a 'Class@method' string."); throw new InvalidArgumentException("Callback must be a callable or a 'Class@method' string.");

View File

@ -13,6 +13,7 @@ namespace Flarum\User;
use Carbon\Carbon; use Carbon\Carbon;
use Flarum\Database\AbstractModel; use Flarum\Database\AbstractModel;
use Illuminate\Support\Str;
/** /**
* @property string $token * @property string $token
@ -50,7 +51,7 @@ class PasswordToken extends AbstractModel
{ {
$token = new static; $token = new static;
$token->token = str_random(40); $token->token = Str::random(40);
$token->user_id = $userId; $token->user_id = $userId;
$token->created_at = Carbon::now(); $token->created_at = Carbon::now();

View File

@ -14,6 +14,7 @@ namespace Flarum\User;
use Carbon\Carbon; use Carbon\Carbon;
use Flarum\Database\AbstractModel; use Flarum\Database\AbstractModel;
use Flarum\User\Exception\InvalidConfirmationTokenException; use Flarum\User\Exception\InvalidConfirmationTokenException;
use Illuminate\Support\Str;
/** /**
* @property string $token * @property string $token
@ -62,7 +63,7 @@ class RegistrationToken extends AbstractModel
{ {
$token = new static; $token = new static;
$token->token = str_random(40); $token->token = Str::random(40);
$token->provider = $provider; $token->provider = $provider;
$token->identifier = $identifier; $token->identifier = $identifier;
$token->user_attributes = $attributes; $token->user_attributes = $attributes;

View File

@ -14,6 +14,7 @@ namespace Flarum\User;
use Flarum\Group\Group; use Flarum\Group\Group;
use Flarum\User\Event\Saving; use Flarum\User\Event\Saving;
use Flarum\User\Exception\PermissionDeniedException; use Flarum\User\Exception\PermissionDeniedException;
use Illuminate\Support\Arr;
class SelfDemotionGuard class SelfDemotionGuard
{ {
@ -35,7 +36,7 @@ class SelfDemotionGuard
return; return;
} }
$groups = array_get($event->data, 'relationships.groups.data'); $groups = Arr::get($event->data, 'relationships.groups.data');
// If there is no group data (not even an empty array), this means // If there is no group data (not even an empty array), this means
// groups were not changed (and thus not removed) - we're fine! // groups were not changed (and thus not removed) - we're fine!

View File

@ -37,6 +37,7 @@ use Flarum\User\Event\Registered;
use Flarum\User\Event\Renamed; use Flarum\User\Event\Renamed;
use Illuminate\Contracts\Hashing\Hasher; use Illuminate\Contracts\Hashing\Hasher;
use Illuminate\Contracts\Session\Session; use Illuminate\Contracts\Session\Session;
use Illuminate\Support\Arr;
/** /**
* @property int $id * @property int $id
@ -460,7 +461,7 @@ class User extends AbstractModel
return $value['default']; return $value['default'];
}, static::$preferences); }, static::$preferences);
$user = array_only((array) json_decode($value, true), array_keys(static::$preferences)); $user = Arr::only((array) json_decode($value, true), array_keys(static::$preferences));
return array_merge($defaults, $user); return array_merge($defaults, $user);
} }
@ -508,7 +509,7 @@ class User extends AbstractModel
*/ */
public function getPreference($key, $default = null) public function getPreference($key, $default = null)
{ {
return array_get($this->preferences, $key, $default); return Arr::get($this->preferences, $key, $default);
} }
/** /**