Пример #1
0
/** 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;
}
Пример #2
0
/** 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);
    }
}
Пример #3
0
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) {