/** * Fonction de desinstallation * * @param unknown_type $nom_meta_base_version */ function accesrestreint_vider_tables($nom_meta_base_version) { sql_drop_table("spip_zones"); sql_drop_table("spip_zones_auteurs"); sql_drop_table("spip_zones_rubriques"); effacer_meta('creer_htaccess'); effacer_meta($nom_meta_base_version); }
function facteur_vieil_upgrade(){ // migration depuis tres ancienne version, a la main if (isset($GLOBALS['meta']['spip_notifications_version'])) { ecrire_meta('facteur_smtp', $GLOBALS['meta']['spip_notifications_smtp']); ecrire_meta('facteur_smtp_auth', $GLOBALS['meta']['spip_notifications_smtp_auth']); ecrire_meta('facteur_smtp_secure', $GLOBALS['meta']['spip_notifications_smtp_secure']); ecrire_meta('facteur_smtp_sender', $GLOBALS['meta']['spip_notifications_smtp_sender']); ecrire_meta('facteur_filtre_images', $GLOBALS['meta']['spip_notifications_filtre_images']); ecrire_meta('facteur_filtre_css', $GLOBALS['meta']['spip_notifications_filtre_css']); ecrire_meta('facteur_filtre_iso_8859', $GLOBALS['meta']['spip_notifications_filtre_iso_8859']); ecrire_meta('facteur_adresse_envoi', $GLOBALS['meta']['spip_notifications_adresse_envoi']); ecrire_meta('facteur_adresse_envoi_nom', $GLOBALS['meta']['spip_notifications_adresse_envoi_nom']); ecrire_meta('facteur_adresse_envoi_email', $GLOBALS['meta']['spip_notifications_adresse_envoi_email']); // supprimer l'ancien nommage effacer_meta('spip_notifications_smtp'); effacer_meta('spip_notifications_smtp_auth'); effacer_meta('spip_notifications_smtp_secure'); effacer_meta('spip_notifications_smtp_sender'); effacer_meta('spip_notifications_filtre_images'); effacer_meta('spip_notifications_filtre_css'); effacer_meta('spip_notifications_filtre_iso_8859'); effacer_meta('spip_notifications_adresse_envoi'); effacer_meta('spip_notifications_adresse_envoi_nom'); effacer_meta('spip_notifications_adresse_envoi_email'); effacer_meta('spip_notifications_version'); // KEZAKO ? include_spip('base/abstract_sql'); sql_drop_table('spip_notifications', true); } }
function agenda_vider_tables($nom_meta_base_version) { sql_drop_table("spip_evenements"); #sql_drop_table("spip_mots_evenements"); // au cas ou ? sql_alter("TABLE spip_rubriques DROP COLUMN agenda"); effacer_meta($nom_meta_base_version); }
function vacarme_numeros_vider_tables($nom_meta_version_base) { sql_drop_table('spip_vacarme_numeros'); sql_drop_table('spip_vacarme_numeros_details'); sql_drop_table('spip_vacarme_numeros_sommaires'); effacer_meta($nom_meta_version_base); }
/** * Desinstallation/suppression des tables urls * * @param string $nom_meta_base_version */ function urls_vider_tables($nom_meta_base_version) { // repasser dans les urls par defaut ecrire_meta('type_urls', 'page'); sql_drop_table("spip_urls"); effacer_meta($nom_meta_base_version); }
function fraap_candidatures_vider_tables($nom_meta_base_version) { include_spip('base/abstract_sql'); sql_drop_table("spip_candidatures"); sql_alter("TABLE spip_auteurs DROP COLUMN prenom"); sql_alter("TABLE spip_auteurs DROP COLUMN activite"); effacer_meta($nom_meta_base_version); }
/** * Desinstallation/suppression des tables mots et groupes de mots * * @param string $nom_meta_base_version */ function organiseur_vider_tables($nom_meta_base_version) { sql_drop_table("spip_messages"); sql_alter("TABLE spip_auteurs DROP imessage"); sql_alter("TABLE spip_auteurs DROP messagerie"); effacer_meta('messagerie_agenda'); effacer_meta($nom_meta_base_version); }
/** * Désinstallation du plugin * * Supprime les tables SQL du plugin (spip_depots, spip_plugins, spip_depots_plugins, spip_paquets) * * @param string $nom_meta_base_version * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP * @return void **/ function svp_vider_tables($nom_meta_base_version) { sql_drop_table("spip_depots"); sql_drop_table("spip_plugins"); sql_drop_table("spip_depots_plugins"); sql_drop_table("spip_paquets"); effacer_meta($nom_meta_base_version); spip_log('DESINSTALLATION BDD', 'svp_actions.' . _LOG_INFO); }
/** * Fonction de desinstallation * * @param unknown_type $nom_meta_base_version */ function accesrestreint_vider_tables($nom_meta_base_version) { sql_drop_table("spip_zones"); sql_drop_table("spip_zones_liens"); effacer_meta('accesrestreint_proteger_documents'); include_spip("inc/accesrestreint_documents"); accesrestreint_gerer_htaccess(false); effacer_meta($nom_meta_base_version); }
/** * Desinstallation/suppression des tables mots et groupes de mots * * @param string $nom_meta_base_version */ function mots_vider_tables($nom_meta_base_version) { sql_drop_table("spip_mots"); sql_drop_table("spip_groupes_mots"); sql_drop_table("spip_mots_liens"); effacer_meta('articles_mots'); effacer_meta('config_precise_groupes'); effacer_meta($nom_meta_base_version); }
/** * Désinstallation du plugin * * @param string $nom_meta_base_version * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP * @return void **/ function stats_vider_tables($nom_meta_base_version) { sql_drop_table("spip_visites"); sql_drop_table("spip_visites_articles"); sql_drop_table("spip_referers"); sql_drop_table("spip_referers_articles"); effacer_meta("activer_statistiques"); effacer_meta("activer_captures_referers"); effacer_meta($nom_meta_base_version); }
/** * Fonction de désinstallation du plugin Réseŕvations Crédits. * * Vous devez : * * - nettoyer toutes les données ajoutées par le plugin et son utilisation * - supprimer les tables et les champs créés par le plugin. * * @param string $nom_meta_base_version * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP * @return void **/ function reservations_credits_vider_tables($nom_meta_base_version) { sql_drop_table("spip_reservation_credit_mouvements"); sql_drop_table("spip_reservation_credits"); # Nettoyer les versionnages et forums sql_delete("spip_versions", sql_in("objet", array('reservation_credit_mouvement', 'reservation_credit'))); sql_delete("spip_versions_fragments", sql_in("objet", array('reservation_credit_mouvement', 'reservation_credit'))); sql_delete("spip_forum", sql_in("objet", array('reservation_credit_mouvement', 'reservation_credit'))); effacer_meta($nom_meta_base_version); }
/** * Fonction de désinstallation du plugin Livraison. * * @param string $nom_meta_base_version * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP * @return void **/ function livraison_vider_tables($nom_meta_base_version) { livraison_generer_csv_installation(); sql_drop_table("spip_livraisonmodes"); # Nettoyer les versionnages et forums sql_delete("spip_versions", sql_in("objet", array('livraisonmode'))); sql_delete("spip_versions_fragments", sql_in("objet", array('livraisonmode'))); sql_delete("spip_forum", sql_in("objet", array('livraisonmode'))); effacer_meta($nom_meta_base_version); }
/** * Desinstallation/suppression des tables vhplab * * @param string $nom_meta_base_version */ function vhplab_vider_tables($nom_meta_base_version) { sql_drop_table("spip_vhplab_gis"); sql_drop_table("spip_vhplab_gis_liens"); sql_drop_table("spip_vhplab_related"); sql_drop_table("spip_vhplab_related_liens"); sql_drop_table("spip_vhplab_json"); sql_drop_table("spip_vhplab_json_liens"); effacer_meta($nom_meta_base_version); }
/** * Fonction de désinstallation du plugin cPublicité. * * @param string $nom_meta_base_version * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP * @return void **/ function cpub_vider_tables($nom_meta_base_version) { sql_drop_table("spip_publicites"); sql_drop_table("spip_bannieres"); sql_drop_table("spip_stats_pubs"); # Nettoyer les versionnages et forums sql_delete("spip_versions", sql_in("objet", array('publicite', 'banniere'))); sql_delete("spip_versions_fragments", sql_in("objet", array('publicite', 'banniere'))); sql_delete("spip_forum", sql_in("objet", array('publicite', 'banniere'))); effacer_meta($nom_meta_base_version); }
function adhclub_vider_tables($nom_meta_base_version) { sql_drop_table("spip_adhassurs_liens"); sql_drop_table("spip_adhcotis_liens"); sql_drop_table("spip_adhnivs_liens"); sql_drop_table("spip_adhassurs"); sql_drop_table("spip_adhcotis"); sql_drop_table("spip_adhnivs"); sql_drop_table("spip_adhsaisons"); sql_drop_table("spip_adhintgs"); cextras_api_vider_tables(adhclub_declarer_champs_extras()); effacer_meta($nom_meta_base_version); }
function vacarme_commande_vider_tables($nom_meta_base_version) { sql_alter("TABLE spip_contacts DROP organisation"); sql_alter("TABLE spip_contacts DROP service"); sql_alter("TABLE spip_contacts DROP type_client"); sql_alter("TABLE spip_contacts_abonnements DROP numero_debut"); sql_alter("TABLE spip_contacts_abonnements DROP numero_fin"); sql_alter("TABLE spip_abonnements DROP reference"); sql_alter("TABLE spip_abonnements DROP cadeau"); sql_alter("TABLE spip_paniers_liens DROP numero"); sql_alter("TABLE spip_commandes DROP paiement"); sql_alter("TABLE spip_commandes_details DROP numero"); sql_drop_table('spip_commandes_transactions'); effacer_meta($nom_meta_base_version); }
function clevermail_vider_tables($nom_meta_base_version) { sql_drop_table('spip_cm_lists'); sql_drop_table('spip_cm_lists_subscribers'); sql_drop_table('spip_cm_pending'); sql_drop_table('spip_cm_posts'); sql_drop_table('spip_cm_posts_done'); sql_drop_table('spip_cm_posts_links'); sql_drop_table('spip_cm_posts_queued'); sql_drop_table('spip_cm_settings'); sql_drop_table('spip_cm_subscribers'); sql_drop_table('spip_cm_champ_exercice'); effacer_meta($nom_meta_base_version); spip_log('Suppression des tables du plugin CleverMail', 'clevermail'); }
/** * Desinstallation/suppression des tables forum * * @param string $nom_meta_base_version */ function forum_vider_tables($nom_meta_base_version) { sql_drop_table("spip_forum"); effacer_meta("mots_cles_forums"); effacer_meta("forums_titre"); effacer_meta("forums_texte"); effacer_meta("forums_urlref"); effacer_meta("forums_afficher_barre"); effacer_meta("formats_documents_forum"); effacer_meta("forums_publics"); effacer_meta("forum_prive"); effacer_meta("forum_prive_objets"); effacer_meta("forum_prive_admin"); effacer_meta($nom_meta_base_version); }
function base_delete_all_dist($titre) { $delete = _request('delete'); $res = array(); if (is_array($delete)) { foreach ($delete as $table) { if (sql_drop_table($table)) { $res[] = $table; } else { spip_log("SPIP n'a pas pu detruire {$table}.", _LOG_ERREUR); } } // un pipeline pour detruire les tables installees par les plugins pipeline('delete_tables', ''); spip_unlink(_FILE_CONNECT); spip_unlink(_FILE_CHMOD); spip_unlink(_FILE_META); spip_unlink(_ACCESS_FILE_NAME); spip_unlink(_CACHE_RUBRIQUES); } $d = count($delete); $r = count($res); spip_log("Tables detruites: {$r} sur {$d}: " . join(', ', $res), _LOG_INFO_IMPORTANTE); }
function base_delete_all_dist($titre) { $delete = _request('delete'); $res = array(); if (is_array($delete)) { foreach ($delete as $table) { if (sql_drop_table($table)) $res[] = $table; else spip_log("SPIP n'a pas pu detruire $table."); } // un pipeline pour detruire les tables installees par les plugins pipeline('delete_tables', ''); spip_unlink(_FILE_CONNECT); spip_unlink(_FILE_CHMOD); spip_unlink(_FILE_META); spip_unlink(_ACCESS_FILE_NAME); spip_unlink(_CACHE_RUBRIQUES); } $d = count($delete); $r = count($res); spip_log("Tables detruites: $r sur $d: " . join(', ',$res)); }
/** * Desinstallation * * @param string $nom_meta_base_version */ function bank_vider_tables($nom_meta_base_version) { include_spip('base/abstract_sql'); effacer_meta($nom_meta_base_version); sql_drop_table("spip_transactions"); sql_drop_table("spip_forms_donnees_transactions"); }
/** * Copier de base a base * * @param string $status_file * nom avec chemin complet du fichier ou est stocke le status courant * @param array $tables * liste des tables a copier * @param string $serveur_source * @param string $serveur_dest * @param array $options * parametres optionnels sous forme de tableau : * param string $callback_progression * fonction a appeler pour afficher la progression, avec les arguments (compteur,total,table) * param int $max_time * limite de temps au dela de laquelle sortir de la fonction proprement (de la forme time()+15) * param bool $drop_source * vider les tables sources apres copie * param array $no_erase_dest * liste des tables a ne pas vider systematiquement (ne seront videes que si existent dans la base source) * param array $where * liste optionnelle de condition where de selection des donnees pour chaque table * param string $racine_fonctions_dest * racine utilisee pour charger_fonction() des operations elementaires sur la base de destination. * Permet de deleguer vers une autre voie de communication. * Par defaut on utilise 'base', ce qui route vers les fonctions de ce fichier. Concerne : * - vider_tables_destination_copie * - preparer_table_dest * - detruire_copieur_si_besoin * - inserer_copie * param array $fonction_base_inserer * fonction d'insertion en base. Par defaut "inserer_copie" qui fait un insertq a l'identique. * Attention, la fonction appelee est prefixee par $racine_fonctions_dest via un charger_fonction() * Peut etre personalisee pour filtrer, renumeroter.... * param array $desc_tables_dest * description des tables de destination a utiliser de preference a la description de la table source * param int data_pool * nombre de ko de donnees a envoyer d'un coup en insertion dans la table cible (par defaut 1) * permet des envois groupes pour plus de rapidite, notamment si l'insertion est distante * * @return bool */ function base_copier_tables($status_file, $tables, $serveur_source, $serveur_dest, $options = array()) { $callback_progression = isset($options['callback_progression']) ? $options['callback_progression'] : ''; $max_time = isset($options['max_time']) ? $options['max_time'] : 0; $drop_source = isset($options['drop_source']) ? $options['drop_source'] : false; $no_erase_dest = isset($options['no_erase_dest']) ? $options['no_erase_dest'] : array(); $where = isset($options['where']) ? $options['where'] : array(); $fonction_base_inserer = isset($options['fonction_base_inserer']) ? $options['fonction_base_inserer'] : 'inserer_copie'; $desc_tables_dest = isset($options['desc_tables_dest']) ? $options['desc_tables_dest'] : array(); $racine_fonctions = isset($options['racine_fonctions_dest']) ? $options['racine_fonctions_dest'] : 'base'; $data_pool = isset($options['data_pool']) ? $options['data_pool'] : 50 * 1024; spip_log("Copier " . count($tables) . " tables de '{$serveur_source}' vers '{$serveur_dest}'", 'dump.' . _LOG_INFO_IMPORTANTE); if (!($inserer_copie = charger_fonction($fonction_base_inserer, $racine_fonctions, true))) { spip_log("Fonction '{$racine_fonctions}_{$fonction_base_inserer}' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE); return true; // echec mais on a fini, donc true } if (!($preparer_table_dest = charger_fonction('preparer_table_dest', $racine_fonctions, true))) { spip_log("Fonction '{$racine_fonctions}_{$preparer_table_dest}' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE); return true; // echec mais on a fini, donc true } if (!lire_fichier($status_file, $status) or !($status = unserialize($status))) { $status = array(); } $status['etape'] = 'basecopie'; // puis relister les tables a importer // et les vider si besoin, au moment du premier passage ici $initialisation_copie = !isset($status["dump_status_copie"]) ? 0 : $status["dump_status_copie"]; // si init pas encore faite, vider les tables du serveur destination if (!$initialisation_copie) { if (!($vider_tables_destination_copie = charger_fonction('vider_tables_destination_copie', $racine_fonctions, true))) { spip_log("Fonction '{$racine_fonctions}_vider_tables_destination_copie' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE); return true; // echec mais on a fini, donc true } $vider_tables_destination_copie($tables, $no_erase_dest, $serveur_dest); $status["dump_status_copie"] = 'ok'; ecrire_fichier($status_file, serialize($status)); } // les tables auteurs et meta doivent etre copiees en dernier ! if (in_array('spip_auteurs', $tables)) { $tables = array_diff($tables, array('spip_auteurs')); $tables[] = 'spip_auteurs'; } if (in_array('spip_meta', $tables)) { $tables = array_diff($tables, array('spip_meta')); $tables[] = 'spip_meta'; } spip_log("Tables a copier :" . implode(", ", $tables), 'dump.' . _LOG_INFO); $trouver_table = charger_fonction('trouver_table', 'base'); foreach ($tables as $table) { // en principe, pas de spip_ dans le nom de table passe a trouver_table $desc_source = $trouver_table(preg_replace(",^spip_,", "", $table), $serveur_source, false); if (!$desc_source) { $desc_source = $trouver_table($table, $serveur_source, false); } // verifier que la table est presente dans la base source if ($desc_source) { // $status['tables_copiees'][$table] contient l'avancement // de la copie pour la $table : 0 a N et -N quand elle est finie (-1 si vide et finie...) if (!isset($status['tables_copiees'][$table])) { $status['tables_copiees'][$table] = 0; } if (is_numeric($status['tables_copiees'][$table]) and $status['tables_copiees'][$table] >= 0 and $desc_dest = $preparer_table_dest($table, isset($desc_tables_dest[$table]) ? $desc_tables_dest[$table] : $desc_source, $serveur_dest, $status['tables_copiees'][$table] == 0)) { if ($callback_progression) { $callback_progression($status['tables_copiees'][$table], 0, $table); } while (true) { $n = intval($status['tables_copiees'][$table]); // on copie par lot de 400 $res = sql_select('*', $table, isset($where[$table]) ? $where[$table] : '', '', '', "{$n},400", '', $serveur_source); while ($row = sql_fetch($res, $serveur_source)) { $rows = array($row); // lire un groupe de donnees si demande en option // (permet un envoi par lot vers la destination) if ($data_pool > 0) { $s = strlen(serialize($row)); while ($s < $data_pool and $row = sql_fetch($res, $serveur_source)) { $s += strlen(serialize($row)); $rows[] = $row; } } // si l'enregistrement est deja en base, ca fera un echec ou un doublon // mais si ca renvoie false c'est une erreur fatale => abandon if ($inserer_copie($table, $rows, $desc_dest, $serveur_dest) === false) { // forcer la sortie, charge a l'appelant de gerer l'echec // copie finie return true; } $status['tables_copiees'][$table] += count($rows); if ($max_time and time() > $max_time) { break; } } if ($n == $status['tables_copiees'][$table]) { break; } spip_log("recopie {$table} " . $status['tables_copiees'][$table], 'dump.' . _LOG_INFO_IMPORTANTE); if ($callback_progression) { $callback_progression($status['tables_copiees'][$table], 0, $table); } ecrire_fichier($status_file, serialize($status)); if ($max_time and time() > $max_time) { return false; } // on a pas fini, mais le temps imparti est ecoule } if ($drop_source) { sql_drop_table($table, '', $serveur_source); spip_log("drop {$table} sur serveur source '{$serveur_source}'", 'dump.' . _LOG_INFO_IMPORTANTE); } $status['tables_copiees'][$table] = $status['tables_copiees'][$table] ? -$status['tables_copiees'][$table] : "zero"; ecrire_fichier($status_file, serialize($status)); spip_log("tables_recopiees " . implode(',', $status['tables_copiees']), 'dump.' . _LOG_INFO); if ($callback_progression) { $callback_progression($status['tables_copiees'][$table], $status['tables_copiees'][$table], $table); } } else { if ($status['tables_copiees'][$table] < 0) { spip_log("Table {$table} deja copiee : " . $status['tables_copiees'][$table], "dump." . _LOG_INFO); } if ($callback_progression) { $callback_progression(0, $status['tables_copiees'][$table], "{$table}" . ((is_numeric($status['tables_copiees'][$table]) and $status['tables_copiees'][$table] >= 0) ? "[Echec]" : "")); } } } else { $status['errors'][] = "Impossible de lire la description de la table {$table}"; ecrire_fichier($status_file, serialize($status)); spip_log("Impossible de lire la description de la table {$table}", "dump." . _LOG_ERREUR); } } // si le nombre de tables envoyees n'est pas egal au nombre de tables demandees // abandonner if (count($status['tables_copiees']) < count($tables)) { spip_log("Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables), "dump." . _LOG_ERREUR); $status['errors'][] = "Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables); ecrire_fichier($status_file, serialize($status)); } if ($detruire_copieur_si_besoin = charger_fonction('detruire_copieur_si_besoin', $racine_fonctions, true)) { $detruire_copieur_si_besoin($serveur_dest); } else { spip_log("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.", 'dump.' . _LOG_INFO_IMPORTANTE); } // OK, copie complete return true; }
/** * Fonction de désinstallation du plugin Souscription. * * @param string $nom_meta_base_version * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP * @return void **/ function souscription_vider_tables($nom_meta_base_version) { sql_drop_table("spip_souscriptions"); sql_drop_table("spip_souscription_campagnes"); /* Nettoyer les versionnages et forums */ sql_delete("spip_versions", sql_in("objet", array('souscription'))); sql_delete("spip_versions_fragments", sql_in("objet", array('souscription'))); sql_delete("spip_forum", sql_in("objet", array('souscription'))); effacer_meta($nom_meta_base_version); }
/** * Desinstallation/suppression des tables breves * * @param string $nom_meta_base_version */ function breves_vider_tables($nom_meta_base_version) { sql_drop_table("spip_breves"); effacer_meta("activer_breves"); effacer_meta($nom_meta_base_version); }
function agenda_vider_tables() { include_spip('base/agenda_evenements'); include_spip('base/abstract_sql'); sql_drop_table("spip_evenements"); sql_drop_table("spip_mots_evenements"); sql_alter("TABLE spip_rubriques DROP COLUMN agenda"); effacer_meta('agenda_base_version'); }
/** * Desinstallation/suppression des tables petitions et signatures * * @param string $nom_meta_base_version */ function petitions_vider_tables($nom_meta_base_version) { sql_drop_table("spip_petitions"); sql_drop_table("spip_signatures"); effacer_meta($nom_meta_base_version); }
/** * Desinstallation/suppression des tables revisions * * @param string $nom_meta_base_version */ function revisions_vider_tables($nom_meta_base_version) { sql_drop_table("spip_versions"); sql_drop_table("spip_versions_fragments"); effacer_meta($nom_meta_base_version); }
/** * Une fonction pour supprimer une table de configuration supplementaire * si $force=true, on ne verifie pas qu'elle est bien vide * * @param string $table * @param bool $force */ function supprimer_table_meta($table, $force = false) { if ($table == 'meta') { return; } // interdit ! if ($force or !sql_countsel("spip_{$table}")) { unset($GLOBALS[$table]); sql_drop_table("spip_{$table}"); // vider le cache des tables $trouver_table = charger_fonction('trouver_table', 'base'); $trouver_table(''); } }
/** * Desinstallation/suppression des tables mots et groupes de mots * * @param string $nom_meta_base_version */ function sites_vider_tables($nom_meta_base_version) { sql_drop_table("spip_syndic"); sql_drop_table("spip_syndic_articles"); effacer_meta($nom_meta_base_version); }