Exemplo n.º 1
0
 public function getFreshURL($name, $definedName)
 {
     $title = Title::newFromText($definedName, NS_FILE);
     if ($definedName != $name) {
         $file = OldLocalFile::newFromArchiveName($title, RepoGroup::singleton()->getLocalRepo(), $name);
         return wfReplaceImageServer($file->getUrl());
     } else {
         $file = new LocalFile($title, RepoGroup::singleton()->getLocalRepo());
         return wfReplaceImageServer($file->getUrl());
     }
 }
Exemplo n.º 2
0
 function newFromArchiveName($title, $archiveName)
 {
     return OldLocalFile::newFromArchiveName($title, $this, $archiveName);
 }
Exemplo n.º 3
0
 /**
  * @return bool
  */
 function importUpload()
 {
     # Construct a file
     $archiveName = $this->getArchiveName();
     if ($archiveName) {
         wfDebug(__METHOD__ . "Importing archived file as {$archiveName}\n");
         $file = OldLocalFile::newFromArchiveName($this->getTitle(), RepoGroup::singleton()->getLocalRepo(), $archiveName);
     } else {
         $file = wfLocalFile($this->getTitle());
         $file->load(File::READ_LATEST);
         wfDebug(__METHOD__ . 'Importing new file as ' . $file->getName() . "\n");
         if ($file->exists() && $file->getTimestamp() > $this->getTimestamp()) {
             $archiveName = $file->getTimestamp() . '!' . $file->getName();
             $file = OldLocalFile::newFromArchiveName($this->getTitle(), RepoGroup::singleton()->getLocalRepo(), $archiveName);
             wfDebug(__METHOD__ . "File already exists; importing as {$archiveName}\n");
         }
     }
     if (!$file) {
         wfDebug(__METHOD__ . ': Bad file for ' . $this->getTitle() . "\n");
         return false;
     }
     # Get the file source or download if necessary
     $source = $this->getFileSrc();
     $flags = $this->isTempSrc() ? File::DELETE_SOURCE : 0;
     if (!$source) {
         $source = $this->downloadSource();
         $flags |= File::DELETE_SOURCE;
     }
     if (!$source) {
         wfDebug(__METHOD__ . ": Could not fetch remote file.\n");
         return false;
     }
     $sha1 = $this->getSha1();
     if ($sha1 && $sha1 !== sha1_file($source)) {
         if ($flags & File::DELETE_SOURCE) {
             # Broken file; delete it if it is a temporary file
             unlink($source);
         }
         wfDebug(__METHOD__ . ": Corrupt file {$source}.\n");
         return false;
     }
     $user = User::newFromName($this->user_text);
     # Do the actual upload
     if ($archiveName) {
         $status = $file->uploadOld($source, $archiveName, $this->getTimestamp(), $this->getComment(), $user, $flags);
     } else {
         $status = $file->upload($source, $this->getComment(), $this->getComment(), $flags, false, $this->getTimestamp(), $user);
     }
     if ($status->isGood()) {
         wfDebug(__METHOD__ . ": Successful\n");
         return true;
     } else {
         wfDebug(__METHOD__ . ': failed: ' . $status->getHTML() . "\n");
         return false;
     }
 }
Exemplo n.º 4
0
 /**
  * @return bool
  */
 function importUpload()
 {
     # Construct a file
     $archiveName = $this->getArchiveName();
     if ($archiveName) {
         wfDebug(__METHOD__ . "Importing archived file as {$archiveName}\n");
         $file = OldLocalFile::newFromArchiveName($this->getTitle(), RepoGroup::singleton()->getLocalRepo(), $archiveName);
     } else {
         $file = wfLocalFile($this->getTitle());
         $file->load(File::READ_LATEST);
         wfDebug(__METHOD__ . 'Importing new file as ' . $file->getName() . "\n");
         if ($file->exists() && $file->getTimestamp() > $this->getTimestamp()) {
             $archiveName = $file->getTimestamp() . '!' . $file->getName();
             $file = OldLocalFile::newFromArchiveName($this->getTitle(), RepoGroup::singleton()->getLocalRepo(), $archiveName);
             wfDebug(__METHOD__ . "File already exists; importing as {$archiveName}\n");
         }
     }
     if (!$file) {
         wfDebug(__METHOD__ . ': Bad file for ' . $this->getTitle() . "\n");
         return false;
     }
     # Get the file source or download if necessary
     $source = $this->getFileSrc();
     $autoDeleteSource = $this->isTempSrc();
     if (!strlen($source)) {
         $source = $this->downloadSource();
         $autoDeleteSource = true;
     }
     if (!strlen($source)) {
         wfDebug(__METHOD__ . ": Could not fetch remote file.\n");
         return false;
     }
     $tmpFile = new TempFSFile($source);
     if ($autoDeleteSource) {
         $tmpFile->autocollect();
     }
     $sha1File = ltrim(sha1_file($source), '0');
     $sha1 = $this->getSha1();
     if ($sha1 && $sha1 !== $sha1File) {
         wfDebug(__METHOD__ . ": Corrupt file {$source}.\n");
         return false;
     }
     $user = $this->getUserObj() ?: User::newFromName($this->getUser());
     # Do the actual upload
     if ($archiveName) {
         $status = $file->uploadOld($source, $archiveName, $this->getTimestamp(), $this->getComment(), $user);
     } else {
         $flags = 0;
         $status = $file->upload($source, $this->getComment(), $this->getComment(), $flags, false, $this->getTimestamp(), $user);
     }
     if ($status->isGood()) {
         wfDebug(__METHOD__ . ": Successful\n");
         return true;
     } else {
         wfDebug(__METHOD__ . ': failed: ' . $status->getHTML() . "\n");
         return false;
     }
 }
Exemplo n.º 5
0
 public function onSubmit($data)
 {
     $this->useTransactionalTimeLimit();
     $old = $this->getRequest()->getText('oldimage');
     $localFile = $this->page->getFile();
     $oldFile = OldLocalFile::newFromArchiveName($this->getTitle(), $localFile->getRepo(), $old);
     $source = $localFile->getArchiveVirtualUrl($old);
     $comment = $data['comment'];
     if ($localFile->getSha1() === $oldFile->getSha1()) {
         return Status::newFatal('filerevert-identical');
     }
     // TODO: Preserve file properties from database instead of reloading from file
     return $localFile->upload($source, $comment, $comment, 0, false, false, $this->getUser());
 }