Skip to content
Snippets Groups Projects
Commit b70d08e8 authored by Tim Steiner's avatar Tim Steiner
Browse files

User admin has been re-implemented at /auth/user-admin

parent 922911be
No related branches found
No related tags found
No related merge requests found
<?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());
}
}
\ No newline at end of file
This diff is collapsed.
......@@ -9,8 +9,12 @@ class Auth_UserModel extends Unl_Model {
*/
static protected $_ldap;
public static function find($id)
static public function find($id)
{
if (count($id) == 0) {
return new Unl_Model_Collection(__CLASS__);
}
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
......@@ -82,7 +86,7 @@ class Auth_UserModel extends Unl_Model {
}
static public static function findCurrentUser()
static public function findCurrentUser()
{
$username = Zend_Auth::getInstance()->getIdentity();
if (!$username) {
......@@ -92,7 +96,62 @@ class Auth_UserModel extends Unl_Model {
return self::findByUsername($username);
}
public function fetchNew()
/**
* Returns a collection of the users that are members of the given group(s).
*
* @param Auth_GroupModel|Unl_Model_Collection $group
* @param bool[optional] $impliedMemberships
* @return Unl_Model_Collection
*/
static public function findByParentGroup($group, $impliedMemberships = true)
{
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
$select->from(array('u' => 'creqUsers'), array('userId'));
$select->join(array('m' => 'creqGroupImpliedMemberships'), 'u.primaryGroup = m.childGroup', array('parentGroup'));
$select->where('m.type = 1');
if (!$impliedMemberships) {
$select->where("m.explicit = 'yes'");
}
if (Unl_Util::isArray($group)) {
if (count($group) == 0) {
return new Unl_Model_Collection(__CLASS__);
}
$select->where('parentGroup IN(?)', $group->getId());
} else {
$select->where('parentGroup = ?', $group->getId());
}
$records = $select->query()->fetchAll();
$userIds = array();
foreach ($records as $record) {
$userIds[] = $record['userId'];
}
self::find($userIds);
$users = array();
if (Unl_Util::isArray($group)) {
foreach ($group->getId() as $groupId) {
$users[$groupId] = new Unl_Model_Collection(__CLASS__);
}
} else {
$users[$group->getId()] = new Unl_Model_Collection(__CLASS__);
}
foreach ($records as $record) {
$users[$record['parentGroup']][$record['userId']] = Unl_Model_Registry::getInstance()->get(__CLASS__, $record['userId']);
}
if (Unl_Util::isArray($group)) {
return $users;
} else {
return $users[$group->getId()];
}
}
static public function fetchNew()
{
$data = array(
'userId' => null,
......@@ -237,8 +296,8 @@ class Auth_UserModel extends Unl_Model {
$db->query($sql);
$db->query('DROP TABLE creqUsersUpdate');
$sql = 'CREATE TEMPORARY TABLE creqUsersUpdate '
. 'SELECT * FROM creqUsers LIMIT 0';
$sql = 'CREATE TEMPORARY TABLE creqPeopleUpdate '
. 'SELECT * FROM creqPeople LIMIT 0';
$db->query($sql);
......@@ -327,6 +386,7 @@ class Auth_UserModel extends Unl_Model {
$sql .= implode(', ', $sqlParts);
$db->query($sql);
}
public function getId()
{
return $this->_data['userId'];
......@@ -340,15 +400,24 @@ class Auth_UserModel extends Unl_Model {
{
$this->_data['userName'] = $username;
}
public function getFirstName()
{
return $this->_data['firstName'];
}
public function setFirstName($firstName)
{
$this->_data['firstName'] = $firstName;
}
public function getFirstName()
{
return $this->_data['firstName'];
}
public function setFirstName($firstName)
{
$this->_data['firstName'] = $firstName;
}
public function getMiddleName()
{
return $this->_data['middleName'];
}
public function setMiddleName($middleName)
{
$this->_data['middleName'] = $middleName;
}
public function getLastName()
{
......
<h1>Editing Group: <?php echo $this->group->getName(); ?></h1>
<form action="<?php echo $this->baseUrl(); ?>/auth/user-admin/edit-group.post/id/<?php echo $this->group->getId(); ?>" method="post">
Name:<br />
<?php echo $this->formText('name', $this->group->getName()); ?><br />
Description:<br />
<?php echo $this->formText('description', $this->group->getDescription()); ?><br />
<br />Parent Groups:<br />
<?php echo $this->formSelect('parentGroups', $this->parentGroups, array('multiple' => 'multiple'), $this->groups) ?><br />
<br />Child Groups:<br />
<?php echo $this->formSelect('childGroups', $this->childGroups, array('multiple' => 'multiple'), $this->groups) ?><br />
<br />Users:<br />
<?php echo $this->formSelect('users', $this->userMembers, array('multiple' => 'multiple'), $this->users) ?><br />
<br />
<?php echo $this->formSubmit('submit', 'Update Group'); ?><br />
</form>
\ No newline at end of file
<h1>Editing User: <?php echo $this->user->getUsername(); ?></h1>
<form action="<?php echo $this->baseUrl(); ?>/auth/user-admin/edit-user.post/id/<?php echo $this->user->getId(); ?>" method="post">
First Name:<br />
<?php echo $this->formText('firstName', $this->user->getFirstName()); ?><br />
Middle Name:<br />
<?php echo $this->formText('middleName', $this->user->getMiddleName()); ?><br />
Last Name:<br />
<?php echo $this->formText('lastName', $this->user->getLastName()); ?><br />
Email:<br />
<?php echo $this->formText('email', $this->user->getEmail()); ?><br />
Phone:<br />
<?php echo $this->formText('phone', $this->user->getPhone()); ?><br />
Groups:<br />
<?php echo $this->formSelect('groups', $this->userGroups, array('multiple' => 'multiple'), $this->groups) ?><br />
<br />
<?php echo $this->formSubmit('submit', 'Update User'); ?><br />
</form>
\ No newline at end of file
<?php function displayGroup($group, $groupChildGroups, $groupUsers, $baseUrl) { ?>
<h3>
<a href="<?php echo $baseUrl; ?>/auth/user-admin/edit-group/id/<?php echo $group->getId(); ?>">
<?php echo $group->getName(); ?>
</a>
</h3>
<ul>
<?php foreach ($groupChildGroups[$group->getId()] as $childGroup) { ?>
<li>
<?php echo displayGroup($childGroup, $groupChildGroups, $groupUsers, $baseUrl) ?>
</li>
<?php } ?>
<?php foreach ($groupUsers[$group->getId()] as $user) { ?>
<li>
<a href="<?php echo $baseUrl; ?>/auth/user-admin/edit-user/id/<?php echo $user->getId(); ?>">
<?php echo $user->getUsername(); ?>
</a>
</li>
<?php } ?>
</ul>
<?php } ?>
<?php $this->users->orderBy('getUsername'); ?>
<?php $this->groups->orderBy('getName'); ?>
<h1>Select a User or Group</h1>
<ul>
<?php foreach ($this->groups as $group) { ?>
<?php if (count($this->groupParentGroups[$group->getId()]) == 0) { ?>
<li>
<?php echo displayGroup($group, $this->groupChildGroups, $this->groupUsers, $this->baseUrl()); ?>
</li>
<?php } } ?>
</ul>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment