From 5c042ae0ab4f79b4570388eb260043fe0d8b6c80 Mon Sep 17 00:00:00 2001 From: printempw Date: Sat, 29 Oct 2016 18:54:10 +0800 Subject: [PATCH] separate cache logic from core --- ...igureWebRoutes.php => ConfigureRoutes.php} | 2 +- app/Listeners/.gitkeep | 0 app/Listeners/CacheAvatarPreview.php | 35 ----------- app/Listeners/CachePlayerExists.php | 38 ------------ app/Listeners/CachePlayerJson.php | 31 ---------- app/Listeners/CacheSkinPreview.php | 41 ------------- app/Listeners/FreshNotFoundCache.php | 26 -------- app/Listeners/FreshPlayerJson.php | 33 ---------- app/Providers/EventServiceProvider.php | 19 +----- app/Providers/RouteServiceProvider.php | 6 +- app/Services/Hook.php | 60 +++++++++++++++++++ resources/views/admin/plugins.tpl | 3 - storage/cache/avatar/.gitignore | 3 - storage/cache/json/.gitignore | 3 - storage/cache/notfound/.gitignore | 3 - storage/cache/preview/.gitignore | 3 - 16 files changed, 64 insertions(+), 242 deletions(-) rename app/Events/{ConfigureWebRoutes.php => ConfigureRoutes.php} (86%) delete mode 100644 app/Listeners/.gitkeep delete mode 100644 app/Listeners/CacheAvatarPreview.php delete mode 100644 app/Listeners/CachePlayerExists.php delete mode 100644 app/Listeners/CachePlayerJson.php delete mode 100644 app/Listeners/CacheSkinPreview.php delete mode 100644 app/Listeners/FreshNotFoundCache.php delete mode 100644 app/Listeners/FreshPlayerJson.php create mode 100644 app/Services/Hook.php delete mode 100644 storage/cache/avatar/.gitignore delete mode 100644 storage/cache/json/.gitignore delete mode 100644 storage/cache/notfound/.gitignore delete mode 100644 storage/cache/preview/.gitignore diff --git a/app/Events/ConfigureWebRoutes.php b/app/Events/ConfigureRoutes.php similarity index 86% rename from app/Events/ConfigureWebRoutes.php rename to app/Events/ConfigureRoutes.php index 919d2f95..2dfc76dc 100644 --- a/app/Events/ConfigureWebRoutes.php +++ b/app/Events/ConfigureRoutes.php @@ -4,7 +4,7 @@ namespace App\Events; use Illuminate\Routing\Router; -class ConfigureWebRoutes extends Event +class ConfigureRoutes extends Event { public $router; diff --git a/app/Listeners/.gitkeep b/app/Listeners/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/app/Listeners/CacheAvatarPreview.php b/app/Listeners/CacheAvatarPreview.php deleted file mode 100644 index 89ff01a0..00000000 --- a/app/Listeners/CacheAvatarPreview.php +++ /dev/null @@ -1,35 +0,0 @@ -texture->tid; - $hash = $event->texture->hash; - $size = $event->size; - - $path = BASE_DIR."/storage/textures/$hash"; - - if (!Storage::disk('cache')->has("avatar/$tid-$size")) { - $png = \Minecraft::generateAvatarFromSkin($path, $event->size); - imagepng($png, BASE_DIR."/storage/cache/avatar/$tid-$size"); - imagedestroy($png); - } - - return \Response::png(Storage::disk('cache')->get("avatar/$tid-$size")); - } -} diff --git a/app/Listeners/CachePlayerExists.php b/app/Listeners/CachePlayerExists.php deleted file mode 100644 index 39c7fad4..00000000 --- a/app/Listeners/CachePlayerExists.php +++ /dev/null @@ -1,38 +0,0 @@ -player_name; - - if ($player_name && !Storage::disk('cache')->has("notfound/$player_name")) { - if (Player::where('player_name', $player_name)->get()->isEmpty()) { - Storage::disk('cache')->put("notfound/$player_name", ''); - } - } else { - if (option('return_200_when_notfound') == "1") { - return json([ - 'player_name' => $player_name, - 'message' => 'Player Not Found.' - ]); - } else { - abort(404, trans('general.unexistent-player')); - } - } - } -} diff --git a/app/Listeners/CachePlayerJson.php b/app/Listeners/CachePlayerJson.php deleted file mode 100644 index 009cc42f..00000000 --- a/app/Listeners/CachePlayerJson.php +++ /dev/null @@ -1,31 +0,0 @@ -player; - $api_type = $event->api_type; - - $filename = "json/{$player->pid}-{$api_type}"; - - if (!Storage::disk('cache')->has($filename)) { - Storage::disk('cache')->put($filename, $player->generateJsonProfile($api_type)); - } - - return Storage::disk('cache')->get($filename); - } -} diff --git a/app/Listeners/CacheSkinPreview.php b/app/Listeners/CacheSkinPreview.php deleted file mode 100644 index 34d0aada..00000000 --- a/app/Listeners/CacheSkinPreview.php +++ /dev/null @@ -1,41 +0,0 @@ -texture->tid; - $size = $event->size; - - if (!Storage::disk('cache')->has("preview/$tid-$size")) { - $filename = BASE_DIR."/storage/textures/{$event->texture->hash}"; - - if ($event->texture->type == "cape") { - $png = \Minecraft::generatePreviewFromCape($filename, $event->size); - imagepng($png, BASE_DIR."/storage/cache/preview/$tid-$size"); - imagedestroy($png); - } else { - $png = \Minecraft::generatePreviewFromSkin($filename, $event->size); - imagepng($png, BASE_DIR."/storage/cache/preview/$tid-$size"); - imagedestroy($png); - } - } - - return \Response::png(Storage::disk('cache')->get("preview/$tid-$size"), 200, [ - 'Last-Modified' => Storage::disk('cache')->lastModified("preview/$tid-$size") - ]); - } -} diff --git a/app/Listeners/FreshNotFoundCache.php b/app/Listeners/FreshNotFoundCache.php deleted file mode 100644 index eade16e8..00000000 --- a/app/Listeners/FreshNotFoundCache.php +++ /dev/null @@ -1,26 +0,0 @@ -player->player_name; - - if ($player_name && Storage::disk('cache')->has("notfound/$player_name")) { - Storage::disk('cache')->delete("notfound/$player_name", ''); - } - } -} diff --git a/app/Listeners/FreshPlayerJson.php b/app/Listeners/FreshPlayerJson.php deleted file mode 100644 index b11b3c61..00000000 --- a/app/Listeners/FreshPlayerJson.php +++ /dev/null @@ -1,33 +0,0 @@ -player; - - $files = [ - "json/{$player->pid}-0", - "json/{$player->pid}-1" - ]; - - foreach ($files as $file) { - if (Storage::disk('cache')->has($file)) { - Storage::disk('cache')->delete($file); - } - } - } -} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 2e8a625c..b5b9f856 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -13,24 +13,7 @@ class EventServiceProvider extends ServiceProvider * @var array */ protected $listen = [ - 'App\Events\GetSkinPreview' => [ - 'App\Listeners\CacheSkinPreview', - ], - 'App\Events\GetAvatarPreview' => [ - 'App\Listeners\CacheAvatarPreview', - ], - 'App\Events\GetPlayerJson' => [ - 'App\Listeners\CachePlayerJson', - ], - 'App\Events\PlayerProfileUpdated' => [ - 'App\Listeners\FreshPlayerJson', - ], - 'App\Events\CheckPlayerExists' => [ - 'App\Listeners\CachePlayerExists', - ], - 'App\Events\PlayerWasAdded' => [ - 'App\Listeners\FreshNotFoundCache', - ], + // ]; /** diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 081dee40..82eee205 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -3,7 +3,7 @@ namespace App\Providers; use Illuminate\Routing\Router; -use App\Events\ConfigureWebRoutes; +use App\Events\ConfigureRoutes; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; class RouteServiceProvider extends ServiceProvider @@ -42,7 +42,7 @@ class RouteServiceProvider extends ServiceProvider $this->mapWebRoutes($router); - // + event(new ConfigureRoutes($router)); } /** @@ -61,8 +61,6 @@ class RouteServiceProvider extends ServiceProvider ], function ($router) { require app_path('Http/Routes/web.php'); }); - - event(new ConfigureWebRoutes($router)); } /** diff --git a/app/Services/Hook.php b/app/Services/Hook.php new file mode 100644 index 00000000..5e762001 --- /dev/null +++ b/app/Services/Hook.php @@ -0,0 +1,60 @@ + 'Title', # will be translated by translator + * 'link' => 'user/config', # route link + * 'icon' => 'fa-book' # font-awesome icon + * ] + * @return void + */ + public static function addMenuItem($category, $position, array $menu) + { + Event::listen(ConfigureUserMenu::class, function ($event) use ($menu, $position) + { + $new = []; + + $offset = 0; + foreach ($event->menu['user'] as $item) { + // push new menu items at the given position + if ($offset == $position) { + $new[] = $menu; + } + + $new[] = $item; + $offset++; + } + + $event->menu['user'] = $new; + }); + } + + /** + * Add a route. A router instance will be passed to the given callback. + * + * @param Closure $callback + */ + public static function addRoute(Closure $callback) + { + Event::listen(ConfigureRoutes::class, function($event) use ($callback) + { + return call_user_func($callback, $event->router); + }); + } +} diff --git a/resources/views/admin/plugins.tpl b/resources/views/admin/plugins.tpl index aa50e12e..d074b393 100644 --- a/resources/views/admin/plugins.tpl +++ b/resources/views/admin/plugins.tpl @@ -99,9 +99,6 @@ @section('script')