WP File Manager
Current Path:
/
home
/
argothem
/
www
/
organecyberpresse
/
ecrire
/
base
/
Name
Action
..
abstract_sql.php
Edit
auxiliaires.php
Edit
connect_sql.php
Edit
create.php
Edit
delete_all.php
Edit
dump.php
Edit
index.php
Edit
objets.php
Edit
repair.php
Edit
serial.php
Edit
trouver_table.php
Edit
upgrade.php
Edit
Editing: repair.php
<?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. * \***************************************************************************/ use Spip\Afficher\Minipage\Admin as MinipageAdmin; /** * 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(); } $res .= pipeline('base_admin_repair', $res); $minipage = new MinipageAdmin(); echo $minipage->page( $res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site')), ['titre' => _T('texte_tentative_recuperation')] ); } /** * 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><code>' . spip_htmlentities($msg) . "</code>\n"; } else { $m .= ' ' . _T('texte_table_ok'); } $res .= "<div$class>$m</div>"; } return $res; }