You are here

class PHPExcel_Shared_File in Loft Data Grids 7.2

Same name and namespace in other branches
  1. 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/File.php \PHPExcel_Shared_File

PHPExcel_Shared_File

@category PHPExcel @package PHPExcel_Shared @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)

Hierarchy

Expanded class hierarchy of PHPExcel_Shared_File

2 string references to 'PHPExcel_Shared_File'
FileTest::testGetUseUploadTempDirectory in vendor/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FileTest.php
FileTest::testSetUseUploadTempDirectory in vendor/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FileTest.php

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/File.php, line 36

View source
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 = (bool) $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());
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PHPExcel_Shared_File::$_useUploadTempDirectory protected static property
PHPExcel_Shared_File::file_exists public static function * Verify if a file exists * *
PHPExcel_Shared_File::getUseUploadTempDirectory public static function * Get the flag indicating whether the File Upload Temp directory should be used for temporary files * *
PHPExcel_Shared_File::realpath public static function * Returns canonicalized absolute pathname, also for ZIP archives * *
PHPExcel_Shared_File::setUseUploadTempDirectory public static function * Set the flag indicating whether the File Upload Temp directory should be used for temporary files * *
PHPExcel_Shared_File::sys_get_temp_dir public static function * Get the systems temporary directory. * *