!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

E:\nuevo\htdocs\bogotacumbredelclima\wp-content\plugins\w3-total-cache\lib\W3\   drwxrwxrwx
Free 1.06 GB of 239.26 GB (0.44%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     Minify.php (37.72 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * W3 Minify object
 */

// Define repeated regex to simplify changes
define('MINIFY_AUTO_FILENAME_REGEX''([a-zA-Z0-9-_]+)\\.(css|js)');
define('MINIFY_MANUAL_FILENAME_REGEX''([a-f0-9]+)\\/(.+)\\.(include(\\-(footer|body))?)\\.[a-f0-9]+\\.(css|js)');
/**
 * Class W3_Minify
 */
class W3_Minify {
    
/**
     * Config
     *
     * @var W3_Config
     */
    
var $_config null;

    
/**
     * Admin configuration
     *
     * @var W3_ConfigAdmin
     */
    
var $_config_admin null;

    
/**
     * Tracks if an error has occurred.
     *
     * @var bool
     */
    
var $_error_occurred false;

    
/**
     * Returns instance. for backward compatibility with 0.9.2.3 version of /wp-content files
     *
     * @return W3_Minify
     */
    
function instance() {
        return 
w3_instance('W3_Minify');
    }

    
/**
     * PHP5 constructor
     */
    
function __construct() {
        
$this->_config w3_instance('W3_Config');
        
$this->_config_admin w3_instance('W3_ConfigAdmin');
    }

    
/**
     * PHP4 constructor
     */
    
function W3_Minify() {
        
$this->__construct();
    }

    
/**
     * Runs minify
     *
     * @param string|null $file
     *
     * @return void
     */
    
function process($file NULL) {
        
w3_require_once(W3TC_LIB_W3_DIR '/Request.php');

        
/**
         * Check for rewrite test request
         */
        
$rewrite_test W3_Request::get_boolean('w3tc_rewrite_test');

        if (
$rewrite_test) {
            echo 
'OK';
            exit();
        }

        
$rewrite_test W3_Request::get_string('test_file');

        if (
$rewrite_test) {
            
$cache $this->_get_cache();
            
header('Content-type: text/css');

            if (
$cache->store(basename($rewrite_test), 'content ok')) {
                if ((
function_exists('gzencode') &&
                    
$this->_config->get_boolean('browsercache.enabled') &&
                    
$this->_config->get_boolean('browsercache.cssjs.compression')))
                    if (!
$cache->store(basename($rewrite_test) . '.gzip'gzencode('content ok'))) {
                        echo 
'error storing';
                        exit();
                    }

                if (
$this->_config->get_string('minify.engine') != 'file') {
                    if (
$cache->fetch(basename($rewrite_test)) == 'content ok') {
                        echo 
'content ok';
                    } else
                        echo 
'error storing';
                } else
                    echo 
'retry';
            } else {
                echo 
'error storing';
            }
            exit();
        }

        if (
is_null($file))
            
$file W3_Request::get_string('file');

        if (!
$file) {
            
$this->error('File param is missing'false);
            return;
        }

        
// remove blog_id
        
$levels '';
        if (
defined('W3TC_BLOG_LEVELS')) {
            for (
$n 0$n W3TC_BLOG_LEVELS$n++)
                
$levels .= '[0-9]+\/';
        }

        if (
preg_match('~^(' $levels '[0-9]+)\/(.+)$~'$file$matches))
            
$file $matches[2];

        
// parse file
        
$hash '';
        
$matches null;
        
$location '';
        
$type '';

        if (
preg_match('~^' MINIFY_AUTO_FILENAME_REGEX .'$~'$file$matches)) {
            list(, 
$hash$type) = $matches;
        } elseif (
preg_match('~^' MINIFY_MANUAL_FILENAME_REGEX '$~'$file$matches)) {
                list(, 
$theme$template$location, , , $type) = $matches;
        } else {
            
$this->error(sprintf('Bad file param format: "%s"'$file), false);
            return;
        }

        
w3_require_once(W3TC_LIB_MINIFY_DIR '/Minify.php');
        
w3_require_once(W3TC_LIB_MINIFY_DIR '/HTTP/Encoder.php');

        
/**
         * Fix DOCUMENT_ROOT
         */
        
$_SERVER['DOCUMENT_ROOT'] = w3_get_document_root();

        
/**
         * Set cache engine
         */
        
Minify::setCache($this->_get_cache());

        
/**
         * Set cache ID
         */
        
$cache_id $this->get_cache_id($file);

        
Minify::setCacheId($cache_id);

        
/**
         * Set logger
         */
        
w3_require_once(W3TC_LIB_MINIFY_DIR '/Minify/Logger.php');
        
Minify_Logger::setLogger(array(
            &
$this,
            
'error'));

        
/**
         * Set options
         */
        
$browsercache $this->_config->get_boolean('browsercache.enabled');

        
$serve_options array_merge($this->_config->get_array('minify.options'), array(
             
'debug' => $this->_config->get_boolean('minify.debug'),
             
'maxAge' => $this->_config->get_integer('browsercache.cssjs.lifetime'),
             
'encodeOutput' => ($browsercache && $this->_config->get_boolean('browsercache.cssjs.compression')),
             
'bubbleCssImports' => ($this->_config->get_string('minify.css.imports') == 'bubble'),
             
'processCssImports' => ($this->_config->get_string('minify.css.imports') == 'process'),
             
'cacheHeaders' => array(
                 
'use_etag' => ($browsercache && $this->_config->get_boolean('browsercache.cssjs.etag')),
                 
'expires_enabled' => ($browsercache && $this->_config->get_boolean('browsercache.cssjs.expires')),
                 
'cacheheaders_enabled' => ($browsercache && $this->_config->get_boolean('browsercache.cssjs.cache.control')),
                 
'cacheheaders' => $this->_config->get_string('browsercache.cssjs.cache.policy')
             )
        ));

        
/**
         * Set sources
         */
        
if ($hash) {
            
$_GET['f'] = $this->get_custom_files($hash$type);
        } else {
            
$_GET['g'] = $location;
            
$serve_options['minApp']['groups'] = $this->get_groups($theme$template$type);
        }

        
/**
         * Set minifier
         */
        
$w3_minifier w3_instance('W3_Minifier');

        if (
$type == 'js') {
            
$minifier_type 'application/x-javascript';

            switch (
true) {
                case ((
$hash || $location == 'include') && $this->_config->get_boolean('minify.js.combine.header')):
                case (
$location == 'include-body' && $this->_config->get_boolean('minify.js.combine.body')):
                case (
$location == 'include-footer' && $this->_config->get_boolean('minify.js.combine.footer')):
                    
$engine 'combinejs';
                    break;

                default:
                    
$engine $this->_config->get_string('minify.js.engine');

                    if (!
$w3_minifier->exists($engine) || !$w3_minifier->available($engine)) {
                        
$engine 'js';
                    }
                    break;
            }

        } elseif (
$type == 'css') {
            
$minifier_type 'text/css';

            if ((
$hash || $location == 'include') && $this->_config->get_boolean('minify.css.combine')) {
                
$engine 'combinecss';
            } else {
                
$engine $this->_config->get_string('minify.css.engine');

                if (!
$w3_minifier->exists($engine) || !$w3_minifier->available($engine)) {
                    
$engine 'css';
                }
            }
        }

        
/**
         * Initialize minifier
         */
        
$w3_minifier->init($engine);

        
$serve_options['minifiers'][$minifier_type] = $w3_minifier->get_minifier($engine);
        
$serve_options['minifierOptions'][$minifier_type] = $w3_minifier->get_options($engine);

        
/**
         * Send X-Powered-By header
         */
        
if ($browsercache && $this->_config->get_boolean('browsercache.cssjs.w3tc')) {
            @
header('X-Powered-By: ' W3TC_POWERED_BY);
        }

        
/**
         * Minify!
         */
        
try {
            
Minify::serve('MinApp'$serve_options);
        } catch (
Exception $exception) {
            
$this->error($exception->getMessage());
        }

        if (!
$this->_error_occurred && $this->_config_admin->get_boolean('notes.minify_error')) {
            
$error_file $this->_config_admin->get_string('minify.error.file');
            if (
$error_file == $file) {
                
$this->_config_admin->set('notes.minify_error'false);
                
$this->_config_admin->save();
            }
        }
    }

    
/**
     * Flushes cache
     *
     * @return boolean
     */
    
function flush() {
        
$cache $this->_get_cache();

        return 
$cache->flush();
    }

    
/**
     * Creates file with content of minify file
     * 
     * @param string $file
     * @param string $file_name
     */
    
function store_to_file($file$file_name) {
        
ob_start();
        
$this->process($file);
        
$data ob_get_clean();
        
        if (!
file_exists($file_name)) {
            
w3_require_once(W3TC_INC_DIR '/functions/file.php');
            if(!
file_exists(dirname($file_name)))
                
w3_mkdir_from(dirname($file_name), W3TC_CACHE_DIR);
        }
        @
file_put_contents($file_name$data);
    }
    
    
/**
     * Returns custom data storage for minify file, based on url
     * 
     * @param string $url
     * @return mixed
     */
    
function get_url_custom_data($url) {
        if (
preg_match('~/' MINIFY_AUTO_FILENAME_REGEX .'$~'$url$matches)) {
            list(, 
$hash$type) = $matches;

            
$key $this->get_custom_data_key($hash$type);
            return 
$this->_cache_get($key);
        }

        return 
null;
    }

    
/**
     * Returns custom data storage for minify file
     * 
     * @param string $file
     * @param mixed $data
     */
    
function set_file_custom_data($file$data) {
        if (
preg_match('~' MINIFY_AUTO_FILENAME_REGEX .'$~'$file$matches)) {
            list(, 
$hash$type) = $matches;

            
$key $this->get_custom_data_key($hash$type);
            
$this->_cache_set($key$data);
        }
    }

    
/**
     * Log
     *
     * @param string $msg
     * @return bool
     */
    
function log($msg) {
        
$data sprintf("[%s] [%s] [%s] %s\n"date('r'), $_SERVER['REQUEST_URI'], (!empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '-'), $msg);
        
$data strtr($data'<>''..');

        
$filename w3_debug_log('minify');
        return @
file_put_contents($filename$dataFILE_APPEND);
    }

    
/**
     * Returns minify groups
     *
     * @param string $theme
     * @param string $template
     * @param string $type
     * @return array
     */
    
function get_groups($theme$template$type) {
        
$result = array();

        switch (
$type) {
            case 
'css':
                
$groups $this->_config->get_array('minify.css.groups');
                break;

            case 
'js':
                
$groups $this->_config->get_array('minify.js.groups');
                break;

            default:
                return 
$result;
        }

        if (isset(
$groups[$theme]['default'])) {
            
$locations = (array) $groups[$theme]['default'];
        } else {
            
$locations = array();
        }

        if (
$template != 'default' && isset($groups[$theme][$template])) {
            
$locations array_merge_recursive($locations, (array) $groups[$theme][$template]);
        }

        foreach (
$locations as $location => $config) {
            if (!empty(
$config['files'])) {
                foreach ((array) 
$config['files'] as $file) {
                    
$file w3_normalize_file_minify2($file);

                    if (
w3_is_url($file)) {
                        
$precached_file $this->_precache_file($file$type);

                        if (
$precached_file) {
                            
$result[$location][$file] = $precached_file;
                        } else {
                            
$this->error(sprintf('Unable to cache remote file: "%s"'$file));
                        }
                    } else {
                        if (!
w3_is_multisite() && strpos(trailingslashit(WP_CONTENT_DIR), trailingslashit(w3_get_site_root())) !== false)
                            
$file ltrim(w3_get_site_path(), '/') . str_replace(ltrim(w3_get_site_path(), '/'), ''$file);

                        
$path w3_get_document_root() . '/' $file;

                        if (
file_exists($path)) {
                            
$result[$location][$file] = '//' $file;
                        } else {
                            
$this->error(sprintf('File "%s" doesn\'t exist'$path));
                        }
                    }
                }
            }
        }

        return 
$result;
    }

    
/**
     * Returns minify cache ID
     *
     * @param string $file
     * @return string
     */
    
function get_cache_id($file) {
        if (
$this->_config->get_string('minify.engine') == 'file') {
            
$cache_id $file;
        } else {
            
$cache_id sprintf('w3tc_%s_minify_%s'w3_get_host_id(), md5($file));
        }

        return 
$cache_id;
    }

    
/**
     * Returns array of group sources
     *
     * @param string $theme
     * @param string $template
     * @param string $location
     * @param string $type
     * @return array
     */
    
function get_sources_group($theme$template$location$type) {
        
$sources = array();
        
$groups $this->get_groups($theme$template$type);

        if (isset(
$groups[$location])) {
            
$files = (array) $groups[$location];

            
$document_root w3_get_document_root();

            foreach (
$files as $file) {
                if (
is_a($file'Minify_Source')) {
                    
$path $file->filepath;
                } else {
                    
$path rtrim($document_root,'/') . '/' ltrim($file'/');
                }

                
$sources[] = $path;
            }
        }

        return 
$sources;
    }

    
/**
     * Returns ID key for group
     *
     * @param  $theme
     * @param  $template
     * @param  $location
     * @param  $type
     * @return string
     */
    
function get_id_key_group($theme$template$location$type) {
        if (
$this->_config->get_string('minify.engine') == 'file') {
            
$key sprintf('%s/%s.%s.%s.id'$theme$template$location$type);
        } else {
            
$key sprintf('w3tc_%s_minify_id_%s'w3_get_host_id(), md5($theme $template $location $type));
        }

        return 
$key;
    }

    
/**
     * Returns id for group
     *
     * @param string $theme
     * @param string $template
     * @param string $location
     * @param string $type
     * @return integer
     */
    
function get_id_group($theme$template$location$type) {
        
$key $this->get_id_key_group($theme$template$location$type);
        
$id $this->_cache_get($key);

        if (
$id === false) {
            
$sources $this->get_sources_group($theme$template$location$type);

            if (
count($sources)) {
                
$id $this->_generate_id($sources$type);

                if (
$id) {
                    
$this->_cache_set($key$id);
                }
            }
        }

        return 
$id;
    }

    
/**
     * Returns custom files key
     *
     * @param string $hash
     * @param string $type
     * @return string
     */
    
function get_custom_data_key($hash$type) {
        if (
$this->_config->get_string('minify.engine') == 'file') {
            
$key sprintf('%s.%s.customdata'$hash$type);
        } else {
            
$key sprintf('w3tc_%s_minify_customdata_%s'w3_get_host_id(), md5($hash $type));
        }

        return 
$key;
    }

    
/**
     * Returns custom files
     *
     * @param string $hash
     * @param string $type
     * @return array
     */
    
function get_custom_files($hash$type) {
        
$files $this->uncompress_minify_files($hash$type);
        
$result = array();
        if (
$files) {
            foreach (
$files as $file) {
                
$file w3_normalize_file_minify2($file);

                if (
w3_is_url($file)) {
                    
$precached_file $this->_precache_file($file$type);

                    if (
$precached_file) {
                        
$result[] = $precached_file;
                    } else {
                        
$this->error(sprintf('Unable to cache remote file: "%s"'$file));
                    }
                } else {
                    
$path w3_get_document_root() . '/' $file;

                    if (
file_exists($path)) {
                        
$result[] = $file;
                    } else {
                        
$this->error(sprintf('File "%s" doesn\'t exist'$path));
                    }
                }
            }
        } else {
            
$this->error(sprintf('Unable to fetch custom files list: "%s.%s"'$hash$type), false404);
        }

        return 
$result;
    }

    
/**
     * Sends error response
     *
     * @param string $error
     * @param boolean $handle
     * @param integer $status
     * @return void
     */
    
function error($error$handle true$status 400) {
        
$debug $this->_config->get_boolean('minify.debug');

        
$this->_error_occurred true;

        if (
$debug) {
            
$this->log($error);
        }

        if (
$handle) {
            
$this->_handle_error($error);
        }

        if (
defined('W3TC_IN_MINIFY')) {
            
status_header($status);

            echo 
'<h1>W3TC Minify Error</h1>';

            if (
$debug) {
                echo 
sprintf('<p>%s.</p>'$error);
            } else {
                echo 
'<p>Enable debug mode to see error message.</p>';
            }

            die();
        }
    }

    
/**
     * Pre-caches external file
     *
     * @param string $url
     * @param string $type
     * @return string
     */
    
function _precache_file($url$type) {
        
$lifetime $this->_config->get_integer('minify.lifetime');
        
$cache_path sprintf('%s/minify_%s.%s'w3_cache_blog_dir('minify'), md5($url), $type);

        if (!
file_exists($cache_path) || @filemtime($cache_path) < (time() - $lifetime)) {
            
w3_require_once(W3TC_INC_DIR '/functions/http.php');
            if (!@
is_dir(dirname($cache_path))) {
                
w3_require_once(W3TC_INC_DIR '/functions/file.php');
                
w3_mkdir_from(dirname($cache_path), W3TC_CACHE_DIR);
            }
            
w3_download($url$cache_path);
        }

        return (
file_exists($cache_path) ? $this->_get_minify_source($cache_path$url) : false);
    }

    
/**
     * Returns minify source
     *
     * @param $file_path
     * @param $url
     * @return Minify_Source
     */
    
function _get_minify_source($file_path$url) {
        
w3_require_once(W3TC_LIB_MINIFY_DIR '/Minify/Source.php');

        return new 
Minify_Source(array(
                                      
'filepath' => $file_path,
                                      
'minifyOptions' => array(
                                          
'prependRelativePath' => $url
                                      
)
                                 ));
    }

    
/**
     * Returns minify cache object
     *
     * @return object
     */
    
function _get_cache() {
        static 
$cache = array();

        if (!isset(
$cache[0])) {
            switch (
$this->_config->get_string('minify.engine')) {
                case 
'memcached':
                    
w3_require_once(W3TC_LIB_W3_DIR '/Cache/Memcached.php');
                    
w3_require_once(W3TC_LIB_MINIFY_DIR '/Minify/Cache/Memcache.php');
                    
$w3_cache_memcached = new W3_Cache_Memcached(array('blog_id' => w3_get_blog_id(),
                                                                        
'instance_id' => w3_get_instance_id(),
                                                                        
'host' =>  w3_get_host(),
                                                                        
'module' => 'minify',
                                                                         
'servers' => $this->_config->get_array('minify.memcached.servers'),
                                                                         
'persistant' => $this->_config->get_boolean('minify.memcached.persistant')
                                                                    ));
                    
$cache[0] = new Minify_Cache_Memcache($w3_cache_memcachedw3_get_blog_id(), w3_get_instance_id());
                    break;

                case 
'apc':
                    
w3_require_once(W3TC_LIB_MINIFY_DIR '/Minify/Cache/APC.php');
                    
$cache[0] = new Minify_Cache_APC(0w3_get_blog_id(), w3_get_instance_id());
                    break;

                case 
'eaccelerator':
                    
w3_require_once(W3TC_LIB_MINIFY_DIR '/Minify/Cache/Eaccelerator.php');
                    
$cache[0] = new Minify_Cache_Eaccelerator(0w3_get_blog_id(), w3_get_instance_id());
                    break;

                case 
'xcache':
                    
w3_require_once(W3TC_LIB_MINIFY_DIR '/Minify/Cache/XCache.php');
                    
$cache[0] = new Minify_Cache_XCache(0w3_get_blog_id(), w3_get_instance_id());
                    break;

                case 
'wincache':
                    
w3_require_once(W3TC_LIB_MINIFY_DIR '/Minify/Cache/Wincache.php');
                    
$cache[0] = new Minify_Cache_Wincache(0w3_get_blog_id(), w3_get_instance_id());
                    break;

                case 
'file':
                default:
                    
w3_require_once(W3TC_LIB_MINIFY_DIR '/Minify/Cache/File.php');

                    
$cache[0] = new Minify_Cache_File(
                        
w3_cache_blog_dir('minify'),
                        array(
                             
'.htaccess',
                             
'index.php',
                             
'*.old'
                        
),
                        
$this->_config->get_boolean('minify.file.locking'),
                        
$this->_config->get_integer('timelimit.cache_flush'),
                        (
w3_get_blog_id() == W3TC_CACHE_MINIFY_DIR null)
                    );
                    break;
            }
        }

        return 
$cache[0];
    }

    
/**
     * Handle minify error
     *
     * @param string $error
     * @return void
     */
    
function _handle_error($error) {
        
$notification $this->_config_admin->get_string('minify.error.notification');

        if (
$notification) {
            
$file W3_Request::get_string('file');
            if (
$file) {
                
$this->_config_admin->set('minify.error.file'$file);
            }

            if (
stristr($notification'admin') !== false) {
                
$this->_config_admin->set('minify.error.last'$error);
                
$this->_config_admin->set('notes.minify_error'true);
            }

            if (
stristr($notification'email') !== false) {
                
$last $this->_config_admin->get_integer('minify.error.notification.last');

                
/**
                 * Prevent email flood: send email every 5 min
                 */
                
if ((time() - $last) > 300) {
                    
$this->_config_admin->set('minify.error.notification.last'time());
                    
$this->_send_notification();
                }
            }

            
$this->_config_admin->save();
        }
    }

    
/**
     * Send E-mail notification when error occurred
     *
     * @return boolean
     */
    
function _send_notification() {
        
$from_email 'wordpress@' w3_get_domain($_SERVER['SERVER_NAME']);
        
$from_name wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
        
$to_name $to_email get_option('admin_email');
        
$body = @file_get_contents(W3TC_INC_DIR '/email/minify_error_notification.php');

        
$headers = array(
            
sprintf('From: "%s" <%s>'addslashes($from_name), $from_email),
            
sprintf('Reply-To: "%s" <%s>'addslashes($to_name), $to_email),
            
'Content-Type: text/html; charset=UTF-8'
        
);

        @
set_time_limit($this->_config->get_integer('timelimit.email_send'));

        
$result = @wp_mail($to_email'W3 Total Cache Error Notification'$bodyimplode("\n"$headers));

        return 
$result;
    }

    
/**
     * Generates file ID
     *
     * @param array $sources
     * @param string $type
     * @return string
     */
    
function _generate_id($sources$type) {
        
$values =array();
        foreach (
$sources as $source)
            if (
is_string($source))
                
$values[] = $source;
            else
                
$values[] = $source->filepath;
        foreach (
$sources as $source) {
            if (
is_string($source) && file_exists($source)) {
                
$data = @file_get_contents($source);

                if (
$data !== false) {
                    
$values[] = md5($data);
                } else {
                    return 
false;
                }
            } else {
                
$headers = @get_headers($source->minifyOptions['prependRelativePath']);
                if(
strpos($headers[0],'200') !== false) {
                    
$segments explode('.'$source->minifyOptions['prependRelativePath']);
                    
$ext strtolower(array_pop($segments));
                    
$pc_source $this->_precache_file($source->minifyOptions['prependRelativePath'], $ext);
                    
$data = @file_get_contents($pc_source->filepath);

                    if (
$data !== false) {
                        
$values[] = md5($data);
                    } else {
                        return 
false;
                    }
                }else {
                    return 
false;
                }
            }
        }

        
$keys = array(
            
'minify.debug',
            
'minify.engine',
            
'minify.options',
            
'minify.symlinks',
        );

        if (
$type == 'js') {
            
$engine $this->_config->get_string('minify.js.engine');

            switch (
$engine) {
                case 
'js':
                    
$keys array_merge($keys, array(
                                                    
'minify.js.combine.header',
                                                    
'minify.js.combine.body',
                                                    
'minify.js.combine.footer',
                                                    
'minify.js.strip.comments',
                                                    
'minify.js.strip.crlf',
                                               ));
                    break;

                case 
'yuijs':
                    
$keys array_merge($keys, array(
                                                    
'minify.yuijs.options.line-break',
                                                    
'minify.yuijs.options.nomunge',
                                                    
'minify.yuijs.options.preserve-semi',
                                                    
'minify.yuijs.options.disable-optimizations',
                                               ));
                    break;

                case 
'ccjs':
                    
$keys array_merge($keys, array(
                                                    
'minify.ccjs.options.compilation_level',
                                                    
'minify.ccjs.options.formatting',
                                               ));
                    break;
            }
        } elseif (
$type == 'css') {
            
$engine $this->_config->get_string('minify.css.engine');

            switch (
$engine) {
                case 
'css':
                    
$keys array_merge($keys, array(
                                                    
'minify.css.combine',
                                                    
'minify.css.strip.comments',
                                                    
'minify.css.strip.crlf',
                                                    
'minify.css.imports',
                                               ));
                    break;

                case 
'yuicss':
                    
$keys array_merge($keys, array(
                                                    
'minify.yuicss.options.line-break',
                                               ));
                    break;

                case 
'csstidy':
                    
$keys array_merge($keys, array(
                                                    
'minify.csstidy.options.remove_bslash',
                                                    
'minify.csstidy.options.compress_colors',
                                                    
'minify.csstidy.options.compress_font-weight',
                                                    
'minify.csstidy.options.lowercase_s',
                                                    
'minify.csstidy.options.optimise_shorthands',
                                                    
'minify.csstidy.options.remove_last_;',
                                                    
'minify.csstidy.options.case_properties',
                                                    
'minify.csstidy.options.sort_properties',
                                                    
'minify.csstidy.options.sort_selectors',
                                                    
'minify.csstidy.options.merge_selectors',
                                                    
'minify.csstidy.options.discard_invalid_properties',
                                                    
'minify.csstidy.options.css_level',
                                                    
'minify.csstidy.options.preserve_css',
                                                    
'minify.csstidy.options.timestamp',
                                                    
'minify.csstidy.options.template',
                                               ));
                    break;
            }
        }

        foreach (
$keys as $key) {
            
$values[] = $this->_config->get($key);
        }

        
$id substr(md5(implode(''$this->_flatten_array($values))), 06);

        return 
$id;
    }

    
/**
     * Takes a multidimensional array and makes it singledimensional
     *
     * @param $values
     * @return array
     */
    
private function _flatten_array($values) {
        
$flatten = array();

        foreach (
$values as $key => $value) {
            if (
is_array($value))
                
$flatten array_merge($flatten$this->_flatten_array($value));
            else
                
$flatten[$key] = $value;
        }
        return 
$flatten;
    }

    
/**
     * Returns cache data
     *
     * @param string $key
     * @return bool|array
     */
    
function _cache_get($key) {
        
$cache $this->_get_cache();

        
$data $cache->fetch($key);

        if (
$data) {
            
$value = @unserialize($data);

            return 
$value;
        }

        return 
false;
    }

    
/**
     * Sets cache date
     *
     * @param string $key
     * @param string $value
     * @return boolean
     */
    
function _cache_set($key$value) {
        
$cache $this->_get_cache();

        return 
$cache->store($keyserialize($value));
    }


    
/**
     * Compresses an array of files into a filename containing all files.
     * If filename length exceeds 246 characters or value defined in minify.auto.filename_length when gzcompress/gzdeflate is available
     * multiple compressed filenames will be returned
     * @param $files
     * @param $type
     * @return array
     */
    
function compress_minify_files($files$type) {
        
$optimized = array();
        foreach (
$files as $file) {
            
// from PHP.net
            
$pattern '/\w+\/\.\.\//';
            while(
preg_match($pattern$file)) {
                
$file preg_replace($pattern''$file);
            }
            if (!
w3_is_url($file))
                
$optimized[] = dirname($file) . '/' basename($file'.' $type);
            else
                
$optimized[] = $file;
        }
        
$input = array();
        
$replace $this->_minify_path_replacements();
        
$replaced false;
        foreach (
$optimized as $file) {
            foreach(
$replace as $key => $path) {
                if (
strpos($file$path) === 0) {
                    
$input[] =  str_replace($path$key$file);
                    
$replaced true;
                    break;
                }
            }
            if (
$replaced)
                
$replaced false;
            else
                
$input[] = $file;
        }

        
$minify_filename = array();

        
$imploded implode(',',$input);
        
$config w3_instance('W3_Config');
        if (!
W3TC_WIN) {
            
$fn_length $config->get_integer('minify.auto.filename_length',246);
            
$fn_length $fn_length>246 246 $fn_length;
        } else {
            
$dir w3_cache_blog_dir('minify');
            
$fn_length 246-strlen($dir);
        }
        
$compressed $this->_compress($imploded);
        if (
strlen($compressed) >= $fn_length) {
            
$arr_chunks $this->_combine_and_check_filenames($input$fn_length);
            foreach (
$arr_chunks as $part) {
                
$part_imploded implode(','$part);
                
$base rtrim(strtr(base64_encode($this->_compress($part_imploded)), '+/''-_'), '=');
                
$minify_filename[] = $base '.' $type;
            }
        } else {
            
$base rtrim(strtr(base64_encode($compressed), '+/''-_'), '=');
            
$minify_filename[] = $base '.' $type;
        }
        return 
$minify_filename;
    }

    
/**
     * Make a a list where each value is an array that consists of length verified filenames
     * @param string[] $filename_list
     * @param int $length maximum length of imploded filenames
     * @return array
     */
    
private function _combine_and_check_filenames($filename_list$length) {
        
$parts = array();
        
$place 0;
        foreach(
$filename_list as $file) {
            if (
strlen($this->_compress($file)) > $length) {
                
$this->error('Url/Filename is too long: ' $file '. Max length is ' $length);
                return array();
            }
            if (!isset(
$parts[$place]))
                
$parts[$place] = array();
            
$temp implode(',',$parts[$place]) .',' $file;
            if (
strlen($this->_compress(trim($temp,',')))>$length) {
                
$place++;
                
$parts[$place][] = $file;
                
$place++;
            } else {
                
$parts[$place][] = $file;
            }
        }
        return 
$parts;
    }

    
/**
     * Uncompresses a minify auto filename into an array of files.
     * @param $compressed
     * @param $type
     * @return array
     */
    
function uncompress_minify_files($compressed$type) {
        
$no_type_files = array();
        
$compressed basename($compressed'.' $type);
        
$uncompressed =$this->_uncompress(base64_decode(strtr($compressed'-_''+/')));

        
$exploded explode(','$uncompressed);
        
$replacements $this->_minify_path_replacements();
        foreach(
$exploded as $file) {
            if (!
w3_is_url($file)) {
                
$prefix substr($file,0,1);
                
$after_pre substr($file11);
                if (isset(
$replacements[$prefix]) && ($after_pre == '/')) {
                    
$file $replacements[$prefix].substr($file,1);
                    
$no_type_files[] = $file;
                } else {
                    
$no_type_files[] = $file;
                }
            } else
                
$no_type_files[] = $file;
        }

        
$files = array();

        foreach (
$no_type_files as $no_type_file) {
            
$file = !w3_is_url($no_type_file) ? $no_type_file '.' $type $no_type_file;
            
$verified false;
            if (
w3_is_url($file)) {
                
$external $this->_config->get_array('minify.cache.files');
                foreach(
$external as $ext) {
                    if(
preg_match('#'.w3_get_url_regexp($ext).'#',$file) && !$verified){
                        
$verified true;
                    }
                }
                if (!
$verified) {
                    
$this->error(sprintf('Remote file not in external files/libraries list: "%s"'$file));
                }
            } elseif (  
/* no .. */  strpos($file'..') != false
                    
// no "//"
                    
|| strpos($file'//') !== false
                    
// no "\"
                    
|| (strpos($file'\\') !== false && strtoupper(substr(PHP_OS03)) != 'WIN')
                    
// no "./"
                    
|| preg_match('/(?:^|[^\\.])\\.\\//'$file)
                    
/* no unwanted chars */ ||
                    !
preg_match('/^[a-zA-Z0-9_.\\/-]|[\\\\]+$/'$file)) {
                
$verified false;
                
$this->error(sprintf('File path invalid: "%s"'$file));
            } else {
                
$verified true;
            }

            if (
$verified) {
                
$files[] = $file;
            }
        }

        return 
$files;
    }

    
/**
     * Paths used to minify minifyfile paths
     * @return array
     */
    
private function _minify_path_replacements() {
        
$theme get_theme_root();

        return array(
            
ltrim(str_replace(w3_get_document_root(), ''w3_path($theme)), '/'),
            
ltrim(str_replace(w3_get_document_root(), ''w3_path(WP_PLUGIN_DIR)), '/'),
            
ltrim(str_replace(w3_get_document_root(), ''w3_path(WPMU_PLUGIN_DIR)), '/'),
            
WPINC '/js/jquery',
            
WPINC '/js',
            
WPINC '/css',
            
WPINC
        
);
    }

    
/**
     * Compresses a string using inorder of availability.
     * gzdeflate
     * gzcompress
     * none
     * @param $string
     * @return string
     */
    
private function _compress($string) {
        if (
function_exists('gzdeflate'))
            return 
gzdeflate($string9);
        if (
function_exists('gzcompress'))
            return 
gzcompress($string9);
        return 
$string;
    }

    
/**
     * Uncompresses a string using inorder of availability.
     * gzinflate
     * gzuncompress
     * none
     * @param $string
     * @return string
     */
    
private function _uncompress($string) {
        if (
function_exists('gzinflate'))
            return 
gzinflate($string);
        if (
function_exists('gzuncompress'))
            return 
gzuncompress($string);
        return 
$string;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0312 ]--