Subversion Repositories Applications.papyrus

Rev

Rev 278 | Rev 754 | Go to most recent revision | Show entire file | Regard 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 = '';
-
 
71
    $bdd =& $GLOBALS['_GEN_commun']['pear_db'];
-
 
72
    $site_courant_id = $GLOBALS['_GEN_commun']['info_site']->gs_id_site;
Line 87... Line -...
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 '.
-
 
92
                'WHERE gs_id_site = gsr_id_site_01 '.
-
 
93
                'AND gsr_id_valeur = 102 ';// 102 = site de type "principal"
73
    
94
    // Si on veut seulement le plan du site courrant.
74
    // Si on veut seulement le plan du site courrant.
-
 
75
    if (PLAN_SITE_COURRANT) {
95
    if (PLAN_SITE_COURRANT) {
76
        $aso_sites = GEN_lireInfoSitePrincipal($bdd, $site_courant_id, DB_FETCHMODE_ASSOC);
-
 
77
        $retour .= '<h1 id="titre_page">'.'Plan du site'.'</h1>'."\n";
-
 
78
    } else {
-
 
79
        $aso_sites = GEN_lireInfoSites($bdd, DB_FETCHMODE_ASSOC);
96
        $requete .= 'AND gs_id_site = '.$id_site_principal_courant;
80
        $retour .= '<h1 id="titre_page">'.'Plan des sites'.'</h1>'."\n";
Line 97... Line 81...
97
    }
81
    }
98
    
82
    
99
    $resultat = $objet_pear_db->query($requete);
-
 
100
    (DB::isError ($resultat))
-
 
101
        ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
-
 
102
        : '';
83
    foreach ($aso_sites as $cle => $site) {
103
    
-
 
104
    // Si on veut seulement le plan du site courrant.
84
        if (count($aso_sites) > 1) {
105
    if (PLAN_SITE_COURRANT) {
85
            if (!empty($site['gs_titre'])) {
106
        $retour .= '<h1 id="titre_page">Plan du site</h1>'."\n";
86
                $titre = $site['gs_titre'];
107
    } else {
87
            } else {
108
        $retour .= '<h1 id="titre_page">Plan des sites</h1>'."\n";
-
 
109
    }
88
                $titre = $site['gs_nom'];
-
 
89
            }
110
    
90
            $retour .= '<h2>'.$titre.'</h2>'."\n";
111
    $retour .= '<ul id="plan_site" >'."\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.
-
 
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.
-
 
132
* @return  string  une liste de listes XHTML représentant le plan du site.
-
 
133
*/
-
 
Line -... Line 101...
-
 
101
// +------------------------------------------------------------------------------------------------------+
-
 
102
// |                                           LISTE de FONCTIONS                                         |
134
function PLAN_deployerPlanSite($id_site, $id_pere = 0, $i18n_url)
103
// +------------------------------------------------------------------------------------------------------+
Line 135... Line 104...
135
{
104
 
136
    $objet_pear_db = $GLOBALS['_GEN_commun']['pear_db'];
-
 
137
    
105
function parserTableauMenus($aso_menus, $permalien)
138
    $retour = '';
106
    {
139
    
107
        $retour = '';
140
    $requete =  'SELECT gen_menu.* '.
-
 
141
                'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
108
        
142
                'WHERE GMR01.gmr_id_menu_02 = '.$id_pere.' '.
-
 
143
                'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
-
 
144
                'AND gm_ce_site = '.$id_site.' '.
109
        // Création de l'url
145
                'AND GMR01.gmr_id_valeur = 1 '.// 1 = avoir "père"
-
 
146
                'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
110
        foreach ($aso_menus as $menu_id => $menu_valeur) {
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
    }
-
 
155
    
111
            if ($menu_valeur['gm_date_fin_validite'] == '0000-00-00 00:00:00' || strtotime($menu_valeur['gm_date_fin_validite']) > time() ) {
156
    if ($resultat->numRows() > 0) {
112
                $retour .= '<li>';
157
        $retour .= '<ul>';
113
                // Création de l'url
158
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
114
                $une_url =& new Pap_URL();
159
            $objet_pear_url_base = & new Net_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
115
                $une_url->setId($menu_id);
160
            
116
                
161
            // Recherche du code du site
-
 
162
            $requete_site_code =    'SELECT gen_site.* '.
117
                // Construction de l'attribut title
163
                                    'FROM gen_menu, gen_site '.
-
 
164
                                    'WHERE gm_id_menu = '.$ligne->gm_id_menu.' '.
-
 
165
                                    'AND gm_ce_site = gs_id_site';
118
                $title = '';
166
            
-
 
167
            $resultat_site_code = $objet_pear_db->query($requete_site_code);
119
                if (!empty($menu_valeur['gm_titre'])) {
168
            if (DB::isError($resultat_site_code)) {
120
                    $title = ' title="'.$menu_valeur['gm_titre'].'"';
169
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_site_code->getMessage(), $requete_site_code));
-
 
170
            }
-
 
171
            $ligne_site_code = $resultat_site_code->fetchRow(DB_FETCHMODE_OBJECT);
121
                } elseif (!empty($menu_valeur['gm_titre_alternatif'])) {
172
            
-
 
173
            if (PLAN_URL_ID_TYPE_SITE == 'int') {
122
                    $title = ' title="'.$menu_valeur['gm_titre_alternatif'].'"';
174
                $objet_pear_url_base->addQueryString(PLAN_URL_CLE_SITE, $ligne_site_code->gs_code_num);
123
                }
175
            } else {
-
 
176
                $objet_pear_url_base->addQueryString(PLAN_URL_CLE_SITE, $ligne_site_code->gs_code_alpha);
124
                
177
            }
-
 
178
            
-
 
179
            if (PLAN_URL_ID_TYPE_MENU == 'int') {
125
                // Construction du lien
180
                    $objet_pear_url_base->addQueryString(PLAN_URL_CLE_MENU, $ligne->gm_code_num);
126
                $retour .= '<a href="'.$une_url->getURL().'"'.$title.'>'.$menu_valeur['gm_nom'].'</a>';
181
            } else {
127
                
182
                $objet_pear_url_base->addQueryString(PLAN_URL_CLE_MENU, $ligne->gm_code_alpha);
128
                // Nous affichons ou pas le permalien
183
            }
-
 
184
            $objet_pear_url = $objet_pear_url_base;
-
 
185
            if (!empty($i18n_url)) {
-
 
186
                $objet_pear_url->addQueryString(PLAN_URL_CLE_I18N, $i18n_url);
129
                if ($permalien) {
187
            }
-
 
188
            $url = $objet_pear_url->getURL();
-
 
189
            $retour .= '<li class="nom_menu">'."\n";
130
                    $une_url->setPermalien(true);
190
            $retour .= '<a href="'.$url.'">'.$ligne->gm_nom.'</a>&nbsp;'."\n";
131
                    $retour .= ' <span class="plan_permalien">'.'('.$une_url->getURL().')'.'</span>';
191
            
-
 
192
            // Recherche des traductions
-
 
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.' '.
-
 
196
                            'AND gmr_id_menu_02 = gm_id_menu '.
-
 
197
                            'AND gmr_id_valeur = 2 ';// 2 = "avoir traduction"
132
                    $une_url->setPermalien(false);
198
            
-
 
199
            $resultat_i18n = $objet_pear_db->query($requete_i18n);
133
                }
200
            (DB::isError($resultat_i18n)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_i18n->getMessage(), $requete_i18n)) : '';
-
 
201
            
-
 
202
            if ($resultat_i18n->numRows() > 0) {
-
 
203
                while ($ligne_i18n = $resultat_i18n->fetchRow(DB_FETCHMODE_OBJECT)) {
-
 
204
                    $objet_pear_url = $objet_pear_url_base;
134
                
Line 205... Line -...
205
                    $objet_pear_url->addQueryString(PLAN_URL_CLE_I18N, $ligne_i18n->gm_ce_i18n);
-
 
206
                    $url = $objet_pear_url->getURL();
135
                // Nous ajoutons les sous-menus s'il y en a.
207
                    $retour .= '<a href="'.$url.'" hreflang="'.$ligne_i18n->gm_ce_i18n.'">['.$ligne_i18n->gm_ce_i18n.']</a>&nbsp;'."\n";
136
                $retour_menus = parserTableauMenus($menu_valeur['sous_menus'], $permalien);
208
                }
-
 
209
            }
137
                if ($retour_menus != '') {
210
            
-
 
211
            $retour .= PLAN_deployerPlanSite($id_site, $ligne->gm_id_menu, $i18n_url);
138
                    $retour .= "\n".'<ul>'."\n".$retour_menus."\n".'</ul>'."\n";
212
            $retour .=  '</li>'."\n";
139
                }
213
        }
-
 
214
        $retour .= '</ul>'."\n";
140
                
215
    }
141
                $retour .= '</li>'."\n";
216
    
142
            }
Line 217... Line 143...
217
    return $retour;
143
        }
218
}
144
        return $retour;
219
 
145
    }
-
 
146
// +------------------------------------------------------------------------------------------------------+
-
 
147
// |                                            PIED du PROGRAMME                                         |
-
 
148
// +------------------------------------------------------------------------------------------------------+
220
// +------------------------------------------------------------------------------------------------------+
149
 
221
// |                                            PIED du PROGRAMME                                         |
150
 
222
// +------------------------------------------------------------------------------------------------------+
151
/* +--Fin du code ----------------------------------------------------------------------------------------+
223
 
152
*
224
 
153
* $Log: not supported by cvs2svn $