From 85aa55fabfdbca9fe35caaa8a8764ad3e638c445 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 20 Apr 2022 21:44:12 +0300 Subject: [PATCH] Media: Prevent fatal error if object doesn't exist (pt 2) --- .../Grav/Common/Media/Traits/MediaTrait.php | 53 ++++++++++--------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/system/src/Grav/Common/Media/Traits/MediaTrait.php b/system/src/Grav/Common/Media/Traits/MediaTrait.php index ecd9be168..6b340e420 100644 --- a/system/src/Grav/Common/Media/Traits/MediaTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaTrait.php @@ -225,34 +225,37 @@ trait MediaTrait $var = 'folder'; } - // Set media folder for media fields. - if (isset($var) && $this->exists()) { - $settings['type'] = 'local'; - $token = $settings[$var] ?? ''; - if (in_array(rtrim($token, '/'), ['', '@self', 'self@', '@self@'], true)) { - $settings += $this->getMediaSettings(); - $settings['self'] = true; - } else { - /** @var string|null $uri */ - $uri = null; - $event = new Event([ - 'token' => $token, - 'object' => $this, - 'field' => $field, - 'type' => $type, - 'settings' => &$settings, // Value can be changed. - 'uri' => &$uri // Value will be set to here. - ]); + $this->_mediaSettings[$field] = null; - Grav::instance()->fireEvent('onGetMediaFieldSettings', $event); + try { + // Set media folder for media fields. + if (isset($var)) { + $settings['type'] = 'local'; + $token = $settings[$var] ?? ''; + if (in_array(rtrim($token, '/'), ['', '@self', 'self@', '@self@'], true)) { + $settings += $this->getMediaSettings(); + $settings['self'] = true; + } else { + /** @var string|null $uri */ + $uri = null; + $event = new Event([ + 'token' => $token, + 'object' => $this, + 'field' => $field, + 'type' => $type, + 'settings' => &$settings, // Value can be changed. + 'uri' => &$uri // Value will be set to here. + ]); - $settings[$var] = $uri ?? Utils::getPathFromToken($token, $this); - $settings['self'] = false; + Grav::instance()->fireEvent('onGetMediaFieldSettings', $event); + + $settings[$var] = $uri ?? Utils::getPathFromToken($token, $this); + $settings['self'] = false; + } + + $this->_mediaSettings[$field] = $settings + ['accept' => '*', 'limit' => 1000, 'self' => true]; } - - $this->_mediaSettings[$field] = $settings + ['accept' => '*', 'limit' => 1000, 'self' => true]; - } else { - $this->_mediaSettings[$field] = null; + } catch (\Exception $e) { } }