Phosphorum\Controllers\UsersController::settingsAction PHP Method

settingsAction() public method

Allow to change your user settings
public settingsAction ( )
    public function settingsAction()
    {
        $usersId = $this->session->get('identity');
        if (!$usersId) {
            $this->flashSession->error('You must be logged first');
            $this->response->redirect();
            return;
        }
        $user = Users::findFirstById($usersId);
        if (!$user) {
            $this->flashSession->error('The user does not exist');
            $this->response->redirect();
            return;
        }
        if ($this->request->isPost()) {
            if (!$this->checkTokenPost('settings')) {
                $this->response->redirect();
                return;
            }
            $user->timezone = $this->request->getPost('timezone');
            $user->notifications = $this->request->getPost('notifications');
            $user->theme = $this->request->getPost('theme');
            $user->digest = $this->request->getPost('digest');
            if ($user->save()) {
                $this->session->set('identity-theme', $user->theme);
                $this->session->get('identity-timezone', $user->timezone);
                $this->flashSession->success('Settings were successfully updated');
                $this->response->redirect();
                return;
            }
        } else {
            $this->tag->displayTo('timezone', $user->timezone);
            $this->tag->displayTo('notifications', $user->notifications);
            $this->tag->displayTo('theme', $user->theme);
            $this->tag->displayTo('digest', $user->digest);
        }
        $this->tag->setTitle('My Settings');
        $this->tag->setAutoescape(false);
        $this->view->setVars(['avatar' => $this->gravatar->getAvatar($user->email), 'user' => $user, 'subscribed' => $user->digest == 'Y', 'timezones' => $this->di->getShared('timezones'), 'numberPosts' => Posts::count(['users_id = ?0 AND deleted = 0', 'bind' => [$user->id]]), 'numberReplies' => PostsReplies::count(['users_id = ?0', 'bind' => [$user->id]])]);
    }