]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Attach.php
We now store the receivers as well
[friendica.git] / src / Model / Attach.php
index d3ff5462ca69ad5f6d54ca9f64cf03d1adf6d0f4..9009126868dd66460890c02b9d09c969bbaf9f04 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -25,7 +25,8 @@ use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Database\DBStructure;
 use Friendica\DI;
-use Friendica\Model\Storage\ReferenceStorageException;
+use Friendica\Core\Storage\Exception\InvalidClassStorageException;
+use Friendica\Core\Storage\Exception\ReferenceStorageException;
 use Friendica\Object\Image;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Mimetype;
@@ -164,22 +165,20 @@ class Attach
                        return $item['data'];
                }
 
-               $backendClass = DI::storageManager()->getByName($item['backend-class'] ?? '');
-               if (empty($backendClass)) {
+               try {
+                       $backendClass = DI::storageManager()->getByName($item['backend-class'] ?? '');
+                       $backendRef   = $item['backend-ref'];
+                       return $backendClass->get($backendRef);
+               } catch (InvalidClassStorageException $storageException) {
                        // legacy data storage in 'data' column
                        $i = self::selectFirst(['data'], ['id' => $item['id']]);
                        if ($i === false) {
                                return null;
                        }
                        return $i['data'];
-               } else {
-                       $backendRef = $item['backend-ref'];
-                       try {
-                               return $backendClass->get($backendRef);
-                       } catch (ReferenceStorageException $referenceStorageException) {
-                               DI::logger()->debug('No data found for item', ['item' => $item, 'exception' => $referenceStorageException]);
-                               return '';
-                       }
+               } catch (ReferenceStorageException $referenceStorageException) {
+                       DI::logger()->debug('No data found for item', ['item' => $item, 'exception' => $referenceStorageException]);
+                       return '';
                }
        }
 
@@ -284,11 +283,13 @@ class Attach
                        $items = self::selectToArray(['backend-class','backend-ref'], $conditions);
 
                        foreach($items as $item) {
-                               $backend_class = DI::storageManager()->getSelectableStorageByName($item['backend-class'] ?? '');
-                               if (!empty($backend_class)) {
+                               try {
+                                       $backend_class         = DI::storageManager()->getWritableStorageByName($item['backend-class'] ?? '');
                                        $fields['backend-ref'] = $backend_class->put($img->asString(), $item['backend-ref'] ?? '');
-                               } else {
-                                       $fields['data'] = $img->asString();
+                               } catch (InvalidClassStorageException $storageException) {
+                                       DI::logger()->debug('Storage class not found.', ['conditions' => $conditions, 'exception' => $storageException]);
+                               } catch (ReferenceStorageException $referenceStorageException) {
+                                       DI::logger()->debug('Item doesn\'t exist.', ['conditions' => $conditions, 'exception' => $referenceStorageException]);
                                }
                        }
                }
@@ -316,13 +317,13 @@ class Attach
                $items = self::selectToArray(['backend-class','backend-ref'], $conditions);
 
                foreach($items as $item) {
-                       $backend_class = DI::storageManager()->getSelectableStorageByName($item['backend-class'] ?? '');
-                       if (!empty($backend_class)) {
-                               try {
-                                       $backend_class->delete($item['backend-ref'] ?? '');
-                               } catch (ReferenceStorageException $referenceStorageException) {
-                                       DI::logger()->debug('Item doesn\'t exist.', ['conditions' => $conditions, 'exception' => $referenceStorageException]);
-                               }
+                       try {
+                               $backend_class = DI::storageManager()->getWritableStorageByName($item['backend-class'] ?? '');
+                               $backend_class->delete($item['backend-ref'] ?? '');
+                       } catch (InvalidClassStorageException $storageException) {
+                               DI::logger()->debug('Storage class not found.', ['conditions' => $conditions, 'exception' => $storageException]);
+                       } catch (ReferenceStorageException $referenceStorageException) {
+                               DI::logger()->debug('Item doesn\'t exist.', ['conditions' => $conditions, 'exception' => $referenceStorageException]);
                        }
                }