Отредактировал и модифицировал код.
Перечисление изменений:
[color=цвет]текст[/color] - цветной текст, причем цвет задаем сами(после знака равно разрешено только 20 символов, менять не стал изза сохранения универсальности);
[ghide]текст[/ghide] - тест видимый для администрации, !модераторам! и для пользователя написавшего сообщение(более продуманное поведение кода, FlySelf за идею спасибо);
Собственно код который необходимо добавить в файл incfiles/func.php
// Это добавляем в функцию tags()
$var = preg_replace('#\[color=([\#a-zA-Z0-9]{20})\](.*?)\[/color\]#si', '<span style="color:\1">\2</span>', $var);
$var = preg_replace('#\[sub\](.*?)\[/sub\]#si', '<span style="vertical-align:sub">\1</span>', $var);
$var = preg_replace('#\[sup\](.*?)\[/sup\]#si', '<span style="vertical-align:super">\1</span>', $var);
$var = preg_replace('#\[offtop\](.*?)\[/offtop\]#si', '<div style="color:#ccc;margin:1px;padding:2px;border:1px dashed #ccc">\1</div>', $var);
$var = preg_replace_callback('#\[hide\](.*?)\[/hide\]#si', 'bbHide', $var);
$var = preg_replace_callback('#\[ghide\](.*?)\[/ghide\]#si', 'bbGHide', $var);
$var = preg_replace('#\[\*\]#si', '<li/>', $var);
$var = preg_replace('#\[hr\]#si', '<hr style="margin:2px;border:0;border-bottom:1px dashed #aaa"/>', $var);
// Это добавляем в notags(), Похожее естественно заменяем
$var = strtr($var, array('' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '',
'' => '', '
' => '', '[*]' => '', '[hr]' => ''));
$var = preg_replace('{\[color=(?:.+?)\](.*?)\[/color\]}si','\1',$var);
$var = preg_replace('{\[sub\](.*?)\[/sub\]}si','(sub:\1)',$var);
$var = preg_replace('{\[sup\](.*?)\[/sup\]}si','(sup:\1)',$var);
$var = preg_replace('{\[offtop\](.*?)\[/offtop\]}si','(\1)',$var);
$var = preg_replace('{\[hide\](.*?)\[/hide\]}si','',$var);
$var = preg_replace('{\[ghide=(.*?)\](.*?)\[/ghide\]}si','',$var);
// Добавляем после функции tags() следующие четыре
function w_gHide($gh){
// gHide valid finction by SunRise
// Данной функцией обрабатывать ВХОДЯЩИЕ данные
global $user_id, $rights;
if(preg_match('#\[ghide=(.*?)\](.*?)\[\/ghide\]#si',$gh))
{
if($rights>=3)
{
return $gh;
}
else
{
return '[Не хулигань!]';
}
}
elseif(preg_match('#\[ghide\](.*?)\[\/ghide\]#si',$gh))
{
return preg_replace('#\[ghide\](.*?)\[\/ghide\]#si', '[ghide=' . $user_id . ']\1[/ghide]', $gh);
}
else
{
return $gh;
}
}
function e_gHide($gh){
// gHide valid finction by SunRise
// Данной функцией обрабатывать ИСХОДЯЩИЕ К РЕДАКТИРОВАНИЮ данные
global $user_id, $rights;
if(preg_match('#\[ghide=(.*?)\](.*?)\[\/ghide\]#si',$gh))
{
if($rights>=3)
{
return preg_replace('#\[ghide=(.*?)\](.*?)\[\/ghide\]#si', '[ghide=\1]\2[/ghide]', $gh);
}
else
{
return preg_replace('#\[ghide=(?:.*?)\](.*?)\[\/ghide\]#si', '[ghide]\1[/ghide]', $gh);
}
}
else
{
return $gh;
}
}
function bbHide($hide) {
// Hide finction by SunRise
global $user_id;
if(!$user_id)
{
return '<div style="background:#EAF1F4;border:1px solid #84BEE6;color:#2383A3;margin:2px;padding:2px">Скрытый текст! Могут прочесть только зарегистрированные пользователи.</div>';
}
else
{
return '<div style="background:#EAF1F4;border:1px solid #84BEE6;color:#2383A3;margin:2px;padding:2px">' . $hide[1] . '</div>';
}
}
function bbGHide($ghide) {
// gHide function by SunRise
global $user_id, $rights;
if($user_id && $user_id == $ghide[1] || $rights>=3)
{
return '<div style="background:#FFDFD7;border:1px solid #CF3603;color:#B62703;margin:2px;padding:2px">' . $ghide[2] . '</div>';
}
else
{
return '<div style="background:#FFDFD7;border:1px solid #CF3603;color:#B62703;margin:2px;padding:2px">Скрытый текст! Могут прочесть только администрация и пользователь написавший сообщение.</div>';
}
}
Добавились 2 функции необходимые для работы gHide тэга.
1. w_gHide() - ее следует обрабатывать текстовые данные перед записью в БД.
2. e_gHide() - ее следует обрабатывать текстовые данные перед перед подачей на редактирование в соответствующее текстовое поле.