groupmanagement.php
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 772 行 · 第 1/3 页
PHP
772 行
}
foreach ($aAllUsers as $oUser) {
if (!array_key_exists($oUser->getId(), $aGroupUsers)) {
$aFreeUsers[$oUser->getId()] = $oUser;
}
}
$oJSONWidget = new KTJSONLookupWidget(_kt('Users'),
_kt('Select the users which should be part of this group from the left-hand list and then click the <strong>right pointing arrows</strong>. Once you have added all the users that you require, press <strong>save changes</strong>.'),
'users', '', $this->oPage, false, null, null,
array('action'=>'getUsers',
'assigned' => $aGroupUsers,
'multi'=>'true',
'size'=>'8'));
$oTemplating =& KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate("ktcore/principals/groups_manageusers");
$aTemplateData = array(
"context" => $this,
"edit_group" => $oGroup,
'widget' => $oJSONWidget,
"old_search" => $old_search,
);
return $oTemplate->render($aTemplateData);
}
// }}}
function json_getUsers() {
$sFilter = KTUtil::arrayGet($_REQUEST, 'filter', false);
$aUserList = array('off' => _kt('-- Please filter --'));
if($sFilter && trim($sFilter)) {
$aUsers = User::getList(sprintf('name like "%%%s%%"', $sFilter));
$aUserList = array();
foreach($aUsers as $oUser) {
$aUserList[$oUser->getId()] = $oUser->getName();
}
}
return $aUserList;
}
// {{{ do_updateUserMembers
function do_updateUserMembers() {
$old_search = KTUtil::arrayGet($_REQUEST, 'old_search');
$group_id = KTUtil::arrayGet($_REQUEST, 'group_id');
$oGroup = Group::get($group_id);
if ((PEAR::isError($oGroup)) || ($oGroup === false)) {
$this->errorRedirectToMain(_kt('No such group.'));
}
$userAdded = KTUtil::arrayGet($_REQUEST, 'users_items_added','');
$userRemoved = KTUtil::arrayGet($_REQUEST, 'users_items_removed','');
$aUserToAddIDs = explode(",", $userAdded);
$aUserToRemoveIDs = explode(",", $userRemoved);
$this->startTransaction();
$usersAdded = array();
$usersRemoved = array();
$addWarnings = array();
$removeWarnings = array();
foreach ($aUserToAddIDs as $iUserId ) {
if ($iUserId > 0) {
$oUser= User::Get($iUserId);
$memberReason = GroupUtil::getMembershipReason($oUser, $oGroup);
//var_dump($memberReason);
if (!(PEAR::isError($memberReason) || is_null($memberReason))) {
$addWarnings[] = $memberReason;
}
$res = $oGroup->addMember($oUser);
if (PEAR::isError($res) || $res == false) {
$this->errorRedirectToMain(sprintf(_kt('Unable to add user "%s" to group "%s"'), $oUser->getName(), $oGroup->getName()), sprintf("old_search=%s&do_search=1", $old_search));
} else { $usersAdded[] = $oUser->getName(); }
}
}
// Remove groups
foreach ($aUserToRemoveIDs as $iUserId ) {
if ($iUserId > 0) {
$oUser = User::get($iUserId);
$res = $oGroup->removeMember($oUser);
if (PEAR::isError($res) || $res == false) {
$this->errorRedirectToMain(sprintf(_kt('Unable to remove user "%s" from group "%s"'), $oUser->getName(), $oGroup->getName()), sprintf("old_search=%s&do_search=1", $old_search));
} else {
$usersRemoved[] = $oUser->getName();
$memberReason = GroupUtil::getMembershipReason($oUser, $oGroup);
//var_dump($memberReason);
if (!(PEAR::isError($memberReason) || is_null($memberReason))) {
$removeWarnings[] = $memberReason;
}
}
}
}
if (!empty($addWarnings)) {
$sWarnStr = _kt('Warning: some users were already members of some subgroups') . ' — ';
$sWarnStr .= implode(', ', $addWarnings);
$_SESSION['KTInfoMessage'][] = $sWarnStr;
}
if (!empty($removeWarnings)) {
$sWarnStr = _kt('Warning: some users are still members of some subgroups') . ' — ';
$sWarnStr .= implode(', ', $removeWarnings);
$_SESSION['KTInfoMessage'][] = $sWarnStr;
}
$msg = '';
if (!empty($usersAdded)) { $msg .= ' ' . _kt('Added') . ': ' . implode(', ', $usersAdded) . '. '; }
if (!empty($usersRemoved)) { $msg .= ' ' . _kt('Removed') . ': ' . implode(', ',$usersRemoved) . '.'; }
if (!Permission::userIsSystemAdministrator($_SESSION['userID'])) {
$this->rollbackTransaction();
$this->errorRedirectTo('manageUsers', _kt('For security purposes, you cannot remove your own administration priviledges.'), sprintf('group_id=%d', $oGroup->getId()), sprintf("old_search=%s&do_search=1", $old_search));
exit(0);
}
$this->commitTransaction();
$this->successRedirectToMain($msg, sprintf("old_search=%s&do_search=1", $old_search));
}
// }}}
// FIXME copy-paste ...
// {{{ do_manageSubgroups
function do_manageSubgroups() {
$old_search = KTUtil::arrayGet($_REQUEST, 'old_search');
$group_id = KTUtil::arrayGet($_REQUEST, 'group_id');
$oGroup = Group::get($group_id);
if ((PEAR::isError($oGroup)) || ($oGroup === false)) {
$this->errorRedirectToMain(_kt('No such group.'), sprintf("old_search=%s&do_search=1", $old_search));
}
$this->aBreadcrumbs[] = array('name' => $oGroup->getName());
$this->oPage->setBreadcrumbDetails(_kt('manage members'));
$this->oPage->setTitle(sprintf(_kt('Manage members of %s'), $oGroup->getName()));
$aMemberGroupsUnkeyed = $oGroup->getMemberGroups();
$aMemberGroups = array();
$aMemberIDs = array();
foreach ($aMemberGroupsUnkeyed as $oMemberGroup) {
$aMemberIDs[] = $oMemberGroup->getID();
$aMemberGroups[$oMemberGroup->getID()] = $oMemberGroup;
}
$oJSONWidget = new KTJSONLookupWidget(_kt('Groups'),
_kt('Select the groups from the left-hand list that you would like to add to this group and then click the <b>right pointing arrows</b>. Once you have added all the groups that you require, press <b>save changes</b>. Only groups that are logically capable of being included in this group will be available to be added.'),
'groups', '', $this->oPage, false, null, null,
array('action' => sprintf('getSubGroups&group_id=%d', $oGroup->getID()),
'assigned' => $aMemberGroups,
'multi' => 'true',
'size' => '8'));
$oTemplating =& KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate("ktcore/principals/groups_managesubgroups");
$aTemplateData = array("context" => $this,
"edit_group" => $oGroup,
'widget'=>$oJSONWidget,
"old_search" => $old_search,
);
return $oTemplate->render($aTemplateData);
}
// }}}
function json_getSubGroups() {
$sFilter = KTUtil::arrayGet($_REQUEST, 'filter', false);
$aAllowedGroups = array('off' => _kt('-- Please filter --'));
if($sFilter && trim($sFilter)) {
$iGroupID = KTUtil::arrayGet($_REQUEST, 'group_id', false);
if(!$iGroupID) {
return array('error'=>true, 'type'=>'kt.invalid_entity', 'message'=>_kt('An invalid group was selected'));
}
$oGroup = Group::get($iGroupID);
$aMemberGroupsUnkeyed = $oGroup->getMemberGroups();
$aMemberGroups = array();
$aMemberIDs = array();
foreach ($aMemberGroupsUnkeyed as $oMemberGroup) {
$aMemberIDs[] = $oMemberGroup->getID();
$aMemberGroups[$oMemberGroup->getID()] = $oMemberGroup;
}
$aGroupArray = GroupUtil::buildGroupArray();
$aAllowedGroupIDs = GroupUtil::filterCyclicalGroups($oGroup->getID(), $aGroupArray);
$aAllowedGroupIDs = array_diff($aAllowedGroupIDs, $aMemberIDs);
$aAllowedGroups = array();
foreach ($aAllowedGroupIDs as $iAllowedGroupID) {
$g = Group::get($iAllowedGroupID);
if (!PEAR::isError($g) && ($g != false)) {
$aAllowedGroups[$iAllowedGroupID] = $g->getName();
}
}
}
return $aAllowedGroups;
}
// {{{ _getUnitName
function _getUnitName($oGroup) {
$iUnitId = $oGroup->getUnitId();
if (empty($iUnitId)) {
return null;
}
$u = Unit::get($iUnitId);
if (PEAR::isError($u)) {
return null; // XXX: prevent failure if the $u is a PEAR::error
}
return $u->getName();
}
// }}}
// FIXME copy-paste ...
// {{{ do_updateGroupMembers
function do_updateGroupMembers() {
$old_search = KTUtil::arrayGet($_REQUEST, 'old_search');
$group_id = KTUtil::arrayGet($_REQUEST, 'group_id');
$oGroup = Group::get($group_id);
if ((PEAR::isError($oGroup)) || ($oGroup === false)) {
$this->errorRedirectToMain('No such group.', sprintf("old_search=%s&do_search=1", $old_search));
}
$groupAdded = KTUtil::arrayGet($_REQUEST, 'groups_items_added','');
$groupRemoved = KTUtil::arrayGet($_REQUEST, 'groups_items_removed','');
$aGroupToAddIDs = explode(",", $groupAdded);
$aGroupToRemoveIDs = explode(",", $groupRemoved);
$this->startTransaction();
$groupsAdded = array();
$groupsRemoved = array();
foreach ($aGroupToAddIDs as $iMemberGroupID ) {
if ($iMemberGroupID > 0) {
$oMemberGroup = Group::get($iMemberGroupID);
$res = $oGroup->addMemberGroup($oMemberGroup);
if (PEAR::isError($res)) {
$this->errorRedirectToMain(sprintf(_kt("Failed to add %s to %s"), $oMemberGroup->getName(), $oGroup->getName()), sprintf("old_search=%s&do_search=1", $old_search));
exit(0);
} else { $groupsAdded[] = $oMemberGroup->getName(); }
}
}
foreach ($aGroupToRemoveIDs as $iMemberGroupID ) {
if ($iMemberGroupID > 0) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?