]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Attach.php
Suppress notice while logging in Model\Contact
[friendica.git] / src / Model / Attach.php
index 102e7b1a1d2f708575fc95af981b49c72c1848cd..b81c38762eb556c75b3bb119d5f0a12406431e29 100644 (file)
@@ -1,21 +1,34 @@
 <?php
-
 /**
- * @file src/Model/Attach.php
- * @brief This file contains the Attach class for database interface
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
  */
+
 namespace Friendica\Model;
 
-use Friendica\Core\StorageManager;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Database\DBStructure;
 use Friendica\DI;
-use Friendica\Model\Storage\IStorage;
 use Friendica\Object\Image;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Mimetype;
-use Friendica\Util\Security;
+use Friendica\Security\Security;
 
 /**
  * Class to handle attach dabatase table
@@ -24,7 +37,7 @@ class Attach
 {
 
        /**
-        * @brief Return a list of fields that are associated with the attach table
+        * Return a list of fields that are associated with the attach table
         *
         * @return array field list
         * @throws \Exception
@@ -38,7 +51,7 @@ class Attach
        }
 
        /**
-        * @brief Select rows from the attach table and return them as array
+        * Select rows from the attach table and return them as array
         *
         * @param array $fields     Array of selected fields, empty for all
         * @param array $conditions Array of fields for conditions
@@ -59,7 +72,7 @@ class Attach
        }
 
        /**
-        * @brief Retrieve a single record from the attach table
+        * Retrieve a single record from the attach table
         *
         * @param array $fields     Array of selected fields, empty for all
         * @param array $conditions Array of fields for conditions
@@ -80,7 +93,7 @@ class Attach
        }
 
        /**
-        * @brief Check if attachment with given conditions exists
+        * Check if attachment with given conditions exists
         *
         * @param array $conditions Array of extra conditions
         *
@@ -93,7 +106,7 @@ class Attach
        }
 
        /**
-        * @brief Retrive a single record given the ID
+        * Retrive a single record given the ID
         *
         * @param int $id Row id of the record
         *
@@ -108,7 +121,7 @@ class Attach
        }
 
        /**
-        * @brief Retrive a single record given the ID
+        * Retrive a single record given the ID
         *
         * @param int $id Row id of the record
         *
@@ -137,7 +150,7 @@ class Attach
        }
 
        /**
-        * @brief Get file data for given row id. null if row id does not exist
+        * Get file data for given row id. null if row id does not exist
         *
         * @param array $item Attachment data. Needs at least 'id', 'backend-class', 'backend-ref'
         *
@@ -146,7 +159,8 @@ class Attach
         */
        public static function getData($item)
        {
-               if ($item['backend-class'] == '') {
+               $backendClass = DI::storageManager()->getByName($item['backend-class'] ?? '');
+               if ($backendClass === null) {
                        // legacy data storage in 'data' column
                        $i = self::selectFirst(['data'], ['id' => $item['id']]);
                        if ($i === false) {
@@ -154,14 +168,13 @@ class Attach
                        }
                        return $i['data'];
                } else {
-                       $backendClass = $item['backend-class'];
                        $backendRef = $item['backend-ref'];
-                       return $backendClass::get($backendRef);
+                       return $backendClass->get($backendRef);
                }
        }
 
        /**
-        * @brief Store new file metadata in db and binary in default backend
+        * Store new file metadata in db and binary in default backend
         *
         * @param string  $data      Binary data
         * @param integer $uid       User ID
@@ -217,7 +230,7 @@ class Attach
        }
 
        /**
-        * @brief Store new file metadata in db and binary in default backend from existing file
+        * Store new file metadata in db and binary in default backend from existing file
         *
         * @param        $src
         * @param        $uid
@@ -242,7 +255,7 @@ class Attach
 
 
        /**
-        * @brief Update an attached file
+        * Update an attached file
         *
         * @param array         $fields     Contains the fields that are updated
         * @param array         $conditions Condition array with the key values
@@ -261,10 +274,9 @@ class Attach
                        $items = self::selectToArray(['backend-class','backend-ref'], $conditions);
 
                        foreach($items as $item) {
-                               /** @var IStorage $backend_class */
-                               $backend_class = (string)$item['backend-class'];
-                               if ($backend_class !== '') {
-                                       $fields['backend-ref'] = $backend_class::put($img->asString(), $item['backend-ref']);
+                               $backend_class = DI::storageManager()->getByName($item['backend-class'] ?? '');
+                               if ($backend_class !== null) {
+                                       $fields['backend-ref'] = $backend_class->put($img->asString(), $item['backend-ref'] ?? '');
                                } else {
                                        $fields['data'] = $img->asString();
                                }
@@ -278,7 +290,7 @@ class Attach
 
 
        /**
-        * @brief Delete info from table and data from storage
+        * Delete info from table and data from storage
         *
         * @param array $conditions Field condition(s)
         * @param array $options    Options array, Optional
@@ -294,10 +306,9 @@ class Attach
                $items = self::selectToArray(['backend-class','backend-ref'], $conditions);
 
                foreach($items as $item) {
-                       /** @var IStorage $backend_class */
-                       $backend_class = (string)$item['backend-class'];
-                       if ($backend_class !== '') {
-                               $backend_class::delete($item['backend-ref']);
+                       $backend_class = DI::storageManager()->getByName($item['backend-class'] ?? '');
+                       if ($backend_class !== null) {
+                               $backend_class->delete($item['backend-ref'] ?? '');
                        }
                }