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') . ' &mdash; ';
        $sWarnStr .= implode(', ', $addWarnings);
        $_SESSION['KTInfoMessage'][] = $sWarnStr;
    }
    
    if (!empty($removeWarnings)) {
        $sWarnStr = _kt('Warning:  some users are still members of some subgroups') . ' &mdash; ';
        $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 + -
显示快捷键?