mirror of
https://github.com/getgrav/grav.git
synced 2025-02-20 19:56:53 +01:00
Improved onPageFallBackUrl event
This commit is contained in:
parent
d15542e553
commit
47d7927bac
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
1. [](#improved)
|
||||
* Improved `Utils::download()` method to allow overrides on download name, mime and expires header
|
||||
* Improved `onPageFallBackUrl` event
|
||||
3. [](#bugfix)
|
||||
* Fixed CLI `--env` and `--lang` options having no effect if they aren't added before all the other options
|
||||
|
||||
|
|
|
|||
|
|
@ -729,18 +729,36 @@ class Grav extends Container
|
|||
*/
|
||||
public function fallbackUrl($path)
|
||||
{
|
||||
$this->fireEvent('onPageFallBackUrl');
|
||||
|
||||
/** @var Uri $uri */
|
||||
$uri = $this['uri'];
|
||||
|
||||
/** @var Config $config */
|
||||
$config = $this['config'];
|
||||
|
||||
$path_parts = pathinfo($path);
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = $this['pages'];
|
||||
$page = $pages->find($path_parts['dirname'], true);
|
||||
|
||||
$uri_extension = strtolower($uri->extension() ?? '');
|
||||
$fallback_types = $config->get('system.media.allowed_fallback_types', null);
|
||||
$fallback_types = $config->get('system.media.allowed_fallback_types');
|
||||
$supported_types = $config->get('media.types');
|
||||
|
||||
$parsed_url = parse_url(rawurldecode($uri->basename()));
|
||||
$media_file = $parsed_url['path'];
|
||||
|
||||
$event = new Event([
|
||||
'uri' => $uri,
|
||||
'page' => &$page,
|
||||
'filename' => &$media_file,
|
||||
'extension' => $uri_extension,
|
||||
'allowed_fallback_types' => &$fallback_types,
|
||||
'media_types' => &$supported_types
|
||||
]);
|
||||
|
||||
$this->fireEvent('onPageFallBackUrl', $event);
|
||||
|
||||
// Check whitelist first, then ensure extension is a valid media type
|
||||
if (!empty($fallback_types) && !in_array($uri_extension, $fallback_types, true)) {
|
||||
return false;
|
||||
|
|
@ -749,16 +767,8 @@ class Grav extends Container
|
|||
return false;
|
||||
}
|
||||
|
||||
$path_parts = pathinfo($path);
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = $this['pages'];
|
||||
$page = $pages->find($path_parts['dirname'], true);
|
||||
|
||||
if ($page) {
|
||||
$media = $page->media()->all();
|
||||
$parsed_url = parse_url(rawurldecode($uri->basename()));
|
||||
$media_file = $parsed_url['path'];
|
||||
|
||||
// if this is a media object, try actions first
|
||||
if (isset($media[$media_file])) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user