Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 30-09-2009 20:29:35

Dk
Membre

Mod Hide

Bonsoir,

Voilà le mod Hide permettant de cacher un texte/lien tant que la personne ne répond pas au sujet.
Le problème c'est qu'il ne fonctionne plus correctement.

#
#---------[ 2. OPEN ]-----------------------------------------------------
#
    include/parser.php
#
#---------[ 3. FIND ]-----------------------------------------------------
#

//
// Convert BBCodes to their HTML equivalent
//
function do_bbcode($text)
{
    global $lang_common, $pun_user;
    
#
#---------[ 4. AFTER, ADD ]------------------------------------------------
#

// MOD HIDE TAG begin
require PUN_ROOT.'lang/'.$pun_user['language'].'/topic.php';
// MOD HIDE TAG end

#
#---------[ 5. FIND ]-----------------------------------------------------
#

    $pattern = array('#\[b\](.*?)\[/b\]#s',
    
#
#---------[ 6. BEFORE, ADD ]-----------------------------------------------
#

// MOD HIDE TAG begin
    if (strpos($text, 'hide') !== false && strpos($text, '/hide') !== false)
    {
        if ($pun_user['is_guest'])
        {
                $text = preg_replace("#\[hide\](.+?)\[/hide\]#is", '<b>['.$lang_topic['Hidden text guest'].']</b>', $text);
                $text = preg_replace("#\[hide\=\"(.+?)\"\](.+?)\[/hide\]#is", '<b>['.$lang_topic['Hidden text guest'].']</b>', $text);
        }
        else if(($pun_user['g_id'] == PUN_MOD) || ($pun_user['g_id'] == PUN_ADMIN))
        {
            $text = preg_replace("#\[hide\=(.+?)\](.+?)\[/hide\]#is", '[hide]$2[/hide]', $text);
            $text = str_replace('[hide]', '<blockquote>'.$lang_topic['Hidden text'].':<br><i>', $text);
            $text = preg_replace('#\[\/hide\]\s*#', '</i></blockquote>', $text);

        }
        else 
        {

            $occurances = preg_match_all("#\[hide\=.+?\](.+?)\[/hide\]#is", $text, $temp); 
            for($i=0;$i<=$occurances;$i++) 
            { 
                preg_match("#\[hide\=(.+?)\].+?\[/hide\]#i", $text,$user_post);
                
                    $text = preg_replace("#\[hide\=(.+?)\](.+?)\[/hide\]#i", '[hide]$2[/hide]', $text,1);
                if (strcmp($user_post[1],$pun_user['username']) == 0 ){
                    $text = str_replace('[hide]', '<blockquote>'.$lang_topic['Hidden text'].':<br><i>', $text);
                    $text = preg_replace('#\[\/hide\]\s*#', '</i></blockquote>', $text,1);        
                }
     } 
     $text = preg_replace("#\[hide\](.+?)\[/hide\]#i", '<b>['.$lang_topic['Hidden text'].']</b>', $text,1);
            

        }
    }    
// MOD HIDE TAG end

#
#---------[ 7. OPEN ]-----------------------------------------------------
#
    post.php
#
#---------[ 8. FIND ]-----------------------------------------------------
#

        $q_message = str_replace('[img]', '[url]', $q_message);
        $q_message = str_replace('[/img]', '[/url]', $q_message);

#
#---------[ 9. ADD, AFTER ]------------------------------------------------
#

// MOD HIDE TAG begin
        $q_message = preg_replace("#\[hide](.+?)\[/hide\]#is", '[b][[i]'.$lang_topic['Hidden text'].'.[/i]][/b]', $q_message);
        $q_message = preg_replace("#\[hide\=.+?].+?\[/hide\]#is", '[b][[i]'.$lang_topic['Hidden text'].'.[/i]][/b]', $q_message);

// MOD HIDE TAG end

#
#---------[ 10. OPEN ]----------------------------------------------------
#
    viewtopic.php

#
#---------[ 11. FIND ]----------------------------------------------------
#
 LIMIT '.$start_from.','.$pun_user['disp_posts'], true

#
#---------[ 12. REPLACE WITH ]-----------------------------------------------
#
 LIMIT '.$start_from.','.$pun_user['disp_posts']

#
#---------[ 13. FIND ]----------------------------------------------------
#
$cur_post['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies']);

#
#---------[ 14. BEFORE, ADD ]-----------------------------------------------
#
// MOD HIDE TAG begin
$result_num_post = $db->query('SELECT count(message) as num_message FROM  '.$db->prefix.'posts WHERE poster_id='.$pun_user['id'].' AND topic_id='.$id, true) or error('Cannot found the amount of message of the user', __FILE__, __LINE__, $db->error());
$num_post_user_in_topic = $db->fetch_assoc($result_num_post);
$pun_user['num_post_in_topic'] = $num_post_user_in_topic['num_message'];
// MOD HIDE TAG end

#
#---------[ 15. OPEN ]----------------------------------------------------
#
    lang/LANGUAGE/topic.php
#
#---------[ 16. FIND ]----------------------------------------------------
#

'Quick post'        =>    'Quick post',

#
#---------[ 17. AFTER, ADD ]-----------------------------------------------
#

// MOD HIDE TAG begin
'Hidden text guest'            =>    'You must login to view hidden text\link.',
'Hidden text'                =>    'Hidden Text\Link',
'Hidden text num_post'           =>  'You need to reply to this post to see the hidden text\link.',

#
#---------[ 18.  OPEN ]---------------------------------------------------
#
    search.php

#
#---------[ 19. FIND ]----------------------------------------------------
#
                $message = str_replace("\n", '<br />', pun_htmlspecialchars($search_set[$i]['message']));

#
#---------[ 20. BEFORE, ADD ]-----------------------------------------------
#
                // MOD HIDE TAG begin
                require PUN_ROOT.'lang/'.$pun_user['language'].'/topic.php';
                $search_set[$i]['message'] = preg_replace('#\[hide\](.*?)\[/hide\]#s',$lang_topic['Hidden text'],$search_set[$i]['message']);
                $search_set[$i]['message'] = preg_replace('#\[hide\](.*?)$#s',$lang_topic['Hidden text'],$search_set[$i]['message']);
                // MOD HIDE TAG end
#
#---------[ 21. SAVE/UPLOAD ]---------------------------------------------------
#

Vous pouvez le retrouver ici : http://www.punres.org/viewtopic.php?pid=19459#p19459

Le problème est que, même si vous répondez au sujet, le texte/lien ne s'affiche pas. Il s'affiche uniquement si on "quote" le message ayant les balises [hide].

Si une âme charitable pouvait le rendre opérationnel, cela serait sympathique vu que c'est un des mods les plus recherchés.

Dernière modification par Dk (30-09-2009 20:30:06)

Hors ligne

#2 30-09-2009 21:48:11

fanf73
Wik-wiki

Re : Mod Hide

Je doute que ce soit l'une des mods les plus recherchées, à part pour le warez peut-être...

Quand tu dis qu'il ne fonctionne plus correctement, c'est qu'il marchait bien avant et que ce n'est plus le cas depuis que tu modifié certains fichiers ?


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#3 04-10-2009 17:53:31

TLP
Membre

Re : Mod Hide

Bonjour,

J'utilise cette mod, sauf pour les x billets, j'avais remarqué une erreur dans le script ou du moins une incompatibilité.

Sur mon forum, il faut être membre d'un groupe pour pouvoir voir certains messages, j'ai modifié dans le fichier parser.php :

if ($pun_user['is_guest'])
        {
                $text = preg_replace("#\[hide\](.+?)\[/hide\]#is", '<b>['.$lang_topic['Hidden text guest'].']</b>', $text);
                $text = preg_replace("#\[hide\=\"(.+?)\"\](.+?)\[/hide\]#is", '<b>['.$lang_topic['Hidden text guest'].']</b>', $text);
        }

Par :

if ($pun_user['g_id'] == PUN_ADMIN || $pun_user['g_id'] == ID_GROUPE)
        {
            $text = TES_VARIABLES_ETC;
        }

Ensuite si c'est un visiteur, j'ai modifié :

else if(($pun_user['g_id'] == PUN_MOD) || ($pun_user['g_id'] == PUN_ADMIN))
        {
            $text = preg_replace("#\[hide\=(.+?)\](.+?)\[/hide\]#is", '[hide]$2[/hide]', $text);
            $text = str_replace('[hide]', '<blockquote>'.$lang_topic['Hidden text'].':<br><i>', $text);
            $text = preg_replace('#\[\/hide\]\s*#', '</i></blockquote>', $text);

        }
        else 
        {

            $occurances = preg_match_all("#\[hide\=.+?\](.+?)\[/hide\]#is", $text, $temp); 
            for($i=0;$i<=$occurances;$i++) 
            { 
                preg_match("#\[hide\=(.+?)\].+?\[/hide\]#i", $text,$user_post);
                
                    $text = preg_replace("#\[hide\=(.+?)\](.+?)\[/hide\]#i", '[hide]$2[/hide]', $text,1);
                if (strcmp($user_post[1],$pun_user['username']) == 0 ){
                    $text = str_replace('[hide]', '<blockquote>'.$lang_topic['Hidden text'].':<br><i>', $text);
                    $text = preg_replace('#\[\/hide\]\s*#', '</i></blockquote>', $text,1);        
                }
     } 
     $text = preg_replace("#\[hide\](.+?)\[/hide\]#i", '<b>['.$lang_topic['Hidden text'].']</b>', $text,1);
            

        }
    }

Par :

else 
        {
            $text = TES_VARIABLES_ETC;
        }
    }

C'est donc une version simplifiée mais qui fonctionne pour ma part, bon courage.

Hors ligne

Pied de page des forums