Subversion Repositories Applications.papyrus

Rev

Rev 278 | Rev 754 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 278 Rev 349
Line 17... Line 17...
17
// |                                                                                                      |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
19
// | License along with this library; if not, write to the Free Software                                  |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
21
// +------------------------------------------------------------------------------------------------------+
22
// CVS : $Id: plan.php,v 1.2 2005-02-28 10:38:24 jpm Exp $
22
// CVS : $Id: plan.php,v 1.3 2005-04-19 17:21:02 jpm Exp $
23
/**
23
/**
24
* Application réalisant le plan d'un site web géré par Papyrus.
24
* Application réalisant le plan d'un site web géré par Papyrus.
25
*
25
*
26
* Construit une liste de listes représentant le plans des sites web gérés par Papyrus.
26
* Construit une liste de listes représentant le plans des sites web gérés par Papyrus.
27
* Cette application est fortement dépendante de Papyrus puisqu'elle se base sur 
27
* Cette application est fortement dépendante de Papyrus puisqu'elle se base sur 
Line 31... Line 31...
31
//Auteur original :
31
//Auteur original :
32
*@author        Alexandre GRANIER <alexandrel@tela-botanica.org>
32
*@author        Alexandre GRANIER <alexandrel@tela-botanica.org>
33
//Autres auteurs :
33
//Autres auteurs :
34
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
34
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
35
*@copyright     Tela-Botanica 2000-2004
35
*@copyright     Tela-Botanica 2000-2004
36
*@version       $Revision: 1.2 $ $Date: 2005-02-28 10:38:24 $
36
*@version       $Revision: 1.3 $ $Date: 2005-04-19 17:21:02 $
37
// +------------------------------------------------------------------------------------------------------+
37
// +------------------------------------------------------------------------------------------------------+
38
*/
38
*/
Line 39... Line 39...
39
 
39
 
40
// +------------------------------------------------------------------------------------------------------+
40
// +------------------------------------------------------------------------------------------------------+
41
// |                                            ENTÊTE du PROGRAMME                                       |
41
// |                                            ENTÊTE du PROGRAMME                                       |
42
// +------------------------------------------------------------------------------------------------------+
42
// +------------------------------------------------------------------------------------------------------+
43
/** Constante permettatn de configurer l'application en affichant que le plan du site courant si sa valeur vaut true.*/
43
/** Constante permettatn de configurer l'application en affichant que le plan du site courant si sa valeur vaut true.*/
44
define('PLAN_SITE_COURRANT', false);
-
 
45
define('PLAN_URL_CLE_SITE', GEN_URL_CLE_SITE);
44
define('PLAN_SITE_COURRANT', false);
46
define('PLAN_URL_CLE_MENU', GEN_URL_CLE_MENU);
-
 
47
define('PLAN_URL_CLE_I18N', GEN_URL_CLE_I18N);
-
 
48
define('PLAN_URL_ID_TYPE_SITE', GEN_URL_ID_TYPE_SITE);
-
 
Line 49... Line 45...
49
define('PLAN_URL_ID_TYPE_MENU', GEN_URL_ID_TYPE_MENU);
45
define('PLAN_AFFICHER_PERMALIEN', false);
50
 
46
 
51
// +------------------------------------------------------------------------------------------------------+
47
// +------------------------------------------------------------------------------------------------------+
52
// |                                            CORPS du PROGRAMME                                        |
48
// |                                            CORPS du PROGRAMME                                        |
Line 68... Line 64...
68
*
64
*
69
* @return  string  le code HTML produit par l'application.
65
* @return  string  le code HTML produit par l'application.
70
*/
66
*/
71
function afficherContenuCorps()
67
function afficherContenuCorps()
72
{
68
{
73
    $objet_pear_db = $GLOBALS['_GEN_commun']['pear_db'];
-
 
74
    // Evite d'écrire l'i18n dans l'url demandée.
69
    // Initialisation des variables
75
    $i18n_url = '';
-
 
76
    if (!empty($GLOBALS['_GEN_commun']['url_i18n'])) {
-
 
77
        // L'écriture de l'i18n dans les urls des menus est demandée.
-
 
78
        $i18n_url = $GLOBALS['_GEN_commun']['url_i18n'];
-
 
79
    }
-
 
80
    
-
 
81
    // Si on veut seulement le plan du site courrant.
-
 
82
    if (PLAN_SITE_COURRANT) {
-
 
83
        $id_site_principal_courant = $GLOBALS['_GEN_commun']['info_site']->gs_id_site;
-
 
84
    }
-
 
85
    
-
 
86
    $retour = '';
70
    $retour = '';
87
    
-
 
88
    // On effectue une requête sur le site principal puis 
-
 
89
    // on effectue une requête sur les menus, on les affiche.
-
 
90
    $requete =  'SELECT *'.
-
 
91
                'FROM gen_site, gen_site_relation '.
71
    $bdd =& $GLOBALS['_GEN_commun']['pear_db'];
92
                'WHERE gs_id_site = gsr_id_site_01 '.
-
 
93
                'AND gsr_id_valeur = 102 ';// 102 = site de type "principal"
-
 
94
    // Si on veut seulement le plan du site courrant.
-
 
95
    if (PLAN_SITE_COURRANT) {
-
 
96
        $requete .= 'AND gs_id_site = '.$id_site_principal_courant;
72
    $site_courant_id = $GLOBALS['_GEN_commun']['info_site']->gs_id_site;
97
    }
-
 
98
    
-
 
99
    $resultat = $objet_pear_db->query($requete);
-
 
100
    (DB::isError ($resultat))
-
 
101
        ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
-
 
102
        : '';
-
 
Line 103... Line 73...
103
    
73
    
104
    // Si on veut seulement le plan du site courrant.
74
    // Si on veut seulement le plan du site courrant.
-
 
75
    if (PLAN_SITE_COURRANT) {
105
    if (PLAN_SITE_COURRANT) {
76
        $aso_sites = GEN_lireInfoSitePrincipal($bdd, $site_courant_id, DB_FETCHMODE_ASSOC);
106
        $retour .= '<h1 id="titre_page">Plan du site</h1>'."\n";
77
        $retour .= '<h1 id="titre_page">'.'Plan du site'.'</h1>'."\n";
-
 
78
    } else {
107
    } else {
79
        $aso_sites = GEN_lireInfoSites($bdd, DB_FETCHMODE_ASSOC);
108
        $retour .= '<h1 id="titre_page">Plan des sites</h1>'."\n";
80
        $retour .= '<h1 id="titre_page">'.'Plan des sites'.'</h1>'."\n";
Line -... Line 81...
-
 
81
    }
109
    }
82
    
110
    
83
    foreach ($aso_sites as $cle => $site) {
-
 
84
        if (count($aso_sites) > 1) {
-
 
85
            if (!empty($site['gs_titre'])) {
-
 
86
                $titre = $site['gs_titre'];
-
 
87
            } else {
-
 
88
                $titre = $site['gs_nom'];
-
 
89
            }
111
    $retour .= '<ul id="plan_site" >'."\n";
90
            $retour .= '<h2>'.$titre.'</h2>'."\n";
-
 
91
        }
112
    while ($ligne_site = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
92
        $retour .= '<ul class="plan_site_'.$site['gs_nom'].'" >'."\n";
113
        $retour .= '<li class="nom_site" >'.$ligne_site->gs_nom."\n";
93
        $aso_menus = GEN_retournerTableauMenusSiteCodeAlpha($bdd, $site['gs_code_alpha']);
114
        $retour .= PLAN_deployerPlanSite($ligne_site->gs_id_site, 0, $i18n_url);
94
        $retour .= parserTableauMenus($aso_menus, PLAN_AFFICHER_PERMALIEN);
115
        $retour .= '</li>'."\n";
-
 
116
    }
-
 
-
 
95
        $retour .= '</ul>'."\n";
117
    $resultat->free();
96
    }
118
    $retour.= '</ul>';
97
    
Line 119... Line 98...
119
    return $retour;
98
    return $retour;
120
}
99
}
121
 
100
 
122
// +------------------------------------------------------------------------------------------------------+
-
 
123
// |                                           LISTE de FONCTIONS                                         |
-
 
124
// +------------------------------------------------------------------------------------------------------+
-
 
125
/** Fonction PLAN_deployerPlanSite() - Déploie les menus d'un site.
101
// +------------------------------------------------------------------------------------------------------+
126
*
-
 
127
* Affiche une liste de listes XHTML représentant le plan du site courant.
-
 
128
*
-
 
129
* @param int identifiant du site dont on veut afficher le plan.
-
 
130
* @param int identifiant du menu père de celui qui va être affiché.
-
 
131
* @param mixed Si pas vide contient la valeur i18n à afficher dans l'url.
102
// |                                           LISTE de FONCTIONS                                         |
132
* @return  string  une liste de listes XHTML représentant le plan du site.
103
// +------------------------------------------------------------------------------------------------------+
133
*/
-
 
134
function PLAN_deployerPlanSite($id_site, $id_pere = 0, $i18n_url)
-
 
135
{
104
 
136
    $objet_pear_db = $GLOBALS['_GEN_commun']['pear_db'];
105
function parserTableauMenus($aso_menus, $permalien)
137
    
106
    {
138
    $retour = '';
-
 
139
    
-
 
140
    $requete =  'SELECT gen_menu.* '.
-
 
141
                'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
-
 
142
                'WHERE GMR01.gmr_id_menu_02 = '.$id_pere.' '.
-
 
143
                'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
107
        $retour = '';
144
                'AND gm_ce_site = '.$id_site.' '.
-
 
145
                'AND GMR01.gmr_id_valeur = 1 '.// 1 = avoir "père"
108
        
146
                'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
-
 
147
                'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
-
 
148
                'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
-
 
149
                'ORDER BY GMR01.gmr_ordre ASC';
-
 
150
    
-
 
151
    $resultat = $objet_pear_db->query($requete);
-
 
152
    if (DB::isError($resultat)) {
-
 
153
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
-
 
154
    }
109
        // Création de l'url
155
    
-
 
156
    if ($resultat->numRows() > 0) {
-
 
157
        $retour .= '<ul>';
-
 
158
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
110
        foreach ($aso_menus as $menu_id => $menu_valeur) {
159
            $objet_pear_url_base = & new Net_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
111
            if ($menu_valeur['gm_date_fin_validite'] == '0000-00-00 00:00:00' || strtotime($menu_valeur['gm_date_fin_validite']) > time() ) {
160
            
-
 
161
            // Recherche du code du site
-
 
162
            $requete_site_code =    'SELECT gen_site.* '.
-
 
163
                                    'FROM gen_menu, gen_site '.
-
 
164
                                    'WHERE gm_id_menu = '.$ligne->gm_id_menu.' '.
-
 
165
                                    'AND gm_ce_site = gs_id_site';
112
                $retour .= '<li>';
166
            
-
 
167
            $resultat_site_code = $objet_pear_db->query($requete_site_code);
-
 
168
            if (DB::isError($resultat_site_code)) {
-
 
169
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_site_code->getMessage(), $requete_site_code));
113
                // Création de l'url
170
            }
114
                $une_url =& new Pap_URL();
171
            $ligne_site_code = $resultat_site_code->fetchRow(DB_FETCHMODE_OBJECT);
-
 
172
            
115
                $une_url->setId($menu_id);
173
            if (PLAN_URL_ID_TYPE_SITE == 'int') {
-
 
174
                $objet_pear_url_base->addQueryString(PLAN_URL_CLE_SITE, $ligne_site_code->gs_code_num);
-
 
175
            } else {
-
 
176
                $objet_pear_url_base->addQueryString(PLAN_URL_CLE_SITE, $ligne_site_code->gs_code_alpha);
116
                
177
            }
-
 
178
            
-
 
179
            if (PLAN_URL_ID_TYPE_MENU == 'int') {
-
 
180
                    $objet_pear_url_base->addQueryString(PLAN_URL_CLE_MENU, $ligne->gm_code_num);
-
 
181
            } else {
117
                // Construction de l'attribut title
182
                $objet_pear_url_base->addQueryString(PLAN_URL_CLE_MENU, $ligne->gm_code_alpha);
118
                $title = '';
183
            }
119
                if (!empty($menu_valeur['gm_titre'])) {
184
            $objet_pear_url = $objet_pear_url_base;
120
                    $title = ' title="'.$menu_valeur['gm_titre'].'"';
185
            if (!empty($i18n_url)) {
-
 
186
                $objet_pear_url->addQueryString(PLAN_URL_CLE_I18N, $i18n_url);
-
 
187
            }
-
 
188
            $url = $objet_pear_url->getURL();
121
                } elseif (!empty($menu_valeur['gm_titre_alternatif'])) {
189
            $retour .= '<li class="nom_menu">'."\n";
122
                    $title = ' title="'.$menu_valeur['gm_titre_alternatif'].'"';
190
            $retour .= '<a href="'.$url.'">'.$ligne->gm_nom.'</a>&nbsp;'."\n";
-
 
191
            
-
 
192
            // Recherche des traductions
123
                }
193
            $requete_i18n = 'SELECT gm_id_menu, gm_ce_i18n '.
-
 
194
                            'FROM gen_menu, gen_menu_relation '.
-
 
195
                            'WHERE gmr_id_menu_01 = '.$ligne->gm_id_menu.' '.
124
                
196
                            'AND gmr_id_menu_02 = gm_id_menu '.
125
                // Construction du lien
197
                            'AND gmr_id_valeur = 2 ';// 2 = "avoir traduction"
-
 
198
            
-
 
199
            $resultat_i18n = $objet_pear_db->query($requete_i18n);
126
                $retour .= '<a href="'.$une_url->getURL().'"'.$title.'>'.$menu_valeur['gm_nom'].'</a>';
200
            (DB::isError($resultat_i18n)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_i18n->getMessage(), $requete_i18n)) : '';
-
 
201
            
127
                
202
            if ($resultat_i18n->numRows() > 0) {
128
                // Nous affichons ou pas le permalien
203
                while ($ligne_i18n = $resultat_i18n->fetchRow(DB_FETCHMODE_OBJECT)) {
129
                if ($permalien) {
204
                    $objet_pear_url = $objet_pear_url_base;
-
 
205
                    $objet_pear_url->addQueryString(PLAN_URL_CLE_I18N, $ligne_i18n->gm_ce_i18n);
130
                    $une_url->setPermalien(true);
-
 
131
                    $retour .= ' <span class="plan_permalien">'.'('.$une_url->getURL().')'.'</span>';
-
 
132
                    $une_url->setPermalien(false);
-
 
133
                }
-
 
134
                
-
 
135
                // Nous ajoutons les sous-menus s'il y en a.
-
 
136
                $retour_menus = parserTableauMenus($menu_valeur['sous_menus'], $permalien);
-
 
137
                if ($retour_menus != '') {
-
 
138
                    $retour .= "\n".'<ul>'."\n".$retour_menus."\n".'</ul>'."\n";
206
                    $url = $objet_pear_url->getURL();
139
                }
207
                    $retour .= '<a href="'.$url.'" hreflang="'.$ligne_i18n->gm_ce_i18n.'">['.$ligne_i18n->gm_ce_i18n.']</a>&nbsp;'."\n";
-
 
208
                }
-
 
209
            }
-
 
210
            
140
                
211
            $retour .= PLAN_deployerPlanSite($id_site, $ligne->gm_id_menu, $i18n_url);
141
                $retour .= '</li>'."\n";
212
            $retour .=  '</li>'."\n";
142
            }
213
        }
-
 
214
        $retour .= '</ul>'."\n";
-
 
215
    }
-
 
216
    
-
 
217
    return $retour;
143
        }
218
}
144
        return $retour;
219
 
145
    }
Line 220... Line 146...
220
// +------------------------------------------------------------------------------------------------------+
146
// +------------------------------------------------------------------------------------------------------+
221
// |                                            PIED du PROGRAMME                                         |
147
// |                                            PIED du PROGRAMME                                         |
222
// +------------------------------------------------------------------------------------------------------+
148
// +------------------------------------------------------------------------------------------------------+
-
 
149
 
-
 
150
 
-
 
151
/* +--Fin du code ----------------------------------------------------------------------------------------+
223
 
152
*
224
 
153
* $Log: not supported by cvs2svn $
225
/* +--Fin du code ----------------------------------------------------------------------------------------+
154
* Revision 1.2  2005/02/28 10:38:24  jpm
226
*
155
* Modification de l'utilisation d'une variable globale.
227
* $Log: not supported by cvs2svn $
156
*