Example #1
0
 /**
  * Simplifica el html
  * @param $input
  * @return mixed
  */
 function simplificarHTML($input)
 {
     if (trim($input) === "") {
         return $input;
     }
     // Remove extra white-space(s) between HTML attribute(s)
     $input = preg_replace_callback('#<([^\\/\\s<>!]+)(?:\\s+([^<>]*?)\\s*|\\s*)(\\/?)>#s', function ($matches) {
         return '<' . $matches[1] . preg_replace('#([^\\s=]+)(\\=([\'"]?)(.*?)\\3)?(\\s+|$)#s', ' $1$2', $matches[2]) . $matches[3] . '>';
     }, str_replace("\r", "", $input));
     // Minify inline CSS declaration(s)
     if (strpos($input, ' style=') !== false) {
         $input = preg_replace_callback('#<([^<]+?)\\s+style=([\'"])(.*?)\\2(?=[\\/\\s>])#s', function ($matches) {
             return '<' . $matches[1] . ' style=' . $matches[2] . minify_css($matches[3]) . $matches[2];
         }, $input);
     }
     return preg_replace(array('#<(img|input)(>| .*?>)#s', '#(<!--.*?-->)|(>)(?:\\n*|\\s{2,})(<)|^\\s*|\\s*$#s', '#(<!--.*?-->)|(?<!\\>)\\s+(<\\/.*?>)|(<[^\\/]*?>)\\s+(?!\\<)#s', '#(<!--.*?-->)|(<[^\\/]*?>)\\s+(<[^\\/]*?>)|(<\\/.*?>)\\s+(<\\/.*?>)#s', '#(<!--.*?-->)|(<\\/.*?>)\\s+(\\s)(?!\\<)|(?<!\\>)\\s+(\\s)(<[^\\/]*?\\/?>)|(<[^\\/]*?\\/?>)\\s+(\\s)(?!\\<)#s', '#(<!--.*?-->)|(<[^\\/]*?>)\\s+(<\\/.*?>)#s', '#<(img|input)(>| .*?>)<\\/\\1>#s', '#(&nbsp;)&nbsp;(?![<\\s])#', '#(?<=\\>)(&nbsp;)(?=\\<)#', '#\\s*<!--(?!\\[if\\s).*?-->\\s*|(?<!\\>)\\n+(?=\\<[^!])#s'), array('<$1$2</$1>', '$1$2$3', '$1$2$3', '$1$2$3$4$5', '$1$2$3$4$5$6$7', '$1$2$3', '<$1$2', '$1 ', '$1', ""), $input);
 }
function compress_file($file, $tipo = 'js')
{
    global $root_dir;
    $result = file_get_contents($root_dir . 'img/' . $file);
    $len_antes = strlen($result);
    echo '<tr><td><b>' . strtoupper($tipo) . '</b></td><td>' . $file . '</td><td align="right"><b>' . num($len_antes) . '</b>bytes</td>';
    switch ($tipo) {
        case 'js':
            $result = minify_js($result);
            break;
        case 'css':
            $result = minify_css($result);
            $result = str_replace('url(img/', 'url(lib/kickstart/css/img/', $result);
            /* corrige URLs de kickstart (codigo malo) */
            $result = str_replace('url(\'img/', 'url(\'lib/kickstart/css/img/', $result);
            /* corrige URLs de kickstart (codigo malo) */
            break;
    }
    $len_ahora = strlen($result);
    echo '<td align="right">- <b>' . num($len_antes - $len_ahora) . '</b>bytes = </td><td align="right"><b>' . num($len_ahora) . '</b>bytes</td><td align="right">' . num(100 - $len_ahora * 100 / $len_antes, 1) . '%</td></tr>';
    $result = '/* ' . $file . ' */' . "\n" . $result . "\n";
    return $result;
}
Example #3
0
function convertUrl($url, $count)
{
    global $settings, $mimeTypes, $fileDir;
    static $baseUrl = '';
    $url = trim($url);
    if (preg_match('@^[^/]+:@', $url)) {
        return $url;
    }
    $fileType = substr(strrchr($url, '.'), 1);
    if (isset($mimeTypes[$fileType])) {
        $mimeType = $mimeTypes[$fileType];
    } elseif (function_exists('mime_content_type')) {
        $mimeType = mime_content_type($url);
    } else {
        $mimeType = null;
    }
    if (!$settings['embed'] || !file_exists($fileDir . $url) || $settings['embedMaxSize'] > 0 && filesize($fileDir . $url) > $settings['embedMaxSize'] || !$fileType || in_array($fileType, $settings['embedExceptions']) || !$mimeType || $count > 1) {
        if (strpos($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME'] . '?') === 0 || strpos($_SERVER['REQUEST_URI'], rtrim(dirname($_SERVER['SCRIPT_NAME']), '\\/') . '/?') === 0) {
            if (!$baseUrl) {
                return $fileDir . $url;
            }
        }
        return $baseUrl . $url;
    }
    $contents = file_get_contents($fileDir . $url);
    if ($fileType == 'css') {
        $oldFileDir = $fileDir;
        $fileDir = rtrim(dirname($fileDir . $url), '\\/') . '/';
        $oldBaseUrl = $baseUrl;
        $baseUrl = 'http' . (@$_SERVER['HTTPS'] ? 's' : '') . '://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '\\/') . '/' . $fileDir;
        $contents = minify_css($contents);
        $fileDir = $oldFileDir;
        $baseUrl = $oldBaseUrl;
    }
    $base64 = base64_encode($contents);
    return 'data:' . $mimeType . ';base64,' . $base64;
}
/**
 * Compiles, and minifies a file
 * @param $file string The filename to process
 */
function parseFile($file)
{
    echo "Compiling {$file}\n";
    $contents = file_get_contents($file);
    $extension = "";
    if (strpos($file, ".coffee")) {
        $ar = compile_coffee($contents, true, $file);
        $contents = $ar["contents"];
        $file = $ar["file"];
        $extension = ".js";
    }
    if (strpos($file, ".js") || $extension == ".js") {
        $ar = minify_js($contents, true, $file);
        $contents = $ar["contents"];
        $file = $ar["file"];
        $extension = ".min.js";
    }
    if (strpos($file, ".css")) {
        $ar = minify_css($contents, true, $file);
        $contents = $ar["contents"];
        $file = $ar["file"];
        $extension = ".min.css";
    }
}
Example #5
0
function regenere_css($css_file, $css)
{
    global $auto_css;
    $values = array();
    $_debut = chrono();
    // get content of master css file (if specified, $css_file!='')
    // or use the content of $css to generate the merged file
    if ($css_file != '') {
        $css = file_get_contents($auto_css['path_to_css_file'] . $css_file);
    } else {
        $css_file = $auto_css['merged_css_filename'];
    }
    // burn all non auto_css comments
    $css = preg_replace('#\\/\\*[^*=]+\\*/#', ' ', $css);
    // extract from comments
    preg_match_all('#\\/\\*([^*]+\\=[^*]+)\\*/#', $css, $init);
    $variables = implode($init[0], " \n ");
    // process values
    $nb = preg_match_all('#([^\\:\\t =;"\']+)[ +]?=[ +]?\\"(.+)(?=\\")#', $variables, $vars);
    if (count($vars[1]) > 0) {
        $values = array_combine($vars[1], $vars[2]);
    }
    // process functions
    $_ = '[ +]?';
    $reg_nb = '([0-9]+)';
    $reg_colORvar = '(\\#[a-fA-F0-9]+|[^\\: =;"\']+)';
    $reg_path = '("?[a-zA-Z0-9./_-]+"?)';
    $reg_var = '([^\\: =;"\'\\<\\>\\)]+)';
    $reg_darkenlight = '(lighten|darken)\\(' . $reg_colORvar . $_ . ',' . $_ . $reg_nb;
    $reg_reverse = '(reverse)\\(' . $reg_colORvar;
    $reg_dimensions = '(dimensions)\\(' . $reg_path;
    $regex = '#' . $reg_var . $_ . '=' . $_ . '(?:(?:' . $reg_darkenlight . ')|(?:' . $reg_reverse . ')|(?:' . $reg_dimensions . '))(?=\\))#';
    $nb = preg_match_all($regex, $variables, $vars);
    if ($nb > 0) {
        for ($i = 0; $i < count($vars[1]); $i++) {
            // every variables in css
            if ($vars[2][$i] != '') {
                // lighten/darken
                $function = $vars[2][$i];
                $firstarg = $vars[3][$i];
                $secondarg = $vars[4][$i];
                if ($firstarg[0] == '#') {
                    $values[$vars[1][$i]] = $function($firstarg, $secondarg);
                } else {
                    $values[$vars[1][$i]] = $function($values[$firstarg], $secondarg);
                }
                // function with variable
            }
            if ($vars[5][$i] != '') {
                // reverse
                $function = $vars[5][$i];
                $firstarg = $vars[6][$i];
                if ($firstarg[0] == '#') {
                    $values[$vars[1][$i]] = $function($firstarg);
                } else {
                    $values[$vars[1][$i]] = $function($values[$firstarg]);
                }
                // function with variable
            }
            if ($vars[7][$i] != '') {
                // dimensions
                $function = $vars[7][$i];
                $firstarg = $vars[8][$i];
                if ($firstarg[0] == '"') {
                    $values[$vars[1][$i]] = $function($auto_css['path_to_css_file'] . str_replace('"', '', $firstarg));
                } else {
                    $values[$vars[1][$i]] = $function($auto_css['path_to_css_file'] . $values[$firstarg]);
                }
                // width variable
            }
        }
    }
    // remove parameters comments
    $css = preg_replace('#\\/\\*[^*]+\\=[^*]+\\*/#', ' ', $css);
    // and replaces all the keys with the values
    $var = array_keys($values);
    $var = array_map('trim', $var);
    $rempl = array_values($values);
    //Here, auto_css applies your string replacement rules;
    if ($auto_css['use_values_as_regex_rules']) {
        // values are regex rules
        $css = preg_replace($var, $rempl, $css);
    } else {
        // values are only a simple string replacement
        while ($css != str_replace($var, $rempl, $css)) {
            $css = str_replace($var, $rempl, $css);
        }
    }
    // here, it applies its own replacement rules
    if ($auto_css['allow_auto_css_regex_replacement']) {
        $css = auto_parse($css);
    }
    if (!$auto_css['reset_css_added']) {
        // adds reset css only to first file
        $css = addreset() . $css;
        $auto_css['reset_css_added'] = true;
    }
    if ($auto_css['minifie'] == true) {
        $css = minify_css($css);
    }
    $t = round(chrono() - $_debut, 6);
    $css = '/*Generated in ' . $t . 's with auto_css v' . $auto_css['version'] . '*/' . "\n" . $css;
    // save computed css
    file_put_contents($auto_css['path_to_css_file'] . 'computed_' . $css_file, $css);
    // coordinate all the dates
    $date_css = time();
    touch($auto_css['path_to_css_file'] . 'computed_' . $css_file, $date_css);
    touch(me(), $date_css);
}
Example #6
0
/**
 * Performs minifying.
 * 
 * This is best called from SysAdmin.
 * @param array $paths Array fo paths to scan for content
 * @param string $target_base_name Base name for the minify files
 * @param string $nc_argument NoCache argument to add to the filename
 * @return void
 */
function minify_all($paths, $target_base_name, $nc_argument)
{
    $target_base_name .= isSSL() ? ".1" : ".0";
    foreach (system_glob($target_base_name . ".*.*") as $f) {
        unlink($f);
    }
    $v = preg_replace('/[^\\d]*/', "", $nc_argument);
    minify_js($paths, $target_base_name . ".{$v}.js");
    minify_css($paths, $target_base_name . ".{$v}.css", $v);
}
Example #7
0
 /**
  * JS/CSS minification function
  *
  * @param string $code Code to minify
  * @param string $type Type: 'js' or 'css'
  *
  * @return string Minified code
  */
 public static function minify($code, $type = 'js')
 {
     if ($type == 'js') {
         require_once './lib/jsmin.php';
         $code = JSMin::minify($code);
     } elseif ($type == 'css') {
         require_once './lib/cssmin.php';
         $code = minify_css($code);
     }
     return $code;
 }
Example #8
0
 */
$scripts = array('functions.js', 'load-comic.js', 'clicks.js', 'templates/home-page.js', 'templates/error-404-page.js', 'templates/legal-notice-page.js', 'templates/root-page.js', 'translation.js', 'handle-back-click.js', 'init.js');
$script_path = $base_path . 'scripts/';
$combined_scripts = '
var home_url = "' . $base_url . '";
';
foreach ($scripts as $script) {
    $combined_scripts .= file_get_contents($script_path . $script);
}
$minified_script = minify_js($combined_scripts);
file_put_contents($base_path . 'public_html/minified.js', $minified_script);
/**
 * Minifying CSS.
 */
$css = file_get_contents('style.css');
$minified_css = minify_css($css);
file_put_contents($base_path . 'public_html/minified.css', $minified_css);
/**
 * Minify HTML.
 */
ob_start();
?>
<!DOCTYPE html>
<html lang="en_US">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width">
	<link rel="profile" href="http://gmpg.org/xfn/11">
	<title>Comic Jet</title>
	<link rel="stylesheet" href="<?php 
echo $base_url;
Example #9
0
<style type="text/css">
<?php 
$cssFiles = array('styles.css');
$buffer = '';
foreach ($cssFiles as $cssFile) {
    $buffer .= file_get_contents($cssFile);
}
echo minify_css($buffer);
?>
</style>
<?php 
function minify_css($input)
{
    $input = preg_replace('!/\\*[^*]*\\*+([^/][^*]*\\*+)*/!', '', $input);
    $input = str_replace(': ', ':', $input);
    return str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $input);
}
 /**
  * 压缩文件生成 file.pack.js的文件, ============================  压缩的具体实现部分 ======================
  * 并返回改文件的路径
  * 
  * @param mixed $filePath  "sys/index.css"  
  * @return 生成文件的相对路径
  */
 private function Compress($sourceFile)
 {
     $strArray = split("/", $sourceFile);
     //=sys/index.css
     $strTemp = "release/" . join("/", array_slice($strArray, 1));
     //release/index.css
     $from_Str = "." . $this->Site["FileType"];
     //.css
     $replace_Str = ".p." . $this->Site["FileType"];
     //.p.css
     $packFilePath = str_replace($from_Str, $replace_Str, $strTemp);
     //上面是完成这样的一个路径转换
     //sys/index.css	=>	release/index.css	=>	release/index.p.css
     $__sourceFile = $this->getPath($sourceFile);
     $__packFilePath = $this->getPath($packFilePath);
     //Begin:开始压缩
     if ($this->Site["FileType"] == "css") {
         minify_css($__sourceFile, $__packFilePath);
     } else {
         if ($this->Site["FileType"] == "js") {
             minify_javascript($__sourceFile, $__packFilePath);
         }
     }
     //End
     return $packFilePath;
 }
Example #11
0
 public static final function compress_cssjs()
 {
     if (count(self::$compress_files) == 0) {
         return false;
     }
     $lancement_compression = false;
     foreach (self::$compress_files as $dn_compress) {
         $dir = sprintf($dn_compress[0], self::$design);
         $file = $dn_compress[1];
         $type = $dn_compress[2];
         /**
          *   Si le fichier a bien été modifié, on lance la compression
          **/
         if (!is_file($dir . $file . '_min.' . $type)) {
             if ($type == 'css') {
                 $content_file = minify_css($dir . $file . '.' . $type);
             }
             $content_file = str_replace("\n", '', $content_file);
             file_put_contents($dir . $file . '_min.' . $type, $content_file);
             $lancement_compression = true;
         }
     }
     // Si un fichier a été minifié, on met à jour le fichier cache des dernières modifications
     if ($lancement_compression) {
         self::gen_last_cache_file();
     }
 }
Example #12
0
 /**
  * Beta! 
  * Build or load minified CSS and return an output.
  * @param string $css_file css file with relative name
  * @param string $group CSS group name for caching 
  * @return string
  */
 public function LoadMinifyCSS($css_file, $group = 'css')
 {
     if (empty($css_file)) {
         return '';
     }
     //build hash key
     $key = '';
     //get file time stamp
     $key .= $css_file . "-" . filemtime($this->templateResource($css_file, 'file'));
     $key = $group . "." . AEncryption::getHash($group . '-' . $key);
     //check if hash is created and load
     $css_data = $this->cache->pull($key);
     if ($css_data === false) {
         require_once DIR_CORE . 'helper/html-css-js-minifier.php';
         //build minified css and save
         $path = dirname($this->templateResource($css_file, 'http'));
         $new_content = file_get_contents($this->templateResource($css_file, 'file'));
         //replace relative directories with full path
         $css_data = preg_replace('/\\.\\.\\//', $path . '/../', $new_content);
         $css_data = minify_css($css_data);
         $this->cache->push($key, $css_data);
     }
     return $css_data;
 }
Example #13
0
function inline_css($url, $minify = true)
{
    $base_url = get_bloginfo('wpurl');
    $path = false;
    if (strpos($url, $base_url) !== FALSE) {
        $path = str_replace($base_url, rtrim(ABSPATH, '/'), $url);
    } elseif ($url[0] == '/' && $url[1] != '/') {
        // url like /wp-conten/... and not like //google.com/...
        $path = rtrim(ABSPATH, '/') . $url;
        $url = $base_url . $url;
    }
    if ($path && file_exists($path)) {
        $css = file_get_contents($path);
        if ($minify) {
            $css = minify_css($css);
        }
        $css = fix_css_urls($css, $url);
        echo $css;
        return true;
    } else {
        //~ echo "/* !!! can not open file {$url}[{$path}] !!! */";
        return false;
    }
}
Example #14
0
<?php

if (!isset($_GET['f'])) {
    exit;
}
include '../base.php';
$out = '';
foreach ($_GET['f'] as $file) {
    if (!file_exists($path = ABS_PATH . $file)) {
        continue;
    }
    $content = file_get_contents($path);
    $out .= minify_css($content);
}
header('Content-Type: text/css');
echo $out;