Example #1
0
 /**
  * Displays specific groups
  **/
 public function viewGroup($group)
 {
     $mainframe =& JFactory::getApplication();
     CFactory::load('libraries', 'tooltip');
     CFactory::load('libraries', 'wall');
     CFactory::load('libraries', 'window');
     CFactory::load('libraries', 'videos');
     CFactory::load('libraries', 'activities');
     CFactory::load('helpers', 'group');
     CWindow::load();
     $config = CFactory::getConfig();
     $document = JFactory::getDocument();
     $groupLib = new CGroups();
     // Load appropriate models
     $groupModel = CFactory::getModel('groups');
     $wallModel = CFactory::getModel('wall');
     $userModel = CFactory::getModel('user');
     $discussModel = CFactory::getModel('discussions');
     $bulletinModel = CFactory::getModel('bulletins');
     $photosModel = CFactory::getModel('photos');
     $activityModel = CFactory::getModel('activities');
     //$groupid		= JRequest::getInt( 'groupid' , '' );
     //CError::assert( $groupid , '' , '!empty' , __FILE__ , __LINE__ );
     $editGroup = JRequest::getVar('edit', false, 'GET');
     $editGroup = $editGroup == 1 ? true : false;
     $params = $group->getParams();
     CFactory::load('helpers', 'string');
     $document->setMetaData('title', CStringHelper::escape($group->name));
     $document->setMetaData('description', CStringHelper::escape(strip_tags($group->description)));
     $document->addCustomTag('<link rel="image_src" href="' . JURI::root() . $group->thumb . '" />');
     // @rule: Test if the group is unpublished, don't display it at all.
     if (!$group->published) {
         $this->_redirectUnpublishGroup();
         return;
     }
     // Show submenu
     $this->showSubmenu();
     // Set the group info to contain proper <br>
     $group->description = nl2br($group->description);
     $this->addPathway(JText::_('COM_COMMUNITY_GROUPS'), CRoute::_('index.php?option=com_community&view=groups'));
     $this->addPathway(JText::sprintf('COM_COMMUNITY_GROUPS_NAME_TITLE', $group->name), '');
     // Load the current browsers data
     $my = CFactory::getUser();
     // If user are invited
     $isInvited = $groupModel->isInvited($my->id, $group->id);
     // Get members list for display
     //$members	= $groupModel->getAllMember($group->id);
     //Set limit for member listing on view group page
     $limit = 12;
     $approvedMembers = $groupModel->getMembers($group->id, $limit, true, false, true);
     CError::assert($approvedMembers, 'array', 'istype', __FILE__, __LINE__);
     $membersCount = $groupModel->total;
     // Is there any my friend is the member of this group?
     $join = '';
     $friendsCount = 0;
     if ($isInvited) {
         // Get the invitors
         $invitors = $groupModel->getInvitors($my->id, $group->id);
         if (count($invitors) == 1) {
             $user = CFactory::getUser($invitors[0]->creator);
             $join = '<a href="' . CUrlHelper::userLink($user->id) . '">' . $user->getDisplayName() . '</a>';
         } else {
             for ($i = 0; $i < count($invitors); $i++) {
                 $user = CFactory::getUser($invitors[$i]->creator);
                 if ($i + 1 == count($invitors)) {
                     $join .= ' ' . JText::_('COM_COMMUNITY_AND') . ' ' . '<a href="' . CUrlHelper::userLink($user->id) . '">' . $user->getDisplayName() . '</a>';
                 } else {
                     $join .= ', ' . '<a href="' . CUrlHelper::userLink($user->id) . '">' . $user->getDisplayName() . '</a>';
                 }
             }
         }
         // Get users friends in this group
         $friendsCount = $groupModel->getFriendsCount($my->id, $group->id);
     }
     $admins = $groupModel->getAdmins($group->id, $limit, CC_RANDOMIZE);
     // Get list of unapproved members
     $groupModel->getMembers($group->id, null, false);
     $unapproved = $groupModel->total;
     //Get list of approved members
     // Test if the current user is admin
     $isAdmin = $groupModel->isAdmin($my->id, $group->id);
     // Test if the current browser is a member of the group
     $isMember = $groupModel->isMember($my->id, $group->id);
     $waitingApproval = false;
     // Test if the current user is banned from this group
     $isBanned = $group->isBanned($my->id);
     // Attach avatar of the member
     // Pre-load multiple users at once
     $userids = array();
     $limitloop = $limit;
     foreach ($approvedMembers as $uid) {
         $userids[] = $uid->id;
         if (--$limitloop < 1) {
             break;
         }
     }
     CFactory::loadUsers($userids);
     $limitloop = $limit;
     for ($i = 0; $i < count($approvedMembers); $i++) {
         $row =& $approvedMembers[$i];
         $approvedMembers[$i] = CFactory::getUser($row->id);
         if (--$limitloop < 1) {
             break;
         }
     }
     if ($isBanned) {
         $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_GROUPS_MEMBER_BANNED'), 'error');
     }
     // If I have tried to join this group, but not yet approved, display a notice
     if ($groupModel->isWaitingAuthorization($my->id, $group->id)) {
         $waitingApproval = true;
     }
     // Get the walls
     if (!$isBanned) {
         $wallContent = CWallLibrary::getWallContents('groups', $group->id, $isAdmin, 10, 0, 'wall.content', 'groups,group');
     } else {
         $wallContent = CWallLibrary::getWallContents('groups', $group->id, $isAdmin, 10, 0, 'wall.content', 'groups,group', null, '1');
     }
     $wallCount = CWallLibrary::getWallCount('groups', $group->id);
     $viewAllLink = false;
     if (JRequest::getVar('task', '', 'REQUEST') != 'app') {
         $viewAllLink = CRoute::_('index.php?option=com_community&view=groups&task=app&groupid=' . $group->id . '&app=walls');
     }
     $wallContent .= CWallLibrary::getViewAllLinkHTML($viewAllLink, $wallCount);
     $wallForm = '';
     CFactory::load('helpers', 'owner');
     if (!$config->get('lockgroupwalls') || $config->get('lockgroupwalls') && ($isMember && !$isBanned) && !$waitingApproval || COwnerHelper::isCommunityAdmin()) {
         $wallForm = CWallLibrary::getWallInputForm($group->id, 'groups,ajaxSaveWall', 'groups,ajaxRemoveWall');
     }
     // Get like
     CFactory::load('libraries', 'like');
     $likes = new CLike();
     $likesHTML = $isMember && !$isBanned ? $likes->getHTML('groups', $group->id, $my->id) : $likes->getHtmlPublic('groups', $group->id);
     // Get discussions data
     $discussionData = $this->_cachedCall('_getDiscussionListHTML', array($params, $group->id), $group->id, array(COMMUNITY_CACHE_TAG_GROUPS_DETAIL));
     $discussionsHTML = $discussionData['HTML'];
     $totalDiscussion = $discussionData['total'];
     $discussions = $discussionData['data'];
     // Get bulletins data
     $bulletinData = $this->_cachedCall('_getBulletinListHTML', array($group->id), $group->id, array(COMMUNITY_CACHE_TAG_GROUPS_DETAIL));
     $totalBulletin = $bulletinData['total'];
     $bulletinsHTML = $bulletinData['HTML'];
     $bulletins = $bulletinData['data'];
     // Get album data
     $albumData = $this->_cachedCall('_getAlbums', array($params, $group->id), $group->id, array(COMMUNITY_CACHE_TAG_GROUPS_DETAIL));
     $albums = $albumData['data'];
     $totalAlbums = $albumData['total'];
     // Get video data
     $videoData = $this->_getVideos($params, $group->id);
     $videos = $videoData['data'];
     $totalVideos = $videoData['total'];
     $tmpl = new CTemplate();
     // Get categories list
     // We should really load this in saperate file
     // @todo: editing group should really open a new page
     if ($my->id == $group->ownerid || COwnerHelper::isCommunityAdmin()) {
         $categories = $groupModel->getCategories();
         CError::assert($categories, 'array', 'istype', __FILE__, __LINE__);
         $tmpl->set('categories', $categories);
     }
     $isMine = $my->id == $group->ownerid;
     // Get reporting html
     CFactory::load('libraries', 'reporting');
     $report = new CReportingLibrary();
     $reportHTML = $report->getReportingHTML(JText::_('COM_COMMUNITY_REPORT_GROUP'), 'groups,reportGroup', array($group->id));
     $isSuperAdmin = COwnerHelper::isCommunityAdmin();
     if ($group->approvals == '1' && !$isMine && !$isMember && !$isSuperAdmin) {
         $this->addWarning(JText::_('COM_COMMUNITY_GROUPS_PRIVATE_NOTICE'));
     }
     $videoThumbWidth = CVideoLibrary::thumbSize('width');
     $videoThumbHeight = CVideoLibrary::thumbSize('height');
     $eventsModel = CFactory::getModel('Events');
     $tmpEvents =& $eventsModel->getGroupEvents($group->id, $params->get('grouprecentevents', GROUP_EVENT_RECENT_LIMIT));
     $totalEvents = $eventsModel->getTotalGroupEvents($group->id);
     $events = array();
     foreach ($tmpEvents as $event) {
         $table =& JTable::getInstance('Event', 'CTable');
         $table->bind($event);
         $events[] = $table;
     }
     $allowManagePhotos = CGroupHelper::allowManagePhoto($group->id);
     $allowManageVideos = CGroupHelper::allowManageVideo($group->id);
     $allowCreateEvent = CGroupHelper::allowCreateEvent($my->id, $group->id);
     CFactory::load('libraries', 'bookmarks');
     $bookmarks = new CBookmarks(CRoute::getExternalURL('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id));
     $bookmarksHTML = $bookmarks->getHTML();
     $isCommunityAdmin = COwnerHelper::isCommunityAdmin();
     if ($group->approvals == '0' || $isMine || $isMember && !$isBanned || $isCommunityAdmin) {
         // Set feed url
         $feedLink = CRoute::_('index.php?option=com_community&view=groups&task=viewbulletins&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_TO_BULLETIN_FEEDS') . '" href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=groups&task=viewdiscussions&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_TO_DISCUSSION_FEEDS') . '" href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=photos&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_TO_GROUP_PHOTOS_FEEDS') . '" href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=videos&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_TO_GROUP_VIDEOS_FEEDS') . '"  href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=events&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_TO_GROUP_EVENTS_FEEDS') . '"  href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
     }
     $friendsModel = CFactory::getModel('Friends');
     $groupsModel = CFactory::getModel('Groups');
     CFactory::load('libraries', 'invitation');
     $inviteHTML = CInvitation::getHTML(null, 'groups,inviteUsers', $group->id);
     // Add tagging code
     /*
     $tagsHTML = '';
     if($config->get('tags_groups')){
     	CFactory::load('libraries', 'tags');
     	$tags = new CTags();
     	$tagsHTML = $tags->getHTML('groups', $group->id, $isAdmin );
     }
     */
     // Upgrade wall to stream @since 2.5
     if (!$params->get('stream', FALSE)) {
         $group->upgradeWallToStream();
     }
     // Add custom stream
     $activities = new CActivities();
     $streamHTML = $groupLib->getStreamHTML($group);
     $totalStream = $activityModel->getTotalActivities(array("`groupid` = '{$group->id}'"));
     CFactory::load('libraries', 'userstatus');
     $creators = array();
     $creators[] = CUserStatusCreator::getMessageInstance();
     if ($isAdmin && $params->get('photopermission') == 1 || $isMember && $params->get('photopermission') == 2) {
         $creators[] = CUserStatusCreator::getPhotoInstance();
     }
     if ($isAdmin && $params->get('videopermission') == 1 || $isMember && $params->get('videopermission') == 2) {
         $creators[] = CUserStatusCreator::getVideoInstance();
     }
     if ($allowCreateEvent && $config->get('group_events') && $config->get('enableevents') && ($config->get('createevents') || COwnerHelper::isCommunityAdmin())) {
         $creators[] = CUserStatusCreator::getEventInstance();
     }
     $status = new CUserStatus($group->id, 'groups', $creators);
     // Get Event Admins
     $groupAdmins = $group->getAdmins(12, CC_RANDOMIZE);
     $adminsInArray = array();
     // Attach avatar of the admin
     for ($i = 0; $i < count($groupAdmins); $i++) {
         $row =& $groupAdmins[$i];
         $admin = CFactory::getUser($row->id);
         array_push($adminsInArray, '<a href="' . CUrlHelper::userLink($admin->id) . '">' . $admin->getDisplayName() . '</a>');
     }
     $adminsList = ltrim(implode(', ', $adminsInArray), ',');
     echo $tmpl->setMetaTags('group', $group)->set('streamHTML', $streamHTML)->set('status', $status)->set('likesHTML', $likesHTML)->set('events', $events)->set('totalEvents', $totalEvents)->set('inviteHTML', $inviteHTML)->set('showEvents', $config->get('group_events') && $config->get('enableevents'))->set('showPhotos', $params->get('photopermission') != -1)->set('showVideos', $params->get('videopermission') != -1)->set('bookmarksHTML', $bookmarksHTML)->set('allowManagePhotos', $allowManagePhotos)->set('allowManageVideos', $allowManageVideos)->set('allowCreateEvent', $allowCreateEvent)->set('videos', $videos)->set('videoThumbWidth', $videoThumbWidth)->set('videoThumbHeight', $videoThumbHeight)->set('totalVideos', $totalVideos)->set('albums', $albums)->set('totalAlbums', $totalAlbums)->set('reportHTML', $reportHTML)->set('editGroup', $editGroup)->set('waitingApproval', $waitingApproval)->set('config', $config)->set('my', $my)->set('isMine', $isMine)->set('isAdmin', $isAdmin)->set('isSuperAdmin', $isSuperAdmin)->set('isMember', $isMember)->set('isInvited', $isInvited)->set('friendsCount', $friendsCount)->set('join', $join)->set('unapproved', $unapproved)->set('membersCount', $membersCount)->set('group', $group)->set('totalBulletin', $totalBulletin)->set('totalDiscussion', $totalDiscussion)->set('totalVideos', $totalVideos)->set('members', $approvedMembers)->set('bulletins', $bulletins)->set('wallForm', $wallForm)->set('wallContent', $wallContent)->set('discussions', $discussions)->set('discussionsHTML', $discussionsHTML)->set('bulletinsHTML', $bulletinsHTML)->set('isCommunityAdmin', $isCommunityAdmin)->set('isBanned', $isBanned)->set('isPrivate', $group->approvals)->set('limit', $limit)->set('adminsList', $adminsList)->set('alertNewDiscussion', $my->count('group_discussion_' . $group->id) != $totalDiscussion)->set('alertNewBulletin', $my->count('group_bulletin_' . $group->id) != $totalBulletin)->set('alertNewStream', $my->count('group_activity_' . $group->id) != $totalStream)->fetch('groups.viewgroup');
     // Update stream count cache, can only set this after we've set the alert aove
     $my->setCount('group_activity_' . $group->id, $totalStream);
 }
Example #2
0
 /**
  * Show the main profile header
  */
 private function _showHeader(&$data)
 {
     jimport('joomla.utilities.arrayhelper');
     $mainframe = JFactory::getApplication();
     $jinput = $mainframe->input;
     $my = CFactory::getUser();
     $userid = $jinput->get('userid', $my->id, 'INT');
     //JRequest::getVar('userid', $my->id);
     $user = CFactory::getUser($userid);
     $params = $user->getParams();
     $userModel = CFactory::getModel('user');
     //CFactory::load ( 'libraries', 'messaging' );
     $isMine = COwnerHelper::isMine($my->id, $user->id);
     // Get the admin controls HTML data
     $adminControlHTML = '';
     $tmpl = new CTemplate();
     // get how many unread message
     $filter = array();
     $inboxModel = CFactory::getModel('inbox');
     $filter['user_id'] = $my->id;
     $unread = $inboxModel->countUnRead($filter);
     // get how many pending connection
     $friendModel = CFactory::getModel('friends');
     $pending = $friendModel->countPending($my->id);
     $profile = JArrayHelper::toObject($data->profile);
     $profile->largeAvatar = $user->getAvatar();
     $profile->status = $user->getStatus();
     if ($profile->status !== '') {
         $postedOn = new JDate($user->_posted_on);
         $postedOn = CActivityStream::_createdLapse($postedOn);
         $profile->posted_on = $user->_posted_on == '0000-00-00 00:00:00' ? '' : $postedOn;
     } else {
         $profile->posted_on = '';
     }
     // Assign videoId
     $profile->profilevideo = $data->videoid;
     $video = JTable::getInstance('Video', 'CTable');
     $video->load($profile->profilevideo);
     $profile->profilevideoTitle = $video->getTitle();
     $addbuddy = "joms.api.friendAdd('{$profile->id}')";
     $sendMsg = CMessaging::getPopup($profile->id);
     $config = CFactory::getConfig();
     $lastLogin = JText::_('COM_COMMUNITY_PROFILE_NEVER_LOGGED_IN');
     if ($user->lastvisitDate != '0000-00-00 00:00:00') {
         //$now = JFactory::getDate();
         $userLastLogin = new JDate($user->lastvisitDate);
         //CFactory::load( 'libraries' , 'activities');
         $lastLogin = CActivityStream::_createdLapse($userLastLogin);
     }
     // @todo : beside checking the owner, maybe we want to check for a cookie,
     // say every few hours only the hit get increment by 1.
     if (!$isMine) {
         $user->viewHit();
     }
     // @rule: myblog integrations
     $showBlogLink = false;
     //CFactory::load( 'libraries' , 'myblog' );
     $myblog = CMyBlog::getInstance();
     if ($config->get('enablemyblogicon') && $myblog) {
         if ($myblog->userCanPost($user->id)) {
             $showBlogLink = true;
         }
         $tmpl->set('blogItemId', $myblog->getItemId());
     }
     $multiprofile = JTable::getInstance('MultiProfile', 'CTable');
     $multiprofile->load($user->getProfileType());
     // Get like
     $likesHTML = '';
     if ($user->getParams()->get('profileLikes', true)) {
         //CFactory::load( 'libraries' , 'like' );
         $likes = new CLike();
         $likesHTML = $my->id == 0 ? $likes->getHtmlPublic('profile', $user->id) : $likes->getHTML('profile', $user->id, $my->id);
     }
     $status = new CUserStatus($user->id, 'profile');
     //respect wall setting
     if ($my->id && (!$config->get('lockprofilewalls') || $config->get('lockprofilewalls') && CFriendsHelper::isConnected($my->id, $profile->id)) || COwnerHelper::isCommunityAdmin()) {
         // Add default status box
         CUserHelper::addDefaultStatusCreator($status);
     }
     $isblocked = $user->isBlocked();
     return $tmpl->set('karmaImgUrl', CUserPoints::getPointsImage($user))->set('isMine', $isMine)->set('lastLogin', $lastLogin)->set('user', $user)->set('addBuddy', $addbuddy)->set('sendMsg', $sendMsg)->set('config', $config)->set('multiprofile', $multiprofile)->set('showBlogLink', $showBlogLink)->set('isFriend', CFriendsHelper::isConnected($user->id, $my->id) && $user->id != $my->id)->set('isWaitingApproval', CFriendsHelper::isWaitingApproval($my->id, $user->id))->set('isBlocked', $isblocked)->set('profile', $profile)->set('unread', $unread)->set('pending', $pending)->set('registerDate', $user->registerDate)->set('adminControlHTML', $adminControlHTML)->set('likesHTML', $likesHTML)->set('userstatus', $status)->fetch('profile.header');
 }
Example #3
0
 /**
  * Displays the viewing profile page.
  *
  * @access	public
  * @param	array  An associative array to display the fields
  */
 function profile(&$data)
 {
     $mainframe =& JFactory::getApplication();
     $my = CFactory::getUser();
     $config = CFactory::getConfig();
     $userid = JRequest::getVar('userid', $my->id);
     $user = CFactory::getUser($userid);
     $userId = JRequest::getVar('userid', '', 'GET');
     if ($my->id != 0 && empty($userId)) {
         CFactory::setActiveProfile($my->id);
         $user = $my;
     }
     // Display breadcrumb regardless whether the user is blocked or not
     $pathway =& $mainframe->getPathway();
     $pathway->addItem($user->getDisplayName(), '');
     // Get profile video information
     $params = $user->getParams();
     $videoid = $params->get('profileVideo', 0);
     CFactory::load('helpers', 'owner');
     $blocked = $user->isBlocked();
     if ($blocked && !COwnerHelper::isCommunityAdmin()) {
         $tmpl = new CTemplate();
         echo $tmpl->fetch('profile.blocked');
         return;
     }
     // If the current browser is a site admin, display some notice that user is blocked.
     if ($blocked) {
         $this->addWarning(JText::_('CC USER ACCOUNT BANNED'));
     }
     // access check
     if (!$this->accessAllowed('privacyProfileView')) {
         return;
     }
     require_once JPATH_COMPONENT . DS . 'libraries' . DS . 'userpoints.php';
     $appsLib =& CAppPlugins::getInstance();
     $appsLib->loadApplications();
     CFactory::load('helpers', 'string');
     $document =& JFactory::getDocument();
     $status = $user->getStatus(COMMUNITY_RAW_STATUS);
     $status = empty($status) ? '' : ' : ' . $status;
     $document->setTitle($user->getDisplayName(COMMUNITY_RAW_STATUS) . $status);
     $document->setMetaData('description', JText::sprintf('CC PROFILE META DESCRIPTION', $user->getDisplayName(), $config->get('sitename'), CStringHelper::escape($status)));
     $feedLink = CRoute::_('index.php?option=com_community&view=profile&userid=' . $user->id . '&format=feed');
     $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('CC SUBSCRIBE TO USER FEEDS') . '"  href="' . $feedLink . '"/>';
     $mainframe->addCustomHeadTag($feed);
     $feedLink = CRoute::_('index.php?option=com_community&view=profile&userid=' . $user->id . '&showfriends=true&format=feed');
     $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('CC SUBSCRIBE TO USER FRIENDS FEEDS') . '"  href="' . $feedLink . '"/>';
     $mainframe->addCustomHeadTag($feed);
     $feedLink = CRoute::_('index.php?option=com_community&view=photos&task=myphotos&userid=' . $user->id . '&format=feed');
     $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('CC SUBSCRIBE TO USER PHOTO FEEDS') . '"  href="' . $feedLink . '"/>';
     $mainframe->addCustomHeadTag($feed);
     $feedLink = CRoute::_('index.php?option=com_community&view=videos&userid=' . $user->id . '&format=feed');
     $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('CC SUBSCRIBE TO USER VIDEO FEEDS') . '"  href="' . $feedLink . '"/>';
     $mainframe->addCustomHeadTag($feed);
     // Get profile video information
     $params = $user->getParams();
     $data->videoid = $params->get('profileVideo', 0);
     // Show profile header
     $headerHTML = $this->_showHeader($data);
     // Load user application
     $apps = $data->apps;
     // Load community applications plugin
     $app =& CAppPlugins::getInstance();
     $appsModel = CFactory::getModel('apps');
     $tmpAppData = $app->triggerEvent('onProfileDisplay', '', true);
     $appData = array();
     // @rule: Only display necessary apps.
     $count = count($tmpAppData);
     for ($i = 0; $i < $count; $i++) {
         $app =& $tmpAppData[$i];
         $privacy = $appsModel->getPrivacy($user->id, $app->name);
         if ($this->appPrivacyAllowed($privacy)) {
             $appData[] = $app;
         }
     }
     unset($tmpAppData);
     // Split the apps into different list for different positon
     $appsInPositions = array();
     foreach ($appData as &$app) {
         $appsInPositions[$app->position][] = $app;
     }
     $tmpl = new CTemplate();
     $contenHTML = array();
     $contenHTML['content'] = '';
     $contenHTML['sidebar-top'] = '';
     $contenHTML['sidebar-bottom'] = '';
     $jscript = '';
     foreach ($appsInPositions as $position => $appData) {
         ob_start();
         foreach ($appData as $app) {
             // If the apps content is empty, we ignore this app from showing
             // the header in profile page.
             if (JString::trim($app->data) == "") {
                 continue;
             }
             $tmpl->set('app', $app);
             $tmpl->set('isOwner', COwnerHelper::isMine($my->id, $user->id));
             switch ($position) {
                 case 'sidebar-top':
                 case 'sidebar-bottom':
                     echo $tmpl->fetch('application.widget');
                     break;
                 default:
                     echo $tmpl->fetch('application.box');
             }
         }
         $contenHTML[$position] = ob_get_contents();
         ob_end_clean();
     }
     // Get the config
     $config = CFactory::getConfig();
     // get total group
     $groupsModel = CFactory::getModel('groups');
     $totalgroups = $groupsModel->getGroupsCount($user->id);
     // get total friend
     $friendsModel = CFactory::getModel('friends');
     $totalfriends = $user->getFriendCount();
     // get total photos
     $photosModel = CFactory::getModel('photos');
     $totalphotos = $photosModel->getPhotosCount($user->id);
     // get total activities
     $activitiesModel = CFactory::getModel('activities');
     $totalactivities = $activitiesModel->getActivityCount($user->id);
     $isMine = COwnerHelper::isMine($my->id, $user->id);
     $isCommunityAdmin = COwnerHelper::isCommunityAdmin($user->id);
     // Get reporting html
     CFactory::load('libraries', 'reporting');
     $report = new CReportingLibrary();
     $reportHTML = $isMine ? '' : $report->getReportingHTML(JText::_('CC REPORT BAD USER'), 'profile,reportProfile', array($user->id));
     // Check if user is blocked
     $blockUserModel = CFactory::getModel('block');
     $isBlocked = $blockUserModel->getBlockStatus($user->id, $my->id);
     // Get block user html
     CFactory::load('helpers', 'user');
     $blockUserHTML = $isMine || $isCommunityAdmin ? '' : CUserHelper::getBlockUserHTML($user->id, $isBlocked);
     CFactory::load('libraries', 'bookmarks');
     $bookmarks = new CBookmarks(CRoute::getExternalURL('index.php?option=com_community&view=profile&userid=' . $user->id));
     $bookmarksHTML = $bookmarks->getHTML();
     // Get like
     // cater for buble, blueface template
     $likesHTML = '';
     if ($user->getParams()->get('profileLikes', true)) {
         CFactory::load('libraries', 'like');
         $likes = new CLike();
         $likesHTML = $my->id == 0 ? $likes->getHtmlPublic('profile', $user->id) : $likes->getHTML('profile', $user->id, $my->id);
     }
     $tmpl = new CTemplate();
     $tmpl->set('blockUserHTML', $blockUserHTML);
     $tmpl->set('bookmarksHTML', $bookmarksHTML);
     $tmpl->set('profileOwnerName', $user->getDisplayName());
     $tmpl->set('totalgroups', $totalgroups);
     $tmpl->set('totalfriends', $totalfriends);
     $tmpl->set('totalphotos', $totalphotos);
     $tmpl->set('totalactivities', $totalactivities);
     $tmpl->set('reportsHTML', $reportHTML);
     $tmpl->set('mainframe', $mainframe);
     $tmpl->set('config', $config);
     $tmpl->set('about', $this->_getProfileHTML($data->profile));
     $tmpl->set('friends', $this->_getFriendsHTML());
     $tmpl->set('groups', $this->_getGroupsHTML());
     $tmpl->set('newsfeed', $this->_getNewsfeedHTML());
     $tmpl->set('header', $headerHTML);
     $tmpl->set('adminControlHTML', $this->_getAdminControlHTML($user->id));
     $tmpl->set('content', $contenHTML['content']);
     $tmpl->set('sidebarTop', $contenHTML['sidebar-top']);
     $tmpl->set('sidebarBottom', $contenHTML['sidebar-bottom']);
     $tmpl->set('isMine', $isMine);
     $tmpl->set('jscript', '');
     // maintain for 1.8.0 template compatibility
     $tmpl->setRef('user', $user);
     $tmpl->set('my', $my);
     $tmpl->set('videoid', $data->videoid);
     $tmpl->set('likesHTML', $likesHTML);
     $html = $tmpl->fetch('profile.index');
     echo $html;
 }
Example #4
0
 /**
  * Displays specific groups
  **/
 function viewGroup()
 {
     $mainframe =& JFactory::getApplication();
     CFactory::load('libraries', 'tooltip');
     CFactory::load('libraries', 'wall');
     CFactory::load('libraries', 'window');
     CWindow::load();
     $config = CFactory::getConfig();
     $document =& JFactory::getDocument();
     // Load appropriate models
     $groupModel = CFactory::getModel('groups');
     $wallModel = CFactory::getModel('wall');
     $userModel = CFactory::getModel('user');
     $discussModel = CFactory::getModel('discussions');
     $bulletinModel = CFactory::getModel('bulletins');
     $photosModel = CFactory::getModel('photos');
     $groupid = JRequest::getInt('groupid', '');
     CError::assert($groupid, '', '!empty', __FILE__, __LINE__);
     $editGroup = JRequest::getVar('edit', false, 'GET');
     $editGroup = $editGroup == 1 ? true : false;
     // Load the group table.
     $group =& JTable::getInstance('Group', 'CTable');
     $group->load($groupid);
     $params = $group->getParams();
     CFactory::load('helpers', 'string');
     $mainframe->appendMetaTag('title', CStringHelper::escape($group->name));
     $mainframe->appendMetaTag('description', CStringHelper::escape(strip_tags($group->description)));
     $mainframe->addCustomHeadTag('<link rel="image_src" href="' . JURI::root() . $group->thumb . '" />');
     // @rule: Test if the group is unpublished, don't display it at all.
     if (!$group->published) {
         echo JText::_('CC GROUP UNPUBLISHED');
         return;
     }
     // Show submenu
     $this->showSubmenu();
     // Set the group info to contain proper <br>
     $group->description = nl2br($group->description);
     $this->addPathway(JText::_('CC GROUPS'), CRoute::_('index.php?option=com_community&view=groups'));
     $this->addPathway(JText::sprintf('CC VIEW GROUP TITLE', $group->name), '');
     // Load the current browsers data
     $my = CFactory::getUser();
     // If user are invited
     $isInvited = $groupModel->isInvited($my->id, $groupid);
     // Get members list for display
     $members = $groupModel->getMembers($groupid, 12, true, CC_RANDOMIZE, true);
     $membersCount = $groupModel->total;
     CError::assert($members, 'array', 'istype', __FILE__, __LINE__);
     // Is there any my friend is the member of this group?
     $join = '';
     $friendsCount = 0;
     if ($isInvited) {
         // Get the invitors
         $invitors = $groupModel->getInvitors($my->id, $groupid);
         if (count($invitors) == 1) {
             $user = CFactory::getUser($invitors[0]->creator);
             $join = '<a href="' . CUrlHelper::userLink($user->id) . '">' . $user->getDisplayName() . '</a>';
         } else {
             for ($i = 0; $i < count($invitors); $i++) {
                 $user = CFactory::getUser($invitors[$i]->creator);
                 if ($i + 1 == count($invitors)) {
                     $join .= ' ' . JText::_('CC AND') . ' ' . '<a href="' . CUrlHelper::userLink($user->id) . '">' . $user->getDisplayName() . '</a>';
                 } else {
                     $join .= ', ' . '<a href="' . CUrlHelper::userLink($user->id) . '">' . $user->getDisplayName() . '</a>';
                 }
             }
         }
         // Get users friends in this group
         $friendsCount = $groupModel->getFriendsCount($my->id, $groupid);
     }
     $admins = $groupModel->getAdmins($groupid, 12, CC_RANDOMIZE);
     $adminsCount = $groupModel->total;
     // Get the news
     $bulletins = $bulletinModel->getBulletins($group->id);
     $totalBulletin = $bulletinModel->total;
     CError::assert($bulletins, 'array', 'istype', __FILE__, __LINE__);
     // Get discussions
     $discussions = $discussModel->getDiscussionTopics($group->id, '10', $params->get('discussordering', DISCUSSION_ORDER_BYLASTACTIVITY));
     $totalDiscussion = $discussModel->total;
     CError::assert($discussions, 'array', 'istype', __FILE__, __LINE__);
     // Get list of unapproved members
     $unapproved = $groupModel->getMembers($group->id, null, false);
     // Attach avatar of the member to the discussions
     for ($i = 0; $i < count($discussions); $i++) {
         $row =& $discussions[$i];
         $row->user = CFactory::getUser($row->creator);
         // Get last replier for the discussion
         $row->lastreplier = $discussModel->getLastReplier($row->id);
         if ($row->lastreplier) {
             $row->lastreplier->post_by = CFactory::getUser($row->lastreplier->post_by);
         }
     }
     // Attach avatar of the admin
     for ($i = 0; $i < count($admins); $i++) {
         $row =& $admins[$i];
         $admins[$i] = CFactory::getUser($row->id);
     }
     // Attach avatar of the member
     // Pre-load multiple users at once
     $userids = array();
     foreach ($members as $uid) {
         $userids[] = $uid->id;
     }
     CFactory::loadUsers($userids);
     for ($i = 0; $i < count($members); $i++) {
         $row =& $members[$i];
         $members[$i] = CFactory::getUser($row->id);
     }
     // Test if the current user is admin
     $isAdmin = $groupModel->isAdmin($my->id, $group->id);
     // Test if the current browser is a member of the group
     $isMember = $group->isMember($my->id);
     $waitingApproval = false;
     // Test if the current user is banned from this group
     $isBanned = $group->isBanned($my->id);
     if ($isBanned) {
         $mainframe->enqueueMessage(JText::_('CC GROUP MEMBER BANNED'), 'error');
     }
     // If I have tried to join this group, but not yet approved, display a notice
     if ($groupModel->isWaitingAuthorization($my->id, $group->id)) {
         $waitingApproval = true;
     }
     // Get the walls
     $wallContent = CWallLibrary::getWallContents('groups', $group->id, $isAdmin, 10, 0, 'wall.content', 'groups,group');
     $wallCount = CWallLibrary::getWallCount('groups', $group->id);
     $viewAllLink = false;
     if (JRequest::getVar('task', '', 'REQUEST') != 'app') {
         $viewAllLink = CRoute::_('index.php?option=com_community&view=groups&task=app&groupid=' . $group->id . '&app=walls');
     }
     $wallContent .= CWallLibrary::getViewAllLinkHTML($viewAllLink, $wallCount);
     $wallForm = '';
     CFactory::load('helpers', 'owner');
     if (!$config->get('lockgroupwalls') || $config->get('lockgroupwalls') && ($isMember && !$isBanned) && !$waitingApproval || COwnerHelper::isCommunityAdmin()) {
         $wallForm = CWallLibrary::getWallInputForm($group->id, 'groups,ajaxSaveWall', 'groups,ajaxRemoveWall');
     }
     // Get like
     CFactory::load('libraries', 'like');
     $likes = new CLike();
     $likesHTML = $isMember && !$isBanned ? $likes->getHTML('groups', $group->id, $my->id) : $likes->getHtmlPublic('groups', $group->id);
     // Process discussions HTML output
     $tmpl = new CTemplate();
     $tmpl->set('discussions', $discussions);
     $tmpl->set('groupId', $group->id);
     $discussionsHTML = $tmpl->fetch('groups.discussionlist');
     unset($tmpl);
     // Get the creator of the discussions
     for ($i = 0; $i < count($bulletins); $i++) {
         $row =& $bulletins[$i];
         $row->creator = CFactory::getUser($row->created_by);
     }
     // Only trigger the bulletins if there is really a need to.
     if (!empty($bulletins)) {
         $appsLib =& CAppPlugins::getInstance();
         $appsLib->loadApplications();
         // Format the bulletins
         // the bulletins need to be an array or reference to work around
         // PHP 5.3 pass by value
         $args = array();
         foreach ($bulletins as &$b) {
             $args[] =& $b;
         }
         $appsLib->triggerEvent('onBulletinDisplay', $args);
     }
     // Process bulletins HTML output
     $tmpl = new CTemplate();
     $tmpl->set('bulletins', $bulletins);
     $tmpl->set('groupId', $group->id);
     $bulletinsHTML = $tmpl->fetch('groups.bulletinlist');
     unset($tmpl);
     $tmpl = new CTemplate();
     // Get categories list
     // We should really load this in saperate file
     // @todo: editing group should really open a new page
     if ($my->id == $group->ownerid || COwnerHelper::isCommunityAdmin()) {
         $categories = $groupModel->getCategories();
         CError::assert($categories, 'array', 'istype', __FILE__, __LINE__);
         $tmpl->set('categories', $categories);
     }
     $isMine = $my->id == $group->ownerid;
     // Get reporting html
     CFactory::load('libraries', 'reporting');
     $report = new CReportingLibrary();
     $reportHTML = $report->getReportingHTML(JText::_('CC REPORT GROUP'), 'groups,reportGroup', array($group->id));
     $isSuperAdmin = COwnerHelper::isCommunityAdmin();
     if ($group->approvals == '1' && !$isMine && !$isMember && !$isSuperAdmin) {
         $this->addWarning(JText::_('CC PRIVATE GROUP NOTICE'));
     }
     $albums =& $photosModel->getGroupAlbums($group->id, true, false, $params->get('grouprecentphotos', GROUP_PHOTO_RECENT_LIMIT));
     $totalAlbums = $photosModel->total;
     CFactory::load('helpers', 'videos');
     CFactory::load('libraries', 'videos');
     CFactory::load('helpers', 'group');
     $videoModel = CFactory::getModel('videos');
     $tmpVideos = $videoModel->getGroupVideos($group->id, '', $params->get('grouprecentvideos', GROUP_VIDEO_RECENT_LIMIT));
     $videos = array();
     if ($tmpVideos) {
         foreach ($tmpVideos as $videoEntry) {
             $video =& JTable::getInstance('Video', 'CTable');
             $video->bind($videoEntry);
             $videos[] = $video;
         }
     }
     $videoThumbWidth = CVideoLibrary::thumbSize('width');
     $videoThumbHeight = CVideoLibrary::thumbSize('height');
     $totalVideos = $videoModel->total;
     $eventsModel = CFactory::getModel('Events');
     $tmpEvents =& $eventsModel->getGroupEvents($group->id, $params->get('grouprecentevents', GROUP_EVENT_RECENT_LIMIT));
     $totalEvents = $eventsModel->getTotalGroupEvents($group->id);
     $events = array();
     foreach ($tmpEvents as $event) {
         $table =& JTable::getInstance('Event', 'CTable');
         $table->bind($event);
         $events[] = $table;
     }
     $allowManagePhotos = CGroupHelper::allowManagePhoto($group->id);
     $allowManageVideos = CGroupHelper::allowManageVideo($group->id);
     $allowCreateEvent = CGroupHelper::allowCreateEvent($my->id, $group->id);
     CFactory::load('libraries', 'bookmarks');
     $bookmarks = new CBookmarks(CRoute::getExternalURL('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id));
     $bookmarksHTML = $bookmarks->getHTML();
     $isCommunityAdmin = COwnerHelper::isCommunityAdmin();
     if ($group->approvals == '0' || $isMine || $isMember && !$isBanned || $isCommunityAdmin) {
         // Set feed url
         $feedLink = CRoute::_('index.php?option=com_community&view=groups&task=viewbulletins&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('CC SUBSCRIBE TO BULLETIN FEEDS') . '" href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=groups&task=viewdiscussions&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('CC SUBSCRIBE TO DISCUSSION FEEDS') . '" href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=photos&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('CC SUBSCRIBE TO GROUP PHOTOS FEEDS') . '" href="' . $feedLink . '"/>';
         $mainframe->addCustomHeadTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=videos&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('CC SUBSCRIBE TO GROUP VIDEOS FEEDS') . '"  href="' . $feedLink . '"/>';
         $mainframe->addCustomHeadTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=events&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('CC SUBSCRIBE TO GROUP EVENTS FEEDS') . '"  href="' . $feedLink . '"/>';
         $mainframe->addCustomHeadTag($feed);
     }
     $friendsModel = CFactory::getModel('Friends');
     $groupsModel = CFactory::getModel('Groups');
     $tmpFriends = $friendsModel->getFriends($my->id, 'name', false);
     $friends = array();
     for ($i = 0; $i < count($tmpFriends); $i++) {
         $friend =& $tmpFriends[$i];
         $groupInvite =& JTable::getInstance('GroupInvite', 'CTable');
         $groupInvite->load($group->id, $friend->id);
         if (!$groupsModel->isMember($friend->id, $group->id)) {
             $friends[] = $friend;
         }
     }
     unset($tmpFriends);
     CFactory::load('libraries', 'invitation');
     $inviteHTML = CInvitation::getHTML($friends, 'groups,inviteUsers', $group->id);
     $tmpl->setMetaTags('group', $group);
     $tmpl->set('likesHTML', $likesHTML);
     $tmpl->set('events', $events);
     $tmpl->set('totalEvents', $totalEvents);
     $tmpl->set('inviteHTML', $inviteHTML);
     $tmpl->set('showEvents', $params->get('eventpermission') != -1);
     $tmpl->set('showPhotos', $params->get('photopermission') != -1);
     $tmpl->set('showVideos', $params->get('videopermission') != -1);
     $tmpl->set('bookmarksHTML', $bookmarksHTML);
     $tmpl->set('allowManagePhotos', $allowManagePhotos);
     $tmpl->set('allowManageVideos', $allowManageVideos);
     $tmpl->set('allowCreateEvent', $allowCreateEvent);
     $tmpl->set('videos', $videos);
     $tmpl->set('videoThumbWidth', $videoThumbWidth);
     $tmpl->set('videoThumbHeight', $videoThumbHeight);
     $tmpl->set('totalVideos', $totalVideos);
     $tmpl->set('albums', $albums);
     $tmpl->set('totalAlbums', $totalAlbums);
     $tmpl->set('reportHTML', $reportHTML);
     $tmpl->set('editGroup', $editGroup);
     $tmpl->set('waitingApproval', $waitingApproval);
     $tmpl->set('config', $config);
     $tmpl->set('my', $my);
     $tmpl->set('isMine', $isMine);
     $tmpl->set('isAdmin', $isAdmin);
     $tmpl->set('isSuperAdmin', $isSuperAdmin);
     $tmpl->set('isMember', $isMember);
     $tmpl->set('isInvited', $isInvited);
     $tmpl->set('friendsCount', $friendsCount);
     $tmpl->set('join', $join);
     $tmpl->set('unapproved', count($unapproved));
     $tmpl->set('membersCount', $membersCount);
     $tmpl->set('group', $group);
     $tmpl->set('totalBulletin', $totalBulletin);
     $tmpl->set('totalDiscussion', $totalDiscussion);
     $tmpl->set('members', $members);
     $tmpl->set('admins', $admins);
     $tmpl->set('adminsCount', $adminsCount);
     $tmpl->set('bulletins', $bulletins);
     $tmpl->set('wallForm', $wallForm);
     $tmpl->set('wallContent', $wallContent);
     $tmpl->set('discussions', $discussions);
     $tmpl->set('discussionsHTML', $discussionsHTML);
     $tmpl->set('bulletinsHTML', $bulletinsHTML);
     $tmpl->set('isCommunityAdmin', $isCommunityAdmin);
     $tmpl->set('isBanned', $isBanned);
     echo $tmpl->fetch('groups.viewgroup');
 }