<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2019 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Gestion d'affichage de la page de réparation de la base de données
*
* ## REMARQUE IMPORTANTE : SÉCURITÉ
*
* Ce systeme de réparation doit pouvoir fonctionner même si
* la table spip_auteurs est en panne : index.php n'appelle donc pas
* inc_auth ; seule l'authentification FTP est exigée.
*
* @package SPIP\Core\Exec
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Réparer la base de données
*/
function exec_base_repair_dist() {
$ok = false;
if (!spip_connect()) {
$message = _T('titre_probleme_technique');
} else {
$version_sql = sql_version();
if (!$version_sql) {
$message = _T('avis_erreur_connexion_mysql');
} else {
$message = _T('texte_requetes_echouent');
$ok = true;
}
$action = _T('texte_tenter_reparation');
}
if ($ok) {
Rendre surchargeable la fonction d'authentification hors HTTP inc_admin.
Interface: cette fonction reçoit comme premier argument un nom et demande la création d'un répertoire déduit de ce nom et de l'heure, et relance le script. Si le répertoire existe déjà (au 2e appel normalement) elle mémorise dans la table spip_meta le $REQUEST ayant provoqué l'appel, cette méta étant nommée également par le premier argument. Elle effectue ensuite un charger_fonction sur ce nom et le répertoire {{{base}}} (car ces actions concernent toujours la base de donnnées: upgrade, delete_all, convert_utf8, admin_repair). En cas d'interruption du script, tester la présence de telles variables au niveau de ecrire/index.php permet de s'apercevoir de l'interruption, et de reprendre le travail avec les valeurs transmises dans $_REQUEST lors du premier appel (n'est utilisé actuellement que pour import_all). Lorsque la fonction chargée a fini le travail, la meta et le repertoire sont supprimés.
La fonction inc_admin admet 3 arguments supplémentaires optionnels: le titre de la page, un texte preliminaire expliquant l'action entreprise après création du répertoire, et une URL de retour.
Au passage, ajout de la destruction du cache du menu des rubriques dans l'action de purge des caches, sinon on croit que l'action convert_utf8 n'a pas marché.
La rationnalisation des noms induit donc que la meta "debut_restauration" se nomme à présent "import_all", et "conversion_charset" se nomme "convert_utf8; cet arbitraire ne devrait avoir aucune conséquence.
Il reste un cas d'appel de debut_admin en dehors de ce schéma, lié au passage inachevé en plugin de la gestion du vieux htpassword.
16 years ago
$admin = charger_fonction('admin', 'inc');
echo $admin('repair', $action, $message, true);
} else {
include_spip('inc/minipres');
echo minipres(_T('titre_reparation'), "< p > $message< / p > ");
}
}