function display($requete, $nbResults, $mots) { if ($nbResults == 0) { // Si aucun résultat n'est retourné echo "<p>Aucun résultat, veuillez effectuer une autre recherche !</p>"; } else { // Sinon on affiche les résultats en boucle // Affichage du nombre de résultats (optionnel) // N.B. : important pour l'affichage de résultats suivants (class "numR") !!! $affichageResultats = new affichageResultats(); echo $affichageResultats->nbResultats(true); // Instanciation des ID (et du numéro de résultat si besoin) $nb = 0; while ($key = mysqli_fetch_assoc($requete)) { $nb++; // Incrémentation de l'ID // On encode chaque clé/valeur de résultats en UTF-8 foreach ($key as $k => $v) { $key[$k] = utf8_encode($v); } // Résultats de recherche à afficher (à personnaliser) $texte = "<div class='results' id='" . $nb . "'>\n"; $texte .= "\t<h3>" . $nb . " - " . $key['title'] . "</h3>\n"; $texte .= "\t<p>" . $key['description'] . "</p>\n"; $texte .= "</div>\n"; // Affichage du contenu après surlignage des mots recherchés // N.B. : optionnel --> possibilité de remplacer par echo $texte; $surlignage = new surlignageMot($mots, $texte); echo $surlignage->contenu; } // Fin de la boucle while } }
function affichage($requete, $nbResults, $mots) { if ($nbResults == 0) { // Si aucun résultat n'est retourné echo "<p>Aucun résultat, veuillez effectuer une autre recherche !</p>"; } else { // Sinon on affiche les résultats en boucle // Afficher le nombre de résultats $affichageResultats = new affichageResultats(); echo $affichageResultats->nbResultats(); while ($key = $requete->fetch_assoc()) { // On encode chaque clé/valeur de résultats en UTF-8 foreach ($key as $k => $v) { $key[$k] = utf8_encode($v); } // Résultats de recherche à afficher (à personnaliser) //$texte = "<br/>Mot clé: ".$key['word']."<br/>"; $texte = "Le mot "; $texte .= $key['word']; $texte .= " à trouvées a été "; $texte .= $key['nbOcc'] . " fois.<br/>"; /* Objet pour surligner les mots recherchés si nécessaire => 3 arguments (les deux premiers sont obligatoires) 1. variable contenant les mots ($mots ici) 2. variable contenant le texte ($texte ici) 3. "exact" (la chaîne précise mise en gras) ou "total" (la chaîne précise + environnante en gras) -> "exact" par défaut */ $surlignage = new surlignageMot($mots, $texte); echo $surlignage->contenu; // Affichage du contenu après surlignage // N.B. : echo $texte; si vous ne voulez pas de surlignage... } // Fin de la boucle while } }
function affichage($query, $nbResults, $words) { global $select, $wpdb, $moteur, $wp_rewrite, $correctionsmoteur, $autocorrect; $outputBeg = '<div class="WPAdvancedSearch" id="'.$nbResults.'">'."\n"; $outputBeg .= '<div class="WPbeforeResults">'."\n"; if(!empty($select->ResultText)) { $outputBeg .= '<h3>'.trim(__($select->ResultText,'wp-advanced-search')).' <em>'.htmlspecialchars($moteur->requete).'</em></h3>'."\n"; } // Affichage conditionnel des corrections if($select->autoCorrectActive == true && ($select->autoCorrectType == 0 || $select->autoCorrectType == 2)) { if(!empty($correctionsmoteur)) { $outputBeg .= "<p class=\"WPcorrections\">".$select->autoCorrectString.$correctionsmoteur."</p>\n"; } } if($nbResults == 0) { $outputBeg .= "</div>\n"; $output = "<div class=\"WPBlockSearch\">\n"; $output .= '<p class="WPErrorSearch">'.__($select->ErrorText,'wp-advanced-search').'</p>'."\n"; $output .= "</div>\n"; } else { $output = ''; $nb = 0; if(isset($_GET['page'])) { $nb = $nb + ($select->NumberPerPage * ($_GET['page']-1)); } // Afficher le nombre de résultats if($select->nbResultsOK == true) { $affichageResultats = new affichageResultats(); if($select->NumberPerPage == 0 || $select->paginationType != 'classic') { if($select->autoCorrectActive == true && !empty($correctionsmoteur) && $autocorrect) { $outputBeg .= $affichageResultats->nbResultats(true, array(__('résultat','wp-advanced-search'), __('résultats','wp-advanced-search')), __('avec la correction automatique de la recherche','wp-advanced-search'), __(' à ','wp-advanced-search')); } else { $outputBeg .= $affichageResultats->nbResultats(true, array(__('résultat','wp-advanced-search'), __('résultats','wp-advanced-search')), __('pour votre recherche','wp-advanced-search'), __(' à ','wp-advanced-search')); } } else { if($select->autoCorrectActive == true && !empty($correctionsmoteur) && $autocorrect) { $outputBeg .= $affichageResultats->nbResultats(false, array(__('résultat','wp-advanced-search'), __('résultats','wp-advanced-search')), __('avec la correction automatique de la recherche','wp-advanced-search'), __(' à ','wp-advanced-search')); } else { $outputBeg .= $affichageResultats->nbResultats(false, array(__('résultat','wp-advanced-search'), __('résultats','wp-advanced-search')), __('pour votre recherche','wp-advanced-search'), __(' à ','wp-advanced-search')); } } } $outputBeg .= "</div>\n"; foreach($query as $key) { // On lance la boucle d'affichage des résultats (version WordPress) // Récupération du numéro du résultat $nb++; // Boucle utile si on doit ajouter (utf8_encode) par exemple (non activée par défaut...) foreach($key as $k => $v) { $key[$k] = $v; } // Trouver les images à la Une, les catégories et les auteurs $tableCible = $wpdb->posts; // Récupération de la table de base de donnée à parcourir (ici, "posts" pour celles des pages et articles) $tableMeta = $wpdb->postmeta; // Récupération des métas pour l'image à la Une $tableRelationship = $wpdb->term_relationships; // Récupération des relations de taxonomie $tableTaxonomy = $wpdb->term_taxonomy; // Récupération des termes de la taxonomie $tableTerms = $wpdb->terms; // Récupération des termes $tableUsers = $wpdb->users; // Récupération des auteurs $ImageOK = $wpdb->get_results("SELECT * FROM ".$tableCible." AS p INNER JOIN ".$tableMeta." AS m1 ON (m1.post_id = '".$key['ID']."' AND m1.meta_value = p.ID AND m1.meta_key = '_thumbnail_id' AND p.post_type = 'attachment')"); $CategoryOK = $wpdb->get_results("SELECT name FROM ".$tableTerms." AS terms LEFT JOIN ".$tableTaxonomy." AS tax ON (terms.term_id = tax.term_id AND tax.taxonomy = 'category') INNER JOIN ".$tableRelationship." AS rel ON (tax.term_taxonomy_id = rel.term_taxonomy_id) WHERE rel.object_id = '".$key['ID']."'"); $AuthorOK = $wpdb->get_results("SELECT users.ID, user_nicename, display_name FROM ".$tableUsers." AS users INNER JOIN ".$tableCible." AS p ON users.ID = p.post_author WHERE p.ID = '".$key['ID']."'"); // Nombre de catégorie (si plusieurs, on affichera différement) $nbCategory = count($CategoryOK); // Bloc global $output .= "\n<div class=\"WPBlockSearch\" id=\"".$nb."\">\n"; // Affichage conditionné de la date et du titre if($select->TitleOK == true && $select->NumberOK == true) { $output .= '<div class="WPFirstSearch">'."\n"; $output .= '<p class="WPnumberSearch">'.$nb.'</p>'."\n"; $output .= '<p class="WPtitleSearch"><a href="'.get_permalink($key['ID']).'">'.$key['post_title'].'</a></p>'."<p class='clearBlock'></p>\n"; $output .= '</div>'."\n"; } else if($select->TitleOK == true && $select->NumberOK == false) { $output .= '<div class="WPFirstSearch">'."\n"; $output .= '<p class="WPtitleSearch"><a href="'.get_permalink($key['ID']).'">'.$key['post_title'].'</a></p>'."\n"; $output .= '</div>'."\n"; } else if($select->TitleOK == false && $select->NumberOK == true) { $output .= '<div class="WPFirstSearch">'."\n"; $output .= '<p class="WPnumberSearch">'.$nb.'</p>'."\n"; $output .= '</div>'."\n"; } // Affichage d'un bloc pour date + auteur + categorie $output .= '<p class="WPSecondSearch">'."\n"; if($select->DateOK == true || $select->AuthorOK == true || $select->CategoryOK == true) { $output .= '<span class="WPdateSearch">'.__('Publié ','wp-advanced-search').'</span>'; } if($select->BlocOrder == "D-A-C") // Ordre : Date - Auteur - Catégorie { // Affichage conditionné de la date if($select->DateOK == true) { $dateInfo = mysql2date($select->formatageDate, $key['post_date']); $output .= '<span class="WPdateSearch">'.__('le ','wp-advanced-search').$dateInfo.'</span>'."\n"; } // Affichage conditionné de l'auteur if($select->AuthorOK == true) { foreach($AuthorOK as $author) { $authorURL = get_author_posts_url($author->ID, $author->user_nicename); $output .= '<span class="WPauthorSearch">'.__('par ','wp-advanced-search').'<a href="'.esc_url($authorURL).'">'.$author->display_name.'</a></span>'."\n"; } } // Affichage conditionné de la catégorie if($select->CategoryOK == true) { if($nbCategory > 0) { $output .= '<span class="WPcategorySearch">'.__('dans ','wp-advanced-search')."\n"; } $counter = 0; foreach($CategoryOK as $ctg) { $categoryID = get_cat_ID($ctg->name); $categoryURL = get_category_link($categoryID); $output .= '<a href="'.esc_url($categoryURL).'">'.$ctg->name.'</a>'; if($nbCategory > 1 && $counter < ($nbCategory-1)) { $output .= ", \n"; } $counter++; } if($nbCategory > 0) { $output .= '</span>'."\n"; } } } else // Ordre : Date - Catégorie - Auteur if($select->BlocOrder == "D-C-A") { // Affichage conditionné de la date if($select->DateOK == true) { $dateInfo = mysql2date($select->formatageDate, $key['post_date']); $output .= '<span class="WPdateSearch">'.__('le ','wp-advanced-search').$dateInfo.'</span>'."\n"; } // Affichage conditionné de la catégorie if($select->CategoryOK == true) { if($nbCategory > 0) { $output .= '<span class="WPcategorySearch">'.__('dans ','wp-advanced-search')."\n"; } $counter = 0; foreach($CategoryOK as $ctg) { $categoryID = get_cat_ID($ctg->name); $categoryURL = get_category_link($categoryID); $output .= '<a href="'.esc_url($categoryURL).'">'.$ctg->name.'</a>'; if($nbCategory > 1 && $counter < ($nbCategory-1)) { $output .= ", \n"; } $counter++; } if($nbCategory > 0) { $output .= '</span>'."\n"; } } // Affichage conditionné de l'auteur if($select->AuthorOK == true) { foreach($AuthorOK as $author) { $authorURL = get_author_posts_url($author->ID, $author->user_nicename); $output .= '<span class="WPauthorSearch">'.__('par ','wp-advanced-search').'<a href="'.esc_url($authorURL).'">'.$author->display_name.'</a></span>'."\n"; } } } else // Ordre : Auteur - Catégorie - Date if($select->BlocOrder == "A-C-D") { // Affichage conditionné de l'auteur if($select->AuthorOK == true) { foreach($AuthorOK as $author) { $authorURL = get_author_posts_url($author->ID, $author->user_nicename); $output .= '<span class="WPauthorSearch">'.__('par ','wp-advanced-search').'<a href="'.esc_url($authorURL).'">'.$author->display_name.'</a></span>'."\n"; } } // Affichage conditionné de la catégorie if($select->CategoryOK == true) { if($nbCategory > 0) { $output .= '<span class="WPcategorySearch">'.__('dans ','wp-advanced-search')."\n"; } $counter = 0; foreach($CategoryOK as $ctg) { $categoryID = get_cat_ID($ctg->name); $categoryURL = get_category_link($categoryID); $output .= '<a href="'.esc_url($categoryURL).'">'.$ctg->name.'</a>'; if($nbCategory > 1 && $counter < ($nbCategory-1)) { $output .= ", \n"; } $counter++; } if($nbCategory > 0) { $output .= '</span>'."\n"; } } // Affichage conditionné de la date if($select->DateOK == true) { $dateInfo = mysql2date($select->formatageDate, $key['post_date']); $output .= '<span class="WPdateSearch">'.__('le ','wp-advanced-search').$dateInfo.'</span>'."\n"; } } else // Ordre : Auteur - Date - Catégorie if($select->BlocOrder == "A-D-C") { // Affichage conditionné de l'auteur if($select->AuthorOK == true) { foreach($AuthorOK as $author) { $authorURL = get_author_posts_url($author->ID, $author->user_nicename); $output .= '<span class="WPauthorSearch">'.__('par ','wp-advanced-search').'<a href="'.esc_url($authorURL).'">'.$author->display_name.'</a></span>'."\n"; } } // Affichage conditionné de la date if($select->DateOK == true) { $dateInfo = mysql2date($select->formatageDate, $key['post_date']); $output .= '<span class="WPdateSearch">'.__('le ','wp-advanced-search').$dateInfo.'</span>'."\n"; } // Affichage conditionné de la catégorie if($select->CategoryOK == true) { if($nbCategory > 0) { $output .= '<span class="WPcategorySearch">'.__('dans ','wp-advanced-search')."\n"; } $counter = 0; foreach($CategoryOK as $ctg) { $categoryID = get_cat_ID($ctg->name); $categoryURL = get_category_link($categoryID); $output .= '<a href="'.esc_url($categoryURL).'">'.$ctg->name.'</a>'; if($nbCategory > 1 && $counter < ($nbCategory-1)) { $output .= ", \n"; } $counter++; } if($nbCategory > 0) { $output .= '</span>'."\n"; } } } else // Ordre : Catégorie - Date - Auteur if($select->BlocOrder == "C-D-A") { // Affichage conditionné de la catégorie if($select->CategoryOK == true) { if($nbCategory > 0) { $output .= '<span class="WPcategorySearch">'.__('dans ','wp-advanced-search')."\n"; } $counter = 0; foreach($CategoryOK as $ctg) { $categoryID = get_cat_ID($ctg->name); $categoryURL = get_category_link($categoryID); $output .= '<a href="'.esc_url($categoryURL).'">'.$ctg->name.'</a>'; if($nbCategory > 1 && $counter < ($nbCategory-1)) { $output .= ", \n"; } $counter++; } if($nbCategory > 0) { $output .= '</span>'."\n"; } } // Affichage conditionné de la date if($select->DateOK == true) { $dateInfo = mysql2date($select->formatageDate, $key['post_date']); $output .= '<span class="WPdateSearch">'.__('le ','wp-advanced-search').$dateInfo.'</span>'."\n"; } // Affichage conditionné de l'auteur if($select->AuthorOK == true) { foreach($AuthorOK as $author) { $authorURL = get_author_posts_url($author->ID, $author->user_nicename); $output .= '<span class="WPauthorSearch">'.__('par ','wp-advanced-search').'<a href="'.esc_url($authorURL).'">'.$author->display_name.'</a></span>'."\n"; } } } else // Ordre : Catégorie - Auteur - Date if($select->BlocOrder == "C-A-D") { // Affichage conditionné de la catégorie if($select->CategoryOK == true) { if($nbCategory > 0) { $output .= '<span class="WPcategorySearch">'.__('dans ','wp-advanced-search')."\n"; } $counter = 0; foreach($CategoryOK as $ctg) { $categoryID = get_cat_ID($ctg->name); $categoryURL = get_category_link($categoryID); $output .= '<a href="'.esc_url($categoryURL).'">'.$ctg->name.'</a>'; if($nbCategory > 1 && $counter < ($nbCategory-1)) { $output .= ", \n"; } $counter++; } if($nbCategory > 0) { $output .= '</span>'."\n"; } } // Affichage conditionné de l'auteur if($select->AuthorOK == true) { foreach($AuthorOK as $author) { $authorURL = get_author_posts_url($author->ID, $author->user_nicename); $output .= '<span class="WPauthorSearch">'.__('par ','wp-advanced-search').'<a href="'.esc_url($authorURL).'">'.$author->display_name.'</a></span>'."\n"; } } // Affichage conditionné de la date if($select->DateOK == true) { $dateInfo = mysql2date($select->formatageDate, $key['post_date']); $output .= '<span class="WPdateSearch">'.__('le ','wp-advanced-search').$dateInfo.'</span>'."\n"; } } // Affichage conditionné des commentaires if($select->CommentOK == true) { if($key['comment_count'] == 0) { $output .= '<span class="WPcommentSearch"><a href="'.get_permalink($key['ID']).'#comments">'.__('Aucun commentaire','wp-advanced-search').'</a></span>'."\n"; } else if($key['comment_count'] == 1) { $output .= '<span class="WPcommentSearch"><a href="'.get_permalink($key['ID']).'#comments">'.$key['comment_count'].' '.__('commentaire','wp-advanced-search').'</a></span>'."\n"; } else { $output .= '<span class="WPcommentSearch"><a href="'.get_permalink($key['ID']).'#comments">'.$key['comment_count'].' '.__('commentaires','wp-advanced-search').'</a></span>'."\n"; } } $output .= '</p>'."\n"; // Affichage conditionné de l'article, de l'extrait et de l'image à la Une if(($select->ArticleOK == "excerpt" || $select->ArticleOK == "excerptmore" || $select->ArticleOK == "article") && $select->ImageOK == true) { $output .= '<div class="WPBlockContent">'."\n"; $output .= get_the_post_thumbnail($key['ID'],'thumbnail'); if($select->ArticleOK == "excerpt") { $output .= '<div class="WPtextSearch">'."\n"; $output .= $key['post_excerpt']; $output .= '</div>'."\n"; } else if($select->ArticleOK == "excerptmore") { $output .= '<div class="WPtextSearch">'."\n"; $output .= $key['post_excerpt']; $output .= '<p class="WPReadMoreSearch"><a href="'.get_permalink($key['ID']).'">'.__('Lire la suite...','wp-advanced-search').'</a></p>'."\n"; $output .= '</div>'."\n"; } else { $output .= '<div class="WPtextSearch">'.$key['post_content'].'</div>'."\n"; } $output .= '<div class="clearBlock"></div>'."\n"; $output .= '</div>'."\n"; // Affichage conditionné de l'image à la Une sans titre ou extrait (déconseillé) } else if(($select->ArticleOK == "excerpt" || $select->ArticleOK == "excerptmore" || $select->ArticleOK == "article") && $select->ImageOK == false) { $output .= '<div class="WPBlockContent">'."\n"; if($select->ArticleOK == "excerpt") { $output .= '<div class="WPtextSearch">'."\n"; $output .= $key['post_excerpt']; $output .= '</div>'."\n"; } else if($select->ArticleOK == "excerptmore") { $output .= '<div class="WPtextSearch">'."\n"; $output .= $key['post_excerpt']; $output .= '<p class="WPReadMoreSearch"><a href="'.get_permalink($key['ID']).'">'.__('Lire la suite...','wp-advanced-search').'</a></p>'."\n"; $output .= '</div>'."\n"; } else { $output .= '<div class="WPtextSearch">'.$key['post_content'].'</div>'."\n"; } $output .= '<div class="clearBlock"></div>'."\n"; $output .= '</div>'; // Affichage conditionné de l'image à la Une sans titre ou extrait (déconseillé) } else if($select->ArticleOK == "aucun" && $select->ImageOK == true) { $output .= '<div class="WPBlockContent">'."\n"; $output .= get_the_post_thumbnail($key['ID'],'thumbnail'); $output .= '<div class="clearBlock"></div>'."\n"; $output .= '</div>'."\n"; } // Style perso en "n" columns if($select->Style == "twocol" || $select->Style == "threecol") { if($select->Style == "twocol") { $denominateur = 2; } if($select->Style == "threecol") { $denominateur = 3; } if(($nb % $denominateur) == 0) { $output .= "<div class=\"clearBlock\"></div>\n"; } } $output .= "</div>\n"; // Style perso en "n" columns if($select->Style == "twocol" || $select->Style == "threecol") { if($select->Style == "twocol") { $denominateur = 2; } if($select->Style == "threecol") { $denominateur = 3; } if(($nb % $denominateur) == 0) { $output .= "<div class=\"clearBlock\"></div>\n"; } } } // Utilisation ou non du surlignage if($select->strongWords != 'aucun') { $strong = new surlignageMot($words, $output, $select->strongWords, $select->exactSearch, $select->typeSearch); $output = $strong->contenu; } } $outputEnd = "<div class=\"clearBlock\"></div>\n"; $outputEnd.= "</div>\n"; // Fin de BlockSearch // Ajoute le texte du trigger si l'option est active if($select->paginationType == "trigger" && $select->paginationActive == true) { $outputEnd .= '<div id="loadMore">'.$select->paginationText.'</div>'; } // Ajoute le texte du trigger si l'option est active if($select->paginationType == "infinite" && $select->paginationActive == true) { $outputEnd .= '<div id="loadMoreIS"><img src="'.plugins_url("img/loadingGrey.gif", __FILE__ ).'" alt="" /></div>'; } // Retourne les résultats complets du moteur de recherche echo $outputBeg.$output.$outputEnd; } // Fin de la fonction callback d'affichage