Server : Apache System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64 User : hednacluml ( 122243) PHP Version : 8.3.9 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/hednacluml/ecrire/ecrire/genie/ |
<?php /***************************************************************************\ * SPIP, Système de publication pour l'internet * * * * Copyright © avec tendresse depuis 2001 * * Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribué sous licence GNU/GPL. * \***************************************************************************/ /** * Gestion des différentes tâches de maintenance * * @package SPIP\Core\Genie\Maintenance */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Diverses tâches de maintenance * * - (re)mettre .htaccess avec 'Deny from all' * dans les deux répertoires dits inaccessibles par http * - Vérifier qu'aucune table ne s'est crashée * * @uses verifier_htaccess() * @uses verifier_crash_tables() * * @param object $t * @return bool Toujours à true. */ function genie_maintenance_dist($t) { // (re)mettre .htaccess avec deny from all // dans les deux repertoires dits inaccessibles par http include_spip('inc/acces'); verifier_htaccess(_DIR_ETC); verifier_htaccess(_DIR_TMP); verifier_htaccess(_DIR_VENDOR); // Verifier qu'aucune table n'est crashee if (!_request('reinstall')) { verifier_crash_tables(); } return 1; } /** * Vérifier si une table a crashé * * Pour cela, on vérifie si on peut se connecter à la base de données. * * @see message_crash_tables() * * @return bool|array * Si pas de table de crashée, on retourne `false`. * Sinon, retourne un tableau contenant tous les noms * des tables qui ont crashé. */ function verifier_crash_tables() { if (spip_connect()) { include_spip('base/serial'); include_spip('base/auxiliaires'); $crash = []; foreach (['tables_principales', 'tables_auxiliaires'] as $com) { foreach ($GLOBALS[$com] as $table => $desc) { if ( !sql_select('*', $table, '', '', '', 1) and !defined('spip_interdire_cache') ) { # cas "LOST CONNECTION" $crash[] = $table; } } } #$crash[] = 'test'; if ($crash) { ecrire_meta('message_crash_tables', serialize($crash)); spip_log('crash des tables', 'err'); spip_log($crash, 'err'); } else { effacer_meta('message_crash_tables'); } return $crash; } return false; } /** * Vérifier si une table a crashé et crée un message en conséquence. * * S'il y a un crash, on affiche un message avec le nom * de la ou des tables qui ont crashé. * On génère un lien vers la page permettant la * réparation de la base de données. * * @uses verifier_crash_tables() * * @return string */ function message_crash_tables() { if ($crash = verifier_crash_tables()) { return '<strong>' . _T('texte_recuperer_base') . '</strong><br />' . ' <tt>' . join(', ', $crash) . '</tt><br />' . generer_form_ecrire( 'base_repair', _T('texte_crash_base'), '', _T('bouton_tenter_recuperation') ); } return ''; }