'abwebdevelopers.imageresize::lang.plugin.name', 'description' => 'abwebdevelopers.imageresize::lang.plugin.description', 'author' => 'AB Web Developers', 'icon' => 'icon-file-image-o', 'homepage' => 'https://abweb.com.au' ]; } /** * @inheritDoc */ public function registerMarkupTags() { return [ 'filters' => [ 'resize' => function ($image, $width, $height = null, $options = []) { $resizer = new Resizer(); $width = ($width !== null) ? (int) $width : null; $height = ($height !== null) ? (int) $height : null; $options = ($options instanceof Arrayable) ? $options->toArray() : (array) $options; // If the given configuration has a permalink identifier then resize using it if (isset($options['permalink']) && strlen($options['permalink'])) { $resizer->preventDefaultImage(); $resizer->setImage((string) $image); return $resizer->resizePermalink($options['permalink'], $width, $height, $options)->permalink_url; } $resizer->setImage((string) $image); return $resizer->resize($width, $height, $options); }, 'modify' => function ($image, $options = []) { $resizer = new Resizer(); $width = null; $height = null; $options = ($options instanceof Arrayable) ? $options->toArray() : (array) $options; // If the given configuration has a permalink identifier then resize using it if (isset($options['permalink']) && strlen($options['permalink'])) { $resizer->preventDefaultImage(); $resizer->setImage((string) $image); return $resizer->resizePermalink($options['permalink'], $width, $height, $options)->permalink_url; } $resizer->setImage((string) $image); return $resizer->resize($width, $height, $options); }, 'filterHtmlImageResize' => function ($html, $width, $height = null, $options = []) { $html = (string) $html; $width = ($width !== null) ? (int) $width : null; $height = ($height !== null) ? (int) $height : null; $options = ($options instanceof Arrayable) ? $options->toArray() : (array) $options; return Resizer::parseFindReplaceImages($html, $width, $height, $options); }, 'filterHtmlImageModify' => function ($html, $options = []) { $html = (string) $html; $width = null; $height = null; $options = ($options instanceof Arrayable) ? $options->toArray() : (array) $options; return Resizer::parseFindReplaceImages($html, $width, $height, $options); } ] ]; } /** * @inheritDoc */ public function registerSettings() { return [ 'settings' => [ 'label' => 'abwebdevelopers.imageresize::lang.plugin.name', 'description' => 'Manage default settings for the Image Resizer plugin', 'category' => 'Content', 'icon' => 'icon-image', 'class' => 'ABWebDevelopers\ImageResize\Models\Settings', 'permissions' => ['abwebdevelopers.imageresize.access_settings'], 'order' => 500, 'keywords' => 'image resize resizing modify photo modifier' ] ]; } /** * @inheritDoc */ public function registerPermissions() { return [ 'abwebdevelopers.imageresize.access_settings' => ['tab' => 'abwebdevelopers.imageresize::lang.permissions.tab', 'label' => 'abwebdevelopers.imageresize::lang.permissions.access_settings'], ]; } /** * @inheritDoc */ public function boot() { Event::listen('backend.page.beforeDisplay', function ($controller, $action, $params) { if ($controller instanceof \System\Controllers\Settings) { // Check this is the settings page for this plugin: if ($params === ['abwebdevelopers', 'imageresize', 'settings']) { // Add CSS (minor patch) $controller->addCss('/plugins/abwebdevelopers/imageresize/assets/settings-patch.css'); } } }); Event::listen('cache:cleared', function () { $this->ifDatabaseExists(function () { if (Settings::cleanupOnCacheClear()) { if (App::runningInConsole()) { $output = new ConsoleOutput(); $output->writeln('Imagesizer: Deleting cached resized images...'); } Artisan::call('imageresize:clear'); if (App::runningInConsole()) { $output->writeln('Imagesizer: ' . Artisan::output() . ''); } } }); }); } /** * @inheritDoc */ public function register() { $this->registerConsoleCommand('imageresize:gc', ImageResizeGc::class); $this->registerConsoleCommand('imageresize:clear', ImageResizeClear::class); $this->registerConsoleCommand('imageresize:reset-permalink', ImageResizeResetPermalinks::class); } /** * @inheritDoc */ public function registerSchedule($schedule) { // This is throttled by your settings, it won't necessarily clear all images every 5 minutes $schedule->command('imageresize:gc')->everyFiveMinutes(); } /** * @inheritDoc */ public function registerReportWidgets() { return [ ImageResizeClearWidget::class => [ 'label' => 'Clear Image Resizer Cache', 'context' => 'dashboard', ], ]; } /** * Run the callback only if/when the database exists (and system_settings table exists). * * @param \Closure $callback * @return mixed */ public function ifDatabaseExists(\Closure $callback) { $canConnectToDatabase = false; try { // Test database connection (throw exception if no DB is configured yet) $canConnectToDatabase = DB::table('system_settings')->exists(); } catch (QueryException $e) { } if ($canConnectToDatabase) { return $callback(); } } }