$value) { $parameters[$key] = Security::remove_XSS($value); } } $interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('PlatformAdmin')]; // Toolbar actions $toolbarActions = ''; // Advanced search form $form = new FormValidator('advancedSearch', 'get', '', '', [], FormValidator::LAYOUT_HORIZONTAL); $form->addElement('header', '', get_lang('AdvancedSearch')); $form->addText('keywordUsername', get_lang('LoginName'), false); $form->addText('keywordEmail', get_lang('Email'), false); $form->addText('keywordFirstname', get_lang('FirstName'), false); $form->addText('keywordLastname', get_lang('LastName'), false); $form->addText('keywordOfficialCode', get_lang('OfficialCode'), false); $statusOptions = [ '%' => get_lang('All'), STUDENT => get_lang('Student'), COURSEMANAGER => get_lang('Teacher'), DRH => get_lang('Drh'), SESSIONADMIN => get_lang('SessionsAdmin'), PLATFORM_ADMIN => get_lang('Administrator') ]; $form->addElement('select', 'keywordStatus', get_lang('Profile'), $statusOptions); $activeGroup = []; $activeGroup[] = $form->createElement('checkbox', 'keywordActive', '', get_lang('Active')); $activeGroup[] = $form->createElement('checkbox', 'keywordInactive', '', get_lang('Inactive')); $form->addGroup($activeGroup, '', get_lang('ActiveAccount'), null, false); $form->addButtonSearch(get_lang('SearchUsers'), 'filter'); // Search filters $searchFilters = [ 'keywordFirstname' => $_GET['keywordFirstname'] ?? '', 'keywordLastname' => $_GET['keywordLastname'] ?? '', 'keywordUsername' => $_GET['keywordUsername'] ?? '', 'keywordEmail' => $_GET['keywordEmail'] ?? '', 'keywordOfficialCode' => $_GET['keywordOfficialCode'] ?? '', 'keywordStatus' => $_GET['keywordStatus'] ?? '', 'keywordActive' => $_GET['keywordActive'] ?? '', 'keywordInactive' => $_GET['keywordInactive'] ?? '', ]; $users = []; if (isset($_GET['filter'])) { $users = UserManager::searchUsers($searchFilters); } $fieldSelector = ''; $jqueryReadyContent = ''; $extraUserField = new ExtraField('user'); if (!empty($users)) { $extraFields = $extraUserField->get_all(['filter = ?' => 1], 'option_order'); $editableFields = [ 'firstname' => get_lang('FirstName'), 'lastname' => get_lang('LastName'), 'email' => get_lang('Email'), 'phone' => get_lang('PhoneNumber'), 'official_code' => get_lang('OfficialCode'), 'status' => get_lang('Profile'), 'active' => get_lang('ActiveAccount'), 'password' => get_lang('Password') ]; foreach ($extraFields as $field) { $editableFields[$field['variable']] = ucfirst($field['variable']); } $form->addElement('select', 'editableFields', get_lang('FieldsToEdit'), $editableFields, [ 'multiple' => 'multiple', 'size' => 7 ]); $form->addElement('submit', 'filter', get_lang('Filter')); } $tableResult = ''; if (!empty($users)) { $selectedFields = $_GET['editableFields'] ?? []; foreach ($users as &$user) { $userData = api_get_user_info($user['id']); if ($userData) { $user = array_merge($user, $userData); } $extraFieldValues = new ExtraFieldValue('user'); $userExtraFields = $extraFieldValues->getAllValuesByItem($user['id']); $formattedExtraFields = []; foreach ($userExtraFields as $extraField) { $formattedExtraFields[$extraField['variable']] = $extraField['value']; } $user['extra_fields'] = $formattedExtraFields; } unset($user); $userTable = new SortableTable('users', null, null, 0, 50); $userTable->set_header(0, get_lang('ID')); $userTable->set_header(1, get_lang('Username')); foreach ($selectedFields as $field) { $userTable->set_header(count($userTable->headers), ucfirst($field)); } $userTable->set_header(count($userTable->headers), get_lang('Actions')); foreach ($users as $user) { $row = [$user['id'], $user['username']]; foreach ($selectedFields as $field) { $value = isset($user[$field]) ? htmlspecialchars($user[$field]) : ''; $extraFieldTypes = []; foreach ($extraFields as $extraField) { $extraFieldTypes[$extraField['variable']] = $extraField['field_type']; } if (isset($user['extra_fields'][$field])) { $fieldType = $extraFieldTypes[$field] ?? ExtraField::FIELD_TYPE_TEXT; $value = htmlspecialchars($user['extra_fields'][$field]); switch ($fieldType) { case ExtraField::FIELD_TYPE_TEXTAREA: $row[] = ''; break; case ExtraField::FIELD_TYPE_SELECT: $fieldHtml = ''; $row[] = $fieldHtml; break; case ExtraField::FIELD_TYPE_CHECKBOX: $checked = ($value == '1') ? 'checked' : ''; $row[] = ''; break; case ExtraField::FIELD_TYPE_RADIO: $fieldHtml = ''; foreach ($extraField['options'] as $option) { $checked = ($option['option_value'] == $value) ? 'checked' : ''; $fieldHtml .= ''; } $row[] = $fieldHtml; break; case ExtraField::FIELD_TYPE_TAG: $extraTagField = $extraUserField->get_handler_field_info_by_field_variable($field); $formattedValue = UserManager::get_user_tags_to_string( $user['id'], $extraTagField['id'], false ); $row[] = ''. ''.get_lang('KeywordTip').''; break; case ExtraField::FIELD_TYPE_DOUBLE_SELECT: if (is_array($value) && isset($value["extra_{$field}"]) && isset($value["extra_{$field}_second"])) { $formattedValue = $value["extra_{$field}"] . ',' . $value["extra_{$field}_second"]; } else { $formattedValue = ''; } $row[] = ''. ''.get_lang('KeywordTip').''; break; default: $row[] = ''; break; } } else { if ($field === 'password') { $row[] = ''; } elseif ($field === 'status') { $statusOptions = [ STUDENT => get_lang('Student'), COURSEMANAGER => get_lang('Teacher'), DRH => get_lang('Drh'), SESSIONADMIN => get_lang('SessionsAdmin'), PLATFORM_ADMIN => get_lang('Administrator') ]; $select = ''; $row[] = $select; } elseif ($field === 'active') { $checkedActive = ($user['active'] == 1) ? 'checked' : ''; $checkedInactive = ($user['active'] == 0) ? 'checked' : ''; $row[] = ' '; } else { $row[] = ''; } } } $row[] = ''; $userTable->addRow($row); } $tableResult = $userTable->return_table(); } $htmlHeadXtra[] = ''; $formContent = $form->returnForm(); // Render page $tpl = new Template($tool_name); $tpl->assign('actions', $toolbarActions); $tpl->assign('message', $message); $tpl->assign('content', $formContent . $fieldSelector . $tableResult . (!empty($users) ? '' : '')); $tpl->display_one_col_template();