]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Settings/UserExport.php
Merge remote-tracking branch 'upstream/2021.12-rc' into user-banner
[friendica.git] / src / Module / Settings / UserExport.php
index 740ec0ec045a233c46d341a12c4a1929564d2514..1d47df4fd3d6b3b79a6e02febd4add097cf0d3e2 100644 (file)
@@ -1,8 +1,8 @@
 <?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
+ * @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
@@ -21,7 +21,6 @@
 
 namespace Friendica\Module\Settings;
 
-use Friendica\App;
 use Friendica\Core\Hook;
 use Friendica\Core\Renderer;
 use Friendica\Database\DBA;
@@ -48,18 +47,17 @@ class UserExport extends BaseSettings
         * If there is an action required through the URL / path, react
         * accordingly and export the requested data.
         *
-        * @param array $parameters Router-supplied parameters
         * @return string
         * @throws HTTPException\ForbiddenException
         * @throws HTTPException\InternalServerErrorException
         */
-       public static function content(array $parameters = [])
+       protected function content(array $request = []): string
        {
                if (!local_user()) {
                        throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
                }
 
-               parent::content($parameters);
+               parent::content();
 
                /**
                 * options shown on "Export personal data" page
@@ -85,12 +83,11 @@ class UserExport extends BaseSettings
         * to the browser which then offers a save / open dialog
         * to the user.
         *
-        * @param array $parameters Router-supplied parameters
         * @throws HTTPException\ForbiddenException
         */
-       public static function rawContent(array $parameters = [])
+       protected function rawContent(array $request = [])
        {
-               if (!local_user() || !empty(DI::app()->user['uid']) && DI::app()->user['uid'] != local_user()) {
+               if (!DI::app()->isLoggedIn()) {
                        throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
                }
 
@@ -98,21 +95,20 @@ class UserExport extends BaseSettings
                if ($args->getArgc() == 3) {
                        // @TODO Replace with router-provided arguments
                        $action = $args->get(2);
-                       $user = DI::app()->user;
                        switch ($action) {
                                case "backup":
                                        header("Content-type: application/json");
-                                       header('Content-Disposition: attachment; filename="' . $user['nickname'] . '.' . $action . '"');
+                                       header('Content-Disposition: attachment; filename="' . DI::app()->getLoggedInUserNickname() . '.' . $action . '"');
                                        self::exportAll(local_user());
                                        break;
                                case "account":
                                        header("Content-type: application/json");
-                                       header('Content-Disposition: attachment; filename="' . $user['nickname'] . '.' . $action . '"');
+                                       header('Content-Disposition: attachment; filename="' . DI::app()->getLoggedInUserNickname() . '.' . $action . '"');
                                        self::exportAccount(local_user());
                                        break;
                                case "contact":
                                        header("Content-type: application/csv");
-                                       header('Content-Disposition: attachment; filename="' . $user['nickname'] . '-contacts.csv' . '"');
+                                       header('Content-Disposition: attachment; filename="' . DI::app()->getLoggedInUserNickname() . '-contacts.csv' . '"');
                                        self::exportContactsAsCSV(local_user());
                                        break;
                        }
@@ -166,25 +162,24 @@ class UserExport extends BaseSettings
                $table = $match[1];
 
                $result = [];
-               $r = q($query);
-               if (DBA::isResult($r)) {
-                       foreach ($r as $rr) {
-                               foreach ($rr as $k => $v) {
-                                       if (empty($dbStructure[$table]['fields'][$k])) {
-                                               continue;
-                                       }
-
-                                       switch ($dbStructure[$table]['fields'][$k]['type']) {
-                                               case 'datetime':
-                                                       $result[$k] = $v ?? DBA::NULL_DATETIME;
-                                                       break;
-                                               default:
-                                                       $result[$k] = $v;
-                                                       break;
-                                       }
+               $rows = DBA::p($query);
+               while ($row = DBA::fetch($rows)) {
+                       foreach ($row as $k => $v) {
+                               if (empty($dbStructure[$table]['fields'][$k])) {
+                                       continue;
+                               }
+
+                               switch ($dbStructure[$table]['fields'][$k]['type']) {
+                                       case 'datetime':
+                                               $result[$k] = $v ?? DBA::NULL_DATETIME;
+                                               break;
+                                       default:
+                                               $result[$k] = $v;
+                                               break;
                                }
                        }
                }
+               DBA::close($rows);
 
                return $result;
        }