[2.0.4] Anti Double Posts

Présentation des mods pour la branche Olympus de phpBB

[2.0.4] Anti Double Posts

Messagede Webmaster » Lun 14 Avr 2008 02:38

  • Titre:Anti double posts
  • Auteur: Romain Kowalski
  • Description: Ce MOD permet d'interdire les doubles posts sur le forum.
  • Version: 2.0.4
  • Niveau d'installation: Facile
  • Temps d'installation: 5 minutes
  • Téléchargement: Ici
  • Captures d'écran:
    • Image
    • Image
    • Image
    • Image
  • Notes:
    • la notice d'installation de ce mod se trouve dans Anti_double_post_v2.0.4/install.xml
    • la notice d'installation de la langue française se trouve dans Anti_double_post_v2.0.4/fr.xml
Webmaster
Administrateur du site
 
Messages: 40
Inscription: Dim 25 Nov 2007 21:33

Re: [1.0.2] Anti Double Posts

Messagede Webmaster » Ven 2 Mai 2008 00:30

Mise à jour 1.0.1 vers 1.0.2

Ouvrir
Code: Tout sélectionner
posting.php

Trouver
Code: Tout sélectionner
//*****************************
// Begin : Anti Double Posts 
//*****************************
    
$adp_time $config['adp_days']*86400+$config['adp_hours']*3600+$config['adp_mins']*60+$config['adp_secs'];
        
    
//Check if last poster is the current poster
    
$sql 'SELECT t.topic_last_post_id,t.topic_last_poster_id, t.topic_last_post_time, p.post_text
            FROM ' 
TOPICS_TABLE ' AS t, ' POSTS_TABLE ' AS p 
            WHERE t.topic_id = ' 
$topic_id '
                AND p.post_id = t.topic_last_post_id'
;
            
    
$result $db->sql_query_limit($sql1);
    
    if (
$row $db->sql_fetchrow($result))
    {
        
$topic_last_post_id $row['topic_last_post_id'];
        
$topic_last_poster_id $row['topic_last_poster_id'];
        
$topic_last_post_time $row['topic_last_post_time'];
        
$post_text $row['post_text'];
    }
    
$db->sql_freeresult($result);


    if (
$mode == 'reply' && $config['adp_enable'] && $user->data['user_id']==$topic_last_poster_id && ($topic_last_post_time $adp_time) > $current_time)
    {        
        if(!
$config['adp_auto_edit'] && !(($config['adp_admins'] && $auth->acl_get('a_')) || ($config['adp_modos'] && $auth->acl_get('m_'))))
        {
            
trigger_error('ADP_DOUBLE_POST');
        }
    }
//*****************************
// End : Anti Double Posts
//*****************************    

Remplacer par :
Code: Tout sélectionner
//*****************************
// Begin : Anti Double Posts 
//*****************************
$mod_adp false;
if(
$config['adp_enable'])
{
    if(
$mode == 'quote')
    {
        
//Get topic id for this post
        
$sql_topic 'SELECT topic_id
                        FROM ' 
POSTS_TABLE '
                        WHERE post_id = ' 
$post_id;
            
        
$result_topic $db->sql_query_limit($sql_topic1);
        
        if (
$row_topic $db->sql_fetchrow($result_topic))
            
$topic_id $row_topic['topic_id'];

        
$db->sql_freeresult($result_topic);
    }
    
    
$adp_time $config['adp_days']*86400+$config['adp_hours']*3600+$config['adp_mins']*60+$config['adp_secs'];
        
    
    if(
$mode == 'reply' || $mode == 'quote')
    {
        
//Check if last poster is the current poster
        
$sql 'SELECT t.topic_last_post_id,t.topic_last_poster_id, t.topic_last_post_time, p.post_text, p.bbcode_uid
                FROM ' 
TOPICS_TABLE ' AS t, ' POSTS_TABLE ' AS p 
                WHERE t.topic_id = ' 
$topic_id '
                    AND p.post_id = t.topic_last_post_id'
;
                
        
$result $db->sql_query_limit($sql1);
        
        if (
$row $db->sql_fetchrow($result))
        {
            
$topic_last_post_id $row['topic_last_post_id'];
            
$topic_last_poster_id $row['topic_last_poster_id'];
            
$topic_last_post_time $row['topic_last_post_time'];
            
$post_text $row['post_text'];
            
$post_bbcode_uid $row['bbcode_uid'];
        }
        
$db->sql_freeresult($result);
        
        
//Conditions
        
if ($user->data['user_id']==$topic_last_poster_id && ($topic_last_post_time $adp_time) > $current_time && !(($config['adp_admins'] && $auth->acl_get('a_')) || ($config['adp_modos'] && $auth->acl_get('m_'))))
            
$mod_adp true;
    }

    if (
$mod_adp && !$config['adp_auto_edit'])
        
trigger_error('ADP_DOUBLE_POST');
}
//*****************************
// End : Anti Double Posts
//*****************************    

Trouver
Code: Tout sélectionner
//*****************************
// Begin : Anti Double Posts 
//*****************************
    
if ($mode == 'reply' && $config['adp_enable'] && $user->data['user_id']==$topic_last_poster_id && ($topic_last_post_time $adp_time) > $current_time)
    {        
        if(
$config['adp_auto_edit'] && !(($config['adp_admins'] && $auth->acl_get('a_')) || ($config['adp_modos'] && $auth->acl_get('m_'))))
        {
            
$mode 'edit';
            
$post_id $topic_last_post_id;
            
$message_parser->message $post_text '<br /><br />' $config['adp_text_edit'] . '<br /><br />' $message_parser->message;
                
        }
    }
//*****************************
// End : Anti Double Posts
//*****************************    

// Validate username    

Remplacer par
Code: Tout sélectionner
// Validate username    

Trouver
Code: Tout sélectionner
$data = array(    

Ajouter, avant
Code: Tout sélectionner
//*****************************
// Begin : Anti Double Posts 
//*****************************
            
if ($mod_adp && $config['adp_auto_edit'])
            {        
                
$mode 'edit';
                
$post_id $topic_last_post_id;
                
                
$last_post generate_text_for_edit($post_text,$post_bbcode_uid,0);
                
$message_parser->decode_message();
                
$message_parser->bbcode_uid $post_bbcode_uid;
                
                
$message_parser->message $last_post['text'] . '<br /><br />' $config['adp_text_edit'] . '<br /><br />' $message_parser->message;
                
$message_parser->parse($post_data['enable_bbcode'], ($config['allow_post_links']) ? $post_data['enable_urls'] : false$post_data['enable_smilies'], $img_status$flash_status$quote_status$config['allow_post_links']);    
            }
//*****************************
// End : Anti Double Posts
//*****************************    
Webmaster
Administrateur du site
 
Messages: 40
Inscription: Dim 25 Nov 2007 21:33

Re: [1.0.3] Anti Double Posts

Messagede Webmaster » Dim 25 Mai 2008 15:13

Mise à jour 1.0.2 vers 1.0.3
Motif : Corrige un bug lors d'un double post en citant un autre membre.

Ouvrir
Code: Tout sélectionner
posting.php

Trouver
Code: Tout sélectionner
                    $post_id $topic_last_post_id;  

Ajouter, après
Code: Tout sélectionner
                    $post_data['poster_id'] = $topic_last_poster_id;   
Webmaster
Administrateur du site
 
Messages: 40
Inscription: Dim 25 Nov 2007 21:33

Re: [1.0.4] Anti Double Posts

Messagede Webmaster » Sam 14 Juin 2008 22:22

Mise à jour 1.0.3 vers 1.0.4
Motif : Corrige un bug lors d'un double post en citant un autre membre.

Ouvrir
Code: Tout sélectionner
posting.php

Trouver
Code: Tout sélectionner
        //Check if last poster is the current poster
        $sql = SELECT t.topic_last_post_id,t.topic_last_poster_id, t.topic_last_post_time, p.post_subject, p.post_text,  p.bbcode_uid

Remplacer par
Code: Tout sélectionner
        //Check if last poster is the current poster
        $sql = SELECT t.topic_last_post_id,t.topic_last_poster_id, t.topic_last_post_time, p.post_subject, p.post_text, p.post_checksum, p.bbcode_uid

Trouver
Code: Tout sélectionner
            $post_text = $row['post_text'];  

Ajouter, après
Code: Tout sélectionner
            $post_checksum = $row['post_checksum'];  

Trouver
Code: Tout sélectionner
    $post_data['enable_sig']        = (!$config['allow_sig'] || !$auth->acl_get('f_sigs', $forum_id) || !$auth->acl_get('u_sig')) ? false : ((isset($_POST['attach_sig']) && $user->data['is_registered']) ? true : false);   

Ajouter, après
Code: Tout sélectionner
//*****************************
// Begin : Anti Double Posts 
//*****************************
            if ($mod_adp && $config['adp_auto_edit'])
            {        
                $mode 
= 'edit';
                $post_id = $topic_last_post_id;
                $post_data['poster_id'] = $topic_last_poster_id;
                $post_data['post_subject'] = $post_subject;
                $post_data['post_checksum'] = $post_checksum;
                $post_data['username'] = $user->data['username'];

                $message_parser->bbcode_uid = $post_bbcode_uid;                
                $message_parser
->message = $post_text . '<br /><br />' . $config['adp_text_edit'] . '<br /><br />' . $message_parser->message;
            }
//*****************************
// End : Anti Double Posts
//*****************************   

Trouver
Code: Tout sélectionner
    //*****************************
    // Begin : Anti Double Posts 
    //*****************************
                if ($mod_adp && $config['adp_auto_edit'])
                {        
                    $mode 
= 'edit';
                    $post_id = $topic_last_post_id;
                    
                    $last_post 
= generate_text_for_edit($post_text,$post_bbcode_uid,0);
                    $message_parser->decode_message();
                    $message_parser->bbcode_uid = $post_bbcode_uid;
                    
                    $message_parser
->message = $last_post['text'] . '<br /><br />' . $config['adp_text_edit'] . '<br /><br />' . $message_parser->message;
                    $message_parser->parse($post_data['enable_bbcode'], ($config['allow_post_links']) ? $post_data['enable_urls'] : false, $post_data['enable_smilies'], $img_status, $flash_status, $quote_status, $config['allow_post_links']);    
                
}
    //*****************************
    // End : Anti Double Posts
    //*****************************    
$data = array(    
   

Remplacer par
Code: Tout sélectionner
$data = array(       
Webmaster
Administrateur du site
 
Messages: 40
Inscription: Dim 25 Nov 2007 21:33

Re: [1.0.5] Anti Double Posts

Messagede Webmaster » Dim 15 Juin 2008 20:49

Mise à jour 1.0.4 vers 1.0.5
Motif : Corrige un bug lors d'un double post en citant un autre membre.

Ouvrir
Code: Tout sélectionner
posting.php

Trouver
Code: Tout sélectionner
//*****************************
// Begin : Anti Double Posts 
//*****************************
$mod_adp = false;
if(
$config['adp_enable'])
{
    if($mode == 'quote')
    {
        //Get topic id for this post
        $sql_topic = 'SELECT topic_id
                        FROM '
 . POSTS_TABLE . '
                        WHERE post_id = '
 . $post_id;
            
        $result_topic 
= $db->sql_query_limit($sql_topic, 1);
        
        if 
($row_topic = $db->sql_fetchrow($result_topic))
        {
            $topic_id = $row_topic['topic_id'];
        }

        $db->sql_freeresult($result_topic);
    }
    
    $adp_time 
= $config['adp_days']*86400+$config['adp_hours']*3600+$config['adp_mins']*60+$config['adp_secs'];
        
    
    if
($mode == 'reply' || $mode == 'quote')
    {
        //Check if last poster is the current poster
        $sql = 'SELECT t.topic_last_post_id,t.topic_last_poster_id, t.topic_last_post_time, p.post_subject, p.post_text, p.post_checksum, p.bbcode_uid, p.bbcode_bitfield
                FROM '
 . TOPICS_TABLE . ' AS t, ' . POSTS_TABLE . ' AS p 
                WHERE t.topic_id = '
 . $topic_id . '
                    AND p.post_id = t.topic_last_post_id'
;
                
        $result 
= $db->sql_query_limit($sql, 1);
        
        if 
($row = $db->sql_fetchrow($result))
        {
            $post_subject = $row['post_subject'];
            $topic_last_post_id = $row['topic_last_post_id'];
            $topic_last_poster_id = $row['topic_last_poster_id'];
            $topic_last_post_time = $row['topic_last_post_time'];
            $post_text = $row['post_text'];
            $post_checksum = $row['post_checksum'];
            $post_bbcode_uid = $row['bbcode_uid'];
        }
        $db->sql_freeresult($result);
        
        
//Conditions
        if ($user->data['user_id']==$topic_last_poster_id && ($topic_last_post_time + $adp_time) > $current_time && !(($config['adp_admins'] && $auth->acl_get('a_')) || ($config['adp_modos'] && $auth->acl_get('m_'))))
        {
            $mod_adp = true;
        }
    }

    if ($mod_adp && !$config['adp_auto_edit'])
    {
        trigger_error('ADP_DOUBLE_POST');
    }
}
//*****************************
// End : Anti Double Posts
//*****************************
 

Remplacer par
Code: Tout sélectionner
//*****************************
// Begin : Anti Double Posts 
//*****************************
$mod_adp = false;
if ($config['adp_enable'])
{
    if ($mode == 'quote')
    {
        // Get topic id for this post
        $sql_topic = 'SELECT topic_id
                    FROM '
 . POSTS_TABLE . '
                    WHERE post_id = '
 . $post_id;
            
        $result_topic 
= $db->sql_query_limit($sql_topic, 1);
        
        if 
($row_topic = $db->sql_fetchrow($result_topic))
        {
            $topic_id = $row_topic['topic_id'];
        }

        $db->sql_freeresult($result_topic);
    }
    
    $adp_time 
= $config['adp_days'] * 86400 + $config['adp_hours'] * 3600 + $config['adp_mins'] * 60 + $config['adp_secs'];
        
    
    if 
($mode == 'reply' || $mode == 'quote')
    { 
        
// Check if last poster is the current poster
        $sql = 'SELECT t.topic_last_post_id,t.topic_last_poster_id, t.topic_last_post_time, p.post_subject, p.post_text, p.post_checksum, p.bbcode_uid
                FROM '
 . TOPICS_TABLE . ' AS t, ' . POSTS_TABLE . ' AS p 
                WHERE t.topic_id = '
 . $topic_id . '
                    AND p.post_id = t.topic_last_post_id'
;
                
        $result 
= $db->sql_query_limit($sql, 1);
        
        if 
($row = $db->sql_fetchrow($result))
        {
            $post_subject = $row['post_subject'];
            $topic_last_post_id = $row['topic_last_post_id'];
            $topic_last_poster_id = $row['topic_last_poster_id'];
            $topic_last_post_time = $row['topic_last_post_time'];
            $post_text = $row['post_text'];
            $post_checksum = $row['post_checksum'];
            $post_bbcode_uid = $row['bbcode_uid'];
            $post_bbcode_bitfield = $row['bbcode_bitfield'];
        }
        $db->sql_freeresult($result);
        
        
// Conditions
        if ($user->data['user_id'] == $topic_last_poster_id && ($topic_last_post_time + $adp_time) > $current_time && !(($config['adp_admins'] && $auth->acl_get('a_')) || ($config['adp_modos'] && $auth->acl_get('m_'))))
        {
            $mod_adp = true;
        }
    }

    if ($mod_adp && !$config['adp_auto_edit'])
    {
        trigger_error('ADP_DOUBLE_POST');
    }
}
//*****************************
// End : Anti Double Posts
//*****************************   

Trouver
Code: Tout sélectionner
//*****************************
// Begin : Anti Double Posts 
//*****************************
            if ($mod_adp && $config['adp_auto_edit'])
            {        
                $mode 
= 'edit';
                $post_id = $topic_last_post_id;
                $post_data['poster_id'] = $topic_last_poster_id;
                $post_data['post_subject'] = $post_subject;
                $post_data['post_checksum'] = $post_checksum;
                $post_data['username'] = $user->data['username'];

                $message_parser->bbcode_uid = $post_bbcode_uid;                
                $message_parser
->message = $post_text . '<br /><br />' . $config['adp_text_edit'] . '<br /><br />' . $message_parser->message;
            }
//*****************************
// End : Anti Double Posts
//*****************************   

Remplacer par
Code: Tout sélectionner
//*****************************
// Begin : Anti Double Posts 
//*****************************
            if ($mod_adp && $config['adp_auto_edit'])
            {        

                $mode 
= 'edit';
                $post_id = $topic_last_post_id;
                $post_data['poster_id'] = $topic_last_poster_id;
                $post_data['post_subject'] = $post_subject;
                $post_data['post_checksum'] = $post_checksum;
                $post_data['username'] = $user->data['username'];

                $message_parser->bbcode_uid = $post_bbcode_uid;
                $message_parser->bbcode_bitfield = $post_bbcode_bitfield;


                decode_message($post_text,$post_bbcode_uid);
                
                
// Petit traitement des URL, encodées dans la BDD, ce qui empêche la détection des url dans les bbcodes img et url
                $post_text = str_replace(array('&#58;', '&#46;'), array(':', '.'), $post_text);
                
                $message_parser
->message = $post_text . '<br /><br />' . $config['adp_text_edit'] . '<br /><br />' . $message_parser->message;
            }            
//*****************************
// End : Anti Double Posts
//*****************************   
Webmaster
Administrateur du site
 
Messages: 40
Inscription: Dim 25 Nov 2007 21:33

Re: [1.0.5] Anti Double Posts

Messagede Webmaster » Mar 17 Juin 2008 01:10

Correctif fichier d'installation v1.0.5
Motif : Une erreur de copier/coller dans le fichier d'installation entraîne une erreur dans la requête sql.
Pour ceux qui ont téléchargé l'archive de la version 1.0.5 avant le 17 juin, il faut faire ceci :

Ouvrir
Code: Tout sélectionner
posting.php

Trouver
Code: Tout sélectionner
        $sql SELECT t.topic_last_post_id,t.topic_last_poster_idt.topic_last_post_timep.post_subjectp.post_textp.post_checksump.bbcode_uid

Dans la ligne, ajouter après
Code: Tout sélectionner
p.bbcode_bitfield


Merci de votre compréhension
Webmaster
Administrateur du site
 
Messages: 40
Inscription: Dim 25 Nov 2007 21:33

Re: [1.0.7] Anti Double Posts

Messagede Webmaster » Ven 11 Juil 2008 09:21

Mise à jour 1.0.5 vers 1.0.6
Motif : Corrige un bug lors de la prévisualisation du double post.

Ouvrir
Code: Tout sélectionner
posting.php

Trouver
Code: Tout sélectionner
        if ($user->data['user_id'] == $topic_last_poster_id && ($topic_last_post_time $adp_time) > $current_time && !(($config['adp_admins'] && $auth->acl_get('a_')) || ($config['adp_modos'] && $auth->acl_get('m_')))) 

Remplacer par
Code: Tout sélectionner
        if ($submit && $user->data['user_id'] == $topic_last_poster_id && ($topic_last_post_time $adp_time) > $current_time && !(($config['adp_admins'] && $auth->acl_get('a_')) || ($config['adp_modos'] && $auth->acl_get('m_')))) 
Webmaster
Administrateur du site
 
Messages: 40
Inscription: Dim 25 Nov 2007 21:33

Re: [1.0.7] Anti Double Posts

Messagede Webmaster » Ven 11 Juil 2008 09:21

Mise à jour 1.0.6 vers 1.0.7
Motif : Corrige un bug avec les fichiers joints.

Ouvrir
Code: Tout sélectionner
posting.php

Trouver
Code: Tout sélectionner
                $post_data['username'] = $user->data['username']; 

Ajouter, après
Code: Tout sélectionner
            // Attachments
                // Do not change to SELECT *
                
$sql 'SELECT attach_id, is_orphan, attach_comment, real_filename
                    FROM ' 
ATTACHMENTS_TABLE "
                    WHERE post_msg_id = $post_id
                        AND in_message = 0
                        AND is_orphan = 0
                    ORDER BY filetime DESC"
;
                
$result $db->sql_query($sql);
                
$message_parser->attachment_data array_merge($message_parser->attachment_data$db->sql_fetchrowset($result));
                
$db->sql_freeresult($result);
            
// End Attachments 
Webmaster
Administrateur du site
 
Messages: 40
Inscription: Dim 25 Nov 2007 21:33

Re: [2.0.0] Anti Double Posts

Messagede Webmaster » Mer 27 Aoû 2008 13:33

Mise à jour 1.0.7 vers 2.0.0
Motif : Les paramètres du MOD se configurent maintenant par forum.
Possibilité d'afficher la date du double post à l'aide de la variable "%D" dans le séparateur.
Ajout de permissions aux utilisateurs et groupes pour pouvoir double poster malgré les restrictions.
Correction du bug avec les sondages.

Requêtes SQL :
Code: Tout sélectionner
DELETE FROM phpbb_config WHERE config_name='adp_enable';
DELETE FROM phpbb_config WHERE config_name='adp_admins';
DELETE FROM phpbb_config WHERE config_name='adp_modos';
DELETE FROM phpbb_config WHERE config_name='adp_auto_edit';
DELETE FROM phpbb_config WHERE config_name='adp_text_edit';
DELETE FROM phpbb_config WHERE config_name='adp_days';
DELETE FROM phpbb_config WHERE config_name='adp_hours';
DELETE FROM phpbb_config WHERE config_name='adp_mins';
DELETE FROM phpbb_config WHERE config_name='adp_secs';

INSERT INTO phpbb_acl_options VALUES('','u_adp_allow',1,0,0);
ALTER TABLE phpbb_forums ADD adp_enable tinyint(1) NOT NULL DEFAULT 1;
ALTER TABLE phpbb_forums ADD adp_admins tinyint(1) NOT NULL DEFAULT 0;
ALTER TABLE phpbb_forums ADD adp_modos tinyint(1) NOT NULL DEFAULT 0;
ALTER TABLE phpbb_forums ADD adp_auto_edit tinyint(1) NOT NULL DEFAULT 1;
ALTER TABLE phpbb_forums ADD adp_text_edit varchar(400) NOT NULL DEFAULT '[b]-- %D --[/b]';
ALTER TABLE phpbb_forums ADD adp_always tinyint(1) NOT NULL DEFAULT 1;
ALTER TABLE phpbb_forums ADD adp_days int(11) NOT NULL DEFAULT 1;
ALTER TABLE phpbb_forums ADD adp_hours int(11) NOT NULL DEFAULT 0;
ALTER TABLE phpbb_forums ADD adp_mins int(11) NOT NULL DEFAULT 0;
ALTER TABLE phpbb_forums ADD adp_secs int(11) NOT NULL DEFAULT 0;   


Copie :
root/language/en/mods/anti_double_post.php :arrow: language/en/mods/anti_double_post.php
root/language/en/mods/permissions_anti_double_post.php :arrow: language/en/mods/permissions_anti_double_post.php
root/language/fr/mods/anti_double_post.php :arrow: language/fr/mods/anti_double_post.php
root/language/fr/mods/permissions_anti_double_post.php :arrow: language/fr/mods/permissions_anti_double_post.php

Ouvrir posting.php
Trouver
Code: Tout sélectionner
$current_time = time();
// Begin : Anti Double Posts 
$mod_adp = false;
if ($config['adp_enable'])
{
    if ($mode == 'quote')
    {
        // Get topic id for this post
        $sql_topic = 'SELECT topic_id
                    FROM '
 . POSTS_TABLE . '
                    WHERE post_id = '
 . $post_id;
            
        $result_topic 
= $db->sql_query_limit($sql_topic, 1);
        
        if 
($row_topic = $db->sql_fetchrow($result_topic))
        {
            $topic_id = $row_topic['topic_id'];
        }

        $db->sql_freeresult($result_topic);
    }
    
    $adp_time 
= $config['adp_days'] * 86400 + $config['adp_hours'] * 3600 + $config['adp_mins'] * 60 + $config['adp_secs'];
        
    
    if 
($mode == 'reply' || $mode == 'quote')
    { 
        
// Check if last poster is the current poster
        $sql = 'SELECT t.topic_last_post_id,t.topic_last_poster_id, t.topic_last_post_time, p.post_subject, p.post_text, p.post_checksum, p.bbcode_uid, p.bbcode_bitfield
                FROM '
 . TOPICS_TABLE . ' AS t, ' . POSTS_TABLE . ' AS p 
                WHERE t.topic_id = '
 . $topic_id . '
                    AND p.post_id = t.topic_last_post_id'
;
                
        $result 
= $db->sql_query_limit($sql, 1);
        
        if 
($row = $db->sql_fetchrow($result))
        {
            $post_subject = $row['post_subject'];
            $topic_last_post_id = $row['topic_last_post_id'];
            $topic_last_poster_id = $row['topic_last_poster_id'];
            $topic_last_post_time = $row['topic_last_post_time'];
            $post_text = $row['post_text'];
            $post_checksum = $row['post_checksum'];
            $post_bbcode_uid = $row['bbcode_uid'];
            $post_bbcode_bitfield = $row['bbcode_bitfield'];
        }
        $db->sql_freeresult($result);
        
        
// Conditions
        if ($submit && $user->data['user_id'] == $topic_last_poster_id && ($topic_last_post_time + $adp_time) > $current_time && !(($config['adp_admins'] && $auth->acl_get('a_')) || ($config['adp_modos'] && $auth->acl_get('m_'))))
        {
            $mod_adp = true;
        }
    }

    if ($mod_adp && !$config['adp_auto_edit'])
    {
        trigger_error('ADP_DOUBLE_POST');
    }
}
// End : Anti Double Posts             

Remplacer par
Code: Tout sélectionner
$current_time = time();   

Trouver
Code: Tout sélectionner
$message_parser = new parse_message();   

Ajouter, avant
Code: Tout sélectionner
// Begin : Anti Double Posts 
$mod_adp = false;
if ($post_data['adp_enable'])
{
    if ($mode == 'quote')
    {
        // Get topic id for this post
        $sql_topic = 'SELECT topic_id
                    FROM '
 . POSTS_TABLE . '
                    WHERE post_id = '
 . $post_id;
            
        $result_topic 
= $db->sql_query_limit($sql_topic, 1);
        
        if 
($row_topic = $db->sql_fetchrow($result_topic))
        {
            $topic_id = $row_topic['topic_id'];
        }

        $db->sql_freeresult($result_topic);
    }
    
    $adp_time 
= $post_data['adp_days'] * 86400 + $post_data['adp_hours'] * 3600 + $post_data['adp_mins'] * 60 + $post_data['adp_secs'];
        
    
    if 
($mode == 'reply' || $mode == 'quote')
    { 
        
// Check if last poster is the current poster
        $sql = 'SELECT t.topic_last_post_id,t.topic_last_poster_id, t.topic_last_post_time, t.poll_title, t.poll_start, t.poll_length, t.poll_max_options, t.poll_last_vote, t.poll_vote_change, p.post_subject, p.post_text, p.post_checksum, p.bbcode_uid, p.bbcode_bitfield
                FROM '
 . TOPICS_TABLE . ' AS t, ' . POSTS_TABLE . ' AS p 
                WHERE t.topic_id = '
 . $topic_id . '
                    AND p.post_id = t.topic_last_post_id'
;
                
        $result 
= $db->sql_query_limit($sql, 1);
        
        if 
($row = $db->sql_fetchrow($result))
        {
            $adp_post_subject = $row['post_subject'];
            $adp_topic_last_post_id = $row['topic_last_post_id'];
            $adp_topic_last_poster_id = $row['topic_last_poster_id'];
            $adp_topic_last_post_time = $row['topic_last_post_time'];
            $adp_post_text = $row['post_text'];
            $adp_post_checksum = $row['post_checksum'];
            $adp_post_bbcode_uid = $row['bbcode_uid'];
            $adp_post_bbcode_bitfield = $row['bbcode_bitfield'];
            
            
//Poll options            
            $adp_poll_title = $row['poll_title'];
            $adp_poll_start = $row['poll_start'];
            $adp_poll_length = $row['poll_length'];
            $adp_poll_max_options = $row['poll_max_options'];
            $adp_poll_last_vote = $row['poll_last_vote'];
            $adp_poll_vote_change = $row['poll_vote_change'];

        }
        $db->sql_freeresult($result);        
        
        
//Poll options
        $adp_poll_option_text = implode("\n", $post_data['poll_options']);
        
        
        
// Conditions
        if($post_data['adp_always'] || (($adp_topic_last_post_time + $adp_time) > $current_time))
        {
            $adp_time_parameter = true;
        }
        else
        
{
            $adp_time_parameter = false;
        }
        
        if 
(($user->data['user_id'] == $adp_topic_last_poster_id) && $adp_time_parameter)
        {
            if(!$post_data['adp_admins'] && $auth->acl_get('a_')) //Check if user is admin and admins are allowed to double post
            {
                $mod_adp = true;
            }
            else if(!$post_data['adp_modos'] && $auth->acl_get('m_',$forum_id)) //Check if user is moderator and moderators are allowed to double post
            {
                $mod_adp = true;
            }
            else if(!$auth->acl_get('u_adp_allow'))
            {
                $mod_adp = true;
            }
        }
    }

    if ($mod_adp && !$post_data['adp_auto_edit'])
    {
// Begin : Anti Double Posts        
        
$user->add_lang('mods/anti_double_post');
// End : Anti Double Posts
        trigger_error('ADP_DOUBLE_POST');
    }
}
// End : Anti Double Posts             

Trouver
Code: Tout sélectionner
    $post_data['enable_sig']        = (!$config['allow_sig'] || !$auth->acl_get('f_sigs', $forum_id) || !$auth->acl_get('u_sig')) ? false : ((isset($_POST['attach_sig']) && $user->data['is_registered']) ? true : false);
// Begin : Anti Double Posts 
            if ($mod_adp && $config['adp_auto_edit'])
            {        

                $mode 
= 'edit';
                $post_id = $topic_last_post_id;
                $post_data['poster_id'] = $topic_last_poster_id;
                $post_data['post_subject'] = $post_subject;
                $post_data['post_checksum'] = $post_checksum;
                $post_data['username'] = $user->data['username'];
                
            
// Attachments
                // Do not change to SELECT *
                $sql = 'SELECT attach_id, is_orphan, attach_comment, real_filename
                    FROM '
 . ATTACHMENTS_TABLE . "
                    WHERE post_msg_id = $post_id
                        AND in_message = 0
                        AND is_orphan = 0
                    ORDER BY filetime DESC"
;
                $result = $db->sql_query($sql);
                $message_parser->attachment_data = array_merge($message_parser->attachment_data, $db->sql_fetchrowset($result));
                $db->sql_freeresult($result);
            // End Attachments
                
                $message_parser
->bbcode_uid = $post_bbcode_uid;
                $message_parser->bbcode_bitfield = $post_bbcode_bitfield;


                decode_message($post_text,$post_bbcode_uid);
                
                
// Petit traitement des URL, encodées dans la BDD, ce qui empêche la détection des url dans les bbcodes img et url
                $post_text = str_replace(array('&#58;', '&#46;'), array(':', '.'), $post_text);
                
                $message_parser
->message = $post_text . '<br /><br />' . $config['adp_text_edit'] . '<br /><br />' . $message_parser->message;
            }
// End : Anti Double Posts             

Remplacer par
Code: Tout sélectionner
    $post_data['enable_sig']        = (!$config['allow_sig'] || !$auth->acl_get('f_sigs', $forum_id) || !$auth->acl_get('u_sig')) ? false : ((isset($_POST['attach_sig']) && $user->data['is_registered']) ? true : false);   

Trouver
Code: Tout sélectionner
    // If replying/quoting and last post id has changed
    // give user option to continue submit or return to post
    // notify and show user the post made between his request and the final submit            

Ajouter, avant
Code: Tout sélectionner
// Begin : Anti Double Posts 
            if ($submit && $mod_adp && $post_data['adp_auto_edit'])
            {        
                $mode 
= 'edit';
                $post_id = $adp_topic_last_post_id;
                $post_data['poster_id'] = $adp_topic_last_poster_id;
                $post_data['post_subject'] = $adp_post_subject;
                $post_data['post_checksum'] = $adp_post_checksum;
                $post_data['username'] = $user->data['username'];
                
                $post_data
['poll_title'] = $adp_poll_title;
                $post_data['poll_start'] = $adp_poll_start;
                $post_data['poll_length'] = $adp_poll_length;
                $post_data['poll_max_options'] = $adp_poll_max_options;
                $post_data['poll_last_vote'] = $adp_poll_last_vote;
                $post_data['vote_change'] = $adp_poll_vote_change;
                $post_data['poll_option_text'] = $adp_poll_option_text;

            // Attachments
                // Do not change to SELECT *
                $sql = 'SELECT attach_id, is_orphan, attach_comment, real_filename
                    FROM '
 . ATTACHMENTS_TABLE . "
                    WHERE post_msg_id = $post_id
                        AND in_message = 0
                        AND is_orphan = 0
                    ORDER BY filetime DESC"
;
                $result = $db->sql_query($sql);
                $message_parser->attachment_data = array_merge($message_parser->attachment_data, $db->sql_fetchrowset($result));
                $db->sql_freeresult($result);
            // End Attachments
                
                $message_parser
->bbcode_uid = $adp_post_bbcode_uid;
                $message_parser->bbcode_bitfield = $adp_post_bbcode_bitfield;

                //Decode last post
                decode_message($adp_post_text,$adp_post_bbcode_uid);
                
                
// Decode URLs
                $adp_post_text = str_replace(array('&#58;', '&#46;'), array(':', '.'), $adp_post_text);
                
                
//Parse "%D" in the ADP Text edit
                $post_data['adp_text_edit'] = str_replace("%D", $user->format_date($current_time), $post_data['adp_text_edit']);                
                
                
//Do the job...
                $message_parser->message = $adp_post_text . '<br /><br />' . $post_data['adp_text_edit'] . '<br /><br />' . $message_parser->message;
            }
// End : Anti Double Posts            


Ouvrir adm/style/acp_forums.html
Trouver
Code: Tout sélectionner
   <fieldset class="submit-buttons">
      <legend>{L_SUBMIT}</legend>
      <input class="button1" type="submit" id="submit" name="update" value="{L_SUBMIT}" />&nbsp;
      <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
      {S_FORM_TOKEN}
   </fieldset>

Ajouter, avant
Code: Tout sélectionner
   <div id="forum_adp_options">
      <fieldset>
         <legend>{L_FORUM_ADP}</legend>
      <dl>
         <dt><label for="adp_enable">{L_ADP_ENABLE}:</label><br /></dt>
         <dd><label><input type="radio" class="radio" name="adp_enable" value="1"<!-- IF S_ADP_ENABLE --> id="adp_enable" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
            <label><input type="radio" class="radio" name="adp_enable" value="0"<!-- IF not S_ADP_ENABLE --> id="adp_enable" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
      </dl>
      <dl>
         <dt><label for="adp_admins">{L_ADP_ADMINS}:</label><br /></dt>
         <dd><label><input type="radio" class="radio" name="adp_admins" value="1"<!-- IF S_ADP_ADMINS --> id="adp_admins" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
            <label><input type="radio" class="radio" name="adp_admins" value="0"<!-- IF not S_ADP_ADMINS --> id="adp_admins" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
      </dl>
      <dl>
         <dt><label for="adp_modos">{L_ADP_MODOS}:</label><br /></dt>
         <dd><label><input type="radio" class="radio" name="adp_modos" value="1"<!-- IF S_ADP_MODOS --> id="adp_modos" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
            <label><input type="radio" class="radio" name="adp_modos" value="0"<!-- IF not S_ADP_MODOS --> id="adp_modos" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
      </dl>
      <dl>
         <dt><label for="adp_auto_edit">{L_ADP_AUTO_EDIT}:</label><br /><span>{L_ADP_AUTO_EDIT_EXPLAIN}</span></dt>
         <dd><label><input type="radio" class="radio" name="adp_auto_edit" value="1"<!-- IF S_ADP_AUTO_EDIT --> id="adp_auto_edit" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
            <label><input type="radio" class="radio" name="adp_auto_edit" value="0"<!-- IF not S_ADP_AUTO_EDIT --> id="adp_auto_edit" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
      </dl>
      <dl>
         <dt><label for="adp_text_edit">{L_ADP_TEXT_EDIT}:</label><br /><span>{L_ADP_TEXT_EDIT_EXPLAIN}</span></dt>
         <dd><input class="text medium" type="text" id="adp_text_edit" name="adp_text_edit" value="{ADP_TEXT_EDIT}" maxlength="255" /></dd>
      </dl>
      <dl>
         <dt><label for="adp_always">{L_ADP_ALWAYS}:</label><br /><span>{L_ADP_ALWAYS_EXPLAIN}</span></dt>
         <dd><label><input type="radio" class="radio" name="adp_always" value="1"<!-- IF S_ADP_ALWAYS --> id="adp_always" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
            <label><input type="radio" class="radio" name="adp_always" value="0"<!-- IF not S_ADP_ALWAYS --> id="adp_always" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
      </dl>
      <dl>
         <dt><label for="adp_days">{L_ADP_DAYS}:</label><br /><span>{L_ADP_DAYS_EXPLAIN}</span></dt>
         <dd><input type="text" id="adp_days" name="adp_days" value="{ADP_DAYS}" maxlength="4" size="4" /></dd>
      </dl>
      <dl>
         <dt><label for="adp_hours">{L_ADP_HOURS}:</label><br /><span>{L_ADP_HOURS_EXPLAIN}</span></dt>
         <dd><input type="text" id="adp_hours" name="adp_hours" value="{ADP_HOURS}" maxlength="4" size="4" /></dd>
      </dl>
      <dl>
         <dt><label for="adp_mins">{L_ADP_MINS}:</label><br /><span>{L_ADP_MINS_EXPLAIN}</span></dt>
         <dd><input type="text" id="adp_mins" name="adp_mins" value="{ADP_MINS}" maxlength="4" size="4" /></dd>
      </dl>
      <dl>
         <dt><label for="adp_secs">{L_ADP_SECS}:</label><br /><span>{L_ADP_SECS_EXPLAIN}</span></dt>
         <dd><input type="text" id="adp_secs" name="adp_secs" value="{ADP_SECS}" maxlength="4" size="4" /></dd>
      </dl>
      </fieldset>
   </div>

Ouvrir includes/acp/acp_board.php
Trouver
Code: Tout sélectionner
// Begin : Anti Double Posts 
            case 'anti_double_posts':
                $display_vars = array(
                    'title'    => 'ACP_ANTI_DOUBLE_POSTS',
                    'vars'    => array(
                        'legend1'                => 'GENERAL_OPTIONS',
                        'adp_enable'            => array('lang' => 'ADP_ENABLE',            'validate' => 'bool',    'type' => 'radio:enabled_disabled', 'explain' => false),
                        'adp_admins'            => array('lang' => 'ADP_ADMINS',            'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
                        'adp_modos'                => array('lang' => 'ADP_MODOS',                'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
                        
                        
'legend2'                => 'GENERAL_SETTINGS',
                        'adp_auto_edit'            => array('lang' => 'ADP_AUTO_EDIT',            'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => true),
                        'adp_text_edit'            => array('lang' => 'ADP_TEXT_EDIT',            'validate' => 'string',    'type' => 'text:25:255', 'explain' => true),
                        
                        
'legend3'                => 'ADP_TIME',
                        'adp_days'                => array('lang' => 'ADP_DAYS',                'validate' => 'int:0',    'type' => 'text:4:5', 'explain' => true),
                        'adp_hours'                => array('lang' => 'ADP_HOURS',                'validate' => 'int:0',    'type' => 'text:4:5', 'explain' => true),
                        'adp_mins'                => array('lang' => 'ADP_MINS',                'validate' => 'int:0',    'type' => 'text:4:5', 'explain' => true),
                        'adp_secs'                => array('lang' => 'ADP_SECS',                'validate' => 'int:0',    'type' => 'text:4:5', 'explain' => true),
                    )
                );
            break;

// End : Anti Double Posts
default:   

Remplacer par
Code: Tout sélectionner
default:   


Ouvrir includes/acp/acp_forums.php
Trouver
Code: Tout sélectionner
        $user->add_lang('acp/forums');  

Ajouter, après
Code: Tout sélectionner
// Begin : Anti Double Posts        
        $user->add_lang('mods/anti_double_post');
// End : Anti Double Posts              

Trouver
Code: Tout sélectionner
                        'forum_password_unset'    => request_var('forum_password_unset', false),  

Ajouter, après
Code: Tout sélectionner
// Begin : Anti Double Posts
                        'adp_enable'            => request_var('adp_enable', true),
                        'adp_admins'            => request_var('adp_admins', false),
                        'adp_modos'                => request_var('adp_modos', false),
                        'adp_auto_edit'            => request_var('adp_auto_edit', true),
                        'adp_text_edit'            => request_var('adp_text_edit', '[b]-- %D --[/b]'),
                        'adp_always'            => request_var('adp_always', true),
                        'adp_days'                => request_var('adp_days', 1),
                        'adp_hours'                => request_var('adp_hours', 0),
                        'adp_mins'                => request_var('adp_mins', 0),
                        'adp_secs'                => request_var('adp_secs', 0),
// End : Anti Double Posts          

Trouver
Code: Tout sélectionner
                            'forum_password_confirm'=> '',  

Ajouter, après
Code: Tout sélectionner
// Begin : Anti Double Posts
                            'adp_enable'            => true,
                            'adp_admins'            => false,
                            'adp_modos'                => false,
                            'adp_auto_edit'            => true,
                            'adp_text_edit'            => '',
                            'adp_always'            => true,
                            'adp_days'                => 1,
                            'adp_hours'                => 0,
                            'adp_mins'                => 0,
                            'adp_secs'                => 0,
// End : Anti Double Posts          

Trouver
Code: Tout sélectionner
                    'S_CAN_COPY_PERMISSIONS'    => ($action != 'edit' || empty($forum_id) || ($auth->acl_get('a_fauth') && $auth->acl_get('a_authusers') && $auth->acl_get('a_authgroups') && $auth->acl_get('a_mauth'))) ? true : false,  

Ajouter, après
Code: Tout sélectionner
// Begin : Anti Double Posts                     
                    'S_ADP_ENABLE'                => ($forum_data['adp_enable']) ? true : false,
                    'S_ADP_ADMINS'                => ($forum_data['adp_admins']) ? true : false,
                    'S_ADP_MODOS'                => ($forum_data['adp_modos']) ? true : false,
                    'S_ADP_AUTO_EDIT'            => ($forum_data['adp_auto_edit']) ? true : false,
                    'S_ADP_ALWAYS'                => ($forum_data['adp_always']) ? true : false,
                    'ADP_TEXT_EDIT'                => $forum_data['adp_text_edit'],
                    'ADP_DAYS'                    => $forum_data['adp_days'],
                    'ADP_HOURS'                    => $forum_data['adp_hours'],
                    'ADP_MINS'                    => $forum_data['adp_mins'],
                    'ADP_SECS'                    => $forum_data['adp_secs'],
// End : Anti Double Posts           


Ouvrir includes/acp/info/acp_board.php
Trouver
Code: Tout sélectionner
                'registration'    => array('title' => 'ACP_REGISTER_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
// Begin : Anti Double Posts 
            
                
'anti_double_posts'    => array('title' => 'ACP_ANTI_DOUBLE_POSTS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),                
// END : Anti Double Posts          

Remplacer par
Code: Tout sélectionner
                'registration'    => array('title' => 'ACP_REGISTER_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),  


Ouvrir language/en/common.php
Trouver
Code: Tout sélectionner
// Begin : Anti Double Posts 
$lang = array_merge($lang, array(
    'ADP_DOUBLE_POST'        => 'You cannot post because you are the latest poster for this topic. Thank you for editing your message instead of posting new post.', 
));
// End : Anti Double Posts
  

Remplacer par
Code: Tout sélectionner


Ouvrir language/en/acp/board.php
Trouver
Code: Tout sélectionner
// Begin : Anti Double Posts
$lang = array_merge($lang, array(
    'ACP_ANTI_DOUBLE_POSTS'    => 'MOD Anti Double Posts settings',
    'ACP_ANTI_DOUBLE_POSTS_EXPLAIN'    => 'Set what to do when an user wants to make double posts.', 

    
'ADP_ENABLE'    => 'MOD activation',
    
    
'ADP_ADMINS'    => 'Administrators can make double post.',
    'ADP_MODOS'    => 'Moderators can make double post.',
    
    
'ADP_AUTO_EDIT'    => 'Add to the latest message',
    'ADP_AUTO_EDIT_EXPLAIN'    => '<strong>Yes</strong> : double posts are added to the topic\'s latest message.<br/><strong>No</strong> : display a mistake message.', 
    
'ADP_TEXT_EDIT'    => 'Separator',
    'ADP_TEXT_EDIT_EXPLAIN'    => 'This text is insered between the latest post and the double post.', 
    
    
'ADP_TIME'    => 'Time settings (those settings are cumulative)', 
    
'ADP_DAYS'    => 'Number of days',
    'ADP_DAYS_EXPLAIN'    => 'Number of days during which double posts are not possible.',
    'ADP_HOURS'    => 'Number of hours',
    'ADP_HOURS_EXPLAIN'    => 'Number of hours during which double posts are not possible.',
    'ADP_MINS'    => 'Number of minutes',
    'ADP_MINS_EXPLAIN'    => 'Number of minutes during which double posts are not possible.',
    'ADP_SECS'    => 'Number of  seconds',
    'ADP_SECS_EXPLAIN'    => 'Number of seconds during which double posts are not possible.',
));
// End : Anti Double Posts
  

Remplacer par
Code: Tout sélectionner


Ouvrir language/en/acp/common.php
Trouver
Code: Tout sélectionner
// Begin : Anti Double Posts 
$lang = array_merge($lang, array(
    'ACP_ANTI_DOUBLE_POSTS'        => 'MOD Anti Double Posts settings',
    'LOG_CONFIG_ANTI_DOUBLE_POSTS'    => '<strong>Set Anti Double Posts MOD</strong>',
));
// End : Anti Double Posts
  

Remplacer par
Code: Tout sélectionner


Ouvrir language/fr/common.php
Trouver
Code: Tout sélectionner
// Begin : Anti Double Posts 
$lang = array_merge($lang, array(
    'ADP_DOUBLE_POST'        => 'Vous ne pouvez pas poster alors que vous êtes le dernier posteur de ce sujet. Merci d\'éditer votre message.',
));
// End : Anti Double Posts
  

Remplacer par
Code: Tout sélectionner


Ouvrir language/fr/acp/board.php
Trouver
Code: Tout sélectionner
// Begin : Anti Double Posts
$lang = array_merge($lang, array(
    'ACP_ANTI_DOUBLE_POSTS'    => 'Paramètres du MOD Anti Double Posts',
    'ACP_ANTI_DOUBLE_POSTS_EXPLAIN'    => 'Configure le comportement du forum lors d\'une tentative de double posts.',

    'ADP_ENABLE'    => 'Activation du MOD',
    
    
'ADP_ADMINS'    => 'Les administrateurs peuvent faire des doubles posts',
    'ADP_MODOS'    => 'Les modérateurs peuvent faire des doubles posts',
    
    
'ADP_AUTO_EDIT'    => 'Fusion avec le dernier message',
    'ADP_AUTO_EDIT_EXPLAIN'    => '<strong>Oui</strong> : le double post est fusionné avec le dernier message du topic.<br/><strong>Non</strong> : un message d\'erreur apparaît.',
    'ADP_TEXT_EDIT'    => 'Texte de séparation',
    'ADP_TEXT_EDIT_EXPLAIN'    => 'Texte délimitant le message original du double post lorsque la fusion est effectuée autmatiquement (oui à l\'option précédente).',
    
    
'ADP_TIME'    => 'Paramètres temporels (les paramètres sont cumulatifs)',
    'ADP_DAYS'    => 'Nombre de jours',
    'ADP_DAYS_EXPLAIN'    => 'Nombre de jours pendant lesquels un double post n\'est pas possible.',
    'ADP_HOURS'    => 'Nombre d\'heures',
    'ADP_HOURS_EXPLAIN'    => 'Nombre d\'heures pendant lesquels un double post n\'est pas possible.',
    'ADP_MINS'    => 'Nombre de minutes',
    'ADP_MINS_EXPLAIN'    => 'Nombre de minutes pendant lesquels un double post n\'est pas possible.',
    'ADP_SECS'    => 'Nombre de secondes',
    'ADP_SECS_EXPLAIN'    => 'Nombre de secondes pendant lesquels un double post n\'est pas possible.',
));
// End : Anti Double Posts
  

Remplacer par
Code: Tout sélectionner


Ouvrir language/fr/acp/common.php
Trouver
Code: Tout sélectionner
// Begin : Anti Double Posts 
$lang = array_merge($lang, array(
    'ACP_ANTI_DOUBLE_POSTS'        => 'Paramètres du MOD Anti Double Posts',
    'LOG_CONFIG_ANTI_DOUBLE_POSTS'    => '<strong>Configuration du MOD Anti Double Posts.</strong>',
));
// End : Anti Double Posts
  

Remplacer par
Code: Tout sélectionner
Webmaster
Administrateur du site
 
Messages: 40
Inscription: Dim 25 Nov 2007 21:33

Re: [2.0.0] Anti Double Posts

Messagede Webmaster » Dim 14 Sep 2008 12:21

Mise à jour 2.0.0 vers 2.0.1
Motif :
  • Ajout d'un lien vers la page d'édition dans le message d'erreur.
  • Suppression du bbcode dans le texte de séparation par défaut.
  • Vérification de l'existence des variables.
  • Correction de la requête SQL.
  • Correction de quelques erreurs dans le fichier d'installation.

Requêtes SQL :
Code: Tout sélectionner
ALTER TABLE phpbb_forums DROP adp_text_edit;
ALTER TABLE phpbb_forums ADD adp_text_edit varchar(255) NOT NULL DEFAULT '-- %D --';    


Ouvrir posting.php
Trouver
Code: Tout sélectionner
if ($post_data['adp_enable'])    

Remplacer par :
Code: Tout sélectionner
if (!empty($post_data['adp_enable']))
    

Trouver
Code: Tout sélectionner
            if(!$post_data['adp_admins'] && $auth->acl_get('a_')) //Check if user is admin and admins are allowed to double post
            {
                $mod_adp = true;
            }
            else if(!$post_data['adp_modos'] && $auth->acl_get('m_',$forum_id)) //Check if user is moderator and moderators are allowed to double post
            {
                $mod_adp = true;
            }
            else if(!$auth->acl_get('u_adp_allow'))
            {
                $mod_adp = true;
            }  

Remplacer par
Code: Tout sélectionner
            if(!$post_data['adp_admins'] && $auth->acl_get('a_')) //Check if user is admin and admins are allowed to double post
            {
                $mod_adp = true;
            }
            else if(!$post_data['adp_modos'] && $auth->acl_get('m_',$forum_id) && !$auth->acl_get('a_')) //Check if user is moderator and moderators are allowed to double post
            {
                $mod_adp = true;
            }
            else if(!$auth->acl_get('u_adp_allow') && !$auth->acl_get('a_') && !$auth->acl_get('m_',$forum_id))
            {
                $mod_adp = true;
            }  

Trouver
Code: Tout sélectionner
    if ($mod_adp && !$post_data['adp_auto_edit'])
    {
// Begin : Anti Double Posts        
        $user->add_lang('mods/anti_double_post');
// End : Anti Double Posts
        trigger_error('ADP_DOUBLE_POST');
    }    

Remplacer par
Code: Tout sélectionner
    if ($mod_adp && !$post_data['adp_auto_edit'])
    {
        $user->add_lang('mods/anti_double_post');
        $adp_error = sprintf($user->lang['ADP_DOUBLE_POST'], '<a href="' . append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=edit&amp;f=' . $forum_id . '&amp;p=' . $adp_topic_last_post_id) . '">', '</a>');

        trigger_error($adp_error);
    }    

Trouver
Code: Tout sélectionner
    // Begin : Anti Double Posts 
                if ($submit && $mod_adp && $post_data['adp_auto_edit'])
                {        
                    $mode 
= 'edit';
                    $post_id = $adp_topic_last_post_id;
                    $post_data['poster_id'] = $adp_topic_last_poster_id;
                    $post_data['post_subject'] = $adp_post_subject;
                    $post_data['post_checksum'] = $adp_post_checksum;
                    $post_data['username'] = $user->data['username'];
                    
                    $post_data
['poll_title'] = $adp_poll_title;
                    $post_data['poll_start'] = $adp_poll_start;
                    $post_data['poll_length'] = $adp_poll_length;
                    $post_data['poll_max_options'] = $adp_poll_max_options;
                    $post_data['poll_last_vote'] = $adp_poll_last_vote;
                    $post_data['vote_change'] = $adp_poll_vote_change;
                    $post_data['poll_option_text'] = $adp_poll_option_text;

                // Attachments
                    // Do not change to SELECT *
                    $sql = 'SELECT attach_id, is_orphan, attach_comment, real_filename
                        FROM '
 . ATTACHMENTS_TABLE . "
                        WHERE post_msg_id = $post_id
                            AND in_message = 0
                            AND is_orphan = 0
                        ORDER BY filetime DESC"
;
                    $result = $db->sql_query($sql);
                    $message_parser->attachment_data = array_merge($message_parser->attachment_data, $db->sql_fetchrowset($result));
                    $db->sql_freeresult($result);
                // End Attachments
                    
                    $message_parser
->bbcode_uid = $adp_post_bbcode_uid;
                    $message_parser->bbcode_bitfield = $adp_post_bbcode_bitfield;

                    //Decode last post
                    decode_message($adp_post_text,$adp_post_bbcode_uid);
                    
                    
// Decode URLs
                    $adp_post_text = str_replace(array('&#58;', '&#46;'), array(':', '.'), $adp_post_text);
                    
                    
//Parse "%D" in the ADP Text edit
                    $post_data['adp_text_edit'] = str_replace("%D", $user->format_date($current_time), $post_data['adp_text_edit']);                
                    
                    
//Do the job...
                    $message_parser->message = $adp_post_text . '<br /><br />' . $post_data['adp_text_edit'] . '<br /><br />' . $message_parser->message;
                }
    // End : Anti Double Posts                        

Remplacer par
Code: Tout sélectionner
// Begin : Anti Double Posts 
    if ($submit && $mod_adp && !empty($post_data['adp_auto_edit']))
    {        
        $mode 
= 'edit';
        $post_id = $adp_topic_last_post_id;
        $post_data['poster_id'] = $adp_topic_last_poster_id;
        $post_data['post_subject'] = $adp_post_subject;
        $post_data['post_checksum'] = $adp_post_checksum;
        $post_data['username'] = $user->data['username'];
        
        $post_data
['poll_title'] = $adp_poll_title;
        $post_data['poll_start'] = $adp_poll_start;
        $post_data['poll_length'] = $adp_poll_length;
        $post_data['poll_max_options'] = $adp_poll_max_options;
        $post_data['poll_last_vote'] = $adp_poll_last_vote;
        $post_data['vote_change'] = $adp_poll_vote_change;
        $post_data['poll_option_text'] = $adp_poll_option_text;

        // Attachments
        // Do not change to SELECT *
        $sql = 'SELECT attach_id, is_orphan, attach_comment, real_filename
            FROM '
 . ATTACHMENTS_TABLE . "
            WHERE post_msg_id = $post_id
                AND in_message = 0
                AND is_orphan = 0
            ORDER BY filetime DESC"
;
        $result = $db->sql_query($sql);
        $message_parser->attachment_data = array_merge($message_parser->attachment_data, $db->sql_fetchrowset($result));
        $db->sql_freeresult($result);
        // End Attachments
        
        $message_parser
->bbcode_uid = $adp_post_bbcode_uid;
        $message_parser->bbcode_bitfield = $adp_post_bbcode_bitfield;

        //Decode last post
        decode_message($adp_post_text,$adp_post_bbcode_uid);
        
        
// Decode URLs
        $adp_post_text = str_replace(array('&#58;', '&#46;'), array(':', '.'), $adp_post_text);
        
        
//Parse "%D" in the ADP Text edit
        $post_data['adp_text_edit'] = str_replace("%D", $user->format_date($current_time), $post_data['adp_text_edit']);                
        
        
//Do the job...
        $message_parser->message = $adp_post_text . '<br /><br />' . $post_data['adp_text_edit'] . '<br /><br />' . $message_parser->message;
    }
// End : Anti Double Posts                


Ouvrir includes/acp/acp_forums.php
Trouver
Code: Tout sélectionner
                        'adp_text_edit'            => request_var('adp_text_edit', '[b]-- %D --[/b]'),    

Remplacer par
Code: Tout sélectionner
                        'adp_text_edit'            => request_var('adp_text_edit', '-- %D --'),    


Ouvrir language/en/mods/anti_double_post.php
Trouver
Code: Tout sélectionner
    'ADP_DOUBLE_POST'        => 'You cannot post because you are the last poster in this topic. Please edit your post.',    

Remplacer par
Code: Tout sélectionner
    'ADP_DOUBLE_POST'        => 'You cannot post because you are the last poster in this topic.<br /><br />%sPlease edit your post%s.',    

Trouver
Code: Tout sélectionner
    'ADP_ADMINS'    => 'Administrators can make double post.',
    'ADP_MODOS'        => 'Moderators can make double post.',    

Remplacer par
Code: Tout sélectionner
    'ADP_ADMINS'            => 'Administrators can make double post',
    'ADP_MODOS'                => 'Moderators can make double post',    


Ouvrir language/fr/mods/anti_double_post.php
Trouver
Code: Tout sélectionner
    'ADP_DOUBLE_POST'        => 'Vous ne pouvez pas poster alors que vous êtes le dernier posteur du sujet. Merci d\'éditer votre message. ',        

Remplacer par
Code: Tout sélectionner
    'ADP_DOUBLE_POST'        => 'Vous ne pouvez pas poster alors que vous êtes le dernier posteur du sujet.<br /><br />%sMerci d\'éditer votre message%s. ',        
Webmaster
Administrateur du site
 
Messages: 40
Inscription: Dim 25 Nov 2007 21:33

Suivante

Retourner vers Mods pour phpBB3.0.x

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité