summaryrefslogblamecommitdiffstats
path: root/application/controllers/PersonController.php
blob: d113d2f2a4e8a886b2c57caba2f2df902cdbacf3 (plain) (tree)




































                                                                                                                                      
 
                                                                                       
 




                                                                                                  
                                                                                                      

























                                                                                                              
                                                            
                                                                      




                                                                                           


                                                                       


                                                                                             
                                                                                                            

                                                                                          



                                                                                           
                                                                       

















                                                                                                                                      
                                                                                                
                                                                                                                                                                                  





                                                                                                                                                  
                                                                        
                                                                                                                                           












                                                                         
<?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 $personmapper = null;
	protected $membershipMapper = null;
	protected $memberships = null;
	protected $groupMapper = null;
	protected $groups = null;
	protected $userIDsNamespace = null;

	public function init()
	{
		if (Zend_Auth::getInstance()->hasIdentity()) {
			$this->personmapper = new Application_Model_PersonMapper();
			$this->userIDsNamespace = Zend_Session::namespaceGet('userIDs');
			if(isset($this->userIDsNamespace['personID'])) {
				$this->person = $this->personmapper->find($this->userIDsNamespace['personID']);
			} else {
				$result = $this->personmapper->findBy(array('email' => Zend_Auth::getInstance()->getIdentity()),true);
				$this->person = new Application_Model_Person($result[0]);
				$this->person->setID($result[0]['personID']);
			}
			$this->groupMapper = new Application_Model_GroupMapper();
			$this->membershipMapper = new Application_Model_MembershipMapper();

			$this->memberships = Zend_Session::namespaceGet('memberships');

			$this->view->apikeys = array();

			if(isset($this->memberships)) {
				foreach($this->memberships as $membership) {
					$group = $this->groupMapper->find($membership['groupID']);
					$this->view->apikeys[$group->getID()] = $membership['apikey'];
					$this->groups[] = array (
                        					'groupID'  => $group->getID(),	
                        					'title' => $group->getTitle(),
                        					'description' => $group->getDescription(),
                        					'membershipID' => $membership['membershipID'],
					);
				}
			}
		} else {
			$this->_helper->redirector('login', 'auth');
			return;
		}
	}

	public function indexAction()
	{
		$this->view->person = $this->person;
		$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) {
				$myMembership = $this->memberships[0];
				$userSession = new Zend_Session_Namespace('userIDs');
				$userSession->membershipID = $myMembership['membershipID'];
				$userSession->personID = $myMembership['personID'];
				$userSession->groupID = $myMembership['groupID'];
				$userSession->apikey = $myMembership['apikey'];
				$this->_redirect('/');
			} elseif(count($this->memberships) > 1) {
				if(isset($_POST['selectmembership'])) {
					$userSession = new Zend_Session_Namespace('userIDs');
					$userSession->membershipID = $_POST['membershipID'];
					$userSession->personID = $this->person->getID();
					$membership = $this->membershipMapper->find($_POST['membershipID']);
					$userSession->groupID = $membership->getGroupID();
					$userSession->apikey = $membership->getApikey();
					$this->_redirect('/');
					return;
				} else {
					$groupMapper = new Application_Model_GroupMapper();
					if(isset($this->memberships)) {
						$suspendlist = array();
						foreach($this->memberships as $membership) {
							$group = $groupMapper->find($membership['groupID']);
							if($membership['suspend'] == 0){
								$membershipList[] = array(
                                							'membershipID' => $membership['membershipID'],
                                							'group' => $group->getTitle()
								);
							}
							else{
								$suspendlist[] = array(
                                							'membershipID' => $membership['membershipID'],
                                							'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;
	}
}