public function bakeBbmTags() { $bbmTags = BBM_Helper_Bbm::getBbmBbCodes(); $activeAddons = XenForo_Application::isRegistered('addOns') ? XenForo_Application::get('addOns') : array(); $visitor = XenForo_Visitor::getInstance(); if (!is_array($bbmTags)) { return false; } $allBbmTags = array(); foreach ($bbmTags as $bbm) { if (!$bbm['active']) { continue; } if (!empty($activeAddons) && !empty($bbm['bbcode_addon'])) { if (!isset($activeAddons[$bbm['bbcode_addon']])) { //Skip Bb Codes linked to an addon when this addon is disabled continue; } } $tagName = $bbm['tag']; if (!empty($bbm['preParser'])) { $this->addPreParserBbCode($tagName); } } $this->_bbmTags = $allBbmTags; /**** * XenForo Options - only need to call once the options ***/ $options = XenForo_Application::get('options'); if (!empty($options->Bbm_PreCache_XenTags)) { foreach ($options->Bbm_PreCache_XenTags as $tagName) { $this->addPreParserBbCode($tagName); } } }
public function bakeBbmTags() { $bbmTags = BBM_Helper_Bbm::getBbmBbCodes(); $activeAddons = XenForo_Application::isRegistered('addOns') ? XenForo_Application::get('addOns') : array(); $visitor = XenForo_Visitor::getInstance(); if (!is_array($bbmTags)) { return false; } $allBbmTags = array(); foreach ($bbmTags as $bbm) { if (!$bbm['active']) { continue; } if (!empty($activeAddons) && !empty($bbm['bbcode_addon'])) { if (!isset($activeAddons[$bbm['bbcode_addon']])) { //Skip Bb Codes linked to an addon when this addon is disabled continue; } } $tagName = $bbm['tag']; if ($bbm['start_range']) { $allBbmTags[$tagName]['options_number'] = $bbm['options_number']; $allBbmTags[$tagName]['start_range'] = $bbm['start_range']; $allBbmTags[$tagName]['end_range'] = $bbm['end_range']; $allBbmTags[$tagName]['callback'] = array($this, 'replacementMethodRenderer'); if ($bbm['plainCallback']) { $allBbmTags[$tagName]['parseCallback'] = array($this, 'parseValidatePlainIfNoOption'); } } elseif ($bbm['phpcallback_class']) { $this->_preLoadTemplatesFromCallback($bbm['phpcallback_class'], $bbm['phpcallback_method']); if ($this->_bbmCallbackChecker($bbm['phpcallback_class'], $bbm['phpcallback_method'])) { $allBbmTags[$tagName]['phpcallback_class'] = $bbm['phpcallback_class']; $allBbmTags[$tagName]['phpcallback_method'] = $bbm['phpcallback_method']; $allBbmTags[$tagName]['callback'] = array($this, 'PhpMethodRenderer'); $this->_prepareClassToLoad($bbm['phpcallback_class']); if ($bbm['plainCallback']) { $allBbmTags[$tagName]['parseCallback'] = array($this, 'parseValidatePlainIfNoOption'); } } else { $allBbmTags[$tagName]['callback'] = array($this, 'renderInvalidTag'); } } elseif ($bbm['template_active']) { //Preload template automatically $this->_preloadBbmTemplates[] = $bbm['template_name']; $allBbmTags[$tagName]['template_name'] = $bbm['template_name']; $allBbmTags[$tagName]['callback'] = array($this, 'TemplateMethodRenderer'); if ($bbm['template_callback_class']) { if ($this->_bbmCallbackChecker($bbm['template_callback_class'], $bbm['template_callback_method'])) { $allBbmTags[$tagName]['template_callback']['class'] = $bbm['template_callback_class']; $allBbmTags[$tagName]['template_callback']['method'] = $bbm['template_callback_method']; $this->_prepareClassToLoad($bbm['template_callback_class']); $this->_preLoadTemplatesFromCallback($bbm['template_callback_class'], $bbm['template_callback_method']); } else { $allBbmTags[$tagName]['callback'] = array($this, 'renderInvalidTag'); } } if ($bbm['plainCallback']) { $allBbmTags[$tagName]['parseCallback'] = array($this, 'parseValidatePlainIfNoOption'); } } if ($bbm['trimLeadingLinesAfter'] > 0 && $bbm['trimLeadingLinesAfter'] < 3) { $allBbmTags[$tagName]['trimLeadingLinesAfter'] = $bbm['trimLeadingLinesAfter']; } if ($bbm['regex']) { $allBbmTags[$tagName]['optionRegex'] = $bbm['regex']; } if ($bbm['plainChildren']) { $allBbmTags[$tagName]['plainChildren'] = true; } if ($bbm['stopSmilies']) { $allBbmTags[$tagName]['stopSmilies'] = true; } if ($bbm['stopLineBreakConversion']) { $allBbmTags[$tagName]['stopLineBreakConversion'] = true; } if ($bbm['parseOptions']) { $allBbmTags[$tagName]['parseOptions'] = true; } if ($bbm['parser_has_usr']) { $allBbmTags[$tagName]['parser_perms']['parser_has_usr'] = $bbm['parser_has_usr']; } if ($bbm['parser_usr']) { $allBbmTags[$tagName]['parser_perms']['parser_usr'] = $bbm['parser_usr']; } if ($bbm['parser_return']) { $allBbmTags[$tagName]['parser_perms']['parser_return'] = $bbm['parser_return']; } if ($bbm['parser_return_delay']) { $allBbmTags[$tagName]['parser_perms']['parser_return_delay'] = $bbm['parser_return_delay']; } $allBbmTags[$tagName]['view_perms']['can_view_content'] = true; if ($bbm['view_has_usr']) { $visitorUserGroupIds = array_merge(array((string) $visitor['user_group_id']), explode(',', $visitor['secondary_group_ids'])); $visitorsOk = unserialize($bbm['view_usr']); $canViewBbCode = array_intersect($visitorUserGroupIds, $visitorsOk) ? true : false; $allBbmTags[$tagName]['view_perms']['can_view_content'] = $canViewBbCode; $allBbmTags[$tagName]['view_perms']['view_return'] = $bbm['view_return']; /* if($bbm['view_return'] == 'default_template' && array_search('bbm_viewer_content_protected', $this->_preloadBbmTemplates) === false) { $this->_preloadBbmTemplates[] = 'bbm_viewer_content_protected'; } */ if ($bbm['view_return_delay']) { $allBbmTags[$tagName]['view_perms']['view_return_delay'] = $bbm['view_return_delay']; } } if ($bbm['wrapping_tag'] != 'none') { $allBbmTags[$tagName]['wrappingTag']['tag'] = $bbm['wrapping_tag']; if (!empty($bbm['wrapping_option'])) { $allBbmTags[$tagName]['wrappingTag']['option'] = $bbm['wrapping_option']; } } if ($bbm['emptyContent_check']) { $allBbmTags[$tagName]['emptyContent_check'] = true; } if (!empty($bbm['preParser'])) { $this->addPreParserBbCode($tagName); } $allBbmTags[$tagName]['allowSignature'] = $bbm['allow_signature']; $allBbmTags[$tagName]['options_separator'] = $bbm['options_separator']; $allBbmTags[$tagName]['bbcode_id'] = $bbm['bbcode_id']; } $this->_bbmTags = $allBbmTags; /**** * XenForo Options - only need to call once the options ***/ $options = XenForo_Application::get('options'); $this->_xenContentCheck = $options->Bbm_XenContentCheck; $this->_bbmSeparator = $options->Bbm_BbCode_Options_Separator; $disabledXenTags = !empty($options->Bbcm_xenTags_disabled) ? $options->Bbcm_xenTags_disabled : array(); $this->_bbmXenTagsParsingAllowedUsergroups = array('attach' => $options->Bbm_xenTags_disabled_usrgrp_attach, 'email' => $options->Bbm_xenTags_disabled_usrgrp_email, 'img' => $options->Bbm_xenTags_disabled_usrgrp_img, 'url' => $options->Bbm_xenTags_disabled_usrgrp_url, 'media' => $options->Bbm_xenTags_disabled_usrgrp_media); $this->_bbmXenTagsParsingAllowedNodes = array('attach' => $options->Bbm_xenTags_disabled_nodes_attach, 'email' => $options->Bbm_xenTags_disabled_nodes_email, 'img' => $options->Bbm_xenTags_disabled_nodes_img, 'url' => $options->Bbm_xenTags_disabled_nodes_url, 'media' => $options->Bbm_xenTags_disabled_nodes_media); if ($options->Bbm_wrapper_img != 'none' && !in_array('img', $disabledXenTags)) { $this->_xenWrappers['img'] = $options->Bbm_wrapper_img; if (!empty($options->Bbm_wrapper_img_option)) { $this->_xenWrappersOption['img'] = $options->Bbm_wrapper_img_option; } } if ($options->Bbm_wrapper_allcode != 'none') { $phcTags = array('php', 'html', 'code'); foreach ($phcTags as $tag) { if (!in_array($tag, $disabledXenTags)) { $this->_xenWrappers[$tag] = $options->Bbm_wrapper_allcode; if (!empty($options->Bbm_wrapper_allcode_option)) { $this->_xenWrappersOption[$tag] = $options->Bbm_wrapper_allcode_option; } } } } if ($options->Bbm_wrapper_attach != 'none' && !in_array('attach', $disabledXenTags)) { $this->_xenWrappers['attach'] = $options->Bbm_wrapper_attach; if (!empty($options->Bbm_wrapper_attach_option)) { $this->_xenWrappersOption['attach'] = $options->Bbm_wrapper_attach_option; } } if ($options->Bbm_wrapper_media != 'none' && !in_array('media', $disabledXenTags)) { $this->_xenWrappers['media'] = $options->Bbm_wrapper_media; if (!empty($options->Bbm_wrapper_media_option)) { $this->_xenWrappersOption['media'] = $options->Bbm_wrapper_media_option; } } if ($options->Bbm_wrapper_url != 'none' && !in_array('url', $disabledXenTags)) { $this->_xenWrappers['url'] = $options->Bbm_wrapper_url; if (!empty($options->Bbm_wrapper_url_option)) { $this->_xenWrappersOption['url'] = $options->Bbm_wrapper_url_option; } } if (!empty($options->Bbm_wrapper_callback) && $options->Bbm_wrapper_callback != 'none' && $this->_bbmCallbackChecker($xenWrapperCallback['class'], $xenWrapperCallback['method'])) { $xenWrapperCallback = $options->get('Bbm_wrapper_callback', false); $this->_xenWrappersCallback['class'] = $xenWrapperCallback['class']; $this->_xenWrappersCallback['method'] = $xenWrapperCallback['method']; $this->_prepareClassToLoad($xenWrapperCallback['class']); } if (!empty($options->Bbm_PreCache_XenTags)) { foreach ($options->Bbm_PreCache_XenTags as $tagName) { $this->addPreParserBbCode($tagName); } } }