[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
v1
/
lib
/
pkp
/
classes
/
core
/
[
Home
]
File: EventServiceProvider.php
<?php /** * @file classes/core/EventServiceProvider.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2000-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class EventServiceProvider * * @ingroup core * * @brief Registers Events Service Provider and boots data on events and their listeners */ namespace PKP\core; use DateInterval; use Illuminate\Foundation\Events\DiscoverEvents; use Illuminate\Foundation\Support\Providers\EventServiceProvider as LaravelEventServiceProvider; use Illuminate\Support\Facades\Cache; use SplFileInfo; class EventServiceProvider extends LaravelEventServiceProvider { /** Max lifetime for the event discovery cache */ protected const MAX_CACHE_LIFETIME = '1 day'; /** * @copydoc \Illuminate\Foundation\Support\Providers\EventServiceProvider::getEvents() */ public function getEvents() { $expiration = DateInterval::createFromDateString(static::MAX_CACHE_LIFETIME); $events = Cache::remember(static::getCacheKey(), $expiration, fn () => $this->discoveredEvents()); return array_merge_recursive( $events, $this->listens() ); } /** * @copydoc \Illuminate\Foundation\Support\Providers\EventServiceProvider::shouldDiscoverEvents() */ public function shouldDiscoverEvents() { return true; } /** * @copydoc \Illuminate\Foundation\Support\Providers\EventServiceProvider::discoverEvents() */ public function discoverEvents() { // Adapt classes naming convention $discoverEvents = new class () extends DiscoverEvents { /** * @copydoc \Illuminate\Foundation\Events\DiscoverEvents::classFromFile() */ protected static function classFromFile(SplFileInfo $file, $basePath): string { return Core::classFromFile($file); } }; return collect($this->discoverEventsWithin()) ->reject(function ($directory) { return !is_dir($directory); }) ->reduce(function ($discovered, $directory) use ($discoverEvents) { return array_merge_recursive( $discovered, $discoverEvents::within($directory, base_path()) ); }, []); } /** * @copydoc \Illuminate\Foundation\Support\Providers\EventServiceProvider::discoverEventsWithin() */ protected function discoverEventsWithin() { return [ $this->app->basePath('lib/pkp/classes/observers/listeners'), $this->app->basePath('classes/observers/listeners'), ]; } /** * Clears the event cache */ public static function clearCache(): void { Cache::forget(static::getCacheKey()); } /** * Retrieves a unique and static key to store the event cache */ private static function getCacheKey(): string { return __METHOD__ . static::MAX_CACHE_LIFETIME; } }