Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 74 → Rev 75

/trunk/papyrus/applications/admin_site/bibliotheque/adsi_site.fonct.php
20,7 → 20,7
// | 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: adsi_site.fonct.php,v 1.4 2004-10-18 18:27:41 jpm Exp $
// CVS : $Id: adsi_site.fonct.php,v 1.5 2004-10-19 15:57:55 jpm Exp $
/**
* Bibliothèque de fonctions d'admininistration des projets
*
35,7 → 35,7
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.4 $ $Date: 2004-10-18 18:27:41 $
*@version $Revision: 1.5 $ $Date: 2004-10-19 15:57:55 $
// +------------------------------------------------------------------------------------------------------+
*/
 
47,7 → 47,7
* Elle permet la création rapide de formulaire basé sur les tables Mysql.
*/
require_once ADSI_CHEMIN_BIBLIOTHEQUE_API.'formulaire_1.0/FORM_Form.class.php';
if (GEN_SAFE_MODE) {
if (GEN_FTP_UTILISE) {
/** Inclusion bibliothèque de PEAR gérant le FTP.*/
require_once ADSI_CHEMIN_BIBLIOTHEQUE_PEAR.'Net/FTP.php';
}
255,7 → 255,7
// le dossier du site.
if ($aso_valeurs['modification']) {
$aso_options = array();
if (!GEN_SAFE_MODE) {
if (!GEN_FTP_UTILISE) {
$chemin_squelettes = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
$aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP;
$dossier = opendir($chemin_squelettes);
430,7 → 430,8
if (empty($aso_valeurs['gs_code_alpha'])) {
$message .= '<p class="genesia_erreur">Le champ "Code alphanumérique" ne doit pas être vide.</p>';
}
if (empty($aso_valeurs['gs_code_num'])) {
if ($aso_valeurs['gs_code_num'] == '') {
// Note: ne pas utilisez empty() car si on veut saisir 0, cela est conscidéré comme vide!
$message .= '<p class="genesia_erreur">Le champ "Code numérique" ne doit pas être vide.</p>';
}
if (preg_match('/^[0-9]+$/',$aso_valeurs['gs_code_num']) == 0) {
563,23 → 564,27
}
}
// Ajout des répertoires du site soit par manipulation de fichier soit par FTP en fonction de l'activation du safe_mode ou pas
$tableau_repertoires = array( GEN_DOSSIER_IMAGE,
GEN_DOSSIER_STYLE,
GEN_DOSSIER_SCRIPT,
GEN_DOSSIER_SQUELETTE,
GEN_DOSSIER_DOC);
if (!GEN_SAFE_MODE) {
foreach ($tableau_repertoires as $nom_repertoire) {
$chemin_repertoire = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.$aso_valeurs['gs_ce_i18n'].GEN_SEP.$nom_repertoire;
$vieux_umask = umask(0);
$resultat = creerDossier($chemin_repertoire, 0777, GEN_SEP);
umask($vieux_umask);
if ($resultat == false) {
$message = '<p class="genesia_erreur"> ERREUR Papyrus admin : impossible de créer le répertoire.<br />'.
'Répertoire : '. $chemin_repertoire .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
return $message;
$tab_rep_langue = array(GEN_DOSSIER_GENERIQUE, $aso_valeurs['gs_ce_i18n']);
$tab_rep_site = array( GEN_DOSSIER_IMAGE,
GEN_DOSSIER_STYLE,
GEN_DOSSIER_SCRIPT,
GEN_DOSSIER_SQUELETTE,
GEN_DOSSIER_DOC);
if (!GEN_FTP_UTILISE) {
foreach ($tab_rep_langue as $nom_rep_langue) {
foreach ($tab_rep_site as $nom_rep_site) {
$chemin_repertoire = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
$nom_rep_langue.GEN_SEP.$nom_rep_site;
$vieux_umask = umask(0);
$resultat = creerDossier($chemin_repertoire, 0755, GEN_SEP);
umask($vieux_umask);
if ($resultat == false) {
$message = '<p class="genesia_erreur"> ERREUR Papyrus admin : impossible de créer le répertoire.<br />'.
'Répertoire : '. $chemin_repertoire .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
return $message;
}
}
}
$chemin_squelette_defaut = PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
588,7 → 593,7
$aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
if (!copy($chemin_squelette_defaut, $chemin_squelette_site)) {
$message = '<p class="genesia_erreur"> ERREUR Papyrus admin : impossible de créer le fichier de squellete par défaut.<br />'.
'Fichier : '. $$chemin_squelette_site .'<br />'.
'Fichier : '. $chemin_squelette_site .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
return $message;
599,7 → 604,7
$aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
if (!copy($chemin_style_defaut, $chemin_style_site)) {
$message = '<p class="genesia_erreur"> ERREUR Papyrus admin : impossible de créer le fichier de style par défaut.<br />'.
'Fichier : '. $$chemin_style_site .'<br />'.
'Fichier : '. $chemin_style_site .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
return $message;
625,17 → 630,19
'Fichier n° : '. __FILE__ .'<br /><p>';
return $message;
}
foreach ($tableau_repertoires as $nom_repertoire) {
$chemin_repertoire = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
$aso_valeurs['gs_ce_i18n'].GEN_SEP.$nom_repertoire.GEN_SEP;
$resultat = $objet_pear_ftp->mkdir($chemin_repertoire, true) ;
if (PEAR::isError($resultat)) {
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de créer le répertoire par ftp.<br />'.
'Répertoire : '. $chemin_repertoire .'<br />'.
'Erreur origine : '. $resultat->getMessage() .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
return $message;
foreach ($tab_rep_langue as $nom_rep_langue) {
foreach ($tab_rep_site as $nom_rep_site) {
$chemin_repertoire = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
$nom_rep_langue.GEN_SEP.$nom_rep_site.GEN_SEP;
$resultat = $objet_pear_ftp->mkdir($chemin_repertoire, true) ;
if (PEAR::isError($resultat)) {
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de créer le répertoire par ftp.<br />'.
'Répertoire : '. $chemin_repertoire .'<br />'.
'Erreur origine : '. $resultat->getMessage() .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
return $message;
}
}
}
$chemin_squelette_defaut = PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
684,6 → 691,76
*/
function ADMIN_modifierSite($db, $aso_valeurs, $id_admin)
{
// Récupération de l'ancien code alphanumérique
$requete = 'SELECT gs_code_alpha '.
'FROM gen_site '.
'WHERE gs_id_site = '.$aso_valeurs['gs_id_site'];
$ancien_code_alphnum = $db->getOne($requete);
if (DB::isError($ancien_code_alphnum)) {
die( BOG_afficherErreurSql(__FILE__, __LINE__, $ancien_code_alphnum->getMessage(), $requete) );
}
if ($aso_valeurs['gs_code_alpha'] != $ancien_code_alphnum) {
if (!GEN_FTP_UTILISE) {
$chemin_site_ancien = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$ancien_code_alphnum.GEN_SEP;
$chemin_site_nouveau = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP;
if (!rename($chemin_site_ancien, $chemin_site_nouveau)) {
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de changer le nom du dossier du site.<br />'.
'Ancien nom : '. $chemin_site_ancien .'<br />'.
'Nouveau nom : '. $chemin_site_nouveau .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
return $message;
}
} else {
$chemin_site_ancien = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$ancien_code_alphnum.GEN_SEP;
$chemin_site_nouveau = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP;
// Création d'une connection ftp avec Net_FTP de PEAR
// voir http://pear.php.net/manual/fr/package.networking.net-ftp.php
// création de l'objet pear ftp
$objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
// création de la connexion
$ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
// identification
$ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
// Gestion des erreurs ftp
if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /><p>';
return $message;
}
$resultat = $objet_pear_ftp->putRecursive($chemin_site_ancien, $chemin_site_nouveau, false, FTP_BINARY);
if (PEAR::isError($resultat)) {
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier l\'ancien dossier du site.<br />'.
'Dossier site ancien : '. $chemin_site_ancien .'<br />'.
'Dossier site nouveau : '. $chemin_site_nouveau .'<br />'.
'Erreur origine : '. $resultat->getMessage() .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
return $message;
}
// On utilise la racine FTP pour rm
$chemin_site_ancien = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$ancien_code_alphnum.GEN_SEP;
// Changement du niveau d'erreur pour éviter les Notices PHP dues à Net_FTP
error_reporting(E_PARSE);
$resultat = $objet_pear_ftp->rm($chemin_site_ancien, true);
if (PEAR::isError($resultat)) {
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de supprimer l\'ancien dossier du site.<br />'.
'Dossier site ancien : '. $chemin_site_ancien .'<br />'.
'Erreur origine : '. $resultat->getMessage() .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
return $message;
}
// Retour au niveau d'erreur définit dans le fichier de config de Papyrus
error_reporting(GEN_DEBOGAGE_NIVEAU);
$objet_pear_ftp->disconnect();
}
}
// Requete de mise à jour des infos d'un site dans gen_site
$requete = 'UPDATE gen_site '.
'SET gs_ce_i18n = "'.$aso_valeurs['gs_ce_i18n'].'", '.
752,6 → 829,14
die(BOG_afficherErreurSql(__FILE__, __LINE__, $code_alpha_site_principal->getMessage(), $requete));
}
// Nous vérifions que le site n'a pas le code alphanum correspondant au site par défaut d'administration (admin).
if ($code_alpha_site_principal == GEN_SITE_DEFAUT) {
$message = '<p class="pap_erreur">Si vous voulez vraiment supprimer le site d\'administration par défaut de '.
'Papyrus, veuillez commencer par changer la valeur de son code alphanumérique. Vous pourrez '.
'ensuite le supprimer via cette interface.</p>';
return $message;
}
// Recherche des différents sites liés à celui que l'on veut détruire
// Cela comprend le site à détruire lui méme car il posséde la relations
// sur lui meme "site principale".
826,7 → 911,7
$resultat->free();
// Suppression des répertoires du site
if (!GEN_SAFE_MODE) {
if (!GEN_FTP_UTILISE) {
$chemin_repertoire = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$code_alpha_site_principal;
$resultat = supprimerDossier($chemin_repertoire, GEN_SEP);
if (!$resultat) {
845,7 → 930,7
// création de la connexion
$ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
// identification
$ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);;
$ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
// Gestion des erreurs ftp
if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
880,6 → 965,9
// +- Fin du code source --------------------------------------------------------------------------------+
/*
* $Log: not supported by cvs2svn $
* Revision 1.4 2004/10/18 18:27:41 jpm
* Correction problèmes FTP et manipulation de fichiers.
*
* Revision 1.3 2004/09/23 16:51:27 jpm
* Ajout d'informations supplémentaires sur les messages d'erreur.
*