ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
All Data Structures Namespaces Files Functions Variables Typedefs Modules Pages
class.ilIndividualAssessmentMembersStorageDB.php
Go to the documentation of this file.
1 <?php
2 require_once 'Modules/IndividualAssessment/interfaces/Members/interface.ilIndividualAssessmentMembersStorage.php';
3 require_once 'Modules/IndividualAssessment/classes/Members/class.ilIndividualAssessmentMembers.php';
4 require_once 'Modules/IndividualAssessment/classes/Members/class.ilIndividualAssessmentMember.php';
5 require_once 'Modules/IndividualAssessment/classes/class.ilObjIndividualAssessment.php';
15 {
16  const MEMBERS_TABLE = "iass_members";
17 
18  protected $db;
19 
20  public function __construct($ilDB)
21  {
22  $this->db = $ilDB;
23  }
24 
28  public function loadMembers(ilObjIndividualAssessment $obj)
29  {
30  $members = new ilIndividualAssessmentMembers($obj);
31  $obj_id = $obj->getId();
32  $sql = $this->loadMembersQuery($obj_id);
33  $res = $this->db->query($sql);
34  while ($rec = $this->db->fetchAssoc($res)) {
35  $members = $members->withAdditionalRecord($rec);
36  }
37  return $members;
38  }
39 
43  public function loadMember(ilObjIndividualAssessment $obj, ilObjUser $usr)
44  {
45  $obj_id = $obj->getId();
46  $usr_id = $usr->getId();
47  $sql = "SELECT "
48  . "iassme.obj_id,"
49  . "iassme.usr_id,"
50  . "iassme.examiner_id,"
51  . "iassme.record,"
52  . "iassme.internal_note,"
53  . "iassme.notify,"
54  . "iassme.notification_ts,"
55  . "iassme.learning_progress,"
56  . "iassme.finalized,"
57  . "iassme.place,"
58  . "iassme.event_time,"
59  . "iassme.user_view_file,"
60  . "iassme.file_name,"
61  . "iassme.changer_id,"
62  . "iassme.change_time"
63  . " FROM " . self::MEMBERS_TABLE . " iassme\n"
64  . " JOIN usr_data usr ON iassme.usr_id = usr.usr_id\n"
65  . " LEFT JOIN usr_data ex ON iassme.examiner_id = ex.usr_id\n"
66  . " WHERE obj_id = " . $this->db->quote($obj_id, 'integer') . "\n"
67  . " AND iassme.usr_id = " . $this->db->quote($usr_id, 'integer');
68 
69  $rec = $this->db->fetchAssoc($this->db->query($sql));
70  if ($rec) {
71  $member = new ilIndividualAssessmentMember($obj, $usr, $rec);
72  return $member;
73  } else {
74  throw new ilIndividualAssessmentException("invalid usr-obj combination");
75  }
76  }
77 
81  public function updateMember(ilIndividualAssessmentMember $member)
82  {
83  $where = array("obj_id" => array("integer", $member->assessmentId())
84  , "usr_id" => array("integer", $member->id())
85  );
86 
93  , ilIndividualAssessmentMembers::FIELD_NOTIFY => array("integer", $member->notify() ? 1 : 0)
94  , ilIndividualAssessmentMembers::FIELD_FINALIZED => array("integer", $member->finalized() ? 1 : 0)
97  , ilIndividualAssessmentMembers::FIELD_USER_VIEW_FILE => array("integer", $member->viewFile() ? 1 : 0)
100  );
101 
102  $this->db->update(self::MEMBERS_TABLE, $values, $where);
103  }
104 
109  {
110  $sql = "DELETE FROM " . self::MEMBERS_TABLE . " WHERE obj_id = " . $this->db->quote($obj->getId(), 'integer');
111  $this->db->manipulate($sql);
112  }
113 
117  protected function loadMembersQuery($obj_id)
118  {
119  return "SELECT ex.firstname as " . ilIndividualAssessmentMembers::FIELD_EXAMINER_FIRSTNAME
123  . " ,usr.firstname as " . ilIndividualAssessmentMembers::FIELD_FIRSTNAME
124  . " ,usr.lastname as " . ilIndividualAssessmentMembers::FIELD_LASTNAME
125  . " ,usr.login as " . ilIndividualAssessmentMembers::FIELD_LOGIN
127  . " ,iassme.obj_id, iassme.usr_id, iassme.examiner_id, iassme.record, iassme.internal_note, iassme.notify"
128  . " ,iassme.notification_ts, iassme.learning_progress, iassme.finalized,iassme.place"
129  . " ,iassme.event_time, iassme.changer_id, iassme.change_time\n"
130  . " FROM iass_members iassme"
131  . " JOIN usr_data usr ON iassme.usr_id = usr.usr_id"
132  . " LEFT JOIN usr_data ex ON iassme.examiner_id = ex.usr_id"
133  . " LEFT JOIN usr_data ud ON iassme.changer_id = ud.usr_id"
134  . " WHERE obj_id = " . $this->db->quote($obj_id, 'integer');
135  }
136 
140  public function insertMembersRecord(ilObjIndividualAssessment $iass, array $record)
141  {
142  $values = array("obj_id" => array("integer", $iass->getId())
143  , "usr_id" => array("integer", $record[ilIndividualAssessmentMembers::FIELD_USR_ID])
157  );
158 
159  $this->db->insert(self::MEMBERS_TABLE, $values);
160  }
161 
165  public function removeMembersRecord(ilObjIndividualAssessment $iass, array $record)
166  {
167  $sql = "DELETE FROM " . self::MEMBERS_TABLE . "\n"
168  . " WHERE obj_id = " . $this->db->quote($iass->getId(), 'integer') . "\n"
169  . " AND usr_id = " . $this->db->quote($record[ilIndividualAssessmentMembers::FIELD_USR_ID], 'integer');
170 
171  $this->db->manipulate($sql);
172  }
173 }
loadMember(ilObjIndividualAssessment $obj, ilObjUser $usr)
Get ilIndividualAssessmentMember-object containing meberinfo associated with $obj and $usr...
deleteMembers(ilObjIndividualAssessment $obj)
Delete entries associated with members-object.
For the purpose of streamlining the grading and learning-process status definition outside of tests...
const IL_CAL_DATETIME
removeMembersRecord(ilObjIndividualAssessment $iass, array $record)
Remove a membership associated with a IndividualAssessment object inside storage.$record ...
examinerId()
Get the user id of the examiner.
const IL_CAL_UNIX
notificationTS()
Get the timestamp, at which the notification was sent.
finalized()
Is this membership allready finalized?
changerId()
Get the user id of the changer.
insertMembersRecord(ilObjIndividualAssessment $iass, array $record)
Create a membership inside storage.$record
loadMembers(ilObjIndividualAssessment $obj)
Get ilIndividualAssessmentMembers-object containing meberinfo associated with $obj.ilIndividualAssessmentMembers
updateMember(ilIndividualAssessmentMember $member)
Create a new storage entry for member-object.
foreach($_POST as $key=> $value) $res
getId()
get object id public
Date and time handling
Create styles array
The data for the language used.
viewFile()
Can user see the uploaded file.
Edit the record of a user, set LP.
notify()
Will the user be notified after finalization?
fileName()
Get the name of the uploaded file.
global $ilDB
assessmentId()
Get the ilObjIndividualAssessment id corresponding to this membership.
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
id()
Get the user id corresponding to this membership.
Member administration related logic, add and remove members, get the list of all members, etc.
LPStatus()
Get the LP-status corresponding to this membership.