Rev 970 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of Papyrus. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar 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 General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: adwi_wikini.fonct.php,v 1.10 2006-10-05 08:56:12 florian Exp $
/**
* Contient les fonctions de l'application gestion des Wikini
*
*
*
*
*@package Admin_Wikini
*@subpackage Fonctions
//Auteur original :
*@author David Delon <david.delon@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.10 $
// +------------------------------------------------------------------------------------------------------+
*/
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
/* CRUD */
/**
*
* D du CRUD
* @return
*/
function adwi_supprimer_wikini($id_wikini, &$db) {
// Suppression enregistrement
$valeur = adwi_valeurs_par_defaut($id_wikini,$db );
$requete = "delete from gen_wikini where gewi_id_wikini =$id_wikini" ;
$resultat = $db->query ($requete) ;
// Suppression tables Wikini ...
include_once ADWI_CHEMIN_BIBLIOTHEQUE.'gestion_wikini.class.php' ;
$g_wikini = new gestion_wikini($db);
if ((!isset($valeur['table_prefix'])) || (empty($config_wikini['$valeur']))) {
$valeur['table_prefix'] = $valeur['code_alpha_wikini'];
}
$g_wikini->suppression_tables ($valeur['table_prefix']);
if (GEN_FTP_UTILISE) {
/** Inclusion bibliothèque de PEAR gérant le FTP.*/
require_once ADWI_CHEMIN_BIBLIOTHEQUE_PEAR.'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>';
print $message;
}
$chemin_wikini = PAP_FTP_RACINE.ADWI_CHEMIN_WIKINI.$valeur['code_alpha_wikini'].GEN_SEP;
if ($valeur['code_alpha_wikini']!='') {
$resultat = $objet_pear_ftp->rm($chemin_wikini, true);
if (PEAR::isError($resultat)) {
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le wikini de reference par ftp.<br />'.
'Wikini : '. $chemin_wikini .'<br />'.
'Erreur origine : '. $resultat->getMessage() .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
print $message;
}
}
}
// else {
// Gestion sans FTP à faire
//}
}
/**
*
*
* @return
*/
function adwi_valeurs_par_code_alpha($code_alpha_wikini, &$db) {
$requete = "select * from gen_wikini where gewi_code_alpha_wikini='". $code_alpha_wikini."'" ;
$resultat = $db->query ($requete) ;
if (DB::isError ($resultat)) {
$GLOBALS['_GEN_commun']['debogage_erreur']->gererErreur(E_USER_WARNING, "Echec de la requete : $requete<br />".$resultat->getMessage(),
__FILE__, __LINE__, 'admin_wikini') ;
return ;
}
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
$resultat->free();
unset ($requete, $resultat);
return adwi_valeurs_par_defaut($ligne->gewi_id_wikini,$db);
}
function adwi_valeurs_par_defaut($id_wikini, &$db) {
// requete sur gen_wikin
$requete = "select * from gen_wikini where gewi_id_wikini=$id_wikini" ;
$resultat = $db->query ($requete) ;
if (DB::isError ($resultat)) {
trigger_error("Echec de la requete : $requete<br />".$resultat->getMessage(), E_USER_WARNING) ;
return ;
}
$tableau_retour = array () ;
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
$tableau_retour['code_alpha_wikini'] = $ligne->gewi_code_alpha_wikini;
$tableau_retour['bdd_hote'] = $ligne->gewi_bdd_hote ;
$tableau_retour['bdd_nom'] = $ligne->gewi_bdd_nom;
$tableau_retour['bdd_utilisateur'] = $ligne->gewi_bdd_utilisateur;
$tableau_retour['bdd_mdp'] = $ligne->gewi_bdd_mdp;
$tableau_retour['table_prefix'] = $ligne->gewi_table_prefix ;
$tableau_retour['page'] = $ligne->gewi_page;
$tableau_retour['chemin'] = $ligne->gewi_chemin ;
unset ($requete, $resultat);
return $tableau_retour ;
}
/**
*
* C du CRUD
* @return int id_wikini_bdd
*/
function insertion ($valeur, &$db) {
// Calcul dernier identifiant
$id_wikini_bdd = SQL_obtenirNouveauId ($db, 'gen_wikini', 'gewi_id_wikini') ;
$requete = "insert into gen_wikini set gewi_id_wikini ="
.$id_wikini_bdd.","
.requete_wikini($valeur) ;
$resultat = $db->query ($requete) ;
if (DB::isError ($resultat)) {
trigger_error("Echec de la requete : $requete<br />".$resultat->getMessage(),E_USER_WARNING) ;
}
if (GEN_FTP_UTILISE) {
/** Inclusion bibliothèque de PEAR gérant le FTP.*/
require_once ADWI_CHEMIN_BIBLIOTHEQUE_PEAR.'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>';
print $message;
}
$objet_pear_ftp->mkdir(PAP_FTP_RACINE.ADWI_CHEMIN_WIKINI.$valeur['code_alpha_wikini']) ;
$chemin_wikini_bibliotheque = ADWI_CHEMIN_BIBLIOTHEQUE_WIKINI;
$chemin_wikini = PAP_FTP_RACINE.ADWI_CHEMIN_WIKINI.$valeur['code_alpha_wikini'].GEN_SEP;
// Overwrite = fale (3eme parametre)
$resultat = $objet_pear_ftp->putRecursive($chemin_wikini_bibliotheque, $chemin_wikini, false, FTP_BINARY);
if (PEAR::isError($resultat)) {
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le wikini de reference par ftp.<br />'.
'Fichier origine : '. $chemin_wikini_bibliotheque .'<br />'.
'Fichier copié : '. $chemin_wikini .'<br />'.
'Erreur origine : '. $resultat->getMessage() .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
print $message;
}
}
// else {
// Gestion sans FTP à faire
//}
// Creation tables wikini
include_once ADWI_CHEMIN_BIBLIOTHEQUE.'gestion_wikini.class.php' ;
$g_wikini = new gestion_wikini($db);
if ((!isset($valeur['table_prefix'])) || (empty($config_wikini['$valeur']))) {
$valeur['table_prefix'] = $valeur['code_alpha_wikini'];
}
$g_wikini->creation_tables($valeur['table_prefix']);
// Creation Wakka.config.php
$config_wikini = adwi_config_wikini($valeur['code_alpha_wikini'] ,$db );
$base_url=parse_url(PAP_URL);
$dirname_base_url=dirname($base_url['path']);
$config_base_url=$dirname_base_url.GEN_SEP.ADWI_CHEMIN_WIKINI.GEN_SEP.$config_wikini['code_alpha_wikini'].GEN_SEP."wakka.php?wiki=";
$config_base_url = str_replace("//", "/", $config_base_url);
$config = array(
"wakka_version" => "0.1.1",
"wikini_version" => "0.4.3",
'mysql_host' => $config_wikini['bdd_hote'],
'mysql_database' => $config_wikini['bdd_nom'],
'mysql_user' => $config_wikini['bdd_utilisateur'],
'mysql_password' => $config_wikini['bdd_mdp'],
'table_prefix' => $config_wikini['table_prefix'],
'root_page' => $config_wikini['page'],
'wakka_name' => $config_wikini['code_alpha_wikini'],
'base_url' => $config_base_url,
'rewrite_mode' => '0',
'meta_keywords' => '',
'meta_description' => '',
'action_path' => 'actions',
'handler_path' => 'handlers',
'header_action' => 'header',
'footer_action' => 'footer',
'navigation_links' => 'DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur',
'referrers_purge_time' => 24,
'pages_purge_time' => 90,
'default_write_acl' => '*',
'default_read_acl' => '*',
'default_comment_acl' => '*',
'preview_before_save' => '0');
// convert config array into PHP code
$configCode = "<?php\n// wakka.config.php créée ".strftime("%c")."\n// ne changez pas la wikini_version manuellement!\n\n\$wakkaConfig = array(\n";
foreach ($config as $k => $v)
{
$entries[] = "\t\"".$k."\" => \"".$v."\"";
}
$configCode .= implode(",\n", $entries).");\n?>";
$tempfn = tempnam("","");
$temp = fopen($tempfn, "w");
fwrite($temp, $configCode);
fclose($temp);
$fichier_config_source = $tempfn;
$fichier_config_cible = PAP_FTP_RACINE.ADWI_CHEMIN_WIKINI.$valeur['code_alpha_wikini'].GEN_SEP."wakka.config.php";
$resultat = $objet_pear_ftp->put($fichier_config_source, $fichier_config_cible, false, FTP_BINARY);
if (PEAR::isError($resultat)) {
$message = '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le wikini de reference par ftp.<br />'.
'Fichier origine : '. $chemin_wikini_bibliotheque .'<br />'.
'Fichier copié : '. $chemin_wikini .'<br />'.
'Erreur origine : '. $resultat->getMessage() .'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier n° : '. __FILE__ .'<br /></p>';
print $message;
}
$objet_pear_ftp->disconnect();
unlink($tempfn);
}
/**
*
* U du CRUD
* @return
*/
function mise_a_jour ($valeur, &$db) {
$requete = "update gen_wikini set ".requete_wikini($valeur)
.' where gewi_id_wikini ='.$GLOBALS['id_wikini'] ;
$resultat = $db->query ($requete) ;
if (DB::isError ($resultat)) {
trigger_error("Echec de la requete : $requete<br />".$resultat->getMessage(),E_USER_WARNING) ;
}
}
/**
*
* Formate code sql pour insertion à partir des valeurs entrees dans le formulaire
*
* @return string un morceau de code SQL
*/
function requete_wikini (&$valeur) {
return 'gewi_code_alpha_wikini ="'.$valeur['code_alpha_wikini'].'", '
.'gewi_bdd_hote ="'.$valeur['bdd_hote'].'", '
.'gewi_bdd_nom="'.$valeur['bdd_nom'].'", '
.'gewi_bdd_utilisateur ="'.$valeur['bdd_utilisateur'].'", '
.'gewi_bdd_mdp="'.$valeur['bdd_mdp'].'", '
.'gewi_table_prefix="'.$valeur['table_prefix'].'", '
.'gewi_chemin="'.$valeur['chemin'].'", '
.'gewi_page="'.$valeur['page'].'"';
}
function adwi_config_wikini($code_alpha_wikini,&$db) {
$config_wikini = adwi_valeurs_par_code_alpha($code_alpha_wikini,$db );
// Parametres de base de donnée de Papyrus par défaut
if ((!isset($config_wikini['bdd_hote'])) || (empty($config_wikini['bdd_hote']))) {
$config_wikini['bdd_hote'] = PAP_BDD_SERVEUR;
}
if ((!isset($config_wikini['bdd_nom'])) || (empty($config_wikini['bdd_nom']))) {
$config_wikini['bdd_nom'] = PAP_BDD_NOM;
}
if ((!isset($config_wikini['bdd_utilisateur'])) || (empty($config_wikini['bdd_utilisateur']))) {
$config_wikini['bdd_utilisateur'] = PAP_BDD_UTILISATEUR;
}
if ((!isset($config_wikini['bdd_mdp'])) || (empty($config_wikini['bdd_mdp']))) {
$config_wikini['bdd_mdp'] = PAP_BDD_MOT_DE_PASSE;
}
if ((!isset($config_wikini['table_prefix'])) || (empty($config_wikini['table_prefix']))) {
$config_wikini['table_prefix'] = $code_alpha_wikini.'_';
}
// Ordre de selection de la page de demarrage :
// Page par defaut du Wiki enregistré
// PagePrincipale
if ((!isset($config_wikini['page'])) || (empty($config_wikini['page']))) {
$config_wikini['page'] = 'PagePrincipale';
}
/** Constante stockant le chemin du dossier contenant le site Wikini en cours */
if ((!isset($config_wikini['chemin'])) || (empty($config_wikini['chemin']))) {
$config_wikini['chemin'] = GEN_CHEMIN_WIKINI.$config_wikini['code_alpha_wikini'].GEN_SEP;
}
return $config_wikini;
}
// +------------------------------------------------------------------------------------------------------+
// | PIED du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.9 2006/09/21 14:18:06 florian
* changement du wiki de base (ajout du gestionnaire d'extension), amélioration de l'intégrateur wiki
*
* Revision 1.8 2006/07/19 13:55:01 ddelon
* Bug suppression de Wiki
*
* Revision 1.7 2006/06/02 09:12:16 florian
* ajout constante chemin
*
* Revision 1.6 2006/04/28 12:41:26 florian
* corrections erreurs chemin
*
* Revision 1.5 2005/09/28 16:29:39 ddelon
* Merge modification projet
*
* Revision 1.4 2005/09/09 09:37:17 ddelon
* Integrateur Wikini et administration des Wikini
*
* Revision 1.3 2005/09/02 11:29:25 ddelon
* Integrateur Wikini et administration des Wikini
*
* Revision 1.2 2005/08/31 17:34:52 ddelon
* Integrateur Wikini et administration des Wikini
*
* Revision 1.1 2005/08/25 08:59:12 ddelon
* Integrateur Wikini et administration des Wikini
*
* Revision 1.1 2005/03/09 10:44:04 jpm
* Mise au norme du nom du fichier.
*
* Revision 1.2 2005/03/09 10:40:33 alex
* version initiale
*
* Revision 1.1 2004/12/13 18:07:28 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>