hasIdentity()) {
$userIDsNamespace = Zend_Session::namespaceGet('userIDs');
if($userIDsNamespace['membershipID'] == '') {
$this->_redirect('/user/index');
}
$this->configMapper = new Application_Model_ConfigMapper();
$this->bootosuserMapper = new Application_Model_BootOsUserMapper();
$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();
$this->type = $this->_request->getParam('type');
} 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 Configs sehen?
if(!Pbs_Acl::checkRight('csai') && !Pbs_Acl::checkRight('csui'))
{ $this->_redirect('/user/index'); }
$this->configMapper = new Application_Model_ConfigMapper();
$this->bootosMapper = new Application_Model_BootOsMapper();
$this->bootmenuMapper = new Application_Model_BootMenuMapper();
$this->bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper();
$groupMapper = new Application_Model_GroupMapper();
$this->view->bootoslist = array();
$this->view->configlist = array();
if($this->type == 'own' && Pbs_Acl::checkRight('csui')) {
$this->view->type = 'own';
$bootmenu = $this->bootmenuMapper->findBy(array('membershipID' => $this->membership->getID()));
if($bootmenu != null) {
$bootmenuID = $bootmenu[0]->getID();
$bootmenuentries = $this->bootmenuentriesMapper->findBy(array('bootmenuID' => $bootmenuID));
foreach ($bootmenuentries as $bootmenuentry) {
$bootos = $this->bootosMapper->find($bootmenuentry->getBootosID());
$bootos->setGroupID("[".$bootos->getGroupID()."] ".$groupMapper->find($bootos->getGroupID())->getTitle());
$this->view->bootoslist[$bootos->getID()] = $bootos;
$this->view->configlist[$bootos->getID()] = $this->configMapper->findBy(array('membershipID' => $this->membership->getID(), 'bootosID' => $bootos->getID()));
foreach ($this->view->configlist[$bootos->getID()] as $config) {
$config->setCreated(date(Zend_Registry::get('dateformat'), $config->getCreated()));
}
}
}
} else {
$groupgroupsMapper = new Application_Model_GroupGroupsMapper();
$parents = array();
$groupconfs = array();
$ownerconfs = 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;
if(Pbs_Acl::checkRight('cc')) {
$ownerconfs = $this->configMapper->findBy(array('groupID' => $b->getGroupID(), 'membershipID' => null, 'bootosID' => $b->getID()));
if($groupID != $b->getGroupID())
{ $groupconfs = $this->configMapper->findBy(array('groupID' => $groupID, 'membershipID' => null, 'bootosID' => $b->getID())); }
$this->view->configlist[$b->getID()] = array_merge($ownerconfs, $groupconfs);
} else {
$ownerconfs = $this->configMapper->findBy(array('groupID' => $b->getGroupID(), 'membershipID' => null, 'bootosID' => $b->getID(), 'visible' => '1'));
if($groupID != $b->getGroupID())
{ $groupconfs = $this->configMapper->findBy(array('groupID' => $groupID, 'membershipID' => null, 'bootosID' => $b->getID(), 'visible' => '1')); }
$this->view->configlist[$b->getID()] = array_merge($ownerconfs, $groupconfs);
}
foreach ($this->view->configlist[$b->getID()] as $config) {
$config->setCreated(date(Zend_Registry::get('dateformat'), $config->getCreated()));
}
}
elseif($k == 0 && $b->getPublic() == -1 && Pbs_Acl::checkRight('boc')) {
$this->view->bootoslist[] = $b;
if(Pbs_Acl::checkRight('cc')) {
$ownerconfs = $this->configMapper->findBy(array('groupID' => $b->getGroupID(), 'membershipID' => null, 'bootosID' => $b->getID()));
if($groupID != $b->getGroupID())
{ $groupconfs = $this->configMapper->findBy(array('groupID' => $groupID, 'membershipID' => null, 'bootosID' => $b->getID())); }
$this->view->configlist[$b->getID()] = array_merge($ownerconfs, $groupconfs);
} else {
$ownerconfs = $this->configMapper->findBy(array('groupID' => $b->getGroupID(), 'membershipID' => null, 'bootosID' => $b->getID(), 'visible' => '1'));
if($groupID != $b->getGroupID())
{ $groupconfs = $this->configMapper->findBy(array('groupID' => $groupID, 'membershipID' => null, 'bootosID' => $b->getID(), 'visible' => '1')); }
$this->view->configlist[$b->getID()] = array_merge($ownerconfs, $groupconfs);
}
foreach ($this->view->configlist[$b->getID()] as $config) {
$config->setCreated(date(Zend_Registry::get('dateformat'), $config->getCreated()));
}
}
}
}
$this->view->bootoslist = array_reverse($this->view->bootoslist);
if(count($this->view->bootoslist) > 0) {
foreach ($this->view->bootoslist as $bootos) {
$bootos->setGroupID("[".$bootos->getGroupID()."] ".$groupMapper->find($bootos->getGroupID())->getTitle());
}
}
$this->view->type = 'group';
//$this->view->configlist = $this->configMapper->findBy(array('groupID' => $this->membership->getGroupID()));
}
//print_a($this->view->configlist);
// Search
$search = $this->_request->getParam('search');
$mySearch = new Pbs_Search();
$mySearch->setSearchTerm($search);
$mySearch->setType($this->type);
$mySearch->setModule('config');
if($search != '') {
$this->view->search = $mySearch->getSearchTerm();
$this->view->configlist = $mySearch->search($this->view->configlist
);
}
$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/config/index/type/'.$this->type.((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/config/index/type/'.$this->type.'/search/'.($_GET['search']));
}
public function createconfigAction() {
//ACL Darf er Configs erstellen?
if(!Pbs_Acl::checkRight('cc') && !Pbs_Acl::checkRight('cco'))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/addresult/forbidden'); }
$bootosID = $this->_request->getParam('bootosID');
if (!is_numeric($bootosID))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/addresult/error'); }
if (!isset($_POST["createconfig"])) {
$configForm = new user_Form_Config(array('action' => 'createconfig', 'page' => $this->page, 'type' => $this->type));
} else {
$configForm = new user_Form_Config(array('action' => 'createconfig', 'page' => $this->page, 'type' => $this->type), $_POST);
if ($configForm->isValid($_POST)) {
$config = new Application_Model_Config($_POST);
$config->setCreated(time());
$config->setBootosID($bootosID);
if(Pbs_Acl::checkRight('cc') && $this->_request->getParam('type') == 'group') {
$config->setGroupID($this->membership->getGroupID());
}
elseif(Pbs_Acl::checkRight('cco') && $this->_request->getParam('type') == 'own') {
$config->setVisible('1');
$config->setMembershipID($this->membership->getID());
}
else
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/addresult/error'); }
try {
$this->configMapper->save($config);
} catch(Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/addresult/error');
}
$this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/addresult/ok');
}
}
$this->view->configForm = $configForm;
}
public function showconfigAction() {
$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);
}
$configID = $this->_request->getParam('configID');
if (!is_numeric($configID))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/error'); }
$groupID = $this->membership->getGroupID();
$config = new Application_Model_Config();
$this->configMapper->find($configID, $config);
$hometypeMapper = new Application_Model_HomeTypeMapper();
$this->view->configID = $configID;
$this->view->type = $this->_request->getParam('type');
$this->view->config = $this->configMapper->find($configID)->getTitle();
$this->view->userlist = $this->bootosuserMapper->findBy(array('configID' => $configID));
foreach($this->view->userlist as $user) {
$user->setHometypeID("[".$user->getHometypeID()."] ".$hometypeMapper->find($user->getHometypeID())->getName());
}
}
public function adduserAction() {
$configID = $this->_request->getParam('configID');
if (!is_numeric($configID))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/addresult/error'); }
//ACL Darf er User adden?
if(!Pbs_Acl::checkRight('cc') && !Pbs_Acl::checkRight('cco'))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/addresult/forbidden'); }
$hometypeMapper = new Application_Model_HomeTypeMapper();
$hometype = $hometypeMapper->fetchAll();
if (!isset($_POST["addbootosuser"])) {
$bootosuserForm = new user_Form_BootosUser(array('action' => 'addbootosuser', 'type' => $this->type, 'configID' => $configID, 'hometype' => $hometype), $_POST);
} else {
$bootosuserForm = new user_Form_BootosUser(array('action' => 'addbootosuser', 'type' => $this->type, 'configID' => $configID, 'hometype' => $hometype), $_POST);
if ($bootosuserForm->isValid($_POST)) {
$bootosuser = new Application_Model_BootOsUser($_POST);
$bootosuser->setConfigID($configID);
$bootosuser->setHomepath(str_replace("%login-name%", $bootosuser->getLogin(), $bootosuser->getHomepath()));
if($bootosuser->getPassword() != '%password%')
{ $bootosuser->setPassword(crypt($bootosuser->getPassword(), '$6$'.randomString(8).'$')); }
try {
$this->bootosuserMapper->save($bootosuser);
} catch(Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/addresult/error');
}
$this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/addresult/ok');
}
}
$this->view->bootosuserForm = $bootosuserForm;
}
public function edituserAction() {
//ACL Darf er Configs editieren?
if(!Pbs_Acl::checkRight('ce') && !Pbs_Acl::checkRight('cem') && !Pbs_Acl::checkRight('ceo'))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/modifyresult/forbidden'); }
$configID = $this->_request->getParam('configID');
$bootosuserID = $this->_request->getParam('bootosuserID');
if (!is_numeric($configID) || !is_numeric($bootosuserID))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/modifyresult/error'); }
$groupID = $this->membership->getGroupID();
$bootosuser = new Application_Model_BootOsUser();
$this->bootosuserMapper->find($bootosuserID, $bootosuser);
$config = new Application_Model_Config();
$this->configMapper->find($configID, $config);
$hometypeMapper = new Application_Model_HomeTypeMapper();
$hometype = $hometypeMapper->fetchAll();
if($config->getMembershipID() != null) {
if($this->membership->getID() != $config->getMembershipID() || !Pbs_Acl::checkRight('ceo'))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/modifyresult/forbidden'); }
} else {
if($this->membership->getGroupID() != $config->getGroupID() || (!Pbs_Acl::checkRight('ce') && !Pbs_Acl::checkRight('cem')))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/modifyresult/forbidden'); }
}
if (!isset($_POST["editbootosuser"])) {
if(!isset($_POST['homepath'])) {
$_POST['login'] = $bootosuser->getLogin();
$_POST['hometypeID'] = $bootosuser->getHometypeID();
}
$bootosuserForm = new user_Form_BootosUser(array('action' => 'editbootosuser', 'type' => $this->type, 'configID' => $configID, 'hometype' => $hometype), $_POST);
if(!isset($_POST['homepath']) && $bootosuser->getHometypeID() == '2')
{ $bootosuserForm->populate(array('homepath' => $bootosuser->getHomepath())); }
} else {
$bootosuserForm = new user_Form_BootosUser(array('action' => 'editbootosuser', 'type' => $this->type, 'configID' => $configID, 'hometype' => $hometype), $_POST);
if ($bootosuserForm->isValid($_POST)) {
$bootosuserold = $bootosuser;
$bootosuser = new Application_Model_BootOsUser($_POST);
if($bootosuserold->getHometypeID() != $bootosuser->getHometypeID() ||
$bootosuserold->getHomepath() != $bootosuser->getHomepath()) {
//ACL Is he allowed to edit other than Metadata?
if(!Pbs_Acl::checkRight('ce'))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/modifyresult/forbidden'); }
}
$bootosuser->setID($bootosuserID);
$bootosuser->setConfigID($configID);
$bootosuser->setHomepath(str_replace("%login-name%", $bootosuser->getLogin(), $bootosuser->getHomepath()));
if($bootosuser->getPassword() != '%password%')
{ $bootosuser->setPassword(crypt($bootosuser->getPassword(), '$6$'.randomString(8).'$')); }
try {
$this->bootosuserMapper->save($bootosuser);
} catch(Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/modifyresult/error');
}
$this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/modifyresult/ok');
}
}
$this->view->bootosuserForm = $bootosuserForm;
}
public function deleteuserAction() {
$configID = $this->_request->getParam('configID');
$bootosuserID = $this->_request->getParam('bootosuserID');
if (!is_numeric($configID) || !is_numeric($bootosuserID))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/deleteresult/error'); }
//ACL Darf er User löschen?
if(!Pbs_Acl::checkRight('cd') && !Pbs_Acl::checkRight('cdo'))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/deleteresult/forbidden'); }
try {
$bootosuser = new Application_Model_BootOsUser();
$this->bootosuserMapper->find($bootosuserID, $bootosuser);
$config = new Application_Model_Config();
$this->configMapper->find($configID, $config);
if($config->getMembershipID() != null) {
if($this->membership->getID() != $config->getMembershipID() || !Pbs_Acl::checkRight('cdo'))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/deleteresult/forbidden'); }
} else {
if($this->membership->getGroupID() != $config->getGroupID() || !Pbs_Acl::checkRight('cd'))
{ $this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/deleteresult/forbidden'); }
}
$this->bootosuserMapper->delete($bootosuser);
} catch(Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/deleteresult/error');
}
$this->_redirect('/user/config/showconfig/type/'.$this->type.'/configID/'.$configID.'/deleteresult/ok');
}
public function editconfigAction() {
//ACL Darf er Configs editieren?
if(!Pbs_Acl::checkRight('ce') && !Pbs_Acl::checkRight('cem') && !Pbs_Acl::checkRight('ceo'))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/forbidden'); }
$configID = $this->_request->getParam('configID');
if (!is_numeric($configID))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/error'); }
$groupID = $this->membership->getGroupID();
$config = new Application_Model_Config();
$this->configMapper->find($configID, $config);
if($config->getMembershipID() != null) {
if($this->membership->getID() != $config->getMembershipID() || !Pbs_Acl::checkRight('ceo'))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/forbidden'); }
} else {
if($this->membership->getGroupID() != $config->getGroupID() || (!Pbs_Acl::checkRight('ce') && !Pbs_Acl::checkRight('cem')))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/forbidden'); }
}
if (!isset($_POST["editconfig"])) {
$configForm = new user_Form_Config(array('action' => 'editconfig', 'page' => $this->page, 'type' => $this->type));
$configForm->populate($config->toArray());
} else {
$configForm = new user_Form_Config(array('action' => 'editconfig', 'page' => $this->page, 'type' => $this->type), $_POST);
if ($configForm->isValid($_POST)) {
$configold = $config;
$config = new Application_Model_Config($_POST);
$config->setCreated(time());
$config->setBootosID($configold->getBootosID());
if(Pbs_Acl::checkRight('ce') && $configold->getGroupID() != null) {
$config->setGroupID($this->membership->getGroupID());
}
elseif(Pbs_Acl::checkRight('ceo') && $configold->getMembershipID() != null) {
$config->setVisible($configold->getVisible());
$config->setMembershipID($this->membership->getID());
}
else
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/error'); }
$config->setID($configID);
if($configold->getVisible() != $config->getVisible()) {
//ACL Is he allowed to edit other than Metadata?
if(!Pbs_Acl::checkRight('ce'))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/forbidden'); }
}
try {
$this->configMapper->save($config);
} catch(Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/error');
}
$this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/ok');
}
}
$this->view->configForm = $configForm;
}
public function deleteconfigAction() {
//ACL Darf er Configs löschen?
if(!Pbs_Acl::checkRight('cd') && !Pbs_Acl::checkRight('cdo'))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/deleteresult/forbidden'); }
try {
$configID = $this->_request->getParam('configID');
if (!is_numeric($configID))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/deleteresult/error'); }
$config = new Application_Model_Config();
$this->configMapper->find($configID, $config);
if($config->getMembershipID() != null) {
if($this->membership->getID() != $config->getMembershipID() || !Pbs_Acl::checkRight('cdo'))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/deleteresult/forbidden'); }
} else {
if($this->membership->getGroupID() != $config->getGroupID() || !Pbs_Acl::checkRight('cd'))
{ $this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/deleteresult/forbidden'); }
}
$this->configMapper->delete($config);
} catch(Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "
";
echo "Message: " . $e->getMessage() . "
";
$this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/deleteresult/error');
}
$this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/deleteresult/ok');
}
}