function helloGoogle() { // L'utilisateur vient-il de google, ou google images ? $fromGoogle = (isset ($_SERVER["HTTP_REFERER"]) && (preg_match('!^http://(www|images)\.google\.[a-z]{2,3}(\.[a-z]{2,3})?/!i', $_SERVER["HTTP_REFERER"]))) ? true : false; // Y a-t-il une requete sur des mots clefs exploitables ? (en principe oui ...) $request = ($fromGoogle && preg_match ('!q=([^\&#]*)!i',$_SERVER["HTTP_REFERER"], $matches)) ? $matches[1] : null; // On récupère les mots clefs, proprement. $cleanRequest = stripslashes(str_replace("+"," ",htmlspecialchars(urldecode(($request))))); // Si l'utilisateur vient de google et que la requete est valable, on la renvoi. if ($fromGoogle && $request) { return $cleanRequest; } else { return false; } } function plusFortQueGoogle($kw="") { global $blog, $news, $mode, $related_tab_query; // on recupete l'id du billet courant pour ne pas l'afficher dans les resultats. if ($mode == "related") { $from = $blog->getPostByID($related_tab_query['0']); $currentid = $from->arry_data['0']['post_id']; } else { if(isset($news)) { $currentid = $news->f('post_id'); } else { $currentid = 0; } } $r = addslashes($kw); // on stocke la recherche dans une variable, pour la manipuler $r = trim($r); // On supprime les espaces inutiles // On supprime le nom du blog, il peut prendre trop de poids dans la recherche $r = ($r != "adaero") ? str_replace("adaero","",$r) : $r; /* On ecrit la requete magique :) * * Si vous utilisez le plugin meta tag, mettez le champ meta_value en mode FULLTEXT : * N'oubliez pas de decommenter/recommenter la ligne suivante. * mysql_query(ALTER TABLE `post_meta` ADD FULLTEXT (`meta_value`)); */ $sql = "SELECT DISTINCT"; // mettre en commentaire la ligne suivante si vous ne possedez pas le plugin meta tags. $sql.= "(1+(MATCH (meta_value) AGAINST ('".$r."*' IN BOOLEAN MODE)))+"; $sql.= "(1+(MATCH (post_titre) AGAINST ('".$r."*' IN BOOLEAN MODE)))+ (1+(MATCH (post_content) AGAINST ('".$r."*' IN BOOLEAN MODE))) AS cpt,"; // mettre en commentaire la ligne suivante si vous ne possedez pas le plugin meta tags. $sql.= "(4+(MATCH (meta_value) AGAINST ('".$r."' )))*"; $sql.= "(2+(MATCH (post_titre) AGAINST ('".$r."' )))* (1+(MATCH (post_content) AGAINST ('".$r."' )))-1 AS proche, p.post_id, post_titre, post_dt FROM `".DB_PREFIX."post` p, ".DB_PREFIX."post_meta m WHERE ("; // mettre en commentaire la ligne suivante si vous ne possedez pas le plugin meta tags. $sql.= " MATCH (meta_value) AGAINST ('".$r."*' IN BOOLEAN MODE ) OR "; $sql .= " MATCH (post_titre) AGAINST ('".$r."*' IN BOOLEAN MODE) OR MATCH (post_content) AGAINST ('".$r."*' IN BOOLEAN MODE)) AND p.post_id <> '".$currentid."' AND `post_pub` = '1' AND p.post_id = m.post_id GROUP BY p.post_id ORDER BY cpt DESC, proche DESC, post_titre ASC LIMIT 0,5"; // On execute la requete magique. $res = mysql_query($sql) or die(mysql_error()); // S'il existe des resultats, ils sont triés avant d'etre renvoyés. if(mysql_num_rows($res) > 0) { $rs = array(); while($item = mysql_fetch_assoc($res)){ array_push($rs,$item); } rsort($rs); return $rs; } else { return false; } }