/** * @param $collection MessageCollection */ public function write( MessageCollection $collection ) { $writePath = $this->writePath; if ( $writePath === null ) { throw new MWException( "Write path is not set." ); } if ( !file_exists( $writePath ) ) { throw new MWException( "Write path '$writePath' does not exist." ); } if ( !is_writable( $writePath ) ) { throw new MWException( "Write path '$writePath' is not writable." ); } $targetFile = $writePath . '/' . $this->group->getTargetFilename( $collection->code ); if ( file_exists( $targetFile ) ) { $this->tryReadSource( $targetFile, $collection ); } else { $sourceFile = $this->group->getSourceFilePath( $collection->code ); $this->tryReadSource( $sourceFile, $collection ); } $output = $this->writeReal( $collection ); if ( $output ) { wfMkdirParents( dirname( $targetFile ), null, __METHOD__ ); file_put_contents( $targetFile, $output ); } }