Issue 10050: Improve photo deletions
authorMichael <heluecht@pirati.ca>
Fri, 19 Mar 2021 11:42:29 +0000 (11:42 +0000)
committerMichael <heluecht@pirati.ca>
Fri, 19 Mar 2021 11:42:29 +0000 (11:42 +0000)
src/Model/Photo.php

index e5b2ef8..4c49bdf 100644 (file)
@@ -364,15 +364,20 @@ class Photo
        public static function delete(array $conditions, array $options = [])
        {
                // get photo to delete data info
-               $photos = self::selectToArray(['backend-class', 'backend-ref'], $conditions);
+               $photos = DBA::select('photo', ['id', 'backend-class', 'backend-ref'], $conditions);
 
-               foreach($photos as $photo) {
+               while ($photo = DBA::fetch($photos)) {
                        $backend_class = DI::storageManager()->getByName($photo['backend-class'] ?? '');
                        if ($backend_class !== null) {
-                               $backend_class->delete($photo["backend-ref"] ?? '');
+                               if ($backend_class->delete($photo["backend-ref"] ?? '')) {
+                                       // Delete the photos after they had been deleted successfully
+                                       DBA::delete("photo", ['id' => $photo['id']]);
+                               }
                        }
                }
 
+               DBA::close($photos);
+
                return DBA::delete("photo", $conditions, $options);
        }