summaryrefslogblamecommitdiffstats
path: root/application/modules/fbgui/controllers/IndexController.php
blob: 3f598735130025f76d59bd08f6ea65d74c880538 (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 Fbgui_IndexController extends Zend_Controller_Action
{
	protected $membership;

	public function init()
	{
		/* Initialize action controller here */
		$userIDsNamespace = Zend_Session::namespaceGet('userIDs');

		$membershipMapper = new Application_Model_MembershipMapper();
		$this->membership = new Application_Model_Membership();
		$membershipMapper->find($userIDsNamespace['membershipID'],$this->membership);
	}

	public function errorAction()
	{
		$result = $this->_request->getParam('serialresult');
		if($result != ""){
			$pbsNotifier = new Pbs_Notifier();
			$this->view->notification = $pbsNotifier->notify('serial',$result);
		}
	}

	public function indexAction()
	{
		$mySession = new Zend_Session_Namespace('pbs');

		if(count($mySession->postdata)<=0){
			$mySession->postdata = $_POST;
		}
		
		$result = $this->_request->getParam('notify');
		if($result == 'nomember'){
			$pbsNotifier = new Pbs_Notifier();
			$this->view->notification = $pbsNotifier->notify('You have no membership, therefore you have no own BootMenu','info');
		}

		$d = new Pbs_Debug();
		$d->debug(array('FBGuiIndexController',$_SERVER['REMOTE_ADDR'],implode("\t",$mySession->postdata)));
			
		if(isset($mySession->postdata['bootisoID']) || isset($mySession->postdata['serialnumber'])){
			// Create a session
			$n = new Pbs_Session();
			 
			$bootisomapper = new Application_Model_BootIsoMapper();
			$bootiso = new Application_Model_BootIso();
			if(isset($mySession->postdata['bootisoID'])){
				$bootisomapper->find($mySession->postdata['bootisoID'],$bootiso);
				$groupID = $bootiso->getGroupID();
			}
			elseif(isset($mySession->postdata['serialnumber'])){
				$results = $bootisomapper->findBy(array('serialnumber' => $mySession->postdata['serialnumber']),true);
				if(count($results) == 0){
					$this->_redirect('/fbgui/index/error/serialresult/noserial2');
				}
				$bootiso->setOptions($results[0]);
				$bootiso->setID($results[0]['bootisoID']);
				$groupID = $bootiso->getGroupID();
				 
			}
			 
			$client = new Application_Model_Client();
			$client->setMacadress($mySession->postdata['mac']);
			$client->setHardwarehash($mySession->postdata['hardwarehash']);
			$client->setGroupID($groupID);
			$client->setCreated(time());
			$client = $n->createClient($client);
			$clientID = $client->getID();
			 
			$userIDsNamespace = Zend_Session::namespaceGet('userIDs');
			 
			if(!isset($_SESSION['alphasessionID'])){
				$session = new Application_Model_Session();
				$session->setBootisoID($bootiso->getID());
				$session->setClientID($clientID);
				$session->setTime(time());
				if($this->membership->getID() != ''){
					$session->setMembershipID($this->membership->getID());
				}
				$session->setIp($_SERVER['REMOTE_ADDR']);
				$session = $n->createSession($session);
				$_SESSION['alphasessionID'] = $session->getAlphasessionID();
			}
			else{
				$session = new Application_Model_Session();
				$sessionMapper = new Application_Model_SessionMapper();
				$sessions = $sessionMapper->findBy(array('alphasessionID'=>$_SESSION['alphasessionID']));
				$session = $sessions[0];
				if($this->membership->getID() != '' && $session->getMembershipID() == ''){
					$session->setMembershipID($this->membership->getID());
					$sessionMapper->save($session);
				}
			}
			// Request Bootmenu
			$pbsFilter = new Pbs_Filter();
			$bootmenuID = $pbsFilter->evaluate();
			if($bootmenuID != null){
				$this->view->alphasessionID = $_SESSION['alphasessionID'];
				//					print_a('Debug Output',
				//						'Session is now set',
				//						'Your sessionID is '.$session->getID(),
				//						'Your alphasessionID is '.$session->getAlphasessionID(),
				//						'Your client is '.$session->getClientID(),
				//						'goto bootmenu '.$bootmenuID);

				$bootmenuMapper = new Application_Model_BootMenuMapper();
				$bm = $bootmenuMapper->find($bootmenuID);
				$this->view->title = $bm->getTitle();
				$this->view->startcounter = $bm->getStartcounter();

				$bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper();
				$res = $bootmenuentriesMapper->findBy(array('bootmenuID' => $bootmenuID),false);
				$this->view->entries = $res;
					
				if (!Zend_Auth::getInstance()->hasIdentity()) {
					$this->view->loginmenu = true;
				}

				if(Zend_Auth::getInstance()->hasIdentity()){
					if($bm->MembershipID != '' && $bm->MembershipID == $this->membership->getID()){}
					else{
						$pbsNotifier = new Pbs_Notifier();
						$this->view->notification = $pbsNotifier->notify("This is not your Bootmenu. There is currently a BootMenu with a higher priority active.",'info');
					}
				}
			}
			else{
				//				print_a('Debug Output',
				//					'Session is now set',
				//					'Your sessionID is '.$session->getID(),
				//					'Your alphasessionID is '.$session->getAlphasessionID(),
				//					'Your client is '.$session->getClientID(),
				//					'there is no bootmenu for you');
				if (!Zend_Auth::getInstance()->hasIdentity()) {
					$this->view->loginmenu = true;
					$pbsNotifier = new Pbs_Notifier();
					$this->view->notification = $pbsNotifier->notify("There is no default BootMenu, please Login to get your BootMenu.",'info');
				}
				else{
					$pbsNotifier = new Pbs_Notifier();
					$this->view->notification = $pbsNotifier->notify("You have no BootMenu.",'info');
				}				
				$this->view->nobootmenu = true;
			}
		}
		else{
			#$this->_redirect('/fbgui/index/error/serialresult/noserial');
		}
		 
	}
	public function startAction(){
		$bootmenuntryID = $this->_request->getParam('bme');
		$a = $_SESSION['alphasessionID'];
		$bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper();
		$bootmenuentry = new Application_Model_BootMenuEntries();
		$bootmenuentriesMapper->find($bootmenuntryID,$bootmenuentry);

		$sessionMapper = new Application_Model_SessionMapper();
		$session_k = $sessionMapper->findBy(array('alphasessionID' => $a),true);

		$session = new Application_Model_Session();
		$session->setOptions($session_k[0]);
		$session->setID($session_k[0]['sessionID']);

		$session->setBootmenuentryID($bootmenuntryID);
		$session->setBootosID($bootmenuentry->getBootosID());
		$sessionMapper->save($session);


		$this->view->host = 'pbs2.mp.openslx.org';
		$this->view->alphasessionID = $a;
	}

}