19,7 → 19,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.25 2005-10-17 13:48:59 jp_milcent Exp $ |
// CVS : $Id: adsi_site.fonct.php,v 1.26 2006-03-02 10:49:49 ddelon Exp $ |
/** |
* Bibliothèque de fonctions d'admininistration des projets |
* |
34,7 → 34,7 |
*@author Alexandre GRANIER <alexandre@tela-botanica.org> |
*@author Laurent COUDOUNEAU <lc@gsite.org> |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.25 $ $Date: 2005-10-17 13:48:59 $ |
*@version $Revision: 1.26 $ $Date: 2006-03-02 10:49:49 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
60,17 → 60,132 |
*/ |
function ADMIN_afficherFormListeSites(&$db, $url, $message = '') |
{ |
// Liste des sites principaux |
|
$id_langue = $GLOBALS['_GEN_commun']['i18n']; //identifiant de la langue choisie |
|
// Langue en cours : langue choisie ou langue par defaut (principale) |
|
if (isset($id_langue) && ($id_langue!='')) { |
$langue_test=$id_langue; |
} else { |
$langue_test=GEN_I18N_ID_DEFAUT; |
} |
|
// Liste des sites principaux : |
// Recherche de tous les sites langue en cours |
|
$requete = 'SELECT * '. |
'FROM gen_site, gen_site_relation '. |
'WHERE gsr_id_site_01 = gsr_id_site_02 '. |
'AND gsr_id_site_01 = gs_id_site '. |
'AND gsr_id_valeur IN (102, 103) '. |
'AND gs_ce_i18n = "'.$langue_test.'" '. |
'ORDER BY gsr_ordre'; |
|
|
$resultat = $db->query($requete); |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
|
$liste_site=array(); |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
|
if ($langue_test == GEN_I18N_ID_DEFAUT) { |
|
$requete_est_traduction = 'SELECT gsr_id_site_01 '. |
'FROM gen_site_relation '. |
'WHERE '.$ligne->gs_id_site.' = gsr_id_site_02 ' . |
'AND gsr_id_site_01 <> gsr_id_site_02 ' . |
'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction" |
|
|
$resultat_est_traduction = $db->query($requete_est_traduction); |
(DB::isError($resultat_est_traduction)) |
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_est_traduction->getMessage(), $requete_est_traduction)) |
: ''; |
|
if ( $resultat_est_traduction->numRows() == 0 ) { |
$liste_site[]=$ligne; |
} |
} |
else { |
$liste_site[]=$ligne; |
} |
} |
$resultat->free(); |
|
// Si la langue en cours n'est pas la langue par défaut, recherche des sites ayant comme langue |
// la langue par defaut, non traduits dans la langue en cours et n'etant pas des traductions |
|
|
if ($langue_test != GEN_I18N_ID_DEFAUT) { |
|
|
$requete = 'SELECT * '. |
'FROM gen_site, gen_site_relation '. |
'WHERE gsr_id_site_01 = gsr_id_site_02 '. |
'AND gs_id_site = gsr_id_site_01 '. |
'AND gsr_id_valeur IN (102, 103) '. |
'AND gs_ce_i18n = "'.GEN_I18N_ID_DEFAUT.'" '. |
'ORDER BY gs_code_num ASC';// 102 = site "principal" et 103 = site "externe" |
|
$resultat = $db->query($requete); |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : ''; |
|
|
|
|
// Recherche de tous les sites de la langue principale qui ne sont pas traduits dans la langue en cours |
|
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
|
$requete_est_traduction = 'SELECT gsr_id_site_01 '. |
'FROM gen_site_relation '. |
'WHERE '.$ligne->gs_id_site.' = gsr_id_site_02 ' . |
'AND gsr_id_site_01 <> gsr_id_site_02 ' . |
'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction" |
|
|
$resultat_est_traduction = $db->query($requete_est_traduction); |
(DB::isError($resultat_est_traduction)) |
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_est_traduction->getMessage(), $requete_est_traduction)) |
: ''; |
|
if ( $resultat_est_traduction->numRows() == 0 ) { |
|
|
if (isset($id_langue) && ($id_langue!='')) { |
$langue_test=$id_langue; |
} else { |
$langue_test=GEN_I18N_ID_DEFAUT; |
} |
|
$requete_traduction = 'SELECT gsr_id_site_01 '. |
'FROM gen_site_relation, gen_site '. |
'WHERE '.$ligne->gs_id_site.' = gsr_id_site_01 ' . |
'AND gsr_id_site_02 = gs_id_site '. |
'AND gs_ce_i18n = "'.$langue_test.'" '. |
'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction" |
|
$resultat_traduction = $db->query($requete_traduction); |
(DB::isError($resultat_traduction)) |
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_traduction->getMessage(), $requete_traduction)) |
: ''; |
|
if ( $resultat_traduction->numRows() == 0 ) { |
$liste_site []=$ligne; |
} |
|
$resultat_traduction->free(); |
|
} |
$resultat_est_traduction->free(); |
|
} |
$resultat->free(); |
} |
|
|
|
//---------------------------------------------------------------------------- |
// Création du formulaire |
$form =& new HTML_QuickForm('form_sites', 'post', str_replace('&', '&', $url)); |
89,8 → 204,26 |
$form->addElement('html', $partie_site_debut); |
|
$aso_options = array(); |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
foreach ($liste_site as $ligne ) { |
$aso_options[$ligne->gs_id_site] = htmlentities($ligne->gs_nom.' ('.$ligne->gs_code_alpha.')'); |
|
// Affichage des traductions |
$requete_traduction = 'SELECT * '. |
'FROM gen_site_relation, gen_site '. |
'WHERE '.$ligne->gs_id_site.' = gsr_id_site_01 ' . |
'AND gsr_id_site_02 <> gsr_id_site_01 '. |
'AND gsr_id_site_02 = gs_id_site '. |
'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction" |
$resultat_traduction = $db->query($requete_traduction); |
(DB::isError($resultat_traduction)) |
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_traduction->getMessage(), $requete_traduction)) |
: ''; |
|
while ($ligne_traduction = $resultat_traduction->fetchRow(DB_FETCHMODE_OBJECT)) { |
$aso_options[$ligne_traduction->gs_id_site] = ' '.$ligne_traduction->gs_ce_i18n.": ".htmlentities($ligne_traduction->gs_nom.' ('.$ligne_traduction->gs_code_alpha.')'); |
} |
$resultat_traduction->free(); |
|
} |
$resultat->free(); |
|
115,6 → 248,11 |
$aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++); |
$label = 'Modifier'; |
$form->addElement('submit', $id, $label, $aso_attributs); |
|
$id = 'form_sites_traduire'; |
$aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++); |
$label = 'Traduire'; |
$form->addElement('submit', $id, $label, $aso_attributs); |
|
$id = 'form_sites_supprimer'; |
$aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'onclick' => 'javascript:return confirm(\''.'Êtes vous sûr de vouloir supprimer ce site ?'.'\');'); |
168,22 → 306,57 |
// Initialisation des valeurs |
$sortie = ''; |
$aso_valeurs['modification'] = false; |
$aso_valeurs['traduction'] = false; |
$aso_valeurs['defaut'] = false; |
$aso_valeurs['type_site_externe'] = 0; |
// Nous cherchons à savoir si nous somme en modification |
if (isset($aso_valeurs['form_sites_modifier'])) { |
$site_id = $aso_valeurs['form_sites_id_site']; |
// Requete pour récupérer les informations sur le site à modifier |
$requete = 'SELECT * '. |
'FROM gen_site '. |
'WHERE gs_id_site = '.$site_id; |
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
} |
$aso_valeurs = $resultat->fetchRow(DB_FETCHMODE_ASSOC); |
$resultat->free(); |
if ((isset($aso_valeurs['form_sites_modifier'])) || (isset($aso_valeurs['form_sites_traduire']))) { |
if ((isset($aso_valeurs['form_sites_modifier']))) { |
$as_val['modification'] = true; |
} |
else { |
$as_val['traduction'] = true; |
}; |
|
if ($as_val['traduction']) { |
// Traduction d'un site principal uniquement : |
|
$requete = 'SELECT * '. |
'FROM gen_site_relation '. |
'WHERE gsr_id_site_02 = '.$aso_valeurs['form_sites_id_site'].' '. |
'AND gsr_id_valeur =1 '; // 1 = "avoir traduction" |
|
$resultat = $db->query($requete); |
|
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
} |
|
if ( $resultat->numRows() == 0 ) { |
$site_id = $aso_valeurs['form_sites_id_site']; |
} |
else { |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT); |
$site_id = $ligne->gsr_id_site_01; |
} |
$resultat->free(); |
} |
else { |
$site_id = $aso_valeurs['form_sites_id_site']; |
} |
|
// Requete pour récupérer les informations sur le site à modifier |
$requete = 'SELECT * '. |
'FROM gen_site '. |
'WHERE gs_id_site = '.$site_id; |
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
} |
$aso_valeurs = $resultat->fetchRow(DB_FETCHMODE_ASSOC); |
$site_ligne = $aso_valeurs; |
$resultat->free(); |
|
// Requete pour récupérer les informations issues des relations du site à modifier |
$requete = 'SELECT * '. |
'FROM gen_site_relation '. |
207,7 → 380,15 |
} |
$resultat->free(); |
|
$aso_valeurs['modification'] = true; |
if (($as_val['modification'])) { |
$aso_valeurs['modification'] = true; |
} |
else { |
$aso_valeurs['traduction'] = true; |
}; |
|
|
|
} else if (isset($aso_valeurs['gs_id_site'])) { |
$aso_valeurs['modification'] = true; |
} |
215,7 → 396,7 |
//$GLOBALS['_DEBOGAGE_'] .= '<pre>'.print_r($aso_valeurs, true).'</pre>'; |
//------------------------------------------------------------------------------------------------------------------- |
// Information précédent le formulaire (en modification) |
if (isset($aso_valeurs['modification'])&&isset($aso_valeurs['gs_id_site'])) { |
if ((isset($aso_valeurs['modification'])||isset($aso_valeurs['traduction']))&&isset($aso_valeurs['gs_id_site'])) { |
$sortie .= '<p>'.'Identifiant de ce site : '.'<span id="adsi_site_id">'.$aso_valeurs['gs_id_site'].'</span></p>'."\n"; |
} |
//------------------------------------------------------------------------------------------------------------------- |
240,8 → 421,10 |
$partie_site_debut = '<fieldset>'."\n".'<legend>Configuration du site</legend>'."\n".'<ul>'."\n"; |
$form->addElement('html', $partie_site_debut); |
|
if ($aso_valeurs['modification']) { |
if ($aso_valeurs['modification'] || $aso_valeurs['traduction']) { |
$form->addElement('hidden', 'gs_id_site'); |
$form->addElement('hidden', 'modification'); |
$form->addElement('hidden', 'traduction'); |
} |
|
$id = 'gs_nom'; |
292,9 → 475,9 |
$label = '<label for="'.$id.'">'.'Identification : '.'</label>'; |
$form->addElement('select', $id, $label, $aso_options, $aso_attributs); |
|
// En modification nous affichons la liste des squelettes disponiblent dans |
// En modification nous affichons la liste des squelettes disponibles dans |
// le dossier du site. |
if ($aso_valeurs['modification']) { |
if ($aso_valeurs['modification'] || $aso_valeurs['traduction']) { |
$aso_options = array(); |
if (!GEN_FTP_UTILISE) { |
$chemin_squelettes = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP. |
350,8 → 533,48 |
} |
|
// Requete pour connaitre les internationalisation dispo |
$requete = 'SELECT * '. |
'FROM gen_i18n '; |
|
if (!$aso_valeurs['modification'] && !$aso_valeurs['traduction']) { |
$requete = 'SELECT * '. |
'FROM gen_i18n '; |
} |
else { |
|
|
if ($aso_valeurs['traduction']) { |
|
// Recherche liste des sites deja traduits |
|
$requete = 'SELECT distinct gs_ce_i18n '. |
'FROM gen_site_relation, gen_site '. |
'WHERE gsr_id_site_01 = ' .$site_ligne['gs_id_site'] .' '. |
'AND gs_id_site = gsr_id_site_02 '. |
'AND gsr_id_valeur =1 '; // 1 = "avoir traduction" |
|
$resultat = $db->query($requete) ; |
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
} |
$not_in_langue=''; |
if ( $resultat->numRows() == 0 ) { |
$not_in_langue="gi_id_i18n not in('".$site_ligne['gs_ce_i18n']."')"; |
} |
else { |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
$not_in_langue="'".$ligne->gs_ce_i18n."'".",".$not_in_langue; |
$end="'".$ligne->gs_ce_i18n."'"; |
} |
$not_in_langue=' gi_id_i18n not in('.$not_in_langue.$end.')'; |
} |
$resultat->free(); |
|
$requete = "SELECT * FROM gen_i18n where ".$not_in_langue; |
} |
else |
{ |
$requete = "SELECT * FROM gen_i18n where gi_id_i18n =('".$site_ligne['gs_ce_i18n']."')"; |
} |
} |
$resultat = $db->query($requete) ; |
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
398,8 → 621,8 |
$form->addElement('html', $partie_entete_debut); |
|
$id = 'gs_titre'; |
$aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 45, 'maxlength' => 255, 'value' => 'titre du site'); |
$label = '<label for="'.$id.'">'.'Titre du site : '.'</label>'; |
$aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 45, 'maxlength' => 255, 'value' => ADSI_TITRE_SITE); |
$label = '<label for="'.$id.'">'.ADSI_TITRE_SITE.' : '.'</label>'; |
$form->addElement('text', $id, $label, $aso_attributs); |
$form->addRule('gs_titre', 'Un titre est requis pour le site !', 'required', '', 'client'); |
|
428,7 → 651,7 |
$partie_entete_fin = '</ul>'."\n".'</fieldset>'."\n"; |
$form->addElement('html', $partie_entete_fin); |
|
if ($aso_valeurs['modification']) { |
if ($aso_valeurs['modification'] || $aso_valeurs['traduction']) { |
// Requete pour connaitre les informations sur l'administrateur ayant fait la dernière modif |
$requete_admin = 'SELECT * '. |
'FROM gen_annuaire '. |
447,9 → 670,15 |
} |
|
// Titre de la page: |
$titre = 'Modifier un site'; |
// Bouton validant le formulaire |
$bouton_validation = '<input type="submit" id="site_modifier" name="site_modifier" value="Enregistrer" />'; |
if ($aso_valeurs['modification']) { |
$titre = 'Modifier un site'; |
$bouton_validation = '<input type="submit" id="site_modifier" name="site_modifier" value="Enregistrer" />'; |
} |
else { |
$titre = 'Traduire un site'; |
$bouton_validation = '<input type="submit" id="site_traduire" name="site_traduire" value="Enregistrer" />'; |
} |
|
} else { |
// Titre de la page: |
$titre = 'Ajouter un site'; |
515,28 → 744,40 |
$message .= '<p class="pap_erreur">Le champ "Code numérique" doit contenir un nombre.</p>'; |
} |
|
// Requete pour vérifier l'abscence du code numérique et alphanumérique de la table gen_site |
$requete = 'SELECT gs_code_alpha, gs_code_num '. |
'FROM gen_site, gen_site_relation '. |
'WHERE gsr_id_site_01 = gsr_id_site_02 '. |
'AND gsr_id_site_01 = gs_id_site '. |
'AND gsr_id_valeur IN (102, 103) ';// 102 = site "principal" et 103 = site "externe" |
$requete .= (isset($aso_valeurs['gs_id_site'])) ? 'AND gs_id_site != '.$aso_valeurs['gs_id_site'] : ''; |
// Requete pour vérifier l'absence du code numérique et alphanumérique de la table gen_site |
// en mode creation uniquement ! |
|
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
if (!$aso_valeurs['site_modifier'] && !$aso_valeurs['site_traduire'] ) { |
|
$requete = 'SELECT gs_code_alpha, gs_code_num '. |
'FROM gen_site, gen_site_relation '. |
'WHERE gsr_id_site_01 = gsr_id_site_02 '. |
'AND gsr_id_site_01 = gs_id_site '. |
'AND gsr_id_valeur IN (102, 103) ';// 102 = site "principal" et 103 = site "externe" |
$requete .= (isset($aso_valeurs['gs_id_site'])) ? 'AND gs_id_site != '.$aso_valeurs['gs_id_site'] : ''; |
|
|
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
} |
|
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) { |
if ($ligne->gs_code_num == $aso_valeurs['gs_code_num']) { |
$message .= '<p class="pap_erreur">La valeur "'.$aso_valeurs['gs_code_num'].'" pour le champ "Code numérique" existe déjà.</p>'; |
} |
if ($ligne->gs_code_alpha == $aso_valeurs['gs_code_alpha']) { |
$message .= '<p class="pap_erreur">La valeur "'.$aso_valeurs['gs_code_alpha'].'" pour le champ "Code alphanumérique" existe déjà.</p>'; |
} |
} |
|
$resultat->free(); |
|
} |
|
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) { |
if ($ligne->gs_code_num == $aso_valeurs['gs_code_num']) { |
$message .= '<p class="pap_erreur">La valeur "'.$aso_valeurs['gs_code_num'].'" pour le champ "Code numérique" existe déjà.</p>'; |
} |
if ($ligne->gs_code_alpha == $aso_valeurs['gs_code_alpha']) { |
$message .= '<p class="pap_erreur">La valeur "'.$aso_valeurs['gs_code_alpha'].'" pour le champ "Code alphanumérique" existe déjà.</p>'; |
} |
else { |
// Refuser si plus de traduction disponible ! |
} |
$resultat->free(); |
|
if (empty($aso_valeurs['gs_titre'])) { |
$message .= '<p class="pap_erreur">Le champ "Titre" ne doit pas être vide.</p>'; |
797,6 → 1038,305 |
return $message; |
} |
|
/** Fonction ADMIN_traduireSite() - Traduire un site papyrus |
* |
* Cette fonction traduit un site à Papyrus, c'est à dire : |
* - 1. Création des répertoire du projet en fonction du nom et des sous-répertoires. |
* - 2. Insertion d'une ligne dans la table "gen_site". |
* - 3. Insertion d'une ligne dans la table "gen_site_auth" et ses tables liées si nécessaire. |
* |
* @param string l'objet pear de connexion à la base de données. |
* @param string le tableau contenant les valeurs du formulaire. |
* @param int identifiant de l'administrateur réalisant cette création. |
* @return string retourne un message en cas de succès ou d'échec. |
*/ |
function ADMIN_traduireSite(&$db, $aso_valeurs, $id_admin) |
{ |
// Nous vérifions si nous avons à faire à un site externe. |
$id_type_site = '102';// par défaut on considére que c'est un site "principal" |
if (isset($aso_valeurs['type_site_externe']) && $aso_valeurs['type_site_externe'] > 0 && !empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://') { |
$id_type_site = '103';// c'est un site "externe" |
} |
|
// Ajout des répertoires des sites "principaux" soit par manipulation de fichier soit par FTP en fonction de la constante définie |
// par l'utilisateur dans le fichier de config avancée. |
$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 && $id_type_site != '103') { |
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, 0777, GEN_SEP); |
umask($vieux_umask); |
if ($resultat == false) { |
$message = '<p class="pap_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. |
GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE; |
$chemin_squelette_site = 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.GEN_FICHIER_SQUELETTE; |
if (!copy($chemin_squelette_defaut, $chemin_squelette_site)) { |
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de créer le fichier de squellete par défaut.<br />'. |
'Fichier : '. $chemin_squelette_site .'<br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br /></p>'; |
return $message; |
} |
$chemin_style_defaut = PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP. |
GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE; |
$chemin_style_site = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP. |
$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="pap_erreur"> ERREUR Papyrus admin : impossible de créer le fichier de style par défaut.<br />'. |
'Fichier : '. $chemin_style_site .'<br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br /></p>'; |
return $message; |
} |
} else if (GEN_FTP_UTILISE && $id_type_site != '103') { // 103 est le type "site externe" |
// 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; |
} |
$objet_pear_ftp->mkdir(PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha']) ; |
|
//$objet_pear_ftp->cd(PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha']) ; |
foreach ($tab_rep_langue as $nom_rep_langue) { |
$objet_pear_ftp->mkdir(PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.$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; |
|
$resultat = $objet_pear_ftp->mkdir($chemin_repertoire) ; |
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. |
GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE; |
$chemin_squelette_site = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP. |
$aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE; |
$resultat = $objet_pear_ftp->put($chemin_squelette_defaut, $chemin_squelette_site, true, FTP_BINARY); |
if (PEAR::isError($resultat)) { |
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le squelette defaut par ftp.<br />'. |
'Fichier origine : '. $chemin_squelette_defaut .'<br />'. |
'Fichier copié : '. $chemin_squelette_site .'<br />'. |
'Erreur origine : '. $resultat->getMessage() .'<br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br /></p>'; |
return $message; |
} |
$chemin_style_defaut = PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP. |
GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE; |
$chemin_style_site = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP. |
$aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE; |
$resultat = $objet_pear_ftp->put($chemin_style_defaut, $chemin_style_site, true, FTP_BINARY); |
if (PEAR::isError($resultat)) { |
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier les styles defaut par ftp.<br />'. |
'Fichier origine : '. $chemin_style_defaut .'<br />'. |
'Fichier copié : '. $chemin_style_site .'<br />'. |
'Erreur origine : '. $resultat->getMessage() .'<br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br /></p>'; |
return $message; |
} |
$objet_pear_ftp->disconnect(); |
} |
|
$id_site = SQL_obtenirNouveauId($db, 'gen_site','gs_id_site'); |
|
if ($id_site == false) { |
$message = '<p class="erreur"> ERREUR Génésia admin : impossible de récupérer un identifiant pour la table gen_site.<br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br /></p>'; |
return $message; |
} |
|
// Modification de la requete si nous avons à faire à un site externe. |
$requete_complement = ', gs_url = NULL'; |
if (isset($aso_valeurs['type_site_externe']) && $aso_valeurs['type_site_externe'] > 0 && !empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://') { |
$requete_complement = ', gs_url = "'.$aso_valeurs['gs_url'].'"'; |
} |
|
// Requete d'insertion des infos d'un site dans gen_site |
$requete = 'INSERT INTO gen_site '. |
'SET gs_id_site = '.$id_site.', '. |
'gs_ce_i18n = "'.$aso_valeurs['gs_ce_i18n'].'", '. |
'gs_ce_auth = '.$aso_valeurs['gs_ce_auth'].', '. |
'gs_fichier_squelette = "defaut.html", '. |
'gs_code_num = '.$aso_valeurs['gs_code_num'].', '. |
'gs_code_alpha = "'.$aso_valeurs['gs_code_alpha'].'", '. |
'gs_nom = "'.$aso_valeurs['gs_nom'].'", '. |
'gs_raccourci_clavier = "'.$aso_valeurs['gs_raccourci_clavier'].'", '. |
'gs_titre = "'.$aso_valeurs['gs_titre'].'", '. |
'gs_mots_cles = "'.$aso_valeurs['gs_mots_cles'].'", '. |
'gs_description = "'.$aso_valeurs['gs_description'].'", '. |
'gs_auteur = "'.$aso_valeurs['gs_auteur'].'", '. |
'gs_date_creation = "'.date('Y-m-d H:i:s').'", '. |
'gs_ce_admin = '.$id_admin. |
$requete_complement; |
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
} |
|
// Recherche du nouveau numéro d'ordre de ce site "principal" ou "externe" |
$requete = 'SELECT MAX(gsr_ordre) AS max_ordre '. |
'FROM gen_site_relation '. |
'WHERE gsr_id_site_01 = gsr_id_site_02 '. |
'AND gsr_id_valeur IN (102, 103) ';// 102 = site "principal" et 103 = site "externe" |
$resultat = $db->query($requete) ; |
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT); |
$nouvel_ordre = $ligne->max_ordre + 1; |
|
// Requete d'insertion des relations dans gen_site_relation |
|
$requete = 'INSERT INTO gen_site_relation '. |
'SET gsr_id_site_01 = '.$id_site.', '. |
'gsr_id_site_02 = '.$id_site.', '. |
'gsr_id_valeur = '.$id_type_site.', '. |
'gsr_ordre = '.$nouvel_ordre; |
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)); |
} |
|
// Traduction : Requete d'insertion des relations dans gen_site_relation |
|
$requete = 'SELECT MAX(gsr_ordre) AS max_ordre '. |
'FROM gen_site_relation '. |
'WHERE gsr_id_site_01 = ' .$aso_valeurs['gs_id_site'] .' '. |
'AND gsr_id_valeur =1 '; // 1 = "avoir traduction" |
$resultat = $db->query($requete) ; |
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
} |
if ( $resultat->numRows() == 0 ) { |
$nouvel_ordre = 1; |
} |
else { |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT); |
$nouvel_ordre = $ligne->max_ordre + 1; |
} |
|
// 1 : insertion information traduction pere (si inexistant) |
|
$requete = 'SELECT * '. |
'FROM gen_site_relation '. |
'WHERE gsr_id_site_01 = ' .$aso_valeurs['gs_id_site'] .' '. |
'AND gsr_id_site_01 = gsr_id_site_02 '. |
'AND gsr_id_valeur =1 '; // 1 = "avoir traduction" |
|
$resultat = $db->query($requete) ; |
if (DB::isError($resultat)) { |
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) ); |
} |
if ( $resultat->numRows() == 0 ) { |
|
$requete = 'INSERT INTO gen_site_relation '. |
'SET gsr_id_site_01 = '. $aso_valeurs['gs_id_site'].', '. |
'gsr_id_site_02 = '.$aso_valeurs['gs_id_site'].', '. |
'gsr_id_valeur = 1, '. // 1 = "avoir traduction" |
'gsr_ordre = 1 '; |
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)); |
} |
$nouvel_ordre = 2; |
} |
|
|
// 2 : insertion information traduction site en cours (si inexistant ?) (et la mise a jour, c'est ailleurs |
// dans les mises à jour |
|
$requete = 'INSERT INTO gen_site_relation '. |
'SET gsr_id_site_01 = '. $aso_valeurs['gs_id_site'].', '. |
'gsr_id_site_02 = '.$id_site.', '. |
'gsr_id_valeur = 1, '. // 1 = "avoir traduction" |
'gsr_ordre = '.$nouvel_ordre; |
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)); |
} |
|
|
// Gestion du site par défaut |
if (isset($aso_valeurs['defaut']) && $aso_valeurs['defaut'] == 1) { |
$requete_supr_defaut = 'DELETE FROM gen_site_relation '. |
'WHERE gsr_id_site_01 = gsr_id_site_02 '. |
'AND gsr_id_valeur = 101 ';// 101 = site par "defaut" |
$resultat_supr_defaut = $db->query($requete_supr_defaut); |
if (DB::isError($resultat_supr_defaut)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_defaut->getMessage(), $requete_supr_defaut)); |
} |
|
// Requete d'insertion de la relations site par défaut |
$requete = 'INSERT INTO gen_site_relation '. |
'SET gsr_id_site_01 = '.$id_site.', '. |
'gsr_id_site_02 = '.$id_site.', '. |
'gsr_id_valeur = 101, '. |
'gsr_ordre = NULL '; |
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)); |
} |
} |
|
// Gestion des sites externes |
if ($id_type_site == '103') { |
// Requete d'insertion des relations dans gen_site_relation |
$requete = 'INSERT INTO gen_site_relation '. |
'SET gsr_id_site_01 = '.$id_site.', '. |
'gsr_id_site_02 = '.$id_site.', '. |
'gsr_id_valeur = '.$aso_valeurs['type_site_externe'].', '. |
'gsr_ordre = NULL '; |
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)); |
} |
} |
|
$message = '<p class="pap_info">'.'Succés de l\'ajout du site.'.'</p>'; |
return $message; |
} |
|
|
/** Fonction ADMIN_modifierSite() - Modifie un site de Papyrus. |
* |
* Cette fonction modifie un site géré par Papyrus. |
1164,6 → 1704,15 |
// +- Fin du code source --------------------------------------------------------------------------------+ |
/* |
* $Log: not supported by cvs2svn $ |
* Revision 1.25.2.2 2006/02/28 14:02:10 ddelon |
* Finition multilinguisme |
* |
* Revision 1.25.2.1 2006/01/19 21:26:20 ddelon |
* Multilinguisme site + bug ftp |
* |
* Revision 1.25 2005/10/17 13:48:59 jp_milcent |
* Ajout d'un espace après le texte "Dernière modification par". |
* |
* Revision 1.24 2005/09/23 14:32:54 florian |
* compatibilité XHTML + correction interface |
* |