laposte.net , http://bloog.net */ /* */ /* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */ /* de la Licence Publique Générale GNU publiée par la Free Software Foundation */ /* (version 2). */ /* */ /* Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, */ /* ni explicite ni implicite, y compris les garanties de commercialisation ou */ /* d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU */ /* pour plus de détails. */ /* */ /* Vous devez avoir reçu une copie de la Licence Publique Générale GNU */ /* en même temps que ce programme ; si ce n'est pas le cas, écrivez à la */ /* Free Software Foundation, */ /* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis. */ /******************************************************************************************/ //version actuelle du plugin à changer en cas de maj $GLOBALS['spiplistes_version'] = 1.98; //initialiser les variables if (!isset($GLOBALS['meta']['spiplistes_lots'])){ ecrire_meta('spiplistes_lots' , 30) ; ecrire_metas(); } if (!isset($GLOBALS['meta']['spiplistes_charset_envoi'])){ ecrire_meta('spiplistes_charset_envoi' , 'iso-8859-1') ; ecrire_metas(); } if (!isset($GLOBALS['meta']['mailer_smtp'])){ ecrire_meta('mailer_smtp' , 'non') ; ecrire_metas(); } if(!$abonnement_config = $GLOBALS['meta']['abonnement_config']){ ecrire_meta('abonnement_config', 'simple'); ecrire_metas(); } function spip_listes_upgrade_from_18(){ $trans_messages_couriers = array(); // regarder si des newsletter existent $res = spip_query("SELECT * FROM spip_messages WHERE type='nl'"); if(@spip_num_rows($res) > 0) { echo "[spip_courriers] "._T('spiplistes:mettre_a_jour'); while ($row = spip_fetch_array($res)){ $result = spip_query("INSERT INTO spip_courriers (titre, texte, date, statut, type, id_auteur) VALUES (" ._q($row['titre'])."," ._q($row['texte'])."," ._q($row['date_heure'])."," ._q($row['statut'])."," ._q($row['type'])."," ._q($row['id_auteur']).")"); $trans_messages_couriers[$row['id_message']]= spip_insert_id(); } //spip_query("DELETE FROM spip_messages WHERE type='nl'"); } //Migrer des listes anciennes listes $resultat_aff = spip_query("SELECT * FROM spip_articles WHERE statut='liste' OR statut='inact' OR statut='poublist'"); if(@spip_num_rows($resultat_aff) > 0){ echo "[spip_listes] "._T('spiplistes:mettre_a_jour'); while ($row = spip_fetch_array($resultat_aff)) { $id_article=$row['id_article']; $titre_liste=corriger_caracteres($row['titre']); $texte_liste = corriger_caracteres($row['texte']); $date_liste = $row['date']; $langue=$row["lang"]; $statut = $row['statut']; $extra=unserialize($row['extra']); $patron_liste=$extra["squelette"]; $periode_liste=$extra["periode"]; $maj_liste=$extra["majnouv"]; $email_envoi=$extra["email_envoi"]; $message_auto=$extra["auto"]; $options="

".$titre_liste."
"; echo $options."

"; // ajout du pied de page include_spip('public/assembler'); $contexte_pied = array('lang'=>$langue); $pied = recuperer_fond('modeles/piedmail', $contexte_pied); spip_query("INSERT INTO spip_listes (titre, texte, statut, date, lang, pied_page) VALUES (" ._q($titre_liste).","._q($texte_liste).","._q($statut).","._q($date_liste).","._q($langue).","._q($pied).")" ); $id_liste=spip_insert_id(); if($message_auto=="oui") spip_query("UPDATE spip_listes SET patron="._q($patron_liste).", periode="._q($periode_liste) . ", maj=FROM_UNIXTIME("._q($maj_liste)."), email_envoi="._q($email_envoi) . ", message_auto="._q($message_auto)." WHERE id_liste="._q($id_liste)); //Auteur de la liste (moderateur) spip_query("DELETE FROM spip_auteurs_mod_listes WHERE id_liste ="._q($id_liste)); spip_query("INSERT INTO spip_auteurs_mod_listes (id_auteur, id_liste) VALUES ("._q($connect_id_auteur).","._q($id_liste).")"); //recuperer les abonnes (peut etre plus tard ?) $abos=spip_query("SELECT id_auteur, id_article FROM spip_auteurs_articles WHERE id_article="._q($id_article)); while($abonnes=spip_fetch_array($abos)){ $abo=$abonnes["id_auteur"]; spip_query("INSERT INTO spip_auteurs_listes (id_auteur, id_liste) VALUES ("._q($abo).","._q($id_liste).")"); } //effacer les anciens articles/abo #spip_query("DELETE FROM spip_articles WHERE id_article ="._q($id_article)); #spip_query("DELETE FROM spip_auteurs_articles WHERE id_article ="._q($id_article)); //manque un traitement pour récuperer les courriers } } //evaluer les extras de tous les auteurs et les virer $result = spip_query('SELECT extra, id_auteur FROM spip_auteurs'); while ($row = spip_fetch_array($result)) { $abo = unserialize($row['extra']); if (is_array($abo) && isset($abo['abo']) && ($format = $abo['abo']) && ($format=="texte" OR $format=="html")){ spip_query("INSERT INTO spip_auteurs_elargis (id_auteur, `spip_listes_format`) VALUES ("._q($row['id_auteur']).","._q($format).") "); } } echo _T('spiplistes:regulariser'); $result = spip_query("SELECT a.`email`, a.id_auteur FROM `spip_auteurs` a, `spip_auteurs_listes` l, `spip_auteurs_elargis` f WHERE a.id_auteur=f.id_auteur AND f.spip_listes_format = 'non' AND a.id_auteur = l.id_auteur AND a.statut!='5poubelle' GROUP BY email"); while($res = spip_fetch_array($result)){ spip_query("DELETE FROM spip_auteurs_listes WHERE id_auteur =".$res['id_auteur']) ; } } function spiplistes_verifier_base(){ //activer si besoin l'inscription des visiteurs $accepter_visiteurs = lire_meta('accepter_visiteurs'); if($accepter_visiteurs != 'oui'){ $accepter_visiteurs = 'oui'; ecrire_meta("accepter_visiteurs", $accepter_visiteurs); ecrire_metas(); echo _T('spiplistes:autorisation_inscription'); } //install $version_base = $GLOBALS['spiplistes_version']; // Comparaison de la verison actuelle avec la version installee ($GLOBALS['meta']['spiplistes_version']) $current_version = 0.0; if ( (!isset($GLOBALS['meta']['spiplistes_version']) ) || (($current_version = $GLOBALS['meta']['spiplistes_version'])!=$version_base)){ include_spip('base/spip-listes'); // si etait deja installe mais dans une vieille version, on reprend a zero include_spip('base/abstract_sql'); $desc = spip_abstract_showtable("spip_listes", '', true); if (!isset($desc['field']['id_liste'])) $current_version = 0.0; if ( ($res=spip_query("SELECT * FROM spip_articles WHERE statut='liste' OR statut='inact' OR statut='poublist'")) AND ($row = spip_fetch_array($res)) ) $current_version=0.0; if ($current_version==0.0){ // Verifie que les tables spip_listes existent, sinon les creer spip_log('creation des tables spip_listes'); include_spip('base/create'); include_spip('base/abstract_sql'); creer_base(); spip_listes_upgrade_from_18(); // faire les eventuels imports depuis la contrib 1.8 ecrire_meta('spiplistes_version',$current_version=$version_base,'non'); } if ($current_version<1.92){ echo "SpipListes Maj 1.92
"; spip_query("ALTER TABLE spip_listes ADD titre_message varchar(255) NOT NULL default '';"); spip_query("ALTER TABLE spip_listes ADD pied_page longblob NOT NULL;"); ecrire_meta('spiplistes_version', $current_version=1.92); } if ($current_version<1.94){ echo "SpipListes Maj 1.94
"; include_spip('base/abstract_sql'); if (($res=spip_query("SELECT id_auteur FROM spip_auteurs_mod_listes")) AND (!spip_fetch_array($res)) AND ($desc = spip_abstract_showtable("spip_abonnes_listes", '', true)) AND isset($desc['field']['id_auteur'])) { spip_query("DROP TABLE spip_auteurs_mod_listes"); // elle vient d'etre cree par un creer_base inopportun spip_query("DROP TABLE spip_auteurs_courriers"); // elle vient d'etre cree par un creer_base inopportun } spip_query("ALTER TABLE spip_auteurs_listes RENAME spip_auteurs_mod_listes;"); spip_query("ALTER TABLE spip_abonnes_listes RENAME spip_auteurs_listes;"); spip_query("ALTER TABLE spip_abonnes_courriers RENAME spip_auteurs_courriers;"); ecrire_meta('spiplistes_version', $current_version=1.94); } if ($current_version<1.95){ echo "SpipListes Maj 1.95
"; include_spip('base/abstract_sql'); spip_query("ALTER TABLE spip_auteurs_courriers ADD etat varchar(5) NOT NULL default '' AFTER statut"); ecrire_meta('spiplistes_version', $current_version=1.95); } if ($current_version<1.96){ echo "SpipListes Maj 1.96
"; include_spip('base/abstract_sql'); //installer la table spip_auteurs_elargis si besoin $table_nom = "spip_auteurs_elargis"; spip_query("CREATE TABLE IF NOT EXISTS ".$table_nom." ( `id_auteur` BIGINT NOT NULL , `spip_listes_format` VARCHAR( 8 ) DEFAULT 'non' NOT NULL ) "); //evaluer les extras de tous les auteurs + compter tous les auteurs $result = spip_query( 'SELECT extra, spip_auteurs.id_auteur FROM spip_auteurs'); $nb_inscrits = 0; //repartition des extras $cmpt = array('texte'=>0, 'html'=>0, 'non'=>0); while ($row = spip_fetch_array($result, SPIP_NUM)) { $nb_inscrits ++ ; $abo = unserialize($row[0]); $format = $abo['abo'] ; if($format=="texte" OR $format=="html") spip_query("INSERT INTO `spip_auteurs_elargis` (`id_auteur`, `spip_listes_format`) VALUES ("._q($row[1]).","._q($format).") "); else spip_query("INSERT INTO `spip_auteurs_elargis` (`id_auteur`, `spip_listes_format`) VALUES ("._q($row[1]).","._q('non').") "); if ($abo['abo']) { $cmpt[$abo['abo']] ++; } } echo "
html : ".$cmpt['html']."
texte : ".$cmpt['texte']."
non : ".$cmpt['non']."
somme :".$nb_inscrits ; ecrire_meta('spiplistes_version', $current_version=1.96); } if ($current_version<1.97){ echo "SpipListes Maj 1.97
"; include_spip('base/abstract_sql'); echo "regulariser les desabonnes avec listes...
"; $result = spip_query("SELECT a.`email`, a.id_auteur FROM `spip_auteurs` a, `spip_auteurs_listes` l, `spip_auteurs_elargis` f WHERE a.id_auteur=f.id_auteur AND f.spip_listes_format = 'non' AND a.id_auteur = l.id_auteur AND a.statut!='5poubelle' GROUP BY email "); $nb_inscrits = spip_num_rows($result); echo $nb_inscrits ; while($res = spip_fetch_array($result)){ spip_query("DELETE FROM spip_auteurs_listes WHERE id_auteur =".$res['id_auteur']) ; } ecrire_meta('spiplistes_version', $current_version=1.97); } if ($current_version<1.98){ echo "SpipListes Maj 1.98
"; include_spip('base/abstract_sql'); echo "regulariser l'index"; $table_nom = "spip_auteurs_elargis"; //ajout des index $desc = spip_abstract_showtable($table_nom, '', true); if($desc['key']['PRIMARY KEY']!='id'){ spip_query("ALTER TABLE ".$table_nom." DROP PRIMARY KEY"); if(!isset($desc['fields']['id'])) spip_query("ALTER TABLE ".$table_nom." ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY"); else spip_query("ALTER TABLE ".$table_nom." ADD PRIMARY KEY (id)"); } if($desc['key']['KEY id_auteur']) spip_query("ALTER TABLE ".$table_nom." DROP INDEX id_auteur, ADD INDEX id_auteur (id_auteur)"); else spip_query("ALTER TABLE ".$table_nom." ADD INDEX id_auteur (id_auteur)"); ecrire_meta('spiplistes_version', $current_version=1.98); } ecrire_metas(); } spip_log("spip-listes $current_version","spiplistes"); } function spiplistes_vider_tables() { include_spip('base/agenda_evenements'); include_spip('base/abstract_sql'); // suppression du champ evenements a la table spip_groupe_mots spip_query("DROP TABLE spip_courriers"); spip_query("DROP TABLE spip_listes"); spip_query("DROP TABLE spip_auteurs_courriers"); spip_query("DROP TABLE spip_auteurs_listes"); spip_query("DROP TABLE spip_auteurs_mod_listes"); effacer_meta('spiplistes_version'); effacer_meta('spiplistes_charset_envoi'); effacer_meta('spiplistes_lots'); effacer_meta('abonnement_config'); ecrire_metas(); } function spiplistes_install($action){ $version_base = $GLOBALS['spiplistes_version']; switch ($action){ case 'test': return (isset($GLOBALS['meta']['spiplistes_version']) AND ($GLOBALS['meta']['spiplistes_version']>=$version_base)); break; case 'install': spiplistes_verifier_base(); break; case 'uninstall': spiplistes_vider_tables(); break; } } ?>