mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-03-28 17:42:57 +01:00
bug 2825: add maintenance action to clean the database and avoid integrity errors
git-svn-id: http://piwigo.org/svn/trunk@20544 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -484,6 +484,34 @@ SELECT DISTINCT id
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* check and repair images integrity
|
||||
*
|
||||
* TODO see delete_elements function to check all linked tables
|
||||
*/
|
||||
function images_integrity()
|
||||
{
|
||||
$query = '
|
||||
SELECT
|
||||
image_id
|
||||
FROM '.IMAGE_CATEGORY_TABLE.'
|
||||
LEFT JOIN '.IMAGES_TABLE.' ON id = image_id
|
||||
WHERE id IS NULL
|
||||
;';
|
||||
$result = pwg_query($query);
|
||||
$orphan_image_ids = array_from_query($query, 'image_id');
|
||||
|
||||
if (count($orphan_image_ids) > 0)
|
||||
{
|
||||
$query = '
|
||||
DELETE
|
||||
FROM '.IMAGE_CATEGORY_TABLE.'
|
||||
WHERE image_id IN ('.implode(',', $orphan_image_ids).')
|
||||
;';
|
||||
pwg_query($query);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* returns an array containing sub-directories which can be a category,
|
||||
* recursive by default
|
||||
|
||||
@@ -62,6 +62,7 @@ switch ($action)
|
||||
}
|
||||
case 'categories' :
|
||||
{
|
||||
images_integrity();
|
||||
update_uppercats();
|
||||
update_category('all');
|
||||
update_global_rank();
|
||||
@@ -70,9 +71,11 @@ switch ($action)
|
||||
}
|
||||
case 'images' :
|
||||
{
|
||||
images_integrity();
|
||||
update_path();
|
||||
include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php');
|
||||
update_rating_score();
|
||||
invalidate_user_cache();
|
||||
break;
|
||||
}
|
||||
case 'delete_orphan_tags' :
|
||||
@@ -80,6 +83,11 @@ switch ($action)
|
||||
delete_orphan_tags();
|
||||
break;
|
||||
}
|
||||
case 'user_cache' :
|
||||
{
|
||||
invalidate_user_cache();
|
||||
break;
|
||||
}
|
||||
case 'history_detail' :
|
||||
{
|
||||
$query = '
|
||||
@@ -171,6 +179,7 @@ $template->assign(
|
||||
'U_MAINT_CATEGORIES' => sprintf($url_format, 'categories'),
|
||||
'U_MAINT_IMAGES' => sprintf($url_format, 'images'),
|
||||
'U_MAINT_ORPHAN_TAGS' => sprintf($url_format, 'delete_orphan_tags'),
|
||||
'U_MAINT_USER_CACHE' => sprintf($url_format, 'user_cache'),
|
||||
'U_MAINT_HISTORY_DETAIL' => sprintf($url_format, 'history_detail'),
|
||||
'U_MAINT_HISTORY_SUMMARY' => sprintf($url_format, 'history_summary'),
|
||||
'U_MAINT_SESSIONS' => sprintf($url_format, 'sessions'),
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
</ul>
|
||||
|
||||
<ul>
|
||||
<li><a href="{$U_MAINT_USER_CACHE}">{'Purge user cache'|@translate}</a></li>
|
||||
<li><a href="{$U_MAINT_ORPHAN_TAGS}">{'Delete orphan tags'|@translate}</a></li>
|
||||
<li><a href="{$U_MAINT_HISTORY_DETAIL}" onclick="return confirm('{'Purge history detail'|@translate|@escape:'javascript'}');">{'Purge history detail'|@translate}</a></li>
|
||||
<li><a href="{$U_MAINT_HISTORY_SUMMARY}" onclick="return confirm('{'Purge history summary'|@translate|@escape:'javascript'}');">{'Purge history summary'|@translate}</a></li>
|
||||
|
||||
@@ -947,4 +947,5 @@ $lang['Your configuration settings are saved'] = 'Your configuration settings ar
|
||||
$lang['Zoom'] = 'Zoom';
|
||||
$lang['[%s] Visit album %s'] = "[%s] Visit album %s";
|
||||
$lang['[NBM] Problems or questions'] = "[NBM] Problems or questions";
|
||||
$lang['Purge user cache'] = 'Purge user cache';
|
||||
?>
|
||||
@@ -949,5 +949,5 @@ $lang['This group will be set to default'] = "Ce groupe deviendra par défaut";
|
||||
$lang['This group will be unset to default'] = "Ce groupe ne sera plus par défaut";
|
||||
$lang['No members to manage'] = "Aucun membre à gérer";
|
||||
$lang['Rename'] = 'Renommer';
|
||||
|
||||
$lang['Purge user cache'] = 'Purger le cache utilisateur';
|
||||
?>
|
||||
Reference in New Issue
Block a user