[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * PHPExcel 4 * 5 * Copyright (c) 2006 - 2014 PHPExcel 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this library; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 * 21 * @category PHPExcel 22 * @package PHPExcel_Shared 23 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) 24 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL 25 * @version ##VERSION##, ##DATE## 26 */ 27 28 29 /** 30 * PHPExcel_Shared_File 31 * 32 * @category PHPExcel 33 * @package PHPExcel_Shared 34 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) 35 */ 36 class PHPExcel_Shared_File 37 { 38 /* 39 * Use Temp or File Upload Temp for temporary files 40 * 41 * @protected 42 * @var boolean 43 */ 44 protected static $_useUploadTempDirectory = FALSE; 45 46 47 /** 48 * Set the flag indicating whether the File Upload Temp directory should be used for temporary files 49 * 50 * @param boolean $useUploadTempDir Use File Upload Temporary directory (true or false) 51 */ 52 public static function setUseUploadTempDirectory($useUploadTempDir = FALSE) { 53 self::$_useUploadTempDirectory = (boolean) $useUploadTempDir; 54 } // function setUseUploadTempDirectory() 55 56 57 /** 58 * Get the flag indicating whether the File Upload Temp directory should be used for temporary files 59 * 60 * @return boolean Use File Upload Temporary directory (true or false) 61 */ 62 public static function getUseUploadTempDirectory() { 63 return self::$_useUploadTempDirectory; 64 } // function getUseUploadTempDirectory() 65 66 67 /** 68 * Verify if a file exists 69 * 70 * @param string $pFilename Filename 71 * @return bool 72 */ 73 public static function file_exists($pFilename) { 74 // Sick construction, but it seems that 75 // file_exists returns strange values when 76 // doing the original file_exists on ZIP archives... 77 if ( strtolower(substr($pFilename, 0, 3)) == 'zip' ) { 78 // Open ZIP file and verify if the file exists 79 $zipFile = substr($pFilename, 6, strpos($pFilename, '#') - 6); 80 $archiveFile = substr($pFilename, strpos($pFilename, '#') + 1); 81 82 $zip = new ZipArchive(); 83 if ($zip->open($zipFile) === true) { 84 $returnValue = ($zip->getFromName($archiveFile) !== false); 85 $zip->close(); 86 return $returnValue; 87 } else { 88 return false; 89 } 90 } else { 91 // Regular file_exists 92 return file_exists($pFilename); 93 } 94 } 95 96 /** 97 * Returns canonicalized absolute pathname, also for ZIP archives 98 * 99 * @param string $pFilename 100 * @return string 101 */ 102 public static function realpath($pFilename) { 103 // Returnvalue 104 $returnValue = ''; 105 106 // Try using realpath() 107 if (file_exists($pFilename)) { 108 $returnValue = realpath($pFilename); 109 } 110 111 // Found something? 112 if ($returnValue == '' || ($returnValue === NULL)) { 113 $pathArray = explode('/' , $pFilename); 114 while(in_array('..', $pathArray) && $pathArray[0] != '..') { 115 for ($i = 0; $i < count($pathArray); ++$i) { 116 if ($pathArray[$i] == '..' && $i > 0) { 117 unset($pathArray[$i]); 118 unset($pathArray[$i - 1]); 119 break; 120 } 121 } 122 } 123 $returnValue = implode('/', $pathArray); 124 } 125 126 // Return 127 return $returnValue; 128 } 129 130 /** 131 * Get the systems temporary directory. 132 * 133 * @return string 134 */ 135 public static function sys_get_temp_dir() 136 { 137 // Moodle hack! 138 if (function_exists('make_temp_directory')) { 139 $temp = make_temp_directory('phpexcel'); 140 return realpath(dirname($temp)); 141 } 142 143 if (self::$_useUploadTempDirectory) { 144 // use upload-directory when defined to allow running on environments having very restricted 145 // open_basedir configs 146 if (ini_get('upload_tmp_dir') !== FALSE) { 147 if ($temp = ini_get('upload_tmp_dir')) { 148 if (file_exists($temp)) 149 return realpath($temp); 150 } 151 } 152 } 153 154 // sys_get_temp_dir is only available since PHP 5.2.1 155 // http://php.net/manual/en/function.sys-get-temp-dir.php#94119 156 if ( !function_exists('sys_get_temp_dir')) { 157 if ($temp = getenv('TMP') ) { 158 if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); } 159 } 160 if ($temp = getenv('TEMP') ) { 161 if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); } 162 } 163 if ($temp = getenv('TMPDIR') ) { 164 if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); } 165 } 166 167 // trick for creating a file in system's temporary dir 168 // without knowing the path of the system's temporary dir 169 $temp = tempnam(__FILE__, ''); 170 if (file_exists($temp)) { 171 unlink($temp); 172 return realpath(dirname($temp)); 173 } 174 175 return null; 176 } 177 178 // use ordinary built-in PHP function 179 // There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only 180 // be called if we're running 5.2.1 or earlier 181 return realpath(sys_get_temp_dir()); 182 } 183 184 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |