Ejemplo n.º 1
0
 /**
  * viewAction - shows an individual group's page
  *
  * @author Mikko Aatola
  */
 function viewAction()
 {
     // User identity, group header and group menu:
     // Group id
     $grpId = $this->_request->getParam('groupid');
     $grpModel = new Default_Model_Groups();
     // Check if group exists
     if (!isset($grpId) || !$grpModel->groupExistsById($grpId)) {
         $target = $this->_urlHelper->url(array('controller' => 'group', 'action' => 'index', 'language' => $this->view->language), 'lang_default', true);
         $this->_redirector->gotoUrl($target);
     }
     // Group data
     $grpData = $this->getGroupData($grpId);
     // Menudata
     $menuData['id_grp'] = $grpId;
     $menuData['grp_action'] = 'home';
     $menuData['group_name_grp'] = $grpData['group_name_grp'];
     $menuData['grp_admins'] = $grpData['grp_admins'];
     // Set $this->view->...
     $this->view->menuData = $menuData;
     // Group viewAction special stuff:
     $maxCharacters = 140;
     // Max characters before we cut string and add ...
     $maxObjects = 3;
     // Max campaigns, comments, linked groups and feeds in group home
     // Campaigns
     $campaignModel = new Default_Model_Campaigns();
     $cmpData = $campaignModel->getRecentByGroup($maxObjects, $grpId);
     $i = 0;
     foreach ($cmpData as $cmp) {
         if (strlen($cmp['ingress_cmp']) > $maxCharacters) {
             $cmpData[$i]['ingress_cmp'] = substr($cmp['ingress_cmp'], 0, $maxCharacters) . "...";
             $i++;
         }
     }
     // Comments
     $comments = new Oibs_Controller_Plugin_Comments("group", $grpId);
     $comments->loadComments();
     $onlyComments = $comments->getComments();
     uasort($onlyComments, 'compareComments');
     $commentsCount = count($onlyComments);
     $homeComments = array();
     for ($i = 0; $i < $commentsCount && $i < $maxObjects; $i++) {
         $homeComments[$i] = $onlyComments[$i];
         if (strlen($homeComments[$i]['body_cmt']) > $maxCharacters) {
             $homeComments[$i]['body_cmt'] = substr($homeComments[$i]['body_cmt'], 0, $maxCharacters) . "...";
         }
     }
     // Linked groups
     $grpHasGrpModel = new Default_Model_GroupHasGroup();
     $linkedgroups = $grpHasGrpModel->getGroupGroups($grpId);
     $linkedgroups = array_merge($linkedgroups['parents'], $linkedgroups['childs']);
     $linkedgroupsCount = count($linkedgroups);
     $linkedgroups_new = array();
     for ($i = 0; $i < $linkedgroupsCount && $i < $maxObjects; $i++) {
         $linkedgroups_new[$i] = $linkedgroups[$i];
     }
     // Feeds
     $feedsModel = new Oibs_Controller_Plugin_RssReader();
     $hasFeeds = $feedsModel->hasFeeds($grpId, "group");
     $feeds = array();
     if ($hasFeeds) {
         $feedsData = $feedsModel->read($grpId, "group");
         for ($i = 0; $i < $maxObjects; $i++) {
             $feeds[$i] = $feedsData['items'][$i];
         }
     }
     // Set $this->view->...
     $this->view->grpData = $grpData;
     $this->view->cmpData = $cmpData;
     $this->view->comments = $homeComments;
     $this->view->linkedgroups = $linkedgroups_new;
     $this->view->hasFeeds = $hasFeeds;
     $this->view->feeds = $feeds;
     /*
     // Get authentication
     $auth = Zend_Auth::getInstance();
     
     // If user has identity
     if ($auth->hasIdentity()) {
         $this->view->identity = true;
     } else {
         $this->view->identity = false;
     }
     
     // Get data for this specific group.
     $grpId = $this->_request->getParam('groupid');
     $grpModel = new Default_Model_Groups();
     // Check if group exists
     if (!isset($grpId) || !$grpModel->groupExistsById($grpId)) {
         $target = $this->_urlHelper->url(array('controller'    => 'group',
                                                'action'        => 'index',
                                                'language'      => $this->view->language),
                                          'lang_default', true);
         $this->_redirector->gotoUrl($target);
     }
     $usrHasGrpModel = new Default_Model_UserHasGroup();
     $usrHasGrpWaitingModel = new Default_Model_UserHasGroupWaiting();
     $grpAdminsModel = new Default_Model_GroupAdmins();
     $campaignModel = new Default_Model_Campaigns();
     $grpAdmins = $grpAdminsModel->getGroupAdmins($grpId);
     $user = $auth->getIdentity();
     $grpData = $grpModel->getGroupData($grpId);
     $grpData['description_grp'] = str_replace("\n", '<br>', $grpData['description_grp']);
     $grpData['body_grp'] = str_replace("\n", '<br>', $grpData['body_grp']);
     $filesModel = new Default_Model_Files();
     $files = $filesModel->getFilenames($grpId, "group");
     
     // Group type
     $grpTypeId = $grpModel->getGroupTypeId($grpId);
     $grpTypeModel = new Default_Model_GroupTypes();
     $isClosed = $grpTypeModel->isClosed($grpTypeId);
     // Waiting list count
     $usrWaitingCount = $usrHasGrpWaitingModel->getUserCountByGroup($grpId);
     
     // Group weblinks
     $groupWeblinksModel = new Default_Model_GroupWeblinks();
     $grpData['groupWeblinks'] = $groupWeblinksModel->getGroupWeblinks($grpId);
     $i = 0;
     foreach($grpData['groupWeblinks'] as $weblink) {
         if (strlen($weblink['name_gwl']) == 0 || strlen($weblink['url_gwl']) == 0) {
             unset($grpData['groupWeblinks'][$i]);
         }
         $i++;
     }
     
     // Get group groups
     $grpHasGrpModel = new Default_Model_GroupHasGroup();
     $linkedgroups = $grpHasGrpModel->getGroupGroups($grpId);
     $linkedgroups = array_merge($linkedgroups['parents'], $linkedgroups['childs']);
     
     $comments = new Oibs_Controller_Plugin_Comments("group", $grpId);
     if ($this->view->identity) $comments->allowComments(true);
       		$this->view->jsmetabox->append('commentUrls', $comments->getUrls());
     		$comments->loadComments();
     
     		$this->view->comments		 = $comments;
     		$this->view->hasFeeds 		 = Oibs_Controller_Plugin_RssReader::hasFeeds($grpId, "group");
     		
     // Add data to the view.
     $this->view->grpId = $grpId;
     $this->view->grpData = $grpData;
     $this->view->grpUsers = $usrHasGrpModel->getAllUsersInGroup($grpId);
     $this->view->grpAdmins = $grpAdmins;
     $this->view->userHasGroup = $usrHasGrpModel;
     $this->view->userHasGroupWaiting = $usrHasGrpWaitingModel;
     //$this->view->campaigns = $campaignModel->getCampaignsByGroup($grpId);
     $this->view->openCampaigns = $campaignModel->getOpenCampaignsByGroup($grpId);
     $this->view->notstartedCampaigns = $campaignModel->getNotstartedCampaignsByGroup($grpId);
     $this->view->endedCampaigns = $campaignModel->getEndedCampaignsByGroup($grpId);
     $this->view->userIsGroupAdmin = isset($user->user_id) ? $this->checkIfArrayHasKeyWithValue($grpAdmins, 'id_usr', $user->user_id) : false;
     $this->view->linkedgroups = $linkedgroups;
     $this->view->isClosed = $isClosed;
     $this->view->usrWaitingCount = $usrWaitingCount;
     */
 }