/** * @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; }
/** * @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()); }
/** * 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 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; }
/** * @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); }