4 use Psr\Log\LoggerInterface;
53 $statusValue->setOK(
false );
59 $archiveName = $importableRevision->getArchiveName();
61 $this->logger->debug( __METHOD__ .
"Importing archived file as $archiveName\n" );
65 $file = MediaWikiServices::getInstance()->getRepoGroup()->getLocalRepo()
66 ->newFile( $importableRevision->getTitle() );
67 $file->load( File::READ_LATEST );
68 $this->logger->debug( __METHOD__ .
'Importing new file as ' .
$file->getName() .
"\n" );
69 if (
$file->exists() &&
$file->getTimestamp() > $importableRevision->getTimestamp() ) {
70 $archiveName = $importableRevision->getTimestamp() .
'!' .
$file->getName();
73 $this->logger->debug( __METHOD__ .
"File already exists; importing as $archiveName\n" );
77 $this->logger->debug( __METHOD__ .
': Bad file for ' . $importableRevision->getTitle() .
"\n" );
81 # Get the file source or download if necessary
82 $source = $importableRevision->getFileSrc();
83 $autoDeleteSource = $importableRevision->isTempSrc();
86 $autoDeleteSource =
true;
89 $this->logger->debug( __METHOD__ .
": Could not fetch remote file.\n" );
94 if ( $autoDeleteSource ) {
95 $tmpFile->autocollect();
98 $sha1File = ltrim( sha1_file(
$source ),
'0' );
99 $sha1 = $importableRevision->getSha1();
100 if ( $sha1 && ( $sha1 !== $sha1File ) ) {
101 $this->logger->debug( __METHOD__ .
": Corrupt file $source.\n" );
105 $user = $importableRevision->getUserObj()
108 # Do the actual upload
112 $importableRevision->getTimestamp(),
113 $importableRevision->getComment(),
120 $importableRevision->getComment(),
121 $importableRevision->getComment(),
124 $importableRevision->getTimestamp(),
132 $this->logger->debug( __METHOD__ .
": Successful\n" );
134 $this->logger->debug( __METHOD__ .
': failed: ' .
$status->getHTML() .
"\n" );
151 if ( !$this->enableUploads ) {
155 $tempo = tempnam(
wfTempDir(),
'download' );
156 $f = fopen( $tempo,
'wb' );
158 $this->logger->debug(
"IMPORT: couldn't write to temp file $tempo\n" );
163 $src = $wikiRevision->
getSrc();
164 $data = MediaWikiServices::getInstance()->getHttpRequestFactory()->
165 get( $src, [], __METHOD__ );
167 $this->logger->debug(
"IMPORT: couldn't fetch source $src\n" );