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