/** baz_rechercher() Formate la liste de toutes les fiches * * @return string le code HTML a afficher */ function baz_rechercher() { $res = ''; //creation du lien pour le formulaire de recherche $lien_formulaire = $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_DEFAUT . '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_MOTEUR_RECHERCHE, 0); $formtemplate = '<form action="' . $lien_formulaire . '" method="post" name="formulaire" id="formulaire">' . "\n"; //on recupere la liste des formulaires, a afficher dans une liste deroulante pour la recherche $tab_formulaires = baz_valeurs_tous_les_formulaires(); foreach ($tab_formulaires as $type_fiche => $formulaire) { foreach ($formulaire as $nomwiki => $ligne) { $tableau_typeformulaires[] = $nomwiki; $type_formulaire_select[$nomwiki] = $ligne['bn_label_nature'] . ' (' . $type_fiche . ')'; } } $type_fiche_choisie = isset($_REQUEST['id_typeannonce']); $formtemplate_champs_recherche_supplementaires = ''; if (count($tab_formulaires) > 1) { $formtemplate .= '<div class="formulaire_ligne">' . "\n" . '<div class="formulaire_label">' . BAZ_TYPE_FICHE . '</div>' . "\n"; $formtemplate .= '<div class="formulaire_input">' . "\n" . ' <select name="id_typeannonce" onchange="javascript:this.form.submit();">' . "\n" . ' <option value="toutes">' . BAZ_TOUS_TYPES_FICHES . '</option>' . "\n"; foreach ($type_formulaire_select as $nomwikiformulaire => $formulaire_select) { $formtemplate .= ' <option value="' . $nomwikiformulaire . '"'; if ($type_fiche_choisie && $_REQUEST['id_typeannonce'] == $nomwikiformulaire) { $formtemplate .= ' selected="selected"'; } $formtemplate .= '>' . $formulaire_select . '</option>' . "\n"; } $formtemplate .= ' </select>' . "\n" . '</div>' . "\n" . '</div>' . "\n"; // on ajoute les champs de recherche du type de fiche choisi if ($type_fiche_choisie) { $tab_nature = baz_valeurs_formulaire($_REQUEST['id_typeannonce']); $tableau = formulaire_valeurs_template_champs($GLOBALS['_BAZAR_']['template']); for ($i = 0; $i < count($tableau); $i++) { if ($tableau[$i][0] == 'liste' || $tableau[$i][0] == 'checkbox' || $tableau[$i][0] == 'listefiche' || $tableau[$i][0] == 'checkboxfiche' || $tableau[$i][0] == 'labelhtml') { $formtemplate_champs_recherche_supplementaires .= $tableau[$i][0]($formtemplate, $tableau[$i], 'formulaire_recherche', ''); } } } } else { $formtemplate .= '<input type="hidden" name="id_typeannonce" value="' . $GLOBALS['_BAZAR_']['id_typeannonce'] . '" />' . "\n"; } //requete pour obtenir l'id, le nom et prenom de toutes les personnes ayant depose une fiche // dans le but de construire l'element de formulaire select avec les noms des emetteurs de fiche if (BAZ_RECHERCHE_PAR_EMETTEUR) { //TODO: gestion des emetteurs } else { $formtemplate .= '<input type="hidden" value="tous" name="personnes">' . "\n"; } //teste si le user est admin, dans ce cas, il peut voir les fiches perimees if ($GLOBALS['wiki']->UserIsAdmin()) { //TODO: gestion des fiches perimees } $formtemplate .= '<div class="grouperecherche">' . "\n" . ' <input type="text" name="recherche_mots_cles" onfocus="if (this.value==\'' . BAZ_MOT_CLE . '\') {this.value=\'\';}" value="' . BAZ_MOT_CLE . '" class="boite_recherche" maxlength="255">' . "\n" . ' <input type="submit" value="' . BAZ_RECHERCHER . '" name="rechercher" class="btn bouton_recherche">' . "\n" . '</div>' . "\n"; //affichage du formulaire $res .= $formtemplate . $formtemplate_champs_recherche_supplementaires . "\n" . '</form>' . "\n"; //si la recherche n'a pas encore ete effectuee, on affiche les 10 dernieres fiches if (!isset($_REQUEST['id_typeannonce'])) { $tableau_dernieres_fiches = baz_requete_recherche_fiches('', '', $GLOBALS['_BAZAR_']['id_typeannonce'], $GLOBALS['_BAZAR_']['categorie_nature'], 1, '', 10); if (count($tableau_dernieres_fiches) > 0) { $res .= '<h2>' . BAZ_DERNIERES_FICHES . '</h2>'; $res .= baz_afficher_liste_resultat($tableau_dernieres_fiches, false); } else { $res .= '<div class="info_box">' . BAZ_PAS_DE_FICHES . '</div>' . "\n"; } } else { $tableau_fiches = baz_requete_recherche_fiches('', '', $_REQUEST['id_typeannonce'], $GLOBALS['_BAZAR_']['categorie_nature'], 1, ''); $res .= baz_afficher_liste_resultat($tableau_fiches); } return $res; }
/** baz_valeurs_tous_les_formulaires() - Toutes les informations de tous les formulaires d'une categorie ou de toutes les categories * @param string nom de la categorie * @param string type de format de reponse : html (par defaut) ou json * * @return array */ function baz_valeurs_tous_les_formulaires($categorie = '', $format = 'html', $idtypeannonce = '') { $valeurs_formulaire = array(); if ($idtypeannonce == '') { //requete pour obtenir toutes les PageWiki de type formulaire $requete_sql = 'SELECT bn_id_nature FROM `' . BAZ_PREFIXE . 'nature` WHERE ' . ($categorie == '' ? '1' : 'bn_type_fiche="' . $categorie . '"'); $idformulaire = $GLOBALS['wiki']->LoadAll($requete_sql); foreach ($idformulaire as $id) { $tab_formulaire = baz_valeurs_formulaire($id['bn_id_nature']); $valeurs_formulaire[$tab_formulaire['bn_type_fiche']][$id['bn_id_nature']] = $tab_formulaire; $valeurs_formulaire[$tab_formulaire['bn_type_fiche']][$id['bn_id_nature']]['template'] = formulaire_valeurs_template_champs($tab_formulaire['bn_template']); } } elseif (is_array($idtypeannonce)) { foreach ($idtypeannonce as $id) { $tab_formulaire = baz_valeurs_formulaire($id); $valeurs_formulaire[$tab_formulaire['bn_type_fiche']][$id] = $tab_formulaire; $valeurs_formulaire[$tab_formulaire['bn_type_fiche']][$id]['template'] = formulaire_valeurs_template_champs($tab_formulaire['bn_template']); } } else { $tab_formulaire = baz_valeurs_formulaire($idtypeannonce); $valeurs_formulaire[$tab_formulaire['bn_type_fiche']][$idtypeannonce] = $tab_formulaire; $valeurs_formulaire[$tab_formulaire['bn_type_fiche']][$idtypeannonce]['template'] = formulaire_valeurs_template_champs($tab_formulaire['bn_template']); } // on trie d'abord par categorie de formulaire ksort($valeurs_formulaire); $valeurs_formulaire_rangees = array(); foreach ($valeurs_formulaire as $type => $formulaires_de_la_categorie) { // on trie ensuite par nom du formulaire ksort($formulaires_de_la_categorie); $valeurs_formulaire_rangees[$type] = $formulaires_de_la_categorie; } if ($format == 'html') { return $valeurs_formulaire_rangees; } elseif ($format == 'json') { return json_encode($valeurs_formulaire_rangees); } }
foreach ($id_typeannonce as $annonce) { $tableau_resultat = array_merge($tableau_resultat, baz_requete_recherche_fiches($tabquery, $ordre, $annonce, $categorie_nature, 1, '', '', true, '', $facettejointure)); /* // Detection jointure avec autre fiche $val_formulaire = baz_valeurs_formulaire($annonce); $tableau = formulaire_valeurs_template_champs($val_formulaire['bn_template']); foreach ($tableau as $ligne) { if ($ligne[0]=="listefiche") { // jointure $jointure[$annonce]=$ligne[1]; // il y a une fiche liee } } */ // Detection autre fiche contenant une reference à cette fiche. foreach ($tous_les_formulaires as $formulaire => $templates) { foreach ($templates as $numformulaire => $val_formulaire) { $tableau = formulaire_valeurs_template_champs($val_formulaire['bn_template']); foreach ($tableau as $ligne) { if ($ligne[0] == "listefiche") { // jointure if ($ligne[1] == $annonce) { $jointure[$numformulaire] = $ligne[1]; // numero de fiche liee } } } } } } // Recherche de l'ensemble des fiches liee supplementaires $tableau_resultat_lie = array(); foreach ($jointure as $cible => $origine) {