hasIdentity()) { $userIDsNamespace = Zend_Session::namespaceGet('userIDs'); if($userIDsNamespace['membershipID'] ==''){ $this->_redirect('/user/index'); } $this->bootosMapper = new Application_Model_BootOsMapper(); $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); } $result = $this->_request->getParam('updateresult'); if($result != ""){ $pbsNotifier = new Pbs_Notifier(); $this->view->notification = $pbsNotifier->notify('update',$result); } $groupID = $this->membership->getGroupID(); //ACL Darf er BootOs sehen? if(!Pbs_Acl::checkRight('boai') && !Pbs_Acl::checkRight('boui')) $this->_redirect('/user/index'); $groupgroupsMapper = new Application_Model_GroupGroupsMapper(); $parents = array(); $this->view->bootoslist = array(); $parents = $groupgroupsMapper->getParentGroups($groupID); foreach($parents as $k => $parent){ foreach($parent as $p){ $bootos = $this->bootosMapper->findBy(array("groupID" => $p)); foreach ($bootos as $b) if($b->getPublic() - $k >= 0 ) $this->view->bootoslist[] = $b; elseif($k == 0 && $b->getPublic() == -1 && Pbs_Acl::checkRight('boc')) $this->view->bootoslist[] = $b; } } $this->view->bootoslist = array_reverse($this->view->bootoslist); $groupMapper = new Application_Model_GroupMapper(); if(count($this->view->bootoslist)>0){ foreach ($this->view->bootoslist as $bootos){ if($bootos->getDefaultkcl() == null) $bootos->setDefaultkcl("none (edit Bootos to set KCL)"); $bootos->setGroupID("[".$bootos->getGroupID()."] ".$groupMapper->find($bootos->getGroupID())->getTitle()); $bootos->setCreated(date(Zend_Registry::get('dateformat'),$bootos->getCreated())); $bootos->setExpires(date(Zend_Registry::get('dateformat'),$bootos->getExpires())); } } // Search $search = $this->_request->getParam('search'); $mySearch = new Pbs_Search(); $mySearch->setSearchTerm($search); $mySearch->setModule('bootos'); if($search != ''){ $this->view->search = $mySearch->getSearchTerm(); $this->view->bootoslist = $mySearch->search($this->view->bootoslist); } $this->view->searchform = $mySearch->searchForm(); // Pagination $pagination = new Pbs_Pagination(); $pagination->setPerPage(10); $pagination->setElement($this->view->bootoslist); $pagination->setRequestPage($this->_request->getParam('page')); $pagination->setPageUrl('/user/bootos/index'.((isset($this->view->search))?'/search/'.$this->view->search:'')); $this->view->bootoslist = $pagination->getElements(); $this->view->pagination = $pagination->pagination(); $this->view->page = $pagination->getRequestPage(); } public function searchAction(){ $this->_redirect('/user/bootos/index/search/'.($_GET['search'])); } public function createbootosAction() { //ACL Darf er BootISOs erstellen? if(!Pbs_Acl::checkRight('boc')) $this->_redirect('/user/bootos/index/page/'.$this->page.'/addresult/forbidden'); $groupID = $this->membership->getGroupID(); $groupgroupsMapper = new Application_Model_GroupGroupsMapper(); $childgroups = count($groupgroupsMapper->getChildGroups($groupID)); if (!isset($_POST["createbootos"])){ $bootosForm = new user_Form_Bootos(array( 'action' => 'createbootos', 'groupdepth' => $childgroups, 'page' => $this->page)); } else { $bootosForm = new user_Form_Bootos(array( 'action' => 'createbootos', 'groupdepth' => $childgroups, 'page' => $this->page),$_POST); if ($bootosForm->isValid($_POST)) { $bootos = new Application_Model_BootOs($_POST); $bootos->setGroupID($this->membership->getGroupID()); $bootos->setCreated(time()); $bootos->setSource($_SERVER['REMOTE_ADDR']); try { $bootosID = $this->bootosMapper->save($bootos); $bootos->setID($bootosID); if( $_FILES['kernel']['size'] == 0 && $_FILES['kernel']['name'] != '' || $_FILES['init']['size'] == 0 && $_FILES['init']['name'] != '' || $_FILES['config']['size'] == 0 && $_FILES['config']['name'] != '' ){ $this->_redirect('/user/preboot/index/page/'.$this->page.'/addresult/file'); } $initpath = "../resources/bootos/".$bootosID."/initramfs/"; $kernelpath = "../resources/bootos/".$bootosID."/kernel/"; $configpath = "../resources/bootos/".$bootosID."/config/"; mkdir($initpath ,0777, true); mkdir($kernelpath ,0777, true); mkdir($configpath ,0777, true); if($_FILES['kernel']['name'] != ''){ move_uploaded_file($_FILES['kernel']['tmp_name'], $kernelpath."kernel"); } if($_FILES['init']['name'] != ''){ move_uploaded_file($_FILES['init']['tmp_name'], $initpath."initramfs"); } if($_FILES['config']['name'] != ''){ move_uploaded_file($_FILES['config']['tmp_name'], $configpath."default.tgz"); $newconfig = new Pbs_NewConfig(); $newconfig->createDefaultConfig($bootos); } }catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; $this->_redirect('/user/bootos/index/page/'.$this->page.'/addresult/error'); //TODO Delete File & delete bootiso from DB } $this->_redirect('/user/bootos/index/page/'.$this->page.'/addresult/ok'); } } $this->view->bootosForm = $bootosForm; } public function editbootosAction() { //ACL Is he allowed to edit Bootos? if(!Pbs_Acl::checkRight('boe') && !Pbs_Acl::checkRight('boem')) $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/forbidden'); $bootosID = $this->_request->getParam('bootosID'); if (!is_numeric($bootosID)) $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/forbidden'); $groupID = $this->membership->getGroupID(); $groupgroupsMapper = new Application_Model_GroupGroupsMapper(); $childgroups = count($groupgroupsMapper->getChildGroups($groupID)); $bootos = new Application_Model_BootOs(); $bootos = $this->bootosMapper->find($bootosID); if($this->membership->getGroupID() != $bootos->getGroupID()) $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/forbidden'); if (!isset($_POST["editbootos"])){ $bootosForm = new user_Form_Bootos(array( 'action' => 'editbootos', 'groupdepth' => $childgroups, 'page' => $this->page)); $bootosForm->populate($bootos->toArray()); }else{ $bootosForm = new user_Form_Bootos(array( 'action' => 'editbootos', 'groupdepth' => $childgroups, 'page' => $this->page),$_POST); if ($bootosForm->isValid($_POST)) { $bootosold = $bootos; $bootos = new Application_Model_BootOs($_POST); $bootos->setGroupID($this->membership->getGroupID()); $bootos->setSource($bootosold->getSource()); $bootos->setCreated(time()); $bootos->setID($bootosID); try { if( $bootos->getDistro() != $bootosold->getDistro() || $bootos->getDistroversion() != $bootosold->getDistroversion() || $bootos->getShare() != $bootosold->getShare() || $bootos->getShortname() != $bootosold->getShortname() || $bootos->getDefaultkcl() != $bootosold->getDefaultkcl() || $bootos->getExpires() != $bootosold->getExpires() || $bootos->getPublic() != $bootosold->getPublic() ){ //ACL Is he allowed to edit this? if(!Pbs_Acl::checkRight('boe')) $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/forbidden'); } if($_FILES['kernel']['name'] != '' || $_FILES['init']['name'] != '' || $_FILES['config']['name'] != ''){ //ACL Is he allowed to edit the Kernel/Init Path? if(!Pbs_Acl::checkRight('boe')) $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/forbidden'); } if( $_FILES['kernel']['size'] == 0 && $_FILES['kernel']['name'] != '' || $_FILES['init']['size'] == 0 && $_FILES['init']['name'] != '' || $_FILES['config']['size'] == 0 && $_FILES['config']['name'] != '' ){ $this->_redirect('/user/bootos/index/page/'.$this->page.'/addresult/file'); } $initpath = "../resources/bootos/".$bootosID."/initramfs/"; $kernelpath = "../resources/bootos/".$bootosID."/kernel/"; $configpath = "../resources/bootos/".$bootosID."/config/"; mkdir($initpath ,0777, true); mkdir($kernelpath ,0777, true); mkdir($configpath ,0777, true); if($_FILES['kernel']['name'] != ''){ $bootos->setSource($_SERVER['REMOTE_ADDR']); move_uploaded_file($_FILES['kernel']['tmp_name'], $kernelpath."kernel"); } if($_FILES['init']['name'] != ''){ $bootos->setSource($_SERVER['REMOTE_ADDR']); move_uploaded_file($_FILES['init']['tmp_name'], $initpath."initramfs"); } if($_FILES['config']['name'] != ''){ $bootos->setSource($_SERVER['REMOTE_ADDR']); move_uploaded_file($_FILES['config']['tmp_name'], $configpath."default.tgz"); } $this->bootosMapper->save($bootos); }catch(Zend_Exception $e) { echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/error'); //TODO Delete Folder + Preboot } $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/ok'); } } $this->view->bootosForm = $bootosForm; } public function deletebootosAction() { //ACL Is he allowed to delete Bootos? if(!Pbs_Acl::checkRight('bod')) $this->_redirect('/user/bootos/index/page/'.$this->page.'/deleteresult/forbidden'); try{ $bootosID = $this->_request->getParam('bootosID'); if (!is_numeric($bootosID)) $this->_redirect('/user/bootos/index/page/'.$this->page.'/deleteresult/forbidden'); $bootos = new Application_Model_BootOs(); $this->bootosMapper->find($bootosID, $bootos); if($this->membership->getGroupID() != $bootos->getGroupID()) $this->_redirect('/user/bootos/index/page/'.$this->page.'/deleteresult/forbidden'); $this->bootosMapper->delete($bootos); exec("rm -r ../resources/bootos/".$bootosID); }catch(Zend_Exception $e){ echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "
"; $this->_redirect('/user/bootos/index/page/'.$this->page.'/deleteresult/error'); } $this->_redirect('/user/bootos/index/page/'.$this->page.'/deleteresult/ok'); } }