Exemple #1
0
 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);
         }
     }
 }
Exemple #2
0
 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);
         }
     }
 }