Wedframe
08-21-2015, 09:35 AM
Hello! I was create my own bbcode, with check of privileges to use it, according to usergroup-settings in admincp.
At hooks:
bbcode_create
if(!function_exists ('handle_addshare'))
{
function handle_addshare (&$theobj, &$param, &$option)
{
global $vbulletin, $vbphrase, $post;
if (is_member_of($post, unserialize($vbulletin->options['anysharecode_user_groups'])))
{
$find[] = '.';
$find[] = '/';
$replace[] = '\\.';
$replace[] = '\\/';
$find2[] = 'http:';
$find2[] = 'https:';
$find2[] = '//';
$replace2[] = '';
foreach (explode(",", str_replace($find, $replace, $vbulletin->options['anysharecode_allowed_domains'])) as $s)
{
$halfreadyproviderlist .= "$s|";
}
$patternprovider = "/" .substr($halfreadyproviderlist, 0, -1). "/";
$patternsharecode = "/(.+(" .substr($halfreadyproviderlist, 0, -1). ").+?)/U";
$testprovider = preg_match($patternprovider, htmlspecialchars_decode($param), $providertitle);
$testsharecode = preg_match($patternsharecode, htmlspecialchars_decode($param), $resultsharecode);
$wrongsharecode = "<div class=\"wrongmessage\"><div class=\"wrongsharecodeicon\"><img src=\"images/misc/anysharecode/info.png\"></div><div class=\"wrongsharecode\">" .$vbulletin->options['anysharecode_error_text']. "</div></div>";
$anysharecode = "<div class=\"anysharecode\">" . $resultsharecode[0] . "</div><div class=\"providertitle\"><span>" .$vbphrase['anysharecode_provider']. "<b>" . str_replace($find2, $replace2, $providertitle[0]) . "</b></span></div>";
$anysharecodeoption = $anysharecode . "<div class=\"anysharecodeoption\"><span><a href=\"" .$option. "\" rel=\"nofollow\" target=\"_blank\">" .$vbphrase['anysharecode_source_url']. "</a></span></div>";
if($testsharecode == 0)
{
return $wrongsharecode;
}
if($option != '' AND preg_match($patternprovider, $option) == 1)
{
return str_replace('src', 'data-src', $anysharecodeoption);
}
return str_replace('src', 'data-src', $anysharecode);
}
else
{
$anysharecodeusergrouperror = "<div class=\"wrongmessage\"><div class=\"wrongsharecodeicon\"><img src=\"images/misc/anysharecode/info.png\"></div><div class=\"wrongsharecode\">" .$vbulletin->options['anysharecode_user_access_error']. "</div></div>";
return $anysharecodeusergrouperror;
}
}
}
if ($this->is_wysiwyg())
{
$this->unparsed_tags[] = 'addshare';
}
bbcode_fetch_tags
$tag_list['no_option']['addshare'] = array(
'callback' => 'handle_external',
'external_callback' => 'handle_addshare',
'disable_wordwrap' => true,
'strip_empty' => true
);
$tag_list['option']['addshare'] = array(
'callback' => 'handle_external',
'external_callback' => 'handle_addshare',
'disable_wordwrap' => true,
'strip_empty' => true
);
Everythings works fine, untill I was clear cache of messages. After clear of messages, logic of function handle_addshare brokes, and return $anysharecodeusergrouperror, even if post['userid'] was from usergroup that have privileges to use this bbcode.
Now,... if I do edit post, function again work correctly for this post only. But at this time, I have a lot of posts with my bbcode and with wrong cached messages....
What I have to do?
Thanks anyway!
At hooks:
bbcode_create
if(!function_exists ('handle_addshare'))
{
function handle_addshare (&$theobj, &$param, &$option)
{
global $vbulletin, $vbphrase, $post;
if (is_member_of($post, unserialize($vbulletin->options['anysharecode_user_groups'])))
{
$find[] = '.';
$find[] = '/';
$replace[] = '\\.';
$replace[] = '\\/';
$find2[] = 'http:';
$find2[] = 'https:';
$find2[] = '//';
$replace2[] = '';
foreach (explode(",", str_replace($find, $replace, $vbulletin->options['anysharecode_allowed_domains'])) as $s)
{
$halfreadyproviderlist .= "$s|";
}
$patternprovider = "/" .substr($halfreadyproviderlist, 0, -1). "/";
$patternsharecode = "/(.+(" .substr($halfreadyproviderlist, 0, -1). ").+?)/U";
$testprovider = preg_match($patternprovider, htmlspecialchars_decode($param), $providertitle);
$testsharecode = preg_match($patternsharecode, htmlspecialchars_decode($param), $resultsharecode);
$wrongsharecode = "<div class=\"wrongmessage\"><div class=\"wrongsharecodeicon\"><img src=\"images/misc/anysharecode/info.png\"></div><div class=\"wrongsharecode\">" .$vbulletin->options['anysharecode_error_text']. "</div></div>";
$anysharecode = "<div class=\"anysharecode\">" . $resultsharecode[0] . "</div><div class=\"providertitle\"><span>" .$vbphrase['anysharecode_provider']. "<b>" . str_replace($find2, $replace2, $providertitle[0]) . "</b></span></div>";
$anysharecodeoption = $anysharecode . "<div class=\"anysharecodeoption\"><span><a href=\"" .$option. "\" rel=\"nofollow\" target=\"_blank\">" .$vbphrase['anysharecode_source_url']. "</a></span></div>";
if($testsharecode == 0)
{
return $wrongsharecode;
}
if($option != '' AND preg_match($patternprovider, $option) == 1)
{
return str_replace('src', 'data-src', $anysharecodeoption);
}
return str_replace('src', 'data-src', $anysharecode);
}
else
{
$anysharecodeusergrouperror = "<div class=\"wrongmessage\"><div class=\"wrongsharecodeicon\"><img src=\"images/misc/anysharecode/info.png\"></div><div class=\"wrongsharecode\">" .$vbulletin->options['anysharecode_user_access_error']. "</div></div>";
return $anysharecodeusergrouperror;
}
}
}
if ($this->is_wysiwyg())
{
$this->unparsed_tags[] = 'addshare';
}
bbcode_fetch_tags
$tag_list['no_option']['addshare'] = array(
'callback' => 'handle_external',
'external_callback' => 'handle_addshare',
'disable_wordwrap' => true,
'strip_empty' => true
);
$tag_list['option']['addshare'] = array(
'callback' => 'handle_external',
'external_callback' => 'handle_addshare',
'disable_wordwrap' => true,
'strip_empty' => true
);
Everythings works fine, untill I was clear cache of messages. After clear of messages, logic of function handle_addshare brokes, and return $anysharecodeusergrouperror, even if post['userid'] was from usergroup that have privileges to use this bbcode.
Now,... if I do edit post, function again work correctly for this post only. But at this time, I have a lot of posts with my bbcode and with wrong cached messages....
What I have to do?
Thanks anyway!