ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
class.ilRepositoryUserResultTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once("./Services/Table/classes/class.ilTable2GUI.php");
5
15{
16 const TYPE_STANDARD = 1;
18
19 protected $lucene_result = null;
20
21
22 protected static $all_selectable_cols = NULL;
23 protected $admin_mode;
24 protected $type;
25
29 function __construct($a_parent_obj, $a_parent_cmd, $a_admin_mode = false, $a_type = self::TYPE_STANDARD)
30 {
31 global $ilCtrl, $lng, $ilAccess, $lng, $ilUser;
32
33 $this->admin_mode = (bool)$a_admin_mode;
34 $this->type = $a_type;
35
36 $this->setId("rep_search_".$ilUser->getId());
37 parent::__construct($a_parent_obj, $a_parent_cmd);
38
39
40 $this->setFormAction($ilCtrl->getFormAction($this->parent_obj));
41 $this->setTitle($this->lng->txt('search_results'));
42 $this->setEnableTitle(true);
43 $this->setShowRowsSelector(true);
44
45
46 if($this->getType() == self::TYPE_STANDARD)
47 {
48 $this->setRowTemplate("tpl.rep_search_usr_result_row.html", "Services/Search");
49 $this->addColumn("", "", "1", true);
50 $this->enable('select_all');
51 $this->setSelectAllCheckbox("user[]");
52 $this->setDefaultOrderField("login");
53 $this->setDefaultOrderDirection("asc");
54 }
55 else
56 {
57 $this->setRowTemplate("tpl.global_search_usr_result_row.html", "Services/Search");
58 $this->addColumn('', '', "110px");
59 }
60
61 $all_cols = $this->getSelectableColumns();
62 foreach($this->getSelectedColumns() as $col)
63 {
64 $this->addColumn($all_cols[$col]['txt'], $col);
65 }
66
67 if($this->getType() == self::TYPE_STANDARD)
68 {
69
70 }
71 else
72 {
73 $this->addColumn($this->lng->txt('lucene_relevance_short'),'relevance');
74 $this->setDefaultOrderField("relevance");
75 $this->setDefaultOrderDirection("desc");
76 }
77
78 }
79
85 public function numericOrdering($a_field)
86 {
87 if($a_field == 'relevance')
88 {
89 return true;
90 }
91 return parent::numericOrdering($a_field);
92 }
93
98 public function getType()
99 {
100 return $this->type;
101 }
102
109 {
110 $this->lucene_result = $res;
111 }
112
117 public function getLuceneResult()
118 {
120 }
121
129 public function getSelectableColumns()
130 {
131 global $rbacreview, $ilUser;
132
133 if(!self::$all_selectable_cols)
134 {
135 include_once './Services/Search/classes/class.ilUserSearchOptions.php';
136 $columns = ilUserSearchOptions::getSelectableColumnInfo($rbacreview->isAssigned($ilUser->getId(), SYSTEM_ROLE_ID));
137
138 if($this->admin_mode)
139 {
140 // #11293
141 $columns['access_until'] = array('txt' => $this->lng->txt('access_until'));
142 $columns['last_login'] = array('txt' => $this->lng->txt('last_login'));
143 }
144
145 self::$all_selectable_cols = $columns;
146 }
148 }
149
154 public function initMultiCommands($a_commands)
155 {
156 if(!count($a_commands))
157 {
158 $this->addMultiCommand('addUser', $this->lng->txt('btn_add'));
159 return true;
160 }
161 $this->addMultiItemSelectionButton('member_type', $a_commands, 'addUser', $this->lng->txt('btn_add'));
162 return true;
163 }
164
168 protected function fillRow($a_set)
169 {
170 global $ilCtrl, $lng;
171
172 $this->tpl->setVariable("VAL_ID", $a_set["usr_id"]);
173
174 $link = '';
175 if($this->getType() == self::TYPE_GLOBAL_SEARCH)
176 {
177 include_once './Services/User/classes/class.ilUserUtil.php';
178 $link = ilUserUtil::getProfileLink($a_set['usr_id']);
179 if($link)
180 {
181 $this->tpl->setVariable('IMG_LINKED_TO_PROFILE',$link);
182 $this->tpl->setVariable(
183 'USR_IMG_SRC_LINKED',
184 ilObjUser::_getPersonalPicturePath($a_set['usr_id'],'xsmall')
185 );
186 }
187 else
188 {
189 $this->tpl->setVariable(
190 'USR_IMG_SRC',
191 ilObjUser::_getPersonalPicturePath($a_set['usr_id'],'xsmall')
192 );
193 }
194 }
195
196
197 foreach($this->getSelectedColumns() as $field)
198 {
199 switch($field)
200 {
201 case 'gender':
202 $a_set['gender'] = $a_set['gender'] ? $this->lng->txt('gender_' . $a_set['gender']) : '';
203 $this->tpl->setCurrentBlock('custom_fields');
204 $this->tpl->setVariable('VAL_CUST', $a_set[$field]);
205 $this->tpl->parseCurrentBlock();
206 break;
207
208 case 'birthday':
209 $a_set['birthday'] = $a_set['birthday'] ? ilDatePresentation::formatDate(new ilDate($a_set['birthday'], IL_CAL_DATE)) : $this->lng->txt('no_date');
210 $this->tpl->setCurrentBlock('custom_fields');
211 $this->tpl->setVariable('VAL_CUST', $a_set[$field]);
212 $this->tpl->parseCurrentBlock();
213 break;
214
215 case 'access_until':
216 $this->tpl->setCurrentBlock('custom_fields');
217 $this->tpl->setVariable('CUST_CLASS', ' '.$a_set['access_class']);
218 $this->tpl->setVariable('VAL_CUST', $a_set[$field]);
219 $this->tpl->parseCurrentBlock();
220 break;
221
222 case 'last_login':
223 $a_set['last_login'] = $a_set['last_login'] ? ilDatePresentation::formatDate(new ilDateTime($a_set['last_login'], IL_CAL_DATETIME)) : $this->lng->txt('no_date');
224 $this->tpl->setCurrentBlock('custom_fields');
225 $this->tpl->setVariable('VAL_CUST', $a_set[$field]);
226 $this->tpl->parseCurrentBlock();
227 break;
228
229 case 'interests_general':
230 case 'interests_help_offered':
231 case 'interests_help_looking':
232 $this->tpl->setCurrentBlock('custom_fields');
233 $this->tpl->setVariable('VAL_CUST', implode(', ', (array) $a_set[$field]));
234 $this->tpl->parseCurrentBlock();
235 break;
236
237 case 'login':
238 if($this->admin_mode)
239 {
240 $ilCtrl->setParameterByClass("ilobjusergui", "ref_id", "7");
241 $ilCtrl->setParameterByClass("ilobjusergui", "obj_id", $a_set["usr_id"]);
242 $ilCtrl->setParameterByClass("ilobjusergui", "search", "1");
243 $link = $ilCtrl->getLinkTargetByClass(array("iladministrationgui", "ilobjusergui"), "view");
244 $a_set[$field] = "<a href=\"".$link."\">".$a_set[$field]."</a>";
245 }
246 elseif($this->getType() == self::TYPE_GLOBAL_SEARCH)
247 {
248 if($link)
249 {
250 $this->tpl->setCurrentBlock('login_linked');
251 $this->tpl->setVariable('LOGIN_NAME',$a_set[$field] ? $a_set[$field] : '');
252 $this->tpl->setVariable('LOGIN_LINK',$link);
253 $this->tpl->parseCurrentBlock();
254 break;
255 }
256 }
257 // fallthrough
258
259 default:
260 $this->tpl->setCurrentBlock('custom_fields');
261 $this->tpl->setVariable('VAL_CUST', (string) ($a_set[$field] ? $a_set[$field] : ''));
262 $this->tpl->parseCurrentBlock();
263 break;
264 }
265 }
266
267 if($this->getType() == self::TYPE_GLOBAL_SEARCH)
268 {
269 $this->tpl->setVariable('SEARCH_RELEVANCE',$this->getRelevanceHTML($a_set['relevance']));
270 }
271
272 }
273
279 public function parseUserIds($a_user_ids)
280 {
281 if(!$a_user_ids)
282 {
283 $this->setData(array());
284 return true;
285 }
286
287 $additional_fields = $this->getSelectedColumns();
288
289 $parse_access = false;
290 if(isset($additional_fields['access_until']))
291 {
292 $parse_access = true;
293 unset($additional_fields['access_until']);
294 }
295
296 $udf_ids = $usr_data_fields = $odf_ids = array();
297 foreach($additional_fields as $field)
298 {
299 if(substr($field, 0, 3) == 'udf')
300 {
301 $udf_ids[] = substr($field,4);
302 continue;
303 }
304 $usr_data_fields[] = $field;
305 }
306 include_once './Services/User/classes/class.ilUserQuery.php';
308 'login',
309 'ASC',
310 0,
311 999999,
312 '',
313 '',
314 null,
315 false,
316 false,
317 0,
318 0,
319 null,
320 $usr_data_fields,
321 $a_user_ids
322 );
323
324 if($this->admin_mode && $parse_access)
325 {
326 // see ilUserTableGUI
327 $current_time = time();
328 foreach($usr_data['set'] as $k => $user)
329 {
330 if ($user['active'])
331 {
332 if ($user["time_limit_unlimited"])
333 {
334 $txt_access = $this->lng->txt("access_unlimited");
335 $usr_data["set"][$k]["access_class"] = "smallgreen";
336 }
337 elseif ($user["time_limit_until"] < $current_time)
338 {
339 $txt_access = $this->lng->txt("access_expired");
340 $usr_data["set"][$k]["access_class"] = "smallred";
341 }
342 else
343 {
344 $txt_access = ilDatePresentation::formatDate(new ilDateTime($user["time_limit_until"],IL_CAL_UNIX));
345 $usr_data["set"][$k]["access_class"] = "small";
346 }
347 }
348 else
349 {
350 $txt_access = $this->lng->txt("inactive");
351 $usr_data["set"][$k]["access_class"] = "smallred";
352 }
353 $usr_data["set"][$k]["access_until"] = $txt_access;
354 }
355 }
356
357 // Custom user data fields
358 if($udf_ids)
359 {
360 include_once './Services/User/classes/class.ilUserDefinedData.php';
361 $data = ilUserDefinedData::lookupData($a_user_ids, $udf_ids);
362
363 $users = array();
364 $counter = 0;
365 foreach($usr_data['set'] as $set)
366 {
367 $users[$counter] = $set;
368 foreach($udf_ids as $udf_field)
369 {
370 $users[$counter]['udf_'.$udf_field] = $data[$set['usr_id']][$udf_field];
371 }
372 ++$counter;
373 }
374 }
375 else
376 {
377 $users = $usr_data['set'];
378 }
379
380 if($this->getType() == self::TYPE_GLOBAL_SEARCH)
381 {
382 if($this->getLuceneResult() instanceof ilLuceneSearchResult)
383 {
384 foreach($users as $counter => $ud)
385 {
386 $users[$counter]['relevance'] = $this->getLuceneResult()->getRelevance($ud['usr_id']);
387 }
388 }
389 }
390
391
392
393 $this->setData($users);
394 }
395
396
400 public function getRelevanceHTML($a_rel)
401 {
402 $tpl = new ilTemplate('tpl.lucene_relevance.html',true,true,'Services/Search');
403
404 include_once "Services/UIComponent/ProgressBar/classes/class.ilProgressBar.php";
406 $pbar->setCurrent($a_rel);
407
408 $tpl->setCurrentBlock('relevance');
409 $tpl->setVariable('REL_PBAR', $pbar->render());
410 $tpl->parseCurrentBlock();
411
412 return $tpl->get();
413 }
414}
415?>
global $tpl
Definition: ilias.php:8
if(! $in) $columns
Definition: Utf8Test.php:46
const IL_CAL_DATE
const IL_CAL_UNIX
const IL_CAL_DATETIME
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
Class for single dates.
Search result implementing iterator interface.
static _getPersonalPicturePath($a_usr_id, $a_size="small", $a_force_pic=false, $a_prevent_no_photo_image=false)
Get path to personal picture.
static getInstance()
Factory.
setLuceneResult(ilLuceneSearchResult $res)
Set lucene result For parsing relevances.
initMultiCommands($a_commands)
Init multi commands.
numericOrdering($a_field)
enable numeric ordering for relevance
__construct($a_parent_obj, $a_parent_cmd, $a_admin_mode=false, $a_type=self::TYPE_STANDARD)
Constructor.
Class ilTable2GUI.
getSelectedColumns()
Get selected columns.
addColumn($a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="")
Add a column to the header.
setShowRowsSelector($a_value)
Toggle rows-per-page selector.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
setData($a_data)
set table data @access public
setEnableTitle($a_enabletitle)
Set Enable Title.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
addMultiCommand($a_cmd, $a_text)
Add Command button.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
setSelectAllCheckbox($a_select_all_checkbox)
Set the name of the checkbox that should be toggled with a select all button.
setId($a_val)
Set id.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
addMultiItemSelectionButton($a_sel_var, $a_options, $a_cmd, $a_text, $a_default_selection='')
Add Selection List + Command button for selected items.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
enable($a_module_name)
enables particular modules of table
special template class to simplify handling of ITX/PEAR
static lookupData($a_user_ids, $a_field_ids)
Lookup data.
static getUserListData($a_order_field, $a_order_dir, $a_offset, $a_limit, $a_string_filter="", $a_activation_filter="", $a_last_login_filter=null, $a_limited_access_filter=false, $a_no_courses_filter=false, $a_course_group_filter=0, $a_role_filter=0, $a_user_folder_filter=null, $a_additional_fields='', $a_user_filter=null, $a_first_letter="")
Get data for user administration list.
static getSelectableColumnInfo($a_admin=false)
Get info of searchable fields for selectable columns in table gui.
static getProfileLink($a_usr_id)
Get link to personal profile Return empty string in case of not public profile.
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:40
global $ilUser
Definition: imgupload.php:15