diff options
author | plegall <plg@piwigo.org> | 2013-02-04 11:28:03 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2013-02-04 11:28:03 +0000 |
commit | b267aea0e2821cd411530511bbb2698bc5e9b121 (patch) | |
tree | 2e952ed810d4219abd9f14c9111196d796e28f25 /admin/include | |
parent | b39b4e0f398c205676004352bb1c7316f809bea2 (diff) |
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
Diffstat (limited to 'admin/include')
-rw-r--r-- | admin/include/functions.php | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/admin/include/functions.php b/admin/include/functions.php index c1a3db22c..03bce26cc 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -485,6 +485,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 * |