]> git.mxchange.org Git - friendica.git/blobdiff - mod/fbrowser.php
Merge pull request #11575 from annando/issue-11469
[friendica.git] / mod / fbrowser.php
index 102d0c613d1a9cfb22f2d862939e0bd7b624f016..81284d6b91ef27d654d9c078d2333ab295b41176 100644 (file)
@@ -1,16 +1,34 @@
 <?php
 /**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @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/>.
+ *
  * @package            Friendica\modules
  * @subpackage FileBrowser
  * @author             Fabio Comuni <fabrixxm@kirgroup.com>
  */
 
 use Friendica\App;
-use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
-use Friendica\Object\Image;
+use Friendica\DI;
+use Friendica\Model\Photo;
+use Friendica\Util\Images;
 use Friendica\Util\Strings;
 
 /**
@@ -21,11 +39,11 @@ use Friendica\Util\Strings;
 function fbrowser_content(App $a)
 {
        if (!local_user()) {
-               exit();
+               System::exit();
        }
 
-       if ($a->argc == 1) {
-               exit();
+       if (DI::args()->getArgc() == 1) {
+               System::exit();
        }
 
        // Needed to match the correct template in a module that uses a different theme than the user/site/default
@@ -38,64 +56,54 @@ function fbrowser_content(App $a)
 
        $o = '';
 
-       switch ($a->argv[1]) {
+       switch (DI::args()->getArgv()[1]) {
                case "image":
-                       $path = [["", L10n::t("Photos")]];
+                       $path = ['' => DI::l10n()->t('Photos')];
                        $albums = false;
                        $sql_extra = "";
                        $sql_extra2 = " ORDER BY created DESC LIMIT 0, 10";
 
-                       if ($a->argc==2) {
-                               $albums = q("SELECT distinct(`album`) AS `album` FROM `photo` WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' ",
-                                       intval(local_user()),
-                                       DBA::escape('Contact Photos'),
-                                       DBA::escape(L10n::t('Contact Photos'))
-                               );
+                       if (DI::args()->getArgc() == 2) {
+                               $photos = DBA::toArray(DBA::p("SELECT distinct(`album`) AS `album` FROM `photo` WHERE `uid` = ? AND NOT `photo-type` IN (?, ?)",
+                                       local_user(),
+                                       Photo::CONTACT_AVATAR,
+                                       Photo::CONTACT_BANNER
+                               ));
 
-                               function _map_folder1($el)
-                               {
-                                       return [bin2hex($el['album']),$el['album']];
-                               };
-
-                               $albums = array_map("_map_folder1", $albums);
+                               $albums = array_column($photos, 'album');
                        }
 
-                       if ($a->argc == 3) {
-                               $album = hex2bin($a->argv[2]);
+                       if (DI::args()->getArgc() == 3) {
+                               $album = DI::args()->getArgv()[2];
                                $sql_extra = sprintf("AND `album` = '%s' ", DBA::escape($album));
                                $sql_extra2 = "";
-                               $path[] = [$a->argv[2], $album];
+                               $path[$album] = $album;
                        }
 
-                       $r = q("SELECT `resource-id`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`type`) AS `type`,
+                       $r = DBA::toArray(DBA::p("SELECT `resource-id`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`type`) AS `type`,
                                        min(`scale`) AS `hiq`, max(`scale`) AS `loq`, ANY_VALUE(`desc`) AS `desc`, ANY_VALUE(`created`) AS `created`
-                                       FROM `photo` WHERE `uid` = %d $sql_extra AND `album` != '%s' AND `album` != '%s'
+                                       FROM `photo` WHERE `uid` = ? $sql_extra AND NOT `photo-type` IN (?, ?)
                                        GROUP BY `resource-id` $sql_extra2",
-                               intval(local_user()),
-                               DBA::escape('Contact Photos'),
-                               DBA::escape(L10n::t('Contact Photos'))
-                       );
+                               local_user(),
+                               Photo::CONTACT_AVATAR,
+                               Photo::CONTACT_BANNER
+                       ));
 
                        function _map_files1($rr)
                        {
-                               $a = \get_app();
-                               $types = Image::supportedTypes();
+                               $a = DI::app();
+                               $types = Images::supportedTypes();
                                $ext = $types[$rr['type']];
                                $filename_e = $rr['filename'];
 
                                // Take the largest picture that is smaller or equal 640 pixels
-                               $p = q("SELECT `scale` FROM `photo` WHERE `resource-id` = '%s' AND `height` <= 640 AND `width` <= 640 ORDER BY `resource-id`, `scale` LIMIT 1",
-                                       DBA::escape($rr['resource-id']));
-                               if ($p) {
-                                       $scale = $p[0]["scale"];
-                               } else {
-                                       $scale = $rr['loq'];
-                               }
+                               $photo = Photo::selectFirst(['scale'], ["`resource-id` = ? AND `height` <= ? AND `width` <= ?", $rr['resource-id'], 640, 640], ['order' => ['scale']]);
+                               $scale = $photo['scale'] ?? $rr['loq'];
 
                                return [
-                                       System::baseUrl() . '/photos/' . $a->user['nickname'] . '/image/' . $rr['resource-id'],
+                                       DI::baseUrl() . '/photos/' . $a->getLoggedInUserNickname() . '/image/' . $rr['resource-id'],
                                        $filename_e,
-                                       System::baseUrl() . '/photo/' . $rr['resource-id'] . '-' . $scale . '.'. $ext
+                                       DI::baseUrl() . '/photo/' . $rr['resource-id'] . '-' . $scale . '.'. $ext
                                ];
                        }
                        $files = array_map("_map_files1", $r);
@@ -107,17 +115,15 @@ function fbrowser_content(App $a)
                                '$path'     => $path,
                                '$folders'  => $albums,
                                '$files'    => $files,
-                               '$cancel'   => L10n::t('Cancel'),
-                               '$nickname' => $a->user['nickname'],
-                               '$upload'   => L10n::t('Upload')
+                               '$cancel'   => DI::l10n()->t('Cancel'),
+                               '$nickname' => $a->getLoggedInUserNickname(),
+                               '$upload'   => DI::l10n()->t('Upload')
                        ]);
 
                        break;
                case "file":
-                       if ($a->argc==2) {
-                               $files = q("SELECT `id`, `filename`, `filetype` FROM `attach` WHERE `uid` = %d ",
-                                       intval(local_user())
-                               );
+                       if (DI::args()->getArgc()==2) {
+                               $files = DBA::selectToArray('attach', ['id', 'filename', 'filetype'], ['uid' => local_user()]);
 
                                function _map_files2($rr)
                                {
@@ -125,7 +131,7 @@ function fbrowser_content(App $a)
                                        $filetype = ( (file_exists("images/icons/$m1.png"))?$m1:"zip");
                                        $filename_e = $rr['filename'];
 
-                                       return [System::baseUrl() . '/attach/' . $rr['id'], $filename_e, System::baseUrl() . '/images/icons/16/' . $filetype . '.png'];
+                                       return [DI::baseUrl() . '/attach/' . $rr['id'], $filename_e, DI::baseUrl() . '/images/icons/16/' . $filetype . '.png'];
                                }
                                $files = array_map("_map_files2", $files);
 
@@ -133,12 +139,12 @@ function fbrowser_content(App $a)
                                $tpl = Renderer::getMarkupTemplate($template_file);
                                $o = Renderer::replaceMacros($tpl, [
                                        '$type'     => 'file',
-                                       '$path'     => [ [ "", L10n::t("Files")] ],
+                                       '$path'     => ['' => DI::l10n()->t('Files')],
                                        '$folders'  => false,
                                        '$files'    => $files,
-                                       '$cancel'   => L10n::t('Cancel'),
-                                       '$nickname' => $a->user['nickname'],
-                                       '$upload'   => L10n::t('Upload')
+                                       '$cancel'   => DI::l10n()->t('Cancel'),
+                                       '$nickname' => $a->getLoggedInUserNickname(),
+                                       '$upload'   => DI::l10n()->t('Upload')
                                ]);
                        }
 
@@ -148,7 +154,6 @@ function fbrowser_content(App $a)
        if (!empty($_GET['mode'])) {
                return $o;
        } else {
-               echo $o;
-               exit();
+               System::httpExit($o);
        }
 }