specialuploadmogile.php

来自「php 开发的内容管理系统」· PHP 代码 · 共 136 行

PHP
136
字号
<?php/** * * @package MediaWiki * @subpackage SpecialPage *//** * */require_once( 'SpecialUpload.php' );require_once( 'MogileFS.php' );/** * Entry point */function wfSpecialUploadMogile() {	global $wgRequest;	$form = new UploadFormMogile( $wgRequest );	$form->execute();}/** @package MediaWiki */class UploadFormMogile extends UploadForm {	/**	 * Move the uploaded file from its temporary location to the final	 * destination. If a previous version of the file exists, move	 * it into the archive subdirectory.	 *	 * @todo If the later save fails, we may have disappeared the original file.	 *	 * @param string $saveName	 * @param string $tempName full path to the temporary file	 * @param bool $useRename  Not used in this implementation	 */	function saveUploadedFile( $saveName, $tempName, $useRename = false ) {		global $wgOut;		$mfs = MogileFS::NewMogileFS();		$this->mSavedFile = "image!{$saveName}";		if( $mfs->getPaths( $this->mSavedFile )) {			$this->mUploadOldVersion = gmdate( 'YmdHis' ) . "!{$saveName}";			if( !$mfs->rename( $this->mSavedFile, "archive!{$this->mUploadOldVersion}" ) ) {				$wgOut->showFileRenameError( $this->mSavedFile,				  "archive!{$this->mUploadOldVersion}" );				return false;			}		} else {			$this->mUploadOldVersion = '';		}		if ( $this->mStashed ) {			if (!$mfs->rename($tempName,$this->mSavedFile)) {				$wgOut->showFileRenameError($tempName, $this->mSavedFile );				return false;			}		} else {			if ( !$mfs->saveFile($this->mSavedFile,'normal',$tempName )) {				$wgOut->showFileCopyError( $tempName, $this->mSavedFile );				return false;			}			unlink($tempName);		}		return true;	}	/**	 * Stash a file in a temporary directory for later processing	 * after the user has confirmed it.	 *	 * If the user doesn't explicitly cancel or accept, these files	 * can accumulate in the temp directory.	 *	 * @param string $saveName - the destination filename	 * @param string $tempName - the source temporary file to save	 * @return string - full path the stashed file, or false on failure	 * @access private	 */	function saveTempUploadedFile( $saveName, $tempName ) {		global $wgOut;		$stash = 'stash!' . gmdate( "YmdHis" ) . '!' . $saveName;		$mfs = MogileFS::NewMogileFS();		if ( !$mfs->saveFile( $stash, 'normal', $tempName ) ) {			$wgOut->showFileCopyError( $tempName, $stash );			return false;		}		unlink($tempName);		return $stash;	}	/**	 * Stash a file in a temporary directory for later processing,	 * and save the necessary descriptive info into the session.	 * Returns a key value which will be passed through a form	 * to pick up the path info on a later invocation.	 *	 * @return int	 * @access private	 */	function stashSession() {		$stash = $this->saveTempUploadedFile(			$this->mUploadSaveName, $this->mUploadTempName );		if( !$stash ) {			# Couldn't save the file.			return false;		}		$key = mt_rand( 0, 0x7fffffff );		$_SESSION['wsUploadData'][$key] = array(			'mUploadTempName' => $stash,			'mUploadSize'     => $this->mUploadSize,			'mOname'          => $this->mOname );		return $key;	}	/**	 * Remove a temporarily kept file stashed by saveTempUploadedFile().	 * @access private	 * @return success	 */	function unsaveUploadedFile() {		global $wgOut;		$mfs = MogileFS::NewMogileFS();		if ( ! $mfs->delete( $this->mUploadTempName ) ) {			$wgOut->showFileDeleteError( $this->mUploadTempName );			return false;		} else {			return true;		}	}}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?