/** * Store a file or virtual URL source into a media file name. * * @param $originalName string The title of the image * @param $srcPath string The filepath or virtual URL * @param $flags integer Flags to pass into repo::store(). * @return FileRepoStatus */ private function storeit($originalName, $srcPath, $flags) { $hashPath = $this->repo->getHashPath($originalName); $dstRel = "{$hashPath}{$this->date}!{$originalName}"; $dstUrlRel = $hashPath . $this->date . '!' . rawurlencode($originalName); $result = $this->repo->store($srcPath, 'temp', $dstRel, $flags); $result->value = $this->repo->getVirtualUrl('temp') . '/' . $dstUrlRel; $this->createdFiles[] = $result->value; return $result; }
/** * Get the filename hash component of the directory including trailing slash, * e.g. f/fa/ * If the repository is not hashed, returns an empty string. * * @return string */ function getHashPath() { if (!isset($this->hashPath)) { $this->assertRepoDefined(); $this->hashPath = $this->repo->getHashPath($this->getName()); } return $this->hashPath; }
/** * Create an UnregisteredLocalFile based on a path or a (title,repo) pair. * A FileRepo object is not required here, unlike most other File classes. * * @throws MWException * @param Title|bool $title * @param FileRepo|bool $repo * @param string|bool $path * @param string|bool $mime */ function __construct($title = false, $repo = false, $path = false, $mime = false) { if (!($title && $repo) && !$path) { throw new MWException(__METHOD__ . ': not enough parameters, must specify title and repo, or a full path'); } if ($title instanceof Title) { $this->title = File::normalizeTitle($title, 'exception'); $this->name = $repo->getNameFromTitle($title); } else { $this->name = basename($path); $this->title = File::normalizeTitle($this->name, 'exception'); } $this->repo = $repo; if ($path) { $this->path = $path; } else { $this->assertRepoDefined(); $this->path = $repo->getRootDirectory() . '/' . $repo->getHashPath($this->name) . $this->name; } if ($mime) { $this->mime = $mime; } $this->dims = array(); }