Rev 275 | Blame | Last modification | View Log | RSS feed
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 5.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 1999-2006 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of tela_botanica_v4. |
// | |
// | 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$
/**
* tela_botanica_v4 - nettoyage_wikini.php
*
* Description :
*
*@package tela_botanica_v4
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 1999-2007
*@version $Revision$ $Date$
// +------------------------------------------------------------------------------------------------------+
*/
// +------------------------------------------------------------------------------------------------------+
// | ENTÊTE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
define('CHEMIN_PEAR', '../api/pear/');
$GLOBALS['_NETTOYAGE_']['sites'] = array('http://www.tela-botanica.org', 'http://www.outils-reseaux.org');
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
echo '<h1>'.'Nettoyage des wikini de tela_prod_wikini'.'</h1>';
$Nettoyage = new Nettoyage();
echo '<pre>';
$Nettoyage->nettoyageGlobal();
echo '</pre>';
// +------------------------------------------------------------------------------------------------------+
// | CLASSES du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
class Nettoyage {
private $bdd_principale = "tela_prod_wikini";
private $bdd_options = array('debug' => 3);
private $bdd_dsn = "mysql://utilisateur:mdp@localhost/tela_prod_wikini";
public function __construct()
{
// $fichier_ini = 'bdd.ini';
// $ok = $this->parserFichierIni($fichier_ini);
// if (!$ok) {
// $e = 'Impossible de parser le fichier : '.$fichier_ini;
// trigger_error($e, E_USER_ERROR);
// } else {
require_once CHEMIN_PEAR.'DB.php';
$this->connexion = DB::connect($this->bdd_dsn, $this->bdd_options);
if (PEAR::isError($this->connexion)) {
$e = $this->connexion->getMessage();
trigger_error($e, E_USER_ERROR);
}
// }
}
public function nettoyageGlobal()
{
$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];
}
foreach ($tab_tables as $table) {
echo "\n".$table."\n";
// Referrers
if (preg_match('/_referrers$/', $table)) {
$site_nbre = count($GLOBALS['_NETTOYAGE_']['sites']);
$site_0 = $GLOBALS['_NETTOYAGE_']['sites'][0];
$requete = 'DELETE FROM '.$table.' '.
'WHERE referrer NOT LIKE "'.$site_0.'%" ';
for ($i = 1; $i < $site_nbre; $i++) {
$requete .= 'AND referrer NOT LIKE "'.$GLOBALS['_NETTOYAGE_']['sites'][$i].'%" ';
}
echo $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
die($res->getMessage());
}
}
// Pages : commentaires
if (preg_match('/_pages$/', $table)) {
$requete = 'SELECT tag FROM '.$table.' '.
'WHERE tag LIKE "Comment%" ';
echo $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).'") ';
echo $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 page_tag LIKE "Comment%" ';
echo $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
die($res->getMessage());
}
$requete = 'UPDATE '.$table.' '.
'SET list = "+" '.
'WHERE privilege = "comment" ';
echo $requete."\n";
$res = $this->connexion->query($requete);
if (PEAR::isError($res)) {
die($res->getMessage());
}
}
}
}
function parserFichierIni($fichier_ini)
{
if (file_exists($fichier_ini)) {
$aso_ini = parse_ini_file($fichier_ini);
foreach ($aso_ini as $cle => $val) {
if (preg_match('/^php:(.+)$/', $val, $correspondances)) {
eval('$this->$cle = '.$correspondances[1].';');
} else if (preg_match('/^php-static:(.+)$/', $val, $correspondances)) {
eval('self::$'.$cle.' = '.$correspondances[1].';');
} else {
$this->$cle = $val;
}
}
} else {
return false;
}
}
}
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log$
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>