+
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
/** This file is part of KCFinder project
|
||||
*
|
||||
* @desc Minify JS & CSS
|
||||
* @package KCFinder
|
||||
* @version 3.12
|
||||
* @author Pavel Tzonkov <sunhater@sunhater.com>
|
||||
* @copyright 2010-2014 KCFinder Project
|
||||
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
|
||||
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
|
||||
* @link http://kcfinder.sunhater.com
|
||||
*/
|
||||
|
||||
namespace kcfinder;
|
||||
|
||||
class minifier {
|
||||
|
||||
protected $config;
|
||||
protected $type = "js";
|
||||
protected $minCmd = "";
|
||||
protected $mime = array(
|
||||
'js' => "text/javascript",
|
||||
'css' => "text/css"
|
||||
);
|
||||
|
||||
public function __construct($type=null) {
|
||||
$this->config = require("conf/config.php");
|
||||
$type = strtolower($type);
|
||||
if (isset($this->mime[$type]))
|
||||
$this->type = $type;
|
||||
if (isset($this->config["_{$this->type}MinCmd"]))
|
||||
$this->minCmd = $this->config["_{$this->type}MinCmd"];
|
||||
}
|
||||
|
||||
public function minify($cacheFile=null, $dir=null) {
|
||||
if ($dir === null)
|
||||
$dir = dirname($_SERVER['SCRIPT_FILENAME']);
|
||||
|
||||
// MODIFICATION TIME FILES
|
||||
$mtFiles = array(
|
||||
__FILE__,
|
||||
$_SERVER['SCRIPT_FILENAME'],
|
||||
"conf/config.php"
|
||||
);
|
||||
|
||||
// GET SOURCE CODE FILES
|
||||
$files = dir::content($dir, array(
|
||||
'types' => "file",
|
||||
'pattern' => '/^.*\.' . $this->type . '$/'
|
||||
));
|
||||
|
||||
// GET NEWEST MODIFICATION TIME
|
||||
$mtime = 0;
|
||||
foreach (array_merge($mtFiles, $files) as $file) {
|
||||
$fmtime = filemtime($file);
|
||||
if ($fmtime > $mtime)
|
||||
$mtime = $fmtime;
|
||||
}
|
||||
|
||||
$header = "Content-Type: {$this->mime[$this->type]}";
|
||||
|
||||
// GET SOURCE CODE FROM CLIENT HTTP CACHE IF EXISTS
|
||||
httpCache::checkMTime($mtime, $header);
|
||||
|
||||
// OUTPUT SOURCE CODE
|
||||
header($header);
|
||||
|
||||
// GET SOURCE CODE FROM SERVER-SIDE CACHE
|
||||
if (($cacheFile !== null) &&
|
||||
file_exists($cacheFile) &&
|
||||
(
|
||||
(filemtime($cacheFile) >= $mtime) ||
|
||||
!is_writable($cacheFile) // if cache file cannot be modified
|
||||
) // the script will output it always
|
||||
) { // with its distribution content
|
||||
readfile($cacheFile);
|
||||
die;
|
||||
}
|
||||
|
||||
// MINIFY AND JOIN SOURCE CODE
|
||||
$source = "";
|
||||
foreach ($files as $file) {
|
||||
|
||||
if (strlen($this->minCmd) && (substr($file, 4, 1) != "_")) {
|
||||
$cmd = str_replace("{file}", $file, $this->minCmd);
|
||||
$source .= `$cmd`;
|
||||
|
||||
} else
|
||||
$source .= file_get_contents($file);
|
||||
}
|
||||
|
||||
// UPDATE SERVER-SIDE CACHE
|
||||
if (($cacheFile !== null) &&
|
||||
(
|
||||
is_writable($cacheFile) ||
|
||||
(
|
||||
!file_exists($cacheFile) &&
|
||||
dir::isWritable(dirname($cacheFile))
|
||||
)
|
||||
)
|
||||
) {
|
||||
file_put_contents($cacheFile, $source);
|
||||
touch($cacheFile, $mtime);
|
||||
}
|
||||
|
||||
// OUTPUT SOURCE CODE
|
||||
echo $source;
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user