diff --git a/plugins/ktcore/admin/groupManagement.php b/plugins/ktcore/admin/groupManagement.php
index 77f4254..99aa6f9 100755
--- a/plugins/ktcore/admin/groupManagement.php
+++ b/plugins/ktcore/admin/groupManagement.php
@@ -10,7 +10,12 @@ 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 . "/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
function do_main() {
$this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _('Group Management'));
$this->oPage->setBreadcrumbDetails(_('select a group'));
@@ -48,9 +53,9 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
);
return $oTemplate->render($aTemplateData);
}
+ // }}}
-
-
+ // {{{ do_editGroup
function do_editGroup() {
$this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _('Group Management'));
$this->oPage->setBreadcrumbDetails(_('edit group'));
@@ -89,7 +94,9 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
);
return $oTemplate->render($aTemplateData);
}
+ // }}}
+ // {{{ do_saveGroup
function do_saveGroup() {
$group_id = KTUtil::arrayGet($_REQUEST, 'group_id');
$oGroup = Group::get($group_id);
@@ -122,19 +129,46 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
$this->commitTransaction();
$this->successRedirectToMain(_('Group details updated.'));
}
+ // }}}
+ function _do_manageUsers_source() {
+ $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,
+ );
+ return $oTemplate->render($aTemplateData);
+ }
+ function do_synchroniseGroup() {
+ 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()));
+ exit(0);
+ }
+ // {{{ do_manageusers
function do_manageusers() {
$group_id = KTUtil::arrayGet($_REQUEST, 'group_id');
$oGroup = Group::get($group_id);
if ((PEAR::isError($oGroup)) || ($oGroup === false)) {
$this->errorRedirectToMain(_('No such group.'));
}
-
+
+ $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _('Group Management'));
$this->aBreadcrumbs[] = array('name' => $oGroup->getName());
$this->oPage->setBreadcrumbDetails(_('manage members'));
$this->oPage->setTitle(sprintf(_('Manage members of group %s'), $oGroup->getName()));
-
+
+ $iSourceId = $oGroup->getAuthenticationSourceId();
+ if (!empty($iSourceId)) {
+ return $this->_do_manageUsers_source();
+ }
// FIXME replace OptionTransfer.js. me no-likey.
@@ -173,8 +207,9 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
);
return $oTemplate->render($aTemplateData);
}
+ // }}}
-
+ // {{{ do_updateUserMembers
function do_updateUserMembers() {
$group_id = KTUtil::arrayGet($_REQUEST, 'group_id');
$oGroup = Group::get($group_id);
@@ -221,9 +256,10 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
$this->commitTransaction();
$this->successRedirectToMain($msg);
}
+ // }}}
-
// FIXME copy-paste ...
+ // {{{ do_managesubgroups
function do_managesubgroups() {
$group_id = KTUtil::arrayGet($_REQUEST, 'group_id');
$oGroup = Group::get($group_id);
@@ -274,7 +310,9 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
);
return $oTemplate->render($aTemplateData);
}
+ // }}}
+ // {{{ _getUnitName
function _getUnitName($oGroup) {
$iUnitId = $oGroup->getUnitId();
if (empty($iUnitId)) {
@@ -284,8 +322,10 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
return $u->getName();
}
+ // }}}
// FIXME copy-paste ...
+ // {{{ do_updateGroupMembers
function do_updateGroupMembers() {
$group_id = KTUtil::arrayGet($_REQUEST, 'group_id');
$oGroup = Group::get($group_id);
@@ -335,8 +375,9 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
$this->successRedirectToMain($msg);
}
+ // }}}
-
+ // {{{ do_addGroup
function do_addGroup() {
$this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _('Group Management'));
$this->oPage->setBreadcrumbDetails(_('Add a new group'));
@@ -348,16 +389,30 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
$add_fields[] = new KTStringWidget(_('Group Name'),_('A short name for the group. e.g. administrators.'), 'group_name', null, $this->oPage, true);
$add_fields[] = new KTCheckboxWidget(_('Unit Administrators'),_('Should all the members of this group be given unit administration privileges?'), 'is_unitadmin', false, $this->oPage, false);
$add_fields[] = new KTCheckboxWidget(_('System Administrators'),_('Should all the members of this group be given system administration privileges?'), 'is_sysadmin', false, $this->oPage, false);
+
+ $aAuthenticationSources = array();
+ $aAllAuthenticationSources =& KTAuthenticationSource::getList();
+ foreach ($aAllAuthenticationSources as $oSource) {
+ $sProvider = $oSource->getAuthenticationProvider();
+ $oRegistry =& KTAuthenticationProviderRegistry::getSingleton();
+ $oProvider =& $oRegistry->getAuthenticationProvider($sProvider);
+ if ($oProvider->bGroupSource) {
+ $aAuthenticationSources[] = $oSource;
+ }
+ }
$oTemplating = new KTTemplating;
$oTemplate = $oTemplating->loadTemplate("ktcore/principals/addgroup");
$aTemplateData = array(
"context" => $this,
"add_fields" => $add_fields,
+ "authentication_sources" => $aAuthenticationSources,
);
return $oTemplate->render($aTemplateData);
}
+ // }}}
+ // {{{ do_createGroup
function do_createGroup() {
$group_name = KTUtil::arrayGet($_REQUEST, 'group_name');
@@ -380,7 +435,9 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
$this->commitTransaction();
$this->successRedirectToMain(sprintf(_('Group "%s" created.'), $group_name));
}
+ // }}}
+ // {{{ do_deleteGroup
function do_deleteGroup() {
$aErrorOptions = array(
'redirect_to' => array('main'),
@@ -391,7 +448,29 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
$this->oValidator->notError($res, $aErrorOptions);
$this->successRedirectToMain(sprintf(_('Group "%s" deleted.'), $sGroupName));
}
-
+ // }}}
+
+ // {{{ authentication provider stuff
+
+ // {{{ do_addGroupFromSource
+ function do_addGroupFromSource() {
+ $oSource =& KTAuthenticationSource::get($_REQUEST['source_id']);
+ $sProvider = $oSource->getAuthenticationProvider();
+ $oRegistry =& KTAuthenticationProviderRegistry::getSingleton();
+ $oProvider =& $oRegistry->getAuthenticationProvider($sProvider);
+
+ $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _('Group Management'));
+ $this->aBreadcrumbs[] = array('url' => KTUtil::addQueryStringSelf('action=addGroup'), 'name' => _('add a new group'));
+ $oProvider->aBreadcrumbs = $this->aBreadcrumbs;
+ $oProvider->oPage->setBreadcrumbDetails($oSource->getName());
+ $oProvider->oPage->setTitle(_("Modify Group Details"));
+
+ $oProvider->dispatch();
+ exit(0);
+ }
+ // }}}
+
+ // }}}
}
?>