Neos\Flow\ResourceManagement\Streams\ResourceStreamWrapper::evaluateResourcePath PHP Method

evaluateResourcePath() protected method

Evaluates the absolute path and filename of the resource file specified by the given path.
protected evaluateResourcePath ( string $requestedPath, boolean $checkForExistence = true ) : mixed
$requestedPath string
$checkForExistence boolean Whether a (non-hash) path should be checked for existence before being returned
return mixed The full path and filename or FALSE if the file doesn't exist
    protected function evaluateResourcePath($requestedPath, $checkForExistence = true)
    {
        if (substr($requestedPath, 0, strlen(self::SCHEME)) !== self::SCHEME) {
            throw new \InvalidArgumentException('The ' . __CLASS__ . ' only supports the \'' . self::SCHEME . '\' scheme.', 1256052544);
        }
        $uriParts = Functions::parse_url($requestedPath);
        if (!is_array($uriParts) || !isset($uriParts['host'])) {
            return false;
        }
        if (preg_match('/^[0-9a-f]{40}$/i', $uriParts['host']) === 1) {
            $resource = $this->resourceManager->getResourceBySha1($uriParts['host']);
            return $this->resourceManager->getStreamByResource($resource);
        }
        if (!$this->packageManager->isPackageAvailable($uriParts['host'])) {
            throw new ResourceException(sprintf('Invalid resource URI "%s": Package "%s" is not available.', $requestedPath, $uriParts['host']), 1309269952);
        }
        $package = $this->packageManager->getPackage($uriParts['host']);
        $resourceUri = Files::concatenatePaths([$package->getResourcesPath(), $uriParts['path']]);
        if ($checkForExistence === false || file_exists($resourceUri)) {
            return $resourceUri;
        }
        return false;
    }