3 declare(strict_types=1);
45 public function __construct($a_parent_obj, $a_parent_cmd, $a_admin_mode =
false, $a_type = self::TYPE_STANDARD)
49 $this->
user = $DIC->user();
50 $this->review = $DIC->rbac()->review();
52 $this->admin_mode = (bool) $a_admin_mode;
53 $this->type = $a_type;
55 $this->
setId(
"rep_search_" . $this->
user->getId());
65 if ($this->
getType() == self::TYPE_STANDARD) {
66 $this->
setRowTemplate(
"tpl.rep_search_usr_result_row.html",
"Services/Search");
68 $this->
enable(
'select_all');
73 $this->
setRowTemplate(
"tpl.global_search_usr_result_row.html",
"Services/Search");
79 $this->
addColumn($all_cols[$col][
'txt'], $col);
82 if ($this->
getType() == self::TYPE_STANDARD) {
84 $this->
addColumn($this->
lng->txt(
'lucene_relevance_short'),
'relevance');
100 if ($a_field ==
'relevance') {
103 return parent::numericOrdering($a_field);
113 $this->lucene_result =
$res;
123 $this->user_limitations = $a_limitations;
136 if (!self::$all_selectable_cols) {
139 if ($this->admin_mode) {
141 $columns[
'access_until'] = array(
'txt' => $this->
lng->txt(
'access_until'));
142 $columns[
'last_login'] = array(
'txt' => $this->
lng->txt(
'last_login'));
145 self::$all_selectable_cols = $columns;
147 return self::$all_selectable_cols;
152 if (!count($a_commands)) {
160 protected function fillRow(array $a_set): void
162 $this->tpl->setVariable(
"VAL_ID", $a_set[
"usr_id"]);
165 if ($this->
getType() == self::TYPE_GLOBAL_SEARCH) {
168 $this->tpl->setVariable(
'IMG_LINKED_TO_PROFILE', $link);
169 $this->tpl->setVariable(
170 'USR_IMG_SRC_LINKED',
174 $this->tpl->setVariable(
185 $a_set[
'gender'] = $a_set[
'gender'] ? $this->
lng->txt(
'gender_' . $a_set[
'gender']) :
'';
186 $this->tpl->setCurrentBlock(
'custom_fields');
187 $this->tpl->setVariable(
'VAL_CUST', $a_set[$field]);
188 $this->tpl->parseCurrentBlock();
193 $this->tpl->setCurrentBlock(
'custom_fields');
194 $this->tpl->setVariable(
'VAL_CUST', $a_set[$field]);
195 $this->tpl->parseCurrentBlock();
199 $this->tpl->setCurrentBlock(
'custom_fields');
200 $this->tpl->setVariable(
'CUST_CLASS',
' ' . $a_set[
'access_class']);
201 $this->tpl->setVariable(
'VAL_CUST', $a_set[$field]);
202 $this->tpl->parseCurrentBlock();
207 $this->tpl->setCurrentBlock(
'custom_fields');
208 $this->tpl->setVariable(
'VAL_CUST', $a_set[$field]);
209 $this->tpl->parseCurrentBlock();
212 case 'interests_general':
213 case 'interests_help_offered':
214 case 'interests_help_looking':
215 $this->tpl->setCurrentBlock(
'custom_fields');
216 $this->tpl->setVariable(
'VAL_CUST', implode(
', ', (array) $a_set[$field]));
217 $this->tpl->parseCurrentBlock();
221 $this->tpl->setCurrentBlock(
'custom_fields');
222 $this->tpl->setVariable(
224 ilOrgUnitPathStorage::getTextRepresentationOfUsersOrgUnits((
int) $a_set[
'usr_id'])
226 $this->tpl->parseCurrentBlock();
231 if ($this->admin_mode) {
232 $this->
ctrl->setParameterByClass(
"ilobjusergui",
"ref_id",
"7");
233 $this->
ctrl->setParameterByClass(
"ilobjusergui",
"obj_id", $a_set[
"usr_id"]);
234 $this->
ctrl->setParameterByClass(
"ilobjusergui",
"search",
"1");
235 $link = $this->
ctrl->getLinkTargetByClass(array(
"iladministrationgui",
"ilobjusergui"),
"view");
236 $a_set[$field] =
"<a href=\"" . $link .
"\">" . $a_set[$field] .
"</a>";
237 } elseif ($this->
getType() == self::TYPE_GLOBAL_SEARCH) {
238 $a_set[$field] =
"<a href=\"" . $link .
"\">" . $a_set[$field] .
"</a>";
244 $this->tpl->setCurrentBlock(
'custom_fields');
245 $this->tpl->setVariable(
'VAL_CUST', (
string) ($a_set[$field] ?:
''));
246 $this->tpl->parseCurrentBlock();
251 if ($this->
getType() == self::TYPE_GLOBAL_SEARCH) {
252 $this->tpl->setVariable(
'SEARCH_RELEVANCE', $this->
getRelevanceHTML($a_set[
'relevance']));
254 require_once
'Services/Contact/BuddySystem/classes/class.ilBuddySystemLinkButton.php';
257 $this->tpl->setVariable(
'CONTACT_ACTIONS',
'');
271 $parse_access =
false;
272 if (isset($additional_fields[
'access_until'])) {
273 $parse_access =
true;
274 unset($additional_fields[
'access_until']);
277 $udf_ids = $usr_data_fields = $odf_ids = array();
278 foreach ($additional_fields as $field) {
279 if ($field ==
'org_units') {
282 if (substr($field, 0, 3) ==
'udf') {
283 $udf_ids[] = substr($field, 4);
286 $usr_data_fields[] = $field;
290 $u_query->setOrderField(
'login');
291 $u_query->setOrderDirection(
'ASC');
292 $u_query->setLimit(999999);
295 $u_query->setActionFilter(
"active");
299 $u_query->setAccessFilter(
true);
302 $u_query->setAdditionalFields($usr_data_fields);
303 $u_query->setUserFilter($a_user_ids);
305 $usr_data = $u_query->query();
308 if ($this->admin_mode && $parse_access) {
310 $current_time = time();
311 foreach ($usr_data[
'set'] as $k => $user) {
312 if ($user[
'active']) {
313 if ($user[
"time_limit_unlimited"]) {
314 $txt_access = $this->
lng->txt(
"access_unlimited");
315 $usr_data[
"set"][$k][
"access_class"] =
"smallgreen";
316 } elseif ($user[
"time_limit_until"] < $current_time) {
317 $txt_access = $this->
lng->txt(
"access_expired");
318 $usr_data[
"set"][$k][
"access_class"] =
"smallred";
321 $usr_data[
"set"][$k][
"access_class"] =
"small";
324 $txt_access = $this->
lng->txt(
"inactive");
325 $usr_data[
"set"][$k][
"access_class"] =
"smallred";
327 $usr_data[
"set"][$k][
"access_until"] = $txt_access;
337 foreach ($usr_data[
'set'] as $set) {
338 $users[$counter] = $set;
339 foreach ($udf_ids as $udf_field) {
340 $users[$counter][
'udf_' . $udf_field] = (
$data[(
int) ($set[
'usr_id'] ?? 0)][$udf_field] ??
'');
345 $users = $usr_data[
'set'];
348 if ($this->
getType() == self::TYPE_GLOBAL_SEARCH) {
350 foreach ($users as $counter => $ud) {
351 $users[$counter][
'relevance'] = $this->
getLuceneResult()->getRelevance((
int) ($ud[
'usr_id']) ?? 0);
362 $tpl =
new ilTemplate(
'tpl.lucene_relevance.html',
true,
true,
'Services/Search');
365 $pbar->setCurrent($a_rel);
367 $tpl->setCurrentBlock(
'relevance');
368 $tpl->setVariable(
'REL_PBAR', $pbar->render());
369 $tpl->parseCurrentBlock();
static lookupData(array $a_user_ids, array $a_field_ids)
Lookup data.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static array $all_selectable_cols
enable(string $a_module_name)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setFormAction(string $a_form_action, bool $a_multipart=false)
setEnableTitle(bool $a_enabletitle)
setSelectAllCheckbox(string $a_select_all_checkbox, bool $a_select_all_on_top=false)
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false)
numericOrdering(string $a_field)
enable numeric ordering for relevance
static getProfileLink(int $a_usr_id)
Get link to personal profile Return empty string in case of not public profile.
__construct($a_parent_obj, $a_parent_cmd, $a_admin_mode=false, $a_type=self::TYPE_STANDARD)
addMultiItemSelectionButton(string $a_sel_var, array $a_options, string $a_cmd, string $a_text, string $a_default_selection='')
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setShowRowsSelector(bool $a_value)
Toggle rows-per-page selector.
setDefaultOrderField(string $a_defaultorderfield)
ilLuceneSearchResult $lucene_result
setUserLimitations(bool $a_limitations)
setRowTemplate(string $a_template, string $a_template_dir="")
Set row template.
setDefaultOrderDirection(string $a_defaultorderdirection)
getRelevanceHTML(float $a_rel)
setTitle(string $a_title, string $a_icon="", string $a_icon_alt="")
initMultiCommands(array $a_commands)
static _getPersonalPicturePath(int $a_usr_id, string $a_size="small", bool $a_force_pic=false, bool $a_prevent_no_photo_image=false, bool $html_export=false)
setLuceneResult(ilLuceneSearchResult $res)
static getSelectableColumnInfo(bool $a_admin=false)
Get info of searchable fields for selectable columns in table gui.
__construct(Container $dic, ilPlugin $plugin)
addColumn(string $a_text, string $a_sort_field="", string $a_width="", bool $a_is_checkbox_action_column=false, string $a_class="", string $a_tooltip="", bool $a_tooltip_with_html=false)
addMultiCommand(string $a_cmd, string $a_text)
parseUserIds(array $a_user_ids)