summaryrefslogblamecommitdiffstats
path: root/application/controllers/PersonController.php
blob: a87702c3be3116d04122480b327f9cfa82fc3d84 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                                                           
                                 
                                            
                                      
                                 
                                           

                            



                                                              
                                                                      

                                                                        
                                                                                        

                                                                                      




                                                                                                 
                                                            
                                                                                        





























                                                                                                                                                                                                                                                
                                 
                         
 
                                                          
                                                                            

                                                                                                                                                                                                                                            



                                                                                                  



                                                                                                                     
                                                                                                                                                                                                                                       









                                                                                                                          
                                                                                                             
                                                                                 


                                                                                                          
                                                                                                       



                                                                                                                   
                                         









                                                                    








                                                                                
                                                    
                                                        








                                                                                      
                                                            
                                                                    
                                                                                     




                                                                                    


                                                                       
                                                                                                 
                                                                                             
                                                                                          
                                                                                            
                                                                                          
                                                                                        
                                                                                        


                                                              
                                                                       

                                                                                            

                                                                                                                                                                                                                                                            

                                                                                                       
                                                                                                                  
                                                                                                       


                                                                                                                                     

                                                                                                    
                                                                                                  
                                                                                                                               
                                                                                                                     



                                                                                               
                                                                                                                               
                                                                                                                     

                                                                          
 




                                                                                                                                                                                          





                                                                                                                                                  
                                                                        
                                                                                                                                           












                                                                         
<?php
/*
 * Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg
 * This program is free software distributed under the GPL version 2.
 * See http://gpl.openslx.org/
 *
 * If you have any feedback please consult http://feedback.openslx.org/ and
 * send your suggestions, praise, or complaints to feedback@openslx.org
 *
 * General information about OpenSLX can be found at http://openslx.org/
 */

class PersonController extends Zend_Controller_Action
{
	protected $person = null;
	protected $currentMembership = null;
	protected $memberships = null;
	protected $groups = null;
	protected $userIDsNamespace = null;
	protected $config;
	protected $pbs2host;

	public function init()
	{
		if (Zend_Auth::getInstance()->hasIdentity()) {
			$bootstrap = $this->getInvokeArg('bootstrap');
			$this->config = $bootstrap->getOptions();
			$this->pbs2host = $this->config['pbs2']['host'];
			$this->userIDsNamespace = Zend_Session::namespaceGet('userIDs');
			$this->currentMembership = new Application_Model_Membership();
			$this->person = new Application_Model_Person();
			foreach(Zend_Session::namespaceGet('memberships') as $membershipArray) {
				$membership = new Application_Model_Membership($membershipArray);
				$membership->setID($membershipArray['membershipID']);
				$this->memberships[$membership->getID()] = $membership;
			}
			if(count($this->userIDsNamespace)) {
				$membershipID = $this->userIDsNamespace['membershipID'];
				$membershipApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getmembership'] . $userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', '');
				$membershipXMLString = $membershipApiResult['http-body'];
				if(strlen($membershipXMLString) > 0) {
					$membershipXML = new SimpleXMLElement($membershipXMLString);
					$membership = new Application_Model_Membership();
					$membership->setID(sprintf("%s", $membershipXML->membership->id));
					$membership->setGroupID(sprintf("%s", $membershipXML->membership->groupid));
					$membership->setPersonID(sprintf("%s", $membershipXML->membership->personid));
					$membership->setRoleID(sprintf("%s", $membershipXML->membership->roleid));
					$membership->setSuspend(sprintf("%s", $membershipXML->membership->suspend));
					$membership->setApikey(sprintf("%s", $membershipXML->membership->apikey));

					$personApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getperson'] . $this->currentMembership->getApikey(), 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', '');
					$personXMLString = $personApiResult['http-body'];
					if(strlen($personXMLString) > 0) {
						$personXML = new SimpleXMLElement($personXMLString);
						$this->person->setID(sprintf("%s", $personXML->person->id));
						$this->person->setCity(sprintf("%s", $personXML->person->city));
						$this->person->setEmail(sprintf("%s", $personXML->person->email));
						$this->person->setFirstname(sprintf("%s", $personXML->person->firstname));
						$this->person->setHousenumber(sprintf("%s", $personXML->person->housenumber));
						$this->person->setLogin(sprintf("%s", $personXML->person->login));
						$this->person->setLogindate(sprintf("%s", $personXML->person->logindate));
						$this->person->setName(sprintf("%s", $personXML->person->name));
						$this->person->setPostalcode(sprintf("%s", $personXML->person->postalcode));
						$this->person->setRegisterdate(sprintf("%s", $personXML->person->registerdate));
						$this->person->setStreet(sprintf("%s", $personXML->person->street));
						$this->person->setSuspend(sprintf("%s", $personXML->person->suspend));
						$this->person->setTitle(sprintf("%s", $personXML->person->title));
					}
				}
			}

			if(is_array($this->memberships)) {
				foreach($this->memberships as $membership) {
					$grouprequest = "groupid=" . $membership->getGroupID();
					$groupApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getgroup'] . $membership->getApikey(), 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $grouprequest);
					$groupXMLString = $groupApiResult['http-body'];
					if(strlen($groupXMLString) > 0) {
						$groupXML = new SimpleXMLElement($groupXMLString);
						$group = new Application_Model_Group();
						$group->setID(sprintf("%s", $groupXML->group->id));
						$group->setTitle(sprintf("%s", $groupXML->group->title));
						$group->setDescription(sprintf("%s", $groupXML->group->description));

						$roleApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getrole'] . $membership->getApikey(), 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', '');
						$roleXMLString = $roleApiResult['http-body'];
						if(strlen($roleXMLString) > 0) {
							$roleXML = new SimpleXMLElement($roleXMLString);
							$role = new Application_Model_Role();
							$role->setID(sprintf("%s", $roleXML->role->id));
							$role->setGroupID(sprintf("%s", $roleXML->role->groupid));
							$role->setTitle(sprintf("%s", $roleXML->role->title));
							$role->setDescription(sprintf("%s", $roleXML->role->description));
							$role->setInheritance(sprintf("%s", $roleXML->role->inheritance));

							$apikeys[$group->getID()] = $membership->getApikey();
							$this->groups[] = array (
                        					'groupID'  => $group->getID(),	
                        					'title' => $group->getTitle(),
                        					'description' => $group->getDescription(),
                        					'membershipID' => $membership->getID(),
											'role' => $role->getTitle()
							);
							$this->view->apikeys = $apikeys;
						}
					}
				}
			}
		} else {
			$this->_helper->redirector('login', 'auth');
			return;
		}
	}

	public function indexAction()
	{
		$pagination = new Poolctrl_Pagination();
		$pagination->setPerPage(5);
		$pagination->setElement($this->groups);
		$pagination->setRequestPage($this->_request->getParam('page'));
		$pagination->setPageUrl('/person/index');

		$this->view->groups = $pagination->getElements();
		$this->view->pagination = $pagination->pagination();
		$this->view->page 		= $pagination->getRequestPage();
		$this->view->person = $this->person;
		$this->view->pbs2host = $this->pbs2host;
		$this->view->userIDsNamespace = Zend_Session::namespaceGet('userIDs');
	}

	public function selectmembershipAction()
	{
		$userIDsNamespace = Zend_Session::namespaceGet('userIDs');
		if(isset($userIDsNamespace['membershipID'])) {
			$this->_redirect('/');
		} else {
			if(count($this->memberships) == 1) {
				$membership = $this->memberships[0];
				$userSession = new Zend_Session_Namespace('userIDs');
				$userSession->membershipID = $membership->getID();
				$userSession->personID = $membership->getPersonID();
				$userSession->groupID = $membership->getGroupID();
				$userSession->roleID = $membership->getRoleID();
				$userSession->apikey = $membership->getApikey();
				$this->_redirect('/');
			} elseif(count($this->memberships) > 1) {
				if(isset($_POST['selectmembership'])) {
					$membership = $this->memberships[$_POST['membershipID']];
					$userSession = new Zend_Session_Namespace('userIDs');
					$userSession->membershipID = $membership->getID();
					$userSession->personID = $membership->getPersonID();
					$userSession->groupID = $membership->getGroupID();
					$userSession->roleID = $membership->getRoleID();
					$userSession->apikey = $membership->getApikey();
					$this->_redirect('/');
					return;
				} else {
					if(isset($this->memberships)) {
						$suspendlist = array();
						foreach($this->memberships as $membership) {
							$grouprequest = "groupid=" . $membership->getGroupID();
							$groupApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getgroup'] . $membership->getApikey(), 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $grouprequest);
							$groupXMLString = $groupApiResult['http-body'];
							if(strlen($groupXMLString) > 0) {
								$groupXML = new SimpleXMLElement($groupXMLString);
								$group = new Application_Model_Group();
								$group->setID(sprintf("%s", $groupXML->group->id));
								$group->setTitle(sprintf("%s", $groupXML->group->title));
								$group->setDescription(sprintf("%s", $groupXML->group->description));
								$supend = $membership->getSuspend();
								if($suspend == 0){
									$membershipList[] = array(
                                							'membershipID' => $membership->getID(),
                                							'group' => $group->getTitle()
									);
								}
								else{
									$suspendlist[] = array(
                                							'membershipID' => $membership->getID(),
                                							'group' => $group->getTitle()
									);
								}

							}
							if(count($suspendlist) >=1){
								$poolNotifier = new Poolctrl_Notifier();
								$this->view->notification = $poolNotifier->notify("Actually ".count($suspendlist)." Memberships are suspended", 'error' );
							}
						}
					}
					$membershipSelectForm = new Application_Form_MembershipSelect(array('membershiplist' => $membershipList));
					$this->view->membershipSelectForm = $membershipSelectForm;
				}
			} else {
				$poolNotifier = new Poolctrl_Notifier();
				$this->view->notification = $poolNotifier->notify("Currently you are not a member of any group", 'error' );
			}
		}
	}

	public function changemembershipAction()
	{
		$this->_helper-> viewRenderer-> setNoRender();
		Zend_Session::namespaceUnset('userIDs');
		$this->_helper->redirector('selectmembership', 'person');
		return;
	}
}