/** * Controller default action */ public function action_index() { $this->page_title = __('Welcome to :site', array(':site' => Kohana::config('site.site_name'))); // Display news feed $newsfeed = new NewsFeed(self::$user); $newsfeed->max_items = 25; Widget::add('main', View_Module::factory('generic/newsfeed', array('newsfeed' => $newsfeed->as_array()))); // Shout $shouts = Jelly::select('shout')->limit(10)->execute(); Widget::add('side', View_Module::factory('generic/shout', array('mod_title' => __('Shouts'), 'shouts' => $shouts, 'can_shout' => Permission::has(new Model_Shout(), Model_Shout::PERMISSION_CREATE), 'errors' => array(), 'values' => array()))); }
/** * 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))); }
/** * Get newsfeed items. * * @return array */ protected function _items() { switch ($this->type) { // Friend newsfeed case self::TYPE_FRIENDS: $newsfeed = new Newsfeed(Visitor::$user, Newsfeed::USERS); if (Visitor::$user) { $newsfeed->users = Visitor::$user->find_friends(0, 0); } break; // Single user newsfeed // Single user newsfeed case self::TYPE_PERSONAL: $newsfeed = new NewsFeed($this->user, Newsfeed::PERSONAL); break; // All users // All users case self::TYPE_ALL: default: $newsfeed = new NewsFeed(Visitor::$user, Newsfeed::ALL); break; } $newsfeed->max_items = $this->limit; return (array) $newsfeed->as_array(); }
/** * Controller default action */ public function action_index() { $user = $this->_get_user(); // Set generic page parameters $this->_set_page($user); // Helper variables $owner = self::$user && self::$user->id == $user->id; // Comments section if (Permission::has($user, Model_User::PERMISSION_COMMENTS, self::$user)) { $errors = array(); $values = array(); // Handle comment if (Permission::has($user, Model_User::PERMISSION_COMMENT, self::$user) && $_POST) { $comment = Jelly::factory('user_comment'); $comment->user = $user; $comment->author = self::$user; $comment->set(Arr::extract($_POST, Model_User_Comment::$editable_fields)); try { $comment->save(); // Receiver $user->comment_count++; if (!$owner) { $user->new_comment_count++; } $user->save(); // Sender self::$user->left_comment_count++; self::$user->save(); if (!$this->ajax) { $this->request->redirect(Route::get('user')->uri(array('username' => urlencode($user->username)))); } } catch (Validate_Exception $e) { $errors = $e->array->errors('validation'); $values = $comment; } } // Pagination $per_page = 25; $pagination = Pagination::factory(array('items_per_page' => $per_page, 'total_items' => max(1, $user->get('comments')->viewer(self::$user)->count()))); $view = View_Module::factory('generic/comments', array('mod_title' => __('Comments'), 'delete' => Route::get('user_comment')->uri(array('id' => '%d', 'commentaction' => 'delete')) . '?token=' . Security::csrf(), 'private' => Route::get('user_comment')->uri(array('id' => '%d', 'commentaction' => 'private')) . '?token=' . Security::csrf(), 'comments' => $user->get('comments')->viewer(self::$user)->pagination($pagination)->execute(), 'errors' => $errors, 'values' => $values, 'pagination' => $pagination, 'user' => self::$user)); if ($this->ajax) { echo $view; return; } Widget::add('main', $view); } // Display news feed $newsfeed = new NewsFeed($user, true); $newsfeed->max_items = 5; Widget::add('main', View_Module::factory('generic/newsfeed', array('newsfeed' => $newsfeed->as_array(), 'mini' => true)), Widget::TOP); // Slideshow if (count($user->images) > 1) { $images = array(); foreach ($user->images as $image) { $images[] = $image; } Widget::add('side', View_Module::factory('generic/image_slideshow', array('images' => array_reverse($images), 'default_id' => $user->default_image->id))); } // Portrait Widget::add('side', $this->_get_mod_image($user), Widget::TOP); // Info Widget::add('side', View_Module::factory('user/info', array('user' => $user)), Widget::TOP); }