You are here

protected function StaticGenerator::filterInvokePaths in Tome 8

Filters invoke paths to remove any external or cached paths.

Parameters

array $invoke_paths: An array of paths returned by requestPath or exportPaths.

\Symfony\Component\HttpFoundation\Request $request: A request object.

Return value

array An array of paths to invoke.

2 calls to StaticGenerator::filterInvokePaths()
StaticGenerator::exportPaths in modules/tome_static/src/StaticGenerator.php
Exports multiple paths.
StaticGenerator::requestPath in modules/tome_static/src/StaticGenerator.php
Requests and exports a given path.

File

modules/tome_static/src/StaticGenerator.php, line 279

Class

StaticGenerator
Handles static site generation.

Namespace

Drupal\tome_static

Code

protected function filterInvokePaths(array $invoke_paths, Request $request) {
  $invoke_paths = preg_replace([
    '/^#.*/',
    '/#.*/',
  ], [
    '/',
    '',
  ], $invoke_paths);
  foreach ($invoke_paths as $i => &$invoke_path) {
    $invoke_path = $this
      ->makeExternalUrlLocal($invoke_path);
    if (UrlHelper::isExternal($invoke_path) || strpos($invoke_path, 'data:') === 0) {
      unset($invoke_paths[$i]);
      continue;
    }
    $components = parse_url($invoke_path);
    if (isset($components['query'])) {
      parse_str($components['query'], $query);
      if (isset($query['destination'])) {
        unset($query['destination']);
      }
      $query = http_build_query($query);
      $invoke_path = $components['path'];
      if (!empty($query)) {
        $invoke_path .= '?' . $query;
      }
    }
  }
  $invoke_paths = $this->cache
    ->filterUncachedPaths($request
    ->getSchemeAndHttpHost(), $invoke_paths);
  return array_values(array_unique($invoke_paths));
}