Вход Регистрация
Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/public/min/lib/Minify/Cache/File.php
Строк: 141
<?php
/**
 * Class Minify_Cache_File  
 * @package Minify
 */

class Minify_Cache_File {
    
    public function 
__construct($path ''$fileLocking false)
    {
        if (! 
$path) {
            
$path self::tmp();
        }
        
$this->_locking $fileLocking;
        
$this->_path $path;
    }

    
/**
     * Write data to cache.
     *
     * @param string $id cache id (e.g. a filename)
     * 
     * @param string $data
     * 
     * @return bool success
     */
    
public function store($id$data)
    {
        
$flag $this->_locking
            
LOCK_EX
            
null;
        
$file $this->_path '/' $id;
        if (! @
file_put_contents($file$data$flag)) {
            
$this->_log("Minify_Cache_File: Write failed to '$file'");
        }
        
// write control
        
if ($data !== $this->fetch($id)) {
            @
unlink($file);
            
$this->_log("Minify_Cache_File: Post-write read failed for '$file'");
            return 
false;
        }
        return 
true;
    }
    
    
/**
     * Get the size of a cache entry
     *
     * @param string $id cache id (e.g. a filename)
     * 
     * @return int size in bytes
     */
    
public function getSize($id)
    {
        return 
filesize($this->_path '/' $id);
    }
    
    
/**
     * Does a valid cache entry exist?
     *
     * @param string $id cache id (e.g. a filename)
     * 
     * @param int $srcMtime mtime of the original source file(s)
     * 
     * @return bool exists
     */
    
public function isValid($id$srcMtime)
    {
        
$file $this->_path '/' $id;
        return (
is_file($file) && (filemtime($file) >= $srcMtime));
    }
    
    
/**
     * Send the cached content to output
     *
     * @param string $id cache id (e.g. a filename)
     */
    
public function display($id)
    {
        if (
$this->_locking) {
            
$fp fopen($this->_path '/' $id'rb');
            
flock($fpLOCK_SH);
            
fpassthru($fp);
            
flock($fpLOCK_UN);
            
fclose($fp);
        } else {
            
readfile($this->_path '/' $id);            
        }
    }
    
    
/**
     * Fetch the cached content
     *
     * @param string $id cache id (e.g. a filename)
     * 
     * @return string
     */
    
public function fetch($id)
    {
        if (
$this->_locking) {
            
$fp fopen($this->_path '/' $id'rb');
            
flock($fpLOCK_SH);
            
$ret stream_get_contents($fp);
            
flock($fpLOCK_UN);
            
fclose($fp);
            return 
$ret;
        } else {
            return 
file_get_contents($this->_path '/' $id);
        }
    }
    
    
/**
     * Fetch the cache path used
     *
     * @return string
     */
    
public function getPath()
    {
        return 
$this->_path;
    }

    
/**
     * Get a usable temp directory
     *
     * Adapted from Solar/Dir.php
     * @author Paul M. Jones <pmjones@solarphp.com>
     * @license http://opensource.org/licenses/bsd-license.php BSD
     * @link http://solarphp.com/trac/core/browser/trunk/Solar/Dir.php
     *
     * @return string
     */
    
public static function tmp()
    {
        static 
$tmp null;
        if (! 
$tmp) {
            
$tmp function_exists('sys_get_temp_dir')
                ? 
sys_get_temp_dir()
                : 
self::_tmp();
            
$tmp rtrim($tmpDIRECTORY_SEPARATOR);
        }
        return 
$tmp;
    }

    
/**
     * Returns the OS-specific directory for temporary files
     *
     * @author Paul M. Jones <pmjones@solarphp.com>
     * @license http://opensource.org/licenses/bsd-license.php BSD
     * @link http://solarphp.com/trac/core/browser/trunk/Solar/Dir.php
     *
     * @return string
     */
    
protected static function _tmp()
    {
        
// non-Windows system?
        
if (strtolower(substr(PHP_OS03)) != 'win') {
            
$tmp = empty($_ENV['TMPDIR']) ? getenv('TMPDIR') : $_ENV['TMPDIR'];
            if (
$tmp) {
                return 
$tmp;
            } else {
                return 
'/tmp';
            }
        }
        
// Windows 'TEMP'
        
$tmp = empty($_ENV['TEMP']) ? getenv('TEMP') : $_ENV['TEMP'];
        if (
$tmp) {
            return 
$tmp;
        }
        
// Windows 'TMP'
        
$tmp = empty($_ENV['TMP']) ? getenv('TMP') : $_ENV['TMP'];
        if (
$tmp) {
            return 
$tmp;
        }
        
// Windows 'windir'
        
$tmp = empty($_ENV['windir']) ? getenv('windir') : $_ENV['windir'];
        if (
$tmp) {
            return 
$tmp;
        }
        
// final fallback for Windows
        
return getenv('SystemRoot') . '\temp';
    }

    
/**
     * Send message to the Minify logger
     * @param string $msg
     * @return null
     */
    
protected function _log($msg)
    {
        require_once 
'Minify/Logger.php';
        
Minify_Logger::log($msg);
    }
    
    private 
$_path null;
    private 
$_locking null;
}
Онлайн: 1
Реклама