summaryrefslogtreecommitdiffstats
path: root/application/modules/fbgui/controllers/PersonController.php
blob: ee36a00e4cae402524e4ce6d598f31e4a32ec5ca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?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 Fbgui_PersonController extends Zend_Controller_Action {
  protected $person;
  protected $personmapper;
  protected $membershipMapper;
  protected $memberships;

  public function init() {
    if (Zend_Auth::getInstance()->hasIdentity()) {
      $this->personmapper = new Application_Model_PersonMapper();
      $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->membershipMapper = new Application_Model_MembershipMapper();
      $this->memberships = $this->membershipMapper->findBy(array("personID" => $this->person->getID()), true);
    } else {
      $this->_helper->redirector('login', 'auth');
    }
  }

  public function indexAction() {
    $this->_helper->redirector('selectmembership', 'person');
  }

  public function selectmembershipAction() {
    $userIDsNamespace = Zend_Session::namespaceGet('userIDs');
    if(isset($userIDsNamespace['membershipID'])) {
      $this->_redirect('/fbgui/');
    } else {
      if(count($this->memberships) == 1) {
        $myMembership = $this->memberships[0];
        $roleSession = new Zend_Session_Namespace('userIDs');
        $roleSession->membershipID = $myMembership['membershipID'];
        $roleSession->personID = $myMembership['personID'];
        $roleSession->groupID = $myMembership['groupID'];
        $roleSession->roleID = $myMembership['roleID'];
        $this->_redirect('/fbgui/');
      }
      elseif(count($this->memberships) > 1) {
        if(isset($_POST['selectmembership'])) {
          $roleSession = new Zend_Session_Namespace('userIDs');
          $roleSession->membershipID = $_POST['membershipID'];
          $roleSession->personID = $this->person->getID();
          $membership = $this->membershipMapper->find($_POST['membershipID']);
          $roleSession->groupID = $membership->getGroupID();
          $roleSession->roleID = $membership->getRoleID();
          $this->_redirect('/fbgui/');
          return;
        } else {
          $groupMapper = new Application_Model_GroupMapper();
          $roleMapper = new Application_Model_RoleMapper();
          if(isset($this->memberships)) {
            foreach($this->memberships as $membership) {
              $group = $groupMapper->find($membership['groupID']);
              $role = $roleMapper->find($membership['roleID']);
              $membershipList[] = array(
                                    'membershipID' => $membership['membershipID'],
                                    'group' => $group->getTitle(),
                                    'role' => $role->getTitle()
                                  );
            }
          }
          $membershipSelectForm = new fbgui_Form_MembershipSelect(array('membershiplist' => $membershipList));
          $this->view->membershipSelectForm = $membershipSelectForm;
        }
      }
      else {
        $this->_redirect('/fbgui/index/index/notify/nomember');
      }
    }
  }

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