ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
All Data Structures Namespaces Files Functions Variables Modules Pages
ilExerciseMembers Class Reference

Class ilExerciseMembers. More...

+ Collaboration diagram for ilExerciseMembers:

Public Member Functions

 ilExerciseMembers ($a_exc)
 
 getRefId ()
 Get exercise ref id. More...
 
 getObjId ()
 Get exercise id. More...
 
 setObjId ($a_obj_id)
 Set exercise id. More...
 
 getMembers ()
 Get members array. More...
 
 setMembers ($a_members)
 Set members array. More...
 
 assignMember ($a_usr_id)
 Assign a user to the exercise. More...
 
 isAssigned ($a_id)
 Is user assigned to exercise? More...
 
 assignMembers ($a_members)
 Assign members to exercise. More...
 
 deassignMember ($a_usr_id)
 Detaches a user from an exercise. More...
 
 deassignMembers ($a_members)
 Deassign members. More...
 
 read ()
 Read all members. More...
 
 ilClone ($a_new_id)
 
 delete ()
 
 _getMembers ($a_obj_id)
 
 _getReturned ($a_obj_id)
 Get returned status for all members (if they have anything returned for any assignment) More...
 
 _hasReturned ($a_obj_id, $a_user_id)
 Has user returned anything in any assignment? More...
 
 _getPassedUsers ($a_obj_id)
 Get all users that passed the exercise. More...
 
 _getFailedUsers ($a_obj_id)
 Get all users that failed the exercise. More...
 
 _lookupStatus ($a_obj_id, $a_user_id)
 Lookup current status (notgraded|passed|failed) More...
 
 _writeStatus ($a_obj_id, $a_user_id, $a_status)
 Write user status. More...
 
 _writeReturned ($a_obj_id, $a_user_id, $a_status)
 Write returned status. More...
 

Data Fields

 $ref_id
 
 $obj_id
 
 $members
 
 $status
 

Detailed Description

Class ilExerciseMembers.

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om
Version
$Id$

Definition at line 12 of file class.ilExerciseMembers.php.

Member Function Documentation

◆ _getFailedUsers()

ilExerciseMembers::_getFailedUsers (   $a_obj_id)

Get all users that failed the exercise.

Definition at line 354 of file class.ilExerciseMembers.php.

References $ilDB, $query, $res, and $row.

Referenced by ilLPStatusExerciseReturned\_getFailed().

355  {
356  global $ilDB;
357 
358  $query = "SELECT DISTINCT(usr_id) FROM exc_members ".
359  "WHERE obj_id = ".$ilDB->quote($a_obj_id, "integer")." ".
360  "AND status = ".$ilDB->quote("failed", "text");
361  $res = $ilDB->query($query);
362  while($row = $ilDB->fetchObject($res))
363  {
364  $usr_ids[] = $row->usr_id;
365  }
366  return $usr_ids ? $usr_ids : array();
367  }
global $ilDB
+ Here is the caller graph for this function:

◆ _getMembers()

ilExerciseMembers::_getMembers (   $a_obj_id)

Definition at line 268 of file class.ilExerciseMembers.php.

References $ilDB, $query, $res, and $row.

Referenced by ilLPStatusExerciseReturned\getMembers(), ilExerciseXMLWriter\handleAssignmentMembers(), ilExAssignment\sendFeedbackNotifications(), and ilExAssignment\validatePeerReviewGroups().

269  {
270  global $ilDB;
271 
272  // #14963 - see ilExAssignment::getMemberListData()
273  $query = "SELECT DISTINCT(excm.usr_id) ud".
274  " FROM exc_members excm".
275  " JOIN object_data od ON (od.obj_id = excm.usr_id)".
276  " WHERE excm.obj_id = ".$ilDB->quote($a_obj_id, "integer").
277  " AND od.type = ".$ilDB->quote("usr", "text");
278 
279  $res = $ilDB->query($query);
280  while($row = $ilDB->fetchObject($res))
281  {
282  $usr_ids[] = $row->ud;
283  }
284 
285  return $usr_ids ? $usr_ids : array();
286  }
global $ilDB
+ Here is the caller graph for this function:

◆ _getPassedUsers()

ilExerciseMembers::_getPassedUsers (   $a_obj_id)

Get all users that passed the exercise.

Definition at line 336 of file class.ilExerciseMembers.php.

References $ilDB, $query, $res, and $row.

Referenced by ilLPStatusExerciseReturned\_getCompleted().

337  {
338  global $ilDB;
339 
340  $query = "SELECT DISTINCT(usr_id) FROM exc_members ".
341  "WHERE obj_id = ".$ilDB->quote($a_obj_id, "integer")." ".
342  "AND status = ".$ilDB->quote("passed", "text");
343  $res = $ilDB->query($query);
344  while($row = $ilDB->fetchObject($res))
345  {
346  $usr_ids[] = $row->usr_id;
347  }
348  return $usr_ids ? $usr_ids : array();
349  }
global $ilDB
+ Here is the caller graph for this function:

◆ _getReturned()

ilExerciseMembers::_getReturned (   $a_obj_id)

Get returned status for all members (if they have anything returned for any assignment)

Definition at line 293 of file class.ilExerciseMembers.php.

References $ilDB, $query, $res, and $row.

Referenced by ilLPStatusExerciseReturned\_getInProgress().

294  {
295  global $ilDB;
296 
297  $query = "SELECT DISTINCT(usr_id) as ud FROM exc_members ".
298  "WHERE obj_id = ".$ilDB->quote($a_obj_id, "integer")." ".
299  "AND returned = 1";
300 
301  $res = $ilDB->query($query);
302  while($row = $ilDB->fetchObject($res))
303  {
304  $usr_ids[] = $row->ud;
305  }
306 
307  return $usr_ids ? $usr_ids : array();
308  }
global $ilDB
+ Here is the caller graph for this function:

◆ _hasReturned()

ilExerciseMembers::_hasReturned (   $a_obj_id,
  $a_user_id 
)

Has user returned anything in any assignment?

Parameters
integerobject id
integeruser id
Returns
boolean true/false

Definition at line 317 of file class.ilExerciseMembers.php.

References $ilDB.

Referenced by ilLPStatusExerciseReturned\determineStatus().

318  {
319  global $ilDB;
320 
321  $set = $ilDB->query("SELECT DISTINCT(usr_id) FROM exc_members WHERE ".
322  " obj_id = ".$ilDB->quote($a_obj_id, "integer")." AND ".
323  " returned = ".$ilDB->quote(1, "integer")." AND ".
324  " usr_id = ".$ilDB->quote($a_user_id, "integer")
325  );
326  if ($rec = $ilDB->fetchAssoc($set))
327  {
328  return true;
329  }
330  return false;
331  }
global $ilDB
+ Here is the caller graph for this function:

◆ _lookupStatus()

ilExerciseMembers::_lookupStatus (   $a_obj_id,
  $a_user_id 
)

Lookup current status (notgraded|passed|failed)

This information is determined by the assignment status and saved redundtantly in this table for performance reasons.

Parameters
int$a_obj_idexercise id
int$a_user_idmember id
Returns
mixed false (if user is no member) or notgraded|passed|failed

Definition at line 379 of file class.ilExerciseMembers.php.

References $ilDB, $query, $res, and $row.

Referenced by ilObjExerciseAccess\checkCondition(), ilLPStatusExerciseReturned\determineStatus(), ilObjExercise\exportGradesExcel(), ilExGradesTableGUI\fillRow(), ilExerciseCertificateAdapter\getCertificateVariablesForPresentation(), and ilObjExercise\hasUserCertificate().

380  {
381  global $ilDB;
382 
383  $query = "SELECT status FROM exc_members ".
384  "WHERE obj_id = ".$ilDB->quote($a_obj_id, "integer").
385  " AND usr_id = ".$ilDB->quote($a_user_id, "integer");
386 
387  $res = $ilDB->query($query);
388  if($row = $ilDB->fetchAssoc($res))
389  {
390  return $row["status"];
391  }
392 
393  return false;
394  }
global $ilDB
+ Here is the caller graph for this function:

◆ _writeReturned()

ilExerciseMembers::_writeReturned (   $a_obj_id,
  $a_user_id,
  $a_status 
)

Write returned status.

The returned status is initially 0. If the first file is returned by a user for any assignment of the exercise, the returned status is set to 1 and it will stay that way, even if this file is deleted again. -> learning progress uses this to determine "in progress" status

Parameters
intexercise id
intuser id
textstatus

Definition at line 433 of file class.ilExerciseMembers.php.

References $ilDB, and ilLPStatusWrapper\_updateStatus().

Referenced by ilObjExercise\addResourceObject(), ilObjExerciseGUI\addTeamMemberActionObject(), ilObjExercise\deliverFile(), ilObjExercise\processUploadedFile(), and ilObjExerciseGUI\removeTeamMemberObject().

434  {
435  global $ilDB;
436 
437  $ilDB->manipulate("UPDATE exc_members SET ".
438  " returned = ".$ilDB->quote($a_status, "text").
439  " WHERE obj_id = ".$ilDB->quote($a_obj_id, "integer").
440  " AND usr_id = ".$ilDB->quote($a_user_id, "integer")
441  );
442 
443  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
444  ilLPStatusWrapper::_updateStatus($a_obj_id, $a_user_id);
445  }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_no_raise=false, $a_force_raise=false)
Update status.
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _writeStatus()

ilExerciseMembers::_writeStatus (   $a_obj_id,
  $a_user_id,
  $a_status 
)

Write user status.

This information is determined by the assignment status and saved redundtantly in this table for performance reasons. See ilObjExercise->updateUserStatus().

Parameters
intexercise id
intuser id
textstatus

Definition at line 407 of file class.ilExerciseMembers.php.

References $ilDB, and ilLPStatusWrapper\_updateStatus().

Referenced by ilObjExercise\updateUserStatus().

408  {
409  global $ilDB;
410 
411  $ilDB->manipulate("UPDATE exc_members SET ".
412  " status = ".$ilDB->quote($a_status, "text").
413  " WHERE obj_id = ".$ilDB->quote($a_obj_id, "integer").
414  " AND usr_id = ".$ilDB->quote($a_user_id, "integer")
415  );
416 
417  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
418  ilLPStatusWrapper::_updateStatus($a_obj_id, $a_user_id);
419  }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_no_raise=false, $a_force_raise=false)
Update status.
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ assignMember()

ilExerciseMembers::assignMember (   $a_usr_id)

Assign a user to the exercise.

Parameters
int$a_usr_iduser id

Definition at line 76 of file class.ilExerciseMembers.php.

References $ilDB, ilLPStatusWrapper\_updateStatus(), ilExAssignment\createNewUserRecords(), ilObjectFactory\getInstanceByObjId(), getObjId(), getRefId(), and read().

Referenced by assignMembers().

77  {
78  global $ilDB;
79 
80  if($this->exc->hasAddToDesktop())
81  {
82  $tmp_user = ilObjectFactory::getInstanceByObjId($a_usr_id);
83  $tmp_user->addDesktopItem($this->getRefId(),"exc");
84  }
85 
86  $ilDB->manipulate("DELETE FROM exc_members ".
87  "WHERE obj_id = ".$ilDB->quote($this->getObjId(), "integer")." ".
88  "AND usr_id = ".$ilDB->quote($a_usr_id, "integer")." ");
89 
90 // @todo: some of this fields may not be needed anymore
91  $ilDB->manipulateF("INSERT INTO exc_members (obj_id, usr_id, status, sent, feedback) ".
92  " VALUES (%s,%s,%s,%s,%s)",
93  array("integer", "integer", "text", "integer", "integer"),
94  array($this->getObjId(), $a_usr_id, 'notgraded', 0, 0));
95 
96  include_once("./Modules/Exercise/classes/class.ilExAssignment.php");
98 
99  $this->read();
100 
101  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
102  ilLPStatusWrapper::_updateStatus($this->getObjId(), $a_usr_id);
103 
104  return true;
105  }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_no_raise=false, $a_force_raise=false)
Update status.
getRefId()
Get exercise ref id.
getObjId()
Get exercise id.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
read()
Read all members.
global $ilDB
static createNewUserRecords($a_user_id, $a_exc_id)
Create member status record for a new participant for all assignments.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ assignMembers()

ilExerciseMembers::assignMembers (   $a_members)

Assign members to exercise.

Definition at line 118 of file class.ilExerciseMembers.php.

References assignMember(), and isAssigned().

119  {
120  $assigned = 0;
121  if(is_array($a_members))
122  {
123  foreach($a_members as $member)
124  {
125  if(!$this->isAssigned($member))
126  {
127  $this->assignMember($member);
128  }
129  else
130  {
131  ++$assigned;
132  }
133  }
134  }
135  if($assigned == count($a_members))
136  {
137  return false;
138  }
139  else
140  {
141  return true;
142  }
143  }
isAssigned($a_id)
Is user assigned to exercise?
assignMember($a_usr_id)
Assign a user to the exercise.
+ Here is the call graph for this function:

◆ deassignMember()

ilExerciseMembers::deassignMember (   $a_usr_id)

Detaches a user from an exercise.

Parameters
int$a_usr_iduser id

Definition at line 150 of file class.ilExerciseMembers.php.

References $ilDB, $query, ilLPStatusWrapper\_updateStatus(), ilObjectFactory\getInstanceByObjId(), getObjId(), getRefId(), and read().

Referenced by deassignMembers().

151  {
152  global $ilDB;
153 
154  $tmp_user = ilObjectFactory::getInstanceByObjId($a_usr_id);
155  $tmp_user->dropDesktopItem($this->getRefId(),"exc");
156 
157  $query = "DELETE FROM exc_members ".
158  "WHERE obj_id = ".$ilDB->quote($this->getObjId(), "integer")." ".
159  "AND usr_id = ".$ilDB->quote($a_usr_id, "integer")." ";
160 
161  $ilDB->manipulate($query);
162 
163  $this->read();
164 
165  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
166  ilLPStatusWrapper::_updateStatus($this->getObjId(), $a_usr_id);
167 
168  // delete all delivered files of the member
169  $this->exc->deleteAllDeliveredFilesOfUser($a_usr_id);
170 
171 // @todo: delete all assignment associations (and their files)
172 
173  return false;
174  }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_no_raise=false, $a_force_raise=false)
Update status.
getRefId()
Get exercise ref id.
getObjId()
Get exercise id.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
read()
Read all members.
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deassignMembers()

ilExerciseMembers::deassignMembers (   $a_members)

Deassign members.

Definition at line 179 of file class.ilExerciseMembers.php.

References deassignMember().

180  {
181  if(is_array($a_members))
182  {
183  foreach($a_members as $member)
184  {
185  $this->deassignMember($member);
186  }
187  }
188  else
189  {
190  return false;
191  }
192  }
deassignMember($a_usr_id)
Detaches a user from an exercise.
+ Here is the call graph for this function:

◆ delete()

ilExerciseMembers::delete ( )

Definition at line 254 of file class.ilExerciseMembers.php.

References $ilDB, $query, ilLPStatusWrapper\_refreshStatus(), and getObjId().

255  {
256  global $ilDB;
257 
258  $query = "DELETE FROM exc_members WHERE obj_id = ".
259  $ilDB->quote($this->getObjId(), "integer");
260  $ilDB->manipulate($query);
261 
262  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
264 
265  return true;
266  }
getObjId()
Get exercise id.
_refreshStatus($a_obj_id, $a_users=null)
Set dirty.
global $ilDB
+ Here is the call graph for this function:

◆ getMembers()

ilExerciseMembers::getMembers ( )

Get members array.

Definition at line 58 of file class.ilExerciseMembers.php.

Referenced by isAssigned().

59  {
60  return $this->members ? $this->members : array();
61  }
+ Here is the caller graph for this function:

◆ getObjId()

ilExerciseMembers::getObjId ( )

Get exercise id.

Definition at line 42 of file class.ilExerciseMembers.php.

References $obj_id.

Referenced by assignMember(), deassignMember(), delete(), ilClone(), and read().

43  {
44  return $this->obj_id;
45  }
+ Here is the caller graph for this function:

◆ getRefId()

ilExerciseMembers::getRefId ( )

Get exercise ref id.

Definition at line 34 of file class.ilExerciseMembers.php.

References $ref_id.

Referenced by assignMember(), and deassignMember().

35  {
36  return $this->ref_id;
37  }
+ Here is the caller graph for this function:

◆ ilClone()

ilExerciseMembers::ilClone (   $a_new_id)

Definition at line 217 of file class.ilExerciseMembers.php.

References $data, $ilDB, $query, $res, $row, ilLPStatusWrapper\_updateStatus(), and getObjId().

218  {
219  global $ilDB;
220 
221  $data = array();
222 
223  $query = "SELECT * FROM exc_members ".
224  "WHERE obj_id = ".$ilDB->quote($this->getObjId(), "integer");
225 
226  $res = $ilDB->query($query);
227  while($row = $ilDB->fetchObject($res))
228  {
229  $data[] = array("usr_id" => $row->usr_id,
230  "notice" => $row->notice,
231  "returned" => $row->returned,
232  "status" => $row->status,
233  "sent" => $row->sent,
234  "feedback" => $row->feedback
235  );
236  }
237  foreach($data as $row)
238  {
239  $ilDB->manipulateF("INSERT INTO exc_members ".
240  " (obj_id, usr_id, notice, returned, status, feedback, sent) VALUES ".
241  " (%s,%s,%s,%s,%s,%s,%s)",
242  array ("integer", "integer", "text", "integer", "text", "integer", "integer"),
243  array ($a_new_id, $row["usr_id"], $row["notice"], (int) $row["returned"],
244  $row["status"], (int) $row["feedback"], (int) $row["sent"])
245  );
246 
247  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
248  ilLPStatusWrapper::_updateStatus($a_new_id, $row["usr_id"]);
249  }
250  return true;
251  }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_no_raise=false, $a_force_raise=false)
Update status.
getObjId()
Get exercise id.
global $ilDB
+ Here is the call graph for this function:

◆ ilExerciseMembers()

ilExerciseMembers::ilExerciseMembers (   $a_exc)

Definition at line 23 of file class.ilExerciseMembers.php.

References read().

24  {
25  $this->exc = $a_exc;
26  $this->obj_id = $a_exc->getId();
27  $this->ref_id = $a_exc->getRefId();
28  $this->read();
29  }
read()
Read all members.
+ Here is the call graph for this function:

◆ isAssigned()

ilExerciseMembers::isAssigned (   $a_id)

Is user assigned to exercise?

Definition at line 110 of file class.ilExerciseMembers.php.

References getMembers().

Referenced by assignMembers().

111  {
112  return in_array($a_id,$this->getMembers());
113  }
getMembers()
Get members array.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ read()

ilExerciseMembers::read ( )

Read all members.

Definition at line 197 of file class.ilExerciseMembers.php.

References $ilDB, $query, $res, $row, getObjId(), and setMembers().

Referenced by assignMember(), deassignMember(), and ilExerciseMembers().

198  {
199  global $ilDB;
200 
201  $tmp_arr_members = array();
202 
203  $query = "SELECT * FROM exc_members ".
204  "WHERE obj_id = ".$ilDB->quote($this->getObjId(), "integer");
205 
206  $res = $ilDB->query($query);
207  while($row = $ilDB->fetchObject($res))
208  {
209  $tmp_arr_members[] = $row->usr_id;
210  }
211  $this->setMembers($tmp_arr_members);
212 
213  return true;
214  }
getObjId()
Get exercise id.
global $ilDB
setMembers($a_members)
Set members array.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setMembers()

ilExerciseMembers::setMembers (   $a_members)

Set members array.

Definition at line 66 of file class.ilExerciseMembers.php.

Referenced by read().

67  {
68  $this->members = $a_members;
69  }
+ Here is the caller graph for this function:

◆ setObjId()

ilExerciseMembers::setObjId (   $a_obj_id)

Set exercise id.

Definition at line 50 of file class.ilExerciseMembers.php.

51  {
52  $this->obj_id = $a_obj_id;
53  }

Field Documentation

◆ $members

ilExerciseMembers::$members

Definition at line 16 of file class.ilExerciseMembers.php.

◆ $obj_id

ilExerciseMembers::$obj_id

Definition at line 15 of file class.ilExerciseMembers.php.

Referenced by getObjId().

◆ $ref_id

ilExerciseMembers::$ref_id

Definition at line 14 of file class.ilExerciseMembers.php.

Referenced by getRefId().

◆ $status

ilExerciseMembers::$status

Definition at line 17 of file class.ilExerciseMembers.php.


The documentation for this class was generated from the following file: