verifyPermission( 'p_users_admin' );
$feedback = [];
if( isset($_REQUEST["newuser"] ) ) {
$userRecord = $_REQUEST;
$newUser = new RolePermUser();
if( $newUser->importUser( $userRecord ) ) {
$gBitSmarty->assign( 'addSuccess', "User Added Successfully" );
if( empty( $_REQUEST['admin_noemail_user'] ) ) {
$ret = users_admin_email_user( $userRecord );
if( is_array( $ret ) ) {
$key = key($ret);
$val = current($ret);
$newUser->mLogs[$key] = $val;
}
$logHash['action_log']['title'] = $userRecord['login'];
$newUser->storeActionLog( $logHash );
}
} else {
$gBitSmarty->assign( 'newUser', $_REQUEST );
$gBitSmarty->assign( 'errors', $newUser->mErrors );
}
} elseif( isset( $_REQUEST["assume_user"]) && $gBitUser->hasPermission( 'p_users_admin' ) ) {
$assume_user = (is_numeric( $_REQUEST["assume_user"] )) ? [ 'user_id' => $_REQUEST["assume_user"] ] : [ 'login' => $_REQUEST["assume_user"] ];
$userInfo = $gBitUser->getUserInfo( $assume_user );
if( isset( $_REQUEST["confirm"] ) ) {
$gBitUser->verifyTicket();
if( $gBitUser->assumeUser( $userInfo["user_id"] ) ) {
header( 'Location: '.$gBitSystem->getDefaultPage() );
die;
}elseif( !empty( $gBitUser->mErrors ) ){
if ( !isset( $feedback['error'] ) ){
$feedback['error'] = [];
}
$feedback['error'] = array_merge( $feedback['error'], $gBitUser->mErrors );
}
} else {
$gBitSystem->setBrowserTitle( 'Assume User Identity' );
$formHash['assume_user'] = $_REQUEST['assume_user'];
$formHash['tk'] = $_REQUEST['tk'];
$msgHash = [
'confirm_item' => KernelTools::tra( 'This will log you in as the user' ) . " $userInfo[real_name] ($userInfo[login])",
];
$gBitSystem->confirmDialog( $formHash,$msgHash );
}
} elseif( !empty( $_REQUEST['find'] ) ) {
$title = 'Find Users';
}
// Process actions here
// Remove user or remove user from team
if( isset( $_REQUEST["action"] ) ) {
$formHash['action'] = $_REQUEST['action'];
if( !empty( $_REQUEST['batch_user_ids'] ) && is_array( $_REQUEST['batch_user_ids'] ) ) {
if( $formHash['action'] == 'export' ) {
$file = tempnam( sys_get_temp_dir(), 'users' );
$fp = fopen($file, 'w');
$printHeader = true;
foreach( $_REQUEST['batch_user_ids'] as $uid ) {
$listUser = RoleUser::getUserObject( $uid );
$hash = $listUser->exportHash();
if( $printHeader ) {
fputcsv( $fp, array_keys( $hash ) );
$printHeader = false;
}
fputcsv( $fp, $hash );
}
fclose( $fp );
header( "Content-Type: text/csv" );
header('Content-disposition: attachment;filename='.$gBitSystem->getConfig('site_title', 'Site').'-users-export-'.date('Y-m-d_Hi').'.csv');
readfile( $file );
flush();
unlink( $file );
exit;
} elseif( isset( $_REQUEST["confirm"] ) ) {
$gBitUser->verifyTicket();
$delUsers = $errDelUsers = "";
foreach( $_REQUEST['batch_user_ids'] as $uid ) {
$expungeUser = RoleUser::getUserObject( $uid );
$userInfo = $gBitUser->getUserInfo( [ 'user_id' => $uid ] );
if( $expungeUser->load() && $expungeUser->expunge( BitBase::getParameter( $_REQUEST, 'delete_user_content' ) ) ) {
$delUsers .= "
{$userInfo['real_name']} ({$userInfo['login']})";
} else {
$errDelUsers .= "User $uid could not be deleted:".var_export( $expungeUser->mErrors, true )."";
}
}
if( !empty( $delUsers ) ) {
$feedback['success'][] = KernelTools::tra( 'Users deleted' ).": ";
}
if( !empty( $errDelUsers ) ) {
$feedback['error'][] = KernelTools::tra( 'Users not deleted' ).": ";
}
} else {
foreach( $_REQUEST['batch_user_ids'] as $uid ) {
$formHash['input'][] = ( $userInfo = $gBitUser->getUserInfo( [ 'user_id' => $uid ] ) )
? '' . "{$userInfo['real_name']} ({$userInfo['login']})
<{$userInfo['email']}>"
: '' . $uid . ' ' . KernelTools::tra( 'not found' ) . '';
}
$formHash['input'][] = " ".KernelTools::tra( 'Delete all content created by this user' );
$gBitSystem->setBrowserTitle( 'Delete users' );
$msgHash = [
'confirm_item' => KernelTools::tra( 'Are you sure you want to remove these users?' ),
'warning' => KernelTools::tra( 'This will permentally delete these users' ),
];
$gBitSystem->confirmDialog( $formHash, $msgHash );
}
} elseif( $_REQUEST["action"] == 'delete' || $_REQUEST["action"] == 'ban' || $_REQUEST["action"] == 'unban' ) {
$formHash['user_id'] = $_REQUEST['user_id'];
$userInfo = $gBitUser->getUserInfo( [ 'user_id' => $_REQUEST["user_id"] ] );
if( !empty( $userInfo['user_id'] ) ) {
$reqUser = new RolePermUser( $_REQUEST["user_id"] );
if( isset( $_REQUEST["confirm"] ) ) {
$gBitUser->verifyTicket();
switch( $_REQUEST["action"] ){
case 'delete':
$reqUser->StartTrans();
if( $reqUser->load(true) && $reqUser->expunge( !empty( $_REQUEST['delete_user_content'] ) ? $_REQUEST['delete_user_content'] : null ) ) {
$feedback['success'][] = KernelTools::tra( 'User deleted' )." {$userInfo['real_name']} ({$userInfo['login']}) <{$userInfo['email']}>";
}
$reqUser->CompleteTrans();
break;
case 'ban':
if( $reqUser->load() && $reqUser->ban() ) {
$feedback['success'][] = KernelTools::tra( 'User banned' )." {$userInfo['real_name']} ({$userInfo['login']})";
}
break;
case 'unban':
if( $reqUser->load() && $reqUser->unban() ) {
$feedback['success'][] = KernelTools::tra( 'User restored' )." {$userInfo['real_name']} ({$userInfo['login']})";
}
break;
}
} else {
switch( $_REQUEST["action"] ){
case 'delete':
$gBitSystem->setBrowserTitle( KernelTools::tra( 'Delete user' ).' '.$reqUser->getDisplayName() );
$reqUser->invokeServices( 'users_expunge_check_function' );
if( !empty( $reqUser->mErrors['expunge_check'] ) ) {
$feedback['error'] = $reqUser->mErrors;
} else {
$formHash['input'][] = "';
foreach( $gLibertySystem->mContentTypes as $contentTypeGuid => $contentTypeHash ) {
// $formHash['input'][] = "Delete All User's $gLibertySystem->getContentTypeName($contentTypeHash['content_type_guid'],true)";
}
$msgHash = [
'confirm_item' => KernelTools::tra( 'Are you sure you want to remove the user?' ),
'warning' => KernelTools::tra( 'This will permentally delete the user' ) . " $userInfo[real_name] ($userInfo[login]) <$userInfo[email]>",
];
$gBitSystem->confirmDialog( $formHash,$msgHash );
}
break;
case 'ban':
$gBitSystem->setBrowserTitle( KernelTools::tra( 'Disable User' ) );
$msgHash = [
'confirm_item' => KernelTools::tra( 'Are you sure you want to disable this user account?' ),
'warning' => KernelTools::tra( 'This will suspend access for user' ) . " $userInfo[real_name] ($userInfo[login])",
];
$gBitSystem->confirmDialog( $formHash,$msgHash );
break;
case 'unban':
$gBitSystem->setBrowserTitle( KernelTools::tra( 'Re-enable user' ) );
$msgHash = [
'confirm_item' => KernelTools::tra( 'Are you sure you want to re-enable this user?' ),
'warning' => KernelTools::tra( 'This will restore access for user' ) . " $userInfo[real_name] ($userInfo[login])",
];
$gBitSystem->confirmDialog( $formHash,$msgHash );
break;
}
}
} else {
$feedback['error'][] = KernelTools::tra( 'User not found' );
}
}
if ($_REQUEST["action"] == 'removerole') {
$gBitUser->removeUserFromRole($_REQUEST["user"], $_REQUEST["role"]);
}
}
foreach( $gBitUser->getDefaultRole() as $defaultRoleId => $defaultRoleName ) {
$gBitSmarty->assign('defaultRoleId', $defaultRoleId );
$gBitSmarty->assign('defaultRoleName', $defaultRoleName );
}
// override default max_records
$listHash = $_REQUEST;
$listHash['max_records'] = !empty( $_REQUEST['max_records'] ) ? $_REQUEST['max_records'] : $gBitSystem->getConfig('max_records');
$users = $gBitUser->getList( $listHash );
$gBitSmarty->assign('users', $users );
$gBitSmarty->assign('usercount', $listHash["cant"]);
$listHash['listInfo']["numrows"] = $listHash["numrows"] ?? 10;
$listHash['listInfo']["URL"] = USERS_PKG_URL."admin/index.php";
$gBitSmarty->assign('control', $listHash['listInfo']);
$gBitSmarty->assign('listInfo', $listHash['listInfo']);
$userObj = new RolePermUser();
$userObj->invokeServices( 'content_edit_function' );
$rolelist = $gBitUser->getRoles(0, false);
$gBitSmarty->assign( 'rolelist', $rolelist );
$gBitSmarty->assign( 'feedback', $feedback );
$gBitSmarty->assign( (!empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : 'userlist').'TabSelect', 'tdefault' );
// Display the template
$gBitSystem->display( 'bitpackage:users/admin_list_users.tpl', !empty( $title ) ? $title : 'Edit Users' , [ 'display_mode' => 'admin' ]);