Example #1
0
 /**
  * OB Callback
  *
  * @param string $buffer
  * @return string
  */
 function ob_callback($buffer)
 {
     if ($buffer != '' && w3_is_xml($buffer)) {
         $regexps = array();
         $upload_info = w3_upload_info();
         $site_url_regexp = w3_get_site_url_regexp();
         if ($upload_info) {
             $regexps[] = '~(["\'])((' . $site_url_regexp . ')?/?(' . w3_preg_quote($upload_info['upload_url']) . '[^"\'>]+))~';
         }
         if ($this->_config->get_boolean('cdn.includes.enable')) {
             $mask = $this->_config->get_string('cdn.includes.files');
             if ($mask != '') {
                 $regexps[] = '~(["\'])((' . $site_url_regexp . ')?/?(' . w3_preg_quote(WPINC) . '/(' . $this->get_regexp_by_mask($mask) . ')))~';
             }
         }
         if ($this->_config->get_boolean('cdn.theme.enable')) {
             $theme_dir = preg_replace('~' . $site_url_regexp . '~i', '', get_stylesheet_directory_uri());
             $mask = $this->_config->get_string('cdn.theme.files');
             if ($mask != '') {
                 $regexps[] = '~(["\'])((' . $site_url_regexp . ')?/?(' . w3_preg_quote($theme_dir) . '/(' . $this->get_regexp_by_mask($mask) . ')))~';
             }
         }
         if ($this->_config->get_boolean('cdn.minify.enable')) {
             $regexps[] = '~(["\'])((' . $site_url_regexp . ')?/?(' . w3_preg_quote(W3TC_CONTENT_MINIFY_DIR_NAME) . '/[a-z0-9-_]+\\.include(-footer)?(-nb)?\\.(css|js)))~';
         }
         if ($this->_config->get_boolean('cdn.custom.enable')) {
             $masks = $this->_config->get_array('cdn.custom.files');
             if (count($masks)) {
                 $mask_regexps = array();
                 foreach ($masks as $mask) {
                     if ($mask != '') {
                         $mask = w3_normalize_file($mask);
                         $mask_regexps[] = $this->get_regexp_by_mask($mask);
                     }
                 }
                 $regexps[] = '~(["\'])((' . $site_url_regexp . ')?/?(' . implode('|', $mask_regexps) . '))~i';
             }
         }
         foreach ($regexps as $regexp) {
             $buffer = preg_replace_callback($regexp, array(&$this, 'link_replace_callback'), $buffer);
         }
         if ($this->_config->get_boolean('cdn.debug')) {
             $buffer .= "\r\n\r\n" . $this->get_debug_info();
         }
     }
     return $buffer;
 }
Example #2
0
/**
 * Translates URL to local path
 * @param string $url
 * @return string
 */
function w3_translate_file($url)
{
    if (!w3_is_url($url)) {
        $url = w3_get_domain_url() . '/' . ltrim($url, '/\\');
    }
    $site_url_regexp = '~' . w3_get_site_url_regexp() . '~i';
    if (preg_match($site_url_regexp, $url) && strstr($url, '?') === false) {
        $url = preg_replace($site_url_regexp, '', $url);
        $url = w3_get_site_path() . ltrim($url, '/\\');
    }
    $url = ltrim($url, '/');
    return $url;
}
Example #3
0
/**
 * Normalize file path
 * 
 * @param string $file
 * @return string
 */
function w3_normalize_file($file)
{
    $site_url_regexp = '~' . w3_get_site_url_regexp() . '~i';
    $file = preg_replace($site_url_regexp, '', $file);
    $file = ltrim($file, '/\\');
    return $file;
}