4 require_once
'Modules/Forum/classes/class.ilObjForum.php';
5 require_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';
222 $node_data = self::getCachedNodeData(
$ref_id);
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();
256 $node_data = self::getCachedNodeData(
$ref_id);
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();
317 $ilDB = $DIC->database();
318 $ilObjDataCache = $DIC[
'ilObjDataCache'];
320 if (!$a_parameter[
'tree'] ==
'tree') {
324 $ref_id = $a_parameter[
'source_id'];
325 $is_parent = self::_isParentNodeGrpCrs(
$ref_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)) {
424 $ilDB = $DIC->database();
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',
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();
static _isParentNodeGrpCrs($a_ref_id)
deleteNotificationAllUsers()
isUserToggleNotification()
isAdminForceNotification()
setUserIdNoti($a_user_id_noti)
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
setAdminForce($a_admin_force)
static getCachedNodeData($ref_id)
Class ilForumNotification.
setThreadId($a_thread_id)
static mergeThreadNotificiations($merge_source_thread_id, $merge_target_thread_id)
setUserToggle($a_user_toggle)
static _clearForcedForumNotifications($a_parameter)
foreach($_POST as $key=> $value) $res
cloneFromSource($sourceRefId)
static _isUserToggleNoti($a_obj_id)
static _isAdminForceNoti($a_obj_id)
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
Create styles array
The data for the language used.
static checkForumsExistsDelete($ref_id, $user_id=0)
__construct($ref_id)
Constructor public.
static checkParentNodeTree($ref_id)
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
static _getModerators($a_ref_id)
get all users assigned to local role il_frm_moderator_<frm_ref_id> (static)
static checkForumsExistsInsert($ref_id, $user_id=0)
setNotificationId($a_notification_id)