aboutsummaryrefslogtreecommitdiffhomepage
path: root/routes/preferences.php
blob: 40e41fd7d99f0300e0d39d7c7299e8fdbb50fd5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php

use Digitigrade\Model\UserAccount;
use Digitigrade\Router;
use Digitigrade\UserSettings;

Router::getInstance()->mount('/preferences', function (array $args) {
    $user = UserAccount::requireByCurrentSession();
    render_template('preferences_page', ['user' => $user]);
});

Router::getInstance()->mount('/fragment/preferences', function (array $args) {
    $user = UserAccount::requireByCurrentSession();
    $settings = new UserSettings($user);
    $saved = false;
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        // updating the preferences
        $user->actor->requestToFollow = $_POST['requestToFollow'] == 'true';
        $user->actor->setPokeable($_POST['pokeable'] == 'true');
        $user->actor->save();
        $settings->set('interface.smallUnreadIndicators', $_POST['smallIndicators']);
        $settings->set('locale.timezone', $_POST['timezone']);
        $settings->set('profile.rssEnabled', $_POST['rssEnabled']);
        $settings->set('noteDefaults.indexable', $_POST['notesIndexable']);

        $saved = true;
    }
    render_template('preferences_form', ['user' => $user, 'saved' => $saved]);
});

Router::getInstance()->mount('/fragment/changePassword', function (array $args) {
    $user = UserAccount::requireByCurrentSession();
    $error = null;
    $success = false;

    if (isset($_POST['current'], $_POST['new'], $_POST['newRepeat'])) {
        if (!$user->verifyPassword($_POST['current'])) {
            $error = 'currentIncorrect';
        } elseif ($_POST['new'] != $_POST['newRepeat']) {
            $error = 'doesntMatch';
        } else {
            $user->setPassword($_POST['new']);
            $user->save();
            $success = true;
        }
    }

    render_template('change_password_form', [
        'error' => isset($error) ? __("changePassword.error.$error") : null,
        'success' => $success,
        'current' => $success ? null : ($_POST['current'] ?? null),
        'new' => $success ? null : ($_POST['new'] ?? null),
        'newRepeat' => $success ? null : ($_POST['newRepeat'] ?? null)
    ]);
});