コード例 #1
0
ファイル: FileRepo.php プロジェクト: whysasse/kmwiki
 /**
  * Purge a batch of files from the repo.
  * This function can be used to write to otherwise read-only foreign repos.
  * This does no locking nor journaling and is intended for purging thumbnails.
  *
  * @param array $paths List of virtual URLs or storage paths
  * @return FileRepoStatus
  */
 public function quickPurgeBatch(array $paths)
 {
     $status = $this->newGood();
     $operations = array();
     foreach ($paths as $path) {
         $operations[] = array('op' => 'delete', 'src' => $this->resolveToStoragePath($path), 'ignoreMissingSource' => true);
     }
     $status->merge($this->backend->doQuickOperations($operations));
     return $status;
 }
コード例 #2
0
 private function create(array $params)
 {
     $params['op'] = 'create';
     return $this->backend->doQuickOperations(array($params));
 }
コード例 #3
0
	/**
	 * @param array $dstPathsRel
	 * @param string $backendRel
	 * @param FileBackend $dst
	 * @return void
	 */
	protected function delFileBatch(
		array $dstPathsRel, $backendRel, FileBackend $dst
	) {
		$ops = array();
		$deletedRel = array(); // for output message
		$wikiId = $dst->getWikiId();

		// Determine what files need to be copied over...
		foreach ( $dstPathsRel as $dstPathRel ) {
			$dstPath = $dst->getRootStoragePath() . "/$backendRel/$dstPathRel";
			$ops[] = array( 'op' => 'delete', 'src' => $dstPath );
			$deletedRel[] = $dstPathRel;
		}

		// Delete the batch of source files...
		$t_start = microtime( true );
		$status = $dst->doQuickOperations( $ops, array( 'bypassReadOnly' => 1 ) );
		if ( !$status->isOK() ) {
			sleep( 10 ); // wait and retry copy again
			$status = $dst->doQuickOperations( $ops, array( 'bypassReadOnly' => 1 ) );
		}
		$ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
		if ( !$status->isOK() ) {
			$this->error( print_r( $status->getErrorsArray(), true ) );
			$this->error( "$wikiId: Could not delete file batch.", 1 ); // die
		} elseif ( count( $deletedRel ) ) {
			$this->output( "\n\tDeleted these file(s) [{$ellapsed_ms}ms]:\n\t" .
				implode( "\n\t", $deletedRel ) . "\n\n" );
		}
	}