Loading core/modules/media_library/src/MediaLibraryState.php +29 −4 Original line number Diff line number Diff line Loading @@ -101,10 +101,10 @@ public static function fromRequest(Request $request) { // all validation runs. $state = static::create( $query->get('media_library_opener_id'), $query->get('media_library_allowed_types', []), $query->all('media_library_allowed_types'), $query->get('media_library_selected_type'), $query->get('media_library_remaining'), $query->get('media_library_opener_parameters', []) $query->all('media_library_opener_parameters') ); // The request parameters need to contain a valid hash to prevent a Loading Loading @@ -224,7 +224,7 @@ public function getOpenerId() { * The media type IDs. */ public function getAllowedTypeIds() { return $this->get('media_library_allowed_types'); return $this->all('media_library_allowed_types'); } /** Loading Loading @@ -268,7 +268,32 @@ public function getAvailableSlots() { * An associative array of all opener-specific parameter values. */ public function getOpenerParameters() { return $this->get('media_library_opener_parameters', []); return $this->all('media_library_opener_parameters'); } /** * Returns the parameters. * * @param string|null $key * The name of the parameter to return or null to get them all. * * @return array * An array of parameters. * * @todo Remove this when Symfony 4 is no longer supported. * See https://www.drupal.org/node/3162981 */ public function all(string $key = NULL): array { if ($key === NULL) { return $this->parameters; } $value = $this->parameters[$key] ?? []; if (!is_array($value)) { throw new \UnexpectedValueException(sprintf('Unexpected value for parameter "%s": expecting "array", got "%s".', $key, get_debug_type($value))); } return $value; } /** Loading core/modules/media_library/tests/src/Kernel/MediaLibraryStateTest.php +8 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ use Drupal\Core\Cache\Cache; use Drupal\Core\Cache\CacheableDependencyInterface; use Drupal\Core\Http\InputBag; use Drupal\KernelTests\KernelTestBase; use Drupal\media_library\MediaLibraryState; use Drupal\Tests\media\Traits\MediaTypeCreationTrait; Loading Loading @@ -286,7 +287,13 @@ public function testFromRequest(array $query_overrides, $exception_expected) { $this->expectException(BadRequestHttpException::class); $this->expectExceptionMessage("Invalid media library parameters specified."); } $state = MediaLibraryState::fromRequest(new Request($query)); // @todo Remove this when Symfony 4 is no longer supported. // See https://www.drupal.org/node/3162981 $request = new Request(); $request->query = new InputBag($query); $state = MediaLibraryState::fromRequest($request); $this->assertInstanceOf(MediaLibraryState::class, $state); } Loading Loading
core/modules/media_library/src/MediaLibraryState.php +29 −4 Original line number Diff line number Diff line Loading @@ -101,10 +101,10 @@ public static function fromRequest(Request $request) { // all validation runs. $state = static::create( $query->get('media_library_opener_id'), $query->get('media_library_allowed_types', []), $query->all('media_library_allowed_types'), $query->get('media_library_selected_type'), $query->get('media_library_remaining'), $query->get('media_library_opener_parameters', []) $query->all('media_library_opener_parameters') ); // The request parameters need to contain a valid hash to prevent a Loading Loading @@ -224,7 +224,7 @@ public function getOpenerId() { * The media type IDs. */ public function getAllowedTypeIds() { return $this->get('media_library_allowed_types'); return $this->all('media_library_allowed_types'); } /** Loading Loading @@ -268,7 +268,32 @@ public function getAvailableSlots() { * An associative array of all opener-specific parameter values. */ public function getOpenerParameters() { return $this->get('media_library_opener_parameters', []); return $this->all('media_library_opener_parameters'); } /** * Returns the parameters. * * @param string|null $key * The name of the parameter to return or null to get them all. * * @return array * An array of parameters. * * @todo Remove this when Symfony 4 is no longer supported. * See https://www.drupal.org/node/3162981 */ public function all(string $key = NULL): array { if ($key === NULL) { return $this->parameters; } $value = $this->parameters[$key] ?? []; if (!is_array($value)) { throw new \UnexpectedValueException(sprintf('Unexpected value for parameter "%s": expecting "array", got "%s".', $key, get_debug_type($value))); } return $value; } /** Loading
core/modules/media_library/tests/src/Kernel/MediaLibraryStateTest.php +8 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ use Drupal\Core\Cache\Cache; use Drupal\Core\Cache\CacheableDependencyInterface; use Drupal\Core\Http\InputBag; use Drupal\KernelTests\KernelTestBase; use Drupal\media_library\MediaLibraryState; use Drupal\Tests\media\Traits\MediaTypeCreationTrait; Loading Loading @@ -286,7 +287,13 @@ public function testFromRequest(array $query_overrides, $exception_expected) { $this->expectException(BadRequestHttpException::class); $this->expectExceptionMessage("Invalid media library parameters specified."); } $state = MediaLibraryState::fromRequest(new Request($query)); // @todo Remove this when Symfony 4 is no longer supported. // See https://www.drupal.org/node/3162981 $request = new Request(); $request->query = new InputBag($query); $state = MediaLibraryState::fromRequest($request); $this->assertInstanceOf(MediaLibraryState::class, $state); } Loading