]> git.mxchange.org Git - friendica.git/blobdiff - mod/removeme.php
New function "Item::storeForUserByUriId"
[friendica.git] / mod / removeme.php
index 6920cbc187be335b4f15a076c595577345231494..ee0a4c275b6f1f56745649596152593d051003d6 100644 (file)
@@ -1,20 +1,46 @@
 <?php
-
-function removeme_post(&$a) {
-
-       if (! local_user()) {
+/**
+ * @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/>.
+ *
+ */
+
+use Friendica\App;
+use Friendica\Core\Renderer;
+use Friendica\Database\DBA;
+use Friendica\DI;
+use Friendica\Model\User;
+use Friendica\Util\Strings;
+
+function removeme_post(App $a)
+{
+       if (!local_user()) {
                return;
        }
 
-       if (x($_SESSION,'submanage') && intval($_SESSION['submanage'])) {
+       if (!empty($_SESSION['submanage'])) {
                return;
        }
 
-       if ((! x($_POST,'qxz_password')) || (! strlen(trim($_POST['qxz_password'])))) {
+       if (empty($_POST['qxz_password'])) {
                return;
        }
 
-       if ((! x($_POST,'verify')) || (! strlen(trim($_POST['verify'])))) {
+       if (empty($_POST['verify'])) {
                return;
        }
 
@@ -22,39 +48,59 @@ function removeme_post(&$a) {
                return;
        }
 
-       $encrypted = hash('whirlpool',trim($_POST['qxz_password']));
+       // send notification to admins so that they can clean um the backups
+       // send email to admins
+       $admin_mails = explode(",", str_replace(" ", "", DI::config()->get('config', 'admin_email')));
+       foreach ($admin_mails as $mail) {
+               $admin = DBA::selectFirst('user', ['uid', 'language', 'email', 'username'], ['email' => $mail]);
+               if (!DBA::isResult($admin)) {
+                       continue;
+               }
+
+               $email = DI::emailer()
+                       ->newSystemMail()
+                       ->withMessage(
+                               DI::l10n()->t('[Friendica System Notify]') . ' ' . DI::l10n()->t('User deleted their account'),
+                               DI::l10n()->t('On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups.'),
+                               DI::l10n()->t('The user id is %d', local_user()))
+                       ->forUser($admin)
+                       ->withRecipient($admin['email'])
+                       ->build();
+               DI::emailer()->send($email);
+       }
+
+       if (User::getIdFromPasswordAuthentication($a->user, trim($_POST['qxz_password']))) {
+               User::remove($a->user['uid']);
 
-       if ((strlen($a->user['password'])) && ($encrypted === $a->user['password'])) {
-               require_once('include/Contact.php');
-               user_remove($a->user['uid']);
+               unset($_SESSION['authenticated']);
+               unset($_SESSION['uid']);
+               DI::baseUrl()->redirect();
                // NOTREACHED
        }
-
 }
 
-function removeme_content(&$a) {
-
-       if (! local_user()) {
-               goaway(z_root());
+function removeme_content(App $a)
+{
+       if (!local_user()) {
+               DI::baseUrl()->redirect();
        }
 
-       $hash = random_string();
+       $hash = Strings::getRandomHex();
 
        require_once("mod/settings.php");
        settings_init($a);
 
        $_SESSION['remove_account_verify'] = $hash;
 
-       $tpl = get_markup_template('removeme.tpl');
-       $o .= replace_macros($tpl, array(
-               '$basedir' => App::get_baseurl(),
+       $tpl = Renderer::getMarkupTemplate('removeme.tpl');
+       $o = Renderer::replaceMacros($tpl, [
+               '$basedir' => DI::baseUrl()->get(),
                '$hash' => $hash,
-               '$title' => t('Remove My Account'),
-               '$desc' => t('This will completely remove your account. Once this has been done it is not recoverable.'),
-               '$passwd' => t('Please enter your password for verification:'),
-               '$submit' => t('Remove My Account')
-       ));
+               '$title' => DI::l10n()->t('Remove My Account'),
+               '$desc' => DI::l10n()->t('This will completely remove your account. Once this has been done it is not recoverable.'),
+               '$passwd' => DI::l10n()->t('Please enter your password for verification:'),
+               '$submit' => DI::l10n()->t('Remove My Account')
+       ]);
 
        return $o;
-
 }