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/ecole/ecrire/base/ |
<?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. * \***************************************************************************/ /** * Réparation de la base de données * * @package SPIP\Core\SQL\Reparation */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * 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')) ); } /** * Exécute une réparation de la base de données * * Crée les tables et les champs manquants. * Applique sur les tables un REPAIR en SQL (si le serveur SQL l'accepte). * * @return string * Code HTML expliquant les actions réalisées **/ function admin_repair_tables() { $repair = sql_serveur('repair', '', true); // recreer les tables manquantes eventuelles include_spip('base/create'); creer_base(); $tables = sql_alltable(); $res = ''; foreach ($tables as $tab) { $class = ''; $m = "<strong>$tab</strong> "; spip_log("Repare $tab", _LOG_INFO_IMPORTANTE); // supprimer la meta avant de lancer la reparation // car le repair peut etre long ; on ne veut pas boucler effacer_meta('admin_repair'); if ($repair) { $result_repair = sql_repair($tab); if (!$result_repair) { return false; } } // essayer de maj la table (creation de champs manquants) maj_tables($tab); $count = sql_countsel($tab); if ($count > 1) { $m .= '(' . _T('texte_compte_elements', ['count' => $count]) . ")\n"; } else { if ($count == 1) { $m .= '(' . _T('texte_compte_element', ['count' => $count]) . ")\n"; } else { $m .= '(' . _T('texte_vide') . ")\n"; } } if ( $repair and $result_repair and $msg = join( ' ', (is_resource($result_repair) or is_object($result_repair)) ? sql_fetch($result_repair) : $result_repair ) . ' ' and !str_contains($msg, ' OK ') ) { $class = " class='notice'"; $m .= '<br /><tt>' . spip_htmlentities($msg) . "</tt>\n"; } else { $m .= ' ' . _T('texte_table_ok'); } $res .= "<div$class>$m</div>"; } return $res; }