/** * Returns link for a version of a file * * @param File $file * @param Version $version Version identifier * @param string $extension Extension * @return string Versioned link */ public function getLink(File $file, Version $version, $extension) { $link = $this->getBaseLink($file); $pinfo = pathinfo($link); $link = $pinfo['dirname'] . '/' . $pinfo['filename'] . '-' . $version->toString(); $link .= '.' . $extension; return $link; }
/** * @param Versionable $versionable * @param Version $version * @return string */ public function getPathVersion(Versionable $versionable, Version $version) { list($resource, $file) = $this->extractResourceAndFileFromVersionable($versionable); $path = $this->getPrefix(); if ($file) { $path .= 'files/'; } else { $path .= 'resources/'; } $path .= $this->directoryCalculator->calculateDirectory($file ?: $resource) . '/' . $version->toString(); $path .= '/' . ($file ? $file->getId() : $resource->getId()); return $path; }
/** * @param Version $version * @return Version * @throws InvalidVersionException */ public function ensureValidVersion(Version $version) { $version = parent::ensureValidVersion($version); $unknownParams = array_map(function ($param) { return '\'' . $param . '\''; }, array_diff(array_keys($version->getParams()), call_user_func($this->allowedParamsGetter))); if (count($unknownParams)) { throw new InvalidVersionException(sprintf("Unknown version parameters: %s", implode(', ', $unknownParams))); } $unknownModifiers = array_map(function ($param) { return '\'' . $param . '\''; }, array_diff($version->getModifiers(), call_user_func($this->allowedModifiersGetter))); if (count($unknownModifiers)) { throw new InvalidVersionException(sprintf("Unknown version modifiers: %s", implode(', ', $unknownModifiers))); } $newParams = array_merge(call_user_func($this->defaultParamsGetter), $version->getParams()); $version = new Version($version->getVersion(), $newParams, $version->getModifiers()); $isValid = call_user_func_array($this->versionValidityChecker, array($version)); if (!$isValid) { throw new InvalidVersionException(sprintf("Invalid version '%s'", $version->toString())); } return $version; }
/** * @param File $file * @param Version $version * @param string $extension * @return string */ public function getLink(File $file, Version $version, $extension) { $pinfo = pathinfo($this->getFileName($file)); return $file->getDateCreated()->format($this->getFormat()) . '/' . $pinfo['filename'] . '-' . $version->toString() . '.' . $extension; }
/** * @test * @dataProvider provideVersionOptions */ public function convertsToString($versionName, $options, $modifiers, $expected) { $version = new Version($versionName, $options, $modifiers); $this->assertEquals($expected, $version->toString()); }
public function deleteVersion(Versionable $versionable, Version $version) { if (isset($this->retrievedVersions[get_class($versionable)][$versionable->getId()][$version->toString()])) { unset($this->retrievedVersions[get_class($versionable)][$versionable->getId()][$version->toString()]); } }
/** * Returns version provider for a file/version * * @param File $file * @param Version $version * @return VersionProvider * @throws InvalidVersionException */ public function getVersionProvider(File $file, Version $version) { $versions = $this->getFileVersions($file); if (in_array($version->getVersion(), $versions)) { return $this->fileVersions[$version->getVersion()]; } throw new InvalidVersionException(sprintf("File has no version '%s'", $version->toString())); }
/** * @param File $file * @param Version $version * @return bool */ public function publishVersion(File $file, Version $version) { $event = new PublisherEvent($file, array($version->toString())); $this->eventDispatcher->dispatch(Events::FILE_BEFORE_PUBLISH, $event); if ($this->versionPublisher($file, $version)) { $this->fileRepository->update($file); $event = new PublisherEvent($file, array($version->toString())); $this->eventDispatcher->dispatch(Events::FILE_AFTER_PUBLISH, $event); return true; } return false; }
/** * @param File $file * @param Version $version * @return array */ protected function doCreateTemporaryVersion(File $file, Version $version) { $retrieved = $this->storage->retrieve($file->getResource()); $versionVersion = $this->versions[$version->getVersion()]; return array($version->toString(), $versionVersion->getHelper($retrieved, $this->tempFiles)->execute()); }
/** * Returns file extension for a version * * @param string $version */ public function getExtension(File $file, Version $version) { if (preg_match("#thumbnail\$#", $version->toString())) { return 'png'; } return $this->outputs[$version->toString()]['extension']; }
public function versionExists(Versionable $versionable, Version $version) { return isset($this->resources[$versionable->getId() . ';' . $version->toString()]); }