Mise en route du suivi.
[aidenligne_francais_universite.git] / ecrire / exec / admin_repair.php
CommitLineData
c495c100
P
1<?php
2
3/***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2007 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
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\***************************************************************************/
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15/*
16 * REMARQUE IMPORTANTE : SECURITE
17 * Ce systeme de reparation doit pouvoir fonctionner meme si
18 * la table spip_auteurs est en panne : on n'appelle donc pas
19 * inc_auth ; seule l'authentification ftp est exigee
20 *
21 */
22
23$GLOBALS['connect_statut'] = '0minirezo';
24
25include_spip('inc/admin');
26include_spip('inc/texte');
27include_spip('inc/minipres');
28include_spip('base/db_mysql');
29
30// http://doc.spip.org/@verifier_base
31function verifier_base() {
32 $res1= spip_query("SHOW TABLES");
33 if (!$res1) return false;
34
35 $res = "";
36 while ($tab = spip_fetch_array($res1,SPIP_NUM)) {
37 $res .= "<p><b>".$tab[0]."</b> ";
38
39 $result_repair = spip_query("REPAIR TABLE ".$tab[0]);
40 if (!$result_repair) return false;
41
42 $result = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM ".$tab[0]));
43 if (!$result) return false;
44
45 $count = $result['n'];
46 if ($count>1)
47 $res .= "("._T('texte_compte_elements', array('count' => $count)).")\n";
48 else if ($count==1)
49 $res .= "("._T('texte_compte_element', array('count' => $count)).")\n";
50 else
51 $res .= "("._T('texte_vide').")\n";
52
53 $row = spip_fetch_array($result_repair,SPIP_NUM);
54 $ok = ($row[3] == 'OK');
55
56 if (!$ok)
57 $res .= "<pre><span style='color: red; font-weight: bold;'>".htmlentities(join("\n", $row))."</span></pre>\n";
58 else
59 $res .= " "._T('texte_table_ok')."<br />\n";
60
61 }
62
63 return $res;
64}
65
66// http://doc.spip.org/@exec_admin_repair_dist
67function exec_admin_repair_dist()
68{
69 $ok = false;
70 $version_mysql = spip_mysql_version();
71 if (!$version_mysql)
72 $message = _T('avis_erreur_connexion_mysql');
73 else {
74 if ($version_mysql < '3.23.14')
75 $message = _T('avis_version_mysql', array('version_mysql' => $version_mysql));
76 else {
77 $message = _T('texte_requetes_echouent');
78 $ok = true;
79 }
80 }
81
82 $action = _T('texte_tenter_reparation');
83
84 if ($ok) {
85 debut_admin("admin_repair", $action, $message);
86
87 if (! $res = verifier_base())
88 $res = "<br /><br /><span style='color: red; font-weight: bold;'><tt>"._T('avis_erreur_mysql').' '.spip_sql_errno().': '.spip_sql_error() ."</tt></span><br /><br /><br />\n";
89 fin_admin($action);
90 echo minipres(_T('texte_tentative_recuperation'), $res);
91 }
92 else {
93 echo minipres(_T('titre_reparation'), "<p>$message</p>");
94 }
95}
96?>