179 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * PHPExcel
 | |
|  *
 | |
|  * Copyright (c) 2006 - 2014 PHPExcel
 | |
|  *
 | |
|  * This library is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU Lesser General Public
 | |
|  * License as published by the Free Software Foundation; either
 | |
|  * version 2.1 of the License, or (at your option) any later version.
 | |
|  *
 | |
|  * This library is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
|  * Lesser General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU Lesser General Public
 | |
|  * License along with this library; if not, write to the Free Software
 | |
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 | |
|  *
 | |
|  * @category   PHPExcel
 | |
|  * @package    PHPExcel_Shared
 | |
|  * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 | |
|  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL
 | |
|  * @version    ##VERSION##, ##DATE##
 | |
|  */
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * PHPExcel_Shared_File
 | |
|  *
 | |
|  * @category   PHPExcel
 | |
|  * @package    PHPExcel_Shared
 | |
|  * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 | |
|  */
 | |
| class PHPExcel_Shared_File
 | |
| {
 | |
| 	/*
 | |
| 	 * Use Temp or File Upload Temp for temporary files
 | |
| 	 *
 | |
| 	 * @protected
 | |
| 	 * @var	boolean
 | |
| 	 */
 | |
| 	protected static $_useUploadTempDirectory	= FALSE;
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	 * Set the flag indicating whether the File Upload Temp directory should be used for temporary files
 | |
| 	 *
 | |
| 	 * @param	 boolean	$useUploadTempDir		Use File Upload Temporary directory (true or false)
 | |
| 	 */
 | |
| 	public static function setUseUploadTempDirectory($useUploadTempDir = FALSE) {
 | |
| 		self::$_useUploadTempDirectory = (boolean) $useUploadTempDir;
 | |
| 	}	//	function setUseUploadTempDirectory()
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	 * Get the flag indicating whether the File Upload Temp directory should be used for temporary files
 | |
| 	 *
 | |
| 	 * @return	 boolean	Use File Upload Temporary directory (true or false)
 | |
| 	 */
 | |
| 	public static function getUseUploadTempDirectory() {
 | |
| 		return self::$_useUploadTempDirectory;
 | |
| 	}	//	function getUseUploadTempDirectory()
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	  * Verify if a file exists
 | |
| 	  *
 | |
| 	  * @param 	string	$pFilename	Filename
 | |
| 	  * @return bool
 | |
| 	  */
 | |
| 	public static function file_exists($pFilename) {
 | |
| 		// Sick construction, but it seems that
 | |
| 		// file_exists returns strange values when
 | |
| 		// doing the original file_exists on ZIP archives...
 | |
| 		if ( strtolower(substr($pFilename, 0, 3)) == 'zip' ) {
 | |
| 			// Open ZIP file and verify if the file exists
 | |
| 			$zipFile 		= substr($pFilename, 6, strpos($pFilename, '#') - 6);
 | |
| 			$archiveFile 	= substr($pFilename, strpos($pFilename, '#') + 1);
 | |
| 
 | |
| 			$zip = new ZipArchive();
 | |
| 			if ($zip->open($zipFile) === true) {
 | |
| 				$returnValue = ($zip->getFromName($archiveFile) !== false);
 | |
| 				$zip->close();
 | |
| 				return $returnValue;
 | |
| 			} else {
 | |
| 				return false;
 | |
| 			}
 | |
| 		} else {
 | |
| 			// Regular file_exists
 | |
| 			return file_exists($pFilename);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns canonicalized absolute pathname, also for ZIP archives
 | |
| 	 *
 | |
| 	 * @param string $pFilename
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public static function realpath($pFilename) {
 | |
| 		// Returnvalue
 | |
| 		$returnValue = '';
 | |
| 
 | |
| 		// Try using realpath()
 | |
| 		if (file_exists($pFilename)) {
 | |
| 			$returnValue = realpath($pFilename);
 | |
| 		}
 | |
| 
 | |
| 		// Found something?
 | |
| 		if ($returnValue == '' || ($returnValue === NULL)) {
 | |
| 			$pathArray = explode('/' , $pFilename);
 | |
| 			while(in_array('..', $pathArray) && $pathArray[0] != '..') {
 | |
| 				for ($i = 0; $i < count($pathArray); ++$i) {
 | |
| 					if ($pathArray[$i] == '..' && $i > 0) {
 | |
| 						unset($pathArray[$i]);
 | |
| 						unset($pathArray[$i - 1]);
 | |
| 						break;
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			$returnValue = implode('/', $pathArray);
 | |
| 		}
 | |
| 
 | |
| 		// Return
 | |
| 		return $returnValue;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get the systems temporary directory.
 | |
| 	 *
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public static function sys_get_temp_dir()
 | |
| 	{
 | |
| 		if (self::$_useUploadTempDirectory) {
 | |
| 			//  use upload-directory when defined to allow running on environments having very restricted
 | |
| 			//      open_basedir configs
 | |
| 			if (ini_get('upload_tmp_dir') !== FALSE) {
 | |
| 				if ($temp = ini_get('upload_tmp_dir')) {
 | |
| 					if (file_exists($temp))
 | |
| 						return realpath($temp);
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		// sys_get_temp_dir is only available since PHP 5.2.1
 | |
| 		// http://php.net/manual/en/function.sys-get-temp-dir.php#94119
 | |
| 		if ( !function_exists('sys_get_temp_dir')) {
 | |
| 			if ($temp = getenv('TMP') ) {
 | |
| 				if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); }
 | |
| 			}
 | |
| 			if ($temp = getenv('TEMP') ) {
 | |
| 				if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); }
 | |
| 			}
 | |
| 			if ($temp = getenv('TMPDIR') ) {
 | |
| 				if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); }
 | |
| 			}
 | |
| 
 | |
| 			// trick for creating a file in system's temporary dir
 | |
| 			// without knowing the path of the system's temporary dir
 | |
| 			$temp = tempnam(__FILE__, '');
 | |
| 			if (file_exists($temp)) {
 | |
| 				unlink($temp);
 | |
| 				return realpath(dirname($temp));
 | |
| 			}
 | |
| 
 | |
| 			return null;
 | |
| 		}
 | |
| 
 | |
| 		// use ordinary built-in PHP function
 | |
| 		//	There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only
 | |
| 		//		be called if we're running 5.2.1 or earlier
 | |
| 		return realpath(sys_get_temp_dir());
 | |
| 	}
 | |
| 
 | |
| }
 | 
