hasIdentity()) {
$userIDsNamespace = Zend_Session::namespaceGet('userIDs');
if($userIDsNamespace['membershipID'] ==''){
$this->_redirect('/user/index');
}
$this->bootmenuMapper = new Application_Model_BootMenuMapper();
$this->membershipMapper = new Application_Model_MembershipMapper();
$this->membership = new Application_Model_Membership();
$this->membershipMapper->find($userIDsNamespace['membershipID'],$this->membership);
$this->db = Zend_Db_Table::getDefaultAdapter();
} else {
$this->_helper->redirector('login', 'auth');
}
$this->page = $this->_request->getParam('page');
}
public function indexAction()
{
$result = $this->_request->getParam('addresult');
if($result != ""){
$pbsNotifier = new Pbs_Notifier();
$this->view->notification = $pbsNotifier->notify('create',$result);
}
$result = $this->_request->getParam('deleteresult');
if($result != ""){
$pbsNotifier = new Pbs_Notifier();
$this->view->notification = $pbsNotifier->notify('delete',$result);
}
$result = $this->_request->getParam('modifyresult');
if($result != ""){
$pbsNotifier = new Pbs_Notifier();
$this->view->notification = $pbsNotifier->notify('modify',$result);
}
//TODO ACL Darf er BootOsMenu sehen?
if(false)
$this->_redirect('/user/index');
$this->bootMenumapper = new Application_Model_BootMenuMapper();
$this->bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper();
$bootosMapper = new Application_Model_BootOsMapper();
$configMapper = new Application_Model_ConfigMapper();
if(true){
//TODO nur Bootmenus von Admins
$bootmenu = $this->bootmenuMapper->findBy('groupID', $this->membership->getGroupID());
foreach ($bootmenu as $bm){
$bootmenuID = $bm->getID();
$bootmenuentries[$bootmenuID] = $this->bootmenuentriesMapper->findBy('bootmenuID',$bootmenuID);
foreach ($bootmenuentries[$bootmenuID] as $bootmenuentry){
$bootmenuentry->setBootosID("[".$bootmenuentry->getBootosID()."] ".$bootosMapper->find($bootmenuentry->getBootosID())->getTitle());
$bootmenuentry->setConfigID("[".$bootmenuentry->getConfigID()."] ".$configMapper->find($bootmenuentry->getConfigID())->gettitle());
}
}
}else{
$bootmenu = $this->bootmenuMapper->findBy('membershipID', $this->membership->getID());
$bootmenuID = $bootmenu[0]->getID();
$bootmenuentries[$bootmenuID] = $this->bootmenuentriesMapper->findBy('bootmenuID',$bootmenuID);
foreach ($bootmenuentries[$bootmenuID] as $bootmenuentry){
$bootmenuentry->setBootosID("[".$bootmenuentry->getBootosID()."] ".$bootosMapper->find($bootmenuentry->getBootosID())->getTitle());
$bootmenuentry->setConfigID("[".$bootmenuentry->getConfigID()."] ".$configMapper->find($bootmenuentry->getConfigID())->gettitle());
}
}
// Pagination
$perpage = 5;
$req_page = $this->_request->getParam('page');
$all = count($bootmenu);
$numpages = ceil($all/$perpage);
if($req_page < 0 || !is_numeric($req_page) )
$req_page = 0;
if($req_page >= $numpages)
$req_page = $numpages-1;
$startitem = $req_page * $perpage;
$pagination = new Pbs_Pagination();
$this->view->pagination = $pagination->pagination('/user/client/index',$req_page,$numpages);
$this->view->page = $req_page;
$this->view->bootmenulist = array_slice($bootmenu,$startitem,$perpage);
$this->view->bootmenuentrylist = $bootmenuentries;
}
public function createbootmenuAction()
{
//TODO ACL Darf er BootMenus erstellen?
if(false)
$this->_redirect('/user/bootmenu/index/page/'.$page.'/addresult/forbidden');
if (!isset($_POST["createbootmenu"])){
$bootmenuForm = new user_Form_Bootmenu(array('action' => 'createbootmenu', 'rights' => 'all'));
} else {
$bootmenuForm = new user_Form_Bootmenu(array('action' => 'createbootmenu', 'rights' => 'all'),$_POST);
if ($bootmenuForm->isValid($_POST)) {
$bootmenu = new Application_Model_BootMenu($_POST);
$bootmenu->setMembershipID($this->membership->getID());
$bootmenu->setGroupID($this->membership->getGroupID());
$bootmenu->setCreated(time());
try{
$this->bootmenuMapper->save($bootmenu);
}catch(Zend_Exception $e){
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/bootmenu/index/page/'.$page.'/addresult/error');
}
$this->_redirect('/user/bootmenu/index/page/'.$page.'/addresult/ok');
}
}
$this->view->bootmenuForm = $bootmenuForm;
}
public function editbootmenuAction()
{
//TODO ACL Is he allowed to edit BootMenus?
if(false)
$this->_redirect('/user/bootmenu/index/page/'.$page.'/modifyresult/forbidden');
$bootmenuID = $this->_request->getParam('bootmenuID');
if (!is_numeric($bootmenuID))
$this->_redirect('/user/bootmenu/index/page/'.$page.'/modifyresult/forbidden');
$bootmenu = new Application_Model_BootMenu();
$bootmenu = $this->bootmenuMapper->find($bootmenuID);
if($this->membership->getGroupID() != $bootmenu->getGroupID())
$this->_redirect('/user/bootmenu/index/page/'.$page.'/modifyresult/forbidden');
if (!isset($_POST["editbootmenu"])){
$bootmenuForm = new user_Form_Bootmenu(array('action' => 'editbootmenu', 'rights' => 'all'));
$bootmenuForm->populate($bootmenu->toArray());
}else{
$bootmenuForm = new user_Form_Bootmenu(array('action' => 'editbootmenu', 'rights' => 'all'),$_POST);
if ($bootmenuForm->isValid($_POST)) {
$bootmenuold = $bootmenu;
$bootmenu = new Application_Model_BootMenu($_POST);
$bootmenu->setMembershipID($this->membership->getID());
$bootmenu->setCreated(time());
$bootmenu->setID($bootmenuID);
//TODO ACL Is he allowed to edit this?
if(false)
$this->_redirect('/user/bootmenu/index/page/'.$page.'/modifyresult/forbidden');
try {
$this->bootmenuMapper->save($bootmenu);
}catch(Zend_Exception $e)
{
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/bootmenu/index/page/'.$page.'/modifyresult/error');
}
$this->_redirect('/user/bootmenu/index/page/'.$page.'/modifyresult/ok');
}
}
$this->view->editbootmenuForm = $editbootmenuForm;
}
public function deletebootmenuAction()
{
//TODO ACL Is he allowed to delete Bootos?
if(false)
$this->_redirect('/user/bootos/index/page/'.$page.'/deleteresult/forbidden');
try{
$bootmenuID = $this->_request->getParam('bootmenuID');
if (!is_numeric($bootmenuID))
$this->_redirect('/user/bootmenu/index/page/'.$page.'/deleteresult/forbidden');
$bootmenu = new Application_Model_BootMenu();
$this->bootmenuMapper->find($bootmenuID, $bootmenu);
if($this->membership->getGroupID() != $bootmenu->getGroupID())
$this->_redirect('/user/bootmenu/index/page/'.$page.'/deleteresult/forbidden');
$this->bootmenuMapper->delete($bootmenu);
}catch(Zend_Exception $e){
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/bootmenu/index/page/'.$page.'/deleteresult/error');
}
$this->_redirect('/user/bootmenu/index/page/'.$page.'/deleteresult/ok');
}
public function addbootmenuentryAction()
{
$bootmenuID = $this->_request->getParam('bootmenuID');
$bootosmapper = new Application_Model_BootOsMapper();
$configmapper = new Application_Model_ConfigMapper();
if (!isset($_POST["addbootmenuentry"])){
$addbootmenuentryForm = new user_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 user_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('/user/bootmenu');
}
}
$this->view->addbootmenuentryForm = $addbootmenuentryForm;
}
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('/user/bootmenu');
} else {
$bootmenuentrymapper->find($bootmenuentryID, $bootmenuentry);
$editbootmenuentryForm = new user_Form_BootmenuEntries(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 user_Form_BootmenuEntries(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('/user/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('/user/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;
}
}