function upgrade_produits() { $all = sql_allfetsel("*", "spip_produits"); include_once _DIR_PLUGIN_SALE . "sale_fonctions.php"; foreach ($all as $produit) { #var_dump($produit); $set = array(); if (function_exists('sale')) { $set['texte'] = sale($produit['texte']); $set['texte'] = preg_replace(",</?p>\\s*,ims", "\n\n", $set['texte']); $set['texte'] = preg_replace(",<br>(\n+),ims", "\\1", $set['texte']); $set['texte'] = trim($set['texte']) . "\n"; } $set['reference'] = trim($produit['reference']); if (!$set['reference']) { $set['reference'] = 'P' . trim($produit['old_id']); #var_dump($set); #die(); } if (strpos($produit['poids'], ".") !== false) { $set['poids'] = intval(round(floatval($produit['poids']) * 1000)); } #var_dump($set); sql_updateq("spip_produits", $set, 'id_produit=' . intval($produit['id_produit'])); } sql_alter("table spip_produits CHANGE poids poids bigint(21) NOT NULL DEFAULT 0"); die('ok?'); }
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); }
/** * Creer une table, * ou ajouter les champs manquants si elle existe deja * * http://doc.spip.org/@creer_ou_upgrader_table * * @param string $table * @param array $desc * @param bool|string $autoinc * 'auto' pour detecter automatiquement si le champ doit etre autoinc ou non * en fonction de la table * @param bool $upgrade * @param string $serveur * @return void */ function creer_ou_upgrader_table($table, $desc, $autoinc, $upgrade = false, $serveur = '') { $sql_desc = $upgrade ? sql_showtable($table, true, $serveur) : false; if (!$sql_desc) { if ($autoinc === 'auto') { $autoinc = base_determine_autoinc($table, $desc); } sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur); } else { // ajouter les champs manquants // on ne supprime jamais les champs, car c'est dangereux // c'est toujours a faire manuellement $last = ''; foreach ($desc['field'] as $field => $type) { if (!isset($sql_desc['field'][$field])) { sql_alter("TABLE {$table} ADD {$field} {$type}" . ($last ? " AFTER {$last}" : ""), $serveur); } $last = $field; } foreach ($desc['key'] as $key => $type) { // Ne pas oublier les cas des cles non nommees dans la declaration et qui sont retournees // par le showtable sous la forme d'un index de tableau "KEY $type" et non "KEY" if (!isset($sql_desc['key'][$key]) and !isset($sql_desc['key']["{$key} {$type}"])) { sql_alter("TABLE {$table} ADD {$key} ({$type})", $serveur); } $last = $field; } } }
/** * Fonction de désinstallation du plugin. **/ function roles_auteurs_vider_tables($nom_meta_base_version) { // tant qu'il existe des doublons, on supprime une ligne doublonnée // sinon on ne pourra pas modifier la cle primaire ensuite // cet algo est certainement a optimiser while ($doublons = sql_allfetsel( array('id_auteur', 'id_objet', 'objet', 'role'), array('spip_auteurs_liens'), '', 'id_auteur,id_objet,objet', '', '', 'COUNT(*) > 1')) { foreach ($doublons as $d) { $where = array(); foreach ($d as $cle=>$valeur) { $where[] = "$cle=".sql_quote($valeur); } sql_delete('spip_auteurs_liens', $where); } } // supprimer la clé primaire, la colonne rôle, et remettre l'ancienne clé primaire sql_alter("TABLE spip_auteurs_liens DROP PRIMARY KEY"); sql_alter("TABLE spip_auteurs_liens DROP COLUMN role"); sql_alter("TABLE spip_auteurs_liens ADD PRIMARY KEY (id_auteur,id_objet,objet)"); 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); }
/** * Desinstallation du plugin * * Suppression de la colonne id_trad uniquement s'il ne reste * pas de traduction. * * @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 tradrub_vider_tables($nom_meta_base_version) { // supprimer la colonne seulement s'il ne reste pas de traductions $il_en_reste = sql_countsel('spip_rubriques', array( 'id_trad <> ' . sql_quote(0), 'id_trad <> id_rubrique') ); if (!$il_en_reste) { sql_alter("TABLE spip_rubriques DROP id_trad"); } effacer_meta($nom_meta_base_version); }
function action_supprimer_champ_sql($table, $champ) { // recuperer les descriptions // pour verifier que le champ n'est pas declare par quelqu'un include_spip('inc/cextras'); $champs = extras_champs_anormaux(); if (isset($champs[$table][$champ])) { // suppression extras_log("Suppression du champ {$table}/{$champ} par auteur " . $GLOBALS['auteur_session']['id_auteur'], true); sql_alter("TABLE {$table} DROP COLUMN " . $champ); } }
/** * Fonction d'installation, mise a jour de la base * * @param unknown_type $nom_meta_base_version * @param unknown_type $version_cible */ function accesrestreint_upgrade($nom_meta_base_version,$version_cible){ $current_version = 0.0; if ( (!isset($GLOBALS['meta'][$nom_meta_base_version]) ) || (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){ include_spip('base/acces_restreint'); if (version_compare($current_version,'0.0','<=')){ include_spip('base/create'); include_spip('base/abstract_sql'); creer_base(); // ajout des champs publique/privee si pas existants $desc = sql_showtable("spip_zones", true); if (!isset($desc['field']['publique'])) sql_alter("TABLE spip_zones ADD publique ENUM('non', 'oui') DEFAULT 'oui' NOT NULL AFTER descriptif"); if (!isset($desc['field']['privee'])) sql_alter("TABLE spip_zones ADD privee ENUM('non', 'oui') DEFAULT 'non' NOT NULL AFTER publique"); echo "AccesRestreint Install<br/>"; effacer_meta($nom_meta_base_version); // salade de majuscules ecrire_meta($nom_meta_base_version,$current_version=$version_cible,'non'); } if (version_compare($current_version,'0.2','<')){ include_spip('base/create'); include_spip('base/abstract_sql'); // ajout des champs publique/privee si pas existants $desc = sql_showtable("spip_zones", true); if (!isset($desc['field']['publique'])) sql_alter("TABLE spip_zones ADD publique ENUM('non', 'oui') DEFAULT 'oui' NOT NULL AFTER descriptif"); if (!isset($desc['field']['privee'])) sql_alter("TABLE spip_zones ADD privee ENUM('non', 'oui') DEFAULT 'non' NOT NULL AFTER publique"); echo "AccesRestreint@0.2<br />"; ecrire_meta($nom_meta_base_version,$current_version='0.2','non'); } if (version_compare($current_version,'0.3','<')){ sql_alter("TABLE `zones_auteurs` DROP INDEX `id_zone`"); sql_alter("TABLE `zones_auteurs` ADD PRIMARY KEY ( `id_zone` , `id_auteur` )"); sql_alter("TABLE `zones_rubriques` DROP INDEX `id_zone`"); sql_alter("TABLE `zones_rubriques` ADD PRIMARY KEY ( `id_zone` , `id_rubrique` )"); echo "AccesRestreint@0.3<br />"; ecrire_meta($nom_meta_base_version,$current_version='0.3','non'); } if (version_compare($current_version,'0.3.0.1','<')){ #ecrire_meta('creer_htaccess','oui'); echo "AccesRestreint@0.3.0.1<br />"; ecrire_meta($nom_meta_base_version,$current_version='0.3.0.1','non'); } if (version_compare($current_version,'0.3.0.2','<')){ #ecrire_meta('creer_htaccess','oui'); sql_alter("TABLE spip_zone ALTER titre SET DEFAULT ''"); sql_alter("TABLE spip_zone ALTER descriptif SET DEFAULT ''"); echo "AccesRestreint@0.3.0.2<br />"; ecrire_meta($nom_meta_base_version,$current_version='0.3.0.2','non'); } } }
/** * Desinstallation * * @param string $nom_meta_base_version */ function compositions_vider_tables($nom_meta_base_version) { include_spip('inc/meta'); include_spip('base/abstract_sql'); include_spip('base/objets'); $tables_objets = array_keys(lister_tables_objets_sql()); foreach($tables_objets as $table){ sql_alter("TABLE $table DROP composition"); sql_alter("TABLE $table DROP composition_lock"); } sql_alter("TABLE spip_rubriques DROP composition_branche_lock"); effacer_meta('compositions'); 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 mots_techniques_upgrade($nom_meta_base_version,$version_cible){ $current_version = 0.0; if ( (!isset($GLOBALS['meta'][$nom_meta_base_version]) ) || (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){ if (version_compare($current_version,'0.0','<=')){ $champs = mots_techniques_declarer_champs_extras(); creer_champs_extras($champs); ecrire_meta($nom_meta_base_version,$current_version=$version_cible,'non'); } if ($current_version<0.2){ sql_alter("TABLE spip_groupes_mots DROP affiche_formulaire"); ecrire_meta($nom_meta_base_version,$current_version=$version_cible,'non'); } } }
function genie_popularites_dist($t) { // Si c'est le premier appel, ne pas calculer $t = $GLOBALS['meta']['date_popularites']; ecrire_meta('date_popularites', time()); if (!$t) return 1; $duree = time() - $t; list($a,$b) = genie_popularite_constantes($duree); // du passe, faisons table (SQL) rase sql_update('spip_articles', array('maj'=>'maj', 'popularite' => "popularite * $a"), 'popularite>1'); // enregistrer les metas... $row = sql_fetsel('MAX(popularite) AS max, SUM(popularite) AS tot', "spip_articles"); ecrire_meta("popularite_max", $row['max']); ecrire_meta("popularite_total", $row['tot']); // Une fois par jour purger les referers du jour ; qui deviennent // donc ceux de la veille ; au passage on stocke une date_statistiques // dans spip_meta - cela permet au code d'etre "reentrant", ie ce cron // peut etre appele par deux bases SPIP ne partageant pas le meme // _DIR_TMP, sans tout casser... $aujourdhui = date("Y-m-d"); if (($d = $GLOBALS['meta']['date_statistiques']) != $aujourdhui) { spip_log("Popularite: purger referer depuis $d"); ecrire_meta('date_statistiques', $aujourdhui); if (strncmp($GLOBALS['connexions'][0]['type'],'sqlite',6)==0) spip_query("UPDATE spip_referers SET visites_veille=visites_jour, visites_jour=0"); else // version 3 fois plus rapide, mais en 2 requetes #spip_query("ALTER TABLE spip_referers CHANGE visites_jour visites_veille INT( 10 ) UNSIGNED NOT NULL DEFAULT '0',CHANGE visites_veille visites_jour INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); #spip_query("UPDATE spip_referers SET visites_jour=0"); // version 4 fois plus rapide que la premiere, en une seule requete sql_alter("TABLE spip_referers DROP visites_veille, CHANGE visites_jour visites_veille INT(10) UNSIGNED NOT NULL DEFAULT '0', ADD visites_jour INT(10) UNSIGNED NOT NULL DEFAULT '0'"); } // et c'est fini pour cette fois-ci return 1; }
function creer_ou_upgrader_table($table,$desc,$autoinc,$upgrade=false,$serveur='') { $sql_desc = $upgrade ? sql_showtable($table,true,$serveur) : false; if (!$sql_desc) sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur); else { // ajouter les champs manquants $last = ''; foreach($desc['field'] as $field=>$type){ if (!isset($sql_desc['field'][$field])) sql_alter("TABLE $table ADD $field $type".($last?" AFTER $last":""),$serveur); $last = $field; } foreach($desc['key'] as $key=>$type){ if (!isset($sql_desc['key'][$key])) sql_alter("TABLE $table ADD $key ($type)",$serveur); $last = $field; } } }
function maj_1_952() { $ok = sql_alter("TABLE spip_documents CHANGE `mode` `mode` enum('vignette','image','document') DEFAULT NULL"); if ($ok) { $s = sql_select("v.id_document as id_document", "spip_documents as d join spip_documents as v ON d.id_vignette=v.id_document"); $vignettes = array(); while ($t = sql_fetch($s)) { $vignettes[] = intval($t['id_document']); } $ok &= spip_query("UPDATE spip_documents SET `mode`='image' WHERE `mode`='vignette'"); $ok &= spip_query("UPDATE spip_documents SET `mode`='vignette' WHERE `mode`='image' AND " . sql_in('id_document', $vignettes)); } if (!$ok) { die('echec sur maj_1_952()'); } }
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'); }
/** * Upgrade de la base * * @param string $nom_meta_base_version * @param string $version_cible */ function bank_upgrade($nom_meta_base_version, $version_cible) { $current_version = 0.0; if (!isset($GLOBALS['meta'][$nom_meta_base_version]) || ($current_version = $GLOBALS['meta'][$nom_meta_base_version]) != $version_cible) { include_spip('base/abstract_sql'); if (spip_version_compare($current_version, "0.0.0", "<=")) { include_spip('base/create'); include_spip('base/serial'); creer_base(); echo "Paiement Install<br/>"; ecrire_meta($nom_meta_base_version, $current_version = $version_cible, 'non'); } if (spip_version_compare($current_version, "0.1.3", "<=")) { include_spip('base/create'); include_spip('base/serial'); maj_tables(array('spip_transactions')); ecrire_meta($nom_meta_base_version, $current_version = "0.1.3", 'non'); } if (spip_version_compare($current_version, "0.1.5", "<=")) { include_spip('base/create'); include_spip('base/serial'); sql_alter("table spip_transactions change url_retour url_retour text DEFAULT '' NOT NULL"); ecrire_meta($nom_meta_base_version, $current_version = "0.1.5", 'non'); } if (spip_version_compare($current_version, "1.0.0", "<=")) { include_spip('base/create'); include_spip('base/serial'); sql_alter("table spip_transactions change transaction_hash transaction_hash bigint(21) NOT NULL DEFAULT 0"); ecrire_meta($nom_meta_base_version, $current_version = "1.0.0", 'non'); } if (spip_version_compare($current_version, "1.0.1", "<=")) { include_spip('base/create'); include_spip('base/serial'); sql_alter("table spip_transactions change finie finie tinyint(1) NOT NULL DEFAULT 0"); sql_alter("table spip_transactions change tracking_id tracking_id bigint(21) NOT NULL DEFAULT 0"); sql_alter("table spip_transactions change id_panier id_panier bigint(21) NOT NULL DEFAULT 0"); sql_alter("table spip_transactions change id_facture id_facture bigint(21) NOT NULL DEFAULT 0"); ecrire_meta($nom_meta_base_version, $current_version = "1.0.1", 'non'); } if (spip_version_compare($current_version, "1.1.0", "<=")) { include_spip('base/create'); include_spip('base/serial'); sql_alter("table spip_transactions ADD contenu TEXT NOT NULL DEFAULT ''"); ecrire_meta($nom_meta_base_version, $current_version = "1.1.0", 'non'); } bank_presta_install(); } }
/** * Créer une table, * ou ajouter les champs manquants si elle existe déjà * * @param string $table * @param array $desc * @param bool|string $autoinc * 'auto' pour detecter automatiquement si le champ doit etre autoinc ou non * en fonction de la table * @param bool $upgrade * @param string $serveur * @return void */ function creer_ou_upgrader_table($table, $desc, $autoinc, $upgrade = false, $serveur = '') { #spip_log("creer_ou_upgrader_table table=$table autoinc=$autoinc upgrade=$upgrade","dbinstall"._LOG_INFO_IMPORTANTE); $sql_desc = $upgrade ? sql_showtable($table, true, $serveur) : false; #if (!$sql_desc) $sql_desc = false; #spip_log("table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE); if (!$sql_desc) { if ($autoinc === 'auto') { $autoinc = base_determine_autoinc($table, $desc); } #spip_log("sql_create $table autoinc=$autoinc","dbinstall"._LOG_INFO_IMPORTANTE); sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur); // verifier la bonne installation de la table (php-fpm es-tu la ?) $sql_desc = sql_showtable($table, true, $serveur); #if (!$sql_desc) $sql_desc = false; #spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE); if (!$sql_desc) { // on retente avec un sleep ? sleep(1); sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur); $sql_desc = sql_showtable($table, true, $serveur); #if (!$sql_desc) $sql_desc = false; #spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE); if (!$sql_desc) { spip_log("Echec creation table {$table}", "maj" . _LOG_CRITIQUE); } } } else { #spip_log("sql_alter $table ... (on s'en fiche)","dbinstall"._LOG_INFO_IMPORTANTE); // ajouter les champs manquants // on ne supprime jamais les champs, car c'est dangereux // c'est toujours a faire manuellement $last = ''; foreach ($desc['field'] as $field => $type) { if (!isset($sql_desc['field'][$field])) { sql_alter("TABLE {$table} ADD {$field} {$type}" . ($last ? " AFTER {$last}" : ""), $serveur); } $last = $field; } foreach ($desc['key'] as $key => $type) { // Ne pas oublier les cas des cles non nommees dans la declaration et qui sont retournees // par le showtable sous la forme d'un index de tableau "KEY $type" et non "KEY" if (!isset($sql_desc['key'][$key]) and !isset($sql_desc['key']["{$key} {$type}"])) { sql_alter("TABLE {$table} ADD {$key} ({$type})", $serveur); } $last = $field; } } }
/** * Modifier les champs extras (colonne dans la base de données) * definies par le lot de saisies donné * * Permet de changer la structure SQL ou le nom de la colonne * des saisies * * @param string $table * Nom de la table SQL * @param array $saisies_nouvelles * Description des saisies nouvelles * @param array $saisies_anciennes * Description des saisies anciennes * @return bool * True si les changement SQL sont correctement effectués **/ function champs_extras_modifier($table, $saisies_nouvelles, $saisies_anciennes) { $ok = true; foreach ($saisies_nouvelles as $id => $n) { $n_nom = $n['options']['nom']; if (isset($n['options']['sql'])) { $n_sql = $n['options']['sql']; $a_nom = $saisies_anciennes[$id]['options']['nom']; $a_sql = $saisies_anciennes[$id]['options']['sql']; if ($n_nom != $a_nom or $n_sql != $n_sql) { $ok &= sql_alter("TABLE {$table} CHANGE COLUMN {$a_nom} {$n_nom} {$n_sql}"); } } } return $ok; }
function ecatalogue_upgrade($nom_meta_base_version, $version_cible) { $current_version = "0.0"; // If plugin is already installed, get it's base version if (isset($GLOBALS['meta'][$nom_meta_base_version])) { $current_version = $GLOBALS['meta'][$nom_meta_base_version]; //spip_log('12:14 Version actuelle : '.$current_version,'ecatalogue'); } // If plugin's base version is 0.0 (it is not installed) create database if ($current_version == "0.0") { // check if you already have an old database $r = mysql_query("SELECT `type` FROM `spip_ecatalogue_groupes` WHERE 0"); if ($r) { sql_alter("TABLE spip_ecatalogue_groupes RENAME spip_ecatalogue_proprietes"); sql_alter("TABLE spip_ecatalogue_proprietes CHANGE id_groupe id_propriete bigint(21) NOT NULL"); sql_alter("TABLE spip_ecatalogue_options CHANGE id_groupe id_propriete bigint(21) NOT NULL"); } creer_base(); // Write new version to sql cache. //$current_version became latest, therefore all next version_compare checks won't be executed ecrire_meta($nom_meta_base_version, $current_version = $version_cible); //spip_log('Base de donnйes ecatalogue correctement peuplйe','ecatalogue'); } // If plugin's base version is < 0.1, alter some tables if (version_compare($current_version, "0.1.0", "<")) { // Upgrade via sql_alter //sql_alter("TABLE spip_ecatalogue_products ADD COLUMN id_equipment bigint(21) NOT NULL"); // Upgrade via maj_tables (it tells SPIP to refresh some tables) maj_tables('spip_ecatalogue_products'); // Write new version to sql cache ecrire_meta($nom_meta_base_version, $current_version = "0.1"); } if (version_compare($current_version, "0.2.0", "<")) { //maj_tables('spip_ecatalogue_articles_similars'); creer_base(); maj_tables('spip_ecatalogue_products'); ecrire_meta($nom_meta_base_version, $current_version = "0.2"); } if (version_compare($current_version, "0.3.0", "<")) { // Create tables that wasn't created yet creer_base(); ecrire_meta($nom_meta_base_version, $current_version = "0.3"); } if (version_compare($current_version, "0.4.0", "<")) { // Create tables that wasn't created yet //creer_base(); maj_tables('spip_ecatalogue_products'); ecrire_meta($nom_meta_base_version, $current_version = "0.4"); } if (version_compare($current_version, "0.5.0", "<")) { // Create tables that wasn't created yet creer_base(); ecrire_meta($nom_meta_base_version, $current_version = "0.5"); } if (version_compare($current_version, "0.6.0", "<")) { maj_tables('spip_ecatalogue_products'); ecrire_meta($nom_meta_base_version, $current_version = "0.6"); } if (version_compare($current_version, "0.7.0", "<")) { maj_tables('spip_ecatalogue_composites_articles'); ecrire_meta($nom_meta_base_version, $current_version = "0.7"); } if (version_compare($current_version, "0.9.0", "<")) { maj_tables('spip_ecatalogue_options'); ecrire_meta($nom_meta_base_version, $current_version = "0.9"); } if (version_compare($current_version, "0.10.0", "<")) { // Create tables that wasn't created yet (spip_ecatalogue_proprietes, spip_ecatalogue_rubriques_groupes) creer_base(); // Update tables maj_tables('spip_ecatalogue_options'); maj_tables('spip_ecatalogue_groupes'); ecrire_meta($nom_meta_base_version, $current_version = "0.10"); } if (version_compare($current_version, "0.11.0", "<")) { // Create tables that wasn't created yet (spip_ecatalogue_proprietes, spip_ecatalogue_rubriques_groupes) //creer_base(); $desc = description_table('spip_rubriques'); // Update tables if (!array_key_exists('id_import', $desc['field'])) { sql_query('Alter table spip_rubriques add column id_import int null '); } ecrire_meta($nom_meta_base_version, $current_version = "0.11"); } if (version_compare($current_version, "0.12.0", "<")) { creer_base(); maj_tables('ecatalogue_prices'); maj_tables('ecatalogue_prices_group'); // Проверка на существование 1 группы цен $id_group = ''; $r1 = sql_select('id_group', 'spip_ecatalogue_prices_group', array('id_group = 1', 'is_active = 1')); while ($res = sql_fetch($r1)) { $id_group = $res[1]; } if (!$id_group) { sql_insert('spip_ecatalogue_prices_group', '(id_group,titre,is_active)', '(1,"Розница",1)'); } // Запись в таблицу spip_ecatalogue_prices цен из таблицы spip_ecatalogue_products $r = sql_select('id_article,price', 'spip_ecatalogue_products', 'price<>""'); while ($res = sql_fetch($r)) { $id_group = 1; $id_article = $res['id_article']; $price = $res['price']; // Проверка что такая цена уже есть в справочнике цен в 1 группе, тогда цену обновляем $id_tmp_art = ''; $r2 = sql_select('id_article', 'spip_ecatalogue_prices', array('id_article = ' . $id_article, 'id_group = 1')); while ($res = sql_fetch($r2)) { $id_tmp_art = $res['id_article']; } if ($id_tmp_art) { // Обновляем цену sql_update('spip_ecatalogue_prices', array('price' => $price), array('id_article = ' . $id_article, 'id_group = 1')); } else { // Вставляем цену sql_insert('spip_ecatalogue_prices', '(id_article,id_group,price)', '(' . $id_article . ',1,' . $price . ')'); } } ecrire_meta($nom_meta_base_version, $current_version = "0.12"); } include_spip('base/ecatalogue_db_populate'); }
function upgrade_test() { sql_drop_table("spip_test", true); sql_create("spip_test", array('a' => 'int')); sql_alter("TABLE spip_test ADD b INT"); sql_insertq('spip_test', array('b' => 1), array('field'=>array('b' => 'int'))); $result = sql_select('b', "spip_test"); // ne pas garder le resultat de la requete sinon sqlite3 // ne peut pas supprimer la table spip_test lors du sql_alter qui suit // car cette table serait alors 'verouillee' $result = $result?true:false; sql_alter("TABLE spip_test DROP b"); return $result; }
/** * Supprime les champs extras * @param $champs : objet ChampExtra ou tableau d'objets ChampExtra */ function vider_champs_extras($champs) { if (!is_array($champs)) $champs = array($champs); // on efface chaque champ trouve foreach ($champs as $c){ if ($table = $c->_table_sql and $c->champ and $c->sql) { sql_alter("TABLE $table DROP $c->champ"); } } }
/** * Mise à jour de la base de données (tables SPIP-Listes uniquement) * * @return string */ function spiplistes_upgrade_base ( $spiplistes_name , $spiplistes_current_version , $spiplistes_current_version_base , $spiplistes_real_version_base ) { //spiplistes_debug_log("spiplistes_upgrade_base(),); if($spiplistes_current_version_base && ($spiplistes_current_version_base >= $spiplistes_real_version_base)) { // La base est a jour return($spiplistes_current_version_base); } // faire la mise a jour spiplistes_debug_log("UPGRADING DATABASE $spiplistes_name $spiplistes_current_version_base TO $spiplistes_real_version_base"); // 'version_base' n'apparait que dans SPIP-Listes 1.98001 // Cherche sur $spiplistes_version pour les versions precedentes //install $version_base = 1.91; // ou inferieur ? if ( (!$spiplistes_current_version) || ($spiplistes_current_version < 1.98001) ) { // si etait deja installe mais dans une vieille version, on reprend a zero include_spip('base/abstract_sql'); $desc = sql_showtable("spip_listes",true); if (!isset($desc['field']['id_liste'])) $current_version = 0.0; if( sql_getfetsel("*", 'spip_articles' , "statut=".sql_quote('liste')." OR statut=".sql_quote('inact')." OR statut=".sql_quote('poublist')) ) { $current_version=0.0; } if ($current_version==0.0){ // Verifie que les tables spip_listes existent, sinon les creer //spiplistes_debug_log("UPGRADE: current_version: $current_version"); include_spip('base/create'); include_spip('base/abstract_sql'); //Migrer des listes anciennes // a deplacer dans une en fonction $resultat_aff = sql_select("*", 'spip_articles' , "statut=".sql_quote('liste')." OR statut=".sql_quote('inact')." OR statut=".sql_quote('poublist')); if(@sql_count($resultat_aff) > 0) { echo _T('spiplistes:mettre_a_jour'); while ($row = sql_fetch($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="<p>".$titre_liste."<br/>"; echo $options."</p>"; // ajout du pied de page include_spip('public/assembler'); $contexte_pied = array('lang'=>$langue); $pied = recuperer_fond('modeles/piedmail', $contexte_pied); $id_liste = sql_insertq( "spip_listes" , array( 'titre' => $titre_liste , 'texte' => $texte_liste , 'statut' => $statut , 'date' => $date_liste , 'lang' => $langue , 'pied_page' => $pied ) ); if($message_auto=="oui") sql_update( 'spip_listes' , array( 'patron' => sql_quote($patron_liste) , 'periode' => sql_quote($periode_liste) , 'maj' => "FROM_UNIXTIME(".sql_quote($maj_liste).")" , 'email_envoi' => sql_quote($email_envoi) , 'message_auto' => sql_quote($message_auto) ) , "id_liste=".sql_quote($id_liste) ); //Auteur de la liste (moderateur) sql_delete('spip_auteurs_mod_listes', "id_liste =".sql_quote($id_liste)); sql_insert( 'spip_auteurs_mod_listes' , "(id_auteur, id_liste)" , "(".sql_quote($connect_id_auteur).",".sql_quote($id_liste).")" ); //recuperer les abonnes (peut etre plus tard ?) $abos = sql_select('id_auteur,id_article', 'spip_auteurs_articles' , "id_article=".sql_quote($id_article)); while($abonnes = sql_fetch($abos)){ $abo = intval($abonnes['id_auteur']); sql_insert('spip_auteurs_listes' , "(id_auteur, id_liste)" , "(".sql_quote($abo).",".sql_quote($id_liste).")" ); } //effacer les anciens articles/abo sql_delete('spip_articles', "id_article =".sql_quote($id_article)); sql_delete('spip_auteurs_articles', "id_article =".sql_quote($id_article)); //manque un traitement pour recuperer les courriers } //evaluer les extras de tous les auteurs et les virer $result = sql_select( "extra AS e, spip_auteurs.id_auteur AS i" , 'spip_auteurs' ); while ($row = sql_fetch($result)) { $abo = unserialize($row['e']); $format = $abo['abo'] ; if($format=="texte" || $format=="html") { sql_insert( 'spip_auteurs_elargis' , "(id_auteur,`spip_listes_format`)" , "(".sql_quote($row['i']).",".sql_quote($format).")" ); } else { sql_insert( 'spip_auteurs_elargis' , "(id_auteur, `spip_listes_format`)" , "(".sql_quote($row['i']).",".sql_quote('non').")" ); } } // end while echo _T('spiplistes:regulariser'); $result = sql_select( "a.email, a.id_auteur" , "spip_auteurs AS a, spip_auteurs_listes AS l, spip_auteurs_elargis AS f" , array( "a.id_auteur=f.id_auteur" , "f.spip_listes_format=".sql_quote('non') , "a.id_auteur=l.id_auteur" , "a.statut!=".sql_quote('5poubelle') ) , array("email") ); // while($res = sql_fetch($result)) { sql_delete('spip_auteurs_listes', "id_auteur =".sql_quote($res['id_auteur'])) ; } } // end if(@sql_count($resultat_aff) > 0) ecrire_meta('spiplistes_version',$current_version=$version_base,'non'); } if ($current_version<1.92){ //spiplistes_debug_log("UPGRADE: current_version: $current_version"); echo "SpipListes Maj 1.92<br />"; sql_alter("TABLE spip_listes ADD titre_message varchar(255) NOT NULL default ''"); sql_alter("TABLE spip_listes ADD pied_page longblob NOT NULL"); ecrire_meta('spiplistes_version', $current_version=1.92); } if ($current_version<1.94){ //spiplistes_debug_log("UPGRADE: current_version: $current_version"); echo "SpipListes Maj 1.94<br />"; include_spip('base/abstract_sql'); if (($res = sql_select('id_auteur', 'spip_auteurs_mod_listes')) && (!sql_fetch($res)) && ($desc = sql_showtable("spip_abonnes_listes",true)) && isset($desc['field']['id_auteur']) ) { sql_drop_table("spip_auteurs_mod_listes"); // elle vient d'etre cree par un creer_base inopportun sql_drop_table("spip_auteurs_courriers"); // elle vient d'etre cree par un creer_base inopportun } sql_alter("TABLE spip_auteurs_listes RENAME spip_auteurs_mod_listes"); sql_alter("TABLE spip_abonnes_listes RENAME spip_auteurs_listes"); sql_alter("TABLE spip_abonnes_courriers RENAME spip_auteurs_courriers"); ecrire_meta('spiplistes_version', $current_version=1.94); } if ($current_version<1.95){ //spiplistes_debug_log("UPGRADE: current_version: $current_version"); echo "SpipListes Maj 1.95<br />"; include_spip('base/abstract_sql'); sql_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){ //spiplistes_debug_log("UPGRADE: current_version: $current_version"); echo "SpipListes Maj 1.96<br />"; include_spip('base/abstract_sql'); //installer la table spip_auteurs_elargis si besoin $table_nom = "spip_auteurs_elargis"; sql_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 = sql_select( "extra AS e,spip_auteurs.id_auteur AS i" , 'spip_auteurs'); $nb_inscrits = 0; //repartition des extras $cmpt = array('texte'=>0, 'html'=>0, 'non'=>0); while ($row = sql_fetch($result)) { $nb_inscrits++ ; $abo = unserialize($row['e']); $format = $abo['abo'] ; if($format=="texte" || $format=="html") { sql_insert( 'spip_auteurs_elargis' , "(id_auteur, `spip_listes_format`)" , "(".sql_quote($row['i']).",".sql_quote($format).")" ); } else { sql_insert( 'spip_auteurs_elargis' , "(id_auteur, `spip_listes_format`)" , "(".sql_quote($row['i']).",".sql_quote('non').") " ); } if ($abo['abo']) { $cmpt[$abo['abo']] ++; } } echo "<br />html : ".$cmpt['html']." <br />texte : ".$cmpt['texte']."<br />non : ".$cmpt['non']."<br />somme :".$nb_inscrits ; ecrire_meta('spiplistes_version', $current_version=1.96); } if ($current_version<1.97) { //spiplistes_debug_log("UPGRADE: current_version: $current_version"); echo "SpipListes Maj 1.97<br />"; include_spip('base/abstract_sql'); echo "regulariser les desabonnes avec listes...<br />"; $result = sql_select( "a.email,a.id_auteur" , "spip_auteurs AS a, spip_auteurs_listes AS l, spip_auteurs_elargis AS f" , array( "a.id_auteur=f.id_auteur" , "f.spip_listes_format=".sql_quote('non') , "a.id_auteur=l.id_auteur" , "a.statut!=".sql_quote('5poubelle' ) ) , array("email") ); // $nb_inscrits = sql_count($result); echo($nb_inscrits); while($res = sql_fetch($result)) { sql_delete("spip_auteurs_listes", "id_auteur =".sql_quote($res['id_auteur'])) ; } ecrire_meta('spiplistes_version', $current_version=1.97); } // end if ($current_version<1.97) if ($current_version<1.98) { echo "SpipListes Maj 1.98<br />"; include_spip('base/abstract_sql'); echo "regulariser l'index"; $table_nom = "spip_auteurs_elargis"; //ajout des index $desc = sql_showtable($table_nom,true); if($desc['key']['PRIMARY KEY']!='id'){ sql_alter("TABLE ".$table_nom." DROP PRIMARY KEY"); if(!isset($desc['fields']['id'])) { sql_alter("TABLE ".$table_nom." ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY"); } else { sql_alter("TABLE ".$table_nom." ADD PRIMARY KEY (id)"); } } if($desc['key']['KEY id_auteur']) { sql_alter("TABLE ".$table_nom." DROP INDEX id_auteur, ADD INDEX id_auteur (id_auteur)"); } else { sql_alter("TABLE ".$table_nom." ADD INDEX id_auteur (id_auteur)"); } ecrire_meta('spiplistes_version', $current_version=1.98); } spiplistes_ecrire_metas(); } // A partir de SPIP-Listes 1.98001, on se base sur le vrai numero de version de // la base, (plugin.xml: <version_base>) if($spiplistes_current_version_base < $spiplistes_real_version_base) { spiplistes_debug_log("UPGRADING DATABASE version_base: $spiplistes_current_version_base TO $spiplistes_real_version_base"); /* ... */ // ajouter au dessus de cette ligne les patches si besoin pour nouvelle version de la base // fin des ajouts de patches ecrire_meta('spiplistes_base_version', $spiplistes_current_version_base); spiplistes_ecrire_metas(); } return($spiplistes_current_version_base); }
### creation de la colonne cfg si absente ### // creation de la colonne 'cfg' sur spip_auteurs si elle n'existe pas. include_spip('base/abstract_sql'); $t = sql_showtable('spip_auteurs'); if (!isset($t['field']['cfg'])) { sql_alter('TABLE spip_auteurs ADD COLUMN cfg TEXT DEFAULT \'\' NOT NULL'); } ### creation de la colonne 'extra' si absente ### // creation de la colonne 'cfg' sur spip_auteurs si elle n'existe pas. include_spip('base/abstract_sql'); $t = sql_showtable('spip_rubriques'); if (!isset($t['field']['extra'])) { sql_alter('TABLE spip_rubriques ADD COLUMN extra TEXT DEFAULT \'\' NOT NULL'); } ### ecrire_config ### // les bases de test $assoc = array( 'one' => 'element 1', 'two' => 'element 2', 'three' => array('un'=>1, 'deux'=>2, 'troisc'=>"3") ); $serassoc = serialize($assoc); $essais = array();
/** * Mise à jour des bdd SQLite pour réparer les collation des champs texte * pour les passer en NOCASE * * @uses base_lister_toutes_tables() * @uses _sqlite_remplacements_definitions_table() **/ function maj_collation_sqlite() { include_spip('base/dump'); $tables = base_lister_toutes_tables(); // rien a faire si base non sqlite if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) !== 0) { return; } $trouver_table = charger_fonction('trouver_table', 'base'); // forcer le vidage de cache $trouver_table(''); // cas particulier spip_auteurs : retablir le collate binary sur le login $desc = $trouver_table("spip_auteurs"); spip_log("spip_auteurs : " . var_export($desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE); if (stripos($desc['field']['login'], "BINARY") === false) { spip_log("Retablir champ login BINARY sur table spip_auteurs", "maj"); sql_alter("table spip_auteurs change login login VARCHAR(255) BINARY"); $trouver_table(''); $new_desc = $trouver_table("spip_auteurs"); spip_log("Apres conversion spip_auteurs : " . var_export($new_desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE); } foreach ($tables as $table) { if (time() >= _TIME_OUT) { return; } if ($desc = $trouver_table($table)) { $desc_collate = _sqlite_remplacements_definitions_table($desc['field']); if ($d = array_diff($desc['field'], $desc_collate)) { spip_log("Table {$table} COLLATE incorrects", "maj"); // cas particulier spip_urls : // supprimer les doublons avant conversion sinon echec (on garde les urls les plus recentes) if ($table == 'spip_urls') { // par date DESC pour conserver les urls les plus recentes $data = sql_allfetsel("*", "spip_urls", '', '', 'date DESC'); $urls = array(); foreach ($data as $d) { $key = $d['id_parent'] . "::" . strtolower($d['url']); if (!isset($urls[$key])) { $urls[$key] = true; } else { spip_log("Suppression doublon dans spip_urls avant conversion : " . serialize($d), "maj." . _LOG_INFO_IMPORTANTE); sql_delete("spip_urls", "id_parent=" . sql_quote($d['id_parent']) . " AND url=" . sql_quote($d['url'])); } } } foreach ($desc['field'] as $field => $type) { if ($desc['field'][$field] !== $desc_collate[$field]) { spip_log("Conversion COLLATE table {$table}", "maj." . _LOG_INFO_IMPORTANTE); sql_alter("table {$table} change {$field} {$field} " . $desc_collate[$field]); $trouver_table(''); $new_desc = $trouver_table($table); spip_log("Apres conversion {$table} : " . var_export($new_desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE); continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite } } } } } // forcer le vidage de cache $trouver_table(''); }
function verifier_colonne($creer = false) { $col = sql_showtable($table = $this->param->table); if (!array_key_exists($colonne = $this->param->colonne, $col['field'])) { if (!$creer) { return false; } if (!sql_alter("TABLE " . $table . " ADD " . $colonne . " TEXT DEFAULT ''")) { spip_log("CFG (ecrire_config) n'a pas reussi a creer automatiquement la colonne " . $colonne . " dans la table " . $table . "."); return false; } spip_log("CFG (ecrire_config) a cree automatiquement la colonne " . $colonne . " dans la table " . $table . "."); } return true; }
/** * fermer la connection depuis le site distant * quand on a fini * * @param array $status * @param array $data * @return bool */ function migration_reception_end_dist($status, $data){ spip_log('fin de migration. Resultat:'.var_export($data,1),'migration'); $status['status'] = 'end'; if ($data['status']=='abort'){ $status = abandonner_migration_depuis($status); } else { // s'assurer que l'auteur qui migre est bien webmestre a l'arrivee $id_webmestre = $data['id_webmestre']; include_spip('base/abstract_sql'); $row = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_webmestre)); if ($row AND $row['statut']=='0minirezo'){ // y a-t-il un champ webmestre dans la base ? if (!isset($row['webmestre'])){ sql_alter("TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL"); $row['webmestre']='non'; } if ($row['webmestre']!='oui'){ sql_updateq("spip_auteurs",array('webmestre'=>'oui'),'id_auteur='.intval($id_webmestre)); } } } if ((count($status['ignore']) OR count($data['errors'])) AND defined('_MIGRATION_EMAIL_NOTIFY_IGNORE') AND $email = _MIGRATION_EMAIL_NOTIFY_IGNORE){ $sujet = "[Migration-ERR] ".$GLOBALS['meta']['adresse_site']; $texte = ""; if (count($status['ignore'])) $texte .= var_export($status['ignore'],true); if (count($data['errors'])) $texte .= implode("\n",$data['errors']); job_queue_add('envoyer_mail','Erreur migration',array($email, $sujet, $texte),'inc/'); } update_migration_depuis($status); finir_migration_status_depuis(); // si on a pas d'upgrade a suivre, vidons les cache $version_installee = sql_getfetsel('valeur','spip_meta',"nom='version_installee'"); if ($GLOBALS['spip_version']==$version_installee) { // supprimer les cache pour forcer la mise a jour du site include_spip('inc/invalideur'); spip_log("purger le site","migration"); supprime_invalideurs(); @spip_unlink(_CACHE_RUBRIQUES); @spip_unlink(_CACHE_PIPELINES); @spip_unlink(_CACHE_PLUGINS_PATH); @spip_unlink(_CACHE_PLUGINS_OPT); @spip_unlink(_CACHE_PLUGINS_FCT); @spip_unlink(_CACHE_PLUGINS_VERIF); @spip_unlink(_CACHE_CHEMIN); #purger_repertoire(_DIR_CACHE,array('subdir'=>true)); #purger_repertoire(_DIR_AIDE); purger_repertoire(_DIR_VAR.'cache-css'); purger_repertoire(_DIR_VAR.'cache-js'); } @spip_unlink(_FILE_META); // on renvoit le bilan pour affichage sur le site source return $status; }
function install_etape_3b_dist() { $login = _request('login'); $email = _request('email'); $nom = _request('nom'); $pass = _request('pass'); $pass_verif = _request('pass_verif'); $server_db = defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : _request('server_db'); if (!defined('_PASS_LONGUEUR_MINI')) { define('_PASS_LONGUEUR_MINI', 6); } if (!defined('_LOGIN_TROP_COURT')) { define('_LOGIN_TROP_COURT', 4); } if ($login) { $echec = $pass != $pass_verif ? _T('info_passes_identiques') : (strlen($pass) < _PASS_LONGUEUR_MINI ? _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)) : (strlen($login) < _LOGIN_TROP_COURT ? _T('info_login_trop_court') : '')); include_spip('inc/filtres'); if (!$echec and $email and !email_valide($email)) { $echec = _T('form_email_non_valide'); } if ($echec) { echo minipres('AUTO', info_progression_etape(3, 'etape_', 'install/', true) . "<div class='error'><h3>{$echec}</h3>\n" . "<p>" . _T('avis_connexion_echec_2') . "</p>" . "</div>"); exit; } } if (@file_exists(_FILE_CHMOD_TMP)) { include _FILE_CHMOD_TMP; } else { redirige_url_ecrire('install'); } if (!@file_exists(_FILE_CONNECT_TMP)) { redirige_url_ecrire('install'); } # maintenant on connait le vrai charset du site s'il est deja configure # sinon par defaut lire_meta reglera _DEFAULT_CHARSET # (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET) lire_metas(); if ($login) { include_spip('inc/charsets'); $nom = importer_charset($nom, _DEFAULT_CHARSET); $login = importer_charset($login, _DEFAULT_CHARSET); $email = importer_charset($email, _DEFAULT_CHARSET); # pour le passwd, bizarrement il faut le convertir comme s'il avait # ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js $pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1'); include_spip('auth/sha256.inc'); include_spip('inc/acces'); $htpass = generer_htpass($pass); $alea_actuel = creer_uniqid(); $alea_futur = creer_uniqid(); $shapass = _nano_sha256($alea_actuel . $pass); // prelablement, creer le champ webmestre si il n'existe pas (install neuve // sur une vieille base $t = sql_showtable("spip_auteurs", true); if (!isset($t['field']['webmestre'])) { @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL"); } $id_auteur = sql_getfetsel("id_auteur", "spip_auteurs", "login="******"nom" => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'htpass' => $htpass, 'statut' => '0minirezo'), "id_auteur={$id_auteur}"); } else { $id_auteur = sql_insertq('spip_auteurs', array('nom' => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'htpass' => $htpass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'statut' => '0minirezo')); } // le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne @sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur={$id_auteur}"); // inserer email comme email webmaster principal // (sauf s'il est vide: cas de la re-installation) if ($email) { ecrire_meta('email_webmaster', $email); } // Connecter directement celui qui vient de (re)donner son login // mais sans cookie d'admin ni connexion longue include_spip('inc/auth'); if (!($auteur = auth_identifier_login($login, $pass)) or !auth_loger($auteur, true)) { spip_log("login automatique impossible {$auth_spip} {$session}" . count($row)); } } // installer les metas $config = charger_fonction('config', 'inc'); $config(); // activer les plugins // leur installation ne peut pas se faire sur le meme hit, il faudra donc // poursuivre au hit suivant include_spip('inc/plugin'); actualise_plugins_actifs(); include_spip('inc/distant'); redirige_par_entete(parametre_url(self(), 'etape', '4', '&')); }
/** * @return string */ function spiplistes_base_creer () { //spiplistes_debug_log("spiplistes_base_creer()"); global $tables_principales; // demande a SPIP de creer les tables (base/create.php) include_spip('base/create'); include_spip('base/abstract_sql'); include_spip('base/db_mysql'); include_spip('base/spiplistes_tables'); creer_base(); $descauteurs = sql_showtable('spip_auteurs_elargis',true); if(!isset($descauteurs['field']['spip_listes_format'])){ // si la table spip_auteurs_elargis existe déjà sql_alter("TABLE spip_auteurs_elargis ADD `spip_listes_format` VARCHAR(8) DEFAULT 'non' NOT NULL"); } spiplistes_log("INSTALL: database creation"); $spiplistes_base_version = spiplistes_real_version_base_get(_SPIPLISTES_PREFIX); ecrire_meta('spiplistes_base_version', $spiplistes_base_version); spiplistes_ecrire_metas(); $spiplistes_base_version = $GLOBALS['meta']['spiplistes_base_version']; return($spiplistes_base_version); }
function maj_11790 () { # sql_alter('TABLE spip_forum DROP INDEX id_message id_message'); sql_alter('TABLE spip_forum ADD INDEX id_parent (id_parent)'); sql_alter('TABLE spip_forum ADD INDEX id_auteur (id_auteur)'); sql_alter('TABLE spip_forum ADD INDEX id_thread (id_thread)'); }