public function onConstruct() { $lastThreads = $this->modelsManager->createBuilder()->from(['p' => 'Phosphorum\\Models\\Posts'])->groupBy("p.id")->join('Phosphorum\\Models\\Categories', "r.id = p.categories_id", 'r')->join('Phosphorum\\Models\\Users', "u.id = p.users_id", 'u')->columns(['p.title as title_post', 'p.id as id_post', 'p.slug as slug_post', 'r.name as name_category', 'u.name as name_user'])->where('p.deleted = 0')->orderBy('p.created_at DESC')->limit(3)->getQuery()->execute(); /** @var Simple $lastMember */ $lastMember = Users::find(['order' => 'created_at DESC', 'limit' => 1, 'columns' => 'login']); $login = null; if ($lastMember->valid()) { $login = $lastMember->getFirst()->login; } $this->view->setVars(['app_name' => $this->config->get('site')->name, 'app_version' => VERSION, 'threads' => Posts::count(), 'last_threads' => $lastThreads, 'users' => Users::count(), 'users_latest' => $login, 'actionName' => $this->dispatcher->getActionName(), 'controllerName' => $this->dispatcher->getControllerName()]); }
public function statsAction() { $this->view->threads = Posts::count(); $this->view->replies = Posts::sum(array('column' => 'number_replies')); $this->view->votes = Posts::sum(array('column' => 'votes_up + votes_down')); $this->view->users = Users::count(); $this->view->karma = Users::sum(array('column' => 'karma')); $this->view->notifications = Notifications::count(); $this->view->unotifications = ActivityNotifications::count(); $this->view->views = Posts::sum(array('column' => 'number_views')); $this->view->irc = IrcLog::count(); }
public function karmaAction() { foreach (Users::find() as $user) { if ($user->karma === null) { $parametersNumbersPost = array('users_id = ?0', 'bind' => array($user->id)); $numberPosts = Posts::count($parametersNumbersPost); $parametersNumberReplies = array('users_id = ?0', 'bind' => array($user->id)); $numberReplies = PostsReplies::count($parametersNumberReplies); $user->karma = $numberReplies * 10 + $numberPosts * 5; $user->votes = intval($user->karma / 50); $user->save(); } } }
/** * Allow to change your user settings */ public function settingsAction() { $usersId = $this->session->get('identity'); if (!$usersId) { $this->flashSession->error('You must be logged first'); return $this->response->redirect(); } $user = Users::findFirstById($usersId); if (!$user) { $this->flashSession->error('The user does not exist'); return $this->response->redirect(); } if ($this->request->isPost()) { if (!$this->checkTokenPost()) { return $this->response->redirect(); } $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'); return $this->response->redirect(); } } 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->user = $user; $this->view->timezones = (require APP_PATH . '/app/config/timezones.php'); $parametersNumberPosts = ['users_id = ?0 AND deleted = 0', 'bind' => [$user->id]]; $this->view->numberPosts = Posts::count($parametersNumberPosts); $parametersNumberReplies = ['users_id = ?0', 'bind' => [$user->id]]; $this->gravatar->setSize(64); $this->view->numberReplies = PostsReplies::count($parametersNumberReplies); }
public function onConstruct() { $last_threads = $this->modelsManager->createBuilder()->from(array('p' => 'Phosphorum\\Models\\Posts'))->groupBy("p.id")->join('Phosphorum\\Models\\Categories', "r.id = p.categories_id", 'r')->join('Phosphorum\\Models\\Users', "u.id = p.users_id", 'u')->columns(array('p.title as title_post', 'p.id as id_post', 'p.slug as slug_post', 'r.name as name_category', 'u.name as name_user'))->orderBy('p.created_at DESC')->limit(3)->getQuery()->execute(); $users = Users::find()->getLast(); $this->view->setVars(['threads' => Posts::count(), 'last_threads' => $last_threads, 'users' => Users::count(), 'users_latest' => $users->login, 'actionName' => $this->dispatcher->getActionName()]); }
public function statsAction() { $this->breadcrumbs->add('Help', '/help')->add('Statistics', '/help/stats', ['linked' => false]); $this->tag->setTitle("Statistics"); $this->view->setVars(['threads' => Posts::count(), 'replies' => Posts::sum(['column' => 'number_replies']), 'votes' => Posts::sum(['column' => 'votes_up + votes_down']), 'users' => Users::count(), 'karma' => Users::sum(['column' => 'karma']), 'notifications' => Notifications::count(), 'unotifications' => ActivityNotifications::count(), 'views' => Posts::sum(['column' => 'number_views']), 'irc' => IrcLog::count()]); }
/** * Allow to change your user settings */ 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]])]); }