protected function copyFileToDefaults(ResourceDOInterface $resourceDO)
 {
     /** @var ResourceImageDO $resourceDO */
     if (ResourceDO::DEFAULT_VARIANT !== $resourceDO->getVariant() && $this->config->get('staticus.magic_defaults.variant')) {
         $defaultDO = clone $resourceDO;
         $defaultDO->setVariant();
         $defaultDO->setVersion();
         $defaultDO->setWidth();
         $defaultDO->setHeight();
         $this->copyResource($resourceDO, $defaultDO);
     }
     if (ResourceDO::DEFAULT_VERSION !== $resourceDO->getVersion() && $this->config->get('staticus.magic_defaults.version')) {
         $defaultDO = clone $resourceDO;
         $defaultDO->setVersion();
         $defaultDO->setWidth();
         $defaultDO->setHeight();
         $this->copyResource($resourceDO, $defaultDO);
     }
     if (ResourceImageDO::DEFAULT_DIMENSION !== $resourceDO->getDimension() && $this->config->get('staticus.magic_defaults.dimension')) {
         $defaultDO = clone $resourceDO;
         $defaultDO->setWidth();
         $defaultDO->setHeight();
         $this->copyResource($resourceDO, $defaultDO);
     }
 }
 protected function getUri(ResourceDOInterface $resourceDO)
 {
     $uri = $resourceDO->getName() . '.' . $resourceDO->getType();
     $query = [];
     if (ResourceDOInterface::DEFAULT_VARIANT !== $resourceDO->getVariant()) {
         $query['var'] = $resourceDO->getVariant();
     }
     if (ResourceDOInterface::DEFAULT_NAME_ALTERNATIVE !== $resourceDO->getNameAlternative()) {
         $query['alt'] = $resourceDO->getNameAlternative();
     }
     if (ResourceDOInterface::DEFAULT_VERSION !== $resourceDO->getVersion()) {
         $query['v'] = $resourceDO->getVersion();
     }
     $query = http_build_query($query, null, '&', PHP_QUERY_RFC3986);
     // RFC for correct spaces
     if ($query) {
         $uri .= '?' . $query;
     }
     return $uri;
 }
 /**
  * @param bool $byPathOnly If true, no search on disk will be executed
  * @return ResourceDOInterface
  */
 public function __invoke($byPathOnly = false)
 {
     $uuid = $this->resourceDO->getUuid();
     $type = $this->resourceDO->getType();
     $variant = $this->resourceDO->getVariant();
     $version = $this->resourceDO->getVersion();
     $baseDir = $this->resourceDO->getBaseDirectory();
     $namespace = $this->resourceDO->getNamespace();
     $filePath = $this->resourceDO->getFilePath();
     if (!$uuid || !$type || !$baseDir || !$filePath) {
         throw new CommandErrorException('Cannot destroy the empty resource');
     }
     if ($byPathOnly) {
         $this->deleteFile($filePath);
     } else {
         $command = new FindResourceOptionsCommand($this->resourceDO, $this->filesystem);
         $result = $command();
         foreach ($result as $item) {
             if ($item[ResourceDOAbstract::TOKEN_TYPE] !== $type || $item['filename'] !== $uuid || $namespace && $item[ResourceDOAbstract::TOKEN_NAMESPACE] !== $namespace) {
                 continue;
             }
             if ($version !== ResourceDOInterface::DEFAULT_VERSION) {
                 if ($variant === $item[ResourceDOAbstract::TOKEN_VARIANT] && $version === (int) $item[ResourceDOAbstract::TOKEN_VERSION]) {
                     $this->deleteFile($item['path']);
                 }
             } elseif ($variant !== ResourceDOInterface::DEFAULT_VARIANT) {
                 if ($variant === $item[ResourceDOAbstract::TOKEN_VARIANT]) {
                     $this->deleteFile($item['path']);
                 }
             } else {
                 $this->deleteFile($item['path']);
             }
         }
     }
     return $this->resourceDO;
 }
 protected function copyFileToDefaults(ResourceDOInterface $resourceDO)
 {
     if (ResourceDO::DEFAULT_VARIANT !== $resourceDO->getVariant() && $this->config->get('staticus.magic_defaults.variant')) {
         $defaultDO = clone $resourceDO;
         $defaultDO->setVariant();
         $defaultDO->setVersion();
         $this->copyResource($resourceDO, $defaultDO);
     }
     if (ResourceDO::DEFAULT_VERSION !== $resourceDO->getVersion() && $this->config->get('staticus.magic_defaults.version')) {
         $defaultDO = clone $resourceDO;
         $defaultDO->setVersion();
         $this->copyResource($resourceDO, $defaultDO);
     }
 }