diff --git a/wp-content/plugins/google-hilite.php b/wp-content/plugins/google-hilite.php new file mode 100644 index 0000000000..75730e287d --- /dev/null +++ b/wp-content/plugins/google-hilite.php @@ -0,0 +1,133 @@ +Matt. +Author: Ryan Boren +Author URI: http://rboren.nu +*/ + +/* Highlighting code c/o Ryan Boren */ +function get_search_query_terms($engine = 'google') { + global $s, $s_array; + $referer = urldecode($_SERVER[HTTP_REFERER]); + $query_array = array(); + switch ($engine) { + case 'google': + // Google query parsing code adapted from Dean Allen's + // Google Hilite 0.3. http://textism.com + $query_terms = preg_replace('/^.*q=([^&]+)&?.*$/i','$1', $referer); + $query_terms = preg_replace('/\'|"/', '', $query_terms); + $query_array = preg_split ("/[\s,\+\.]+/", $query_terms); + break; + + case 'lycos': + $query_terms = preg_replace('/^.*query=([^&]+)&?.*$/i','$1', $referer); + $query_terms = preg_replace('/\'|"/', '', $query_terms); + $query_array = preg_split ("/[\s,\+\.]+/", $query_terms); + break; + + case 'yahoo': + $query_terms = preg_replace('/^.*p=([^&]+)&?.*$/i','$1', $referer); + $query_terms = preg_replace('/\'|"/', '', $query_terms); + $query_array = preg_split ("/[\s,\+\.]+/", $query_terms); + break; + + case 'wordpress': + // Check the search form vars if the search terms + // aren't in the referer. + if ( ! preg_match('/^.*s=/i', $referer)) { + if (isset($s_array)) { + $query_array = $s_array; + } else if (isset($s)) { + $query_array = array($s); + } + + break; + } + + $query_terms = preg_replace('/^.*s=([^&]+)&?.*$/i','$1', $referer); + $query_terms = preg_replace('/\'|"/', '', $query_terms); + $query_array = preg_split ("/[\s,\+\.]+/", $query_terms); + break; + } + + return $query_array; +} + +function is_referer_search_engine($engine = 'google') { + $siteurl = get_settings('siteurl'); + $referer = urldecode($_SERVER['HTTP_REFERER']); + //echo "referer is: $referer
"; + if ( ! $engine ) { + return 0; + } + + switch ($engine) { + case 'google': + if (preg_match('/^http:\/\/w?w?w?\.?google.*/i', $referer)) { + return 1; + } + break; + + case 'lycos': + if (preg_match('/^http:\/\/search\.lycos.*/i', $referer)) { + return 1; + } + break; + + case 'yahoo': + if (preg_match('/^http:\/\/search\.yahoo.*/i', $referer)) { + return 1; + } + break; + + case 'wordpress': + if (preg_match("#^$siteurl#i", $referer)) { + return 1; + } + break; + } + + return 0; +} + +function hilite($text) { + $search_engines = array('wordpress', 'google', 'lycos', 'yahoo'); + + foreach ($search_engines as $engine) { + if ( is_referer_search_engine($engine)) { + $query_terms = get_search_query_terms($engine); + foreach ($query_terms as $term) { + if (!empty($term) && $term != ' ') { + if (!preg_match('/<.+>/',$text)) { + $text = preg_replace('/(\b'.$term.'\b)/i','$1',$text); + } else { + $text = preg_replace('/(?<=>)([^<]+)?(\b'.$term.'\b)/i','$1$2',$text); + } + } + } + break; + } + } + + return $text; +} + +function hilite_head() { + echo " + +"; +} + +// Highlight text and comments: +add_filter('the_content', 'hilite'); +add_filter('comment_text', 'hilite'); +add_action('wp_head', 'hilite_head'); + +?> \ No newline at end of file