Subversion Repositories Applications.papyrus

Rev

Rev 153 | Rev 459 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1                                                                                      |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or                                        |
// | modify it under the terms of the GNU Lesser General Public                                           |
// | License as published by the Free Software Foundation; either                                         |
// | version 2.1 of the License, or (at your option) any later version.                                   |
// |                                                                                                      |
// | This library is distributed in the hope that it will be useful,                                      |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
// | Lesser General Public License for more details.                                                      |
// |                                                                                                      |
// | You should have received a copy of the GNU Lesser General Public                                     |
// | License along with this library; if not, write to the Free Software                                  |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: vous_etes_ici.php,v 1.5 2004-12-06 19:39:57 jpm Exp $
/**
* Applette : Vous Etes Ici
*
* Affiche les liens contenant la suite des menus visités pour arriver
* au menu courant visioné par l'utilisateur.
* Nécessite :
* - Constantes et variable de Papyrus.
* - Base de données de Papyrus
* - Pear Net_URL
* - Pear DB
* - API Débogage 1.0
*
*@package Applette
*@subpackage Vous_Etes_Ici
//Auteur original :
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author        Aucun
*@copyright     Tela-Botanica 2000-2004
*@version       $Revision: 1.5 $ $Date: 2004-12-06 19:39:57 $
// +------------------------------------------------------------------------------------------------------+
*/

// +------------------------------------------------------------------------------------------------------+
// |                                            ENTÊTE du PROGRAMME                                       |
// +------------------------------------------------------------------------------------------------------+
$_GEN_commun['info_applette_nom_fonction'] = 'VEI_afficherVousEtesIci';
$_GEN_commun['info_applette_balise'] = 'VOUS_ETES_ICI';

// +------------------------------------------------------------------------------------------------------+
// |                                            CORPS du PROGRAMME                                        |
// +------------------------------------------------------------------------------------------------------+



// +------------------------------------------------------------------------------------------------------+
// |                                           LISTE de FONCTIONS                                         |
// +------------------------------------------------------------------------------------------------------+

/** Fonction VEI_afficherVousEtesIci() - Déploie le "vous êtes ici" d'un menu.
*
* Affiche la suite des menus visité, sous forme de lien, pour arriver
* au menu courant visioné par l'utilisateur.
* Necessite :
* - Constantes et variable de Papyrus.
* - Pear Net_URL
* - Pear DB
*
* @param  array  tableau d'éventuel arguments présent dans la balise transmis à la fonction. 
* @param  array  tableau global de Papyrus.
* @param int identifiant du menu courant qui représentent la fin du "vous êtes ici".
* @param boolean indique que nous avons à faire au premier appel de cette fonction récursive.
* @return  string  une liste de listes XHTML représentant le plan du site.
*/
function VEI_afficherVousEtesIci($tab_arguments, $_GEN_commun, $id_menu_courant = '', $premier_appel = true)
{
    // Initialisation de variable.
    $objet_pear_db = $_GEN_commun['pear_db'];
    (empty($id_menu_courant)) ? $id_menu_courant = $_GEN_commun['info_menu']->gm_id_menu : '';
    $url_id_type_site = GEN_URL_ID_TYPE_SITE;
    $url_id_type_menu = GEN_URL_ID_TYPE_MENU;
    $url_cle_site = GEN_URL_CLE_SITE;
    $url_cle_menu = GEN_URL_CLE_MENU;
    $i18n_url = '';// Evite d'écrire l'i18n dans l'url demandée.
    if (!empty($_GEN_commun['url_i18n'])) {
        // L'écriture de l'i18n dans les urls des menus est demandée.
        $i18n_url = $_GEN_commun['url_i18n'];
        $url_cle_i18n = GEN_URL_CLE_I18N;
    }
    $vei = '';
    
    // Gestion des erreurs
    if (empty($id_menu_courant)) {
        if (isset($GLOBALS['_VEI_']['usurpation'])) {
            $vei = $GLOBALS['_VEI_']['usurpation'];
        }
        return $vei;
    }
    
    // Début contruction du vei
    $requete =  'SELECT gm_id_menu, gm_ce_i18n, gm_code_num, gm_code_alpha, gm_nom, gmr_id_menu_02 '.
                'FROM gen_menu, gen_menu_relation '.
                'WHERE gm_id_menu = '.$id_menu_courant.' '.
                'AND gmr_id_menu_01 = gm_id_menu '.
                'AND gmr_id_valeur = 1 ';// 1 = avoir "père"
    
    $resultat = $objet_pear_db->query($requete);
    if (DB::isError($resultat)) {
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
    }
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
    $resultat->free();
    
    // Création de l'url du menu courant
    $objet_pear_url = & new Net_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
    $requete_site_code =    'SELECT gs_code_num, gs_code_alpha '.
                            'FROM gen_menu, gen_site '.
                            'WHERE gm_id_menu = '.$ligne->gm_id_menu.' '.
                            'AND gm_ce_site = gs_id_site';
    
    $resultat_site_code = $objet_pear_db->query($requete_site_code);
    if (DB::isError($resultat_site_code)) {
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_site_code->getMessage(), $requete_site_code));
    }
    $ligne_site_code = $resultat_site_code->fetchRow(DB_FETCHMODE_OBJECT);
    if ($url_id_type_site == 'int') {
        $objet_pear_url->addQueryString($url_cle_site, $ligne_site_code->gs_code_num);
    } else {
        $objet_pear_url->addQueryString($url_cle_site, $ligne_site_code->gs_code_alpha);
    }
    if ($url_id_type_menu == 'int') {
        $objet_pear_url->addQueryString($url_cle_menu, $ligne->gm_code_num);
    } else {
        $objet_pear_url->addQueryString($url_cle_menu, $ligne->gm_code_alpha);
    }
    if (!empty($i18n_url)) {
        $objet_pear_url->addQueryString($url_cle_i18n, $i18n_url);
    }
    $url = $objet_pear_url->getURL();
    
    if ($ligne->gmr_id_menu_02 != 0) {// C'est le menu racine!
        $vei .= '<a href="'.$url.'">'.$ligne->gm_nom.'</a> >>> ';
        $vei .= VEI_afficherVousEtesIci($tab_arguments, $_GEN_commun, $ligne->gmr_id_menu_02, false);
    } else {
        $vei .= '<a href="'.$url.'">'.$ligne->gm_nom.'</a>';
    }
    
    // Retour du VEI après la recherche récursive des liens
    if ($premier_appel) {
        $tab_vei = explode(' >>> ', $vei);
        // Récupération des liens pour les inverser et créer le VEI
        $retour = '';
        for ($i = (count($tab_vei) - 1); $i >= 0 ;$i--) {
            if ($i == 0) {
                // Supprime le lien pour le nom du menu courant
                preg_match("/>(.*)<\/a>/", $tab_vei[$i], $tab_txt_capture);
                $retour .= $tab_txt_capture[1];
            } else {
                $retour .= $tab_vei[$i];
            }
            // Ajout du séparateur
            $retour .= ($i != 0) ? "\n".'<span class="separateur_vei"> > </span>'."\n" : '' ;
        }
        // Retour de la chaine de liens et de textes du VEI
        return $retour;
    }
    
    return $vei;
}

// +------------------------------------------------------------------------------------------------------+
// |                                            PIED du PROGRAMME                                         |
// +------------------------------------------------------------------------------------------------------+



/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.4  2004/11/10 19:41:27  jpm
* Correction bogue quand pas de menu par défaut.
*
* Revision 1.3  2004/09/23 17:57:19  jpm
* La page active n'est pas afficher sous forme de lien mais sous forme de texte.
*
* Revision 1.2  2004/07/06 17:07:21  jpm
* Modification de la documentation pour une mailleur analyse par PhpDocumentor.
*
* Revision 1.1  2004/06/15 15:06:25  jpm
* Changement de nom et d'arborescence de Genesia en Papyrus.
*
* Revision 1.4  2004/05/05 14:33:19  jpm
* Gestion de l'indication de langue dans l'url.
* Utile que si on veut forcer la langue.
*
* Revision 1.2  2004/05/05 06:44:33  jpm
* Complément des commentaires indiquant les paquetages nécessaire à l'applette.
*
* Revision 1.1  2004/05/05 06:39:18  jpm
* Transformation en applette de la fonction générant le "vous êtes ici".
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>