/**
  * Fetches all notices applicable to the visiting user
  *
  * @param array $params
  * @param array $containerData
  *
  * @return array
  */
 protected function _getSocialNoticesContainerParams(XenForo_ControllerResponse_View $controllerResponse, array $notices = array())
 {
     $socialForum = ThemeHouse_SocialGroups_SocialForum::getInstance();
     /* @var $noticeModel XenForo_Model_Notice */
     $noticeModel = XenForo_Model::create('XenForo_Model_Notice');
     if (XenForo_Application::get('options')->enableNotices) {
         $user = XenForo_Visitor::getInstance()->toArray();
         if (XenForo_Application::isRegistered('session')) {
             $dismissedNotices = XenForo_Application::getSession()->get('dismissedNotices');
         }
         if (!isset($dismissedNotices) || !is_array($dismissedNotices)) {
             $dismissedNotices = array();
         }
         // handle style overrides
         $user['style_id'] = XenForo_Application::get('options')->defaultStyleId;
         $noticeTokens = array('{name}' => $user['username'] !== '' ? $user['username'] : new XenForo_Phrase('guest'), '{user_id}' => $user['user_id']);
         $allNotices = $noticeModel->getNoticesForSocialForum($socialForum['social_forum_id']);
         foreach ($allNotices as $noticeId => $notice) {
             if (!in_array($noticeId, $dismissedNotices) && XenForo_Helper_Criteria::userMatchesCriteria($notice['user_criteria'], true, $user) && XenForo_Helper_Criteria::pageMatchesCriteria($notice['page_criteria'], true, $controllerResponse->params, $controllerResponse->containerParams)) {
                 $notices[$noticeId] = array('title' => $notice['title'], 'message' => str_replace(array_keys($noticeTokens), $noticeTokens, $notice['message']), 'wrap' => $notice['wrap'], 'dismissible' => $notice['dismissible'] && XenForo_Visitor::getUserId());
             }
         }
     }
     return $notices;
 }
Beispiel #2
0
 public static function template_hook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template)
 {
     $options = XenForo_Application::get('options');
     $enableadvxenforo = $options->enableadvxenforo;
     $thread_id = $hookParams['thread']['thread_id'];
     if ($enableadvxenforo) {
         $PermissionEnable = XenForo_Visitor::getInstance()->hasPermission('adv_xenforo', 'adv_xenforo_enable_adv') ? TRUE : FALSE;
         if ($hookName == 'account_preferences_options' && $PermissionEnable) {
             $ourTemplate = $template->create('adv_xenforo_account_options', $template->getparams());
             $rendered = $ourTemplate->render();
             $contents = $contents . $rendered;
         }
         $hasPermission = XenForo_Visitor::getInstance()->hasPermission('adv_xenforo', 'adv_xenforo_show') ? TRUE : FALSE;
         $advs = XenForo_Application::getSimpleCacheData('adv_xenforo');
         $user = XenForo_Visitor::getInstance()->toArray();
         $enable_adv = $PermissionEnable === TRUE ? $user['enable_adv'] : TRUE;
         $containerData = self::$containerData;
         if (empty(self::$containerData)) {
             $containerData = XenForo_Template_Public::getExtraContainerData();
         }
         if ($enable_adv) {
             if ($hasPermission === TRUE && $advs["AdvsHook"]) {
                 $isMobile = XenForo_Visitor::isBrowsingWith('mobile');
                 switch (TRUE) {
                     case $isMobile == TRUE:
                         $adv_adv = 'adv_small';
                         break;
                     default:
                         $adv_adv = 'adv_large';
                         break;
                 }
                 foreach ($advs["AdvsHook"] as $_asv) {
                     if ($_asv['active'] && XenForo_Helper_Criteria::userMatchesCriteria($_asv['user_criteria'], TRUE, $user) && XenForo_Helper_Criteria::pageMatchesCriteria($_asv['page_criteria'], TRUE, $template->getParams(), $containerData)) {
                         $ourTemplate = $template->create('ads_xf_ar_xenforo', array('advanced' => $_asv[$adv_adv]));
                         $rendered = $ourTemplate->render();
                         if ($hookName == 'message_content' && Turki_Adv_Helper_Criteria::postCriteria($_asv['post_criteria'], TRUE) === FALSE) {
                             if ($hookParams['message']['thread_id']) {
                                 $decode = XenForo_Helper_Criteria::prepareCriteriaForSelection($_asv['post_criteria']);
                                 $position = $decode['active']['page'] ? $hookParams['message']['position'] % $options->messagesPerPage : $hookParams['message']['position'];
                                 if ($position == $decode['active']['post_id'] - 1) {
                                     $contents = $decode['active']['position'] ? Turki_Adv_Helper_Helpers::advhtml($contents, $rendered) : $contents . $rendered;
                                 }
                             }
                         } else {
                             if ($hookName == $_asv['adv_hook_name'] && Turki_Adv_Helper_Criteria::postCriteria($_asv['post_criteria'], TRUE)) {
                                 $contents = $_asv['display'] == 'top' ? $rendered . $contents : $contents . $rendered;
                             }
                         }
                     }
                 }
             }
         }
         self::_templateHook($hookName, $contents, $hookParams, $template);
     }
 }
 public function run()
 {
     if (self::$checkRedirectRules == $this->_templateName) {
         $redirectRules = XenForo_Application::getSimpleCacheData('th_redirectRules');
         $user = XenForo_Visitor::getInstance()->toArray();
         $template = $this->_template;
         $containerData = $this->_containerData;
         if ($redirectRules) {
             foreach ($redirectRules as $redirectRule) {
                 if (XenForo_Helper_Criteria::userMatchesCriteria($redirectRule['user_criteria'], true, $user) && XenForo_Helper_Criteria::pageMatchesCriteria($redirectRule['page_criteria'], true, $template->getParams(), $containerData)) {
                     $url = $this->_getRedirectUrl($redirectRule['reroute_domain']);
                     if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) !== FALSE) {
                         header("HTTP/1.1 301 Moved Permanently");
                         header('Location : ' . $url);
                         exit;
                     }
                 }
             }
         }
     }
     return parent::run();
 }
 /**
  * Fetches all notices applicable to the visiting user
  *
  * @param XenForo_Template_Abstract $template
  * @param array $containerData
  *
  * @return array
  */
 protected function _getNoticesContainerParams(XenForo_Template_Abstract $template, array $containerData)
 {
     $notices = array();
     foreach ($this->_dependencies->notices as $param => $noticeKey) {
         if ($template->getParam($param)) {
             $notices['block'][$noticeKey] = array('title' => new XenForo_Phrase($noticeKey), 'message' => $template->create($noticeKey, $template->getParams()), 'wrap' => true, 'dismissible' => false);
         }
     }
     if (XenForo_Application::get('options')->enableNotices) {
         if (XenForo_Application::isRegistered('notices')) {
             $user = XenForo_Visitor::getInstance()->toArray();
             if (XenForo_Application::isRegistered('session')) {
                 $dismissedNotices = XenForo_Application::getSession()->get('dismissedNotices');
             }
             if (!isset($dismissedNotices) || !is_array($dismissedNotices)) {
                 $dismissedNotices = array();
             }
             // handle style overrides
             $visitorStyle = $template->getParam('visitorStyle');
             if (!empty($visitorStyle)) {
                 $user['style_id'] = $visitorStyle['style_id'];
             }
             $noticeList = XenForo_Application::get('notices');
             foreach (XenForo_Application::get('notices') as $noticeId => $notice) {
                 if (!empty($notice['dismissible']) && in_array($noticeId, $dismissedNotices) || !XenForo_Helper_Criteria::userMatchesCriteria($notice['user_criteria'], true, $user) || !XenForo_Helper_Criteria::pageMatchesCriteria($notice['page_criteria'], true, $template->getParams(), $containerData)) {
                     unset($noticeList[$noticeId]);
                 }
             }
             $noticeTokens = array('{name}' => $user['username'] !== '' ? htmlspecialchars($user['username']) : new XenForo_Phrase('guest'), '{user_id}' => $user['user_id']);
             XenForo_CodeEvent::fire('notices_prepare', array(&$noticeList, &$noticeTokens, $template, $containerData));
             foreach ($noticeList as $noticeId => $notice) {
                 $noticeTokens['{title}'] = $notice['title'];
                 $imageUrl = '';
                 if ($notice['display_image'] == 'avatar') {
                     $imageUrl = XenForo_Template_Helper_Core::callHelper('avatar', array($user, 's'));
                 } else {
                     if ($notice['display_image'] == 'image') {
                         $imageUrl = $notice['image_url'];
                     }
                 }
                 $notices[$notice['notice_type']][$noticeId] = array('title' => $notice['title'], 'message' => str_replace(array_keys($noticeTokens), $noticeTokens, $notice['message']), 'wrap' => $notice['wrap'], 'dismissible' => $notice['dismissible'], 'delay_duration' => $notice['delay_duration'], 'display_duration' => $notice['display_duration'], 'auto_dismiss' => $notice['auto_dismiss'], 'display_image' => $notice['display_image'], 'display_style' => $notice['display_style'], 'css_class' => $notice['css_class'], 'visibility' => $notice['visibility'], 'imageUrl' => $imageUrl);
             }
         }
     }
     return $notices;
 }
Beispiel #5
0
 /**
  * Fetches all notices applicable to the visiting user
  *
  * @param XenForo_Template_Abstract $template
  * @param array $containerData
  *
  * @return array
  */
 protected function _getNoticesContainerParams(XenForo_Template_Abstract $template, array $containerData)
 {
     $notices = array();
     foreach ($this->_dependencies->notices as $param => $noticeKey) {
         if ($template->getParam($param)) {
             $notices[$noticeKey] = array('title' => new XenForo_Phrase($noticeKey), 'message' => $template->create($noticeKey, $template->getParams()), 'wrap' => true, 'dismissible' => false);
         }
     }
     if (XenForo_Application::get('options')->enableNotices) {
         if (XenForo_Application::isRegistered('notices')) {
             $user = XenForo_Visitor::getInstance()->toArray();
             if (XenForo_Application::isRegistered('session')) {
                 $dismissedNotices = XenForo_Application::getSession()->get('dismissedNotices');
             }
             if (!isset($dismissedNotices) || !is_array($dismissedNotices)) {
                 $dismissedNotices = array();
             }
             // handle style overrides
             $visitorStyle = $template->getParam('visitorStyle');
             if (!empty($visitorStyle)) {
                 $user['style_id'] = $visitorStyle['style_id'];
             }
             $noticeList = XenForo_Application::get('notices');
             foreach (XenForo_Application::get('notices') as $noticeId => $notice) {
                 if (!empty($notice['dismissible']) && in_array($noticeId, $dismissedNotices) || !XenForo_Helper_Criteria::userMatchesCriteria($notice['user_criteria'], true, $user) || !XenForo_Helper_Criteria::pageMatchesCriteria($notice['page_criteria'], true, $template->getParams(), $containerData)) {
                     unset($noticeList[$noticeId]);
                 }
             }
             $noticeTokens = array('{name}' => $user['username'] !== '' ? $user['username'] : new XenForo_Phrase('guest'), '{user_id}' => $user['user_id']);
             XenForo_CodeEvent::fire('notices_prepare', array(&$noticeList, &$noticeTokens, $template, $containerData));
             foreach ($noticeList as $noticeId => $notice) {
                 $notices[$noticeId] = array('title' => $notice['title'], 'message' => str_replace(array_keys($noticeTokens), $noticeTokens, $notice['message']), 'wrap' => $notice['wrap'], 'dismissible' => $notice['dismissible'] && XenForo_Visitor::getUserId());
             }
         }
     }
     return $notices;
 }