/var/www/hkosl.com/alliancealliance/uploader/core/class/minifier.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?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) {
        require 
"conf/config.php";
        
$this->config $_CONFIG;
        
$type strtolower($type);
        if (isset(
$this->mime[$type]))
            
$this->type $type;
        if (isset(
$_CONFIG["_{$this->type}MinCmd"]))
            
$this->minCmd $_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($file41) != "_")) {
                
$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;

    }
}

?>