/** * Save current user to online cache */ public function online() { // Skip when signing in/out to avoid strange Fatal error if (strpos(URI::instance()->string(), 'sign') === 0) { return; } $user = Visitor::instance()->get_user(); $online = new Online_User_Model($_SESSION['session_id']); if (!$online->loaded()) { $online->session_id = $_SESSION['session_id']; } $online->last_activity = $_SESSION['last_activity']; $online->user_id = $user ? $user->id : null; try { $online->save(); } catch (ORM_Validation_Exception $e) { } }
/** * Home page */ public function index() { $this->page_title = __('Welcome to :site', array(':site' => Kohana::config('site.site_name'))); // Display news feed $newsfeed = new NewsFeed($this->user); $newsfeed->max_items = 25; widget::add('main', View_Mod::factory('generic/newsfeed', array('newsfeed' => $newsfeed->as_array()))); // Shout $shouts = ORM::factory('shout')->find_all(10); widget::add('side', View_Mod::factory('generic/shout', array('mod_title' => __('Shouts'), 'shouts' => $shouts, 'can_shout' => ORM::factory('shout')->has_access(Shout_Model::ACCESS_WRITE, $this->user), 'errors' => array(), 'values' => array()))); // Online $guests = Online_User_Model::get_guest_count(); $online = Online_User_Model::find_online_users(); $counts = array(); if ($guests) { $counts[] = __2(':guests guest', ':guests guests', $guests, array(':guests' => $guests)); } if (count($online)) { $counts[] = __2(':members member', ':members members', count($online), array(':members' => count($online))); } widget::add('side', View_Mod::factory('generic/users', array('mod_title' => __('Online') . ': ' . implode(', ', $counts), 'viewer' => $this->user, 'users' => $online))); }