ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ilIndividualAssessmentMembersStorageDB Class Reference

Store member infos to DB. More...

+ Inheritance diagram for ilIndividualAssessmentMembersStorageDB:
+ Collaboration diagram for ilIndividualAssessmentMembersStorageDB:

Public Member Functions

 __construct (protected ilDBInterface $db, protected IRSS $irss, protected ilIndividualAssessmentGradingStakeholder $stakeholder)
 
 loadMembers (ilObjIndividualAssessment $obj)
 Get ilIndividualAssessmentMembers-object containing member info associated with $obj. More...
 
 loadMembersAsSingleObjects (ilObjIndividualAssessment $obj, string $filter=null, string $sort=null)
 Get ilIndividualAssessmentMember-object for each obj member associated with $obj.
Returns
ilIndividualAssessmentMember[]
More...
 
 loadMember (ilObjIndividualAssessment $obj, ilObjUser $usr)
 Get ilIndividualAssessmentMember-object containing member info associated with $obj and $usr. More...
 
 updateMember (ilIndividualAssessmentMember $member)
 Create a new storage entry for member-object. More...
 
 deleteMembers (ilObjIndividualAssessment $obj)
 Delete entries associated with members-object. More...
 
 insertMembersRecord (ilObjIndividualAssessment $iass, array $record)
 Create a membership inside storage.
Parameters
string[]|int[]$record
More...
 
 removeMembersRecord (ilObjIndividualAssessment $iass, array $record)
 Remove a membership associated with a IndividualAssessment object inside storage.
Parameters
string[]|int[]$record
More...
 

Data Fields

const MEMBERS_TABLE = "iass_members"
 

Protected Member Functions

 createAssessmentMember (ilObjIndividualAssessment $obj, ilObjUser $usr, array $record)
 
 createGrading (array $record, string $user_fullname)
 
 getActualDateTime ()
 
 loadMemberQuery ()
 
 loadMembersQuery (int $obj_id)
 
 getWhereFromFilter ($filter)
 
 getOrderByFromSort (string $sort)
 

Detailed Description

Store member infos to DB.

Definition at line 26 of file class.ilIndividualAssessmentMembersStorageDB.php.

Constructor & Destructor Documentation

◆ __construct()

ilIndividualAssessmentMembersStorageDB::__construct ( protected ilDBInterface  $db,
protected IRSS  $irss,
protected ilIndividualAssessmentGradingStakeholder  $stakeholder 
)

Definition at line 31 of file class.ilIndividualAssessmentMembersStorageDB.php.

35  {
36  }

Member Function Documentation

◆ createAssessmentMember()

ilIndividualAssessmentMembersStorageDB::createAssessmentMember ( ilObjIndividualAssessment  $obj,
ilObjUser  $usr,
array  $record 
)
protected

Definition at line 99 of file class.ilIndividualAssessmentMembersStorageDB.php.

References createGrading(), ilIndividualAssessmentMembers\FIELD_CHANGE_TIME, ilIndividualAssessmentMembers\FIELD_CHANGER_ID, ilIndividualAssessmentMembers\FIELD_EXAMINER_ID, ilIndividualAssessmentMembers\FIELD_NOTIFICATION_TS, ilObjUser\getFullname(), and ILIAS\Repository\int().

Referenced by ilIndividualAssessmentMembersStorageDBWrapper\createAssessmentMemberWrapper(), loadMember(), and loadMembersAsSingleObjects().

105  if (!is_null($changer_id)) {
106  $changer_id = (int) $changer_id;
107  }
108  $change_time = null;
109  $change_time_db = $record[ilIndividualAssessmentMembers::FIELD_CHANGE_TIME];
110  if (!is_null($change_time_db)) {
111  $change_time = new DateTimeImmutable($change_time_db);
112  }
113  $examiner_id = $record[ilIndividualAssessmentMembers::FIELD_EXAMINER_ID];
114  if (!is_null($examiner_id)) {
115  $examiner_id = (int) $examiner_id;
116  }
117  return new ilIndividualAssessmentMember(
118  $obj,
119  $usr,
120  $this->createGrading($record, $usr->getFullname()),
122  $examiner_id,
123  $changer_id,
124  $change_time
125  );
126  }
getFullname(int $a_max_strlen=0)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createGrading()

ilIndividualAssessmentMembersStorageDB::createGrading ( array  $record,
string  $user_fullname 
)
protected

Definition at line 128 of file class.ilIndividualAssessmentMembersStorageDB.php.

References ilIndividualAssessmentMembers\FIELD_EVENTTIME, ilIndividualAssessmentMembers\FIELD_FILE_NAME, ilIndividualAssessmentMembers\FIELD_FINALIZED, ilIndividualAssessmentMembers\FIELD_INTERNAL_NOTE, ilIndividualAssessmentMembers\FIELD_LEARNING_PROGRESS, ilIndividualAssessmentMembers\FIELD_NOTIFY, ilIndividualAssessmentMembers\FIELD_PLACE, ilIndividualAssessmentMembers\FIELD_RECORD, and ilIndividualAssessmentMembers\FIELD_USER_VIEW_FILE.

Referenced by createAssessmentMember().

129  {
130  $event_time = null;
131  $event_time_db = $record[ilIndividualAssessmentMembers::FIELD_EVENTTIME];
132  if (!is_null($event_time_db)) {
133  $event_time = new DateTimeImmutable();
134  $event_time = $event_time->setTimestamp((int) $event_time_db);
135  }
137  $user_fullname,
144  $event_time,
147  );
148  }
+ Here is the caller graph for this function:

◆ deleteMembers()

ilIndividualAssessmentMembersStorageDB::deleteMembers ( ilObjIndividualAssessment  $obj)

Delete entries associated with members-object.

Implements ilIndividualAssessmentMembersStorage.

Definition at line 192 of file class.ilIndividualAssessmentMembersStorageDB.php.

References ilIndividualAssessmentMembers\FIELD_FILE_NAME, ilObject\getId(), and loadMembers().

192  : void
193  {
194  foreach($this->loadMembers($obj) as $member) {
195  if($identifier = $member[ilIndividualAssessmentMembers::FIELD_FILE_NAME]) {
196  $resource_id = $this->irss->manage()->find($identifier);
197  $this->irss->manage()->remove($resource_id, $this->stakeholder);
198  }
199  }
200 
201  $sql = "DELETE FROM " . self::MEMBERS_TABLE . " WHERE obj_id = " . $this->db->quote($obj->getId(), 'integer');
202  $this->db->manipulate($sql);
203  }
loadMembers(ilObjIndividualAssessment $obj)
Get ilIndividualAssessmentMembers-object containing member info associated with $obj.
+ Here is the call graph for this function:

◆ getActualDateTime()

ilIndividualAssessmentMembersStorageDB::getActualDateTime ( )
protected

Definition at line 184 of file class.ilIndividualAssessmentMembersStorageDB.php.

Referenced by updateMember().

184  : string
185  {
186  return date("Y-m-d H:i:s");
187  }
+ Here is the caller graph for this function:

◆ getOrderByFromSort()

ilIndividualAssessmentMembersStorageDB::getOrderByFromSort ( string  $sort)
protected

Definition at line 390 of file class.ilIndividualAssessmentMembersStorageDB.php.

Referenced by ilIndividualAssessmentMembersStorageDBWrapper\getOrderByFromSortWrapper(), and loadMembersAsSingleObjects().

390  : string
391  {
392  $vals = explode(":", $sort);
393 
394  return " ORDER BY " . $vals[0] . " " . $vals[1];
395  }
+ Here is the caller graph for this function:

◆ getWhereFromFilter()

ilIndividualAssessmentMembersStorageDB::getWhereFromFilter (   $filter)
protected
Parameters
string | int$filter

Definition at line 374 of file class.ilIndividualAssessmentMembersStorageDB.php.

References ilIndividualAssessmentMembers\LP_ASSESSMENT_NOT_COMPLETED, ilIndividualAssessmentMembers\LP_COMPLETED, ilIndividualAssessmentMembers\LP_FAILED, and ilIndividualAssessmentMembers\LP_IN_PROGRESS.

Referenced by ilIndividualAssessmentMembersStorageDBWrapper\getWhereFromFilterWrapper(), and loadMembersAsSingleObjects().

374  : string
375  {
376  switch ($filter) {
378  return " AND finalized = 0 AND examiner_id IS NULL\n";
380  return " AND finalized = 0 AND examiner_id IS NOT NULL\n";
382  return " AND finalized = 1 AND learning_progress = 2\n";
384  return " AND finalized = 1 AND learning_progress = 3\n";
385  default:
386  return "";
387  }
388  }
+ Here is the caller graph for this function:

◆ insertMembersRecord()

ilIndividualAssessmentMembersStorageDB::insertMembersRecord ( ilObjIndividualAssessment  $iass,
array  $record 
)

Create a membership inside storage.

Parameters
string[]|int[]$record

Implements ilIndividualAssessmentMembersStorage.

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

References ilIndividualAssessmentMembers\FIELD_CHANGE_TIME, ilIndividualAssessmentMembers\FIELD_CHANGER_ID, ilIndividualAssessmentMembers\FIELD_EVENTTIME, ilIndividualAssessmentMembers\FIELD_EXAMINER_ID, ilIndividualAssessmentMembers\FIELD_FILE_NAME, ilIndividualAssessmentMembers\FIELD_FINALIZED, ilIndividualAssessmentMembers\FIELD_INTERNAL_NOTE, ilIndividualAssessmentMembers\FIELD_LEARNING_PROGRESS, ilIndividualAssessmentMembers\FIELD_NOTIFICATION_TS, ilIndividualAssessmentMembers\FIELD_NOTIFY, ilIndividualAssessmentMembers\FIELD_PLACE, ilIndividualAssessmentMembers\FIELD_RECORD, ilIndividualAssessmentMembers\FIELD_USER_VIEW_FILE, ilIndividualAssessmentMembers\FIELD_USR_ID, and ilObject\getId().

254  : void
255  {
256  $values = [
257  "obj_id" => [
258  "integer",
259  $iass->getId()
260  ],
261  "usr_id" => [
262  "integer",
264  ],
266  "text",
268  ],
270  "integer",
272  ],
274  "integer",
275  0
276  ],
278  "integer",
279  -1
280  ]
281  ];
282 
285  [
286  "integer",
288  ];
289  }
290  if (isset($record[ilIndividualAssessmentMembers::FIELD_RECORD])) {
292  [
293  "text",
295  ];
296  }
299  [
300  "text",
302  ];
303  }
304  if (isset($record[ilIndividualAssessmentMembers::FIELD_PLACE])) {
306  [
307  "text",
309  ];
310  }
313  [
314  "integer",
316  ];
317  }
320  [
321  "text",
323  ];
324  }
327  [
328  "integer",
330  ];
331  }
334  [
335  "integer",
337  ];
338  }
341  [
342  "text",
344  ];
345  }
346 
347  $this->db->insert(self::MEMBERS_TABLE, $values);
348  }
+ Here is the call graph for this function:

◆ loadMember()

ilIndividualAssessmentMembersStorageDB::loadMember ( ilObjIndividualAssessment  $obj,
ilObjUser  $usr 
)

Get ilIndividualAssessmentMember-object containing member info associated with $obj and $usr.

Implements ilIndividualAssessmentMembersStorage.

Definition at line 83 of file class.ilIndividualAssessmentMembersStorageDB.php.

References createAssessmentMember(), ilObject\getId(), and loadMemberQuery().

84  {
85  $obj_id = $obj->getId();
86  $usr_id = $usr->getId();
87  $sql = $this->loadMemberQuery();
88  $sql .= " WHERE obj_id = " . $this->db->quote($obj_id, 'integer') . "\n"
89  . " AND iassme.usr_id = " . $this->db->quote($usr_id, 'integer');
90 
91  $rec = $this->db->fetchAssoc($this->db->query($sql));
92  if ($rec) {
93  return $this->createAssessmentMember($obj, $usr, $rec);
94  } else {
95  throw new ilIndividualAssessmentException("invalid usr-obj combination");
96  }
97  }
createAssessmentMember(ilObjIndividualAssessment $obj, ilObjUser $usr, array $record)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:

◆ loadMemberQuery()

ilIndividualAssessmentMembersStorageDB::loadMemberQuery ( )
protected

Definition at line 205 of file class.ilIndividualAssessmentMembersStorageDB.php.

Referenced by loadMember(), and loadMembersAsSingleObjects().

205  : string
206  {
207  return "SELECT "
208  . "iassme.obj_id,"
209  . "iassme.usr_id,"
210  . "iassme.examiner_id,"
211  . "iassme.record,"
212  . "iassme.internal_note,"
213  . "iassme.notify,"
214  . "iassme.notification_ts,"
215  . "iassme.learning_progress,"
216  . "iassme.finalized,"
217  . "iassme.place,"
218  . "iassme.event_time,"
219  . "iassme.user_view_file,"
220  . "iassme.file_name,"
221  . "iassme.changer_id,"
222  . "iassme.change_time,"
223  . "usr.login AS user_login,"
224  . "ex.login AS examiner_login"
225  . " FROM " . self::MEMBERS_TABLE . " iassme\n"
226  . " JOIN usr_data usr ON iassme.usr_id = usr.usr_id\n"
227  . " LEFT JOIN usr_data ex ON iassme.examiner_id = ex.usr_id\n"
228  ;
229  }
+ Here is the caller graph for this function:

◆ loadMembers()

ilIndividualAssessmentMembersStorageDB::loadMembers ( ilObjIndividualAssessment  $obj)

Get ilIndividualAssessmentMembers-object containing member info associated with $obj.

Implements ilIndividualAssessmentMembersStorage.

Definition at line 41 of file class.ilIndividualAssessmentMembersStorageDB.php.

References $res, ilObject\getId(), and loadMembersQuery().

Referenced by deleteMembers().

42  {
43  $members = new ilIndividualAssessmentMembers($obj);
44  $obj_id = $obj->getId();
45  $sql = $this->loadMembersQuery($obj_id);
46  $res = $this->db->query($sql);
47  while ($rec = $this->db->fetchAssoc($res)) {
48  $members = $members->withAdditionalRecord($rec);
49  }
50  return $members;
51  }
$res
Definition: ltiservices.php:69
Member administration related logic, add and remove members, get the list of all members, etc ...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ loadMembersAsSingleObjects()

ilIndividualAssessmentMembersStorageDB::loadMembersAsSingleObjects ( ilObjIndividualAssessment  $obj,
string  $filter = null,
string  $sort = null 
)

Get ilIndividualAssessmentMember-object for each obj member associated with $obj.

Returns
ilIndividualAssessmentMember[]

Implements ilIndividualAssessmentMembersStorage.

Definition at line 56 of file class.ilIndividualAssessmentMembersStorageDB.php.

References $res, createAssessmentMember(), ilObject\getId(), getOrderByFromSort(), getWhereFromFilter(), and loadMemberQuery().

60  : array {
61  $members = [];
62  $sql = $this->loadMemberQuery();
63  $sql .= " WHERE obj_id = " . $this->db->quote($obj->getId(), 'integer');
64 
65  if (!is_null($filter)) {
66  $sql .= $this->getWhereFromFilter($filter);
67  }
68 
69  if (!is_null($sort)) {
70  $sql .= $this->getOrderByFromSort($sort);
71  }
72  $res = $this->db->query($sql);
73  while ($rec = $this->db->fetchAssoc($res)) {
74  $usr = new ilObjUser((int)$rec["usr_id"]);
75  $members[] = $this->createAssessmentMember($obj, $usr, $rec);
76  }
77  return $members;
78  }
createAssessmentMember(ilObjIndividualAssessment $obj, ilObjUser $usr, array $record)
$res
Definition: ltiservices.php:69
+ Here is the call graph for this function:

◆ loadMembersQuery()

ilIndividualAssessmentMembersStorageDB::loadMembersQuery ( int  $obj_id)
protected

Definition at line 231 of file class.ilIndividualAssessmentMembersStorageDB.php.

References ilIndividualAssessmentMembers\FIELD_CHANGER_FIRSTNAME, ilIndividualAssessmentMembers\FIELD_CHANGER_LASTNAME, ilIndividualAssessmentMembers\FIELD_EXAMINER_FIRSTNAME, ilIndividualAssessmentMembers\FIELD_EXAMINER_LASTNAME, ilIndividualAssessmentMembers\FIELD_FILE_NAME, ilIndividualAssessmentMembers\FIELD_FIRSTNAME, ilIndividualAssessmentMembers\FIELD_LASTNAME, and ilIndividualAssessmentMembers\FIELD_LOGIN.

Referenced by loadMembers().

231  : string
232  {
233  return "SELECT ex.firstname as " . ilIndividualAssessmentMembers::FIELD_EXAMINER_FIRSTNAME
237  . " ,usr.firstname as " . ilIndividualAssessmentMembers::FIELD_FIRSTNAME
238  . " ,usr.lastname as " . ilIndividualAssessmentMembers::FIELD_LASTNAME
239  . " ,usr.login as " . ilIndividualAssessmentMembers::FIELD_LOGIN
241  . " ,iassme.obj_id, iassme.usr_id, iassme.examiner_id, iassme.record, iassme.internal_note, iassme.notify"
242  . " ,iassme.notification_ts, iassme.learning_progress, iassme.finalized,iassme.place"
243  . " ,iassme.event_time, iassme.changer_id, iassme.change_time\n"
244  . " FROM iass_members iassme"
245  . " JOIN usr_data usr ON iassme.usr_id = usr.usr_id"
246  . " LEFT JOIN usr_data ex ON iassme.examiner_id = ex.usr_id"
247  . " LEFT JOIN usr_data ud ON iassme.changer_id = ud.usr_id"
248  . " WHERE obj_id = " . $this->db->quote($obj_id, 'integer');
249  }
+ Here is the caller graph for this function:

◆ removeMembersRecord()

ilIndividualAssessmentMembersStorageDB::removeMembersRecord ( ilObjIndividualAssessment  $iass,
array  $record 
)

Remove a membership associated with a IndividualAssessment object inside storage.

Parameters
string[]|int[]$record

Implements ilIndividualAssessmentMembersStorage.

Definition at line 353 of file class.ilIndividualAssessmentMembersStorageDB.php.

References ilIndividualAssessmentMembers\FIELD_FILE_NAME, ilIndividualAssessmentMembers\FIELD_USR_ID, and ilObject\getId().

353  : void
354  {
355 
356  if(array_key_exists(ilIndividualAssessmentMembers::FIELD_FILE_NAME, $record)
357  && $identifier = $record[ilIndividualAssessmentMembers::FIELD_FILE_NAME]) {
358  $resource_id = $this->irss->manage()->find($identifier);
359  $this->irss->manage()->remove($resource_id, $this->stakeholder);
360  }
361 
362  $sql =
363  "DELETE FROM " . self::MEMBERS_TABLE . PHP_EOL
364  . "WHERE obj_id = " . $this->db->quote($iass->getId(), 'integer') . PHP_EOL
365  . "AND usr_id = " . $this->db->quote($record[ilIndividualAssessmentMembers::FIELD_USR_ID], 'integer') . PHP_EOL
366  ;
367 
368  $this->db->manipulate($sql);
369  }
+ Here is the call graph for this function:

◆ updateMember()

ilIndividualAssessmentMembersStorageDB::updateMember ( ilIndividualAssessmentMember  $member)

Create a new storage entry for member-object.

Implements ilIndividualAssessmentMembersStorage.

Definition at line 153 of file class.ilIndividualAssessmentMembersStorageDB.php.

References ilIndividualAssessmentMember\assessmentId(), ilIndividualAssessmentMember\changerId(), ilIndividualAssessmentMember\eventTime(), ilIndividualAssessmentMember\examinerId(), ilIndividualAssessmentMembers\FIELD_CHANGE_TIME, ilIndividualAssessmentMembers\FIELD_CHANGER_ID, ilIndividualAssessmentMembers\FIELD_EVENTTIME, ilIndividualAssessmentMembers\FIELD_EXAMINER_ID, ilIndividualAssessmentMembers\FIELD_FILE_NAME, ilIndividualAssessmentMembers\FIELD_FINALIZED, ilIndividualAssessmentMembers\FIELD_INTERNAL_NOTE, ilIndividualAssessmentMembers\FIELD_LEARNING_PROGRESS, ilIndividualAssessmentMembers\FIELD_NOTIFICATION_TS, ilIndividualAssessmentMembers\FIELD_NOTIFY, ilIndividualAssessmentMembers\FIELD_PLACE, ilIndividualAssessmentMembers\FIELD_RECORD, ilIndividualAssessmentMembers\FIELD_USER_VIEW_FILE, ilIndividualAssessmentMember\fileName(), ilIndividualAssessmentMember\finalized(), getActualDateTime(), ilIndividualAssessmentMember\id(), ilIndividualAssessmentMember\internalNote(), ilIndividualAssessmentMember\LPStatus(), ilIndividualAssessmentMember\notificationTS(), ilIndividualAssessmentMember\notify(), ilIndividualAssessmentMember\place(), ilIndividualAssessmentMember\record(), and ilIndividualAssessmentMember\viewFile().

153  : void
154  {
155  $where = [
156  "obj_id" => ["integer", $member->assessmentId()],
157  "usr_id" => ["integer", $member->id()]
158  ];
159 
160  $event_time = $member->eventTime();
161  if (!is_null($event_time)) {
162  $event_time = $event_time->getTimestamp();
163  }
164 
165  $values = [
167  ilIndividualAssessmentMembers::FIELD_EXAMINER_ID => ["integer", $member->examinerId() ?? "NULL"],
168  ilIndividualAssessmentMembers::FIELD_RECORD => ["text", $member->record()],
170  ilIndividualAssessmentMembers::FIELD_PLACE => ["text", $member->place()],
171  ilIndividualAssessmentMembers::FIELD_EVENTTIME => ["integer", $event_time],
172  ilIndividualAssessmentMembers::FIELD_NOTIFY => ["integer", $member->notify()],
179  ];
180 
181  $this->db->update(self::MEMBERS_TABLE, $values, $where);
182  }
+ Here is the call graph for this function:

Field Documentation

◆ MEMBERS_TABLE


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