summaryrefslogblamecommitdiffstats
path: root/application/modules/dev/controllers/BootisoController.php
blob: 5c250cc63516963da1553377bea5a953faa35b43 (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_BootisoController extends Zend_Controller_Action
{

    public function init()
    {
   		$db = Zend_Db_Table::getDefaultAdapter();
    }

    public function indexAction()
    {
    	$bootisomapper = new Application_Model_BootIsoMapper();
    	$groupmapper = new Application_Model_GroupMapper();
    	$membershipmapper = new Application_Model_MembershipMapper();
    	$personmapper = new Application_Model_PersonMapper();
    	$prebootmapper = new Application_Model_PreBootMapper(); 
    	
    	$this->view->bootisolist = $bootisomapper->fetchAll();
    	$this->view->prebootlist = array();
    	
    	    
    	foreach ($this->view->bootisolist as $bootiso){
    		  $this->view->prebootlist[$bootiso->getID()] = $prebootmapper->find($bootiso->getPrebootID())->getTitle();
    		  $bootiso->setGroupID("[".$bootiso->getGroupID()."] ".$groupmapper->find($bootiso->getGroupID())->getTitle());
    		  $bootiso->setMembershipID("[".$bootiso->getMembershipID()."] ".$personmapper->find($membershipmapper->find($bootiso->getMembershipID())->getPersonID())->getFirstname());
    	}
    
    }
    
    public function downloadbootisoAction()
    {
    	$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender(true);
		
    	$prebootID = $this->_request->getParam('prebootID');
    	$bootisoID = $this->_request->getParam('bootisoID');   	

    	if(is_dir("../resources/bootmedium/$prebootID/") && is_numeric($prebootID) && is_numeric($bootisoID)){
			 
    		chdir("../resources/bootmedium/$prebootID/");
    
    		header("X-Sendfile: $bootisoID".".zip");
			header('Content-Type: application/x-gzip');
			$content_disp = ( ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']) == 'IE') ? 'inline' : 'attachment';
			header('Content-Disposition:  ' . $content_disp . '; filename="preboot.zip"');
			header('Pragma: no-cache');
			header('Expires: 0');
			
			
    		$handle = fopen($bootisoID.".zip", 'r');
			$chunk_size = 8192;
			while ($chunk = fread($handle, $chunk_size)) {
				echo $chunk;
				ob_flush();
			}
						
    	}
    	
    	

    
    }

    public function createbootisoAction()
    {
    		$groupmapper = new Application_Model_GroupMapper();
    		$prebootmapper = new Application_Model_PreBootMapper();
    	
           	if (!isset($_POST["createbootiso"])){
    	        $createbootisoForm = new dev_Form_BootisoCreate(array('grouplist' => $groupmapper->fetchAll(),'prebootlist' => $prebootmapper->fetchAll()));
    		} else {
    			
    	        $createbootisoForm = new dev_Form_BootisoCreate(array('grouplist' => $groupmapper->fetchAll(),'prebootlist' => $prebootmapper->fetchAll()),$_POST);
    			    			
    		    if ($createbootisoForm->isValid($_POST)) {

    		    	$bootiso = new Application_Model_BootIso($_POST);
    		    	$bootiso->setMembershipID('1');
    		        $bootisomapper = new Application_Model_BootIsoMapper();
    		        $bootiso->setCreated(time()); 
    		        
    		        $prebootID = $bootiso->getPrebootID();
    		        
    		    	try {  
    		    		
    		            $bootisoID = $bootisomapper->save($bootiso);
    		            
    		            copy("../resources/bootmedium/$prebootID/preboot.zip", "../resources/bootmedium/$prebootID/$bootisoID".".zip");
    		            $zip = new ZipArchive();
    		            $res = $zip->open("../resources/bootmedium/$prebootID/$bootisoID".".zip");
    		            if($res === true){
    		            	$rootdir = $zip->getNameIndex(0);
							$zip->addFromString($rootdir."build/rootfs/tmp/serial", $bootiso->getSerialnumber());  
							$zip->close(); 		            	
    		            }
	
    		        }catch(Zend_Exception $e)
    		        {
    		            echo "Caught exception: " . get_class($e) . "<br/>";
    					echo "Message: " . $e->getMessage() . "<br/>";
    					
    		        }
					$this->_redirect('/dev/bootiso');
    		     }
    		}
    
            $this->view->createbootisoForm = $createbootisoForm;
    }

    public function editbootisoAction()
    {
    	$bootisoID = $this->_request->getParam('bootisoID');  	
    	$groupmapper = new Application_Model_GroupMapper();
    	$prebootmapper = new Application_Model_PreBootMapper();
    	
    	
    	if (!isset($_POST["editbootiso"])){
    		$bootisoID = $this->_request->getParam('bootisoID');
     		if (!isset($bootisoID) || !is_numeric($bootisoID)){
   				$this->_redirect('/dev/bootiso');
    		} else {
    		   $bootiso = new Application_Model_BootIso();
    		   $bootisomapper = new Application_Model_BootIsoMapper();
    		   $bootisomapper->find($bootisoID, $bootiso);
    		   
    		   $editbootisoForm = new dev_Form_BootisoEdit(array('grouplist' => $groupmapper->fetchAll(),'prebootlist' => $prebootmapper->fetchAll()));
    		   $editbootisoForm->populate($bootiso->toArray()); 
    		}
    	}else{
    		$editbootisoForm = new dev_Form_BootisoEdit(array('grouplist' => $groupmapper->fetchAll(),'prebootlist' => $prebootmapper->fetchAll()),$_POST);
    			    			
    		if ($editbootisoForm->isValid($_POST)) {

    			$bootiso = new Application_Model_BootIso($_POST);
    			$bootiso->setMembershipID('1');
    		    $bootisomapper = new Application_Model_BootIsoMapper();
    		    $bootiso->setCreated(time());
    		    $bootiso->setID($bootisoID);
    		    $prebootID = $bootiso->getPrebootID();
    		    
    		   	try {  
    		   		
    		   		
    		   	    $zip = new ZipArchive();
    		        $res = $zip->open("../resources/bootmedium/$prebootID/$bootisoID".".zip");
    		        if($res === true){
    		            $rootdir = $zip->getNameIndex(0);
						$zip->addFromString($rootdir."build/rootfs/serial", $bootiso->getSerialnumber());  
						$zip->close(); 		            	
    		        }
    		            
    		   		$bootisomapper->save($bootiso);
    		       	
    		    }catch(Zend_Exception $e)
    		    {
    		    	echo "Caught exception: " . get_class($e) . "<br/>";
    				echo "Message: " . $e->getMessage() . "<br/>";	
    		    }
    		    
				$this->_redirect('/dev/bootiso');
    		}
    			
    	}
    	
    	$this->view->editbootisoForm = $editbootisoForm;
    }

    public function deletebootisoAction()
    {
   		$bootisoID = $this->_request->getParam('bootisoID');
     	if (!isset($bootisoID)){
   			$this->_redirect('/dev/bootiso');
    	} else {
    		   $bootiso = new Application_Model_BootIso();
    		   $bootiso->setID($bootisoID);
    		   $bootisomapper = new Application_Model_BootIsoMapper();
    		   $bootisomapper->delete($bootiso);
    	}
    	$this->_redirect('/dev/bootiso');
    }


}