Ejemplo n.º 1
0
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?');
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
/**
 * 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);
}
Ejemplo n.º 6
0
/**
 * 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);
}
Ejemplo n.º 8
0
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);
    }
}
Ejemplo n.º 9
0
/**
 * 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);
}
Ejemplo n.º 12
0
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');				
		}
	}
}
Ejemplo n.º 13
0
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;

}
Ejemplo n.º 14
0
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;
		}

	}
}
Ejemplo n.º 15
0
Archivo: v019.php Proyecto: nursit/SPIP
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()');
    }
}
Ejemplo n.º 16
0
	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');
	}
Ejemplo n.º 17
0
/**
 * 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();
    }
}
Ejemplo n.º 18
0
Archivo: create.php Proyecto: JLuc/SPIP
/**
 * 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;
        }
    }
}
Ejemplo n.º 19
0
/**
 * 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;
}
Ejemplo n.º 20
0
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');
}
Ejemplo n.º 21
0
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;
}
Ejemplo n.º 22
0
/**
 * 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");
		}
	}	
}
Ejemplo n.º 23
0
/**
 * 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);
}
Ejemplo n.º 24
0
### 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();
Ejemplo n.º 25
0
/**
 * 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('');
}
Ejemplo n.º 26
0
 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;
 }
Ejemplo n.º 27
0
/**
 * 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;
}
Ejemplo n.º 28
0
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', '&'));
}
Ejemplo n.º 29
0
/**
 * @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);
}
Ejemplo n.º 30
0
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)');
}