summaryrefslogblamecommitdiffstats
path: root/application/modules/dev/controllers/BootmenuController.php
blob: cada566881fcdfac6a284caed114b12cf691ea31 (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 dev_BootmenuController extends Zend_Controller_Action
{
	
    public function init()
    {
   		$db = Zend_Db_Table::getDefaultAdapter();
   	}

    public function indexAction()
    {
    	$bootmenumapper = new Application_Model_BootMenuMapper();
	    $bootmenuentriesmapper = new Application_Model_BootMenuEntriesMapper();
	    $bootosmapper = new Application_Model_BootOsMapper();
	    $configmapper = new Application_Model_ConfigMapper();
	    $membershipmapper = new Application_Model_MembershipMapper();
	    $groupmapper = new Application_Model_GroupMapper();
	    $personmapper = new Application_Model_PersonMapper();
	    
	   	$this->view->bootosmapper = $bootosmapper;
	    $this->view->configmapper = $configmapper;
	   
	    $bootmenuID = $this->_request->getParam('bootmenuid');
	    $preboot =  $this->_request->getParam('preboot');
	    
	    if($preboot=="")
	    {
	    	if($bootmenuID == "")
	    	{
	    		$this->view->bootmenulist = $bootmenumapper->fetchAll();
		    	$bootmenuentries = array();
		    	foreach ($this->view->bootmenulist as $bootmenu){
		    		  $bootmenuentries[$bootmenu->getID()] = $bootmenuentriesmapper->findBy(array('bootmenuID' => $bootmenu->getID()));
		    		  $bootmenu->setGroupID("[".$bootmenu->getGroupID()."] ".$groupmapper->find($bootmenu->getGroupID())->getTitle());
		    		  $bootmenu->setMembershipID("[".$bootmenu->getMembershipID()."] ".$personmapper->find($membershipmapper->find($bootmenu->getMembershipID())->getPersonID())->getFirstname());
		    	}	
	    	}else{
	    		$bootmenu = new Application_Model_BootMenu();
	    		$bootmenumapper->find($bootmenuID, $bootmenu);
	    		
	    		$bootmenuentries = array();
		    	$bootmenuentries[$bootmenuID] = $bootmenuentriesmapper->findBy('bootmenuID',$bootmenuID);
		    	$bootmenu->setGroupID("[".$bootmenu->getGroupID()."] ".$groupmapper->find($bootmenu->getGroupID())->getTitle());
		    	$bootmenu->setMembershipID("[".$bootmenu->getMembershipID()."] ".$personmapper->find($membershipmapper->find($bootmenu->getMembershipID())->getPersonID())->getFirstname());
				
		    	$this->view->bootmenulist = array($bootmenu);
				
	    	}
	    		
	    	$this->view->bootmenuentrylist = $bootmenuentries;
	    	
	    }else{
	    	$this->_helper->layout->disableLayout();
       		$this->_helper->viewRenderer->setNoRender();
       		
       		if($bootmenuID == "")
    		{
	    		$this->view->bootmenulist = $bootmenumapper->fetchAll();
		    	$bootmenuentries = array();
		    	foreach ($this->view->bootmenulist as $bootmenu){
		    		  $bootmenuentries[$bootmenu->getID()] = $bootmenuentriesmapper->findBy('bootmenuID',$bootmenu->getID());
		    		  $bootmenu->setGroupID("[".$bootmenu->getGroupID()."] ".$groupmapper->find($bootmenu->getGroupID())->getTitle());
		    		  $bootmenu->setMembershipID("[".$bootmenu->getMembershipID()."] ".$personmapper->find($membershipmapper->find($bootmenu->getMembershipID())->getPersonID())->getFirstname());
		    }	
    		}else{
	    		$bootmenu = new Application_Model_BootMenu();
	    		$bootmenumapper->find($bootmenuID, $bootmenu);
	    	
	    		$cc['title'] = $bootmenu->getTitle();
	    		
	    		$bootmenuentries = array();
		    	$bootmenuentries = $bootmenuentriesmapper->findBy('bootmenuID',$bootmenuID);
		    	
		    	foreach($bootmenuentries as $bootmenuentry){
		    		$ar = array();
		    		$ar['title'] = $bootmenuentry->getTitle();
		    		$ar['id'] = $bootmenuentry->getID();		    	
		    		$cc['data'][] = $ar;
		    	}
		    	
		    	echo json_encode($cc);
		    	
		    	//print_a($cc);

    		}
    		
	    }
    }

    public function addbootmenuentryAction()
    {
    	$bootmenuID = $this->_request->getParam('bootmenuID');
    	$bootosmapper = new Application_Model_BootOsMapper();
    	$configmapper = new Application_Model_ConfigMapper();

    	if (!isset($_POST["addbootmenuentry"])){
    	    $addbootmenuentryForm = new dev_Form_BootmenuEntriesAdd(array('bootoslist'=>$bootosmapper->fetchAll(), 'maxorder'=> $this->_request->getParam('maxorder'), 'configlist'=>$configmapper->fetchAll()));  
    	    $addbootmenuentryForm->populate(array('order' => $this->_request->getParam('maxorder')));
    	    unset($_POST['kcl']);
    	    unset($_POST['configID']);
    	    $addbootmenuentryForm->populate($_POST);
    	} else {
    			
    	        $addbootmenuentryForm = new dev_Form_BootmenuEntriesAdd(array('bootoslist'=>$bootosmapper->fetchAll(), 'maxorder'=> $this->_request->getParam('maxorder'), 'configlist'=>$configmapper->fetchAll()),$_POST);
    	        
    		    if ($addbootmenuentryForm->isValid($_POST)) {
    		    	
    		    	$bootmenuentry = new Application_Model_BootMenuEntries($_POST);
    		    	$bootmenuentry->setBootmenuID($bootmenuID);
    		    	    		    	
    		        $bootmenuentrymapper = new Application_Model_BootMenuEntriesMapper();

    		    	try {  
    		    	    if($bootmenuentry->getOrder() < $this->_request->getParam('maxorder')){
    		    			$bootmenuentry->setOrder($bootmenuentry->getOrder());
 							$bootmenuentrymapper->order($bootmenuentry);
    		    		}

    		    		//print_a($bootmenuentry);
    		    		
    		            $bootmenuentrymapper->save($bootmenuentry);
    		        }catch(Zend_Exception $e)
    		        {
    		            echo "Caught exception: " . get_class($e) . "<br/>";
    					echo "Message: " . $e->getMessage() . "<br/>";
    					
    		        }
					$this->_redirect('/dev/bootmenu');
    		     }
    		}
    
            $this->view->addbootmenuentryForm = $addbootmenuentryForm;
    	
    }

    public function createbootmenuAction()
    {
   		$groupmapper = new Application_Model_GroupMapper();
    	
            if (!isset($_POST["createbootmenu"])){
    	        $createbootmenuForm = new dev_Form_BootmenuCreate(array('grouplist' => $groupmapper->fetchAll()));
    		} else {
    			
    	        $createbootmenuForm = new dev_Form_BootmenuCreate(array('grouplist' => $groupmapper->fetchAll()),$_POST);
    			    			
    		    if ($createbootmenuForm->isValid($_POST)) {

    		    	$bootmenu = new Application_Model_BootMenu($_POST);
    		    	$bootmenu->setMembershipID('1');
    		    	$bootmenu->setCreated(time());
    		        $bootmenumapper = new Application_Model_BootMenuMapper();
    		        
    		    	try {  
    		            $bootmenumapper->save($bootmenu);
    		        }catch(Zend_Exception $e)
    		        {
    		            echo "Caught exception: " . get_class($e) . "<br/>";
    					echo "Message: " . $e->getMessage() . "<br/>";
    					
    		        }
					$this->_redirect('/dev/bootmenu');
    		     }
    		}
    
            $this->view->createbootmenuForm = $createbootmenuForm;
    }

    public function editbootmenuAction()
    {
        $bootmenuID = $this->_request->getParam('bootmenuID');
        $groupmapper = new Application_Model_GroupMapper();
        
    	if (!isset($_POST["editbootmenu"])){
    		$bootmenuID = $this->_request->getParam('bootmenuID');
     		if (!isset($bootmenuID) || !is_numeric($bootmenuID)){
   				$this->_redirect('/bootmenu');
    		} else {
    		   $bootmenu = new Application_Model_BootMenu();
    		   $bootmenumapper = new Application_Model_BootMenuMapper();
    		   $bootmenumapper->find($bootmenuID, $bootmenu);
    		   
    		   $editbootmenuForm = new dev_Form_BootmenuEdit(array('grouplist' => $groupmapper->fetchAll()));
    		   $editbootmenuForm->populate($bootmenu->toArray()); 
    		}
    	}else{
    		$editbootmenuForm = new dev_Form_BootmenuEdit(array('grouplist' => $groupmapper->fetchAll()),$_POST);
    			    			
    		if ($editbootmenuForm->isValid($_POST)) {

    			$bootmenu = new Application_Model_BootMenu($_POST);
    			$bootmenu->setMembershipID('1');
    		   	$bootmenu->setCreated(time());
    		    $bootmenumapper = new Application_Model_BootMenuMapper();
    		    
    		    $bootmenu->setID($bootmenuID);
    		        
    		   	try {  
    		   		
    		       	$bootmenumapper->save($bootmenu);
    		    }catch(Zend_Exception $e)
    		    {
    		    	echo "Caught exception: " . get_class($e) . "<br/>";
    				echo "Message: " . $e->getMessage() . "<br/>";	
    		    }
    		    
				$this->_redirect('/dev/bootmenu');
    		}
    			
    	}
    	
    	$this->view->editbootmenuForm = $editbootmenuForm;
    }

    public function editbootmenuentryAction()
    {
        $bootmenuentryID = $this->_request->getParam('bootmenuentryID');
        $bootmenuID = $this->_request->getParam('bootmenuID');
        $bootosmapper = new Application_Model_BootOsMapper();
        $configmapper = new Application_Model_ConfigMapper();
    	$bootmenuentry = new Application_Model_BootMenuEntries();
    	$bootmenuentrymapper = new Application_Model_BootMenuEntriesMapper();
    	
    	if (!isset($_POST["editbootmenuentry"])){
    		$bootmenuentryID = $this->_request->getParam('bootmenuentryID');
     		if (!isset($bootmenuentryID) || !is_numeric($bootmenuentryID)){
   				$this->_redirect('/dev/bootmenu');
    		} else {
    		   	
    		   	$bootmenuentrymapper->find($bootmenuentryID, $bootmenuentry);
    		       		   	
    		  	$editbootmenuentryForm = new dev_Form_BootmenuEntriesEdit(array('bootoslist'=>$bootosmapper->fetchAll(), 'maxorder' => $this->_request->getParam('maxorder'), 'configlist'=>$configmapper->fetchAll(), 'kcl' => $bootmenuentry->getKcl()));  

    		  	if(!isset($_POST['configID'])){	
    		  		$editbootmenuentryForm->populate($bootmenuentry->toArray()); 
				}
    		  	else{ 
    		  		unset($_POST['kcl']);
    		  		unset($_POST['configID']);
    		  		$editbootmenuentryForm->populate($_POST);
    		  	}
    		}
    	}else{
    		$editbootmenuentryForm = new dev_Form_BootmenuEntriesEdit(array('bootoslist'=>$bootosmapper->fetchAll(), 'maxorder'=> $this->_request->getParam('maxorder'), 'configlist'=>$configmapper->fetchAll(), 'kcl' => $bootmenuentry->getKcl()),$_POST);
    			    			
    		if ($editbootmenuentryForm->isValid($_POST)) {
    			
    			$bootmenuentry = new Application_Model_BootMenuEntries($_POST);
    			
    			$bootmenuentry->setBootmenuID($bootmenuID);
    			$bootmenuentry->setID($bootmenuentryID);
 
    		    $bootmenuentrymapper = new Application_Model_BootMenuEntriesMapper();
    		        
    		   	try {  
    		   		if($bootmenuentry->getOrder() < $this->_request->getParam('oldorder'))
    		   			$bootmenuentrymapper->orderbefore($bootmenuentry, $this->_request->getParam('oldorder'));
    		   		else 
    		   			$bootmenuentrymapper->orderafter($bootmenuentry, $this->_request->getParam('oldorder'));
    		   			
    		       	$bootmenuentrymapper->save($bootmenuentry);
    		       	
    		    }catch(Zend_Exception $e)
    		    {
    		    	echo "Caught exception: " . get_class($e) . "<br/>";
    				echo "Message: " . $e->getMessage() . "<br/>";	
    		    }
    		    
				$this->_redirect('/dev/bootmenu');
    		}
    			
    	}
    	
    	$this->view->editbootmenuentryForm = $editbootmenuentryForm;
    	
    }

    public function removebootmenuentryAction()
    {
        $bootmenuentryID = $this->_request->getParam('bootmenuentryID');
     	if (!isset($bootmenuentryID) || !is_numeric($bootmenuentryID)){
   			$this->_redirect('/bootmenu');
    	} else {
    		   $bootmenuentry = new Application_Model_BootMenuEntries();
    		   $bootmenuentrymapper = new Application_Model_BootMenuEntriesMapper();
    		   $bootmenuentrymapper->find($bootmenuentryID, $bootmenuentry);
    		   $bootmenuentrymapper->delete($bootmenuentry);
    		   $bootmenuentrymapper->orderremove($bootmenuentry);
    	}
    	$this->_redirect('/dev/bootmenu');
    }

    public function deletebootmenuAction()
    {
    	$bootmenuID = $this->_request->getParam('bootmenuID');
     	if (!isset($bootmenuID) || !is_numeric($bootmenuID)){
   			$this->_redirect('/dev/bootmenu');
    	} else {
    		   $bootmenu = new Application_Model_BootMenu();
    		   $bootmenu->setID($bootmenuID);
    		   $bootmenumapper = new Application_Model_BootMenuMapper();
    		   $bootmenumapper->delete($bootmenu);
    	}
    	$this->_redirect('/dev/bootmenu');
    }

    private function arrayDiff($a, $b){
		foreach($a as $k1 => $i1){
			foreach($b as $k2 => $i2){
				if($i1->getID() == $i2->getBootosID()){
					unset($a[$k1]);
				}
			}
		}
		return $a;
	}
	

}