summaryrefslogblamecommitdiffstats
path: root/application/modules/user/controllers/SessionController.php
blob: 0e32e48a7a0be8920452815bcda81df1aa4c3cc2 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
     









                                                                           



                                                           


                                                              











                                                                                                     
 
                                                                





                                                
 





                                                                                       
 
                                                                                                      
                                               
                                                                                                  

                                                              


                                                                                           
                                                                                                                



                                                                                                           

                                                                                                                              
 
                                 
 


                                                                                             
                                                                                                                  
                                 




                                                                                                                        
                                                      

                                                                                                                                             
                                                                                                              
                                                        
                         
                 
                                     
                                               
 




                                                              
                                  

                                                                         
                 
                                                                  
                        

                                                   



                                                                                                                                             

                                                         
                                                                    
                                                                                




                                                    




                                                                                  


                                                              
 
<?php
/*
 * Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg
 * This program is free software distributed under the GPL version 2.
 * See http://gpl.openslx.org/
 *
 * If you have any feedback please consult http://feedback.openslx.org/ and
 * send your suggestions, praise, or complaints to feedback@openslx.org
 *
 * General information about OpenSLX can be found at http://openslx.org/
 */

class User_SessionController extends Zend_Controller_Action
{
	private $membership;
	public function init()
	{
		if (Zend_Auth::getInstance()->hasIdentity()) {
			$userIDsNamespace = Zend_Session::namespaceGet('userIDs');
			if($userIDsNamespace['membershipID'] ==''){
				$pbsNotifier = new Pbs_Notifier();
				echo $pbsNotifier->notify('No membershipID set','forbidden');
			}

			$membershipMapper = new Application_Model_MembershipMapper();
			$this->membership = new Application_Model_Membership();
			$membershipMapper->find($userIDsNamespace['membershipID'],$this->membership);
		} else {
			$this->_helper->redirector('login', 'auth');
		}

		$this->page = $this->_request->getParam('page');
	}

	public function indexAction()
	{
		if(!Pbs_Acl::checkRight('so'))
		$this->_redirect('/user/index');

		$sessionMapper = new Application_Model_SessionMapper();
		$bootisoMapper = new Application_Model_BootIsoMapper();
		$bootosMapper = new Application_Model_BootOsMapper();
		$bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper();
		$membershipMapper = new Application_Model_MembershipMapper();
		$personMapper = new Application_Model_PersonMapper();

		$bootisos = $bootisoMapper->findBy(array('groupID'=>$this->membership->getGroupID()));
		foreach($bootisos as $bootiso){
			$sessions = $sessionMapper->findBy(array('bootisoID'=>$bootiso->getID()));
			foreach($sessions as $session){
				#echo $session->getBootosID();
				if($session->getBootosID() != ''){
					$bo = $bootosMapper->find($session->getBootosID());
					if($bo != null)
					$session->setBootosID("[".$session->getBootosID()."] ".$bo->getTitle());
				}
					
				if($session->getBootmenuentryID() != ''){
					$bm = $bootmenuentriesMapper->find($session->getBootmenuentryID());
					if($bm != null)
					$session->setBootmenuentryID("[".$session->getBootmenuentryID()."] ".$bm->getTitle());

				}

				if($session->getBootisoID() != ''){
					$bi = $bootisoMapper->find($session->getBootisoID());
					if($bi != null)
					$session->setBootisoID("[".$session->getBootisoID()."] ".$bi->getTitle());
				}
					
				if($session->getMembershipID() != ''){
					$personID = $membershipMapper->find($session->getMembershipID())->getPersonID();
					$p = new Application_Model_Person();
					$personMapper->find($personID,$p);
					if($p != null)
					$session->setMembershipID("[".$session->getMembershipID()."] ".$p->getFirstname()." ".$p->getName());
				}
				$session->setTime(date(Zend_Registry::get('dateformat'),$session->getTime()));
				$mySessions[] =$session;
			}
		}
		// Sort after date/id
		usort($mySessions, 'sortFunc');

		// Search
		$search = $this->_request->getParam('search');
		$mySearch = new Pbs_Search();
		$mySearch->setSearchTerm($search);
		$mySearch->setModule('session');
		if($search != ''){
			$this->view->search = $mySearch->getSearchTerm();
			$mySessions = $mySearch->search($mySessions);
		}
		$this->view->searchform = $mySearch->searchForm();
			
		// Pagination
		$pagination = new Pbs_Pagination();
		$pagination->setPerPage(10)
					->setElement($mySessions)
					->setRequestPage($this->_request->getParam('page'))
					->setPageUrl('/user/session/index'.((isset($this->view->search))?'/search/'.$this->view->search:''));
		$mySessions = $pagination->getElements();

		$this->view->pagination = $pagination->pagination();
		$this->view->page 		= $pagination->getRequestPage();
		$this->view->sessions = $mySessions;

	}

	public function searchAction(){
		$this->_redirect('/user/session/index/search/'.($_GET['search']));
	}


}
function sortFunc($func_a, $func_b) {
	if($func_a->getID() == $func_b->getID()) return 0;
	return ($func_a->getID() < $func_b->getID()) ? 1 : -1;
}