*/ /** * Class simulating a backend store. * * @ingroup FileBackend * @since 1.22 */ class MockFileBackend extends FileBackendStore { protected $mocked = array(); /** Poor man debugging */ protected function debug( $msg = '' ) { wfDebug( wfGetCaller() . "$msg\n" ); } public function isPathUsableInternal( $storagePath ) { return true; } protected function doCreateInternal( array $params ) { if( isset( $params['content'] ) ) { $content = $params['content']; } else { $content = 'Default mocked file content'; } $this->debug(serialize($params)); $dst = $params['dst']; $this->mocked[$dst] = $content; return Status::newGood(); } protected function doStoreInternal( array $params ) { $this->debug(serialize($params)); return $this->doCreateInternal( $params ); } protected function doCopyInternal( array $params ) { $this->debug(serialize($params)); $src = $params['src']; $dst = $params['dst']; $this->mocked[$dst] = $this->mocked[$src]; return Status::newGood(); } protected function doDeleteInternal( array $params ) { $this->debug(serialize($params)); $src = $params['src']; unset( $this->mocked[$src] ); return Status::newGood(); } protected function doGetFileStat( array $params ) { $src = $params['src']; if( array_key_exists( $src, $this->mocked ) ) { $this->debug( "('$src') found" ); return array( 'mtime' => wfTimestamp( TS_MW ), 'size' => strlen( $this->mocked[$src] ), # No sha1, stat does not need it. ); } else { $this->debug( "('$src') not found" ); return false; } } protected function doGetLocalCopyMulti( array $params ) { $tmpFiles = array(); // (path => MockFSFile) $this->debug( '(' . serialize($params) . ')' ); foreach( $params['srcs'] as $src ) { $tmpFiles[$src] = new MockFSFile( wfTempDir() . '/' . wfRandomString(32) ); } return $tmpFiles; } protected function doDirectoryExists( $container, $dir, array $params ) { $this->debug(); return true; } public function getDirectoryListInternal( $container, $dir, array $params ) { $this->debug(); return array(); } public function getFileListInternal( $container, $dir, array $params ) { $this->debug(); return array(); } protected function directoriesAreVirtual() { $this->debug(); return true; } }