Wedframe |
08-21-2015 09:35 AM |
BBCode condition and cache problem!
Hello! I was create my own bbcode, with check of privileges to use it, according to usergroup-settings in admincp.
At hooks:
bbcode_create
PHP Code:
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
PHP Code:
$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!
|