verifyPermission( 'bit_p_admin' );
$successMsg = NULL;
$errorMsg = NULL;
// We need to scan for defaults
global $gBitInstaller;
$gBitInstaller = &$gBitSystem;
$gBitSystem->verifyInstalledPackages();
if( !empty( $_REQUEST['group_id'] ) ) {
$allPerms = $gBitUser->getGroupPermissions( NULL, NULL, NULL, !empty( $_REQUEST['sort_mode'] ) ? $_REQUEST['sort_mode'] : NULL );
// get grouplist separately from the $users stuff to avoid splitting of data due to pagination
$listHash = array( 'sort_mode' => 'group_name_asc' );
$groupList = $gBitUser->getAllGroups( $listHash );
} else {
// get grouplist separately from the $users stuff to avoid splitting of data due to pagination
$listHash = array( 'sort_mode' => !empty( $_REQUEST['sort_mode'] ) ? $_REQUEST['sort_mode'] : 'group_name_asc' );
$groupList = $gBitUser->getAllGroups( $listHash );
}
$gBitSmarty->assign( 'package',isset( $_REQUEST['package'] ) ? $_REQUEST['package'] : 'all' );
if( !empty( $_REQUEST["cancel"] ) ) {
header( 'Location: '.USERS_PKG_URL.'admin/edit_group.php' );
die;
} elseif( isset($_REQUEST["batch_assign"] ) ) {
$groupInfo = $gBitUser->getGroupInfo( $_REQUEST['batch_assign'] );
if( isset( $_REQUEST["confirm"] ) ) {
$gBitUser->batchAssignUsersToGroup( $_REQUEST['batch_assign'] );
} else {
$gBitSystem->setBrowserTitle( tra( 'Confirm Batch Group Assignment' ) );
$formHash['batch_assign'] = $_REQUEST["batch_assign"];
$msgHash = array(
'label' => tra( 'Batch Assign Users to Group' ),
'confirm_item' => $groupInfo['group_name'],
'warning' => tra( 'This will assign every user on the site to the group' ).' '.$groupInfo['group_name'].'',
);
$gBitSystem->confirmDialog( $formHash,$msgHash );
}
} elseif( isset($_REQUEST["members"] ) ) {
$groupInfo = $gBitUser->getGroupInfo( $_REQUEST["members"] );
$gBitSmarty->assign_by_ref( 'groupInfo', $groupInfo );
$groupMembers = $gBitUser->get_group_users( $_REQUEST["members"] );
$gBitSmarty->assign_by_ref( 'groupMembers', $groupMembers );
$mid = "bitpackage:users/group_list_members.tpl";
$gBitSystem->setBrowserTitle( tra( 'Group Members' ).': '.$groupInfo['group_name'] );
} elseif( isset($_REQUEST["save"] ) ) {
if( empty($_REQUEST["name"] ) ) {
$_REQUEST["name"] = $_REQUEST["olgroup"];
}
// modification
$_REQUEST['user_id'] = ROOT_USER_ID;
if( $gBitUser->storeGroup( $_REQUEST ) ) {
$successMsg = "Group changes were saved sucessfully.";
} else {
$errorMsg = $gBitUser->mErrors['groups'];
}
if( !empty( $_REQUEST['default_home_group'] ) ) {
$gBitSystem->storePreference( 'default_home_group', $_REQUEST['group_id'] );
} elseif( $_REQUEST['group_id'] == $gBitSystem->getPreference( 'default_home_group' ) ) {
// the default home group was unchecked.
$gBitSystem->storePreference( 'default_home_group', NULL );
}
// $mid = 'bitpackage:users/admin_groups_list.tpl';
} elseif (isset($_REQUEST['allper'])) {
if ($_REQUEST['oper'] == 'assign') {
$gBitUser->assign_level_permissions($_REQUEST['group_id'], $_REQUEST['level']);
} else {
$gBitUser->remove_level_permissions($_REQUEST['group_id'], $_REQUEST['level']);
}
} elseif (isset($_REQUEST["createlevel"])) {
$gBitUser->create_dummy_level($_REQUEST['level']);
} elseif (isset($_REQUEST['updateperms'])) {
$updatePerms = $gBitUser->getgroupPermissions( $_REQUEST['group_id'] );
if (!empty($_REQUEST['level'])) {
foreach (array_keys($_REQUEST['level'])as $per) {
if( $allPerms[$per]['level'] != $_REQUEST['level'][$per] ) {
// we changed level. perm[] checkbox is not taken into account
$gBitUser->change_permission_level($per, $_REQUEST['level'][$per]);
}
if( isset($_REQUEST['perm'][$per]) && !isset($updatePerms[$per]) ) {
// we have an unselected perm that is now selected
$gBitUser->assignPermissionToGroup($per, $_REQUEST['group_id']);
} elseif( empty($_REQUEST['perm'][$per]) && isset($updatePerms[$per]) ) {
// we have a selected perm that is now UNselected
$gBitUser->remove_permission_from_group($per, $_REQUEST['group_id']);
}
}
}
// let's reload just to be safe.
$allPerms = $gBitUser->getGroupPermissions();
} elseif (isset($_REQUEST["action"])) {
// Process a form to remove a group
if( $_REQUEST["action"] == 'delete' ) {
if( $_REQUEST['group_id'] == $gBitSystem->getPreference( 'default_home_group' ) ) {
$gBitSystem->setPreference( 'default_home_group', NULL );
}
$gBitUser->remove_group($_REQUEST['group_id']);
$successMsg = "The group ".$_REQUEST['group_id']." was deleted.";
unset( $_REQUEST['group_id'] );
} elseif ($_REQUEST["action"] == 'remove') {
$gBitUser->remove_permission_from_group( $_REQUEST["permission"], $_REQUEST['group_id'] );
$successMsg = 'The permission '.$_REQUEST['permission'].' was removed successflly. Undo last action.';
} elseif( $_REQUEST["action"] == 'create' ) {
$mid = 'bitpackage:users/admin_group_edit.tpl';
$gBitSystem->setBrowserTitle( tra( 'Create New Group' ) );
} elseif ($_REQUEST["action"] == 'assign') {
$gBitUser->assignPermissionToGroup($_REQUEST["perm"], $_REQUEST['group_id']);
}
}
// get content and pass it on to the template
include_once( LIBERTY_PKG_PATH.'get_content_list_inc.php' );
$cList['NULL'] = '';
foreach( $contentList['data'] as $cItem ) {
$cList[$contentTypes[$cItem['content_type_guid']]][$cItem['content_id']] = $cItem['title'].' [id: '.$cItem['content_id'].']';
}
$gBitSmarty->assign( 'contentList', $cList );
$inc = array();
if( empty( $mid ) ) {
if( !empty( $_REQUEST['group_id'] ) ) {
$groupInfo = $gBitUser->getGroupInfo( $_REQUEST['group_id'] );
$rs = array();
$gBitUser->getIncludedGroups( $_REQUEST['group_id'], $rs );
foreach( array_keys( $groupList["data"] ) as $groupId ) {
$groupList["data"][$groupId]['included'] = isset( $rs[$groupId] ) ? 'y' : 'n';
}
$levels = $gBitUser->get_permission_levels();
sort($levels);
$gBitSmarty->assign('levels', $levels);
$gBitSmarty->assign_by_ref('defaultGroupId', $gBitSystem->getPreference( 'default_home_group' ) );
$gBitSmarty->assign_by_ref('groupInfo', $groupInfo);
$gBitSmarty->assign_by_ref( 'allPerms', $allPerms );
$gBitSystem->setBrowserTitle( tra( 'Admininster Group' ).': '.$groupInfo['group_name'].' '.(isset( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : '') );
$mid = 'bitpackage:users/admin_group_edit.tpl';
} else {
$gBitSystem->setBrowserTitle( tra( 'Admin List Groups' ) );
$_REQUEST['group_id'] = 0;
$mid = 'bitpackage:users/admin_groups_list.tpl';
}
}
$gBitSmarty->assign('groups', $groupList['data']);
$gBitSmarty->assign('successMsg',$successMsg);
$gBitSmarty->assign('errorMsg',$errorMsg);
// probably obsolete now
//$gBitSmarty->assign( (!empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : 'edit').'TabSelect', 'tdefault' );
// Display the template for group administration
$gBitSystem->display( $mid );
?>