Skip to content
Snippets Groups Projects
UserAdminController.php 4.83 KiB
<?php

class Auth_UserAdminController extends App_Controller_Action
{
    public function indexAction()
    {
        $users = Auth_UserModel::findAll();
        $groups = Auth_GroupModel::findAll(false);
        $groupChildGroups = Auth_GroupModel::findByParentGroup($groups, false);
        $groupParentGroups = Auth_GroupModel::findByChildGroup($groups, false);
        $userGroups = Auth_GroupModel::findByUser($users, false);
        $groupUsers = Auth_UserModel::findByParentGroup($groups, false);
        
        $this->view->users = $users;
        $this->view->groups = $groups;
        $this->view->userGroups = $userGroups;
        $this->view->groupChildGroups = $groupChildGroups;
        $this->view->groupParentGroups = $groupParentGroups;
        $this->view->groupUsers = $groupUsers;
    }
    
    public function editUserAction()
    {
    	$user = Auth_UserModel::find($this->_getParam('id'));
        $groups = Auth_GroupModel::findAll(false);
        $userGroups = Auth_GroupModel::findByUser($user, false);
        
        $groups->orderBy('getName');
        
        $groupsArray = array();
        foreach ($groups as $group) {
        	$groupsArray[$group->getId()] = $group->getName();
        }
        
        $userGroupsArray = array();
        foreach ($userGroups as $group) {
        	$userGroupsArray[] = $group->getId();
        }
        
        $this->view->user = $user;
        $this->view->groups = $groupsArray;
        $this->view->userGroups = $userGroupsArray;
    }
    
    public function editUserPostAction()
    {
    	$in = $this->_getAllParams();
    	print_r($in);
    	
    	$user = Auth_UserModel::find($in['id']);
    	if (!$user) {
    		$user = Auth_UserModel::fetchNew();
    	}
    	
    	$user->setFirstName($in['firstName']);
        $user->setMiddleName($in['middleName']);
    	$user->setLastName($in['lastName']);
    	$user->setEmail($in['email']);
    	$user->setPhone($in['phone']);
    	
    	Auth_UserModel::save($user);
    	
    	$parentGroups = Auth_GroupModel::find($in['groups']);
    	$userGroupMap = array($user->getId() => $parentGroups);
    	
    	Auth_GroupModel::setUserParentGroups($userGroupMap);
    	
    	$this->_disableLayoutAndView();
    	$this->_redirect('/auth/user-admin/edit-user/id/' . $user->getId());
    }
    
    public function editGroupAction()
    {	
        $group = Auth_GroupModel::find($this->_getParam('id'));
        $this->view->group = $group;
        
        $groups = Auth_GroupModel::findAll(false);
        $parentGroups = Auth_GroupModel::findByChildGroup($group, false);
        $childGroups = Auth_GroupModel::findByParentGroup($group, false);
        $userMembers = Auth_UserModel::findByParentGroup($group, false);
        $users = Auth_UserModel::findAll(); 
        
        $groups->orderBy('getName');
        $users->orderBy('getUsername');
        
        $groupsArray = array();
        foreach ($groups as $group) {
            $groupsArray[$group->getId()] = $group->getName();
        }
        
        $usersArray = array();
        foreach ($users as $user) {
        	$usersArray[$user->getId()] = $user->getUsername();
        }
    
        $parentGroupsArray = array();
        foreach ($parentGroups as $group) {
            $parentGroupsArray[] = $group->getId();
        }
        
        $childGroupsArray = array();
        foreach ($childGroups as $group) {
            $childGroupsArray[] = $group->getId();
        }
        
        $userMembersArray = array();
        foreach ($userMembers as $user) {
        	$userMembersArray[] = $user->getId();
        }
        
        $this->view->users = $usersArray;
        $this->view->groups = $groupsArray;
        $this->view->parentGroups = $parentGroupsArray;
        $this->view->childGroups = $childGroupsArray;
        $this->view->userMembers = $userMembersArray;
    }
    
    public function editGroupPostAction()
    {
    	$in = $this->_getAllParams();
    	
    	$group = Auth_GroupModel::find($in['id']);
    	if (!$group) {
    		$group = Auth_GroupModel::fetchNew();
    	}
    	
    	$group->setName($in['name']);
    	$group->setDescription($in['description']);
    	
    	Auth_GroupModel::save($group);
    	
    	$parentGroups = Auth_GroupModel::find((array) $in['parentGroups']);
    	$childGroups = Auth_GroupModel::find((array) $in['childGroups']);
    	$users = Auth_UserModel::find((array) $in['users']);
    	
    	$parentGroupMap = array();
    	$parentGroupMap[$group->getId()] = $parentGroups;
    	Auth_GroupModel::setGroupParentGroups($parentGroupMap);
    	
    	$childGroupMap = array();
    	$childGroupMap[$group->getId()] = $childGroups;
    	Auth_GroupModel::setGroupChildGroups($childGroupMap);
    	
    	$userMap = array();
    	$userMap[$group->getId()] = $users;
    	Auth_GroupModel::setGroupUserMembers($userMap);
    	
    	$this->_redirect('/auth/user-admin/edit-group/id/' . $group->getId());
    }
}