PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.3
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.3
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
visualizer / vendor / phpoffice / phpexcel / Classes / PHPExcel / Shared / File.php

File.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.0.3, at vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/File.php

179 lines 5.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 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 }
179