ILIAS  release_4-3 Revision
 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  const TYPE_BLOG = 4;
22 
23  const THRESHOLD = 180; // time between mails in minutes
24 
33  public static function hasNotification($type, $user_id, $id)
34  {
35  global $ilDB;
36 
37  $set = $ilDB->query("SELECT user_id FROM notification".
38  " WHERE type = ".$ilDB->quote($type, "integer").
39  " AND user_id = ".$ilDB->quote($user_id, "integer").
40  " AND id = ".$ilDB->quote($id, "integer"));
41  return (bool)$ilDB->numRows($set);
42  }
43 
53  public static function getNotificationsForObject($type, $id, $page_id = null, $ignore_threshold = false)
54  {
55  global $ilDB;
56 
57  $sql = "SELECT user_id FROM notification".
58  " WHERE type = ".$ilDB->quote($type, "integer").
59  " AND id = ".$ilDB->quote($id, "integer");
60  if(!$ignore_threshold)
61  {
62  $sql .= " AND (last_mail < ".$ilDB->quote(date("Y-m-d H:i:s",
63  strtotime("-".self::THRESHOLD."minutes")), "timestamp").
64  " OR last_mail IS NULL";
65  if($page_id)
66  {
67  $sql .= " OR page_id <> ".$ilDB->quote($page_id, "integer");
68  }
69  $sql .= ")";
70  }
71  $user = array();
72  $set = $ilDB->query($sql);
73  while($row = $ilDB->fetchAssoc($set))
74  {
75  $user[] = $row["user_id"];
76  }
77  return $user;
78  }
79 
89  public static function setNotification($type, $user_id, $id, $status = true)
90  {
91  global $ilDB;
92 
93  if(!$status)
94  {
95  $ilDB->query("DELETE FROM notification".
96  " WHERE type = ".$ilDB->quote($type, "integer").
97  " AND user_id = ".$ilDB->quote($user_id, "integer").
98  " AND id = ".$ilDB->quote($id, "integer"));
99  }
100  else
101  {
102  $fields = array(
103  "type" => array("integer", $type),
104  "user_id" => array("integer", $user_id),
105  "id" => array("integer", $id)
106  );
107  $ilDB->replace("notification", $fields, array());
108  }
109  }
110 
119  public static function updateNotificationTime($type, $id, array $user_ids, $page_id = false)
120  {
121  global $ilDB;
122 
123  $sql = "UPDATE notification".
124  " SET last_mail = ".$ilDB->quote(date("Y-m-d H:i:s"), "timestamp");
125 
126  if($page_id)
127  {
128  $sql .= ", page_id = ".$ilDB->quote($page_id, "integer");
129  }
130 
131  $sql .= " WHERE type = ".$ilDB->quote($type, "integer").
132  " AND id = ".$ilDB->quote($id, "integer").
133  " AND ".$ilDB->in("user_id", $user_ids, false, "integer");
134 
135  $ilDB->query($sql);
136  }
137 
144  public static function removeForObject($type, $id)
145  {
146  global $ilDB;
147 
148  $ilDB->query("DELETE FROM notification".
149  " WHERE type = ".$ilDB->quote($type, "integer").
150  " AND id = ".$ilDB->quote($id, "integer"));
151  }
152 
158  public static function removeForUser($user_id)
159  {
160  global $ilDB;
161 
162  $ilDB->query("DELETE FROM notification".
163  " WHERE user_id = ".$ilDB->quote($user_id, "integer"));
164  }
165 }
166 
167 ?>