<?php

if (!defined('_ECRIRE_INC_VERSION')) {
    return;
}

function mutualiser_upgrade()
{
    define('_DOCTYPE_ECRIRE', ''); # on n'a pas lance spip_initialisation_suite() donc cette constante n'est pas definie
    include_spip('inc/minipres');

    // verif securite
    if (_request('secret')
        != md5(
            $GLOBALS['meta']['version_installee'].'-'.$GLOBALS['meta']['popularite_total']
        )) {
        include_spip('inc/headers');
        redirige_par_entete($GLOBALS['meta']['adresse_site'].'/'._DIR_RESTREINT_ABS);
        exit;
    }

    if ($GLOBALS['spip_version_base'] == str_replace(',', '.', $GLOBALS['meta']['version_installee'])) {
        include_spip('inc/headers');
        redirige_par_entete($GLOBALS['meta']['adresse_site'].'/'._DIR_RESTREINT_ABS);
        exit;
    }

    // faire l'upgrade
    $old = $GLOBALS['meta']['version_installee'];
    $base = charger_fonction('upgrade', 'base');
    $base('upgrade', false);
    lire_metas();
    $new = $GLOBALS['meta']['version_installee'];
    if ($old == $new
    or $new != $GLOBALS['spip_version_base']) {
        echo minipres(
            _T('titre_page_upgrade'),
            _L('Erreur de mise &#224; jour de @old@ vers @new@', array('old' => $old, 'new' => $new))
        );
    } else {
        echo minipres(
            _T('titre_page_upgrade'),
            _L('La base de donn&#233;es a &#233;t&#233; mise &#224; jour de @old@ vers @new@', array('old' => $old, 'new' => $new))
        );
        // Installer les plugins
        include_spip('inc/plugin');
        actualise_plugins_actifs();
        effacer_meta('plugin_erreur_activation');
        ecrire_metas();
        installe_plugins();
        // vider tmp et recreer tmp/meta_cache.php
        include_spip('inc/invalideur');
        purger_repertoire(_DIR_TMP);
        ecrire_metas();
        echo minipres(
            _T('titre_page_upgrade'),
            _L('Aller dans <a href="@ecrire@">ecrire/</a>', array('ecrire' => $GLOBALS['meta']['adresse_site'].'/'._DIR_RESTREINT_ABS))
        );
    }
    exit;
}
