Subversion Repositories Sites.tela-botanica.org

Compare Revisions

Ignore whitespace Rev 379 → Rev 380

/trunk/scripts/modules/wikini/squelettes/config_bdd.tpl.html
1,4 → 1,11
<h1>Mise à jour des tables des wikini</h1>
<h1>Mise à jour des tables de Wikini</h1>
<p>Cette interface permet pour l'instant de mettre à jour la table "acls" de Wikini. Elle va remplacer les droits présent dans la
table par ceux présent dans les valeurs par défaut définies dans le fichier wakka.config.php du Wikini.</p>
<p>Dans le champs "chemin" indiquer soit :</p>
<ul>
<li>un fichier wakka.config.php pour modifier un seul wikini. Exemple : /home/outilsre/www/wikini/WikiniPapyrus/wakka.config.php</li>
<li>un dossier pour modifier tous les wikini qu'il contient. Exemple : /home/outilsre/www/wikini</li>
</ul>
<div>
<p>Les champs précédés du symbole <span class="symbole_obligatoire">*</span> doivent être obligatoirement remplis.</p>
<form id="sc_form" name="sc_form" action="<?=$url;?>" method="post" onsubmit="return validate(this, var_1);">
/trunk/scripts/modules/wikini/squelettes/config_fichier.tpl.html
1,10 → 1,16
<h1>Mise à jour des fichiers de config des wikini</h1>
<h1>Mise à jour des fichiers de config de Wikini</h1>
<p>Cette interface permet de mettre à jour les fichier wakka.config.php d'un ou plusieurs Wikini.</p>
<p>Dans le champs "chemin" indiquer soit :</p>
<ul>
<li>un fichier wakka.config.php pour modifier un seul wikini. Exemple : /home/outilsre/www/wikini/WikiniPapyrus/wakka.config.php</li>
<li>un dossier pour modifier tous les wikini qu'il contient. Exemple : /home/outilsre/www/wikini</li>
</ul>
<p>Pour ne pas modifier un paramêtre, laisser le champ vide. Seu</p>
<div>
<p>Les champs précédés du symbole <span class="symbole_obligatoire">*</span> doivent être obligatoirement remplis.</p>
<p>Laisser le champ vide pour ne pas modifier le fichier wakka.config.php.</p>
<form id="sc_form" name="sc_form" action="<?=$url;?>" method="post" onsubmit="return validate(this, var_1);">
<fieldset>
<legend>Base de données</legend>
<legend>Paramêtres du fichier wakka.config.php</legend>
<table id="sc_table_form">
<tr>
<td><span class="symbole_obligatoire">*</span> <label for="sc_chemin" class="champ_obligatoire">Chemin des dossiers des wikini</label></td>
/trunk/scripts/modules/wikini/squelettes/nettoyage.tpl.html
1,9 → 1,47
<h1>Nettoyage des tables des wikini</h1>
<?php foreach ($tables as $table) : ?>
<h2><?=$table['nom']; ?></h2>
<pre>
<?php foreach ($table['requetes'] as $requete) : ?>
<?=$requete; ?>
<h1>Nettoyage des referrers et commentaires des wikini</h1>
<p>Cette interface supprime les referrers et les commentaires de wikini</p>
<p>Dans le champs "chemin" indiquer soit :</p>
<ul>
<li>un fichier wakka.config.php pour modifier un seul wikini. Exemple : /home/outilsre/www/wikini/WikiniPapyrus/wakka.config.php</li>
<li>un dossier pour modifier tous les wikini qu'il contient. Exemple : /home/outilsre/www/wikini</li>
</ul>
<div>
<p>Les champs précédés du symbole <span class="symbole_obligatoire">*</span> doivent être obligatoirement remplis.</p>
<form id="sc_form" name="sc_form" action="<?=$url;?>" method="post" onsubmit="return validate(this, var_1);">
<fieldset>
<legend>Suppression de commentaires et referrers</legend>
<table id="sc_table_form">
<tr>
<td><span class="symbole_obligatoire">*</span> <label for="sc_chemin" class="champ_obligatoire">Chemin du dossier des wikini</label></td>
<td><input id="sc_chemin" name="sc_chemin" type="text" value="<?=(isset($_POST['sc_chemin'])) ? $_POST['sc_chemin'] : '' ;?>"/></td>
</tr>
<tr>
<td><span class="symbole_obligatoire">*</span> <label for="sc_utilisateur" class="champ_obligatoire">Indiquer les referrers à ne pas supprimer séparés par des virgules</label></td>
<td><input id="sc_referrers" name="sc_referrers" type="text" value="<?=(isset($_POST['sc_referrers'])) ? $_POST['sc_referrers'] : '' ;?>"/></td>
</tr>
</table>
</fieldset>
<p>
<input type="submit" value="Supprimer les referrers et commentaires" />
<input type="reset" value="Tout effacer" />
</p>
</form>
</div>
<?php if (isset($wikinis)) : ?>
<?php foreach ($wikinis as $wikini) : ?>
<h2><?=$wikini['nom'];?> (dossier : <?=$wikini['dossier'];?> - version : <?=$wikini['version'];?>)</h2>
<pre>
<?php foreach ($wikini['requetes'] as $requete) : ?>
<?=$requete;?>
<?php endforeach; ?>
</pre>
<?php endforeach; ?>
</pre>
<?php endforeach; ?>
<?php endif; ?>
<script type="text/javascript">
<!--/*--><![CDATA[//><!--
var msg_1 = 'Erreur:';
var var_1 = new Array();
var_1[0] = new Array('sc_chemin','e', "Vous n'avez pas mentionné le chemin vers le dossier contenant les dossiers des wikinis.", '');
//--><!]]>
</script>
<script type="text/JavaScript" src="<?=SC_URL_JS.'ValiderFormulaire.js';?>"></script>
/trunk/scripts/modules/wikini/squelettes/supprimer_utilisateur.tpl.html
1,9 → 1,15
<h1>Suppression d'un utilisateur</h1>
<h1>Suppression d'utilisateurs</h1>
<p>Cette interface permet de supprimer les utilisateurs d'un ou plusieurs Wikini.</p>
<p>Dans le champs "chemin" indiquer soit :</p>
<ul>
<li>un fichier wakka.config.php pour modifier un seul wikini. Exemple : /home/outilsre/www/wikini/WikiniPapyrus/wakka.config.php</li>
<li>un dossier pour modifier tous les wikini qu'il contient. Exemple : /home/outilsre/www/wikini</li>
</ul>
<div>
<p>Les champs précédés du symbole <span class="symbole_obligatoire">*</span> doivent être obligatoirement remplis.</p>
<form id="sc_form" name="sc_form" action="<?=$url;?>" method="post" onsubmit="return validate(this, var_1);">
<fieldset>
<legend>Base de données</legend>
<legend>Suppression d'utilisateurs</legend>
<table id="sc_table_form">
<tr>
<td><span class="symbole_obligatoire">*</span> <label for="sc_chemin" class="champ_obligatoire">Chemin du dossier des wikini</label></td>
16,7 → 22,7
</table>
</fieldset>
<p>
<input type="submit" value="Supprimer l'utilisateur de tous les wikini'" />
<input type="submit" value="Supprimer les utilisateurs" />
<input type="reset" value="Tout effacer" />
</p>
</form>
/trunk/scripts/modules/wikini/Wikini.class.php
69,6 → 69,30
$this->poursuivreVers('config_fichier');
}
private function rechercherWikini($chemin = null, $methode)
{
if (isset($chemin)) {
if (preg_match('/wakka\.config\.php$/', $chemin)) {
$this->$methode($chemin);
} else if (is_dir($chemin)) {
// Nettoyage et ajout d'un slash final
$chemin = rtrim(trim($chemin), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
// Nous vérifions que le dossier indiqué est un dossier de wikini
$fichier = $chemin.'wakka.config.php';
$this->$methode($fichier);
// Nous regardons si le dossier indiqué contient d'autres dossiers wikini
foreach (scandir($chemin) as $dossier) {
if (is_dir($chemin.$dossier.DIRECTORY_SEPARATOR) && $dossier != '..' && $dossier != '.') {
$fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php';
$this->$methode($fichier);
}
}
} else {
trigger_error('Le chemin suivant n\'est ni un dossier, ni un fichier wakka.config.php :'.$chemin, E_USER_WARNING);
}
}
}
public function executerConfigFichier()
{
// Initialisation des variables
78,7 → 102,7
// Gestion de l'url de l'envoie de mail
$url = clone $GLOBALS['_SCRIPT_']['url'];
$url->addQueryString('module', 'wikini');
$url->addQueryString('action', 'maj_fichier');
$url->addQueryString('action', 'config_fichier_maj');
$aso_donnees['url'] = $url->getUrl();
// Attribution des données pour remplir le squelette
86,59 → 110,55
$this->setChrono('fin');
}
public function executerMajFichier()
public function executerConfigFichierMaj()
{
// Initialisation des variables
$this->setChrono('debut');
$asso_donnees = array();
// Récupération des infos pour conpléter le squelette du courriel
if (isset($_POST['sc_chemin'])) {
$chemin = $_POST['sc_chemin'];
if (is_dir($chemin)) {
foreach (scandir($chemin) as $dossier) {
if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
$arrFile = file($fichier);
$handle = fopen($fichier, 'w');
if($handle != false){
// Set counters
$currentLine = 0;
$cntFile = count($arrFile);// Nombre de ligne
// Write contents, inserting $item as first item
while ($currentLine <= $cntFile){
if (isset($arrFile[$currentLine])) {
foreach ($_POST as $cle => $val) {
if ($val != '') {
if(preg_match('/"'.preg_replace('/^sc_/', '', $cle).'" =>/', $arrFile[$currentLine])) {
$arrFile[$currentLine] = preg_replace('/=> ".*"/', '=> "'.$val.'"', $arrFile[$currentLine]);
}
}
}
fwrite($handle, $arrFile[$currentLine]);
if (preg_match('/^\?>$/', $arrFile[$currentLine])) {
fclose($handle);
$currentLine = $cntFile;
}
}
$currentLine++;
}
} else {
trigger_error('Fichier '.$fichier.' impossible à ouvrir', E_USER_WARNING);
}
$this->rechercherWikini($_POST['sc_chemin'], 'modifierConfigFichier');
// Nous ajoutons une action à éxecuter avant de rendre la main
$this->poursuivreVers('config_fichier');
// Fin de l'action
$this->setChrono('fin');
}
}
}
private function modifierConfigFichier($fichier)
{
if (file_exists($fichier)) {
$aso_donnees = array();
$arrFile = file($fichier);
$handle = fopen($fichier, 'w');
if($handle != false){
// Définition des compteurs
$currentLine = 0;
$cntFile = count($arrFile);// Nombre de ligne
// Write contents, inserting $item as first item
while ($currentLine <= $cntFile){
if (isset($arrFile[$currentLine])) {
foreach ($_POST as $cle => $val) {
if ($val != '') {
if(preg_match('/"'.preg_replace('/^sc_/', '', $cle).'" =>/', $arrFile[$currentLine])) {
$arrFile[$currentLine] = preg_replace('/=> ".*"/', '=> "'.$val.'"', $arrFile[$currentLine]);
}
}
}
fwrite($handle, $arrFile[$currentLine]);
if (preg_match('/^\?>$/', $arrFile[$currentLine])) {
fclose($handle);
$currentLine = $cntFile;
}
}
$currentLine++;
}
} else {
trigger_error('Le chemin suivant n\'est pas un dossier :'.$chemin, E_USER_WARNING);
trigger_error('Fichier '.$fichier.' impossible à ouvrir', E_USER_WARNING);
}
// Attribution des données pour remplir le squelette
$this->getRegistre()->set('squelette_donnees', $aso_donnees);
}
// Attribution des données pour remplir le squelette
$this->getRegistre()->set('squelette_donnees', $asso_donnees);
$this->setChrono('fin');
 
// Nous ajoutons une action à éxecuter avant de rendre la main
$this->poursuivreVers('config_fichier');
}
public function executerSupprimerUtilisateur()
150,7 → 170,7
// Gestion de l'url de l'envoie de mail
$url = clone $GLOBALS['_SCRIPT_']['url'];
$url->addQueryString('module', 'wikini');
$url->addQueryString('action', 'maj_utilisateur');
$url->addQueryString('action', 'supprimer_utilisateur_maj');
$aso_donnees['url'] = $url->getUrl();
// Attribution des données pour remplir le squelette
158,85 → 178,79
$this->setChrono('fin');
}
public function executerMajUtilisateur()
public function executerSupprimerUtilisateurMaj()
{
// Initialisation des variables
$this->setChrono('debut');
$asso_donnees = array();
// Récupération des infos pour conpléter le squelette du courriel
if (isset($_POST['sc_chemin'])) {
$chemin = $_POST['sc_chemin'];
if (is_dir($chemin)) {
foreach (scandir($chemin) as $dossier) {
if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
}
if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
// Initialisation de variables
$wakka_config = array();
$requetes = array();
// Récupération de la config du wikini
$tab_fichier = file($fichier);
foreach ($tab_fichier as $ligne_num => $ligne) {
if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
//trigger_error(print_r($match, true), E_USER_NOTICE);
$wakka_config[$match[1]] = $match[2];
}
}
//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) {
// Connexion à la base de données
$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database'];
$this->connexion = DB::connect($dsn, $this->bdd_options);
if (PEAR::isError($this->connexion)) {
$e = $this->connexion->getMessage();
trigger_error($e, E_USER_ERROR);
}
// Traitement de la chaine utilisateur
$tab_utilisateurs = explode(',', trim($_POST['sc_utilisateur']));
$chaine_utilisateur = '';
foreach ($tab_utilisateurs as $utilisateur) {
$chaine_utilisateur .= '"'.trim($utilisateur).'", ';
}
$chaine_utilisateur = trim($chaine_utilisateur, ', ');
// Suppression de l'utilisateur
$requete = 'DELETE FROM '.$wakka_config['table_prefix'].'users '.
'WHERE name IN ('.$chaine_utilisateur.')';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
// Stockage des requetes
if (count($requetes) > 0 ) {
$aso_donnees['wikinis'][] = array( 'dossier' => $dossier,
'nom' => $wakka_config['wakka_name'],
'version' => $wakka_config['wikini_version'],
'requetes' => $requetes);
}
} else {
trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
}
}
$this->rechercherWikini($_POST['sc_chemin'], 'modifierSupprimerUtilisateur');
// Nous ajoutons une action à éxecuter avant de rendre la main
$this->poursuivreVers('supprimer_utilisateur');
// Fin de l'action
$this->setChrono('fin');
}
private function modifierSupprimerUtilisateur($fichier)
{
if (file_exists($fichier)) {
// Initialisation de variables
$aso_donnees = array();
$wakka_config = array();
$requetes = array();
// Récupération de la config du wikini
$tab_fichier = file($fichier);
foreach ($tab_fichier as $ligne_num => $ligne) {
if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
//trigger_error(print_r($match, true), E_USER_NOTICE);
$wakka_config[$match[1]] = $match[2];
}
}
//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) {
// Connexion à la base de données
$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database'];
$this->connexion = DB::connect($dsn, $this->bdd_options);
if (PEAR::isError($this->connexion)) {
$e = $this->connexion->getMessage();
trigger_error($e, E_USER_ERROR);
}
// Traitement de la chaine utilisateur
$tab_utilisateurs = explode(',', trim($_POST['sc_utilisateur']));
$chaine_utilisateur = '';
foreach ($tab_utilisateurs as $utilisateur) {
$chaine_utilisateur .= '"'.trim($utilisateur).'", ';
}
$chaine_utilisateur = trim($chaine_utilisateur, ', ');
// Suppression de l'utilisateur
$requete = 'DELETE FROM '.$wakka_config['table_prefix'].'users '.
'WHERE name IN ('.$chaine_utilisateur.')';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
// Stockage des requetes
if (count($requetes) > 0 ) {
$aso_donnees['wikinis'][] = array( 'dossier' => $fichier,
'nom' => $wakka_config['wakka_name'],
'version' => $wakka_config['wikini_version'],
'requetes' => $requetes);
}
} else {
trigger_error('Le chemin suivant n\'est pas un dossier :'.$chemin, E_USER_WARNING);
trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
}
// Attribution des données pour remplir le squelette
$this->getRegistre()->set('squelette_donnees', $aso_donnees);
}
// Attribution des données pour remplir le squelette
$this->getRegistre()->set('squelette_donnees', $aso_donnees);
$this->setChrono('fin');
 
// Nous ajoutons une action à éxecuter avant de rendre la main
$this->poursuivreVers('supprimer_utilisateur');
}
public function executerConfigBdd()
248,218 → 262,271
// Gestion de l'url de l'envoie de mail
$url = clone $GLOBALS['_SCRIPT_']['url'];
$url->addQueryString('module', 'wikini');
$url->addQueryString('action', 'maj_bdd');
$url->addQueryString('action', 'config_bdd_maj');
$aso_donnees['url'] = $url->getUrl();
// Attribution des données pour remplir le squelette
$this->getRegistre()->set('squelette_donnees', $aso_donnees);
// Fin de l'action
$this->setChrono('fin');
}
public function executerMajBdd()
public function executerConfigBddMaj()
{
// Initialisation des variables
$this->setChrono('debut');
$asso_donnees = array();
// Récupération des infos pour conpléter le squelette du courriel
if (isset($_POST['sc_chemin'])) {
$chemin = $_POST['sc_chemin'];
if (is_dir($chemin)) {
foreach (scandir($chemin) as $dossier) {
if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
}
if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
// Initialisation de variables
$wakka_config = array();
$requetes = array();
// Récupération de la config du wikini
$tab_fichier = file($fichier);
foreach ($tab_fichier as $ligne_num => $ligne) {
if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
//trigger_error(print_r($match, true), E_USER_NOTICE);
$wakka_config[$match[1]] = $match[2];
}
}
//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) {
// Connexion à la base de données
$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database'];
$this->connexion = DB::connect($dsn, $this->bdd_options);
if (PEAR::isError($this->connexion)) {
$e = $this->connexion->getMessage();
trigger_error($e, E_USER_ERROR);
}
// Mise à jour des droits
$requete = 'UPDATE '.$wakka_config['table_prefix'].'acls '.
'SET list = "'.$wakka_config['default_write_acl'].'" '.
'WHERE privilege = "write" ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
$this->rechercherWikini($_POST['sc_chemin'], 'modifierConfigBdd');
// Nous ajoutons une action à éxecuter avant de rendre la main
$this->poursuivreVers('config_bdd');
// Fin de l'action
$this->setChrono('fin');
}
private function modifierConfigBdd($fichier)
{
if (file_exists($fichier)) {
// Initialisation de variables
$aso_donnees = array();
$wakka_config = array();
$requetes = array();
// Récupération de la config du wikini
$tab_fichier = file($fichier);
foreach ($tab_fichier as $ligne_num => $ligne) {
if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
//trigger_error(print_r($match, true), E_USER_NOTICE);
$wakka_config[$match[1]] = $match[2];
}
}
//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) {
// Connexion à la base de données
$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database'];
$this->connexion = DB::connect($dsn, $this->bdd_options);
if (PEAR::isError($this->connexion)) {
$e = $this->connexion->getMessage();
trigger_error($e, E_USER_ERROR);
}
// Mise à jour des droits
$requete = 'UPDATE '.$wakka_config['table_prefix'].'acls '.
'SET list = "'.$wakka_config['default_write_acl'].'" '.
'WHERE privilege = "write" ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
 
$requete = 'UPDATE '.$wakka_config['table_prefix'].'acls '.
'SET list = "'.$wakka_config['default_read_acl'].'" '.
'WHERE privilege = "read" ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
$requete = 'UPDATE '.$wakka_config['table_prefix'].'acls '.
'SET list = "'.$wakka_config['default_read_acl'].'" '.
'WHERE privilege = "read" ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
 
$requete = 'UPDATE '.$wakka_config['table_prefix'].'acls '.
'SET list = "'.$wakka_config['default_comment_acl'].'" '.
'WHERE privilege = "comment" ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
$requete = 'DELETE FROM '.$wakka_config['table_prefix'].'acls '.
'WHERE page_tag = "ParametresUtilisateur"';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
$requete = 'INSERT INTO '.$wakka_config['table_prefix'].'acls '.
'VALUES ("ParametresUtilisateur", "write", "*") ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
// Stockage des requetes
if (count($requetes) > 0 ) {
$aso_donnees['wikinis'][] = array( 'dossier' => $dossier,
'nom' => $wakka_config['wakka_name'],
'version' => $wakka_config['wikini_version'],
'requetes' => $requetes);
}
} else {
trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
}
}
$requete = 'UPDATE '.$wakka_config['table_prefix'].'acls '.
'SET list = "'.$wakka_config['default_comment_acl'].'" '.
'WHERE privilege = "comment" ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
$requete = 'DELETE FROM '.$wakka_config['table_prefix'].'acls '.
'WHERE page_tag = "ParametresUtilisateur"';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
$requete = 'INSERT INTO '.$wakka_config['table_prefix'].'acls '.
'VALUES ("ParametresUtilisateur", "write", "*") ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
$requetes[] = $res->getMessage().$res->getDebugInfo();
trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
}
// Stockage des requetes
if (count($requetes) > 0 ) {
$aso_donnees['wikinis'][] = array( 'dossier' => $fichier,
'nom' => $wakka_config['wakka_name'],
'version' => $wakka_config['wikini_version'],
'requetes' => $requetes);
}
} else {
trigger_error('Le chemin suivant n\'est pas un dossier :'.$chemin, E_USER_WARNING);
trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
}
// Attribution des données pour remplir le squelette
$this->getRegistre()->set('squelette_donnees', $aso_donnees);
}
}
public function executerNettoyage()
{
// Initialisation des variables
$this->setChrono('debut');
$aso_donnees = $this->getRegistre()->get('squelette_donnees');
// Gestion de l'url de l'envoie de mail
$url = clone $GLOBALS['_SCRIPT_']['url'];
$url->addQueryString('module', 'wikini');
$url->addQueryString('action', 'nettoyage_maj');
$aso_donnees['url'] = $url->getUrl();
 
// Attribution des données pour remplir le squelette
$this->getRegistre()->set('squelette_donnees', $aso_donnees);
$this->setChrono('fin');
 
// Nous ajoutons une action à éxecuter avant de rendre la main
$this->poursuivreVers('config_bdd');
}
public function executerNettoyage()
public function executerNettoyageMaj()
{
// Initialisation des variables
$this->setChrono('debut');
$aso_donnees = array();
$res = $this->connexion->query('SHOW TABLES');
if (PEAR::isError($res)) {
die($res->getMessage());
}
$tab_tables = array();
$ligne = '';
while ($res->fetchInto($ligne)) {
$tab_tables[] = $ligne[0];
}
// Récupération des infos pour conpléter le squelette du courriel
$this->rechercherWikini($_POST['sc_chemin'], 'lancerNettoyage');
 
foreach ($tab_tables as $table) {
// Nous ajoutons une action à éxecuter avant de rendre la main
$this->poursuivreVers('nettoyage');
// Fin de l'action
$this->setChrono('fin');
}
public function lancerNettoyage($fichier)
{
if (file_exists($fichier)) {
// Initialisation de variables
$aso_donnees = array();
$wakka_config = array();
$requetes = array();
// Referrers
if (preg_match('/_referrers$/', $table)) {
$site_nbre = count($this->sites);
$site_0 = $this->sites[0];
$requete = 'DELETE FROM '.$table.' '.
'WHERE referrer NOT LIKE "'.$site_0.'%" ';
for ($i = 1; $i < $site_nbre; $i++) {
$requete .= 'AND referrer NOT LIKE "'.$this->sites[$i].'%" ';
// Récupération de la config du wikini
$tab_fichier = file($fichier);
foreach ($tab_fichier as $ligne_num => $ligne) {
if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
//trigger_error(print_r($match, true), E_USER_NOTICE);
$wakka_config[$match[1]] = $match[2];
}
}
//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) {
// Connexion à la base de données
$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database'];
$this->connexion = DB::connect($dsn, $this->bdd_options);
if (PEAR::isError($this->connexion)) {
$e = $this->connexion->getMessage();
trigger_error($e, E_USER_ERROR);
}
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
$res = $this->connexion->query('SHOW TABLES');
if (PEAR::isError($res)) {
die($res->getMessage());
}
}
 
// Pages : commentaires
if (preg_match('/_pages$/', $table)) {
$requete = 'SELECT tag FROM '.$table.' '.
'WHERE tag LIKE "Comment%" ';
$requetes[] = $requete."\n";
$aso_pages = $this->connexion->getAll($requete, null, DB_FETCHMODE_ASSOC);
if (PEAR::isError($aso_pages)) {
die($aso_pages->getMessage());
$tab_tables = array();
$ligne = '';
while ($res->fetchInto($ligne)) {
$tab_tables[] = $ligne[0];
}
if (count($aso_pages) > 0) {
$tab_pages = array();
foreach ($aso_pages as $page) {
if (preg_match('/^Comment\d+$/', $page['tag'])){
$tab_pages[] = $page['tag'];
// Ajout des nouveaux referrers à ceux par défaut
if (!empty($_POST['sc_referrers'])) {
$this->sites = array_merge(preg_split("~,~", $_POST['sc_referrers'], -1, PREG_SPLIT_NO_EMPTY), $this->sites);
}
foreach ($tab_tables as $table) {
$requetes = array();
// Referrers
if (preg_match('/_referrers$/', $table)) {
$site_nbre = count($this->sites);
$site_0 = $this->sites[0];
$requete = 'DELETE FROM '.$table.' '.
'WHERE referrer NOT LIKE "'.$site_0.'%" ';
for ($i = 1; $i < $site_nbre; $i++) {
$requete .= 'AND referrer NOT LIKE "'.$this->sites[$i].'%" ';
}
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
die($res->getMessage());
}
}
if (count($tab_pages) > 0) {
// Pages : commentaires
if (preg_match('/_pages$/', $table)) {
$requete = 'SELECT tag FROM '.$table.' '.
'WHERE tag LIKE "Comment%" ';
$requetes[] = $requete."\n";
$aso_pages = $this->connexion->getAll($requete, null, DB_FETCHMODE_ASSOC);
if (PEAR::isError($aso_pages)) {
die($aso_pages->getMessage());
}
if (count($aso_pages) > 0) {
$tab_pages = array();
foreach ($aso_pages as $page) {
if (preg_match('/^Comment\d+$/', $page['tag'])){
$tab_pages[] = $page['tag'];
}
}
if (count($tab_pages) > 0) {
$requete = 'DELETE FROM '.$table.' '.
'WHERE tag IN ("'.implode('","', $tab_pages).'") ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
die($res->getMessage());
}
}
}
}
// ACLs : commentaires
if (preg_match('/_acls$/', $table)) {
$requete = 'DELETE FROM '.$table.' '.
'WHERE tag IN ("'.implode('","', $tab_pages).'") ';
'WHERE page_tag LIKE "Comment%" ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
die($res->getMessage());
}
$requete = 'UPDATE '.$table.' '.
'SET list = "+" '.
'WHERE privilege = "comment" ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
die($res->getMessage());
}
}
// Stockage des requetes
if (count($requetes) > 0 ) {
$aso_donnees['wikinis'][] = array( 'dossier' => $fichier,
'nom' => $wakka_config['wakka_name'],
'version' => $wakka_config['wikini_version'],
'requetes' => $requetes);
}
}
}
// ACLs : commentaires
if (preg_match('/_acls$/', $table)) {
$requete = 'DELETE FROM '.$table.' '.
'WHERE page_tag LIKE "Comment%" ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
die($res->getMessage());
}
$requete = 'UPDATE '.$table.' '.
'SET list = "+" '.
'WHERE privilege = "comment" ';
$requetes[] = $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
die($res->getMessage());
}
}
// Stockage des requetes
if (count($requetes) > 0 ) {
$aso_table['nom'] = $table;
$aso_table['requetes'] = $requetes;
$aso_donnees['tables'][] = $aso_table;
}
// Attribution des données pour remplir le squelette
$this->getRegistre()->set('squelette_donnees', $aso_donnees);
}
 
// Attribution des données pour remplir le squelette
$this->getRegistre()->set('squelette_donnees', $aso_donnees);
$this->setChrono('fin');
}
}
 
/trunk/scripts/index.php
120,9 → 120,9
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php">Accueil</a></li>
<li class="menu_inactif">Wikini
<ul>
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&amp;action=nettoyage">Nettoyage global</a></li>
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&amp;action=config_fichier">Modification des fichiers de config</a></li>
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&amp;action=config_bdd">Modification de la base de données</a></li>
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&amp;action=nettoyage">Nettoyage des commentaires et referrers</a></li>
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&amp;action=config_fichier">Modification des fichiers wakka.config.php</a></li>
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&amp;action=config_bdd">Modification des droits (table ACLS)</a></li>
<li class="menu_inactif"><a href="<?php echo SC_URL; ?>index.php?module=wikini&amp;action=supprimer_utilisateur">Suppression d'utilisateurs</a></li>
</ul>
</li>
/trunk/scripts/autoload.inc.php
34,7 → 34,8
}
}
if (include_once $fichier) {
if (file_exists($fichier)) {
include_once $fichier;
return null;
}
}