From d40726a718ff26f7bdda557cda928991b0a568ec Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Sun, 29 Dec 2019 11:49:31 +0800 Subject: [PATCH] `App\Services\Filter` -> `Blessing\Filter` --- app/Http/Controllers/AdminController.php | 2 +- app/Http/Controllers/ClosetController.php | 2 +- app/Http/Controllers/PlayerController.php | 2 +- app/Http/Controllers/ReportController.php | 2 +- app/Http/Controllers/SkinlibController.php | 2 +- app/Http/Controllers/UserController.php | 2 +- app/Http/View/Composers/UserMenuComposer.php | 2 +- app/Http/View/Composers/UserPanelComposer.php | 2 +- app/Providers/AppServiceProvider.php | 1 - app/Services/Filter.php | 48 ---------------- composer.json | 1 + composer.lock | 55 +++++++++++++++++- tests/Fakes/Filter.php | 4 +- .../ControllersTest/PlayerControllerTest.php | 2 +- .../ControllersTest/ReportControllerTest.php | 2 +- .../ControllersTest/SkinlibControllerTest.php | 2 +- .../ControllersTest/UserControllerTest.php | 2 +- tests/ServicesTest/FilterTest.php | 56 ------------------- 18 files changed, 69 insertions(+), 120 deletions(-) delete mode 100644 app/Services/Filter.php delete mode 100644 tests/ServicesTest/FilterTest.php diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 94337db8..6e152061 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -7,10 +7,10 @@ use App\Models\Texture; use App\Models\User; use App\Notifications; use App\Rules; -use App\Services\Filter; use App\Services\OptionForm; use App\Services\PluginManager; use Auth; +use Blessing\Filter; use Cache; use Carbon\Carbon; use Illuminate\Filesystem\Filesystem; diff --git a/app/Http/Controllers/ClosetController.php b/app/Http/Controllers/ClosetController.php index 78acc2d3..cc70e8f9 100644 --- a/app/Http/Controllers/ClosetController.php +++ b/app/Http/Controllers/ClosetController.php @@ -4,8 +4,8 @@ namespace App\Http\Controllers; use App\Models\Texture; use App\Models\User; -use App\Services\Filter; use Auth; +use Blessing\Filter; use Illuminate\Http\Request; class ClosetController extends Controller diff --git a/app/Http/Controllers/PlayerController.php b/app/Http/Controllers/PlayerController.php index 847fdead..9aa2631e 100644 --- a/app/Http/Controllers/PlayerController.php +++ b/app/Http/Controllers/PlayerController.php @@ -12,9 +12,9 @@ use App\Http\Middleware\CheckPlayerOwner; use App\Models\Player; use App\Models\Texture; use App\Rules; -use App\Services\Filter; use App\Services\Rejection; use Auth; +use Blessing\Filter; use Event; use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Http\Request; diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php index 5b1849f3..31960fd7 100644 --- a/app/Http/Controllers/ReportController.php +++ b/app/Http/Controllers/ReportController.php @@ -5,8 +5,8 @@ namespace App\Http\Controllers; use App\Models\Report; use App\Models\Texture; use App\Models\User; -use App\Services\Filter; use App\Services\Rejection; +use Blessing\Filter; use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Http\Request; use Illuminate\Validation\Rule; diff --git a/app/Http/Controllers/SkinlibController.php b/app/Http/Controllers/SkinlibController.php index 017e48f4..17fdda21 100644 --- a/app/Http/Controllers/SkinlibController.php +++ b/app/Http/Controllers/SkinlibController.php @@ -5,8 +5,8 @@ namespace App\Http\Controllers; use App\Models\Player; use App\Models\Texture; use App\Models\User; -use App\Services\Filter; use Auth; +use Blessing\Filter; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Option; diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 4cef841d..0c33f167 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -6,9 +6,9 @@ use App\Events\UserProfileUpdated; use App\Mail\EmailVerification; use App\Models\Texture; use App\Models\User; -use App\Services\Filter; use App\Services\Rejection; use Auth; +use Blessing\Filter; use Carbon\Carbon; use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Http\Request; diff --git a/app/Http/View/Composers/UserMenuComposer.php b/app/Http/View/Composers/UserMenuComposer.php index 635e4470..68a51bd2 100644 --- a/app/Http/View/Composers/UserMenuComposer.php +++ b/app/Http/View/Composers/UserMenuComposer.php @@ -2,7 +2,7 @@ namespace App\Http\View\Composers; -use App\Services\Filter; +use Blessing\Filter; use Illuminate\Http\Request; use Illuminate\View\View; diff --git a/app/Http/View/Composers/UserPanelComposer.php b/app/Http/View/Composers/UserPanelComposer.php index 64959c11..7b8c422a 100644 --- a/app/Http/View/Composers/UserPanelComposer.php +++ b/app/Http/View/Composers/UserPanelComposer.php @@ -2,7 +2,7 @@ namespace App\Http\View\Composers; -use App\Services\Filter; +use Blessing\Filter; use Illuminate\Contracts\Events\Dispatcher; use Illuminate\View\View; diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ef3c8f23..0c912792 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -20,7 +20,6 @@ class AppServiceProvider extends ServiceProvider $this->app->singleton(Services\Option::class); $this->app->alias(Services\Option::class, 'options'); $this->app->singleton(Services\Webpack::class); - $this->app->singleton(Services\Filter::class); $this->app->singleton('oauth.providers', function () { return new \Illuminate\Support\Collection(); }); diff --git a/app/Services/Filter.php b/app/Services/Filter.php deleted file mode 100644 index 36095a03..00000000 --- a/app/Services/Filter.php +++ /dev/null @@ -1,48 +0,0 @@ -listeners[$hook])) { - $this->listeners[$hook] = collect(); - } - - $this->listeners[$hook]->push([ - 'callback' => $callback, - 'priority' => $priority, - ]); - } - - public function apply(string $hook, $init, $args = []) - { - $listeners = $this->getListeners($hook); - if ($listeners->isNotEmpty()) { - return $this->listeners[$hook] - ->sortBy('priority') - ->reduce(function ($carry, $item) use ($args) { - return call_user_func($item['callback'], $carry, ...$args); - }, $init); - } else { - return $init; - } - } - - public function remove(string $hook) - { - unset($this->listeners[$hook]); - } - - public function getListeners(string $hook): Collection - { - return Arr::get($this->listeners, $hook, collect()); - } -} diff --git a/composer.json b/composer.json index 73c98cde..b163928c 100644 --- a/composer.json +++ b/composer.json @@ -13,6 +13,7 @@ "ext-tokenizer": "*", "ext-xml": "*", "ext-zip": "*", + "blessing/filter": "^1.0", "composer/ca-bundle": "^1.2", "composer/semver": "^1.4", "doctrine/dbal": "^2.9", diff --git a/composer.lock b/composer.lock index 6e519b70..2354a740 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,61 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7941921d4db971b81f1b97420c1831a6", + "content-hash": "3a91095a48c06e8fc97341f7e0f8ad9e", "packages": [ + { + "name": "blessing/filter", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/bs-community/filter.git", + "reference": "ce6227b621cbf071d89214ab5bebcb1fcf797fcd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bs-community/filter/zipball/ce6227b621cbf071d89214ab5bebcb1fcf797fcd", + "reference": "ce6227b621cbf071d89214ab5bebcb1fcf797fcd", + "shasum": "" + }, + "require": { + "illuminate/contracts": "6.*", + "illuminate/support": "6.*" + }, + "require-dev": { + "illuminate/container": "6.*", + "phpunit/phpunit": "~8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Blessing\\FilterServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Blessing\\": "src/Blessing" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pig Fang", + "email": "g-plane@hotmail.com" + } + ], + "description": "Filters API for designing plugin system.", + "keywords": [ + "filters", + "laravel", + "wordpress" + ], + "time": "2019-12-27T15:01:44+00:00" + }, { "name": "composer/ca-bundle", "version": "1.2.5", diff --git a/tests/Fakes/Filter.php b/tests/Fakes/Filter.php index 79961adc..875613ee 100644 --- a/tests/Fakes/Filter.php +++ b/tests/Fakes/Filter.php @@ -2,7 +2,7 @@ namespace Tests\Fakes; -use App\Services\Filter as BaseFilter; +use Blessing\Filter as BaseFilter; use PHPUnit\Framework\Assert; class Filter extends BaseFilter @@ -18,7 +18,7 @@ class Filter extends BaseFilter public static function fake(): Filter { - $fake = new self(); + $fake = resolve(Filter::class); app()->instance(BaseFilter::class, $fake); diff --git a/tests/HttpTest/ControllersTest/PlayerControllerTest.php b/tests/HttpTest/ControllersTest/PlayerControllerTest.php index f29202b9..1acd15e8 100644 --- a/tests/HttpTest/ControllersTest/PlayerControllerTest.php +++ b/tests/HttpTest/ControllersTest/PlayerControllerTest.php @@ -6,8 +6,8 @@ use App\Events; use App\Models\Player; use App\Models\Texture; use App\Models\User; -use App\Services\Filter; use App\Services\Rejection; +use Blessing\Filter; use Event; use Illuminate\Foundation\Testing\DatabaseTransactions; diff --git a/tests/HttpTest/ControllersTest/ReportControllerTest.php b/tests/HttpTest/ControllersTest/ReportControllerTest.php index ecccb845..d924a0b4 100644 --- a/tests/HttpTest/ControllersTest/ReportControllerTest.php +++ b/tests/HttpTest/ControllersTest/ReportControllerTest.php @@ -5,8 +5,8 @@ namespace Tests; use App\Models\Report; use App\Models\Texture; use App\Models\User; -use App\Services\Filter; use App\Services\Rejection; +use Blessing\Filter; use Event; use Illuminate\Foundation\Testing\DatabaseTransactions; diff --git a/tests/HttpTest/ControllersTest/SkinlibControllerTest.php b/tests/HttpTest/ControllersTest/SkinlibControllerTest.php index 79ec60ba..8a673402 100644 --- a/tests/HttpTest/ControllersTest/SkinlibControllerTest.php +++ b/tests/HttpTest/ControllersTest/SkinlibControllerTest.php @@ -5,7 +5,7 @@ namespace Tests; use App\Models\Player; use App\Models\Texture; use App\Models\User; -use App\Services\Filter; +use Blessing\Filter; use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Storage; diff --git a/tests/HttpTest/ControllersTest/UserControllerTest.php b/tests/HttpTest/ControllersTest/UserControllerTest.php index 8d9e60ea..0ae5a380 100644 --- a/tests/HttpTest/ControllersTest/UserControllerTest.php +++ b/tests/HttpTest/ControllersTest/UserControllerTest.php @@ -6,8 +6,8 @@ use App\Events; use App\Mail\EmailVerification; use App\Models\User; use App\Notifications; -use App\Services\Filter; use App\Services\Rejection; +use Blessing\Filter; use Carbon\Carbon; use Event; use Illuminate\Foundation\Testing\DatabaseTransactions; diff --git a/tests/ServicesTest/FilterTest.php b/tests/ServicesTest/FilterTest.php deleted file mode 100644 index 13b58865..00000000 --- a/tests/ServicesTest/FilterTest.php +++ /dev/null @@ -1,56 +0,0 @@ -add('hook', function () { - }); - $filter->add('hook', function () { - }, 10); - $this->assertCount(2, $filter->getListeners('hook')); - } - - public function testApply() - { - $filter = new Filter(); - $this->assertEquals('value', $filter->apply('hook', 'value', ['add'])); - - $filter->add('hook', function ($value, $addition) { - $this->assertEquals('add', $addition); - - return $value.'_medium'; - }); - $filter->add('hook', function ($value) { - return $value.'_low'; - }, 10); - $filter->add('hook', function ($value) { - return $value.'_high'; - }, 30); - $this->assertEquals('value_low_medium_high', $filter->apply('hook', 'value', ['add'])); - } - - public function testRemove() - { - $filter = new Filter(); - $filter->remove('hook'); - $this->assertCount(0, $filter->getListeners('hook')); - - $filter->add('hook', function () { - }); - $this->assertCount(1, $filter->getListeners('hook')); - $filter->remove('hook'); - $this->assertCount(0, $filter->getListeners('hook')); - } - - public function testGetListeners() - { - $filter = new Filter(); - $this->assertCount(0, $filter->getListeners('hook')); - } -}