Created
June 10, 2013 09:34
-
-
Save bystrano/5747558 to your computer and use it in GitHub Desktop.
des scripts utiles pour spip-listes…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#CACHE{0} | |
<?php | |
include_spip('inc/spiplistes_api'); | |
include_spip('inc/spiplistes_api_globales'); | |
include_spip('inc/autoriser'); | |
/***********************************************************************/ | |
/* *---------------------* */ | |
/* |eliminer_doublons.php| : élimine les doublons dans une base de */ | |
/* *---------------------* donnée spip-listes. */ | |
/***********************************************************************/ | |
/* */ | |
/* les paramètres que l'on peut passer en GET : */ | |
/* */ | |
/* debut : permet de ne pas traiter les n premiers auteurs */ | |
/* */ | |
/* nb_traitements : permet de limiter le nombre d'auteurs traité */ | |
/* pour éviter que la requête ne prennent trop de */ | |
/* temps. */ | |
/* */ | |
/***********************************************************************/ | |
$index_depart = _request('debut') ? _request('debut') : 0; | |
$nb_traitements = _request('nb_traitements'); | |
if ( ! is_string($nb_traitements)) { | |
$limit = ''; | |
} else { | |
$limit = $index_depart . ', ' . $nb_traitements; | |
} | |
/* HELPER FUNCTIONS */ | |
function logg ($msg) { | |
spip_log(var_export($msg, TRUE), 'scratch'); | |
} | |
// inspiré de action/spiplistes_supprimer_abonne_dist | |
function supprimer_abonne ($id_auteur) { | |
$result = sql_select("id_auteur,statut", "spip_auteurs", "id_auteur=".sql_quote($id_auteur), '','', 1); | |
if ($row = sql_fetch($result)) { | |
$id_auteur = intval($row['id_auteur']); | |
$statut = $row['statut']; | |
if( | |
($id_auteur > 0) | |
&& ($statut=='6forum') | |
) { | |
$sql_whereq = "id_auteur=".sql_quote($id_auteur); | |
if( | |
// vide la queue du courrier en attente pour cet abonne' | |
(spiplistes_courriers_en_queue_supprimer($sql_whereq) !== FALSE) | |
// supprime l'abonne' des abonnements | |
&& spiplistes_abonnements_auteur_desabonner($id_auteur, 'toutes') | |
// supprime l'abonne' des formats elargis | |
&& spiplistes_format_abo_supprimer($id_auteur) | |
) { | |
spiplistes_log("ID_AUTEUR #$id_auteur UNSUBSCRIBE BY ID_AUTEUR #$connect_id_auteur"); | |
// ne peut supprimer que les invites | |
if($statut=='6forum') { | |
if(spiplistes_auteurs_auteur_delete($sql_whereq)) { | |
// garde une petite trace... | |
spiplistes_log("ID_AUTEUR #$id_auteur DELETED BY ID_AUTEUR #$connect_id_auteur"); | |
} | |
} | |
} | |
} | |
} | |
} | |
/********/ | |
/* main */ | |
/********/ | |
logg('******************************'); | |
$auteurs = sql_allfetsel('id_auteur, email', 'spip_auteurs', array(), array(), array(), $limit); | |
foreach ($auteurs as $auteur) { | |
// Trouver les doublons dans la db | |
$a_la_meme_adresse = | |
sql_allfetsel('id_auteur, email', 'spip_auteurs', | |
'email=' . sql_quote($auteur['email']) . | |
'AND statut!=' . sql_quote('5poubelle')); | |
// si plusieurs auteurs ont le même email, on a du boulot… | |
if (($auteur['email'] != '') && (count($a_la_meme_adresse) > 1)) { | |
// on garde l'auteur avec l'id le plus haut, comme il a plus de | |
// chances d'être d'actualité. Comme ça on les auteurs recevront les | |
// mêmes listes qu'avant le nettoyage. | |
sort($a_la_meme_adresse); | |
$auteur_a_garder = array_pop($a_la_meme_adresse); | |
// on abonne l'auteur qu'on va garder aux listes auxquelles sont | |
// abonnés les doublons. | |
$listes_abo = spiplistes_abonnements_listes_auteur( | |
$auteur_a_garder['id_auteur']); | |
foreach ($a_la_meme_adresse as $auteur_a_supprimer) { | |
$listes_abo = | |
array_merge($listes_abo, | |
spiplistes_abonnements_listes_auteur( | |
$auteur_a_supprimer['id_auteur'])); | |
} | |
spiplistes_abonnements_ajouter($auteur_a_garder['id_auteur'], | |
$listes_abo); | |
// Et enfin, on vire les auteurs doublons | |
foreach ($a_la_meme_adresse as $auteur) { | |
supprimer_abonne($auteur['id_auteur']); | |
logg('auteur ' . $auteur['id_auteur'] . ' supprimé'); | |
} | |
} | |
} | |
echo "Done !"; | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment