view->bootoslist = $bootosmapper->fetchAll(); $this->view->update = array(); if(count($this->view->bootoslist) > 0) { foreach ($this->view->bootoslist as $bootos) { $this->view->update[$bootos->getID()] = $this->checkupdateAction($bootos); $bootos->setGroupID("[".$bootos->getGroupID()."] ".$groupmapper->find($bootos->getGroupID())->getTitle()); $bootos->setMembershipID("[".$bootos->getMembershipID()."] ".$personmapper->find($membershipmapper->find($bootos->getMembershipID())->getPersonID())->getFirstname()); $bootos->setConfigID("[".$bootos->getConfigID()."] ".$configmapper->find($bootos->getConfigID())->getTitle()); } } } public function createbootosAction() { $groupmapper = new Application_Model_GroupMapper(); $configmapper = new Application_Model_ConfigMapper(); if (!isset($_POST["createbootos"])) { try { $createbootosForm = new dev_Form_BootosCreate(array('grouplist' => $groupmapper->fetchAll() , 'configlist' => $configmapper->fetchAll())); } catch(Zend_Exception $e) { print_a($e); } } else { $createbootosForm = new dev_Form_BootosCreate(array('grouplist' => $groupmapper->fetchAll() , 'configlist' => $configmapper->fetchAll()), $_POST); if ($createbootosForm->isValid($_POST)) { $bootos = new Application_Model_BootOs($_POST); $bootos->setMembershipID('1'); if($bootos->getConfigID() == '') { $bootos->setConfigID(NULL); } $bootosmapper = new Application_Model_BootOsMapper(); $bootos->setCreated(time()); try { exec("wget --spider ".$bootos->getPath_kernel()." 2>&1 | grep 'Remote file exists.'", $exists_kernel); exec("wget --spider ".$bootos->getPath_init()." 2>&1 | grep 'Remote file exists.'" , $exists_init); if(!array_pop($exists_init) || !array_pop($exists_kernel)) { $this->view->createbootosForm = $createbootosForm; return; } $bootosID = $bootosmapper->save($bootos); $initpath = "../resources/bootos/".$bootosID."/initramfs/"; $kernelpath = "../resources/bootos/".$bootosID."/kernel/"; mkdir($initpath , 0777, true); mkdir($kernelpath , 0777, true); exec("wget -O '".$kernelpath."kernel' ".$bootos->getPath_kernel()); exec("wget -O '".$initpath."initramfs' ".$bootos->getPath_init()); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; } $this->_redirect('/dev/bootos'); } } $this->view->createbootosForm = $createbootosForm; } public function checkupdateAction($bootos) { exec("wget --server-response --spider '".escapeshellcmd($bootos->getPath_kernel())."' 2>&1 | grep 'Last-Modified:'", $kerneldate); exec("wget --server-response --spider '".escapeshellcmd($bootos->getPath_init())."' 2>&1 | grep 'Last-Modified:'", $initdate); $kerneldate = strtotime(trim(str_replace('Last-Modified:', '', array_pop($kerneldate)))); $kernelname = array_pop(scandir("../resources/bootos/".$bootos->getID()."/kernel/")); if($kernelname != "." && $kernelname != "..") { $kernelolddate = filemtime("../resources/bootos/".$bootos->getID()."/kernel/".$kernelname); } else { $kernelolddate = false; } $initdate = strtotime(trim(str_replace('Last-Modified:', '', array_pop($initdate)))); $initname = array_pop(scandir("../resources/bootos/".$bootos->getID()."/initramfs/")); if($initname != "." && $initname != "..") { $initolddate = filemtime("../resources/bootos/".$bootos->getID()."/initramfs/".$initname); } else { $initolddate = false; } //print_a($kernelname,$kerneldate,$kernelolddate,$initname,$initdate,$initolddate); if($kerneldate > $kernelolddate || $initdate > $initolddate) { return true; } else { return false; } } public function updatebootosAction() { $bootosID = $this->_request->getParam('bootosID'); $bootosmapper = new Application_Model_BootOsMapper(); $bootos = $bootosmapper->find($bootosID); $initpath = "../resources/bootos/".$bootosID."/initramfs/"; $kernelpath = "../resources/bootos/".$bootosID."/kernel/"; exec("wget -P ".$kernelpath." -N ".$bootos->getPath_kernel()); exec("wget -P ".$initpath." -N ".$bootos->getPath_init()); $this->_redirect('/dev/bootos'); } public function editbootosAction() { $bootosID = $this->_request->getParam('bootosID'); $groupmapper = new Application_Model_GroupMapper(); $configmapper = new Application_Model_ConfigMapper(); if (!isset($_POST["editbootos"])) { $bootosID = $this->_request->getParam('bootosID'); if (!isset($bootosID) || !is_numeric($bootosID)) { $this->_redirect('/dev/bootos'); } else { $bootos = new Application_Model_BootOs(); $bootosmapper = new Application_Model_BootOsMapper(); $bootos = $bootosmapper->find($bootosID); $editbootosForm = new dev_Form_BootosEdit(array('grouplist' => $groupmapper->fetchAll() , 'configlist' => $configmapper->fetchAll())); $editbootosForm->populate($bootos->toArray()); } } else { $editbootosForm = new dev_Form_BootosEdit(array('grouplist' => $groupmapper->fetchAll() , 'configlist' => $configmapper->fetchAll()), $_POST); if ($editbootosForm->isValid($_POST)) { //TODO: Check for new URL and download new files. $bootos = new Application_Model_BootOs($_POST); $bootos->setMembershipID('1'); if($bootos->getConfigID() == '') { $bootos->setConfigID(NULL); } $bootosmapper = new Application_Model_BootOsMapper(); $bootos->setCreated(time()); $bootos->setID($bootosID); try { $bootosmapper->save($bootos); } catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; } $this->_redirect('/dev/bootos'); } } $this->view->editbootosForm = $editbootosForm; } public function deletebootosAction() { $bootosID = $this->_request->getParam('bootosID'); if (!isset($bootosID)) { $this->_redirect('/dev/bootos'); } else { $bootos = new Application_Model_BootOs(); $bootos->setID($bootosID); $bootosmapper = new Application_Model_BootOsMapper(); $bootosmapper->delete($bootos); } $this->_redirect('/dev/bootos'); } }