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]])]);
}