You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.9 KiB
63 lines
1.9 KiB
<?php |
|
|
|
/* |
|
* This file is part of justoverclock/users-map-location. |
|
* |
|
* Copyright (c) 2022 Marco Colia. |
|
* |
|
* For the full copyright and license information, please view the LICENSE.md |
|
* file that was distributed with this source code. |
|
*/ |
|
|
|
namespace Justoverclock\UsersMapLocation; |
|
|
|
|
|
use Justoverclock\UsersMapLocation\Listeners\SaveLocationToDatabase; |
|
use Justoverclock\UsersMapLocation\Listeners\AddLocationAttribute; |
|
use Flarum\Api\Serializer\UserSerializer; |
|
use Flarum\Extend; |
|
use Flarum\User\Event\Saving; |
|
use Flarum\Api\Event\Serializing; |
|
use Flarum\User\Filter\UserFilterer; |
|
use Flarum\Filter\FilterState; |
|
use Flarum\Query\QueryCriteria; |
|
|
|
class UserLocationFilterMutator |
|
{ |
|
public function __invoke(FilterState $filterState, QueryCriteria $queryCriteria) |
|
{ |
|
if($queryCriteria->mustHaveLocation) |
|
{ |
|
$filterState->getQuery()->where('location_latitude', '!=', 'null'); |
|
} |
|
} |
|
} |
|
|
|
return [ |
|
(new Extend\Frontend('forum')) |
|
->js(__DIR__.'/js/dist/forum.js') |
|
->css(__DIR__.'/js/dist/forum.less'), |
|
|
|
(new Extend\Frontend('admin')) |
|
->js(__DIR__.'/js/dist/admin.js') |
|
->css(__DIR__.'/less/admin.less'), |
|
|
|
new Extend\Locales(__DIR__.'/locale'), |
|
|
|
(new Extend\Event()) |
|
->listen(Saving::class, SaveLocationToDatabase::class), |
|
|
|
(new Extend\ApiSerializer(UserSerializer::class)) |
|
->attributes(AddLocationAttribute::class), |
|
|
|
(new Extend\Settings)->serializeToForum('justoverclock-users-map-location.mapBox-api-key', 'justoverclock-users-map-location.mapBox-api-key'), |
|
|
|
(new Extend\Frontend('forum')) |
|
->route('/global-map', 'justoverclock.global-map'), |
|
|
|
(new Extend\Filter(UserFilterer::class)) |
|
->addFilterMutator(UserLocationFilterMutator::class), |
|
|
|
(new Extend\Routes('api')) |
|
->get('/user-locations', 'user-locations.index', Api\Controller\ListUserLocationsController::class) |
|
];
|
|
|