[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/lib/phpexcel/PHPExcel/Shared/ -> File.php (source)

   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  }


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1