You are here

public static function MediaDirectoriesLibraryState::fromRequest in Media Directories 3.x

Get the media library state from a request.

Parameters

\Symfony\Component\HttpFoundation\Request $request: The request.

Return value

static A state object.

Throws

\Symfony\Component\HttpKernel\Exception\BadRequestHttpException Thrown when the hash query parameter is invalid.

Overrides MediaLibraryState::fromRequest

4 calls to MediaDirectoriesLibraryState::fromRequest()
MediaDirectoriesController::mediaAdd in modules/media_directories_ui/src/Controller/MediaDirectoriesController.php
New media entity add form.
MediaDirectoriesLibraryUiBuilder::buildUi in modules/media_directories_ui/src/MediaDirectoriesLibraryUiBuilder.php
Build the media library UI.
MediaDirectoriesLibraryUiBuilder::checkAccess in modules/media_directories_ui/src/MediaDirectoriesLibraryUiBuilder.php
Check access to the media library.
media_directories_ui_preprocess_views_view__media_directories_library in modules/media_directories_ui/media_directories_ui.module
Implements hook_preprocess_HOOK().

File

modules/media_directories_ui/src/MediaDirectoriesLibraryState.php, line 96

Class

MediaDirectoriesLibraryState
A value object for the media library state.

Namespace

Drupal\media_directories_ui

Code

public static function fromRequest(Request $request) {
  $query = $request->query;

  // Create a MediaLibraryState object through the create method to make sure
  // all validation runs.
  $state = static::create($query
    ->get('media_library_opener_id'), $query
    ->get('media_library_allowed_types', []), $query
    ->get('media_library_selected_type'), $query
    ->get('media_library_remaining'), $query
    ->get('media_library_opener_parameters', []), $query
    ->get('directory', ''));

  // The request parameters need to contain a valid hash to prevent a
  // malicious user modifying the query string to attempt to access
  // inaccessible information.
  if (!$state
    ->isValidHash($query
    ->get('hash'))) {
    throw new BadRequestHttpException("Invalid media library parameters specified.");
  }

  // Once we have validated the required parameters, we restore the parameters
  // from the request since there might be additional values.
  $state
    ->replace($query
    ->all());
  return $state;
}