Пример #1
0
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
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ès direct interdit");
}
if ($this->HasAccess('write')) {
    $type = $this->GetTripleValue($this->GetPageTag(), 'http://outils-reseaux.org/_vocabulary/type', '', '');
    if ($type == 'fiche_bazar') {
        // dans le cas ou on vient de modifier dans le formulaire une fiche bazar, on enregistre les modifications
        if (isset($_POST['bf_titre'])) {
            baz_formulaire(BAZ_ACTION_MODIFIER_V, $this->href(), $_POST);
        } else {
            $fiche = baz_valeurs_fiche($this->GetPageTag());
            $pageeditionfiche = baz_formulaire(BAZ_ACTION_MODIFIER, $this->href('edit'), $fiche);
        }
    }
}
/** 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;
    }
}
Пример #3
0
/**
 * 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;
}
Пример #4
0
/**  baz_voir_fiche() - Permet de visualiser en detail une fiche  au format XHTML
*
* @global boolean Rajoute des informations internes a l'application (date de modification, lien vers la page de depart de l'appli) si a 1
* @global integer Identifiant de la fiche a afficher ou mixed un tableau avec toutes les valeurs stockees pour la fiche
*
* @return   string  HTML
*/
function baz_voir_fiche($danslappli, $idfiche)
{
    //si c'est un tableau avec les valeurs de la fiche
    if (is_array($idfiche)) {
        //on deplace le tableau et on donne la bonne valeur a id fiche
        $valeurs_fiche = $idfiche;
        $idfiche = $valeurs_fiche['id_fiche'];
        $tab_nature = baz_valeurs_formulaire($valeurs_fiche["id_typeannonce"]);
    } else {
        //on recupere les valeurs de la fiche
        $valeurs_fiche = baz_valeurs_fiche($idfiche);
        //on recupere les infos du type de fiche
        $tab_nature = baz_valeurs_formulaire($valeurs_fiche["id_typeannonce"]);
    }
    $res = '';
    $url = $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), '&amp;' . BAZ_VARIABLE_ACTION . '=' . BAZ_VOIR_FICHE . '&amp;id_fiche=' . $idfiche);
    //debut de la fiche
    $res .= '<div class="BAZ_cadre_fiche BAZ_cadre_fiche_' . $tab_nature['bn_label_class'] . '">' . "\n";
    //affiche le type de fiche pour la vue consulter
    if ($danslappli == 1) {
        $res .= '<h2 class="BAZ_titre BAZ_titre_' . $tab_nature['bn_label_class'] . '">' . $tab_nature['bn_label_nature'] . '</h2>' . "\n";
    }
    //Partie la plus importante : apres avoir recupere toutes les valeurs de la fiche, on genere l'affichage html de cette derniere
    $tableau = formulaire_valeurs_template_champs($tab_nature['bn_template']);
    for ($i = 0; $i < count($tableau); $i++) {
        $res .= $tableau[$i][0]($formtemplate, $tableau[$i], 'html', $valeurs_fiche);
    }
    //informations complementaires (id fiche, etat publication,... )
    if ($danslappli == 1) {
        $res .= '<div class="BAZ_fiche_info BAZ_fiche_info_' . $tab_nature['bn_label_class'] . '">' . "\n";
        //affichage du nom de la PageWiki de la fiche et de son proprietaire
        $res .= $GLOBALS['wiki']->Format($idfiche . ', ' . ($GLOBALS['wiki']->GetPageOwner($idfiche) != '' ? BAZ_ECRITE . ' ' . $GLOBALS['wiki']->GetPageOwner($idfiche) : ''));
        // TODO:ajouter stats $res .= BAZ_NB_VUS.$valeurs_fiche['bf_nb_consultations'].BAZ_FOIS.'</span>'."\n";
        //affichage de l'etat de validation
        if ($valeurs_fiche['statut_fiche'] == 1) {
            if ($valeurs_fiche['date_debut_validite_fiche'] != '0000-00-00' && $valeurs_fiche['date_fin_validite_fiche'] != '0000-00-00') {
                $res .= '<span class="BAZ_rubrique BAZ_rubrique_' . $tab_nature['bn_label_class'] . '">' . BAZ_PUBLIEE . ':</span> ' . BAZ_DU . ' ' . strftime('%d.%m.%Y &agrave; %H:%M', strtotime($valeurs_fiche['date_debut_validite_fiche'])) . ' ' . BAZ_AU . ' ' . strftime('%d.%m.%Y &agrave; %H:%M', strtotime($valeurs_fiche['date_fin_validite_fiche'])) . '<br />' . "\n";
            }
        } else {
            $res .= '<span class="BAZ_rubrique BAZ_rubrique_' . $tab_nature['bn_label_class'] . '">' . BAZ_PUBLIEE . ':</span> ' . BAZ_NON . '<br />' . "\n";
        }
        //affichage des infos et du lien pour la mise a jour de la fiche
        $res .= ', <span class="date_creation">' . BAZ_DATE_CREATION . ' ' . strftime('%d.%m.%Y &agrave; %H:%M', strtotime($valeurs_fiche['date_creation_fiche'])) . '</span>';
        $res .= ', <span class="date_mise_a_jour">' . BAZ_DATE_MAJ . ' ' . strftime('%d.%m.%Y &agrave; %H:%M', strtotime($valeurs_fiche['date_maj_fiche'])) . '</span>.';
        //seul le createur ou un admin peut faire des actions sur la fiche
        if ($GLOBALS['wiki']->UserIsAdmin() || $GLOBALS['wiki']->UserIsOwner($idfiche)) {
            $res .= '<div class="BAZ_actions_fiche BAZ_actions_fiche_' . $tab_nature['bn_label_class'] . '">' . "\n";
            $res .= '<ul>' . "\n";
            $url = $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '&amp;' . BAZ_VOIR_SAISIR . '&amp;id_fiche=' . $idfiche);
            //ajouter action de validation (pour les admins)
            if (baz_a_le_droit('valider_fiche')) {
                if ($valeurs_fiche['statut_fiche'] == 0 || $valeurs_fiche['statut_fiche'] == 2) {
                    $lien_publie = '&amp;' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_PUBLIER;
                    $label_publie = BAZ_VALIDER_LA_FICHE;
                    $class_publie = '_valider';
                } elseif ($valeurs_fiche['statut_fiche'] == 1) {
                    $lien_publie = '&amp;' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_PAS_PUBLIER;
                    $label_publie = BAZ_INVALIDER_LA_FICHE;
                    $class_publie = '_invalider';
                }
                $res .= '<li><a class="BAZ_lien' . $class_publie . '" href="' . $url . $lien_publie . '">' . $label_publie . '</a></li>' . "\n";
            }
            //lien modifier la fiche
            $lien_modifier = $url . '&amp;' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_MODIFIER;
            $res .= '<li><a class="BAZ_lien_modifier" href="' . $lien_modifier . '">' . BAZ_MODIFIER_LA_FICHE . '</a></li>' . "\n";
            //lien supprimer la fiche
            $lien_supprimer = $url . '&amp;' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_SUPPRESSION;
            $res .= '<li><a class="BAZ_lien_supprimer" href="' . $lien_supprimer . '" onclick="javascript:return confirm(\'' . BAZ_CONFIRM_SUPPRIMER_FICHE . '\');">' . BAZ_SUPPRIMER_LA_FICHE . '</a></li>' . "\n";
            $res .= '</ul>' . "\n";
            $res .= '</div><!-- fin div BAZ_actions_fiche -->' . "\n";
        }
        $res .= '</div><!-- fin div BAZ_fiche_info -->' . "\n";
    }
    //fin de la fiche
    $res .= '</div><!-- fin div BAZ_cadre_fiche  -->' . "\n";
    return $res;
}
Пример #5
0
        $GLOBALS['_BAZAR_']['categorie_nature'] = 'toutes';
    }
} else {
    //si un type de fiche est passe en parametres, on prend toutes les informations
    $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'];
}
//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>');
    }
}
/** titre() - Action qui camouffle le titre et le genre a partir d'autres champs au formulaire
*
* @param    mixed   L'objet QuickForm du formulaire
* @param    mixed   Le tableau des valeurs des differentes option pour le texte HTML
* @param    string  Type d'action pour le formulaire : saisie, modification, vue,... saisie par defaut
* @return   void
*/
function titre(&$formtemplate, $tableau_template, $mode, $valeurs_fiche)
{
    list($type, $template) = $tableau_template;
    if ($mode == 'saisie') {
        $formtemplate->addElement('hidden', 'bf_titre', $template, array('id' => 'bf_titre'));
    } elseif ($mode == 'requete') {
        preg_match_all('#{{(.*)}}#U', $_POST['bf_titre'], $matches);
        $tab = array();
        foreach ($matches[1] as $var) {
            if (isset($_POST[$var])) {
                //pour une listefiche ou une checkboxfiche on cherche le titre de la fiche
                if (preg_match('#^listefiche#', $var) != false || preg_match('#^checkboxfiche#', $var) != false) {
                    $tab_fiche = baz_valeurs_fiche($_POST[$var]);
                    $valeurs_fiche['bf_titre'] = str_replace('{{' . $var . '}}', $tab_fiche['bf_titre'] != null ? $tab_fiche['bf_titre'] : '', $_POST['bf_titre']);
                } elseif (preg_match('#^liste#', $var) != false || preg_match('#^checkbox#', $var) != false) {
                    //on récupère le premier chiffre (l'identifiant de la liste)
                    preg_match_all('/[0-9]{1,4}/', $var, $matches);
                    $req = 'SELECT blv_label FROM ' . BAZ_PREFIXE . 'liste_valeurs WHERE blv_ce_liste=' . $matches[0][0] . ' AND blv_valeur=' . $_POST[$var] . ' AND blv_ce_i18n="fr-FR"';
                    $resultat = $GLOBALS['_BAZAR_']['db']->query($req);
                    $label = $resultat->fetchRow();
                    $valeurs_fiche['bf_titre'] = str_replace('{{' . $var . '}}', $label[0] != null ? $label[0] : '', $_POST['bf_titre']);
                } else {
                    $valeurs_fiche['bf_titre'] = str_replace('{{' . $var . '}}', $_POST[$var], $_POST['bf_titre']);
                }
            }
        }
        return array('bf_titre' => $valeurs_fiche['bf_titre']);
    } elseif ($mode == 'html') {
        // Le titre
        return '<h1 class="BAZ_fiche_titre">' . htmlentities($valeurs_fiche['bf_titre']) . '</h1>' . "\n";
    } elseif ($mode == 'formulaire_recherche') {
        return;
    }
}
Пример #7
0
// +------------------------------------------------------------------------------------------------------+
// si c'est demandé, on affiche le menu
if ($GLOBALS['params']['voirmenu'] != '0') {
    $menuitems = array_map('trim', explode(',', $GLOBALS['params']['voirmenu']));
    $output .= baz_afficher_menu($menuitems);
}
// on affiche les infos correspondantes à la vue
switch ($GLOBALS['params']['vue']) {
    case BAZ_VOIR_CONSULTER:
        switch ($GLOBALS['params']['action']) {
            case BAZ_MOTEUR_RECHERCHE:
                $output .= baz_rechercher($GLOBALS['params']['idtypeannonce'], $GLOBALS['params']['categorienature']);
                break;
            case BAZ_VOIR_FICHE:
                if (isset($_REQUEST['id_fiche'])) {
                    $fiche = baz_valeurs_fiche($_REQUEST['id_fiche']);
                    if (!is_array($fiche)) {
                        $output .= '<div class="alert alert-danger">' . _t('BAZ_PAS_DE_FICHE_AVEC_CET_ID') . ' : ' . $_REQUEST['id_fiche'] . '</div>';
                    } else {
                        $output .= baz_voir_fiche(1, $fiche);
                    }
                } else {
                    $output = '<div class="alert alert-danger">' . _t('BAZ_PAS_D_ID_DE_FICHE_INDIQUEE') . '</div>';
                }
                break;
            default:
                $output .= baz_rechercher(isset($_REQUEST['id_typeannonce']) ? $_REQUEST['id_typeannonce'] : $GLOBALS['params']['idtypeannonce'], $GLOBALS['params']['categorienature']);
                break;
        }
        break;
    case BAZ_VOIR_MES_FICHES: