/** * Move or copy a file to a specified location. Returns a FileRepoStatus * object with the archive name in the "value" member on success. * * The archive name should be passed through to recordUpload for database * registration. * * @param string $srcPath local filesystem path to the source image * @param string $dstRel target relative path * @param $flags Integer: a bitwise combination of: * File::DELETE_SOURCE Delete the source file, i.e. move rather than copy * @param array $options Optional additional parameters * @return FileRepoStatus object. On success, the value member contains the * archive name, or an empty string if it was a new file. */ function publishTo($srcPath, $dstRel, $flags = 0, array $options = array()) { if ($this->getRepo()->getReadOnlyReason() !== false) { return $this->readOnlyFatalStatus(); } $this->lock(); // begin $archiveName = wfTimestamp(TS_MW) . '!' . $this->getName(); $archiveRel = 'archive/' . $this->getHashPath() . $archiveName; $flags = $flags & File::DELETE_SOURCE ? LocalRepo::DELETE_SOURCE : 0; $status = $this->repo->publish($srcPath, $dstRel, $archiveRel, $flags, $options); if ($status->value == 'new') { $status->value = ''; } else { $status->value = $archiveName; } $this->unlock(); // done return $status; }