3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2019 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
14 * Gestion des différentes tâches de maintenance
16 * @package SPIP\Core\Genie\Maintenance
19 if (!defined('_ECRIRE_INC_VERSION')) {
24 * Diverses tâches de maintenance
26 * - (re)mettre .htaccess avec 'Deny from all'
27 * dans les deux répertoires dits inaccessibles par http
28 * - Vérifier qu'aucune table ne s'est crashée
30 * @uses verifier_htaccess()
31 * @uses verifier_crash_tables()
34 * @return bool Toujours à true.
36 function genie_maintenance_dist($t) {
38 // (re)mettre .htaccess avec deny from all
39 // dans les deux repertoires dits inaccessibles par http
40 include_spip('inc/acces');
41 verifier_htaccess(_DIR_ETC
);
42 verifier_htaccess(_DIR_TMP
);
44 // Verifier qu'aucune table n'est crashee
45 if (!_request('reinstall')) {
46 verifier_crash_tables();
54 * Vérifier si une table a crashé
56 * Pour cela, on vérifie si on peut se connecter à la base de données.
58 * @see message_crash_tables()
61 * Si pas de table de crashée, on retourne `false`.
62 * Sinon, retourne un tableau contenant tous les noms
63 * des tables qui ont crashé.
65 function verifier_crash_tables() {
67 include_spip('base/serial');
68 include_spip('base/auxiliaires');
70 foreach (array('tables_principales', 'tables_auxiliaires') as $com) {
71 foreach ($GLOBALS[$com] as $table => $desc) {
72 if (!sql_select('*', $table, '', '', '', 1)
73 and !defined('spip_interdire_cache')
74 ) # cas "LOST CONNECTION"
82 ecrire_meta('message_crash_tables', serialize($crash));
83 spip_log('crash des tables', 'err');
84 spip_log($crash, 'err');
86 effacer_meta('message_crash_tables');
96 * Vérifier si une table a crashé et crée un message en conséquence.
98 * S'il y a un crash, on affiche un message avec le nom
99 * de la ou des tables qui ont crashé.
100 * On génère un lien vers la page permettant la
101 * réparation de la base de données.
103 * @uses verifier_crash_tables()
107 function message_crash_tables() {
108 if ($crash = verifier_crash_tables()) {
110 '<strong>' . _T('texte_recuperer_base') . '</strong><br />'
111 . ' <tt>' . join(', ', $crash) . '</tt><br />'
112 . generer_form_ecrire('base_repair',
113 _T('texte_crash_base'), '',
114 _T('bouton_tenter_recuperation'));