Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 408 → Rev 409

/trunk/papyrus/applications/admin_menu/bibliotheque/adme_menu_classique.fonct.php
1,25 → 1,38
<?php
<?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: adme_menu_classique.fonct.php,v 1.21 2005-05-26 16:13:08 jpm Exp $
// Copyright (C) 1999-2004 Tela Botanica (accueil@tela-botanica.org)
//
// Ce logiciel est un programme informatique servant à gérer du contenu et des
// applications web.
// Ce logiciel est régi par la licence CeCILL soumise au droit français et
// respectant les principes de diffusion des logiciels libres. Vous pouvez
// utiliser, modifier et/ou redistribuer ce programme sous les conditions
// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
// sur le site "http://www.cecill.info".
 
// En contrepartie de l'accessibilité au code source et des droits de copie,
// de modification et de redistribution accordés par cette licence, il n'est
// offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
// seule une responsabilité restreinte pèse sur l'auteur du programme, le
// titulaire des droits patrimoniaux et les concédants successifs.
 
// A cet égard l'attention de l'utilisateur est attirée sur les risques
// associés au chargement, à l'utilisation, à la modification et/ou au
// développement et à la reproduction du logiciel par l'utilisateur étant
// donné sa spécificité de logiciel libre, qui peut le rendre complexe à
// manipuler et qui le réserve donc à des développeurs et des professionnels
// avertis possédant des connaissances informatiques approfondies. Les
// utilisateurs sont donc invités à charger et tester l'adéquation du
// logiciel à leurs besoins dans des conditions permettant d'assurer la
// sécurité de leurs systèmes et ou de leurs données et, plus généralement,
// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
 
// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
// pris connaissance de la licence CeCILL, et que vous en avez accepté les
// termes.
// ----
// CVS : $Id: adme_menu_classique.fonct.php,v 1.22 2005-07-08 21:13:15 ddelon Exp $
/**
* Fonctions de gestion des menus classiques
*
35,7 → 48,7
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@author Laurent COUDOUNEAU <lc@gsite.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.21 $ $Date: 2005-05-26 16:13:08 $
*@version $Revision: 1.22 $ $Date: 2005-07-08 21:13:15 $
// +------------------------------------------------------------------------------------------------------+
*/
 
223,7 → 236,18
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.ADME_LG_ACTION_CLASSIQUE_DESCENDRE_TITLE.'">'.
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_FLECHE_BAS.'" alt="'.ADME_LG_ACTION_CLASSIQUE_DESCENDRE_ALT.'" />'.
'</a>&nbsp;'."\n";
$url->addQueryString('adme_action',ADME_LG_ACTION_CLASSIQUE_DIMINUER);
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.ADME_LG_ACTION_CLASSIQUE_DIMINUER_TITLE.'">'.
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_FLECHE_GAUCHE.'" alt="'.ADME_LG_ACTION_CLASSIQUE_DIMINUER_ALT.'" />'.
'</a>&nbsp;'."\n";
$url->removeQueryString('adme_action');
$url->addQueryString('adme_action',ADME_LG_ACTION_CLASSIQUE_AUGMENTER);
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.ADME_LG_ACTION_CLASSIQUE_AUGMENTER_TITLE.'">'.
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_FLECHE_DROITE.'" alt="'.ADME_LG_ACTION_CLASSIQUE_AUGMENTER_ALT.'" />'.
'</a>&nbsp;'."\n";
$url->removeQueryString('adme_action');
$url->addQueryString('adme_action', ADME_LG_ACTION_CLASSIQUE_SUPPRIMER);
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.ADME_LG_ACTION_CLASSIQUE_SUPPRIMER_TITLE.'" onclick="javascript:return confirm(\''.ADME_LG_ACTION_SUPPRIMER_CONFIRMATION.'\');">'.
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_SUPPRIMER.'" alt="'.ADME_LG_ACTION_CLASSIQUE_SUPPRIMER_ALT.'" />'.
233,7 → 257,9
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.ADME_LG_ACTION_CLASSIQUE_AJOUTER_TITLE.'">'.
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_NOUVEAU.'" alt="'.ADME_LG_ACTION_CLASSIQUE_AJOUTER_ALT.'" />'.
'</a>'.'&nbsp;'."\n";
$url->removeQueryString('adme_action');
// Si le menu à une application liée on regarde s'il y a une interface d'administration.
if ($ligne_app->gap_id_application != 0 && GEN_verifierPresenceInterfaceAdmin($db, $ligne_app->gap_id_application)) {
$url->removeQueryString('adme_action');
845,6 → 871,7
(DB::isError($resultat_menu)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_menu->getMessage(), $requete)) : '';
$ligne_menu = $resultat_menu->fetchRow(DB_FETCHMODE_OBJECT);
$resultat_menu->free();
//-------------------------------------------------------------------------------------------------------------------
// Si la requete ne retourne rien nous ne faisons rien.
871,9 → 898,193
(DB::isError($resultat_update)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_update->getMessage(), $requete)) : '';
}
 
 
/** Fonction ADME_indenterMenuClassique() - Permet d'augmenter ou diminuer l'indentation d'un menu dans la
* hierarchie
*
* Permet d'augmenter ou diminuer l'indentation d'un menu dans la hierarchie
*
* @param mixed objet Pear DB de connexion à la base de données.
* @param integer identifiant du site administré.
* @param integer identifiant du menu à déplacer.
* @param boolean indique si on veut diminuer (gauche) l'indentation (true) ou augmenter (droite) l'indentation (false).
* @return void modifie la base de données.
*/
function ADME_indenterMenuClassique($db, $adme_site_id, $adme_menu_id, $bln_diminuer) {
 
//-------------------------------------------------------------------------------------------------------------------
// Récupération d'information sur le site de ce menu.
$objet_site = GEN_lireInfoSitePrincipal($db, $adme_site_id);
if ($objet_site == false) {
die('ERREUR Papyrus Administrateur de Menus : '.ADME_LG_ERREUR_INFO_SITE.'<br />'.
'Id du site : '. $adme_site_id .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br />');
}
//-------------------------------------------------------------------------------------------------------------------
// Récupération d'informations sur les relations du menu courant.
$ligne_menu_courant_relation = GEN_lireInfoMenuRelation($db, $adme_menu_id, '1');
if ($ligne_menu_courant_relation == false) {
die('ERREUR Papyrus Administrateur de Menus : '.ADME_LG_ERREUR_INFO_MENU_RELATION.'<br />'.
'Identifiant menu : '. $adme_menu_id .'<br />'.
'Identifiant valeur relation : 1 <br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br />');
}
//-------------------------------------------------------------------------------------------------------------------
// Récupération de l'identifiant du menu pére
$id_pere = GEN_lireIdentifiantMenuPere($adme_menu_id);
if ($id_pere === false) {
die('ERREUR Papyrus Administrateur de Menus : '.ADME_LG_ERREUR_ID_MENU_PERE.'<br />'.
'Identifiant menu fils : '. $adme_menu_id .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br />');
}
if ($bln_diminuer) {
// Diminution d'un niveau
if ($id_pere) {
// Récupération de l'identifiant du menu grand pére, sera le nouveau pere
$id_grand_pere = GEN_lireIdentifiantMenuPere($id_pere);
if ($id_grand_pere === false) {
die('ERREUR Papyrus Administrateur de Menus : '.ADME_LG_ERREUR_ID_MENU_PERE.'<br />'.
'Identifiant menu fils : '. $adme_menu_id .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br />');
}
// Récupération d'informations sur les relations du menu pere
$ligne_menu_pere_relation = GEN_lireInfoMenuRelation($db, $id_pere, '1');
if ($ligne_menu_pere_relation == false) {
die('ERREUR Papyrus Administrateur de Menus : '.ADME_LG_ERREUR_INFO_MENU_RELATION.'<br />'.
'Identifiant menu : '. $adme_menu_id .'<br />'.
'Identifiant valeur relation : 1 <br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br />');
}
//-------------------------------------------------------------------------------------------------------------------
// Recherche d'information sur le menu suivant le menu pere
//-------------------------------------------------------------------------------------------------------------------
$requete = 'SELECT GMR01.gmr_ordre AS nouvel_ordre, GMR01.gmr_id_menu_01 AS id_menu_remplace '.
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
'WHERE GMR02.gmr_id_menu_01 = GMR01.gmr_id_menu_01 '.
'AND GMR01.gmr_id_menu_01 = gm_id_menu './/jonction avec la table GEN_MENU
'AND gm_ce_site = '.$objet_site->gs_id_site.' '.
'AND GMR02.gmr_id_valeur = 100 '.// 100 = menu type "classique"
'AND GMR01.gmr_id_menu_02 = '.$id_grand_pere.' '.
'AND GMR01.gmr_id_valeur = 1 '.// 1 = relation menu "père"
'AND GMR01.gmr_ordre > '.$ligne_menu_pere_relation->gmr_ordre.' '.
'ORDER BY GMR01.gmr_ordre DESC';
$resultat_menu = $db->query($requete);
(DB::isError($resultat_menu)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_menu->getMessage(), $requete)) : '';
$ligne_menu = $resultat_menu->fetchRow(DB_FETCHMODE_OBJECT);
$resultat_menu->free();
//-------------------------------------------------------------------------------------------------------------------
// Si la requete ne retourne rien nous ne faisons rien.
if (! $ligne_menu) {
$no=$ligne_menu_pere_relation->gmr_ordre+1;
}
else {
$no=$ligne_menu->nouvel_ordre+1;
}
// Mise à jour pere menu courant
$requete = 'UPDATE gen_menu_relation SET '.
'gmr_id_menu_02 = '.$id_grand_pere.' ,'.
'gmr_ordre = '.$no.' '.
'WHERE gmr_id_menu_01 = '.$ligne_menu_courant_relation->gmr_id_menu_01.' '.
'AND gmr_id_valeur = 1';// 1 = relation menu "père"
$resultat_update = $db->query($requete);
(DB::isError($resultat_update)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_update->getMessage(), $requete)) : '';
}
}
else {
 
$requete = 'SELECT GMR01.gmr_id_menu_01 '.
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
'WHERE GMR02.gmr_id_menu_01 = GMR01.gmr_id_menu_01 '.
'AND GMR01.gmr_id_menu_01 = gm_id_menu './/jonction avec la table GEN_MENU
'AND gm_ce_site = '.$objet_site->gs_id_site.' '.
'AND GMR02.gmr_id_valeur = 100 '.// 100 = menu type "classique"
'AND GMR01.gmr_id_menu_02 = '.$id_pere.' '.
'AND GMR01.gmr_id_valeur = 1 '.// 1 = relation menu "père"
'AND GMR01.gmr_ordre < '.$ligne_menu_courant_relation->gmr_ordre.' '.
'ORDER BY GMR01.gmr_ordre DESC';
$resultat_menu = $db->query($requete);
(DB::isError($resultat_menu)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_menu->getMessage(), $requete)) : '';
 
$ligne_menu = $resultat_menu->fetchRow(DB_FETCHMODE_OBJECT);
$resultat_menu->free();
//-------------------------------------------------------------------------------------------------------------------
// Si la requete ne retourne rien nous ne faisons rien.
if (! $ligne_menu) {
return null;
}
//----------------------------------------------------------------------------
// Recherche dernier fils
$requete = 'SELECT GMR01.gmr_ordre '.
'FROM gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
'WHERE GMR01.gmr_id_menu_02 = '.$ligne_menu->gmr_id_menu_01.' '.
'AND GMR01.gmr_id_valeur = 1 '.// 1 = avoir "père"
'AND GMR02.gmr_id_menu_01 = GMR01.gmr_id_menu_01 '.
'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
'AND GMR02.gmr_id_valeur = 100 '.// 100 = menu type "classique"
'ORDER BY GMR01.gmr_ordre DESC';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
 
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$no = $ligne->gmr_ordre + 1;
$resultat->free();
 
// Mise à jour pere menu courant
$requete = 'UPDATE gen_menu_relation SET '.
'gmr_id_menu_02 = '.$ligne_menu->gmr_id_menu_01.' ,'.
'gmr_ordre = '.$no.' '.
'WHERE gmr_id_menu_01 = '.$ligne_menu_courant_relation->gmr_id_menu_01.' '.
'AND gmr_id_valeur = 1';// 1 = relation menu "père"
$resultat_update = $db->query($requete);
(DB::isError($resultat_update)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_update->getMessage(), $requete)) : '';
 
}
}
 
 
/** Fonction ADME_supprimerMenuClassique() - Supprime un menu classique.
*
* Supprime de la base de données de Génésia toutes les traces du menu classiques
* Supprime de la base de données de Papyrus toutes les traces du menu classiques
* passé en paramètre.
* Ancien nom : deleteMenu()
*
952,6 → 1163,9
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.21 2005/05/26 16:13:08 jpm
* Correction taille éditeur: passage en text
*
* Revision 1.19 2005/05/26 15:34:46 jpm
* Ajout d'un espace.
*