ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilIndividualAssessmentMembersStorageDB.php
Go to the documentation of this file.
1<?php
2require_once 'Modules/IndividualAssessment/interfaces/Members/interface.ilIndividualAssessmentMembersStorage.php';
3require_once 'Modules/IndividualAssessment/classes/Members/class.ilIndividualAssessmentMembers.php';
4require_once 'Modules/IndividualAssessment/classes/Members/class.ilIndividualAssessmentMember.php';
5require_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
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
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
82 {
83 $where = array("obj_id" => array("integer", $member->assessmentId())
84 , "usr_id" => array("integer", $member->id())
85 );
86
87 $values = array(ilIndividualAssessmentMembers::FIELD_LEARNING_PROGRESS => array("text", $member->LPStatus())
88 , ilIndividualAssessmentMembers::FIELD_EXAMINER_ID => array("integer", $member->examinerId())
89 , ilIndividualAssessmentMembers::FIELD_RECORD => array("text", $member->record())
91 , ilIndividualAssessmentMembers::FIELD_PLACE => array("text", $member->place())
92 , ilIndividualAssessmentMembers::FIELD_EVENTTIME => array("integer", $member->eventTime()->get(IL_CAL_UNIX))
93 , ilIndividualAssessmentMembers::FIELD_NOTIFY => array("integer", $member->notify() ? 1 : 0)
94 , ilIndividualAssessmentMembers::FIELD_FINALIZED => array("integer", $member->finalized() ? 1 : 0)
96 , ilIndividualAssessmentMembers::FIELD_FILE_NAME => array("text", $member->fileName())
97 , ilIndividualAssessmentMembers::FIELD_USER_VIEW_FILE => array("integer", $member->viewFile() ? 1 : 0)
98 , ilIndividualAssessmentMembers::FIELD_CHANGER_ID => array("integer", $member->changerId())
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
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}
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_UNIX
const IL_CAL_DATETIME
@classDescription Date and time handling
Edit the record of a user, set LP.
examinerId()
Get the user id of the examiner.
viewFile()
Can user see the uploaded file.
assessmentId()
Get the ilObjIndividualAssessment id corresponding to this membership.
finalized()
Is this membership allready finalized?
LPStatus()
Get the LP-status corresponding to this membership.
id()
Get the user id corresponding to this membership.
fileName()
Get the name of the uploaded file.
changerId()
Get the user id of the changer.
notify()
Will the user be notified after finalization?
notificationTS()
Get the timestamp, at which the notification was sent.
loadMembers(ilObjIndividualAssessment $obj)
Get ilIndividualAssessmentMembers-object containing meberinfo associated with $obj....
removeMembersRecord(ilObjIndividualAssessment $iass, array $record)
Remove a membership associated with a IndividualAssessment object inside storage.
loadMember(ilObjIndividualAssessment $obj, ilObjUser $usr)
Get ilIndividualAssessmentMember-object containing meberinfo associated with $obj and $usr....
deleteMembers(ilObjIndividualAssessment $obj)
Delete entries associated with members-object.
updateMember(ilIndividualAssessmentMember $member)
Create a new storage entry for member-object.
insertMembersRecord(ilObjIndividualAssessment $iass, array $record)
Create a membership inside storage.
Member administration related logic, add and remove members, get the list of all members,...
For the purpose of streamlining the grading and learning-process status definition outside of tests,...
getId()
get object id @access public
foreach($_POST as $key=> $value) $res
global $ilDB