ILIAS  release_7 Revision v7.30-3-g800a261c036
ilExcAssMemberStateRepository Class Reference

This class determines assignment member state information directly on the persistence layer. More...

+ Collaboration diagram for ilExcAssMemberStateRepository:

Public Member Functions

 __construct (\ilDBInterface $db=null)
 Constructor. More...
 
 getSubmitableAssignmentIdsOfUser (array $exc_ids, int $user_id)
 Get all assignments for a user where the user may hand in submissions. More...
 
 getAssignmentIdsWithGradingNeeded (array $exc_ids)
 Get assignments with open gradings. More...
 
 getAssignmentIdsWithPeerFeedbackNeeded (array $exc_ids, int $user_id)
 Get all assignments for a user where the user may hand in submissions. More...
 

Detailed Description

This class determines assignment member state information directly on the persistence layer.

Thus its procedures are fast but may not include/respect all higher application logic of the assignment state of members

Author
killi.nosp@m.ng@l.nosp@m.eifos.nosp@m..de

Definition at line 13 of file class.ilExcAssMemberStateRepository.php.

Constructor & Destructor Documentation

◆ __construct()

ilExcAssMemberStateRepository::__construct ( \ilDBInterface  $db = null)

Constructor.

Parameters
ilDBInterface$db

Definition at line 20 of file class.ilExcAssMemberStateRepository.php.

21 {
22 global $DIC;
23
24 $this->db = (is_null($db))
25 ? $DIC->database()
26 : $db;
27 }
global $DIC
Definition: goto.php:24

References $DIC.

Member Function Documentation

◆ getAssignmentIdsWithGradingNeeded()

ilExcAssMemberStateRepository::getAssignmentIdsWithGradingNeeded ( array  $exc_ids)

Get assignments with open gradings.

Parameters
int[]$exc_idsexercises the user is "tutor" of
Returns
int[]

Definition at line 67 of file class.ilExcAssMemberStateRepository.php.

68 {
69 $db = $this->db;
70
71 $set = $db->queryF(
72 'SELECT ass.id, COUNT(*) open_grading FROM exc_mem_ass_status st LEFT JOIN exc_assignment ass
73 ON (st.ass_id = ass.id)
74 WHERE ' . $db->in("ass.exc_id", $exc_ids, false, "integer") . '
75 AND st.status = %s
76 AND st.returned = %s
77 GROUP BY (ass.id)',
78 array("text","integer"),
79 array("notgraded", 1)
80 );
81 $open_gradings = [];
82 while ($rec = $db->fetchAssoc($set)) {
83 $open_gradings[$rec["id"]] = $rec["open_grading"];
84 }
85 return $open_gradings;
86 }

◆ getAssignmentIdsWithPeerFeedbackNeeded()

ilExcAssMemberStateRepository::getAssignmentIdsWithPeerFeedbackNeeded ( array  $exc_ids,
int  $user_id 
)

Get all assignments for a user where the user may hand in submissions.

Parameters
int[]$exc_idsexercises the user is "member" in
int$user_id
Returns
int[]

Definition at line 95 of file class.ilExcAssMemberStateRepository.php.

95 : array
96 {
97 $db = $this->db;
98
99 // peer groups exist
100 $set = $db->queryF(
101 'SELECT ass.id, count(*) nr_given, ass.peer_dl, ass.peer_min, max(idl.tstamp) maxidl, max(peer.tstamp) maxpeer
102 FROM exc_assignment ass
103 LEFT JOIN exc_assignment_peer peer ON (ass.id = peer.ass_id)
104 LEFT JOIN exc_idl idl ON (ass.id = idl.ass_id)
105 WHERE ' . $db->in("ass.exc_id", $exc_ids, false, "integer") . '
106 AND ass.deadline_mode = %s
107 AND ass.time_stamp < %s
108 AND (ass.deadline2 < %s OR ass.deadline2 IS NULL)
109 AND ass.peer = %s
110 AND (peer.giver_id = %s)
111 AND (ass.peer_dl > %s OR ass.peer_dl IS NULL)
112 AND (peer.is_valid = %s)
113 GROUP BY (ass.id)
114 HAVING (ass.peer_min > nr_given) AND (maxidl < %s OR maxidl IS NULL)
115 ',
116 array("integer", "integer", "integer", "integer", "integer", "integer", "integer", "integer"),
117 array(0, time(), time(), 1, $user_id, time(), 1, time())
118 );
119 $ids = [];
120 while ($rec = $db->fetchAssoc($set)) {
121 $ids[] = $rec["id"];
122 }
123
124 // peer groups do not exist
125 $set = $db->queryF(
126 'SELECT ass.id, count(*) nr_given, ass.peer_dl, ass.peer_min, max(idl.tstamp) maxidl, max(peer.tstamp) maxpeer
127 FROM exc_assignment ass
128 LEFT JOIN exc_assignment_peer peer ON (ass.id = peer.ass_id)
129 LEFT JOIN exc_idl idl ON (ass.id = idl.ass_id)
130 WHERE ' . $db->in("ass.exc_id", $exc_ids, false, "integer") . '
131 AND ass.deadline_mode = %s
132 AND ass.time_stamp < %s
133 AND (ass.deadline2 < %s OR ass.deadline2 IS NULL)
134 AND ass.peer = %s
135 AND (peer.giver_id IS NULL)
136 AND (ass.peer_dl > %s OR ass.peer_dl IS NULL)
137 AND (peer.tstamp IS NULL)
138 GROUP BY (ass.id)
139 HAVING (maxpeer IS NULL) AND (maxidl < %s OR maxidl IS NULL)
140 ',
141 array("integer", "integer", "integer", "integer", "integer", "integer"),
142 array(0, time(), time(), 1, time(), time())
143 );
144 while ($rec = $db->fetchAssoc($set)) {
145 $ids[] = $rec["id"];
146 }
147
148
149 return $ids;
150 }

◆ getSubmitableAssignmentIdsOfUser()

ilExcAssMemberStateRepository::getSubmitableAssignmentIdsOfUser ( array  $exc_ids,
int  $user_id 
)

Get all assignments for a user where the user may hand in submissions.

Parameters
int[]$exc_idsexercises the user is "member" in
int$user_id
Returns
int[]

Definition at line 36 of file class.ilExcAssMemberStateRepository.php.

36 : array
37 {
38 $db = $this->db;
39 $set = $db->queryF(
40 'SELECT ass.id FROM exc_assignment ass LEFT JOIN exc_idl idl
41 ON (ass.id = idl.ass_id AND idl.member_id = %s)
42 WHERE ' . $db->in("ass.exc_id", $exc_ids, false, "integer") . '
43 AND (( ass.deadline_mode = %s
44 AND (ass.start_time IS NULL OR ass.start_time < %s )
45 AND (ass.time_stamp IS NULL OR ass.time_stamp > %s OR ass.deadline2 > %s OR idl.tstamp > %s))
46 ) OR (
47 ass.deadline_mode = %s
48 AND (idl.starting_ts > 0)
49 AND (idl.starting_ts + (ass.relative_deadline * 24 * 60 * 60) > %s)
50 )',
51 array("integer", "integer", "integer", "integer", "integer", "integer", "integer", "integer"),
52 array($user_id, 0, time(), time(), time(), time(), 1, time())
53 );
54 $ids = [];
55 while ($rec = $db->fetchAssoc($set)) {
56 $ids[] = $rec["id"];
57 }
58 return $ids;
59 }

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