]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Attach.php
Merge pull request #7958 from tobiasd/20191216-lng
[friendica.git] / src / Model / Attach.php
index 9be77eca91bb161d01d026b9fa5999e44ba5f57e..0073a6ed3f52f9b2ab6cddf8be1aad23aaa23858 100644 (file)
@@ -7,13 +7,15 @@
 namespace Friendica\Model;
 
 use Friendica\BaseObject;
-use Friendica\Core\System;
 use Friendica\Core\StorageManager;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Database\DBStructure;
-use Friendica\Util\Security;
+use Friendica\Model\Storage\IStorage;
+use Friendica\Object\Image;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Mimetype;
+use Friendica\Util\Security;
 
 /**
  * Class to handle attach dabatase table
@@ -29,32 +31,31 @@ class Attach extends BaseObject
         */
        private static function getFields()
        {
-               $allfields = DBStructure::definition(false);
+               $allfields = DBStructure::definition(self::getApp()->getBasePath(), false);
                $fields = array_keys($allfields['attach']['fields']);
                array_splice($fields, array_search('data', $fields), 1);
                return $fields;
        }
 
        /**
-        * @brief Select rows from the attach table
+        * @brief 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
         * @param array $params     Array of several parameters
         *
-        * @return boolean|array
+        * @return array
         *
         * @throws \Exception
-        * @see   \Friendica\Database\DBA::select
+        * @see   \Friendica\Database\DBA::selectToArray
         */
-       public static function select(array $fields = [], array $conditions = [], array $params = [])
+       public static function selectToArray(array $fields = [], array $conditions = [], array $params = [])
        {
                if (empty($fields)) {
-                       $selected = self::getFields();
+                       $fields = self::getFields();
                }
 
-               $r = DBA::select('attach', $fields, $conditions, $params);
-               return DBA::toArray($r);
+               return DBA::selectToArray('attach', $fields, $conditions, $params);
        }
 
        /**
@@ -175,7 +176,7 @@ class Attach extends BaseObject
         * @return boolean/integer Row id on success, False on errors
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public function store($data, $uid, $filename, $filetype = '' , $filesize = null, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '')
+       public static function store($data, $uid, $filename, $filetype = '' , $filesize = null, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '')
        {
                if ($filetype === '') {
                        $filetype = Mimetype::getContentType($filename);
@@ -185,6 +186,7 @@ class Attach extends BaseObject
                        $filesize = strlen($data);
                }
 
+               /** @var IStorage $backend_class */
                $backend_class = StorageManager::getBackend();
                $backend_ref = '';
                if ($backend_class !== '') {
@@ -257,18 +259,19 @@ class Attach extends BaseObject
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         * @see   \Friendica\Database\DBA::update
         */
-       public static function update($fields, $conditions, $img = null, array $old_fields = [])
+       public static function update($fields, $conditions, Image $img = null, array $old_fields = [])
        {
-               if (!is_null($data)) {
+               if (!is_null($img)) {
                        // get items to update
-                       $items = self::select(['backend-class','backend-ref'], $conditions);
+                       $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']);
                                } else {
-                                       $fields['data'] = $data;
+                                       $fields['data'] = $img->asString();
                                }
                        }
                }
@@ -293,9 +296,10 @@ class Attach extends BaseObject
        public static function delete(array $conditions, array $options = [])
        {
                // get items to delete data info
-               $items = self::select(['backend-class','backend-ref'], $conditions);
+               $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']);