Changeset 12600


Ignore:
Timestamp:
11/11/11 14:56:45 (8 years ago)
Author:
mistic100
Message:

fix many bugs, and management page

Location:
extensions/Subscribe_to_comments
Files:
3 added
9 edited
1 moved

Legend:

Unmodified
Added
Removed
  • extensions/Subscribe_to_comments/include/functions.inc.php

    r12561 r12600  
    99{ 
    1010  global $conf, $page, $user; 
     11   
     12  if ( empty($comm) or !is_array($comm) ) 
     13  { 
     14    trigger_error('send_comment_to_subscribers: undefinided comm', E_USER_WARNING); 
     15    return false; 
     16  } 
    1117   
    1218  $type= isset($comm['category_id']) ? 'category' : 'image'; 
     
    3238  if ($type == 'image') 
    3339  { 
    34     // get image infos 
    35     $query = ' 
    36 SELECT 
    37     id, 
    38     name, 
    39     file 
    40   FROM '.IMAGES_TABLE.' 
    41   WHERE id = '.$comm['image_id'].' 
    42 ;'; 
    43     $element = pwg_db_fetch_assoc(pwg_query($query)); 
    44        
    45     if (empty($element['name'])) 
    46     { 
    47       $element['name'] = get_name_from_file($element['file']); 
    48     } 
    49      
    50     $url_params = array('image_id' => $element['id']); 
    51     if (!empty($page['category'])) 
    52     { 
    53       $url_params['section'] = 'categories'; 
    54       $url_params['category'] = $page['category']; 
    55     } 
    56  
    57     $element['url'] = make_picture_url($url_params); 
     40    $element = get_picture_infos($comm['image_id']); 
    5841  } 
    5942  else if ($type == 'category') 
    6043  { 
    61     // get category infos 
    62     $query = ' 
    63 SELECT 
    64     id, 
    65     name, 
    66     permalink 
    67   FROM '.CATEGORIES_TABLE.' 
    68   WHERE id = '.$comm['category_id'].' 
    69 ;'; 
    70     $element = pwg_db_fetch_assoc(pwg_query($query)); 
    71      
    72     $url_params['section'] = 'categories'; 
    73     $url_params['category'] = $element; 
    74      
    75     $element['url'] = make_index_url($url_params); 
     44    $element = get_category_infos($comm['category_id']); 
    7645  } 
    7746   
     
    10170  { 
    10271    $mail_args['content'] = $generic_content.' 
    103 <a href="'.make_stc_url('unsubscribe-'.$type, $email, $element['id']).'">Stop receiving notifications for this picture</a><br> 
    104 <a href="'.make_stc_url('unsubscribe-all', $email).'">Stop receiving all notifications</a><br> 
    105 '; 
    106 //<a href="'.make_stc_url('manage', $email).'">Manage my subscribtions</a> 
     72<a href="'.make_stc_url('unsubscribe-'.$type, $email, $element['id']).'">Stop receiving notifications</a><br> 
     73<a href="'.make_stc_url('manage', $email).'">Manage my subscribtions</a>'; 
    10774    pwg_mail($email, $mail_args); 
    10875  } 
     
    12087function subscribe_to_comments($element_id, $email, $type='image') 
    12188{ 
    122   global $page, $user, $conf, $template, $picture; 
    123    
    124   $infos = $errors = array(); 
     89  global $page, $conf, $user, $template, $picture; 
     90   
     91  if ( empty($element_id) or empty($type) ) 
     92  { 
     93    trigger_error('subscribe_to_comment: missing element_id and/or type', E_USER_WARNING); 
     94    return false; 
     95  } 
     96   
     97  // check email 
    12598  if ( is_a_guest() and empty($email) ) 
    12699  { 
    127     array_push($errors, l10n('Invalid email adress, your are not subscribed to comments.')); 
    128      
    129     $orig = $template->get_template_vars('errors'); 
    130     if (empty($orig)) $orig = array(); 
    131     $template->assign('errors', array_merge($orig, $errors)); 
    132      
    133     if ($type == 'category') $template->set_prefilter('index', 'coa_messages'); // here we use a prefilter existing in COA 
    134      
    135     return; 
     100    return false; 
    136101  } 
    137102  else if (!is_a_guest()) 
     
    142107  // don't care if already registered 
    143108  $query = ' 
    144 INSERT IGNORE INTO '.SUBSCRIBE_TO_TABLE.'( 
     109INSERT INTO '.SUBSCRIBE_TO_TABLE.'( 
    145110    email, 
    146111    '.$type.'_id, 
     
    154119    "'.(is_a_guest() ? "false" : "true").'" 
    155120  ) 
     121  ON DUPLICATE KEY UPDATE 
     122    registration_date = IF(validated="true", registration_date, NOW()), 
     123    validated = IF(validated="true", validated, "'.(is_a_guest() ? "false" : "true").'") 
    156124;'; 
    157125  pwg_query($query); 
    158126   
    159127  // send validation mail 
    160   if (is_a_guest() and pwg_db_insert_id() != 0) 
     128  if ( is_a_guest() and pwg_db_changes(null) != 0 ) 
    161129  { 
    162130    $element_name = ($type == 'image') ? $picture['current']['name'] : $page['category']['name']; 
     
    178146 
    179147    pwg_mail($email, $mail_args); 
    180     array_push($infos, l10n('Please check your email inbox to confirm your subscription.')); 
    181   } 
    182   // just displat confirmation message 
    183   else if (pwg_db_insert_id() != 0) 
    184   { 
    185     array_push($infos, l10n('You have been added to the list of subscribers for this '.($type=='image' ? 'picture' : 'album').'.')); 
    186   } 
    187    
    188    
    189   if (!empty($infos)) 
    190   { 
    191     $orig = $template->get_template_vars('infos'); 
    192     if (empty($orig)) $orig = array(); 
    193     $template->assign('infos', array_merge($orig, $infos)); 
    194      
    195     if ($type == 'category') $template->set_prefilter('index', 'coa_messages'); 
    196   } 
    197 } 
    198  
     148    return 'confirm_mail'; 
     149  } 
     150  // just display confirmation message 
     151  else if (pwg_db_changes(null) != 0) 
     152  { 
     153    return true; 
     154  } 
     155} 
     156 
     157/* 
     158 * remove an email from subscribers list 
     159 * @param int (image|category)_id 
     160 * @param string email 
     161 * @param string type (image|category) 
     162 */ 
     163function un_subscribe_to_comments($element_id, $email, $type='image') 
     164{ 
     165  global $template, $user; 
     166   
     167  if ( empty($element_id) or empty($type) ) 
     168  { 
     169    trigger_error('un_subscribe_to_comment: missing element_id and/or type', E_USER_WARNING); 
     170    return false; 
     171  } 
     172   
     173  // check email 
     174  if ( is_a_guest() and empty($email) ) 
     175  { 
     176    return false; 
     177  } 
     178  else if (!is_a_guest()) 
     179  { 
     180    $email = $user['email']; 
     181  } 
     182   
     183  // delete subscription 
     184  switch ($type) 
     185  { 
     186    case 'image' : 
     187    case 'category' : 
     188      $where_clause = $type.'_id = '.pwg_db_real_escape_string($element_id); 
     189    case 'all' : 
     190    { 
     191      $query = ' 
     192DELETE FROM '.SUBSCRIBE_TO_TABLE.' 
     193  WHERE  
     194    email = "'.pwg_db_real_escape_string($email).'" 
     195    '.(!empty($where_clause) ? 'AND '.$where_clause : null).' 
     196;'; 
     197      pwg_query($query); 
     198       
     199      return true; 
     200      break; 
     201    } 
     202  } 
     203   
     204  return false; 
     205} 
     206 
     207/* 
     208 * validate a subscription 
     209 * @param int (image|category)_id 
     210 * @param string email 
     211 * @param string type (image|category) 
     212 */ 
     213function validate_subscriptions($element_id, $email, $type='image') 
     214{ 
     215  if ( empty($element_id) or empty($email) or empty($type) ) 
     216  { 
     217    trigger_error('validate_subscriptions: missing element_id and/or email and/or type', E_USER_WARNING); 
     218    return false; 
     219  } 
     220   
     221  switch ($type) 
     222  { 
     223    case 'image' : 
     224    case 'category': 
     225      $where_clause = $type.'_id = '.pwg_db_real_escape_string($element_id); 
     226    case 'all' : 
     227    { 
     228       $query = ' 
     229UPDATE '.SUBSCRIBE_TO_TABLE.' 
     230  SET validated = "true" 
     231  WHERE  
     232    email = "'.pwg_db_real_escape_string($email).'" 
     233    '.(!empty($where_clause) ? 'AND '.$where_clause : null).' 
     234;'; 
     235      pwg_query($query); 
     236       
     237      if (pwg_db_changes(null) != 0) return true; 
     238      break; 
     239    } 
     240  } 
     241   
     242  return false; 
     243} 
    199244 
    200245/** 
     
    208253  if ( empty($action) or empty($email) ) 
    209254  { 
    210     trigger_error('make_stc_url missing action and/or mail', E_USER_WARNING); 
     255    trigger_error('make_stc_url: missing action and/or mail', E_USER_WARNING); 
    211256    return null; 
    212257  } 
     
    218263    'action' => $action, 
    219264    'email' => $email, 
    220     'key' => crypt_value($action.$email, $conf['secret_key']), 
    221265    ); 
    222266   
    223267  if (func_num_args() > 2) 
    224268  { 
    225     $url_params['param'] = func_get_arg(2); 
    226   } 
     269    $url_params['id'] = func_get_arg(2); 
     270  } 
     271   
     272  $url_params['key'] = crypt_value( 
     273    $action.$email.(isset($url_params['id'])?$url_params['id']:null),  
     274    $conf['secret_key'] 
     275    ); 
    227276   
    228277  $url = add_url_params( 
     
    235284} 
    236285 
     286/** 
     287 * get name and url of a picture 
     288 * @param int image_id 
     289 * @return array 
     290 */ 
     291function get_picture_infos($image_id, $absolute=false) 
     292{ 
     293  global $page; 
     294   
     295  $query = ' 
     296SELECT 
     297    id, 
     298    name, 
     299    file 
     300  FROM '.IMAGES_TABLE.' 
     301  WHERE id = '.$image_id.' 
     302;'; 
     303  $element = pwg_db_fetch_assoc(pwg_query($query)); 
     304     
     305  if (empty($element['name'])) 
     306  { 
     307    $element['name'] = get_name_from_file($element['file']); 
     308  } 
     309   
     310  $url_params = array('image_id' => $element['id']); 
     311  if ( !empty($page['category']) and !$absolute ) 
     312  { 
     313    $url_params['section'] = 'categories'; 
     314    $url_params['category'] = $page['category']; 
     315  } 
     316  $element['url'] = make_picture_url($url_params); 
     317   
     318  return $element; 
     319} 
     320 
     321/** 
     322 * get name and url of a category 
     323 * @param int cat_id 
     324 * @return array 
     325 */ 
     326function get_category_infos($cat_id) 
     327{ 
     328  $query = ' 
     329SELECT 
     330    id, 
     331    name, 
     332    permalink 
     333  FROM '.CATEGORIES_TABLE.' 
     334  WHERE id = '.$cat_id.' 
     335;'; 
     336  $element = pwg_db_fetch_assoc(pwg_query($query)); 
     337   
     338  $url_params['section'] = 'categories'; 
     339  $url_params['category'] = $element; 
     340  $element['url'] = make_index_url($url_params); 
     341   
     342  return $element; 
     343} 
    237344 
    238345/** 
  • extensions/Subscribe_to_comments/include/subscribe_to_comments.inc.php

    r12561 r12600  
    2929function stc_comment_insertion($comm) 
    3030{ 
    31   global $page; 
     31  global $page, $template; 
     32   
     33  $infos = $errors = array(); 
    3234   
    3335  if ($comm['action'] == 'validate') 
     
    4042    if (isset($comm['image_id'])) 
    4143    { 
    42       subscribe_to_comments($comm['image_id'], @$_POST['stc_mail'], 'image'); 
     44      $return = subscribe_to_comments($comm['image_id'], @$_POST['stc_mail'], 'image'); 
    4345    } 
    4446    else if (isset($comm['category_id'])) 
    4547    { 
    46       subscribe_to_comments($comm['category_id'], @$_POST['stc_mail'], 'category'); 
    47     } 
    48   } 
    49 } 
    50  
    51 function stc_comment_validation($comm_id, $type='image') 
    52 {  
    53   switch ($type) 
    54   { 
    55     case 'image': 
     48      $return = subscribe_to_comments($comm['category_id'], @$_POST['stc_mail'], 'category'); 
     49       
     50    } 
     51     
     52    if (isset($return)) 
     53    { 
     54      if ($return === 'confirm_mail') 
     55      { 
     56        array_push($infos, l10n('Please check your email inbox to confirm your subscription.')); 
     57      } 
     58      else if ($return === true) 
     59      { 
     60        array_push($infos, l10n('You have been added to the list of subscribers for this '.(isset($comm['image_id'])?'picture':'album').'.')); 
     61      } 
     62      else 
     63      { 
     64        array_push($errors, l10n('Invalid email adress, your are not subscribed to comments.')); 
     65      } 
     66       
     67       // messages management 
     68      if (!empty($errors)) 
     69      { 
     70        $errors_bak = $template->get_template_vars('errors'); 
     71        if (empty($errors_bak)) $errors_bak = array(); 
     72        $template->assign('errors', array_merge($errors_bak, $errors)); 
     73        $template->set_prefilter('index', 'coa_messages'); // here we use a prefilter existing in COA 
     74      } 
     75      if (!empty($infos)) 
     76      { 
     77        $infos_bak = $template->get_template_vars('infos'); 
     78        if (empty($infos_bak)) $infos_bak = array(); 
     79        $template->assign('infos', array_merge($infos_bak, $infos)); 
     80        $template->set_prefilter('index', 'coa_messages'); 
     81      } 
     82    } 
     83  } 
     84} 
     85 
     86function stc_comment_validation($comm_ids, $type='image') 
     87{ 
     88  if (!is_array($comm_ids)) $comm_ids = array($comm_ids); 
     89   
     90  foreach($comm_ids as $comm_id) 
     91  { 
     92    if ($type == 'image') 
    5693    { 
    5794      $query = ' 
     
    64101  WHERE id = '.$comm_id.' 
    65102;'; 
    66       break; 
    67     } 
    68      
    69     case 'category': 
     103    } 
     104    else if ($type == 'category') 
    70105    { 
    71106      $query = ' 
     
    78113  WHERE id = '.$comm_id.' 
    79114;'; 
    80       break; 
    81     } 
    82   } 
    83    
    84   $comm = pwg_db_fetch_assoc(pwg_query($query)); 
    85   send_comment_to_subscribers($comm); 
     115    } 
     116     
     117    $comm = pwg_db_fetch_assoc(pwg_query($query)); 
     118    send_comment_to_subscribers($comm); 
     119  } 
    86120} 
    87121 
     
    92126function stc_on_picture() 
    93127{ 
    94   global $template, $picture; 
     128  global $template, $picture, $page; 
     129   
     130  $infos = $array = array(); 
    95131   
    96132  if (isset($_POST['stc_check_stdl'])) 
    97133  { 
    98     subscribe_to_comments($picture['current']['id'], @$_POST['stc_mail_stdl'], 'image'); 
     134    $return = subscribe_to_comments($picture['current']['id'], @$_POST['stc_mail_stdl'], 'image'); 
     135    if ($return === 'confirm_mail') 
     136    { 
     137      array_push($infos, l10n('Please check your email inbox to confirm your subscription.')); 
     138    } 
     139    else if ($return === true) 
     140    { 
     141      array_push($infos, l10n('You have been added to the list of subscribers for this picture.')); 
     142    } 
     143    else 
     144    { 
     145      array_push($errors, l10n('Invalid email adress, your are not subscribed to comments.')); 
     146    } 
     147  } 
     148  else if (isset($_GET['stc_unsubscribe'])) 
     149  { 
     150    if (un_subscribe_to_comments($picture['current']['id'], null, 'image')) 
     151    { 
     152      array_push($infos, l10n('Successfully unsubscribed your email address from receiving notifications.')); 
     153    } 
     154  } 
     155   
     156  // messages management 
     157  if (!empty($errors)) 
     158  { 
     159    $errors_bak = $template->get_template_vars('errors'); 
     160    if (empty($errors_bak)) $errors_bak = array(); 
     161    $template->assign('errors', array_merge($errors_bak, $errors)); 
     162  } 
     163  if (!empty($infos)) 
     164  { 
     165    $infos_bak = $template->get_template_vars('infos'); 
     166    if (empty($infos_bak)) $infos_bak = array(); 
     167    $template->assign('infos', array_merge($infos_bak, $infos)); 
    99168  } 
    100169   
     
    104173function stc_on_picture_prefilter($template, &$smarty) 
    105174{ 
    106   global $user, $picture; 
    107    
    108   ## subscribe while add a comment ## 
    109   $search[0] = '<input type="submit" value="{\'Submit\'|@translate}">'; 
    110    
    111   $replace[0] = ' 
    112 <label>{\'Subscribe to new comments\'|@translate} <input type="checkbox" name="stc_check" value="1"></label>'; 
    113   if (is_a_guest()) 
    114   { 
    115     $replace[0].= '  
    116 <label id="stc_mail" style="display:none;">{\'Email address\'|@translate} <input type="text" name="stc_mail"></label> 
    117 {footer_script require="jquery"}{literal} 
    118 jQuery(document).ready(function() { 
    119   $("input[name=stc_check]").change(function() { 
    120     if ($(this).is(":checked")) $("#stc_mail").css("display", ""); 
    121     else $("#stc_mail").css("display", "none"); 
    122   }); 
    123 }); 
    124 {/literal}{/footer_script}'; 
    125   } 
    126   $replace[0].= $search[0]; 
    127    
     175  global $user, $picture;   
    128176   
    129177  ## subscribe at any moment ## 
     
    143191    email = "'.$user['email'].'" 
    144192    AND image_id = '.$picture['current']['id'].' 
     193    AND validated = "true" 
    145194;'; 
    146195    if (pwg_db_num_rows(pwg_query($query))) 
     
    148197      $replace[1].= ' 
    149198    {\'You are currently subscribed to comments of this picture.\'|@translate} 
    150     <a href="'.make_stc_url('unsubscribe-image', $user['email'], $picture['current']['id']).'">{\'Unsubscribe\'|@translate}'; 
     199    <a href="'.add_url_params($picture['current']['url'], array('stc_unsubscribe'=>'1')).'">{\'Unsubscribe\'|@translate}'; 
    151200      $no_form = true; 
    152201    } 
     
    194243</form>'; 
    195244 
    196   return str_replace($search, $replace, $template); 
    197 } 
    198  
    199  
    200 /** 
    201  * add field and on album page 
    202  */ 
    203 function stc_on_album() 
    204 { 
    205   global $page, $template, $pwg_loaded_plugins; 
    206    
    207   if ( 
    208       script_basename() != 'index' or !isset($page['section']) or 
    209       !isset($pwg_loaded_plugins['Comments_on_Albums']) or  
    210       $page['section'] != 'categories' or !isset($page['category']) 
    211     ) 
    212   { 
    213     return; 
    214   } 
    215    
    216   if (isset($_POST['stc_check_stdl'])) 
    217   { 
    218     subscribe_to_comments($page['category']['id'], @$_POST['stc_mail_stdl'], 'category'); 
    219   } 
    220    
    221   $template->set_prefilter('comments_on_albums', 'stc_on_album_prefilter'); 
    222 } 
    223  
    224 function stc_on_album_prefilter($template, &$smarty) 
    225 { 
    226   global $user, $page; 
    227    
     245 
    228246  ## subscribe while add a comment ## 
    229247  $search[0] = '<input type="submit" value="{\'Submit\'|@translate}">'; 
    230    
    231   $replace[0] = ' 
     248  $replace[0] = null; 
     249   
     250  if (!isset($no_form)) 
     251  { 
     252    $replace[0].= ' 
    232253<label>{\'Subscribe to new comments\'|@translate} <input type="checkbox" name="stc_check" value="1"></label>'; 
     254  } 
    233255  if (is_a_guest()) 
    234256  { 
     
    246268  $replace[0].= $search[0]; 
    247269   
     270  return str_replace($search, $replace, $template); 
     271} 
     272 
     273 
     274/** 
     275 * add field and on album page 
     276 */ 
     277function stc_on_album() 
     278{ 
     279  global $page, $template, $pwg_loaded_plugins; 
     280   
     281  $infos = $errors = array(); 
     282   
     283  if ( 
     284      script_basename() != 'index' or !isset($page['section']) or 
     285      !isset($pwg_loaded_plugins['Comments_on_Albums']) or  
     286      $page['section'] != 'categories' or !isset($page['category']) 
     287    ) 
     288  { 
     289    return; 
     290  } 
     291   
     292  if (isset($_POST['stc_check_stdl'])) 
     293  { 
     294    $return = subscribe_to_comments($page['category']['id'], @$_POST['stc_mail_stdl'], 'category'); 
     295    if ($return === 'confirm_mail') 
     296    { 
     297      array_push($infos, l10n('Please check your email inbox to confirm your subscription.')); 
     298    } 
     299    else if ($return === true) 
     300    { 
     301      array_push($infos, l10n('You have been added to the list of subscribers for this album.')); 
     302    } 
     303    else 
     304    { 
     305      array_push($errors, l10n('Invalid email adress, your are not subscribed to comments.')); 
     306    } 
     307  } 
     308  else if (isset($_GET['stc_unsubscribe'])) 
     309  { 
     310    if (un_subscribe_to_comments($page['category']['id'], null, 'category')) 
     311    { 
     312      array_push($infos, l10n('Successfully unsubscribed your email address from receiving notifications.')); 
     313    } 
     314  } 
     315   
     316  // messages management 
     317  if (!empty($errors)) 
     318  { 
     319    $errors_bak = $template->get_template_vars('errors'); 
     320    if (empty($errors_bak)) $errors_bak = array(); 
     321    $template->assign('errors', array_merge($errors_bak, $errors)); 
     322    $template->set_prefilter('index', 'coa_messages'); // here we use a prefilter existing in COA 
     323  } 
     324  if (!empty($infos)) 
     325  { 
     326    $infos_bak = $template->get_template_vars('infos'); 
     327    if (empty($infos_bak)) $infos_bak = array(); 
     328    $template->assign('infos', array_merge($infos_bak, $infos)); 
     329    $template->set_prefilter('index', 'coa_messages'); 
     330  } 
     331   
     332  $template->set_prefilter('comments_on_albums', 'stc_on_album_prefilter'); 
     333} 
     334 
     335function stc_on_album_prefilter($template, &$smarty) 
     336{ 
     337  global $user, $page;   
    248338   
    249339  ## subscribe at any moment ## 
     
    263353    email = "'.$user['email'].'" 
    264354    AND category_id = '.$page['category']['id'].' 
     355    AND validated = "true" 
    265356;'; 
    266357    if (pwg_db_num_rows(pwg_query($query))) 
    267358    { 
     359      $url_params['section'] = 'categories'; 
     360      $url_params['category'] = $page['category']; 
     361       
     362      $element_url = make_index_url($url_params); 
     363     
    268364      $replace[1].= ' 
    269365    {\'You are currently subscribed to comments of this album.\'|@translate} 
    270     <a href="'.make_stc_url('unsubscribe-category', $user['email'], $page['category']['id']).'">{\'Unsubscribe\'|@translate}'; 
     366    <a href="'.add_url_params($element_url, array('stc_unsubscribe'=>'1')).'">{\'Unsubscribe\'|@translate}'; 
    271367      $no_form = true; 
    272368    } 
     
    314410</form>'; 
    315411 
     412 
     413  ## subscribe while add a comment ## 
     414  $search[0] = '<input type="submit" value="{\'Submit\'|@translate}">'; 
     415  $replace[0] = null; 
     416   
     417  if (!isset($no_form)) 
     418  { 
     419    $replace[0].= ' 
     420<label>{\'Subscribe to new comments\'|@translate} <input type="checkbox" name="stc_check" value="1"></label>'; 
     421  } 
     422  if (is_a_guest()) 
     423  { 
     424    $replace[0].= '  
     425<label id="stc_mail" style="display:none;">{\'Email address\'|@translate} <input type="text" name="stc_mail"></label> 
     426{footer_script require="jquery"}{literal} 
     427jQuery(document).ready(function() { 
     428  $("input[name=stc_check]").change(function() { 
     429    if ($(this).is(":checked")) $("#stc_mail").css("display", ""); 
     430    else $("#stc_mail").css("display", "none"); 
     431  }); 
     432}); 
     433{/literal}{/footer_script}'; 
     434  } 
     435  $replace[0].= $search[0]; 
     436 
    316437  return str_replace($search, $replace, $template); 
    317438} 
    318439 
     440 
     441/** 
     442 * add link to management page for registered users 
     443 */ 
     444function stc_menubar_apply($menu_ref_arr) 
     445{ 
     446  global $template; 
     447  $menu = &$menu_ref_arr[0]; 
     448   
     449  if ( !is_a_guest() and ($block = $menu->get_block('mbIdentification')) != null ) 
     450  { 
     451    $template->set_prefilter('menubar', 'stc_menubar_apply_prefilter');  
     452  } 
     453} 
     454 
     455function stc_menubar_apply_prefilter($content, &$smarty) 
     456{ 
     457  global $user; 
     458   
     459  $search = '{if isset($U_REGISTER)}'; 
     460  $replace = '<li><a href="'.make_stc_url('manage', $user['email']).'" title="{\'Manage my subscriptions\'|@translate}" rel="nofollow">{\'Manage my subscriptions\'|@translate}</a></li>'; 
     461  return str_replace($search, $replace.$search, $content); 
     462} 
    319463?> 
  • extensions/Subscribe_to_comments/include/subscribtions_page.inc.php

    r12560 r12600  
    77 
    88// check input parameters 
     9$_GET['verif_key'] = $_GET['action'].$_GET['email'].(isset($_GET['id'])?$_GET['id']:null); 
    910if (  
    1011  empty($_GET['action']) or empty($_GET['email']) or empty($_GET['key']) 
    11   or decrypt_value($_GET['key'], $conf['secret_key']) !== $_GET['action'].$_GET['email']   
     12  or decrypt_value($_GET['key'], $conf['secret_key']) !== $_GET['verif_key'] 
    1213  ) 
    1314{ 
    14   set_status_header(403); 
    15   array_push($errors, l10n('Bad query')); 
     15  $_GET['action'] = 'hacker'; 
     16} 
     17else 
     18{ 
     19  // sanitize inputs 
     20  if (isset($_GET['id'])) $_GET['id'] = pwg_db_real_escape_string($_GET['id']); 
     21  $_GET['email'] = pwg_db_real_escape_string($_GET['email']); 
     22 
     23  // unsubscribe 
     24  if (isset($_POST['unsubscribe'])) 
     25  { 
     26    if (un_subscribe_to_comments(!empty($_GET['id'])?$_GET['id']:'N/A', $_GET['email'], $_POST['unsubscribe'])) 
     27    { 
     28      array_push($infos, l10n('Successfully unsubscribed your email address from receiving notifications.')); 
     29    } 
     30    else 
     31    { 
     32      array_push($errors, l10n('Invalid email adress.')); 
     33    } 
     34     
     35    $_GET['action'] = 'manage'; 
     36  } 
     37  if (isset($_GET['unsubscribe'])) 
     38  { 
     39    $query = ' 
     40  DELETE FROM '.SUBSCRIBE_TO_TABLE.' 
     41    WHERE  
     42      id = '.pwg_db_real_escape_string($_GET['unsubscribe']).' 
     43      AND email = "'.$_GET['email'].'" 
     44  ;'; 
     45    pwg_query($query); 
     46     
     47    if (pwg_db_changes(null) != 0) 
     48    { 
     49      array_push($infos, l10n('Successfully unsubscribed your email address from receiving notifications.')); 
     50    } 
     51    else 
     52    { 
     53      array_push($errors, l10n('Invalid email adress.')); 
     54    } 
     55  } 
     56   
     57  $template->assign('MANAGE_LINK', make_stc_url('manage', $_GET['email'])); 
    1658} 
    1759 
    1860switch ($_GET['action']) 
    1961{ 
    20   /* unsubscribe */ 
    21   case 'unsubscribe-image' : 
    22     if (empty($where_clause)) $where_clause = 'image_id = '.pwg_db_real_escape_string($_GET['param']); 
    23   case 'unsubscribe-category': 
    24     if (empty($where_clause)) $where_clause = 'category_id = '.pwg_db_real_escape_string($_GET['param']); 
    25   case 'unsubcribe-all' : 
     62  /* validate */ 
     63  case 'validate-image' : 
    2664  { 
    27     $query = ' 
    28 DELETE FROM '.SUBSCRIBE_TO_TABLE.' 
    29   WHERE  
    30     email = "'.pwg_db_real_escape_string($_GET['email']).'" 
    31     '.(!empty($where_clause) ? 'AND '.$where_clause : null).' 
    32 ;'; 
    33     pwg_query($query); 
     65    if (validate_subscriptions($_GET['id'], $_GET['email'], 'image')) 
     66    { 
     67      array_push($infos, l10n('Your subscribtion has been validated, thanks you.')); 
     68    } 
     69    else 
     70    { 
     71      array_push($errors, l10n('Nothing to validate.')); 
     72    } 
    3473     
    35     array_push($infos, l10n('You have been successfully unsubscribed, good bye.')); 
     74    $element = get_picture_infos($_GET['id']); 
     75     
     76    $template->assign(array( 
     77      'validate' => 'image', 
     78      'element' => $element, 
     79      )); 
     80       
     81    break; 
     82  } 
     83  case 'validate-category': 
     84  { 
     85    if (validate_subscriptions($_GET['id'], $_GET['email'], 'category')) 
     86    { 
     87      array_push($infos, l10n('Your subscribtion has been validated, thanks you.')); 
     88    } 
     89    else 
     90    { 
     91      array_push($errors, l10n('Nothing to validate.')); 
     92    } 
     93     
     94    $element = get_category_infos($_GET['id']); 
     95     
     96    $template->assign(array( 
     97      'validate' => 'category', 
     98      'element' => $element, 
     99      )); 
    36100    break; 
    37101  } 
    38102   
    39   /* validate */ 
    40   case 'validate-image' : 
    41     if (empty($where_clause)) $where_clause = 'image_id = '.pwg_db_real_escape_string($_GET['param']); 
    42   case 'validate-category': 
    43     if (empty($where_clause)) $where_clause = 'category_id = '.pwg_db_real_escape_string($_GET['param']); 
    44   case 'validate-all' : 
    45   { 
    46      $query = ' 
    47 UPDATE '.SUBSCRIBE_TO_TABLE.' 
    48   SET validated = "true" 
    49   WHERE  
    50     email = "'.pwg_db_real_escape_string($_GET['email']).'" 
    51     '.(!empty($where_clause) ? 'AND '.$where_clause : null).' 
    52 ;'; 
    53     pwg_query($query); 
     103  /* unsubscribe */ 
     104  case 'unsubscribe-image' : 
     105  {   
     106    $element = get_picture_infos($_GET['id']); 
    54107     
    55     array_push($infos, l10n('Your subscribtion has been validated, thanks you.')); 
     108    $template->assign(array( 
     109      'unsubscribe_form' => 'image', 
     110      'element' => $element, 
     111      )); 
     112     
     113    break; 
     114  } 
     115  case 'unsubscribe-category': 
     116  {   
     117    $element = get_category_infos($_GET['id']); 
     118     
     119    $template->assign(array( 
     120      'unsubscribe_form' => 'category', 
     121      'element' => $element, 
     122      )); 
     123     
    56124    break; 
    57125  } 
     
    60128  case 'manage' : 
    61129  { 
     130    $query = ' 
     131SELECT * 
     132  FROM '.SUBSCRIBE_TO_TABLE.' 
     133  WHERE  
     134    email = "'.$_GET['email'].'" 
     135    AND validated = "true" 
     136  ORDER BY registration_date DESC 
     137;'; 
     138    $result = pwg_query($query); 
     139     
     140    if (pwg_db_num_rows($result) !== 0) 
     141    { 
     142      while ($subscription = pwg_db_fetch_assoc($result)) 
     143      { 
     144        if (!empty($subscription['image_id'])) 
     145        { 
     146          $subscription['infos'] = get_picture_infos($subscription['image_id']); 
     147          $subscription['type'] = 'image'; 
     148        } 
     149        else if (!empty($subscription['category_id'])) 
     150        { 
     151          $subscription['infos'] = get_category_infos($subscription['category_id']); 
     152          $subscription['type'] = 'category'; 
     153        } 
     154        $subscription['registration_date'] = format_date($subscription['registration_date'], true); 
     155        $template->append('subscriptions', $subscription); 
     156      } 
     157    } 
     158    else 
     159    { 
     160      $template->assign('subscriptions', 'none'); 
     161    } 
    62162    break; 
    63163  } 
    64164   
    65   default : 
     165  case 'hacker' : 
    66166  { 
    67167    set_status_header(403); 
     
    69169  } 
    70170} 
     171 
     172$template->assign(array( 
     173  'EMAIL' => $_GET['email'], 
     174  'SUBSCRIBE_TO_PATH' => SUBSCRIBE_TO_PATH, 
     175  )); 
    71176 
    72177$template->assign(array( 
  • extensions/Subscribe_to_comments/language/en_UK/description.txt

    r12560 r12600  
    1 This plugin allows you to subscribe to comments by mail. 
     1This plugin allows you to subscribe to comments by email. 
  • extensions/Subscribe_to_comments/language/en_UK/plugin.lang.php

    r12561 r12600  
    11<?php 
    22 
    3 $lang['Subscribe to new comments'] = 'Subscribe to new comments'; 
     3$lang['Please check your email inbox to confirm your subscription.'] = 'Please check your email inbox to confirm your subscription.'; 
     4$lang['You have been added to the list of subscribers for this album.'] = 'You have been added to the list of subscribers for this album.'; 
     5$lang['You have been added to the list of subscribers for this picture.'] = 'You have been added to the list of subscribers for this picture.'; 
    46$lang['Invalid email adress, your are not subscribed to comments.'] = 'Invalid email adress, your are not subscribed to comments.'; 
    5 $lang['Please check your email inbox to confirm your subscription.'] = 'Please check your email inbox to confirm your subscription.'; 
    6 $lang['You have been successfully unsubscribed, good bye.'] = 'You have been successfully unsubscribed, good bye.'; 
    7 $lang['Your subscribtion has been validated, thanks you.'] = 'Your subscribtion has been validated, thanks you.'; 
    8 $lang['You have been added to the list of subscribers for this picture.'] = 'You have been added to the list of subscribers for this picture.'; 
    9 $lang['You have been added to the list of subscribers for this album.'] = 'You have been added to the list of subscribers for this album.'; 
     7$lang['Successfully unsubscribed your email address from receiving notifications.'] = 'Successfully unsubscribed your email address from receiving notifications.'; 
    108$lang['You are currently subscribed to comments of this picture.'] = 'You are currently subscribed to comments of this picture.'; 
    119$lang['You are currently subscribed to comments of this album.'] = 'You are currently subscribed to comments of this album.'; 
    1210$lang['Unsubscribe'] = 'Unsubscribe'; 
     11$lang['Subscribe to new comments'] = 'Subscribe to new comments'; 
     12$lang['Invalid email adress.'] = 'Invalid email adress.'; 
     13$lang['Your subscribtion has been validated, thanks you.'] = 'Your subscribtion has been validated, thanks you.'; 
     14$lang['Nothing to validate.'] = 'Nothing to validate.'; 
     15$lang['Subscriptions of'] = 'Subscriptions of'; 
     16$lang['Unsubscribe from email notification'] = 'Unsubscribe from email notification'; 
     17$lang['Only unsubscribe notifications for comments from:'] = 'Only unsubscribe notifications for comments from:'; 
     18$lang['Unsubscribe from all email notifications'] = 'Unsubscribe from all email notifications'; 
     19$lang['Manage my subscriptions'] = 'Manage my subscriptions'; 
     20$lang['Item'] = 'Item'; 
     21$lang['Date'] = 'Date'; 
     22$lang['You are not subscribed to any comment.'] = 'You are not subscribed to any comment.'; 
    1323 
    1424?> 
  • extensions/Subscribe_to_comments/language/fr_FR/description.txt

    r12560 r12600  
    1 Ce plugin permet aux visiteurs de recevoir par mail les nouveaux commentaires sur une image. 
     1Ce plugin permet aux visiteurs de recevoir par email les nouveaux commentaires sur une image. 
  • extensions/Subscribe_to_comments/language/fr_FR/plugin.lang.php

    r12561 r12600  
    11<?php 
    22 
    3 $lang['Subscribe to new comments'] = 'S\'inscrire aux nouveaux commentaires'; 
    4 $lang['Invalid email adress, your are not subscribed to comments.'] = 'Email invalide, vous n\'avez pas été inscrit.'; 
    5 $lang['Please check your email inbox to confirm your subscription.'] = 'Veuillez consulter votre boite mail pour confirmer votre inscription.'; 
    6 $lang['You have been successfully unsubscribed, good bye.'] = 'Vous avez été supprimé de la liste de notification, au revoir.'; 
    7 $lang['Your subscribtion has been validated, thanks you.'] = 'Votre inscription a bien été validée, merci.'; 
    8 $lang['You have been added to the list of subscribers for this picture.'] = 'Vous avez été ajouté à la liste des inscrits pour les commentaires de cette photo.'; 
    9 $lang['You have been added to the list of subscribers for this album.'] = 'Vous avez été ajouté à la liste des inscrits pour les commentaires de cet album.'; 
     3$lang['Please check your email inbox to confirm your subscription.'] = 'Veillez consulter votre boite mail pour confirmer votre inscription.'; 
     4$lang['You have been added to the list of subscribers for this album.'] = 'Vous avez été ajouté à la liste des abonnés pour cet album.'; 
     5$lang['You have been added to the list of subscribers for this picture.'] = 'Vous avez été ajouté à la liste des abonnés pour cette photo.'; 
     6$lang['Invalid email adress, your are not subscribed to comments.'] = 'Addresse email invalide, vous n\'avez pas été inscrit.'; 
     7$lang['Successfully unsubscribed your email address from receiving notifications.'] = 'Inscription aux commentaires annulée avec succès.'; 
    108$lang['You are currently subscribed to comments of this picture.'] = 'Vous êtes actuellement inscrit aux commentaires de cette photo.'; 
    119$lang['You are currently subscribed to comments of this album.'] = 'Vous êtes actuellement inscrit aux commentaires de cet album.'; 
    1210$lang['Unsubscribe'] = 'Se désinscrire'; 
     11$lang['Subscribe to new comments'] = 'S\'inscrire aux nouveaux commentaires'; 
     12$lang['Invalid email adress.'] = 'Adress email invalide.'; 
     13$lang['Your subscribtion has been validated, thanks you.'] = 'Votre inscription a été validée, merci.'; 
     14$lang['Nothing to validate.'] = 'Rien à valider.'; 
     15$lang['Subscriptions of'] = 'Subscriptions of'; 
     16$lang['Unsubscribe from email notification'] = 'Se désinscrire de la notification par mail'; 
     17$lang['Only unsubscribe notifications for comments from:'] = 'Uniquement se désinscrire de :'; 
     18$lang['Unsubscribe from all email notifications'] = 'Ne plus recevoir aucune notification'; 
     19$lang['Manage my subscriptions'] = 'Gérer mes abonnements'; 
     20$lang['Item'] = 'Objet'; 
     21$lang['Date'] = 'Date'; 
     22$lang['You are not subscribed to any comment.'] = 'Vous n\'êtes inscrit à aucun commentaire.'; 
    1323 
    1424?> 
  • extensions/Subscribe_to_comments/main.inc.php

    r12561 r12600  
    33Plugin Name: Subscribe To Comments 
    44Version: auto 
    5 Description: This plugin allows you to subscribe to comments by mail. 
     5Description: This plugin allows you to subscribe to comments by email. 
    66Plugin URI: http://piwigo.org/ext/extension_view.php?eid=587 
    77Author: Mistic 
     
    1717define('SUBSCRIBE_TO_TABLE', $prefixeTable . 'subscribe_to_comments'); 
    1818 
    19 include_once(SUBSCRIBE_TO_PATH.'subscribe_to_comments.inc.php'); 
    2019include_once(SUBSCRIBE_TO_PATH.'include/functions.inc.php'); 
     20include_once(SUBSCRIBE_TO_PATH.'include/subscribe_to_comments.inc.php'); 
    2121 
    2222load_language('plugin.lang', SUBSCRIBE_TO_PATH); 
     
    3434add_event_handler('loc_end_index', 'stc_load_section'); 
    3535 
     36// menu link 
     37add_event_handler('blockmanager_apply', 'stc_menubar_apply'); 
     38 
    3639?> 
  • extensions/Subscribe_to_comments/maintain.inc.php

    r12560 r12600  
    99        pwg_query(' 
    1010CREATE TABLE IF NOT EXISTS `' . $prefixeTable . 'subscribe_to_comments` ( 
    11   `email` varchar(255) NOT NULL, 
    12   `image_id` mediumint(8) NOT NULL DEFAULT 0, 
    13   `category_id` smallint(5) NOT NULL DEFAULT 0, 
    14   `registration_date` datetime NOT NULL, 
    15   `validated` enum("true", "false") NOT NULL DEFAULT "false", 
    16   UNIQUE KEY `UNIQUE` (`mail`, `image_id`, `category_id`) 
     11  `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 
     12  `email` VARCHAR( 255 ) NOT NULL , 
     13  `image_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL DEFAULT "0", 
     14  `category_id` SMALLINT( 5 ) UNSIGNED NOT NULL DEFAULT "0", 
     15  `registration_date` DATETIME NOT NULL, 
     16  `validated` ENUM( "true", "false" ) NOT NULL DEFAULT "false", 
     17  UNIQUE KEY `UNIQUE` (`email`, `image_id`, `category_id`) 
    1718) DEFAULT CHARSET=utf8 
    1819;'); 
     
    3536   
    3637  /* delete table and config */ 
    37   // pwg_query('DROP TABLE `' . $prefixeTable . 'subscribe_to_comments`;'); 
    38   pwg_query('DELETE FROM `' . CONFIG_TABLE . '` WHERE param = "Subscribe_to_Comments";'); 
     38  pwg_query('DROP TABLE `' . $prefixeTable . 'subscribe_to_comments`;'); 
     39  // pwg_query('DELETE FROM `' . CONFIG_TABLE . '` WHERE param = "Subscribe_to_Comments";'); 
    3940} 
    4041?> 
  • extensions/Subscribe_to_comments/template/subscribtions_page.tpl

    r12560 r12600  
     1{combine_css path=$SUBSCRIBE_TO_PATH|@cat:'template/style.css'} 
     2 
    13{$MENUBAR} 
    24 
     
    68  <div class="titrePage"> 
    79    <ul class="categoryActions"> 
    8       {if isset($U_EDIT)} 
    9       <li><a href="{$U_EDIT}" title="{'edit'|@translate}" class="pwg-state-default pwg-button"> 
    10         <span class="pwg-icon pwg-icon-category-edit"> </span><span class="pwg-button-text">{'edit'|@translate}</span> 
    11       </a></li> 
    12       {/if} 
    1310      {if !empty($PLUGIN_INDEX_ACTIONS)}{$PLUGIN_INDEX_ACTIONS}{/if} 
    1411    </ul> 
    15     <h2>Subscriptions</h2> 
     12    <h2>{'Subscriptions of'|@translate} <i>{$EMAIL}</i></h2> 
    1613  </div> <!-- titrePage --> 
    1714   
     
    3431  </div> 
    3532  {/if} 
     33   
     34  {if !empty($unsubscribe_form)} 
     35  <form action="" method="post"> 
     36  <fieldset> 
     37    <legend>{'Unsubscribe from email notification'|@translate}</legend> 
     38     
     39    <p> 
     40      <label><input type="radio" name="unsubscribe" value="{$unsubscribe_form}" checked="checked"> {'Only unsubscribe notifications for comments from:'|@translate} <a href="{$element.url}" target="_blank">{$element.name}</a></label> 
     41      <label><input type="radio" name="unsubscribe" value="all"> {'Unsubscribe from all email notifications'|@translate}</label> 
     42      <br> 
     43      <label><input type="submit" value="Unsubscribe notifications for {$EMAIL}"></label> 
     44      <a href="{$MANAGE_LINK}">{'Manage my subscriptions'|@translate}</a> 
     45    </p> 
     46  </fieldset> 
     47  </form> 
     48  {/if} 
     49   
     50  {if !empty($validate)} 
     51  <p> 
     52    {if empty($errors)}<a href="{$element.url}">{'Return to item page'|@translate}</a><br>{/if} 
     53    <a href="{$MANAGE_LINK}">{'Manage my subscriptions'|@translate}</a> 
     54  </p> 
     55  {/if} 
     56   
     57  {if !empty($subscriptions) and $subscriptions != 'none'} 
     58  <form action="{$MANAGE_LINK}" method="post"> 
     59  <fieldset> 
     60    <legend>{'Manage my subscriptions'|@translate}</legend> 
     61    <table class="subscriptions_list"> 
     62      <tr class="throw"> 
     63        <th>{'Item'|@translate}</th> 
     64        <th>{'Date'|@translate}</th> 
     65        <th>{'Unsubscribe'|@translate}</th> 
     66      </tr> 
     67      {foreach from=$subscriptions item=sub name=subs_loop} 
     68      <tr class="{if $smarty.foreach.subs_loop.index is odd}row1{else}row2{/if}"> 
     69        <td> 
     70          {if $sub.type == 'image'} 
     71          <img src="{$SUBSCRIBE_TO_PATH}template/picture.png" alt="(P)"> 
     72          {else} 
     73          <img src="{$SUBSCRIBE_TO_PATH}template/folder_picture.png" alt="(A)"> 
     74          {/if}  
     75          <a href="{$sub.infos.url}">{$sub.infos.name}</a> 
     76        </td> 
     77        <td>{$sub.registration_date}</td> 
     78        <td><a href="{$MANAGE_LINK}&amp;unsubscribe={$sub.id}">{'Unsubscribe'|@translate}</a></td> 
     79      </tr> 
     80      {/foreach} 
     81    </table> 
     82     
     83    <p> 
     84      <input type="hidden" name="unsubscribe" value="all"> 
     85      <input type="submit" value="{'Unsubscribe from all email notifications'|@translate}"> 
     86    </p> 
     87  </fieldset> 
     88  {elseif !empty($subscriptions) and $subscriptions == 'none'} 
     89  <p> 
     90    {'You are not subscribed to any comment.'|@translate} 
     91  </p> 
     92  {/if} 
    3693 
    3794</div> <!-- content --> 
Note: See TracChangeset for help on using the changeset viewer.