/** checkboxfiche() - permet d'aller saisir et modifier un autre type de fiche
 *
 * @param    mixed   L'objet QuickForm du formulaire
 * @param    mixed   Le tableau des valeurs des différentes option pour le texte HTML
 * @param    string  Type d'action pour le formulaire : saisie, modification, vue,... saisie par défaut
 * @param    mixed  Tableau des valeurs par défauts (pour modification)
 *
 * @return   void
 */
function checkboxfiche(&$formtemplate, $tableau_template, $mode, $valeurs_fiche)
{
    $id = $tableau_template[0] . $tableau_template[1] . $tableau_template[6];
    //on teste la presence de filtres pour les valeurs
    $tabquery = array();
    if (isset($_GET["query"]) && !empty($_GET["query"])) {
        $tableau = array();
        $tab = explode('|', $_GET["query"]);
        //découpe la requete autour des |
        foreach ($tab as $req) {
            $tabdecoup = explode('=', $req, 2);
            $tableau[$tabdecoup[0]] = trim($tabdecoup[1]);
        }
        $tabquery = array_merge($tabquery, $tableau);
    }
    if ($mode == 'saisie' || $mode == 'formulaire_recherche' && $tableau_template[9] == 1) {
        $bulledaide = '';
        if ($mode == 'saisie' && isset($tableau_template[10]) && $tableau_template[10] != '') {
            $bulledaide = ' &nbsp;&nbsp;<img class="tooltip_aide" title="' . htmlentities($tableau_template[10], ENT_QUOTES, TEMPLATES_DEFAULT_CHARSET) . '" src="tools/bazar/presentation/images/aide.png" width="16" height="16" alt="image aide" />';
        }
        $checkbox_html = '<div class="control-group form-group">' . "\n" . '<label class="control-label col-sm-3">' . "\n";
        if ($mode == 'saisie' && isset($tableau_template[8]) && $tableau_template[8] == 1) {
            $checkbox_html .= '<span class="symbole_obligatoire">*&nbsp;</span>' . "\n";
        }
        $checkbox_html .= $tableau_template[2] . $bulledaide . ' : </label>' . "\n" . '<div class="controls col-sm-9"';
        if ($mode == 'saisie' && isset($tableau_template[8]) && $tableau_template[8] == 1) {
            $checkbox_html .= ' required="required"';
        }
        $checkbox_html .= '>' . "\n";
        if (isset($valeurs_fiche[$id]) && $valeurs_fiche[$id] != '') {
            $def = explode(',', $valeurs_fiche[$id]);
        } elseif (isset($_REQUEST[$id]) && $_REQUEST[$id] != '') {
            $def = explode(',', $_REQUEST[$id]);
        } else {
            $def = explode(',', $tableau_template[5]);
        }
        $val_type = baz_valeurs_formulaire($tableau_template[1]);
        //on recupere les parameres pour une requete specifique
        if ($GLOBALS['wiki']->config['global_query'] && isset($_GET['query'])) {
            $query = $tableau_template[12];
            if (!empty($query)) {
                $query .= '|' . $_GET['query'];
            } else {
                $query = $_GET['query'];
            }
        } else {
            $query = $tableau_template[12];
        }
        if (!empty($query)) {
            $tabquery = array();
            $tableau = array();
            $tab = explode('|', $query);
            //découpe la requete autour des |
            foreach ($tab as $req) {
                $tabdecoup = explode('=', $req, 2);
                $tableau[$tabdecoup[0]] = trim($tabdecoup[1]);
            }
            $tabquery = array_merge($tabquery, $tableau);
        } else {
            $tabquery = '';
        }
        $tab_result = baz_requete_recherche_fiches($tabquery, 'alphabetique', $tableau_template[1], $val_type["bn_type_fiche"], 1, '', '', true, !empty($tableau_template[13]) ? $tableau_template[13] : '');
        $checkboxtab = '';
        foreach ($tab_result as $fiche) {
            $valeurs_fiche_liste = json_decode($fiche["body"], true);
            if (TEMPLATES_DEFAULT_CHARSET != 'UTF-8') {
                $valeurs_fiche_liste = array_map('utf8_decode', $valeurs_fiche_liste);
            }
            $checkboxtab[$valeurs_fiche_liste['id_fiche']] = $valeurs_fiche_liste['bf_titre'];
        }
        if (is_array($checkboxtab)) {
            if ($tableau_template[7] == 'tags') {
                foreach ($checkboxtab as $key => $title) {
                    $tabfiches[$key] = '{"id":"' . $key . '", "title":"' . str_replace('"', '\\"', $title) . '"}';
                }
                $script = '$(function(){
                    var tagsexistants = [' . implode(',', $tabfiches) . '];
                    var bazartag = [];
                    bazartag["' . $id . '"] = $(\'#formulaire .yeswiki-input-entries' . $id . '\');
                    bazartag["' . $id . '"].tagsinput({
                        itemValue: \'id\',
                        itemText: \'title\',
                        typeahead: {
                            afterSelect: function(val) { this.$element.val(""); },
                            source: tagsexistants
                        },
                        freeInput: false,
                        confirmKeys: [13, 188]
                    });' . "\n";
                if (is_array($def) && count($def) > 0 && !empty($def[0])) {
                    foreach ($def as $key) {
                        if (isset($tabfiches[$key])) {
                            $script .= 'bazartag["' . $id . '"].tagsinput(\'add\', ' . $tabfiches[$key] . ');' . "\n";
                        }
                    }
                }
                $script .= '});' . "\n";
                $GLOBALS['wiki']->AddJavascriptFile('tools/tags/libs/vendor/bootstrap-tagsinput.min.js');
                $GLOBALS['wiki']->AddJavascript($script);
                $checkbox_html .= '<input type="text" name="' . $id . '" class="yeswiki-input-entries yeswiki-input-entries' . $id . '">';
            } else {
                $checkbox_html .= '<input type="text" class="pull-left filter-entries" value="" placeholder="' . _t('BAZAR_FILTER') . '"><label class="pull-right"><input type="checkbox" class="selectall" /> ' . _t('BAZAR_CHECKALL') . '</label>' . "\n" . '<div class="clearfix"></div>' . "\n" . '<ul class="list-bazar-entries list-unstyled">';
                foreach ($checkboxtab as $key => $label) {
                    $checkbox_html .= '<div class="yeswiki-checkbox checkbox">
                                        <input type="checkbox" id="ckbx_' . $key . '" value="1" name="' . $id . '[' . $key . ']"';
                    if ($def != '' && in_array($key, $def)) {
                        $checkbox_html .= ' checked="checked"';
                    }
                    $checkbox_html .= ' class="element_checkbox"><label for="ckbx_' . $key . '">' . $label . '</label></div>';
                }
                $checkbox_html .= "\n" . '</ul>' . "\n";
                // javascript additions
                $GLOBALS['wiki']->AddJavascriptFile('tools/bazar/libs/vendor/jquery.fastLiveFilter.js');
                $script = "\$(function() { \$('.filter-entries').each(function() {\n                                \$(this).fastLiveFilter(\$(this).siblings('.list-bazar-entries')); });\n                            });";
                $GLOBALS['wiki']->AddJavascript($script);
            }
        }
        $checkbox_html .= "</div>\n</div>\n";
        $formtemplate->addElement('html', $checkbox_html);
    } elseif ($mode == 'requete') {
        if (isset($valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]) && $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]] != 0) {
            return array($tableau_template[0] . $tableau_template[1] . $tableau_template[6] => $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]);
        }
    } elseif ($mode == 'html') {
        $html = '';
        if (isset($valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]) && $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]] != '') {
            $html .= '<div class="BAZ_rubrique" data-id="' . $tableau_template[0] . $tableau_template[1] . $tableau_template[6] . '">' . "\n" . '<span class="BAZ_label">' . $tableau_template[2] . '&nbsp;:</span>' . "\n";
            $html .= '<span class="BAZ_texte">' . "\n";
            $tab_fiche = explode(',', $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]);
            foreach ($tab_fiche as $fiche) {
                $html .= '<ul>';
                if ($tableau_template[3] == 'fiche') {
                    $html .= baz_voir_fiche(0, $fiche);
                } else {
                    $val_fiche = baz_valeurs_fiche($fiche);
                    // il y a des filtres à faire sur les fiches
                    if (count($tabquery) > 0) {
                        $match = false;
                        foreach ($tabquery as $key => $value) {
                            if (strstr($val_fiche[$key], $value)) {
                                $match = true;
                            } else {
                                $match = false;
                                break;
                            }
                        }
                    }
                    if (is_array($val_fiche) && (!isset($match) || $match == true)) {
                        $html .= '<li><a href="' . str_replace('&', '&amp;', $GLOBALS['wiki']->href('', $fiche)) . '" class="modalbox" title="Voir la fiche ' . htmlspecialchars($val_fiche['bf_titre'], ENT_COMPAT | ENT_HTML401, TEMPLATES_DEFAULT_CHARSET) . '">' . $val_fiche['bf_titre'] . '</a></li>' . "\n";
                    }
                }
                $html .= '</ul>';
            }
            $html .= '</span>' . "\n" . '</div> <!-- /.BAZ_rubrique -->' . "\n";
        }
        return $html;
    }
}
/** 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;
}
/**
 * Affiche la liste des resultats d'une recherche.
 *
 * @param $tableau_fiches : tableau de fiches provenant du resultat de la recherche
 * @param $info_nb : booleen pour afficher ou non le nombre  du resultat de la recherche (vrai par defaut)
 */
function displayResultList($tableau_fiches, $params, $info_nb = true)
{
    // tableau des valeurs "facettables" avec leur nombres
    $facettevalue = array();
    // tableau qui contiendra les fiches
    $fiches['fiches'] = array();
    foreach ($tableau_fiches as $fiche) {
        $fiche = json_decode($fiche['body'], true);
        if (TEMPLATES_DEFAULT_CHARSET != 'UTF-8') {
            $fiche = array_map('utf8_decode', $fiche);
        }
        // champs correspondants
        if (!empty($params['correspondance'])) {
            $tabcorrespondance = explode('=', trim($params['correspondance']));
            if (isset($tabcorrespondance[0])) {
                if (isset($tabcorrespondance[1]) && isset($fiche[$tabcorrespondance[1]])) {
                    $fiche[$tabcorrespondance[0]] = $fiche[$tabcorrespondance[1]];
                } else {
                    $fiche[$tabcorrespondance[0]] = '';
                }
            } else {
                exit('<div class="alert alert-danger">action bazarliste : parametre correspondance mal rempli :
                 il doit etre de la forme correspondance="identifiant_1=identifiant_2"</div>');
            }
        }
        $fiche['html_data'] = getHtmlDataAttributes($fiche);
        $fiche['html'] = baz_voir_fiche(0, $fiche);
        //permet de voir la fiche
        $fiche['datastr'] = getHtmlDataAttributes($fiche);
        // on scanne tous les champs qui pourraient faire des filtres pour les facettes
        if (count($params['groups']) > 0) {
            $valform = baz_valeurs_formulaire($fiche['id_typeannonce']);
            foreach ($fiche as $key => $value) {
                if (!empty($value)) {
                    $facetteasked = isset($params['groups'][0]) && $params['groups'][0] == 'all' || in_array($key, $params['groups']);
                    if (in_array($key, array('id_typeannonce', 'createur')) && $facetteasked) {
                        // champs génériques des métadonnées
                        if ($key == 'id_typeannonce') {
                            $value = $fiche['id_typeannonce'] . '|' . $valform['bn_label_nature'];
                        }
                        if (isset($facettevalue[$key][$value])) {
                            ++$facettevalue[$key][$value];
                        } else {
                            $facettevalue[$key][$value] = 1;
                        }
                    } else {
                        // liste, checkbox, listefiche ou checkboxfiche
                        $templatef = $valform['template'];
                        if (is_array($templatef)) {
                            foreach ($templatef as $id => $val) {
                                if ($val[1] === $key || isset($val[6]) && $val[0] . $val[1] . $val[6] === $key) {
                                    $islist = in_array($templatef[$id][0], array('checkbox', 'liste', 'scope'));
                                    $islistforeign = in_array($templatef[$id][0], array('checkboxfiche', 'listefiche'));
                                    if ($islist && $facetteasked) {
                                        // liste ou checkbox
                                        $tabval = explode(',', $value);
                                        foreach ($tabval as $val) {
                                            $facettevalue[$key]['type'] = 'liste';
                                            $facettevalue[$key]['source'] = $templatef[$id][1];
                                            if (isset($facettevalue[$key][$val])) {
                                                ++$facettevalue[$key][$val];
                                            } else {
                                                $facettevalue[$key][$val] = 1;
                                            }
                                        }
                                    } elseif ($islistforeign && $facetteasked) {
                                        // listefiche ou checkboxfiche
                                        $facettevalue[$key]['type'] = 'fiche';
                                        $facettevalue[$key]['source'] = $templatef[$id][1];
                                        $tabval = explode(',', $value);
                                        foreach ($tabval as $val) {
                                            if (isset($facettevalue[$key][$val])) {
                                                ++$facettevalue[$key][$val];
                                            } else {
                                                $facettevalue[$key][$val] = 1;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        // tableau qui contient le contenu de toutes les fiches
        $fiches['fiches'][$fiche['id_fiche']] = $fiche;
    }
    // tri des fiches
    $GLOBALS['ordre'] = $params['ordre'];
    $GLOBALS['champ'] = $params['champ'];
    usort($fiches['fiches'], 'champCompare');
    // Limite le nombre de résultat au nombre de fiches demandées
    if ($params['nb'] != '') {
        $fiches['fiches'] = array_slice($fiches['fiches'], 0, $params['nb']);
    }
    if ($info_nb) {
        $fiches['info_res'] = '<div class="alert alert-info">' . _t('BAZ_IL_Y_A');
        $nb_result = count($fiches['fiches']);
        if ($nb_result <= 1) {
            $fiches['info_res'] .= $nb_result . ' ' . _t('BAZ_FICHE') . '</div>' . "\n";
        } else {
            $fiches['info_res'] .= $nb_result . ' ' . _t('BAZ_FICHES') . '</div>' . "\n";
        }
    } else {
        $fiches['info_res'] = '';
    }
    if (!empty($params['pagination'])) {
        // Mise en place du Pager
        require_once 'Pager/Pager.php';
        $param = array('mode' => BAZ_MODE_DIVISION, 'perPage' => $params['pagination'], 'delta' => BAZ_DELTA, 'httpMethod' => 'GET', 'extraVars' => array_merge($_POST, $_GET), 'altNext' => _t('BAZ_SUIVANT'), 'altPrev' => _t('BAZ_PRECEDENT'), 'nextImg' => _t('BAZ_SUIVANT'), 'prevImg' => _t('BAZ_PRECEDENT'), 'itemData' => $fiches['fiches']);
        $pager =& Pager::factory($param);
        $fiches['fiches'] = $pager->getPageData();
        $fiches['pager_links'] = '<div class="bazar_numero">' . $pager->links . '</div>' . "\n";
    } else {
        $fiches['pager_links'] = '';
    }
    // affichage des resultats
    include_once 'tools/bazar/libs/squelettephp.class.php';
    // On cherche un template personnalise dans le repertoire themes/tools/bazar/templates
    $templatetoload = 'themes/tools/bazar/templates/' . $params['template'];
    if (!is_file($templatetoload)) {
        $templatetoload = 'tools/bazar/presentation/templates/' . $params['template'];
    }
    $squelfacette = new SquelettePhp($templatetoload);
    $fiches['param'] = $params;
    $squelfacette->set($fiches);
    $output = $squelfacette->analyser();
    // affichage spécifique pour facette
    if (count($facettevalue) > 0) {
        // affichage des resultats et filtres dans une grille
        $outputfacette = '<div class="facette-container row row-fluid">' . "\n";
        // calcul de la largeur de la colonne pour les resultats, en fonction de la taille des filtres
        $resultcolsize = 12 - intval($params['filtercolsize']);
        // colonne des resultats
        $outputresult = '<div class="col-xs-' . $resultcolsize . ' span' . $resultcolsize . '">' . "\n" . '<div class="results">' . "\n" . '<div class="alert alert-info">' . "\n" . _t('BAZ_IL_Y_A') . '<span class="nb-results">' . count($fiches['fiches']) . '</span> ' . _t('BAZ_FICHES_CORRESPONDANTES_FILTRES') . "\n" . '.</div>' . "\n" . $output . "\n" . '</div> <!-- /.results -->' . "\n" . '</div> <!-- /.col-xs-' . $resultcolsize . ' -->';
        // colonne des filtres
        $outputfilter = '<div class="col-xs-' . $params['filtercolsize'] . ' span' . $params['filtercolsize'] . '">' . "\n" . '<div class="filters no-dblclick">' . "\n";
        if (isset($facettevalue['id_typeannonce'])) {
            if (count($facettevalue['id_typeannonce']) > 1) {
                $outputfilter .= '<div class="filter-box panel panel-default" data-id="id_typeannonce">' . "\n";
                $outputfilter .= '<div class="panel-heading">' . _t('BAZ_TYPE_FICHE') . '</div>' . "\n";
                $outputfilter .= '<div class="panel-body">' . "\n";
                foreach ($facettevalue['id_typeannonce'] as $id => $nb) {
                    $infotypef = explode('|', $id);
                    $outputfilter .= '<div class="checkbox">
                    <input class="filter-checkbox" type="checkbox" name="id_typeannonce"
                    value="' . htmlspecialchars($infotypef[0]) . '">
                    <label for="id_typeannonce"> ' . $infotypef[1] . ' (<span class="nb">' . $nb . '</span>)</label>
                    </div>' . "\n";
                }
                $outputfilter .= '</div></div><!-- /.filter-box -->' . "\n";
            }
            unset($facettevalue['id_typeannonce']);
        }
        if (isset($facettevalue['createur'])) {
            if (count($facettevalue['createur']) > 1) {
                $outputfilter .= '<div class="filter-box panel panel-default" data-id="createur">' . "\n";
                $outputfilter .= '<div class="panel-heading">' . _t('BAZ_CREATOR') . '</div>' . "\n";
                $outputfilter .= '<div class="panel-body">' . "\n";
                foreach ($facettevalue['createur'] as $id => $nb) {
                    $outputfilter .= '<div class="checkbox">
                    <input class="filter-checkbox" type="checkbox" name="createur"
                    value="' . htmlspecialchars($id) . '"><label for="createur"> ' . $id . ' (<span class="nb">' . $nb . '</span>)
                    </label></div>' . "\n";
                }
                $outputfilter .= '</div></div><!-- /.filter-box -->' . "\n";
            }
            unset($facettevalue['createur']);
        }
        $i = 0;
        $first = true;
        foreach ($params['groups'] as $id) {
            // on formatte la liste des resultats en fonction de la source
            if ($facettevalue[$id]['type'] == 'liste') {
                $list = baz_valeurs_liste($facettevalue[$id]['source']);
            } elseif ($facettevalue[$id]['type'] == 'fiche') {
                $form = baz_valeurs_formulaire($facettevalue[$id]['source']);
                $list['titre_liste'] = $form['bn_label_nature'];
                foreach ($facettevalue[$id] as $idfiche => $nb) {
                    if ($idfiche != 'source' && $idfiche != 'type') {
                        $f = baz_valeurs_fiche($idfiche);
                        $list['label'][$idfiche] = $f['bf_titre'];
                    }
                }
            }
            $idkey = htmlspecialchars($id);
            $outputfilter .= '<div class="filter-box panel panel-default ' . $idkey . '" data-id="' . $idkey . '">' . "\n";
            $titlefilterbox = '';
            if (isset($params['groupicons'][$i]) && !empty($params['groupicons'][$i])) {
                $titlefilterbox .= '<i class="' . $params['groupicons'][$i] . '"></i> ';
            }
            if (isset($params['titles'][$i]) && !empty($params['titles'][$i])) {
                $titlefilterbox .= $params['titles'][$i];
            } else {
                $titlefilterbox .= $list['titre_liste'];
            }
            $outputfilter .= '<div class="panel-heading';
            if (!$first) {
                $outputfilter .= ' collapsed';
            }
            $outputfilter .= '" data-toggle="collapse" href="#collapse' . $GLOBALS['nbbazarliste'] . '_' . $idkey . '" >' . $titlefilterbox . '</div>' . "\n";
            $outputfilter .= '<div id="collapse' . $GLOBALS['nbbazarliste'] . '_' . $idkey . '" class="panel-collapse';
            if ($first) {
                $outputfilter .= ' in';
            }
            $outputfilter .= ' collapse">' . "\n";
            $outputfilter .= '<div class="panel-body">' . "\n";
            foreach ($list['label'] as $listkey => $label) {
                if (isset($facettevalue[$id][$listkey]) && !empty($facettevalue[$id][$listkey])) {
                    $outputfilter .= '<div class="checkbox">
                    <input class="filter-checkbox" type="checkbox" id="' . $idkey . $listkey . '" name="' . $idkey . '"
                    value="' . htmlspecialchars($listkey) . '">
                    <label for="' . $idkey . $listkey . '"> ' . $label . ' (<span class="nb">' . $facettevalue[$id][$listkey] . '</span>)
                    </label></div>' . "\n";
                }
            }
            $outputfilter .= '</div></div></div><!-- /.filter-box -->' . "\n";
            ++$i;
            $first = false;
        }
        $outputfilter .= '</div> <!-- /.filters -->' . "\n" . '</div> <!-- /.col-xs-3 -->' . "\n";
        // disposition des filtres (gauche ou droite)
        if ($params['filterposition'] == 'right') {
            $outputfacette .= $outputresult . $outputfilter;
        } else {
            $outputfacette .= $outputfilter . $outputresult;
        }
        $output = $outputfacette . '</div><!-- /.facette-container.row -->';
    }
    return $output;
}
Example #4
0
    $GLOBALS['_BAZAR_']['typeannonce'] = $tab_nature['bn_label_nature'];
    $GLOBALS['_BAZAR_']['condition'] = $tab_nature['bn_condition'];
    $GLOBALS['_BAZAR_']['template'] = $tab_nature['bn_template'];
    $GLOBALS['_BAZAR_']['class'] = $tab_nature['bn_label_class'];
    $GLOBALS['_BAZAR_']['categorie_nature'] = $tab_nature['bn_type_fiche'];
}
//si un identifiant fiche est renseigné, on récupère toutes les valeurs associées
if (isset($_REQUEST['id_fiche'])) {
    $GLOBALS['_BAZAR_']['id_fiche'] = $_REQUEST['id_fiche'];
    //on récupère les valeurs de la fiche
    $GLOBALS['_BAZAR_']['valeurs_fiche'] = baz_valeurs_fiche($GLOBALS['_BAZAR_']['id_fiche']);
    if ($GLOBALS['_BAZAR_']['valeurs_fiche']) {
        $GLOBALS['_BAZAR_']['id_typeannonce'] = $GLOBALS['_BAZAR_']['valeurs_fiche']['id_typeannonce'];
        $_REQUEST['id_typeannonce'] = $GLOBALS['_BAZAR_']['id_typeannonce'];
        //on récupère aussi les valeurs générales du type de fiche aussi
        $tab_nature = baz_valeurs_formulaire($GLOBALS['_BAZAR_']['id_typeannonce']);
        $GLOBALS['_BAZAR_']['typeannonce'] = $tab_nature['bn_label_nature'];
        $GLOBALS['_BAZAR_']['condition'] = $tab_nature['bn_condition'];
        $GLOBALS['_BAZAR_']['template'] = $tab_nature['bn_template'];
        $GLOBALS['_BAZAR_']['class'] = $tab_nature['bn_label_class'];
        $GLOBALS['_BAZAR_']['categorie_nature'] = $tab_nature['bn_type_fiche'];
    } else {
        $GLOBALS['_BAZAR_']['id_fiche'] = NULL;
        exit('<div class="error_box">la fiche que vous recherchez n\'existe plus (sans doute a t\'elle &eacute;t&eacute; supprim&eacute;e entre temps)...</div>');
    }
}
//utilisateur
$GLOBALS['_BAZAR_']['nomwiki'] = $GLOBALS['wiki']->GetUser();
//variable d'affichage du bazar
$output = '';
// +------------------------------------------------------------------------------------------------------+
/** listefiche() - Ajoute un element de type liste deroulante correspondant a un autre type de fiche au formulaire
*
* @param    mixed   L'objet QuickForm du formulaire
* @param    mixed   Le tableau des valeurs des differentes option pour l'element liste
* @param    string  Type d'action pour le formulaire : saisie, modification, vue,... saisie par defaut
* @return   void
*/
function listefiche(&$formtemplate, $tableau_template, $mode, $valeurs_fiche)
{
    if ($mode == 'saisie') {
        $bulledaide = '';
        if (isset($tableau_template[10]) && $tableau_template[10] != '') {
            $bulledaide = ' <img class="tooltip_aide" title="' . htmlentities($tableau_template[10]) . '" src="tools/bazar/presentation/images/aide.png" width="16" height="16" alt="image aide" />';
        }
        $val_type = baz_valeurs_formulaire($tableau_template[1]);
        $tab_result = baz_requete_recherche_fiches('', 'alphabetique', $tableau_template[1], $val_type["bn_type_fiche"]);
        $select[0] = BAZ_CHOISIR;
        foreach ($tab_result as $fiche) {
            $valeurs_fiche = json_decode($fiche[0], true);
            $valeurs_fiche = array_map('utf8_decode', $valeurs_fiche);
            $select[$valeurs_fiche['id_fiche']] = $valeurs_fiche['bf_titre'];
        }
        $option = array('id' => $tableau_template[0] . $tableau_template[1] . $tableau_template[6]);
        if (isset($valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]) && $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]] != '') {
            $def = $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]];
        } else {
            $def = $tableau_template[5];
        }
        require_once 'HTML/QuickForm/select.php';
        $select = new HTML_QuickForm_select($tableau_template[0] . $tableau_template[1] . $tableau_template[6], $tableau_template[2] . $bulledaide, $select, $option);
        if ($tableau_template[4] != '') {
            $select->setSize($tableau_template[4]);
        }
        $select->setMultiple(0);
        $select->setValue($def);
        $formtemplate->addElement($select);
        if (isset($tableau_template[8]) && $tableau_template[8] == 1 && $resultat->numRows() > 0) {
            $formtemplate->addRule($tableau_template[0] . $tableau_template[1] . $tableau_template[6], $tableau_template[2] . ' obligatoire', 'required', '', 'client');
        }
    } elseif ($mode == 'requete') {
        if (isset($valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]) && $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]] != 0) {
            return array($tableau_template[0] . $tableau_template[1] . $tableau_template[6] => $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]);
        }
    } elseif ($mode == 'formulaire_recherche') {
        if ($tableau_template[9] == 1) {
            $tab_result = baz_requete_recherche_fiches('', $tri = 'alphabetique', $tableau_template[1], '');
            $select[0] = BAZ_INDIFFERENT;
            foreach ($tab_result as $fiche) {
                $valeurs_fiche = json_decode($fiche[0], true);
                $valeurs_fiche = array_map('utf8_decode', $valeurs_fiche);
                $select[$valeurs_fiche['id_fiche']] = $valeurs_fiche['bf_titre'];
            }
            $option = array('id' => $tableau_template[0] . $tableau_template[1] . $tableau_template[6]);
            require_once 'HTML/QuickForm/select.php';
            $select = new HTML_QuickForm_select($tableau_template[0] . $tableau_template[1] . $tableau_template[6], $tableau_template[2], $select, $option);
            if ($tableau_template[4] != '') {
                $select->setSize($tableau_template[4]);
            }
            $select->setMultiple(0);
            $formtemplate->addElement($select);
        }
    } elseif ($mode == 'html') {
        $html = '';
        if (isset($valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]) && $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]] != '') {
            if ($tableau_template[3] == 'fiche') {
                $html = baz_voir_fiche(0, $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]);
            } else {
                $html = '<div class="BAZ_rubrique  BAZ_rubrique_' . $GLOBALS['_BAZAR_']['class'] . '">' . "\n" . '<span class="BAZ_label ' . $tableau_template[2] . '_rubrique">' . $tableau_template[2] . '&nbsp;:</span>' . "\n";
                $html .= '<span class="BAZ_texte BAZ_texte_' . $GLOBALS['_BAZAR_']['class'] . ' ' . $tableau_template[2] . '_description">';
                $url_voirfiche = clone $GLOBALS['_BAZAR_']['url'];
                $url_voirfiche->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_CONSULTER);
                $url_voirfiche->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
                $url_voirfiche->addQueryString('wiki', $_GET['wiki'] . '/iframe');
                $url_voirfiche->addQueryString('id_fiche', $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]);
                $html .= '<a href="' . str_replace('&', '&amp;', $url_voirfiche->getUrl()) . '" class="voir_fiche ouvrir_overlay" title="Voir la fiche ' . $res[0] . '" rel="#overlay">' . $res[0] . '</a></span>' . "\n" . '</div>' . "\n";
            }
        }
        return $html;
    }
}
Example #6
0
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
// Vérification de sécurité
if (!defined("WIKINI_VERSION")) {
    die("acc&egrave;s direct interdit");
}
//dans le cas ou on vient de modifier dans le formulaire une fiche bazar, on enregistre les modifications
if (isset($_POST['id_fiche']) && $this->HasAccess('write')) {
    $type = $this->GetTripleValue($this->GetPageTag(), 'http://outils-reseaux.org/_vocabulary/type', '', '');
    if ($type == 'fiche_bazar') {
        $GLOBALS['_BAZAR_']['id_fiche'] = $_POST['id_fiche'];
        $tab_nature = baz_valeurs_formulaire($_POST['id_typeannonce']);
        $GLOBALS['_BAZAR_']['id_typeannonce'] = $tab_nature['bn_id_nature'];
        $GLOBALS['_BAZAR_']['typeannonce'] = $tab_nature['bn_label_nature'];
        $GLOBALS['_BAZAR_']['condition'] = $tab_nature['bn_condition'];
        $GLOBALS['_BAZAR_']['template'] = $tab_nature['bn_template'];
        $GLOBALS['_BAZAR_']['commentaire'] = $tab_nature['bn_commentaire'];
        $GLOBALS['_BAZAR_']['appropriation'] = $tab_nature['bn_appropriation'];
        $GLOBALS['_BAZAR_']['class'] = $tab_nature['bn_label_class'];
        baz_formulaire(BAZ_ACTION_MODIFIER_V);
        $this->Redirect($this->Href());
    }
}
Example #7
0
 function checkBazarAcls($page, $tag)
 {
     global $wiki;
     // TODO :
     // loadpagebyid
     // bazarliste ...
     // champ mot de passe ?
     //
     if (checkBazarOwner($page, $tag)) {
         // Pas de controle si proprietaire
         return $page;
     }
     if ($page) {
         $valjson = $page["body"];
         $valeur = json_decode($valjson, true);
         $valeur = array_map('utf8_decode', $valeur);
         if ($valeur) {
             $val_formulaire = baz_valeurs_formulaire($valeur['id_typeannonce']);
             $fieldname = array();
             foreach ($val_formulaire['template'] as $line) {
                 if (isset($line[11]) && $line[11] != '') {
                     if ($wiki->CheckAcl($line[11]) == "%") {
                         $line[11] = $wiki->GetUserName();
                     }
                     if (!$wiki->CheckACL($line[11])) {
                         // On memorise les champs non autorise
                         $fieldname[] = $line[1];
                     }
                 }
             }
             if (count($fieldname) > 0) {
                 //
                 foreach ($fieldname as $field) {
                     $valeur[$field] = "";
                     // on vide le champ
                 }
                 $valeur = array_map("utf8_encode", $valeur);
                 $page["body"] = json_encode($valeur);
             }
         }
     }
     return $page;
 }
Example #8
0
             //Traduction de champs requis
             $formtemplate->setRequiredNote(_t('BAZ_CHAMPS_REQUIS'));
             $formtemplate->setJsWarnings(_t('BAZ_ERREUR_SAISIE'), _t('BAZ_VEUILLEZ_CORRIGER'));
             //antispam
             $formtemplate->addElement('hidden', 'antispam', 1);
             // generation du formulaire
             $form = baz_afficher_formulaire_fiche('saisie', $formtemplate, $url, '', true);
             $form = preg_replace('~<div class="form-actions">.*</div>~Ui', "\n" . '<a href="#" class="btn btn-block btn-positive btn-save">' . _t('BAZ_SAVE') . '</a>', $form);
             $form = preg_replace('~<div id="map".*>~Ui', "\n" . '<div id="map">', $form);
             echo json_encode(array('html' => $form));
         }
     }
     break;
 case "forms":
     // les formulaires bazar
     $formval = baz_valeurs_formulaire($form);
     // si un seul formulaire, on cree un tableau à une entrée
     if (!empty($form)) {
         $formval = array($formval['bn_id_nature'] => $formval);
     }
     foreach ($formval as $idform => $form) {
         $i = 0;
         $prepared = array();
         $form['template'] = _convert($form['template'], 'ISO-8859-15');
         foreach ($form['template'] as $formelem) {
             if (in_array($formelem[0], array('radio', 'liste', 'checkbox', 'listefiche', 'checkboxfiche'))) {
                 //identifiant dans la base
                 $prepared[$i]['id'] = $formelem[0] . $formelem[1] . $formelem[6];
                 // type de champ
                 if (in_array($formelem[0], array('listefiche', 'liste'))) {
                     $prepared[$i]['type'] = 'select';