[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/Smarty/libs/sysplugins/ -> smarty_internal_write_file.php (source)

   1  <?php
   2  /**
   3   * Smarty write file plugin
   4   *
   5   * @package Smarty
   6   * @subpackage PluginsInternal
   7   * @author Monte Ohrt
   8   */
   9  
  10  /**
  11   * Smarty Internal Write File Class
  12   *
  13   * @package Smarty
  14   * @subpackage PluginsInternal
  15   */
  16  class Smarty_Internal_Write_File {
  17  
  18      /**
  19       * Writes file in a safe way to disk
  20       *
  21       * @param string $_filepath complete filepath
  22       * @param string $_contents file content
  23       * @param Smarty $smarty    smarty instance
  24       * @return boolean true
  25       */
  26      public static function writeFile($_filepath, $_contents, Smarty $smarty)
  27      {
  28          $_error_reporting = error_reporting();
  29          error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING);
  30          if ($smarty->_file_perms !== null) {
  31              $old_umask = umask(0);
  32          }
  33  
  34          $_dirpath = dirname($_filepath);
  35          // if subdirs, create dir structure
  36          if ($_dirpath !== '.' && !file_exists($_dirpath)) {
  37              mkdir($_dirpath, $smarty->_dir_perms === null ? 0777 : $smarty->_dir_perms, true);
  38          }
  39  
  40          // write to tmp file, then move to overt file lock race condition
  41          $_tmp_file = $_dirpath . DS . uniqid('wrt');
  42          if (!file_put_contents($_tmp_file, $_contents)) {
  43              error_reporting($_error_reporting);
  44              throw new SmartyException("unable to write file {$_tmp_file}");
  45              return false;
  46          }
  47  
  48          // remove original file
  49          @unlink($_filepath);
  50  
  51          // rename tmp file
  52          $success = rename($_tmp_file, $_filepath);
  53          if (!$success) {
  54              error_reporting($_error_reporting);
  55              throw new SmartyException("unable to write file {$_filepath}");
  56              return false;
  57          }
  58  
  59          if ($smarty->_file_perms !== null) {
  60              // set file permissions
  61              chmod($_filepath, $smarty->_file_perms);
  62              umask($old_umask);
  63          }
  64          error_reporting($_error_reporting);
  65          return true;
  66      }
  67  
  68  }
  69  
  70  ?>


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1