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 + -
显示快捷键?