Query usr_data.
213 if (is_array($this->additional_fields))
215 foreach ($this->additional_fields as $f)
217 if (!in_array($f, $this->default_fields))
219 if($f ==
"online_time")
221 $this->default_fields[] =
"ut_online.online_time";
222 $ut_join =
" LEFT JOIN ut_online ON usr_data.usr_id = ut_online.usr_id";
226 $this->default_fields[] = $f;
232 $count_query =
"SELECT count(usr_id) cnt".
235 $sql_fields = array();
236 foreach($this->default_fields as $idx => $field)
243 if(!stristr($field,
"."))
245 $sql_fields[] =
"usr_data.".$field;
249 $sql_fields[] = $field;
254 $query =
"SELECT ".implode($sql_fields,
",").
259 $query.=
" WHERE usr_data.usr_id <> ".$ilDB->quote(ANONYMOUS_USER_ID,
"integer");
262 if($this->users and is_array(($this->users)))
264 $query .=
' AND '.$ilDB->in(
'usr_data.usr_id',$this->users,
false,
'integer');
267 $count_query.=
" WHERE usr_data.usr_id <> ".$ilDB->quote(ANONYMOUS_USER_ID,
"integer");
270 if ($this->first_letter !=
"")
272 $add = $where.
" (".$ilDB->upper($ilDB->substr(
"usr_data.lastname", 1, 1)).
" = ".$ilDB->upper($ilDB->quote($this->first_letter,
"text")).
") ";
278 if ($this->text_filter !=
"")
280 $add = $where.
" (".$ilDB->like(
"usr_data.login",
"text",
"%".$this->text_filter.
"%").
" ".
281 "OR ".$ilDB->like(
"usr_data.firstname",
"text",
"%".$this->text_filter.
"%").
" ".
282 "OR ".$ilDB->like(
"usr_data.lastname",
"text",
"%".$this->text_filter.
"%").
" ".
283 "OR ".$ilDB->like(
"usr_data.email",
"text",
"%".$this->text_filter.
"%").
") ";
289 if ($this->activation !=
"")
291 if ($this->activation ==
"inactive")
293 $add = $where.
" usr_data.active = ".$ilDB->quote(0,
"integer").
" ";
297 $add = $where.
" usr_data.active = ".$ilDB->quote(1,
"integer").
" ";
308 $add = $where.
" usr_data.last_login < ".
315 if ($this->limited_access)
317 $add = $where.
" usr_data.time_limit_unlimited= ".$ilDB->quote(0,
"integer");
322 if ($this->no_courses)
324 $add = $where.
" usr_data.usr_id NOT IN (".
325 "SELECT DISTINCT ud.usr_id ".
326 "FROM usr_data ud join rbac_ua ON (ud.usr_id = rbac_ua.usr_id) ".
327 "JOIN object_data od ON (rbac_ua.rol_id = od.obj_id) ".
328 "WHERE od.title LIKE 'il_crs_%')";
333 if ($this->no_groups)
335 $add = $where.
" usr_data.usr_id NOT IN (".
336 "SELECT DISTINCT ud.usr_id ".
337 "FROM usr_data ud join rbac_ua ON (ud.usr_id = rbac_ua.usr_id) ".
338 "JOIN object_data od ON (rbac_ua.rol_id = od.obj_id) ".
339 "WHERE od.title LIKE 'il_grp_%')";
344 if ($this->crs_grp > 0)
347 $add = $where.
" usr_data.usr_id IN (".
348 "SELECT DISTINCT ud.usr_id ".
349 "FROM usr_data ud join rbac_ua ON (ud.usr_id = rbac_ua.usr_id) ".
350 "JOIN object_data od ON (rbac_ua.rol_id = od.obj_id) ".
351 "WHERE od.title = ".$ilDB->quote(
"il_".$cgtype.
"_member_".$this->crs_grp,
"text").
")";
358 $add = $where.
" usr_data.usr_id IN (".
359 "SELECT DISTINCT ud.usr_id ".
360 "FROM usr_data ud join rbac_ua ON (ud.usr_id = rbac_ua.usr_id) ".
361 "WHERE rbac_ua.rol_id = ".$ilDB->quote($this->role,
"integer").
")";
367 if($this->user_folder)
369 $add = $where.
" ".$ilDB->in(
'usr_data.time_limit_owner',$this->user_folder,
false,
'integer');
376 switch($this->order_field)
379 if ($this->order_dir ==
"desc")
381 $query.=
" ORDER BY usr_data.active DESC, usr_data.time_limit_unlimited DESC, usr_data.time_limit_until DESC";
385 $query.=
" ORDER BY usr_data.active ASC, usr_data.time_limit_unlimited ASC, usr_data.time_limit_until ASC";
390 if ($this->order_dir ==
"desc")
392 $query.=
" ORDER BY ut_online.online_time DESC";
396 $query.=
" ORDER BY ut_online.online_time ASC";
401 if (!in_array($this->order_field, $this->default_fields))
403 $this->order_field =
"login";
405 if ($this->order_dir !=
"asc" && $this->order_dir !=
"desc")
407 $this->order_dir =
"asc";
409 $query .=
" ORDER BY usr_data.".$this->order_field.
" ".strtoupper($this->order_dir);
414 $set = $ilDB->query($count_query);
416 if ($rec = $ilDB->fetchAssoc($set))
422 $limit = (int) $this->limit;
433 $set = $ilDB->query(
$query);
435 while($rec = $ilDB->fetchAssoc($set))
439 return array(
"cnt" => $cnt,
"set" =>
$result);
static _before(ilDateTime $start, ilDateTime $end, $a_compare_field='', $a_tz='')
compare two dates and check start is before end This method does not consider tz offsets.
static _lookupType($a_id, $a_reference=false)
lookup object type