Exemplo n.º 1
0
Arquivo: v012.php Projeto: nursit/SPIP
function maj_v012_dist($version_installee, $version_cible)
{
    // Correction de l'oubli des modifs creations depuis 1.04
    if (upgrade_vers(1.204, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_articles ADD accepter_forum VARCHAR(3) NOT NULL");
        spip_query("ALTER TABLE spip_forum ADD id_message bigint(21) NOT NULL");
        spip_query("ALTER TABLE spip_forum ADD INDEX id_message (id_message)");
        spip_query("ALTER TABLE spip_auteurs ADD en_ligne datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
        spip_query("ALTER TABLE spip_auteurs ADD imessage VARCHAR(3) not null");
        spip_query("ALTER TABLE spip_auteurs ADD messagerie VARCHAR(3) not null");
        maj_version(1.204);
    }
    if (upgrade_vers(1.207, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_rubriques DROP INDEX id_rubrique");
        spip_query("ALTER TABLE spip_rubriques ADD INDEX id_parent (id_parent)");
        spip_query("ALTER TABLE spip_rubriques ADD statut VARCHAR(10) NOT NULL");
        // Declencher le calcul des rubriques publiques
        include_spip('inc/rubriques');
        calculer_rubriques();
        maj_version(1.207);
    }
    if (upgrade_vers(1.208, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_auteurs_messages CHANGE forum vu CHAR(3) NOT NULL");
        spip_query("UPDATE spip_auteurs_messages SET vu='oui'");
        spip_query("UPDATE spip_auteurs_messages SET vu='non' WHERE statut='a'");
        spip_query("ALTER TABLE spip_messages ADD id_auteur bigint(21) NOT NULL");
        spip_query("ALTER TABLE spip_messages ADD INDEX id_auteur (id_auteur)");
        $result = spip_query("SELECT id_auteur, id_message FROM spip_auteurs_messages WHERE statut='de'");
        while ($row = sql_fetch($result)) {
            $id_auteur = $row['id_auteur'];
            $id_message = $row['id_message'];
            spip_query("UPDATE spip_messages SET id_auteur={$id_auteur} WHERE id_message={$id_message}");
        }
        spip_query("ALTER TABLE spip_auteurs_messages DROP statut");
        maj_version(1.208);
    }
    if (upgrade_vers(1.209, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_syndic ADD maj TIMESTAMP");
        spip_query("ALTER TABLE spip_syndic_articles ADD maj TIMESTAMP");
        spip_query("ALTER TABLE spip_messages ADD maj TIMESTAMP");
        maj_version(1.209);
    }
    if (upgrade_vers(1.21, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_messages DROP page");
        stripslashes_base('spip_articles', array('surtitre', 'titre', 'soustitre', 'descriptif', 'chapo', 'texte', 'ps'));
        stripslashes_base('spip_auteurs', array('nom', 'bio', 'nom_site'));
        stripslashes_base('spip_breves', array('titre', 'texte', 'lien_titre'));
        stripslashes_base('spip_forum', array('titre', 'texte', 'auteur', 'nom_site'));
        stripslashes_base('spip_messages', array('titre', 'texte'));
        stripslashes_base('spip_mots', array('type', 'titre', 'descriptif', 'texte'));
        stripslashes_base('spip_petitions', array('texte'));
        stripslashes_base('spip_rubriques', array('titre', 'descriptif', 'texte'));
        stripslashes_base('spip_signatures', array('nom_email', 'nom_site', 'message'));
        stripslashes_base('spip_syndic', array('nom_site', 'descriptif'));
        stripslashes_base('spip_syndic_articles', array('titre', 'lesauteurs'));
        maj_version(1.21);
    }
}
Exemplo n.º 2
0
/**
 * Action de réparation de la base de données
 *
 * Tente de réparer les tables, recalcule les héritages et secteurs
 * de rubriques. Affiche les erreurs s'il y en a eu.
 *
 * @pipeline_appel base_admin_repair
 * @uses admin_repair_tables()
 * @uses calculer_rubriques()
 * @uses propager_les_secteurs()
 *
 * @param string $titre Inutilisé
 * @param string $reprise Inutilisé
 **/
function base_repair_dist($titre = '', $reprise = '')
{
    $res = admin_repair_tables();
    if (!$res) {
        $res = "<div class='error'>" . _T('avis_erreur_mysql') . ' ' . sql_errno() . ': ' . sql_error() . "</div>\n";
    } else {
        include_spip('inc/rubriques');
        calculer_rubriques();
        propager_les_secteurs();
    }
    include_spip('inc/minipres');
    $res .= pipeline('base_admin_repair', $res);
    echo minipres(_T('texte_tentative_recuperation'), $res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site')));
}
Exemplo n.º 3
0
/**
 * On arrive ici depuis inc/admin
 * - au lancement
 * - puis apres chaque timeout avec dans ce cas $reprise=true
 *
 * import_all_debut() est appele la premiere fois et initialise le dump
 * import_all_milieu() est appele a chaque retour ici
 * quand on en sort,
 *	- soit on relance pour la seconde etape de fusion
 *  - soit on finit
 *
 * @param string $titre
 * @param bool $reprise
 */
function base_import_all_dist($titre='', $reprise=false)
{
	if (!$titre) return; // anti-testeur automatique
	if (!$reprise) import_all_debut();

	$request = unserialize($GLOBALS['meta']['import_all']);

	$archive = $request['dir'] . 
	($request['archive'] ? $request['archive'] : $request['archive_perso']);
	// au rappel, on commence (voire on continue)
	@ini_set("zlib.output_compression","0"); // pour permettre l'affichage au fur et a mesure

	include_spip('inc/import');
	@ignore_user_abort(1);

	$commencer_page = charger_fonction('commencer_page', 'inc');
	echo $commencer_page($titre, "accueil", "accueil");

	echo debut_gauche('', true);

	echo debut_droite('', true);
	
	$res = import_all_milieu($request, $archive);

	// Cas particulier de la fusion/insertion :
	// a la fin de la premiere passe on relance pour l'etape suivante
	if (!$res AND $request['insertion'] == 'on') {
		$request['insertion'] = 'passe2';
		if ($request['url_site']
		AND substr($request['url_site'],-1) != '/')
			$request['url_site'] .= '/';
		ecrire_meta("import_all", serialize($request),'non');
		import_all_debut();
		$res = import_all_milieu($request, $archive);
	}

	echo $res, "</body></html>\n";

	if ($charset = $GLOBALS['meta']['charset_restauration']) {
			ecrire_meta('charset', $charset);
	}

	detruit_restaurateur();
	import_all_fin($request);
	include_spip('inc/rubriques');
	calculer_rubriques();
	if (!$res) ecrire_acces();	// Mise a jour du fichier htpasswd
	affiche_progression_javascript('100 %', 0, '', $request['retour']);
}
Exemplo n.º 4
0
function base_admin_repair_dist($titre='', $reprise='') {

	$f = sql_repair('repair', NULL, true);
	if ($f) {
		$res = admin_repair_tables();
	} else {
		if ($titre)
		  spip_log("Pas d'instruction REPAIR dans ce serveur SQL");
		$res = '     ';
	}

	if (!$res) {
		$res = "<br /><br /><span style='color: red; font-weight: bold;'><tt>"._T('avis_erreur_mysql').' '.sql_errno().': '.sql_error() ."</tt></span><br /><br /><br />\n";
	} else {
		include_spip('inc/rubriques');
		calculer_rubriques();
		propager_les_secteurs();
	}
	include_spip('inc/minipres');
	$res .= pipeline('base_admin_repair',$res);
	$res .= admin_repair_plat();
	echo minipres(_T('texte_tentative_recuperation'),
			$res . generer_form_ecrire('accueil', '','',_T('public:accueil_site')));
}
Exemplo n.º 5
0
/**
 * Mises à jour de SPIP n°018
 *
 * @param float $version_installee Version actuelle
 * @param float $version_cible Version de destination
 **/
function maj_v018_dist($version_installee, $version_cible)
{
    if (upgrade_vers(1.801, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_rubriques\tADD statut_tmp VARCHAR(10) NOT NULL,\tADD date_tmp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
        include_spip('inc/rubriques');
        calculer_rubriques();
        maj_version(1.801);
    }
    // Nouvelles tables d'invalidation
    if (upgrade_vers(1.802, $version_installee, $version_cible)) {
        spip_query("DROP TABLE spip_id_article_caches");
        spip_query("DROP TABLE spip_id_auteur_caches");
        spip_query("DROP TABLE spip_id_breve_caches");
        spip_query("DROP TABLE spip_id_document_caches");
        spip_query("DROP TABLE spip_id_forum_caches");
        spip_query("DROP TABLE spip_id_groupe_caches");
        spip_query("DROP TABLE spip_id_message_caches");
        spip_query("DROP TABLE spip_id_mot_caches");
        spip_query("DROP TABLE spip_id_rubrique_caches");
        spip_query("DROP TABLE spip_id_signature_caches");
        spip_query("DROP TABLE spip_id_syndic_article_caches");
        spip_query("DROP TABLE spip_id_syndic_caches");
        spip_query("DROP TABLE spip_id_type_caches");
        spip_query("DROP TABLE spip_inclure_caches");
        maj_version(1.802);
    }
    if (upgrade_vers(1.803, $version_installee, $version_cible)) {
        #	27 AOUT 2004 : conservons cette table pour autoriser les retours
        #	de SPIP 1.8a6 CVS vers 1.7.2
        #	spip_query("DROP TABLE spip_forum_cache");
        spip_query("DROP TABLE spip_inclure_caches");
        maj_version(1.803);
    }
    if (upgrade_vers(1.804, $version_installee, $version_cible)) {
        // recreer la table spip_caches
        spip_query("DROP TABLE spip_caches");
        creer_base();
        maj_version(1.804);
    }
    /**
     * Recalculer tous les threads
     *
     * Fonction du plugin forum recopiee ici pour assurer la montee
     * de version dans tous les cas de figure
     **/
    function maj_v018_calculer_threads()
    {
        // fixer les id_thread des debuts de discussion
        sql_update('spip_forum', array('id_thread' => 'id_forum'), "id_parent=0");
        // reparer les messages qui n'ont pas l'id_secteur de leur parent
        do {
            $discussion = "0";
            $precedent = 0;
            $r = sql_select("fille.id_forum AS id,\tmaman.id_thread AS thread", 'spip_forum AS fille, spip_forum AS maman', "fille.id_parent = maman.id_forum AND fille.id_thread <> maman.id_thread", '', "thread");
            while ($row = sql_fetch($r)) {
                if ($row['thread'] == $precedent) {
                    $discussion .= "," . $row['id'];
                } else {
                    if ($precedent) {
                        sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ({$discussion})");
                    }
                    $precedent = $row['thread'];
                    $discussion = $row['id'];
                }
            }
            sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ({$discussion})");
        } while ($discussion != "0");
    }
    if (upgrade_vers(1.805, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_forum ADD id_thread bigint(21) DEFAULT '0' NOT NULL");
        maj_v018_calculer_threads();
        maj_version(1.805);
    }
    // tables d'orthographe
    #if ($version_installee < 1.806)
    #	maj_version(1.806);
    // URLs propres (inc_version = 0.12)
    if (upgrade_vers(1.807, $version_installee, $version_cible)) {
        foreach (array('articles', 'breves', 'rubriques', 'mots') as $objets) {
            spip_query("ALTER TABLE spip_{$objets} ADD url_propre VARCHAR(255) NOT NULL");
            spip_query("ALTER TABLE spip_{$objets} ADD INDEX url_propre (url_propre)");
        }
        maj_version(1.807);
    }
    // referers de la veille
    if (upgrade_vers(1.808, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_referers ADD visites_veille INT UNSIGNED NOT NULL");
        maj_version(1.808);
    }
    // corrections diverses
    if (upgrade_vers(1.809, $version_installee, $version_cible)) {
        // plus de retour possible vers 1.7.2
        spip_query("DROP TABLE spip_forum_cache");
        // les requetes ci-dessous ne s'appliqueront que si on est passe
        // par une certaine version de developpement - oublie de le faire
        // plus tot, car le code d'alors recreait purement et simplement
        // cette table
        spip_query("ALTER TABLE spip_versions DROP chapo");
        spip_query("ALTER TABLE spip_versions DROP texte");
        spip_query("ALTER TABLE spip_versions DROP ps");
        spip_query("ALTER TABLE spip_versions DROP extra");
        spip_query("ALTER TABLE spip_versions ADD champs text NOT NULL");
        maj_version(1.809);
    }
    // Annuler les brouillons de forum jamais valides
    if (upgrade_vers(1.81, $version_installee, $version_cible)) {
        sql_delete("spip_forum", "statut='redac'");
        maj_version(1.81);
    }
    if (upgrade_vers(1.811, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_syndic ADD extra longblob NULL");
        maj_version(1.811);
    }
    if (upgrade_vers(1.812, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_documents ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL");
        maj_version(1.812);
    }
    // Mise a jour des types MIME
    if (upgrade_vers(1.813, $version_installee, $version_cible)) {
        # rien a faire car c'est creer_base() qui s'en charge
        maj_version(1.813);
    }
    // URLs propres auteurs
    if (upgrade_vers(1.814, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_auteurs ADD url_propre VARCHAR(255) NOT NULL");
        spip_query("ALTER TABLE spip_auteurs ADD INDEX url_propre (url_propre)");
        maj_version(1.814);
    }
    // Mots-cles sur les documents
    // + liens documents <-> sites et articles syndiques (podcasting)
    if (upgrade_vers(1.815, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_documents\tADD distant VARCHAR(3) DEFAULT 'non'");
        maj_version(1.815);
    }
    // Indexation des documents (rien a faire sauf reinstaller inc_auxbase)
    if (upgrade_vers(1.816, $version_installee, $version_cible)) {
        maj_version(1.816);
    }
    // Texte et descriptif des groupes de mots-cles
    if (upgrade_vers(1.817, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_groupes_mots ADD descriptif text NOT NULL AFTER titre");
        spip_query("ALTER TABLE spip_groupes_mots ADD COLUMN texte longblob NOT NULL AFTER descriptif");
        maj_version(1.817);
    }
    // Conformite des noms de certains champs (0minirezo => minirezo)
    if (upgrade_vers(1.818, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 0minirezo minirezo char(3) NOT NULL");
        spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 1comite comite char(3) NOT NULL");
        spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 6forum forum char(3) NOT NULL");
        maj_version(1.818);
    }
    // Options de syndication : miroir + oubli
    if (upgrade_vers(1.819, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_syndic ADD miroir VARCHAR(3) DEFAULT 'non'");
        spip_query("ALTER TABLE spip_syndic ADD oubli VARCHAR(3) DEFAULT 'non'");
        maj_version(1.819);
    }
    // Un bug dans les 1.730 (il manquait le "ADD")
    if (upgrade_vers(1.82, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_articles ADD INDEX idx (idx)");
        spip_query("ALTER TABLE spip_auteurs ADD INDEX idx (idx)");
        spip_query("ALTER TABLE spip_breves ADD INDEX idx (idx)");
        spip_query("ALTER TABLE spip_mots ADD INDEX idx (idx)");
        spip_query("ALTER TABLE spip_rubriques ADD INDEX idx (idx)");
        spip_query("ALTER TABLE spip_syndic ADD INDEX idx (idx)");
        spip_query("ALTER TABLE spip_forum ADD INDEX idx (idx)");
        spip_query("ALTER TABLE spip_signatures ADD INDEX idx (idx)");
        maj_version(1.82);
    }
    // reindexer les articles (on avait oublie les auteurs)
    if (upgrade_vers(1.821, $version_installee, $version_cible)) {
        spip_query("UPDATE spip_articles SET idx='1' WHERE idx='oui'");
        maj_version(1.821);
    }
    // le 'type' des mots doit etre du texte, sinon on depasse en champ multi
    if (upgrade_vers(1.822, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_mots DROP INDEX type");
        spip_query("ALTER TABLE spip_mots CHANGE type type TEXT NOT NULL");
        maj_version(1.822);
    }
    // ajouter une table de fonctions pour ajax
    if (upgrade_vers(1.825, $version_installee, $version_cible)) {
        maj_version(1.825);
    }
    if (upgrade_vers(1.826, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_ajax_fonc DROP fonction");
        maj_version(1.826);
    }
}