groupmanagement.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 772 行 · 第 1/3 页

SVN-BASE
772
字号
<?php/** * $Id$ * * KnowledgeTree Community Edition * Document Management Made Simple * Copyright (C) 2008 KnowledgeTree Inc. * Portions copyright The Jam Warehouse Software (Pty) Limited *  * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 3 as published by the * Free Software Foundation. *  * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more * details. *  * You should have received a copy of the GNU General Public License * along with this program.  If not, see <http://www.gnu.org/licenses/>. *  * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco,  * California 94120-7775, or email info@knowledgetree.com. *  * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. *  * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * KnowledgeTree" logo and retain the original copyright notice. If the display of the  * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices * must display the words "Powered by KnowledgeTree" and retain the original  * copyright notice. * Contributor( s): ______________________________________ * */require_once(KT_LIB_DIR . '/users/User.inc');require_once(KT_LIB_DIR . '/groups/GroupUtil.php');require_once(KT_LIB_DIR . '/groups/Group.inc');require_once(KT_LIB_DIR . '/unitmanagement/Unit.inc');require_once(KT_LIB_DIR . "/templating/templating.inc.php");require_once(KT_LIB_DIR . "/dispatcher.inc.php");require_once(KT_LIB_DIR . "/templating/kt3template.inc.php");require_once(KT_LIB_DIR . "/widgets/fieldWidgets.php");require_once(KT_LIB_DIR . "/widgets/forms.inc.php");require_once(KT_LIB_DIR . "/authentication/authenticationsource.inc.php");require_once(KT_LIB_DIR . "/authentication/authenticationproviderregistry.inc.php");require_once(KT_LIB_DIR . "/authentication/builtinauthenticationprovider.inc.php");class KTGroupAdminDispatcher extends KTAdminDispatcher {    // {{{ do_main    var $sHelpPage = 'ktcore/admin/manage groups.html';        function predispatch() {        $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _kt('Group Management'));            $this->persistParams(array('old_search'));    }        function do_main() {        $this->oPage->setBreadcrumbDetails(_kt('select a group'));        $this->oPage->setTitle(_kt("Group Management"));                $KTConfig =& KTConfig::getSingleton();        $alwaysAll = $KTConfig->get("alwaysShowAll");                $name = KTUtil::arrayGet($_REQUEST, 'search_name', KTUtil::arrayGet($_REQUEST, 'old_search'));        $show_all = KTUtil::arrayGet($_REQUEST, 'show_all', $alwaysAll);        $group_id = KTUtil::arrayGet($_REQUEST, 'group_id');            $no_search = true;                if (KTUtil::arrayGet($_REQUEST, 'do_search', false) != false) {            $no_search = false;        }                if ($name == '*') {             $show_all = true;            $name = '';        }                            $search_fields = array();        $search_fields[] =  new KTStringWidget(_kt('Group Name'), _kt("Enter part of the group's name.  e.g. <strong>ad</strong> will match <strong>administrators</strong>."), 'search_name', $name, $this->oPage, true);                if (!empty($name)) {            $search_results =& Group::getList('WHERE name LIKE \'%' . DBUtil::escapeSimple($name) . '%\' AND id > 0');        } else if ($show_all !== false) {            $search_results =& Group::getList('id > 0');            $no_search = false;            $name = '*';        }                    $oTemplating =& KTTemplating::getSingleton();                $oTemplate = $oTemplating->loadTemplate("ktcore/principals/groupadmin");        $aTemplateData = array(            "context" => $this,            "search_fields" => $search_fields,            "search_results" => $search_results,            'no_search' => $no_search,            'old_search' => $name,                     );        return $oTemplate->render($aTemplateData);    }    // }}}    // {{{ do_editGroup    function do_editGroup() {        $old_search = KTUtil::arrayGet($_REQUEST, 'old_search');                $this->oPage->setBreadcrumbDetails(_kt('edit group'));                $group_id = KTUtil::arrayGet($_REQUEST, 'group_id');        $oGroup = Group::get($group_id);        if (PEAR::isError($oGroup) || $oGroup == false) {            $this->errorRedirectToMain(_kt('Please select a valid group.'), sprintf("old_search=%s&do_search=1", $old_search));        }            $this->oPage->setTitle(sprintf(_kt("Edit Group (%s)"), $oGroup->getName()));                $edit_fields = array();        $edit_fields[] =  new KTStringWidget(_kt('Group Name'), _kt('A short name for the group.  e.g. <strong>administrators</strong>.'), 'group_name', $oGroup->getName(), $this->oPage, true);        $edit_fields[] =  new KTCheckboxWidget(_kt('Unit Administrators'), _kt('Should all the members of this group be given <strong>unit</strong> administration privileges?'), 'is_unitadmin', $oGroup->getUnitAdmin(), $this->oPage, false);        $edit_fields[] =  new KTCheckboxWidget(_kt('System Administrators'), _kt('Should all the members of this group be given <strong>system</strong> administration privileges?'), 'is_sysadmin', $oGroup->getSysAdmin(), $this->oPage, false);                // grab all units.        $unitId = $oGroup->getUnitId();        if ($unitId == null) { $unitId = 0; }                        $oUnits = Unit::getList();        $vocab = array();        $vocab[0] = _kt('No Unit');        foreach ($oUnits as $oUnit) { $vocab[$oUnit->getID()] = $oUnit->getName(); }         $aOptions = array('vocab' => $vocab);                $edit_fields[] =  new KTLookupWidget(_kt('Unit'), _kt('Which Unit is this group part of?'), 'unit_id', $unitId, $this->oPage, false, null, null, $aOptions);                    $oTemplating =& KTTemplating::getSingleton();                $oTemplate = $oTemplating->loadTemplate("ktcore/principals/editgroup");        $aTemplateData = array(            "context" => $this,            "edit_fields" => $edit_fields,            "edit_group" => $oGroup,            "old_search" => $old_search,        );        return $oTemplate->render($aTemplateData);    }    // }}}    // {{{ do_saveGroup    function do_saveGroup() {        $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('Please select a valid group.'), sprintf("old_search=%s&do_search=1", $old_search));        }        $group_name = KTUtil::arrayGet($_REQUEST, 'group_name');        if (empty($group_name)) { $this->errorRedirectToMain(_kt('Please specify a name for the group.')); }        $is_unitadmin = KTUtil::arrayGet($_REQUEST, 'is_unitadmin', false);        if ($is_unitadmin !== false) { $is_unitadmin = true; }        $is_sysadmin = KTUtil::arrayGet($_REQUEST, 'is_sysadmin', false);        if ($is_sysadmin !== false) { $is_sysadmin = true; }                $this->startTransaction();                $oGroup->setName($group_name);                $oGroup->setUnitAdmin($is_unitadmin);        $oGroup->setSysAdmin($is_sysadmin);        $unit_id = KTUtil::arrayGet($_REQUEST, 'unit_id', 0);        if ($unit_id == 0) { // not set, or set to 0.            $oGroup->setUnitId(null); // safe.        } else {            $oGroup->setUnitId($unit_id);        }        $res = $oGroup->update();        if (($res == false) || (PEAR::isError($res))) { return $this->errorRedirectToMain(_kt('Failed to set group details.'), sprintf("old_search=%s&do_search=1", $old_search)); }        if (!Permission::userIsSystemAdministrator($_SESSION['userID'])) {            $this->rollbackTransaction();            $this->errorRedirectTo('editGroup', _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();        if($unit_id == 0 && $is_unitadmin) {            $this->successRedirectToMain(_kt('Group details updated.') . _kt(' Note: group is set as unit administrator, but is not assigned to a unit.'), sprintf("old_search=%s&do_search=1", $old_search));        } else {            $this->successRedirectToMain(_kt('Group details updated.'), sprintf("old_search=%s&do_search=1", $old_search));        }       }    // }}}    function _do_manageUsers_source() {        $old_search = KTUtil::arrayGet($_REQUEST, 'old_search');                $oGroup =& $this->oValidator->validateGroup($_REQUEST['group_id']);        $aGroupUsers = $oGroup->getMembers();        $oTemplate = $this->oValidator->validateTemplate("ktcore/principals/groups_sourceusers");        $aTemplateData = array(            "context" => $this,            'group_users' => $aGroupUsers,            'group' => $oGroup,            "old_search" => $old_search,                    );        return $oTemplate->render($aTemplateData);            }    function do_synchroniseGroup() {        $old_search = KTUtil::arrayGet($_REQUEST, 'old_search');                require_once(KT_LIB_DIR . '/authentication/authenticationutil.inc.php');        $oGroup =& $this->oValidator->validateGroup($_REQUEST['group_id']);        $res = KTAuthenticationUtil::synchroniseGroupToSource($oGroup);        $this->successRedirectTo('manageusers', 'Group synchronised', sprintf('group_id=%d', $oGroup->getId()), sprintf("old_search=%s&do_search=1", $old_search));        exit(0);    }    // {{{ do_manageusers    function do_manageUsers() {        $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.'));        }        $this->aBreadcrumbs[] = array('name' => $oGroup->getName());        $this->oPage->setBreadcrumbDetails(_kt('manage members'));        $this->oPage->setTitle(sprintf(_kt('Manage members of group %s'), $oGroup->getName()));        $iSourceId = $oGroup->getAuthenticationSourceId();        if (!empty($iSourceId)) {            return $this->_do_manageUsers_source();        }                $aInitialUsers = $oGroup->getMembers();        $aAllUsers = User::getList('id > 0');                        // FIXME this is massively non-performant for large userbases..        $aGroupUsers = array();        $aFreeUsers = array();        foreach ($aInitialUsers as $oUser) {            $aGroupUsers[$oUser->getId()] = $oUser;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?