Subversion Repositories eFlore/Applications.cel

Rev

Rev 2388 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2388 jpm 1
<?php
2
/**
3
 * PHPExcel
4
 *
5
 * Copyright (c) 2006 - 2013 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 - 2013 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 - 2013 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
		if (self::$_useUploadTempDirectory) {
138
			//  use upload-directory when defined to allow running on environments having very restricted
139
			//      open_basedir configs
140
			if (ini_get('upload_tmp_dir') !== FALSE) {
141
				if ($temp = ini_get('upload_tmp_dir')) {
142
					if (file_exists($temp))
143
						return realpath($temp);
144
				}
145
			}
146
		}
147
 
148
		// sys_get_temp_dir is only available since PHP 5.2.1
149
		// http://php.net/manual/en/function.sys-get-temp-dir.php#94119
150
		if ( !function_exists('sys_get_temp_dir')) {
151
			if ($temp = getenv('TMP') ) {
152
				if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); }
153
			}
154
			if ($temp = getenv('TEMP') ) {
155
				if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); }
156
			}
157
			if ($temp = getenv('TMPDIR') ) {
158
				if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); }
159
			}
160
 
161
			// trick for creating a file in system's temporary dir
162
			// without knowing the path of the system's temporary dir
163
			$temp = tempnam(__FILE__, '');
164
			if (file_exists($temp)) {
165
				unlink($temp);
166
				return realpath(dirname($temp));
167
			}
168
 
169
			return null;
170
		}
171
 
172
		// use ordinary built-in PHP function
173
		//	There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only
174
		//		be called if we're running 5.2.1 or earlier
175
		return realpath(sys_get_temp_dir());
176
	}
177
 
178
}