18 declare(strict_types=0);
42 if (isset(self::$instances[$a_obj_id]) && self::$instances[$a_obj_id]) {
43 return self::$instances[$a_obj_id];
48 public function add(
int $a_usr_id,
int $a_role): bool
61 $rbacreview = $DIC[
'rbacreview'];
62 $lrol = $rbacreview->getRolesOfRoleFolder($a_ref_id,
false);
64 foreach ($lrol as $role) {
66 switch (substr($title, 0, 8)) {
81 parent::addSubscriber($a_usr_id);
82 $this->eventHandler->raise(
95 bool $a_manual =
false,
96 bool $a_no_origin =
false 98 $this->participants_status[$a_usr_id][
'passed'] = $a_passed;
99 self::_updatePassed($this->obj_id, $a_usr_id, $a_passed, $a_manual, $a_no_origin);
106 bool $a_manual =
false,
107 bool $a_no_origin =
false 111 $ilDB = $DIC[
'ilDB'];
113 $ilAppEventHandler = $DIC->event();
121 $query =
"SELECT passed FROM obj_members " .
122 "WHERE obj_id = " .
$ilDB->
quote($a_obj_id,
'integer') .
" " .
123 "AND usr_id = " .
$ilDB->
quote($a_usr_id,
'integer');
126 if (
$res->numRows()) {
129 if ((
int) $old[
"passed"] !== (
int) $a_passed) {
130 $update_query =
"UPDATE obj_members SET " .
131 "passed = " .
$ilDB->
quote($a_passed,
'integer') .
", " .
132 "origin = " .
$ilDB->
quote($origin,
'integer') .
", " .
133 "origin_ts = " .
$ilDB->
quote(time(),
'integer') .
" " .
134 "WHERE obj_id = " .
$ilDB->
quote($a_obj_id,
'integer') .
" " .
135 "AND usr_id = " .
$ilDB->
quote($a_usr_id,
'integer');
140 if ($a_no_origin && !$a_passed) {
147 $update_query =
"INSERT INTO obj_members (passed,obj_id,usr_id,notification,blocked,origin,origin_ts) " .
149 $ilDB->
quote((
int) $a_passed,
'integer') .
", " .
156 ON DUPLICATE KEY UPDATE 157 passed = VALUES(passed), 158 origin = VALUES(origin), 159 origin_ts = VALUES(origin_ts) 162 if (strlen($update_query)) {
165 $ilAppEventHandler->raise(
'Modules/Course',
'participantHasPassedCourse', array(
166 'obj_id' => $a_obj_id,
167 'usr_id' => $a_usr_id,
175 $sql =
"SELECT origin, origin_ts" .
176 " FROM obj_members" .
177 " WHERE obj_id = " . $this->ilDB->quote($this->obj_id,
"integer") .
178 " AND usr_id = " . $this->ilDB->quote($a_usr_id,
"integer");
179 $set = $this->ilDB->query($sql);
180 $row = $this->ilDB->fetchAssoc($set);
181 if ($row && $row[
"origin"]) {
183 "user_id" => (
int) $row[
"origin"],
190 public function sendNotification(
int $a_type,
int $a_usr_id,
bool $a_force_sending_mail =
false): void
193 $mail->forceSendingMail($a_force_sending_mail);
198 $mail->setRefId($this->ref_id);
199 $mail->setRecipients(array($a_usr_id));
205 $mail->setRefId($this->ref_id);
206 $mail->setRecipients(array($a_usr_id));
212 $mail->setRefId($this->ref_id);
213 $mail->setRecipients(array($a_usr_id));
219 $mail->setRefId($this->ref_id);
220 $mail->setRecipients(array($a_usr_id));
226 $mail->setRefId($this->ref_id);
227 $mail->setRecipients(array($a_usr_id));
233 $mail->setRefId($this->ref_id);
234 $mail->setRecipients(array($a_usr_id));
240 $mail->setRefId($this->ref_id);
241 $mail->setRecipients(array($a_usr_id));
247 $mail->setRefId($this->ref_id);
248 $mail->setRecipients(array($a_usr_id));
254 $mail->setRefId($this->ref_id);
255 $mail->setRecipients(array($a_usr_id));
261 $pos = $wl->getPosition($a_usr_id);
264 $mail->setRefId($this->ref_id);
265 $mail->setRecipients(array($a_usr_id));
266 $mail->setAdditionalInformation(array(
'position' => $pos));
284 $mail->setAdditionalInformation(array(
'usr_id' => $a_usr_id));
285 $mail->setRefId($this->ref_id);
294 $mail->setAdditionalInformation(array(
'usr_id' => $a_usr_id));
295 $mail->setRefId($this->ref_id);
304 $mail->setAdditionalInformation(array(
'usr_id' => $a_usr_id));
305 $mail->setRefId($this->ref_id);
314 $ilDB = $DIC->database();
315 $sql =
"SELECT origin_ts FROM obj_members" .
316 " WHERE usr_id = " .
$ilDB->
quote($a_usr_id,
"integer") .
317 " AND obj_id = " .
$ilDB->
quote($a_obj_id,
"integer") .
318 " AND passed = " .
$ilDB->
quote(1,
"integer");
321 if ((
$res[
"origin_ts"] ?? 0) > 0) {
322 return date(
"Y-m-d H:i:s",
$res[
"origin_ts"]);
331 $ilDB = $DIC->database();
332 $sql =
"SELECT usr_id,obj_id FROM obj_members" .
333 " WHERE " .
$ilDB->
in(
"usr_id", $a_usr_ids,
false,
"integer") .
334 " AND " .
$ilDB->
in(
"obj_id", $a_obj_ids,
false,
"integer") .
335 " AND passed = " .
$ilDB->
quote(1,
"integer");
339 $row[
'usr_id'] = (
int) $row[
'usr_id'];
340 $row[
'obj_id'] = (
int) $row[
'obj_id'];
const TYPE_NOTIFICATION_UNSUBSCRIBE
const TYPE_ADMISSION_MEMBER
const TYPE_STATUS_CHANGED
const TYPE_BLOCKED_MEMBER
const TYPE_ACCEPTED_SUBSCRIPTION_MEMBER
const TYPE_WAITING_LIST_MEMBER
fetchAssoc(ilDBStatement $statement)
const TYPE_DISMISS_MEMBER
const TYPE_REFUSED_SUBSCRIPTION_MEMBER
static _getAllReferences(int $id)
get all reference ids for object ID
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const TYPE_NOTIFICATION_REGISTRATION_REQUEST
quote($value, string $type)
const TYPE_UNBLOCKED_MEMBER
const TYPE_NOTIFICATION_ADMINS
static getPassedUsersForObjects(array $a_obj_ids, array $a_usr_ids)
sendNotification(int $a_type, int $a_usr_id, bool $a_force_sending_mail=false)
addRecommendation(int $a_usr_id)
Add desktop item public.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupTitle(int $obj_id)
static _getInstanceByObjId(int $a_obj_id)
__construct(int $a_obj_id)
const TYPE_NOTIFICATION_ADMINS_REGISTRATION_REQUEST
query(string $query)
Run a (read-only) Query on the database.
add(int $a_usr_id, int $a_role)
const TYPE_NOTIFICATION_REGISTRATION
sendSubscriptionRequestToAdmins(int $a_usr_id)
in(string $field, array $values, bool $negate=false, string $type="")
Base class for course and group participants.
static getDateTimeOfPassed(int $a_obj_id, int $a_usr_id)
sendNotificationToAdmins(int $a_usr_id)
__construct(Container $dic, ilPlugin $plugin)
getNotificationRecipients()
Get admin, tutor which have notification enabled.
getPassedInfo(int $a_usr_id)
static getMemberRoles(int $a_ref_id)
updatePassed(int $a_usr_id, bool $a_passed, bool $a_manual=false, bool $a_no_origin=false)
manipulate(string $query)
Run a (write) Query on the database.
sendUnsubscribeNotificationToAdmins(int $a_usr_id)
const TYPE_UNSUBSCRIBE_MEMBER
const TYPE_SUBSCRIBE_MEMBER
static _updatePassed(int $a_obj_id, int $a_usr_id, bool $a_passed, bool $a_manual=false, bool $a_no_origin=false)
addSubscriber(int $a_usr_id)