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) . "
";
echo "Message: " . $e->getMessage() . "
";
}
$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) . "
";
echo "Message: " . $e->getMessage() . "
";
}
$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');
}
}