aboutsummaryrefslogtreecommitdiffstats
path: root/admin/include/functions.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--admin/include/functions.php112
1 files changed, 70 insertions, 42 deletions
diff --git a/admin/include/functions.php b/admin/include/functions.php
index f736902b0..1e1f1b454 100644
--- a/admin/include/functions.php
+++ b/admin/include/functions.php
@@ -166,26 +166,20 @@ DELETE FROM '.USER_CACHE_CATEGORIES_TABLE.'
trigger_action('delete_categories', $ids);
}
-// The function delete_elements deletes the elements identified by the
-// (numeric) values of the array $ids. It also deletes (in the database) :
-// - all the comments related to elements
-// - all the links between categories and elements
-// - all the favorites associated to elements
-// @return number of deleted elements
-function delete_elements($ids, $physical_deletion=false)
+// Deletes all files (on disk) related to given image ids
+// @return image ids where files are deleted successfully
+function delete_element_files($ids)
{
if (count($ids) == 0)
{
return 0;
}
- trigger_action('begin_delete_elements', $ids);
- if ($physical_deletion)
- {
- include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php');
- $new_ids=array();
+ include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php');
+
+ $new_ids = array();
- $query = '
+ $query = '
SELECT
id,
path,
@@ -195,40 +189,74 @@ SELECT
FROM '.IMAGES_TABLE.'
WHERE id IN ('.implode(',', $ids).')
;';
- $result = pwg_query($query);
- while ($row = pwg_db_fetch_assoc($result))
+ $result = pwg_query($query);
+ while ($row = pwg_db_fetch_assoc($result))
+ {
+ if (url_is_remote($row['path']))
{
- if (url_is_remote($row['path']))
- continue;
- $files = array();
- $files[] = get_element_path($row);
- if (!empty($row['tn_ext']))
- $files[] = get_thumbnail_path($row);
- if (!empty($row['has_high']) and get_boolean($row['has_high']))
- $files[] = get_high_path($row);
- if (!empty($row['representative_ext']))
- {
- $pi = pathinfo($row['path']);
- $file_wo_ext = get_filename_wo_extension($pi['basename']);
- $files[] = PHPWG_ROOT_PATH.$pi['dirname'].'/pwg_representative/'.$file_wo_ext.'.'.$element_info['representative_ext'];
- }
+ continue;
+ }
+
+ $files = array();
+ $files[] = get_element_path($row);
+
+ if (!empty($row['tn_ext']))
+ {
+ $files[] = get_thumbnail_path($row);
+ }
+
+ if (!empty($row['has_high']) and get_boolean($row['has_high']))
+ {
+ $files[] = get_high_path($row);
+ }
+
+ if (!empty($row['representative_ext']))
+ {
+ $pi = pathinfo($row['path']);
+ $file_wo_ext = get_filename_wo_extension($pi['basename']);
+ $files[] = PHPWG_ROOT_PATH.$pi['dirname'].'/pwg_representative/'.$file_wo_ext.'.'.$row['representative_ext'];
+ }
- $ok = true;
- foreach ($files as $path)
+ $ok = true;
+ foreach ($files as $path)
+ {
+ if (is_file($path) and !unlink($path))
{
- if (is_file($path) and !unlink($path))
- {
- $ok = false;
- trigger_error('"'.$path.'" cannot be removed', E_USER_WARNING);
- break;
- }
- }
- if ($ok)
- $new_ids[] += $row['id'];
- else
+ $ok = false;
+ trigger_error('"'.$path.'" cannot be removed', E_USER_WARNING);
break;
+ }
+ }
+
+ if ($ok)
+ {
+ $new_ids[] += $row['id'];
+ }
+ else
+ {
+ break;
}
- $ids = $new_ids;
+ }
+ return $new_ids;
+}
+
+// The function delete_elements deletes the elements identified by the
+// (numeric) values of the array $ids. It also deletes (in the database) :
+// - all the comments related to elements
+// - all the links between categories and elements
+// - all the favorites associated to elements
+// @return number of deleted elements
+function delete_elements($ids, $physical_deletion=false)
+{
+ if (count($ids) == 0)
+ {
+ return 0;
+ }
+ trigger_action('begin_delete_elements', $ids);
+
+ if ($physical_deletion)
+ {
+ $ids = delete_element_files($ids);
if (count($ids)==0)
{
return 0;