/**
  * @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;
 }
Esempio n. 2
0
 /**
  * @test
  */
 public function setsVersion()
 {
     $version = new Version('tenhunen', array('suuruus' => 'ylistetty'), array('x5', 'x6'));
     $this->assertEquals('tenhunen', $version->getVersion());
     $ret = $version->setVersion('tenhunizer');
     $this->assertNotSame($version, $ret);
     $this->assertEquals('tenhunizer', $ret->getVersion());
 }
Esempio n. 3
0
 /**
  * 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()));
 }
Esempio n. 4
0
 /**
  * @param Version $version
  * @return Version
  * @throws InvalidVersionException
  */
 public function ensureValidVersion(Version $version)
 {
     if (!in_array($version->getVersion(), $this->getProvidedVersions())) {
         throw new InvalidVersionException(sprintf("Invalid base version string '%s'", $version->getVersion()));
     }
     return $version;
 }
Esempio n. 5
0
 /**
  * @param File $file
  * @param Version $version
  * @return string
  */
 public function getExtension(File $file, Version $version)
 {
     if ($mimeType = $this->versions[$version->getVersion()]->getMimeType()) {
         return $this->getExtensionFromMimeType($mimeType);
     }
     return parent::getExtension($file, $version);
 }