/** * @param File $file * @param Version $version * @param VersionProvider $versionProvider * @param Linker $linker * @return bool */ public function publish(File $file, Version $version, VersionProvider $versionProvider, Linker $linker) { $path = $linker->getLink($file, $version, $versionProvider->getExtension($file, $version)); $tmp = $this->storage->retrieveVersion($versionProvider->getApplicableVersionable($file), $version); if ($this->filesystem->has($path)) { return false; } $this->filesystem->write($path, file_get_contents($tmp), ['visibility' => AdapterInterface::VISIBILITY_PUBLIC]); return true; }
/** * @param File $file * @param VersionProvider $versionProvider * @param int $levelsDown * @return string * @throws FilelibException */ public function getRelativePathToVersion(File $file, Version $version, VersionProvider $versionProvider, $levelsDown = 0) { $relativePath = $this->getRelativePathToRoot(); if (!$relativePath) { throw new LogicException('Relative path must be set!'); } $relativePath = str_repeat("../", $levelsDown) . $relativePath; $retrieved = $this->storage->retrieveVersion($versionProvider->getApplicableVersionable($file), $version); $path = preg_replace("[^{$this->adapter->getRoot()}]", $relativePath, $retrieved); return $path; }
public function publish(File $file, Version $version, VersionProvider $versionProvider, Linker $linker) { $link = $this->getPublicRoot() . '/' . $linker->getLink($file, $version, $versionProvider->getExtension($file, $version)); if (!is_file($link)) { $path = dirname($link); if (!is_dir($path)) { mkdir($path, $this->getDirectoryPermission(), true); } $tmp = $this->storage->retrieveVersion($versionProvider->getApplicableVersionable($file), $version); copy($tmp, $link); chmod($link, $this->getFilePermission()); } }