Skip to content

Commit

Permalink
Improvement issue 0000319:
Browse files Browse the repository at this point in the history
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
  • Loading branch information
rub committed Mar 28, 2006
1 parent 3a6aac1 commit 39c2bfb
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 35 deletions.
53 changes: 53 additions & 0 deletions admin/include/functions.php
Expand Up @@ -2092,4 +2092,57 @@ function create_virtual_category($category_name, $parent_id=null)
'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);

}


?>
44 changes: 17 additions & 27 deletions admin/maintenance.php
Expand Up @@ -41,7 +41,7 @@
// | actions |
// +-----------------------------------------------------------------------+

$action = isset($_GET['action']) ? $_GET['action'] : '';
$action = (isset($_GET['action']) and !is_adviser()) ? $_GET['action'] : '';

switch ($action)
{
Expand Down Expand Up @@ -84,6 +84,11 @@
pwg_query($query);
break;
}
case 'database' :
{
do_maintenance_all_tables();
break;
}
default :
{
break;
Expand All @@ -98,32 +103,17 @@

$start_url = PHPWG_ROOT_PATH.'admin.php?page=maintenance&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 |
Expand Down
1 change: 1 addition & 0 deletions language/en_UK.iso-8859-1/admin.lang.php
Expand Up @@ -293,6 +293,7 @@
$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';
Expand Down
14 changes: 9 additions & 5 deletions language/en_UK.iso-8859-1/help/maintenance.html
Expand Up @@ -11,28 +11,32 @@ <h2>Maintenance</h2>

<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,
General, Synchronize</span> or by reaching the modification screen of a
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>
1 change: 1 addition & 0 deletions language/fr_FR.iso-8859-1/admin.lang.php
Expand Up @@ -293,6 +293,7 @@
$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';
Expand Down
10 changes: 7 additions & 3 deletions language/fr_FR.iso-8859-1/help/maintenance.html
Expand Up @@ -28,15 +28,19 @@ <h2>Maintenance</h2>
(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>
1 change: 1 addition & 0 deletions template/yoga/admin/maintenance.tpl
Expand Up @@ -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>

0 comments on commit 39c2bfb

Please sign in to comment.