ILIAS  eassessment Revision 61809
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilNotification.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
16 {
18  const TYPE_WIKI = 2;
19  const TYPE_WIKI_PAGE = 3;
20 
21  const THRESHOLD = 180; // time between mails in minutes
22 
31  public static function hasNotification($type, $user_id, $id)
32  {
33  global $ilDB;
34 
35  $set = $ilDB->query("SELECT user_id FROM notification".
36  " WHERE type = ".$ilDB->quote($type, "integer").
37  " AND user_id = ".$ilDB->quote($user_id, "integer").
38  " AND id = ".$ilDB->quote($id, "integer"));
39  return (bool)$ilDB->numRows($set);
40  }
41 
50  public static function getNotificationsForObject($type, $id, $page_id = false)
51  {
52  global $ilDB;
53 
54  $sql .= "SELECT user_id FROM notification".
55  " WHERE type = ".$ilDB->quote($type, "integer").
56  " AND id = ".$ilDB->quote($id, "integer").
57  " AND (last_mail < ".$ilDB->quote(date("Y-m-d H:i:s", strtotime("-".self::THRESHOLD."minutes")), "timestamp").
58  " OR last_mail IS NULL";
59  if($page_id)
60  {
61  $sql .= " OR page_id <> ".$ilDB->quote($page_id, "integer");
62  }
63  $sql .= ")";
64 
65  $user = array();
66  $set = $ilDB->query($sql);
67  while($row = $ilDB->fetchAssoc($set))
68  {
69  $user[] = $row["user_id"];
70  }
71  return $user;
72  }
73 
83  public static function setNotification($type, $user_id, $id, $status = true)
84  {
85  global $ilDB;
86 
87  if(!$status)
88  {
89  $ilDB->query("DELETE FROM notification".
90  " WHERE type = ".$ilDB->quote($type, "integer").
91  " AND user_id = ".$ilDB->quote($user_id, "integer").
92  " AND id = ".$ilDB->quote($id, "integer"));
93  }
94  else
95  {
96  $ilDB->query("REPLACE INTO notification (type, user_id, id)".
97  " VALUES(".$ilDB->quote($type, "integer").
98  ", ".$ilDB->quote($user_id, "integer").
99  ", ".$ilDB->quote($id, "integer").")");
100  }
101  }
102 
111  public static function updateNotificationTime($type, $id, array $user_ids, $page_id = false)
112  {
113  global $ilDB;
114 
115  $sql = "UPDATE notification".
116  " SET last_mail = ".$ilDB->quote(date("Y-m-d H:i:s"), "timestamp");
117 
118  if($page_id)
119  {
120  $sql .= ", page_id = ".$ilDB->quote($page_id, "integer");
121  }
122 
123  $sql .= " WHERE type = ".$ilDB->quote($type, "integer").
124  " AND id = ".$ilDB->quote($id, "integer").
125  " AND ".$ilDB->in("user_id", $user_ids, false, "integer");
126 
127  $ilDB->query($sql);
128  }
129 
136  public static function removeForObject($type, $id)
137  {
138  global $ilDB;
139 
140  $ilDB->query("DELETE FROM notification".
141  " WHERE type = ".$ilDB->quote($type, "integer").
142  " AND id = ".$ilDB->quote($id, "integer"));
143  }
144 
150  public static function removeForUser($user_id)
151  {
152  global $ilDB;
153 
154  $ilDB->query("DELETE FROM notification".
155  " WHERE user_id = ".$ilDB->quote($user_id, "integer"));
156  }
157 }
158 
159 ?>