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