aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrub <rub@piwigo.org>2006-03-28 21:05:12 +0000
committerrub <rub@piwigo.org>2006-03-28 21:05:12 +0000
commit39c2bfb3b1b8ad36af101b5aac7ab5d47f4d8ecb (patch)
tree396017128a94430b7bfdc58a5ad9ee6d1cf2c240
parent3a6aac1e5755e00de5eb16ed066393a9a1c114c3 (diff)
Improvement issue 0000319:
Add new item on page administration/maintenance. This item allow to repair and optimize database Functionality tested with MySQL 4.1.9. Please to report problem with previous version of MySql git-svn-id: http://piwigo.org/svn/trunk@1111 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--admin/include/functions.php53
-rw-r--r--admin/maintenance.php44
-rw-r--r--language/en_UK.iso-8859-1/admin.lang.php1
-rw-r--r--language/en_UK.iso-8859-1/help/maintenance.html14
-rw-r--r--language/fr_FR.iso-8859-1/admin.lang.php1
-rw-r--r--language/fr_FR.iso-8859-1/help/maintenance.html10
-rw-r--r--template/yoga/admin/maintenance.tpl1
7 files changed, 89 insertions, 35 deletions
diff --git a/admin/include/functions.php b/admin/include/functions.php
index 4dd2869ef..7168e79d9 100644
--- a/admin/include/functions.php
+++ b/admin/include/functions.php
@@ -2092,4 +2092,57 @@ UPDATE
'id' => $inserted_id,
);
}
+
+/**
+ * Do maintenance on all PWG tables
+ *
+ * @return nono
+ */
+function do_maintenance_all_tables()
+{
+ global $prefixeTable;
+
+ $all_tables = array();
+
+ // List all tables
+ $query = 'SHOW TABLES LIKE \''.$prefixeTable.'%\';';
+ $result = pwg_query($query);
+ while ($row = mysql_fetch_array($result))
+ {
+ array_push($all_tables, $row[0]);
+ }
+
+ // Repair all tables
+ $query = 'REPAIR TABLE '.implode(', ', $all_tables).';';
+ pwg_query($query);
+
+ // Re-Order all tables
+ foreach ($all_tables as $table_name)
+ {
+ $all_primary_key = array();
+
+ $query = 'DESC '.$table_name.';';
+ $result = pwg_query($query);
+ while ($row = mysql_fetch_array($result))
+ {
+ if ($row['Key'] == 'PRI')
+ {
+ array_push($all_primary_key, $row['Field']);
+ }
+ }
+
+ if (count($all_primary_key) != 0)
+ {
+ $query = 'ALTER TABLE '.$table_name.' ORDER BY '.implode(', ', $all_primary_key).';';
+ pwg_query($query);
+ }
+ }
+
+ // Optimize all tables
+ $query = 'OPTIMIZE TABLE '.implode(', ', $all_tables).';';
+ pwg_query($query);
+
+}
+
+
?>
diff --git a/admin/maintenance.php b/admin/maintenance.php
index c7caf8e50..de6c2a4a1 100644
--- a/admin/maintenance.php
+++ b/admin/maintenance.php
@@ -41,7 +41,7 @@ check_status(ACCESS_ADMINISTRATOR);
// | actions |
// +-----------------------------------------------------------------------+
-$action = isset($_GET['action']) ? $_GET['action'] : '';
+$action = (isset($_GET['action']) and !is_adviser()) ? $_GET['action'] : '';
switch ($action)
{
@@ -84,6 +84,11 @@ DELETE
pwg_query($query);
break;
}
+ case 'database' :
+ {
+ do_maintenance_all_tables();
+ break;
+ }
default :
{
break;
@@ -98,32 +103,17 @@ $template->set_filenames(array('maintenance'=>'admin/maintenance.tpl'));
$start_url = PHPWG_ROOT_PATH.'admin.php?page=maintenance&amp;action=';
-if (!is_adviser())
-{
- $template->assign_vars(
- array(
- 'U_MAINT_CATEGORIES' => $start_url.'categories',
- 'U_MAINT_IMAGES' => $start_url.'images',
- 'U_MAINT_HISTORY' => $start_url.'history',
- 'U_MAINT_SESSIONS' => $start_url.'sessions',
- 'U_MAINT_FEEDS' => $start_url.'feeds',
- 'U_HELP' => PHPWG_ROOT_PATH.'/popuphelp.php?page=maintenance',
- )
- );
-}
-else
-{
- $template->assign_vars(
- array(
- 'U_MAINT_CATEGORIES' => $start_url,
- 'U_MAINT_IMAGES' => $start_url,
- 'U_MAINT_HISTORY' => $start_url,
- 'U_MAINT_SESSIONS' => $start_url,
- 'U_MAINT_FEEDS' => $start_url,
- 'U_HELP' => PHPWG_ROOT_PATH.'/popuphelp.php?page=maintenance',
- )
- );
-}
+$template->assign_vars(
+ array(
+ 'U_MAINT_CATEGORIES' => $start_url.'categories',
+ 'U_MAINT_IMAGES' => $start_url.'images',
+ 'U_MAINT_HISTORY' => $start_url.'history',
+ 'U_MAINT_SESSIONS' => $start_url.'sessions',
+ 'U_MAINT_FEEDS' => $start_url.'feeds',
+ 'U_MAINT_DATABASE' => $start_url.'database',
+ 'U_HELP' => PHPWG_ROOT_PATH.'/popuphelp.php?page=maintenance',
+ )
+ );
// +-----------------------------------------------------------------------+
// | sending html code |
diff --git a/language/en_UK.iso-8859-1/admin.lang.php b/language/en_UK.iso-8859-1/admin.lang.php
index f4cd1c294..b5ed27c4c 100644
--- a/language/en_UK.iso-8859-1/admin.lang.php
+++ b/language/en_UK.iso-8859-1/admin.lang.php
@@ -293,6 +293,7 @@ $lang['private'] = 'private';
$lang['public'] = 'public';
$lang['purge history'] = 'purge history';
$lang['purge never used notification feeds'] = 'purge never used notification feeds';
+$lang['repair and optimize database'] = 'repair and optimize database';
$lang['purge sessions'] = 'purge sessions';
$lang['randomly represented'] = 'randomly represented';
$lang['registration_date'] = 'registration date';
diff --git a/language/en_UK.iso-8859-1/help/maintenance.html b/language/en_UK.iso-8859-1/help/maintenance.html
index c3ecbea46..1bc3978b3 100644
--- a/language/en_UK.iso-8859-1/help/maintenance.html
+++ b/language/en_UK.iso-8859-1/help/maintenance.html
@@ -11,13 +11,13 @@ information from database make you save disk space.</p>
<ul>
- <li><strong>update categories informations</strong>. For each category,
+ <li><strong>Update categories informations</strong>. For each category,
informations to update or control are the following : list of parent
categories, number of pictures, date of the last picture, position among
brother categories, position among all categories. This action also checks
the coherence of representative picture.</li>
- <li><strong>update images informations</strong>. For each picture,
+ <li><strong>Update images informations</strong>. For each picture,
informations to update are : full path to file, average
rate. <em>Warning</em>: do not get confuse with metadata informations
which can be synchronized from <span class="pwgScreen">Administration,
@@ -25,14 +25,18 @@ information from database make you save disk space.</p>
single picture (through <span class="pwgScreen">Picture</span> for
example).</li>
- <li><strong>purge history</strong>. Delete all lines from
+ <li><strong>Purge history</strong>. Delete all lines from
<code>history</code> table. Screen <span class="pwgScreen">Administration,
General, History</span> shows no informations anymore on past
history. <em>Warning</em>: all data will be lost and there is no way to
get informations back.</li>
- <li><strong>purge sessions</strong>. Delete expired user sessions.</li>
+ <li><strong>Purge sessions</strong>. Delete expired user sessions.</li>
- <li><strong>purge never used notification feeds</strong></li>
+ <li><strong>Purge never used notification feeds</strong></li>
+
+ <li><strong>Repair and optimize database</strong>
+ For each table, re-odrer, repair and optimize operations are done.
+ </li>
</ul>
diff --git a/language/fr_FR.iso-8859-1/admin.lang.php b/language/fr_FR.iso-8859-1/admin.lang.php
index a8ede8c34..58d85a647 100644
--- a/language/fr_FR.iso-8859-1/admin.lang.php
+++ b/language/fr_FR.iso-8859-1/admin.lang.php
@@ -293,6 +293,7 @@ $lang['private'] = 'privée';
$lang['public'] = 'publique';
$lang['purge history'] = 'purger l\'historique';
$lang['purge never used notification feeds'] = 'purger les flux de notification jamais utilisés';
+$lang['repair and optimize database'] = 'réparer et optimiser la base de données';
$lang['purge sessions'] = 'purger les sessions';
$lang['randomly represented'] = 'représentant au hasard';
$lang['registration_date'] = 'date d\'enregistrement';
diff --git a/language/fr_FR.iso-8859-1/help/maintenance.html b/language/fr_FR.iso-8859-1/help/maintenance.html
index bd7a3aee1..7691e739d 100644
--- a/language/fr_FR.iso-8859-1/help/maintenance.html
+++ b/language/fr_FR.iso-8859-1/help/maintenance.html
@@ -28,15 +28,19 @@ l'écran <span class="pwgScreen">Modifier les informations d'une image</span>
(accessible depuis la page de visualisation d'une image <span
class="pwgScreen">picture.php</span>).</li>
- <li><strong>purger l'historique</strong>. Supprime toutes les lignes de
+ <li><strong>Purger l'historique</strong>. Supprime toutes les lignes de
la table <code>history</code>. L'écran <span
class="pwgScreen">Administration, Général, Historique</span> ne montre alors
plus aucune information sur le passé. <em>Attention</em>: toutes les données
seront perdues et il n'existe aucun moyen de les récupérer.</li>
- <li><strong>purger les sessions</strong>. Supprimer les sessions
+ <li><strong>Purger les sessions</strong>. Supprimer les sessions
expirées..</li>
- <li><strong>purger les flux de notification jamais utilisés</strong></li>
+ <li><strong>Purger les flux de notification jamais utilisés</strong></li>
+
+ <li><strong>Réparer et optimiser la base de données</strong>
+Pour chaque tables de la base de données PhpWegGallery, les opérations de ré-ordonnancement, de réparation et d'optimisation sont effectuées.
+ </li>
</ul>
diff --git a/template/yoga/admin/maintenance.tpl b/template/yoga/admin/maintenance.tpl
index 63ba549c9..697e0954b 100644
--- a/template/yoga/admin/maintenance.tpl
+++ b/template/yoga/admin/maintenance.tpl
@@ -12,4 +12,5 @@
<li><a href="{U_MAINT_HISTORY}" {TAG_INPUT_ENABLED}>{lang:purge history}</a></li>
<li><a href="{U_MAINT_SESSIONS}" {TAG_INPUT_ENABLED}>{lang:purge sessions}</a></li>
<li><a href="{U_MAINT_FEEDS}" {TAG_INPUT_ENABLED}>{lang:purge never used notification feeds}</a></li>
+ <li><a href="{U_MAINT_DATABASE}" {TAG_INPUT_ENABLED}>{lang:repair and optimize database}</a></li>
</ul>