示例#1
0
 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()]);
 }
示例#2
0
 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();
 }
示例#3
0
 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();
         }
     }
 }
示例#4
0
 /**
  * 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);
 }
示例#5
0
 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()]);
 }
示例#6
0
 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()]);
 }
示例#7
0
 /**
  * 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]])]);
 }