source: extensions/Subscribe_to_comments/include/subscribe_to_comments.inc.php @ 21439

Last change on this file since 21439 was 21439, checked in by mistic100, 8 years ago

fix translation errors

File size: 10.5 KB
Line 
1<?php
2if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
3
4/**
5 * detect 'subscriptions' section and load the page
6 */
7function stc_detect_section()
8{
9  global $tokens, $page, $conf;
10 
11  if ($tokens[0] == 'subscriptions')
12  {
13    add_event_handler('loc_begin_page_header', 'stc_page_header');
14   
15    $page['section'] = 'subscriptions';
16    $page['title'] = l10n('Comments notifications');
17    $page['section_title'] = '<a href="'.get_absolute_root_url().'">'.l10n('Home').'</a>'.$conf['level_separator'].l10n('Comments notifications');
18  }
19}
20
21function stc_page_header()
22{
23  global $page;
24  $page['body_id'] = 'theSubscriptionsPage';
25}
26
27function stc_load_section()
28{
29  global $page;
30
31  if (isset($page['section']) and $page['section'] == 'subscriptions')
32  {
33    include(SUBSCRIBE_TO_PATH.'include/subscribtions_page.inc.php');
34  }
35}
36
37
38/**
39 * send notifications and/or add subscriber on comment insertion
40 * @param: array comment
41 */
42function stc_comment_insertion($comm)
43{
44  global $page, $template;
45 
46  if ($comm['action'] == 'validate')
47  {
48    send_comment_to_subscribers($comm);
49  }
50 
51  if ( !empty($_POST['stc_mode']) and $_POST['stc_mode'] != -1 )
52  {
53    if ($comm['action'] != 'reject')
54    {
55      if (isset($comm['image_id']))
56      {
57        switch ($_POST['stc_mode'])
58        {
59          case 'all-images':
60            subscribe_to_comments(@$_POST['email'], 'all-images');
61            break;
62          case 'album-images':
63            if (empty($page['category']['id'])) break;
64            subscribe_to_comments(@$_POST['email'], 'album-images', $page['category']['id']);
65            break;
66          case 'image':
67            subscribe_to_comments(@$_POST['email'], 'image', $comm['image_id']);
68            break;
69        }
70      }
71      else if (isset($comm['category_id']))
72      {
73        switch ($_POST['stc_mode'])
74        {
75          case 'all-albums':
76            subscribe_to_comments(@$_POST['email'], 'all-albums');
77            break;
78          case 'album':
79            subscribe_to_comments(@$_POST['email'], 'album', $comm['category_id']);
80            break;
81        }
82      }
83    }
84    else
85    {
86      $template->assign('STC_MODE', $_POST['stc_mode']);
87    }
88  }
89}
90
91
92/**
93 * send notifications on comment validation
94 * @param: array|int comment_id
95 * @param: string type (image|category)
96 */
97function stc_comment_validation($comm_ids, $type='image')
98{
99  if (!is_array($comm_ids)) $comm_ids = array($comm_ids);
100 
101  if ($type == 'image')
102  {
103    $query = '
104SELECT
105    id,
106    image_id,
107    author,
108    content
109  FROM '.COMMENTS_TABLE.'
110  WHERE id IN('.implode(',', $comm_ids).')
111;';
112  }
113  else if ($type == 'category')
114  {
115    $query = '
116SELECT
117    id,
118    category_id,
119    author,
120    content
121  FROM '.COA_TABLE.'
122  WHERE id IN('.implode(',', $comm_ids).')
123;';
124  }
125 
126  $comms = hash_from_query($query, 'id');
127  foreach ($comms as $comm)
128  {
129    send_comment_to_subscribers($comm);
130  }
131}
132
133
134/**
135 * add field and link on picture page
136 */
137function stc_on_picture()
138{
139  global $template, $picture, $page, $user, $conf;
140 
141  // standalone subscription
142  if (isset($_POST['stc_submit']))
143  {
144    switch ($_POST['stc_mode'])
145    {
146      case 'all-images':
147        subscribe_to_comments(@$_POST['stc_mail'], 'all-images');
148        break;
149      case 'album-images':
150        if (empty($page['category']['id'])) break;
151        subscribe_to_comments(@$_POST['stc_mail'], 'album-images', $page['category']['id']);
152        break;
153      case 'image':
154        subscribe_to_comments(@$_POST['stc_mail'], 'image', $picture['current']['id']);
155        break;
156    }
157  }
158  else if (isset($_GET['stc_unsubscribe']))
159  {   
160    if (un_subscribe_to_comments(null, $_GET['stc_unsubscribe']))
161    {
162      array_push($page['infos'], l10n('Successfully unsubscribed your email address from receiving notifications.'));
163    }
164  }
165 
166  // if registered user with mail we check if already subscribed
167  if ( !is_a_guest() and !empty($user['email']) )
168  {
169    $subscribed = false;
170   
171    // registered to all pictures
172    if (!$subscribed)
173    {
174      $query = '
175SELECT id
176  FROM '.SUBSCRIBE_TO_TABLE.'
177  WHERE
178    email = "'.$user['email'].'"
179    AND type = "all-images"
180    AND validated = "true"
181;';
182      $result = pwg_query($query);
183     
184      if (pwg_db_num_rows($result))
185      {
186        list($stc_id) = pwg_db_fetch_row($result);
187        $template->assign(array(
188          'SUBSCRIBED' => 'all-images',
189          'UNSUB_LINK' => add_url_params($picture['current']['url'], array('stc_unsubscribe'=>$stc_id)),
190          ));
191        $subscribed = true;
192      }
193    }
194
195    // registered to pictures in this album
196    if ( !$subscribed and !empty($page['category']['id']) )
197    {
198      $query = '
199SELECT id
200  FROM '.SUBSCRIBE_TO_TABLE.'
201  WHERE
202    email = "'.$user['email'].'"
203    AND element_id = '.$page['category']['id'].'
204    AND type = "album-images"
205    AND validated = "true"
206;';
207      $result = pwg_query($query);
208     
209      if (pwg_db_num_rows($result))
210      {
211        list($stc_id) = pwg_db_fetch_row($result);
212        $template->assign(array(
213          'SUBSCRIBED' => 'album-images',
214          'UNSUB_LINK' => add_url_params($picture['current']['url'], array('stc_unsubscribe'=>$stc_id)),
215          ));
216        $subscribed = true;
217      }
218    }
219   
220    // registered to this picture
221    if (!$subscribed)
222    {
223      $query = '
224SELECT id
225  FROM '.SUBSCRIBE_TO_TABLE.'
226  WHERE
227    email = "'.$user['email'].'"
228    AND element_id = '.$picture['current']['id'].'
229    AND type = "image"
230    AND validated = "true"
231;';
232      $result = pwg_query($query);
233     
234      if (pwg_db_num_rows($result))
235      {
236        list($stc_id) = pwg_db_fetch_row($result);
237        $template->assign(array(
238          'SUBSCRIBED' => 'image',
239          'UNSUB_LINK' => add_url_params($picture['current']['url'], array('stc_unsubscribe'=>$stc_id)),
240          ));
241        $subscribed = true;
242      }
243    }
244  }
245  else
246  {
247    $template->assign('STC_ASK_MAIL', true);
248  }
249 
250  $template->assign(array(
251    'STC_ON_PICTURE' => true,
252    'STC_ALLOW_ALBUM_IMAGES' => !empty($page['category']['id']),
253    'STC_ALLOW_GLOBAL' => $conf['Subscribe_to_Comments']['allow_global_subscriptions'] || is_admin(),
254    'SUBSCRIBE_TO_PATH' => SUBSCRIBE_TO_PATH,
255    ));
256 
257  $template->set_prefilter('picture', 'stc_main_prefilter');
258}
259
260
261/**
262 * add field and link on album page
263 */
264function stc_on_album()
265{
266  global $page, $template, $pwg_loaded_plugins, $user, $conf;
267 
268  if (
269      script_basename() != 'index' or !isset($page['section']) or
270      !isset($pwg_loaded_plugins['Comments_on_Albums']) or 
271      $page['section'] != 'categories' or !isset($page['category'])
272    )
273  {
274    return;
275  }
276 
277        // standalone subscription
278  if (isset($_POST['stc_submit']))
279  {
280    switch ($_POST['stc_mode'])
281    {
282      case 'all-albums':
283        subscribe_to_comments(@$_POST['stc_mail'], 'all-albums');
284        break;
285      case 'album':
286        subscribe_to_comments(@$_POST['stc_mail'], 'album', $page['category']['id']);
287        break;
288    }
289  }
290  else if (isset($_GET['stc_unsubscribe']))
291  {
292    if (un_subscribe_to_comments(null, $_GET['stc_unsubscribe']))
293    {
294      array_push($page['infos'], l10n('Successfully unsubscribed your email address from receiving notifications.'));
295    }
296  }
297 
298  // if registered user we check if already subscribed
299  if ( !is_a_guest() and !empty($user['email']) )
300  {
301    $element_url = make_index_url(array(
302      'section' => 'categories',
303      'category' => $page['category'],
304      ));
305         
306    $subscribed = false;
307   
308    // registered to all albums
309    if (!$subscribed)
310    {
311      $query = '
312SELECT id
313  FROM '.SUBSCRIBE_TO_TABLE.'
314  WHERE
315    email = "'.$user['email'].'"
316    AND type = "all-albums"
317    AND validated = "true"
318;';
319      $result = pwg_query($query);
320     
321      if (pwg_db_num_rows($result))
322      {
323        list($stc_id) = pwg_db_fetch_row($result);
324        $template->assign(array(
325          'SUBSCRIBED' => 'all-albums',
326          'UNSUB_LINK' => add_url_params($element_url, array('stc_unsubscribe'=>$stc_id)),
327          ));
328        $subscribed = true;
329      }
330    }
331   
332    // registered to this album
333    if (!$subscribed)
334    {
335      $query = '
336SELECT id
337  FROM '.SUBSCRIBE_TO_TABLE.'
338  WHERE
339    email = "'.$user['email'].'"
340    AND element_id = '.$page['category']['id'].'
341    AND type = "album"
342    AND validated = "true"
343;';
344      $result = pwg_query($query);
345     
346      if (pwg_db_num_rows($result))
347      {
348        list($stc_id) = pwg_db_fetch_row($result);
349        $template->assign(array(
350          'SUBSCRIBED' => 'album',
351          'UNSUB_LINK' => add_url_params($element_url, array('stc_unsubscribe'=>$stc_id)),
352          ));
353        $subscribed = true;
354      }
355    }
356  }
357  else
358  {
359    $template->assign('STC_ASK_MAIL', true);
360  }
361 
362  $template->assign(array(
363    'STC_ON_ALBUM' => true,
364    'STC_ALLOW_GLOBAL' => $conf['Subscribe_to_Comments']['allow_global_subscriptions'] || is_admin(),
365    'SUBSCRIBE_TO_PATH' => SUBSCRIBE_TO_PATH,
366    ));
367
368  $template->set_prefilter('comments_on_albums', 'stc_main_prefilter');
369}
370
371
372/**
373 * main prefilter
374 */
375function stc_main_prefilter($content, &$smarty)
376{
377  ## subscribe at any moment ##
378  $search = '{if isset($comments)}';
379  $replace = file_get_contents(SUBSCRIBE_TO_PATH.'template/form_standalone.tpl');
380  $content = str_replace($search, $replace.$search, $content);
381 
382  ## subscribe while add a comment ##
383  $search = '{$comment_add.CONTENT}</textarea></p>';
384  $replace = file_get_contents(SUBSCRIBE_TO_PATH.'template/form_comment.tpl');
385  $content = str_replace($search, $search.$replace, $content);
386 
387  return $content;
388}
389
390
391/**
392 * delete subscriptions to deleted images or categories
393 */
394function stc_delete_elements($ids)
395{
396  $query = '
397DELETE FROM '.SUBSCRIBE_TO_TABLE.'
398  WHERE
399    element_id IN ('.implode(',', $ids).')
400    AND type = "image"
401';
402  pwg_query($query);
403}
404function stc_delete_categories($ids)
405{
406  $query = '
407DELETE FROM '.SUBSCRIBE_TO_TABLE.'
408  WHERE
409    element_id IN ('.implode(',', $ids).')
410    AND (type = "album" OR type = "album-images")
411';
412  pwg_query($query);
413}
414
415
416/**
417 * add link to management page for registered users
418 */
419function stc_profile_link()
420{
421  global $template, $user;
422 
423  if (!empty($user['email']))
424  {
425    $template->assign('MANAGE_LINK', make_stc_url('manage', $user['email']) );
426    $template->set_prefilter('profile_content', 'stc_profile_link_prefilter');
427  }
428}
429function stc_profile_link_prefilter($content, &$smarty)
430{
431  $search = '<p class="bottomButtons">';
432  $replace = '<p style="font-size:1.1em;text-decoration:underline;"><a href="{$MANAGE_LINK}" rel="nofollow">{\'Manage my subscriptions\'|@translate}</a></p>';
433 
434  return str_replace($search, $replace.$search, $content);
435}
436
437?>
Note: See TracBrowser for help on using the repository browser.