Показать сообщение отдельно
Старый 03.08.2011, 08:01 Вверх   #5
Опытный пользователь
 
Аватар для FEARKILLER
FEARKILLER вне форума
Доп. информация
По умолчанию Fix for Comments Tags

Цитата Сообщение от Serberg Посмотреть сообщение
LinT, попробуй у нас на форуме заюзать это
А вы Сергей не острите)) ведь если писать новое сообщение в этом теге то он правда вырежется, но если создать тему новую и там применить этот тег то )))) он зарабатает, так как там нету хука нужного и нету кода чтобы он вырезал эти теги если пользуется ими простой юзер, не верите могу продемонстрировать на этом форуме, тему потом удалите, но лучше поверить на слово.

Цитата Сообщение от LinT Посмотреть сообщение
Именно) Это и имел ввиду, когда писал сообщение, но не так сформулировал


То же самое, в ЛС приходит с комментарием администратора. У меня на форуме есть публичные сообщения - там тоже тег не вырезается. По большому счету оно не критично, но все-таки по большому счету хорошо бы это исправить.

Раз проблема не у меня одного, значит надо фиксить хак, а не искать проблему в своем форуме. За это уже спасибо)
И так фикс для хака Comments Tags:

Инструкция:

Открываем файл: private.php

Находим там:

PHP код:
$pm['folderid'] =& $vbulletin->GPC['folderid']; 
Ниже добавляем:
PHP код:
($hook vBulletinHook::fetch_hook('commtag_illegaluse_newpm')) ? eval($hook) : false
Сохраняем и открываем файл: newthread.php

Находим там:

PHP код:
    if ($vbulletin->GPC['wysiwyg'])
    {
        require_once(
DIR '/includes/functions_wysiwyg.php');
        
$newpost['message'] = convert_wysiwyg_html_to_bbcode($vbulletin->GPC['message'], $foruminfo['allowhtml']);
    }
    else
    {
        
$newpost['message'] =& $vbulletin->GPC['message'];
    } 
Ниже добавляем:
PHP код:
($hook vBulletinHook::fetch_hook('commtag_illegaluse_newthread')) ? eval($hook) : false
Сохраняем и открываем файл: visitormessage.php

Находим там:

PHP код:
        if ($vbulletin->GPC['ajax'])
        {
            
$message['message'] = convert_urlencoded_unicode($message['message']);
        } 

Ниже добавляем:

PHP код:
($hook vBulletinHook::fetch_hook('commtag_illegaluse_visitormessage')) ? eval($hook) : false
Сохраняем и открываем файл: group.php

Находим там:

PHP код:
        if ($vbulletin->GPC['ajax'])
        {
            
$message['message'] = convert_urlencoded_unicode($message['message']);
        } 
Ниже добавляем:
PHP код:
($hook vBulletinHook::fetch_hook('commtag_illegaluse_groupmessage')) ? eval($hook) : false
Сохраняем и открываем файл: picturecomment.php

Находим там:

PHP код:
        if ($vbulletin->GPC['ajax'])
        {
            
$message['message'] = convert_urlencoded_unicode($message['message']);
        } 
Ниже добавляем:
PHP код:
($hook vBulletinHook::fetch_hook('commtag_illegaluse_picturecomment')) ? eval($hook) : false
Сохраняем и открываем файл: ../includes/xml/hooks_commtag.xml

Находим там:

PHP код:
        <hook>commtag_illegaluse</hook
Ниже добавляем:
PHP код:
        <hook>commtag_illegaluse_visitormessage</hook>
        <
hook>commtag_illegaluse_groupmessage</hook>
        <
hook>commtag_illegaluse_picturecomment</hook>
        <
hook>commtag_illegaluse_newthread</hook>
        <
hook>commtag_illegaluse_newpm</hook
Сохраняем файл и переходим в "Админку->Продукты и модули->Добавить новый модуль"

И пишем следующее:

===================================================

Первый модуль:

Продукт: Comments Tags
Местоположение модуля: commtag_illegaluse_newpm (Comments Tags)
Заголовок: Comments Tags: defence newpm
Порядок выполнения: 5
Код PHP модуля:

PHP код:
if ($vbulletin->options['commtag_onoff']){
    
// ###################### Start comments filter #######################
    
$ct_adm explode(","$vbulletin->options['commtag_adm']);
    
$ct_mod explode(","$vbulletin->options['commtag_mod']);
    if (
in_array($vbulletin->userinfo['usergroupid'], $ct_adm))
    {
        
//Allow comments if admin
        
$pm['message'] = preg_replace ('/\\[(ADMIN)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$pm['message']);
    }
    else if (
in_array($vbulletin->userinfo['usergroupid'], $ct_mod))
    {
        
//Allow comments if mod
        
if ($vbulletin->options['commtag_illegal']){
            
$pm['message'] = preg_replace ('/\\[(ADMIN)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$pm['message']);
        }
        
$pm['message'] = preg_replace ('/\\[(MOD)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$pm['message']);
    }
    else
    {
        
//Cut comments if illegal
        
if ($vbulletin->options['commtag_illegal']){
            
$pm['message'] = preg_replace ('/\\[(ADMIN|MOD)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$pm['message']);
        }
    }

Модуль включен: Да

===================================================

Второй модуль:

Продукт: Comments Tags
Местоположение модуля: commtag_illegaluse_newthread (Comments Tags)
Заголовок: Comments Tags: defence newthread
Порядок выполнения: 5
Код PHP модуля:

PHP код:
if ($vbulletin->options['commtag_onoff']){
    
// ###################### Start comments filter #######################
    
$ct_adm explode(","$vbulletin->options['commtag_adm']);
    
$ct_mod explode(","$vbulletin->options['commtag_mod']);
    if (
in_array($vbulletin->userinfo['usergroupid'], $ct_adm))
    {
        
//Allow comments if admin
        
$newpost['message'] = preg_replace ('/\\[(ADMIN)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$newpost['message']);
    }
    else if (
in_array($vbulletin->userinfo['usergroupid'], $ct_mod))
    {
        
//Allow comments if mod
        
if ($vbulletin->options['commtag_illegal']){
            
$newpost['message'] = preg_replace ('/\\[(ADMIN)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$newpost['message']);
        }
        
$newpost['message'] = preg_replace ('/\\[(MOD)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$newpost['message']);
    }
    else
    {
        
//Cut comments if illegal
        
if ($vbulletin->options['commtag_illegal']){
            
$newpost['message'] = preg_replace ('/\\[(ADMIN|MOD)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$newpost['message']);
        }
    }

Модуль включен: Да

===================================================

Третий модуль:

Продукт: Comments Tags
Местоположение модуля: commtag_illegaluse_picturecomment (Comments Tags)
Заголовок: Comments Tags: defence picturecomment
Порядок выполнения: 5
Код PHP модуля:

PHP код:
if ($vbulletin->options['commtag_onoff']){
    
// ###################### Start comments filter #######################
    
$ct_adm explode(","$vbulletin->options['commtag_adm']);
    
$ct_mod explode(","$vbulletin->options['commtag_mod']);
    if (
in_array($vbulletin->userinfo['usergroupid'], $ct_adm))
    {
        
//Allow comments if admin
        
$message['message'] = preg_replace ('/\\[(ADMIN)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$message['message']);
    }
    else if (
in_array($vbulletin->userinfo['usergroupid'], $ct_mod))
    {
        
//Allow comments if mod
        
if ($vbulletin->options['commtag_illegal']){
            
$message['message'] = preg_replace ('/\\[(ADMIN)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$message['message']);
        }
        
$message['message'] = preg_replace ('/\\[(MOD)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$message['message']);
    }
    else
    {
        
//Cut comments if illegal
        
if ($vbulletin->options['commtag_illegal']){
            
$message['message'] = preg_replace ('/\\[(ADMIN|MOD)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$message['message']);
        }
    }

Модуль включен: Да

===================================================

Червёртый модуль:

Продукт: Comments Tags
Местоположение модуля: commtag_illegaluse_groupmessage (Comments Tags)
Заголовок: Comments Tags: defence groupmessage
Порядок выполнения: 5
Код PHP модуля:

PHP код:
if ($vbulletin->options['commtag_onoff']){
    
// ###################### Start comments filter #######################
    
$ct_adm explode(","$vbulletin->options['commtag_adm']);
    
$ct_mod explode(","$vbulletin->options['commtag_mod']);
    if (
in_array($vbulletin->userinfo['usergroupid'], $ct_adm))
    {
        
//Allow comments if admin
        
$message['message'] = preg_replace ('/\\[(ADMIN)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$message['message']);
    }
    else if (
in_array($vbulletin->userinfo['usergroupid'], $ct_mod))
    {
        
//Allow comments if mod
        
if ($vbulletin->options['commtag_illegal']){
            
$message['message'] = preg_replace ('/\\[(ADMIN)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$message['message']);
        }
        
$message['message'] = preg_replace ('/\\[(MOD)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$message['message']);
    }
    else
    {
        
//Cut comments if illegal
        
if ($vbulletin->options['commtag_illegal']){
            
$message['message'] = preg_replace ('/\\[(ADMIN|MOD)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$message['message']);
        }
    }

Модуль включен: Да

===================================================

Пятый модуль:

Продукт: Comments Tags
Местоположение модуля: commtag_illegaluse_visitormessage (Comments Tags)
Заголовок: Comments Tags: defence visitormessage
Порядок выполнения: 5
Код PHP модуля:

PHP код:
if ($vbulletin->options['commtag_onoff']){
    
// ###################### Start comments filter #######################
    
$ct_adm explode(","$vbulletin->options['commtag_adm']);
    
$ct_mod explode(","$vbulletin->options['commtag_mod']);
    if (
in_array($vbulletin->userinfo['usergroupid'], $ct_adm))
    {
        
//Allow comments if admin
        
$message['message'] = preg_replace ('/\\[(ADMIN)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$message['message']);
    }
    else if (
in_array($vbulletin->userinfo['usergroupid'], $ct_mod))
    {
        
//Allow comments if mod
        
if ($vbulletin->options['commtag_illegal']){
            
$message['message'] = preg_replace ('/\\[(ADMIN)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$message['message']);
        }
        
$message['message'] = preg_replace ('/\\[(MOD)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$message['message']);
    }
    else
    {
        
//Cut comments if illegal
        
if ($vbulletin->options['commtag_illegal']){
            
$message['message'] = preg_replace ('/\\[(ADMIN|MOD)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$message['message']);
        }
    }

Модуль включен: Да

===================================================

Шестой модуль:

Продукт: Comments Tags
Местоположение модуля: profile_updatesignature_start
Заголовок: Comments Tags: defence signature
Порядок выполнения: 5
Код PHP модуля:

PHP код:
if ($vbulletin->options['commtag_onoff']){
    
// ###################### Start comments filter #######################
    
$ct_adm explode(","$vbulletin->options['commtag_adm']);
    
$ct_mod explode(","$vbulletin->options['commtag_mod']);
    if (
in_array($vbulletin->userinfo['usergroupid'], $ct_adm))
    {
        
//Allow comments if admin
        
$signature preg_replace ('/\\[(ADMIN)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$signature);
    }
    else if (
in_array($vbulletin->userinfo['usergroupid'], $ct_mod))
    {
        
//Allow comments if mod
        
if ($vbulletin->options['commtag_illegal']){
            
$signature preg_replace ('/\\[(ADMIN)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$signature);
        }
        
$signature preg_replace ('/\\[(MOD)](.*)\\[\\/\\1\\]/siU''[\\1="'.$vbulletin->userinfo['username'].'"]\\2[/\\1]'$signature);
    }
    else
    {
        
//Cut comments if illegal
        
if ($vbulletin->options['commtag_illegal']){
            
$signature preg_replace ('/\\[(ADMIN|MOD)=(&quot;|"|\'|)(.*)\\2\\](.*)\\[\\/\\1\\]/siU''\\4'$signature);
        }
    }

Модуль включен: Да

===================================================

Ps. Вот вообщем-то и все исправления ((8 переписывать хак не стал, ибо не моё и потом чтобы притензий не было ничего не стал делать.

И ещё, я не понимаю зачем эти кнопки показываются везде?? Я например выключил у себя модуль "Comments Tags: button"
И добавил в ручную эти кнопки только в шаблон: postbit_quickedit
Чтобы только при редактировании чужого поста можно было воспользоваться этим тегом, в быстром редактировании только, в расширенном не видно будет этой кнопки, но можно написать в ручную х)))

Вот скриншот: http://radikal.ru/F/s57.radikal.ru/i...ecff9.jpg.html

Вообщем кому интересно:
Отключаем модуль: Comments Tags: button
Идём в шаблон: postbit_quickedit
Находим там:

PHP код:
<if condition="$show['quote_bbcode']">
            <
td><img src="$stylevar[imgdir_editor]/separator.gif" width="6" height="20" alt="" /></td>
            <
td><div class="imagebutton" id="{$editorid}_cmd_wrap0_quote"><img src="$stylevar[imgdir_editor]/quote.gif" width="21" height="20" alt="$vbphrase[wrap_quote_tags]/></div></td>
        </if> 
Ниже добавляем:
PHP код:
        <if condition="$vBeditTemplate['extrabuttons'] != '' ">
                    <
td><img src="$stylevar[imgdir_editor]/separator.gif" width="6" height="20" alt="" /></td>
                    <if 
condition="is_member_of($bbuserinfo, 6)">
                        <
td><div class="imagebutton" id="{$editorid}_cmd_wrap0_admin"><img src="$stylevar[imgdir_editor]/comm_admin.gif" alt="Вставить BB код [ADMIN] вокруг выделенного текста" width="21" height="20" border="0" /></div></td>
                    </if>
                    <if 
condition="is_member_of($bbuserinfo, 5,7)">
                        <
td><div class="imagebutton" id="{$editorid}_cmd_wrap0_mod"><img src="$stylevar[imgdir_editor]/comm_mod.gif" alt="Вставить BB код [MOD] вокруг выделенного текста" width="21" height="20" border="0" /></div></td>
                    </if>
        </if> 
Иды групп свои только пишите 8)))


И ещё одна бага как бы, я давно её нашёл, наверное как только поставил, дело в том что когда модер\админ редактирует пост юзера и пишет в этом теге, после этого юзер не видит кнопку "редактировать", но ссылка то на редактирование поста работает, в расширенном режиме только)), то есть уберается только кнопка(картинка с ссылкой, но ссылка остаётся рабочей на редактирование этого поста), а если посмотреть ид поста и в ручную вписать ссылку в адресную строку, но мы отредактим пост после модера или админа, так же юзер увидит тег [ADMIN][/ADMIN] и может воспользоваться ими, хотя если профиксить как я написал, то толку от этого что юзер узнает код мало (((8
Вообщем начсёт кнопки, это по сути тоже бага, но её я править не буду, пусть автор уже пыжится с этим (х

Последний раз редактировалось FEARKILLER; 06.08.2011 в 12:41.. Причина: Добавлена информация, шестой модуль, вырезание тега из подписи юзеров.
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
 
Время генерации страницы 0.20992 секунды с 9 запросами