hasIdentity()) {
$userIDsNamespace = Zend_Session::namespaceGet('userIDs');
if($userIDsNamespace['membershipID'] == '') {
$this->_redirect('/user/index');
}
$this->prebootMapper = new Application_Model_PreBootMapper();
$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 != "") {
$this->view->notification = Pbs_Notifier::notify('create', $result);
}
$result = $this->_request->getParam('deleteresult');
if($result != "") {
$this->view->notification = Pbs_Notifier::notify('delete', $result);
}
$result = $this->_request->getParam('modifyresult');
if($result != "") {
$this->view->notification = Pbs_Notifier::notify('modify', $result);
}
$groupID = $this->membership->getGroupID();
//ACL Darf er PrebootMenu sehen?
if(!Pbs_Acl::checkRight('pro'))
{ $this->_redirect('/user/index'); }
$this->view->prebootlist = $this->prebootMapper->findBy(array("groupID" => $groupID));
foreach ($this->view->prebootlist as $preboot) {
$preboot->setCreated(date(Zend_Registry::get('dateformat'), $preboot->getCreated()));
}
// Search
$search = $this->_request->getParam('search');
$mySearch = new Pbs_Search();
$mySearch->setSearchTerm($search);
$mySearch->setModule('preboot');
if($search != '') {
$this->view->search = $mySearch->getSearchTerm();
$this->view->prebootlist = $mySearch->search($this->view->prebootlist);
}
$this->view->searchform = $mySearch->searchForm();
// Pagination
$pagination = new Pbs_Pagination();
$pagination->setPerPage(10);
$pagination->setElement($this->view->prebootlist);
$pagination->setRequestPage($this->_request->getParam('page'));
$pagination->setPageUrl('/user/preboot/index'.((isset($this->view->search)) ? '/search/'.$this->view->search : ''));
$this->view->prebootlist = $pagination->getElements();
$this->view->pagination = $pagination->pagination();
$this->view->page = $pagination->getRequestPage();
}
public function searchAction() {
$this->_redirect('/user/preboot/index/search/'.($_GET['search']));
}
public function createprebootAction() {
//ACL Is he allowed to create Preboots?
if(!Pbs_Acl::checkRight('prc'))
{ $this->_redirect('/user/preboot/index/page/'.$this->page.'/addresult/forbidden'); }
if (!isset($_POST["createpreboot"])) {
$prebootForm = new user_Form_Preboot(array(
'action' => 'createpreboot',
'page' => $this->page));
} else {
$prebootForm = new user_Form_Preboot(array(
'action' => 'createpreboot',
'page' => $this->page), $_POST);
if ($prebootForm->isValid($_POST)) {
$groupID = $this->membership->getGroupID();
$source = $_SERVER['REMOTE_ADDR'];
try {
if($_FILES['preboot']['size'] == 0 && $_FILES['preboot']['name'] != '') {
$this->_redirect('/user/preboot/index/page/'.$this->page.'/addresult/file');
}
$preboot = new Application_Model_PreBoot($_POST);
$preboot->setGroupID($groupID);
$preboot->setSource($source);
$preboot->setCreated(time());
$prebootID = $this->prebootMapper->save($preboot);
$prebootpath = "../resources/bootmedium/".$prebootID."/";
mkdir($prebootpath , 0777, true);
if($_FILES['preboot']['name'] != '') {
move_uploaded_file($_FILES['preboot']['tmp_name'], $prebootpath."preboot.zip");
}
} catch(Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/preboot/index/page/'.$this->page.'/addresult/error');
//TODO Delete folder + preboot in DB
}
$this->_redirect('/user/preboot/index/page/'.$this->page.'/addresult/ok');
}
}
$this->view->prebootForm = $prebootForm;
}
public function editprebootAction() {
//ACL Is he allowed to edit Preboots?
if(!Pbs_Acl::checkRight('pre') && !Pbs_Acl::checkRight('prem'))
{ $this->_redirect('/user/preboot/index/page/'.$this->page.'/modifyresult/forbidden'); }
$prebootID = $this->_request->getParam('prebootID');
if (!is_numeric($prebootID))
{ $this->_redirect('/user/preboot/index/page/'.$this->page.'/modifyresult/forbidden'); }
$preboot = new Application_Model_PreBoot();
$this->prebootMapper->find($prebootID, $preboot);
if($this->membership->getGroupID() != $preboot->getGroupID())
{ $this->_redirect('/user/preboot/index/page/'.$this->page.'/modifyresult/forbidden'); }
if (!isset($_POST["editpreboot"])) {
$prebootForm = new user_Form_Preboot(array(
'action' => 'editpreboot',
'page' => $this->page));
$prebootForm->populate($preboot->toArray());
} else {
$prebootForm = new user_Form_Preboot(array(
'action' => 'editpreboot',
'page' => $this->page), $_POST);
if ($prebootForm->isValid($_POST)) {
$prebootold = $preboot;
$source = $_SERVER['REMOTE_ADDR'];
$preboot = new Application_Model_PreBoot($_POST);
$preboot->setGroupID($this->membership->getGroupID());
$preboot->setID($prebootID);
$preboot->setSource($prebootold->getSource());
$preboot->setCreated(time());
if($_FILES['preboot']['name'] != '') {
//ACL Is he allowed to edit other than Metadata?
if(!Pbs_Acl::checkRight('pre'))
{ $this->_redirect('/user/preboot/index/page/'.$this->page.'/modifyresult/forbidden'); }
}
if($_FILES['preboot']['size'] == 0 && $_FILES['preboot']['name'] != '') {
$this->_redirect('/user/preboot/index/page/'.$this->page.'/addresult/file');
}
$prebootpath = "../resources/bootmedium/$prebootID/";
mkdir($prebootpath , 0777, true);
if($_FILES['preboot']['name'] != '') {
$preboot->setSource($source);
move_uploaded_file($_FILES['preboot']['tmp_name'], $prebootpath."preboot.zip");
}
try {
$this->prebootMapper->save($preboot);
} catch(Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/preboot/index/page/'.$this->page.'/modifyresult/error');
//TODO Delete Folder + Preboot
}
$this->_redirect('/user/preboot/index/page/'.$this->page.'/modifyresult/ok');
}
}
$this->view->prebootForm = $prebootForm;
}
public function deleteprebootAction() {
//ACL Is he allowed to delete Preboots?
if(!Pbs_Acl::checkRight('prd'))
{ $this->_redirect('/user/preboot/index/page/'.$this->page.'/deleteresult/forbidden'); }
try {
$prebootID = $this->_request->getParam('prebootID');
if (!is_numeric($prebootID))
{ $this->_redirect('/user/preboot/index/page/'.$this->page.'/deleteresult/forbidden'); }
$preboot = new Application_Model_PreBoot();
$this->prebootMapper->find($prebootID, $preboot);
if($this->membership->getGroupID() != $preboot->getGroupID())
{ $this->_redirect('/user/preboot/index/page/'.$this->page.'/deleteresult/forbidden'); }
$this->prebootMapper->delete($preboot);
exec("rm -r ../resources/bootmedium/".$prebootID);
} catch(Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/preboot/index/page/'.$this->page.'/deleteresult/error');
}
$this->_redirect('/user/preboot/index/page/'.$this->page.'/deleteresult/ok');
}
}