4require_once
'Modules/Forum/classes/class.ilObjForum.php';
5require_once
'Modules/Forum/classes/class.ilForum.php';
39 $this->lng =
$DIC->language();
40 $this->db =
$DIC->database();
41 $this->
user = $DIC->user();
43 $this->forum_id =
$DIC[
'ilObjDataCache']->lookupObjId(
$ref_id);
48 $this->notification_id = $a_notification_id;
56 $this->user_id = $a_user_id;
65 $this->forum_id = $a_forum_id;
74 $this->thread_id = $a_thread_id;
84 $this->admin_force = $a_admin_force;
94 $this->user_toggle = $a_user_toggle;
103 $this->ref_id = $a_ref_id;
113 $this->user_id_noti = $a_user_id_noti;
118 return $this->user_id_noti;
123 $res = $this->db->queryF(
125 SELECT admin_force_noti FROM frm_notification
128 AND user_id_noti > %s ',
129 array(
'integer',
'integer',
'integer'),
133 while (
$row = $this->db->fetchAssoc(
$res)) {
134 return $row[
'admin_force_noti'];
140 $res = $this->db->queryF(
142 SELECT user_toggle_noti FROM frm_notification
145 AND user_id_noti > %s',
146 array(
'integer',
'integer',
'integer'),
150 while (
$row = $this->db->fetchAssoc(
$res)) {
151 return $row[
'user_toggle_noti'];
157 $next_id = $this->db->nextId(
'frm_notification');
158 $this->db->manipulateF(
160 INSERT INTO frm_notification
161 (notification_id, user_id, frm_id, admin_force_noti, user_toggle_noti, user_id_noti)
162 VALUES(%s,%s,%s,%s,%s,%s)',
163 array(
'integer',
'integer',
'integer',
'integer',
'integer',
'integer'),
170 $this->db->manipulateF(
172 DELETE FROM frm_notification
175 AND admin_force_noti = %s
176 AND user_id_noti > %s' ,
177 array(
'integer',
'integer',
'integer',
'integer'),
184 $this->db->manipulateF(
186 DELETE FROM frm_notification
189 AND admin_force_noti = %s
190 AND user_toggle_noti = %s
191 AND user_id_noti > %s' ,
192 array(
'integer',
'integer',
'integer',
'integer',
'integer'),
199 $this->db->manipulateF(
201 UPDATE frm_notification
202 SET user_toggle_noti = %s
205 AND admin_force_noti = %s',
206 array(
'integer',
'integer',
'integer',
'integer'),
220 include_once
'Modules/Forum/classes/class.ilForumProperties.php';
224 foreach ($node_data as
$data) {
230 $frm_noti->setUserId(
$ilUser->getId());
238 $frm_noti->setAdminForce(1);
243 $frm_noti->setForumId(
$data[
'obj_id']);
244 if ($frm_noti->existsNotification() ==
false) {
245 $frm_noti->insertAdminForce();
258 include_once
'Modules/Forum/classes/class.ilForumModerators.php';
260 foreach ($node_data as
$data) {
264 $moderator_ids = $objFrmMods->getCurrentModerators();
269 $frm_noti->setUserId(
$ilUser->getId());
272 $frm_noti->setForumId(
$data[
'obj_id']);
273 if (!in_array($frm_noti->getUserId(), $moderator_ids)) {
274 $frm_noti->deleteAdminForce();
285 if (!array_key_exists(
$ref_id, self::$node_data_cache)) {
287 self::$node_data_cache[
$ref_id] =
$DIC->repositoryTree()->getChildsByType(
$ref_id,
'frm');
290 return self::$node_data_cache[
$ref_id];
301 $parent_ref_id =
$DIC->repositoryTree()->getParentId($a_ref_id);
304 if ($parent_obj->getType() ==
'crs' || $parent_obj->getType() ==
'grp') {
305 return $parent_obj->getType();
318 $ilObjDataCache =
$DIC[
'ilObjDataCache'];
320 if (!$a_parameter[
'tree'] ==
'tree') {
324 $ref_id = $a_parameter[
'source_id'];
332 DELETE FROM frm_notification
334 AND admin_force_noti = %s',
335 array(
'integer',
'integer'),
348 $tree =
$DIC->repositoryTree();
350 $parent_ref_id = $tree->getParentId(
$ref_id);
353 if ($parent_obj->getType() ==
'crs') {
354 include_once
'Modules/Course/classes/class.ilCourseParticipants.php';
356 } elseif ($parent_obj->getType() ==
'grp') {
357 include_once
'Modules/Group/classes/class.ilGroupParticipants.php';
362 if ($parent_obj->getType() ==
'crs' || $parent_obj->getType() ==
'grp') {
364 $admin_ids = $oParticipants->getAdmins();
365 $tutor_ids = $oParticipants->getTutors();
367 $result = array_unique(array_merge($moderator_ids, $admin_ids, $tutor_ids));
374 $this->db->manipulateF(
376 UPDATE frm_notification
377 SET admin_force_noti = %s,
378 user_toggle_noti = %s
381 array(
'integer',
'integer',
'integer',
'integer'),
388 $this->db->manipulateF(
390 DELETE FROM frm_notification
392 AND user_id_noti > %s',
393 array(
'integer',
'integer'),
402 $query = $this->db->queryF(
404 SELECT * FROM frm_notification WHERE
410 while (
$row = $this->db->fetchAssoc(
$query)) {
427 'SELECT notification_id, user_id FROM frm_notification
430 ORDER BY user_id ASC',
431 array(
'integer',
'integer'),
432 array(0, $merge_source_thread_id)
435 $res_2 =
$ilDB->queryF(
436 'SELECT user_id FROM frm_notification
439 ORDER BY user_id ASC',
440 array(
'integer',
'integer'),
441 array(0, $merge_target_thread_id)
444 $users_already_notified =
$ilDB->fetchAssoc($res_2);
446 if (in_array(
$row[
'user_id'], $users_already_notified)) {
449 'DELETE FROM frm_notification WHERE notification_id = %s',
451 array(
$row[
'notification_id'])
457 array(
'thread_id' => array(
'integer', $merge_target_thread_id)),
458 array(
'thread_id' => array(
'integer', $merge_source_thread_id)
470 $res = $this->db->queryF(
472 SELECT * FROM frm_notification
475 AND admin_force_noti = %s',
476 array(
'integer',
'integer',
'integer'),
480 if (
$row = $this->db->numRows(
$res) > 0) {
491 $sourceNotificationSettings =
new self($sourceRefId);
492 $records = $sourceNotificationSettings->read();
An exception for terminatinating execution or to throw for unit testing.
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
Class ilForumNotification.
setThreadId($a_thread_id)
setUserToggle($a_user_toggle)
deleteNotificationAllUsers()
__construct($ref_id)
Constructor @access public.
static getCachedNodeData($ref_id)
setNotificationId($a_notification_id)
isUserToggleNotification()
static checkForumsExistsDelete($ref_id, $user_id=0)
static _clearForcedForumNotifications($a_parameter)
cloneFromSource($sourceRefId)
static checkParentNodeTree($ref_id)
static checkForumsExistsInsert($ref_id, $user_id=0)
setUserIdNoti($a_user_id_noti)
static mergeThreadNotificiations($merge_source_thread_id, $merge_target_thread_id)
static _isParentNodeGrpCrs($a_ref_id)
isAdminForceNotification()
setAdminForce($a_admin_force)
static _isUserToggleNoti($a_obj_id)
static _isAdminForceNoti($a_obj_id)
static _getModerators($a_ref_id)
get all users assigned to local role il_frm_moderator_<frm_ref_id> (static)
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
foreach($_POST as $key=> $value) $res