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' ]);