Open Journal Systems  3.3.0
NotificationSubscriptionSettingsDAO.inc.php
1 <?php
2 
21 
28  function deleteNotificationSubscriptionSettings($notificationId, $userId, $settingName = null) {
29  $params = array((int) $notificationId, (int) $userId);
30  if ($settingName) $params[] = $settingName;
31 
32  return $this->update(
33  'DELETE FROM notification_subscription_settings
34  WHERE notification_id= ? AND user_id = ?' . isset($settingName) ? ' AND setting_name = ?' : '',
35  $params
36  );
37  }
38 
46  function &getNotificationSubscriptionSettings($settingName, $userId, $contextId) {
47  $result = $this->retrieve(
48  'SELECT setting_value FROM notification_subscription_settings WHERE user_id = ? AND setting_name = ? AND context = ?',
49  array((int) $userId, $settingName, (int) $contextId)
50  );
51 
52  $settings = array();
53  while (!$result->EOF) {
54  $row = $result->GetRowAssoc(false);
55  $settings[] = (int) $row['setting_value'];
56  $result->MoveNext();
57  }
58 
59  $result->Close();
60  return $settings;
61  }
62 
70  function updateNotificationSubscriptionSettings($settingName, $settings, $userId, $contextId) {
71  // Delete old settings first, then insert new settings
72  $this->update('DELETE FROM notification_subscription_settings WHERE user_id = ? AND setting_name = ? AND context = ?',
73  array((int) $userId, $settingName, (int) $contextId));
74 
75  foreach ($settings as $setting) {
76  $this->update(
77  'INSERT INTO notification_subscription_settings
78  (setting_name, setting_value, user_id, context, setting_type)
79  VALUES
80  (?, ?, ?, ?, ?)',
81  array(
82  $settingName,
83  (int) $setting,
84  (int) $userId,
85  (int) $contextId,
86  'int'
87  )
88  );
89  }
90  }
91 
98  function getUserIdByRSSToken($token, $contextId) {
99  $result = $this->retrieve(
100  'SELECT user_id FROM notification_subscription_settings WHERE setting_value = ? AND setting_name = ? AND context = ?',
101  array($token, 'token', (int) $contextId)
102  );
103 
104  $row = $result->GetRowAssoc(false);
105  $userId = $row['user_id'];
106 
107  $result->Close();
108  return $userId;
109  }
110 
117  function getRSSTokenByUserId($userId, $contextId) {
118  $result = $this->retrieve(
119  'SELECT setting_value FROM notification_subscription_settings WHERE user_id = ? AND setting_name = ? AND context = ?',
120  array((int) $userId, 'token', (int) $contextId)
121  );
122 
123  $row = $result->GetRowAssoc(false);
124  $tokenId = $row['setting_value'];
125 
126  $result->Close();
127  return $tokenId;
128  }
129 
136  function insertNewRSSToken($userId, $contextId) {
137  $token = uniqid(rand());
138 
139  // Recurse if this token already exists
140  if($this->getUserIdByRSSToken($token, $contextId)) return $this->insertNewRSSToken($userId, $contextId);
141 
142  $this->update(
143  'INSERT INTO notification_subscription_settings
144  (setting_name, setting_value, user_id, context, setting_type)
145  VALUES
146  (?, ?, ?, ?, ?)',
147  array(
148  'token',
149  $token,
150  (int) $userId,
151  (int) $contextId,
152  'string'
153  )
154  );
155 
156  return $token;
157  }
158 
159 }
160 
161 
NotificationSubscriptionSettingsDAO\deleteNotificationSubscriptionSettings
deleteNotificationSubscriptionSettings($notificationId, $userId, $settingName=null)
Definition: NotificationSubscriptionSettingsDAO.inc.php:28
NotificationSubscriptionSettingsDAO\getRSSTokenByUserId
getRSSTokenByUserId($userId, $contextId)
Definition: NotificationSubscriptionSettingsDAO.inc.php:117
DAO\retrieve
& retrieve($sql, $params=false, $callHooks=true)
Definition: DAO.inc.php:85
NotificationSubscriptionSettingsDAO\updateNotificationSubscriptionSettings
updateNotificationSubscriptionSettings($settingName, $settings, $userId, $contextId)
Definition: NotificationSubscriptionSettingsDAO.inc.php:70
DAO\update
update($sql, $params=false, $callHooks=true, $dieOnError=true)
Definition: DAO.inc.php:214
NotificationSubscriptionSettingsDAO\getUserIdByRSSToken
getUserIdByRSSToken($token, $contextId)
Definition: NotificationSubscriptionSettingsDAO.inc.php:98
NotificationSubscriptionSettingsDAO\insertNewRSSToken
insertNewRSSToken($userId, $contextId)
Definition: NotificationSubscriptionSettingsDAO.inc.php:136
DAO
Operations for retrieving and modifying objects from a database.
Definition: DAO.inc.php:31
NotificationSubscriptionSettingsDAO
Operations for retrieving and modifying user's notification settings. This class stores user settings...
Definition: NotificationSubscriptionSettingsDAO.inc.php:20
NotificationSubscriptionSettingsDAO\getNotificationSubscriptionSettings
& getNotificationSubscriptionSettings($settingName, $userId, $contextId)
Definition: NotificationSubscriptionSettingsDAO.inc.php:46