示例#1
0
 /**
  * Link replace callback, basic checks step
  *
  * @param string  $match
  * @param string  $quote
  * @param string  $url
  * @param string  $path
  * @return null|string
  */
 function _link_replace_callback_checks($match, $quote, $url, $path)
 {
     global $wpdb;
     static $queue = null, $reject_files = null;
     /**
      * Check if URL was already replaced
      */
     if (isset($this->replaced_urls[$url])) {
         return $quote . $this->replaced_urls[$url];
     }
     /**
      * Check URL for rejected files
      */
     if ($reject_files === null) {
         $reject_files = $this->_config->get_array('cdn.reject.files');
     }
     foreach ($reject_files as $reject_file) {
         if ($reject_file != '') {
             $reject_file = Cdn_Util::replace_folder_placeholders($reject_file);
             $reject_file = Util_Environment::normalize_file($reject_file);
             $reject_file_regexp = '~^(' . Cdn_Util::get_regexp_by_mask($reject_file) . ')~i';
             if (preg_match($reject_file_regexp, $path)) {
                 return $match;
             }
         }
     }
     /**
      * Don't replace URL for files that are in the CDN queue
      */
     if ($queue === null) {
         if (!Cdn_Util::is_engine_mirror($this->_config->get_string('cdn.engine'))) {
             $sql = $wpdb->prepare('SELECT remote_path FROM ' . $wpdb->base_prefix . W3TC_CDN_TABLE_QUEUE . ' WHERE remote_path = %s', $path);
             $queue = $wpdb->get_var($sql);
         } else {
             $queue = false;
         }
     }
     if ($queue) {
         return $match;
     }
     return null;
 }