Changeset 10097


Ignore:
Timestamp:
04/06/11 10:55:40 (9 years ago)
Author:
mistic100
Message:

bug:2152 Comments revalidation when modified

Location:
trunk
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/configuration.php

    r9544 r10097  
    6464    'comments_forall', 
    6565    'comments_validation', 
     66    'comments_update_validation', 
    6667    'email_admin_on_comment', 
    6768    'email_admin_on_comment_validation', 
  • trunk/admin/themes/default/template/configuration.tpl

    r8723 r10097  
    142142        <span class="property">{'Validation'|@translate}</span> 
    143143        <input type="checkbox" name="comments_validation" {if ($comments.comments_validation)}checked="checked"{/if}> 
     144      </label> 
     145    </li> 
     146     
     147    <li> 
     148      <label> 
     149        <span class="property">{'Update Validation'|@translate}</span> 
     150        <input type="checkbox" name="comments_update_validation" {if ($comments.comments_update_validation)}checked="checked"{/if}> 
    144151      </label> 
    145152    </li> 
  • trunk/include/functions_comment.inc.php

    r8728 r10097  
    264264        $GLOBALS['user']['id'].'\''; 
    265265    } 
     266     
     267    // should the updated comment must be validated 
     268    if (!$conf['comments_update_validation'] or is_admin()) 
     269    { 
     270      $comment_action='validate'; //one of validate, moderate, reject 
     271    } 
     272    else 
     273    { 
     274      $comment_action='moderate'; //one of validate, moderate, reject 
     275    } 
     276 
    266277    $query = ' 
    267278UPDATE '.COMMENTS_TABLE.' 
    268279  SET content = \''.$comment['content'].'\', 
    269       validation_date = now() 
     280      validated = \''.($comment_action=='validate' ? 'true':'false').'\', 
     281      validation_date = '.($comment_action=='validate' ? 'NOW()':'NULL').' 
    270282  WHERE id = '.$comment['comment_id']. 
    271283$user_where_clause.' 
    272284;'; 
    273285    $result = pwg_query($query); 
    274     if ($result) { 
     286     
     287    // mail admin and ask to validate the comment 
     288    if ($result and $conf['email_admin_on_comment_validation'] and 'moderate' == $comment_action)  
     289    { 
     290      include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php'); 
     291 
     292      $comment_url = get_absolute_root_url().'comments.php?comment_id='.$comment['comment_id']; 
     293 
     294      $keyargs_content = array 
     295      ( 
     296        get_l10n_args('Author: %s', stripslashes($GLOBALS['user']['username']) ), 
     297        get_l10n_args('Comment: %s', stripslashes($comment['content']) ), 
     298        get_l10n_args('', ''), 
     299        get_l10n_args('Manage this user comment: %s', $comment_url), 
     300        get_l10n_args('', ''), 
     301        get_l10n_args('(!) This comment requires validation', ''), 
     302      ); 
     303 
     304      pwg_mail_notification_admins 
     305      ( 
     306        get_l10n_args('Comment by %s', stripslashes($GLOBALS['user']['username']) ), 
     307        $keyargs_content 
     308      ); 
     309    } 
     310    // just mail admin 
     311    else if ($result) 
     312    { 
    275313      email_admin('edit', array('author' => $GLOBALS['user']['username'], 
    276314                                'content' => stripslashes($comment['content'])) ); 
    277315    } 
    278316  } 
     317   
     318  return $comment_action; 
    279319} 
    280320 
  • trunk/include/picture_comment.inc.php

    r8728 r10097  
    3939} 
    4040 
    41 if ( $page['show_comments'] and isset( $_POST['content'] ) ) 
     41if (!isset($comment_action)) 
    4242{ 
    43   if ( is_a_guest() and !$conf['comments_forall'] ) 
    44   { 
    45     die ('Session expired'); 
    46   } 
    47  
    48   $comm = array( 
    49     'author' => trim( @$_POST['author'] ), 
    50     'content' => trim( $_POST['content'] ), 
    51     'image_id' => $page['image_id'], 
    52    ); 
    53  
    54   include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php'); 
    55  
    56   $comment_action = insert_user_comment($comm, @$_POST['key'], $infos ); 
    57  
    58   switch ($comment_action) 
    59   { 
    60     case 'moderate': 
    61       array_push( $infos, l10n('An administrator must authorize your comment before it is visible.') ); 
    62     case 'validate': 
    63       array_push( $infos, l10n('Your comment has been registered')); 
    64       break; 
    65     case 'reject': 
    66       set_status_header(403); 
    67       array_push($infos, l10n('Your comment has NOT been registered because it did not pass the validation rules') ); 
    68       break; 
    69     default: 
    70       trigger_error('Invalid comment action '.$comment_action, E_USER_WARNING); 
    71   } 
    72  
    73   $template->assign( 
    74       ($comment_action=='reject') ? 'errors' : 'infos', 
    75       $infos 
    76     ); 
    77  
    78   // allow plugins to notify what's going on 
    79   trigger_action( 'user_comment_insertion', 
    80       array_merge($comm, array('action'=>$comment_action) ) 
    81     ); 
    82 } 
    83 elseif ( isset($_POST['content']) ) 
    84 { 
    85   set_status_header(403); 
    86   die('ugly spammer'); 
     43  if ( $page['show_comments'] and isset( $_POST['content'] ) ) 
     44  { 
     45    if ( is_a_guest() and !$conf['comments_forall'] ) 
     46    { 
     47      die ('Session expired'); 
     48    } 
     49 
     50    $comm = array( 
     51      'author' => trim( @$_POST['author'] ), 
     52      'content' => trim( $_POST['content'] ), 
     53      'image_id' => $page['image_id'], 
     54     ); 
     55 
     56    include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php'); 
     57 
     58    $comment_action = insert_user_comment($comm, @$_POST['key'], $infos ); 
     59 
     60    switch ($comment_action) 
     61    { 
     62      case 'moderate': 
     63        array_push( $infos, l10n('An administrator must authorize your comment before it is visible.') ); 
     64      case 'validate': 
     65        array_push( $infos, l10n('Your comment has been registered')); 
     66        break; 
     67      case 'reject': 
     68        set_status_header(403); 
     69        array_push($infos, l10n('Your comment has NOT been registered because it did not pass the validation rules') ); 
     70        break; 
     71      default: 
     72        trigger_error('Invalid comment action '.$comment_action, E_USER_WARNING); 
     73    } 
     74 
     75    $template->assign( 
     76        ($comment_action=='reject') ? 'errors' : 'infos', 
     77        $infos 
     78      ); 
     79 
     80    // allow plugins to notify what's going on 
     81    trigger_action( 'user_comment_insertion', 
     82        array_merge($comm, array('action'=>$comment_action) ) 
     83      ); 
     84  } 
     85  elseif ( isset($_POST['content']) ) 
     86  { 
     87    set_status_header(403); 
     88    die('ugly spammer'); 
     89  } 
    8790} 
    8891 
  • trunk/install/config.sql

    r8759 r10097  
    44INSERT INTO piwigo_config (param,value,comment) VALUES ('log','true','keep an history of visits on your website'); 
    55INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_validation','false','administrators validate users comments before becoming visible'); 
     6INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_update_validation','false','administrators validate users updated comments before becoming visible'); 
    67INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_forall','false','even guest not registered can post comments'); 
    78INSERT INTO piwigo_config (param,value,comment) VALUES ('user_can_delete_comment','false','administrators can allow user delete their own comments'); 
  • trunk/language/en_UK/admin.lang.php

    r9936 r10097  
    730730$lang['Validate'] = "Validate"; 
    731731$lang['Validation'] = "Validation"; 
     732$lang['Update Validation'] = "Validation when a comment is modified"; 
    732733$lang['Version of create_listing_file.php on the remote site and Piwigo must be the same'] = "Versions of create_listing_file.php on the remote site and Piwigo must be the same"; 
    733734$lang['Version'] = "Version"; 
  • trunk/language/fr_FR/admin.lang.php

    r10039 r10097  
    170170$lang['Validate'] = "Valider"; 
    171171$lang['Validation'] = "Validation"; 
     172$lang['Update Validation'] = "Validation quand un commentaire est modifié"; 
    172173$lang['Version'] = "Version"; 
    173174$lang['Virtual albums to move'] = 'Albums virtuels à déplacer'; 
  • trunk/picture.php

    r9073 r10097  
    190190// +-----------------------------------------------------------------------+ 
    191191 
     192$infos = array(); 
     193 
    192194// caching first_rank, last_rank, current_rank in the displayed 
    193195// section. This should also help in readability. 
     
    332334        if (!empty($_POST['content'])) 
    333335        { 
    334           update_user_comment( 
     336          $comment_action = update_user_comment( 
    335337            array( 
    336338              'comment_id' => $_GET['comment_to_edit'], 
     
    341343            ); 
    342344 
    343           redirect($url_self); 
     345          switch ($comment_action) 
     346          { 
     347            case 'moderate': 
     348              array_push($infos, l10n('An administrator must authorize your comment before it is visible.')); 
     349            case 'validate': 
     350              array_push($infos, l10n('Your comment has been registered')); 
     351              break; 
     352            case 'reject': 
     353              set_status_header(403); 
     354              array_push($infos, l10n('Your comment has NOT been registered because it did not pass the validation rules')); 
     355              break; 
     356            default: 
     357              trigger_error('Invalid comment action '.$comment_action, E_USER_WARNING); 
     358          } 
     359           
     360          $template->assign( 
     361              ($comment_action=='reject') ? 'errors' : 'infos', 
     362              $infos 
     363            ); 
     364             
     365          break; 
    344366        } 
    345367        else 
     
    835857} 
    836858 
    837 $infos = array(); 
    838  
    839859// author 
    840860if (!empty($picture['current']['author'])) 
Note: See TracChangeset for help on using the changeset viewer.