verifyPermission( 'p_users_admin' ); $feedback = []; if( isset( $_REQUEST["batchimport"])) { // check if it's a batch upload if( $_FILES['csvlist']['size'] && is_uploaded_file( $_FILES['csvlist']['tmp_name'] ) ) { global $gBitSmarty, $gBitUser, $gBitSystem; // get the delimiter if it's set - use comma if it not $delimiter = !empty( $_REQUEST['delimiter'] ) ? $_REQUEST['delimiter'] : ","; $fname = $_FILES['csvlist']['tmp_name']; $fhandle = fopen( $fname, "r" ); //Get the field names $fields = fgetcsv( $fhandle, 1000, $delimiter ); // is the file a valid CSV file? if( empty( $fields[0] ) ) { $gBitSystem->fatalError( KernelTools::tra( "The file is not a CSV file or has not a correct syntax" )); } //now load the users in a table while( !feof( $fhandle ) ) { if( $data = fgetcsv( $fhandle, 1000, $delimiter ) ) { for( $i = 0; $i < count( $fields ); $i++ ) { @$ar[$fields[$i]] = $data[$i]; } $userRecords[] = $ar; } } fclose( $fhandle ); // were there any users in the list? if( !is_array( $userRecords ) ) { $gBitSystem->fatalError( KernelTools::tra( "No records were found. Check the file please!" )); } // Process user array $added = 0; $i = 1; foreach( $userRecords as $userRecord ) { $newUser = new RolePermUser(); if( $newUser->importUser( $userRecord ) ) { if( !empty( $userRecord['roles'] ) ) { // roles need to be separated by spaces since this is a csv file $roles = explode( " ", $userRecord['roles'] ); foreach( $roles as $role ) { if( $roleId = $gBitUser->roleExists( $role, ROOT_USER_ID ) ) { $newUser->addUserToRole( $newUser->mUserId, $roleId ); } } } 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 ); } $added++; } else { $discarded[$i] = implode( ',', $newUser->mErrors ); } unset( $newUser ); $i++; } $gBitSmarty->assign( 'added', $added ); if( @is_array( $discarded ) ) { $gBitSmarty->assign( 'discarded', count( $discarded ) ); $gBitSmarty->assign( 'discardlist', $discarded ); } } } foreach( $gBitUser->getDefaultRole() as $defaultRoleId => $defaultRoleName ) { $gBitSmarty->assign('defaultRoleId', $defaultRoleId ); $gBitSmarty->assign('defaultRoleName', $defaultRoleName ); } // Display the template $gBitSystem->display( 'bitpackage:users/users_import.tpl', (!empty( $title ) ? $title : 'Import Users' ) , [ 'display_mode' => 'admin' ]); ?>