]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Settings/UserExport.php
Merge pull request #12020 from annando/no-boot
[friendica.git] / src / Module / Settings / UserExport.php
index cffa3b99ec1f2ac6571003915a4aed3798c86c3f..ccfd08b52c33a4b2544ce6769513605b1239f110 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
@@ -24,8 +24,8 @@ namespace Friendica\Module\Settings;
 use Friendica\App;
 use Friendica\Core\Hook;
 use Friendica\Core\Renderer;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
-use Friendica\Database\DBStructure;
 use Friendica\DI;
 use Friendica\Model\Item;
 use Friendica\Model\Post;
@@ -48,18 +48,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,10 +84,9 @@ 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 (!DI::app()->isLoggedIn()) {
                        throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
@@ -101,22 +99,21 @@ class UserExport extends BaseSettings
                        switch ($action) {
                                case "backup":
                                        header("Content-type: application/json");
-                                       header('Content-Disposition: attachment; filename="' . DI::app()->getNickname() . '.' . $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="' . DI::app()->getNickname() . '.' . $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="' . DI::app()->getNickname() . '-contacts.csv' . '"');
+                                       header('Content-Disposition: attachment; filename="' . DI::app()->getLoggedInUserNickname() . '-contacts.csv' . '"');
                                        self::exportContactsAsCSV(local_user());
                                        break;
                        }
-
-                       exit();
+                       System::exit();
                }
        }
 
@@ -127,7 +124,7 @@ class UserExport extends BaseSettings
         */
        private static function exportMultiRow(string $query)
        {
-               $dbStructure = DBStructure::definition(DI::app()->getBasePath(), false);
+               $dbStructure = DI::dbaDefinition()->getAll();
 
                preg_match("/\s+from\s+`?([a-z\d_]+)`?/i", $query, $match);
                $table = $match[1];
@@ -159,31 +156,30 @@ class UserExport extends BaseSettings
         */
        private static function exportRow(string $query)
        {
-               $dbStructure = DBStructure::definition(DI::app()->getBasePath(), false);
+               $dbStructure = DI::dbaDefinition()->getAll();
 
                preg_match("/\s+from\s+`?([a-z\d_]+)`?/i", $query, $match);
                $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;
        }
@@ -257,7 +253,7 @@ class UserExport extends BaseSettings
                );
 
                $output = [
-                       'version' => FRIENDICA_VERSION,
+                       'version' => App::VERSION,
                        'schema' => DB_UPDATE_VERSION,
                        'baseurl' => DI::baseUrl(),
                        'user' => $user,