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 != ""){
$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);
}
$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();
$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'))
$this->view->configlist[$b->getID()] = $this->configMapper->findBy(array('membershipID' => null, 'bootosID' => $b->getID()));
else
$this->view->configlist[$b->getID()] = $this->configMapper->findBy(array('membershipID' => null, 'bootosID' => $b->getID(), 'visible' => '1'));
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'))
$this->view->configlist[$b->getID()] = $this->configMapper->findBy(array('membershipID' => null, 'bootosID' => $b->getID()));
else
$this->view->configlist[$b->getID()] = $this->configMapper->findBy(array('membershipID' => null, 'bootosID' => $b->getID(), 'visible' => '1'));
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 != ""){
$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);
}
$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('csui') && !Pbs_Acl::checkRight('csui')))
$this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/forbidden');
}else{
if($this->membership->getGroupID() != $config->getGroupID() || (!Pbs_Acl::checkRight('csui') && !Pbs_Acl::checkRight('csai')))
$this->_redirect('/user/config/index/type/'.$this->type.'/page/'.$this->page.'/modifyresult/forbidden');
}
$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');
}
}