Example #1
0
 public static function init_dependencies(XenForo_Dependencies_Abstract $dependencies, array $data)
 {
     if ($dependencies instanceof XenForo_Dependencies_Public and ChipXF_MobileSwitcher_Detecter::isMobile()) {
         foreach ($data['codeEventListeners'] as $event => &$callbackList) {
             foreach ($callbackList as $key => $callback) {
                 if (in_array($callback[0], XenForo_Application::get('options')->ChipXF_MS_AddonsDisabled)) {
                     unset($data['codeEventListeners'][$event][$key]);
                 }
             }
         }
         XenForo_CodeEvent::removeListeners();
         XenForo_CodeEvent::setListeners($data['codeEventListeners']);
         ChipXF_MobileSwitcher_Detecter::$isMobile = true;
     }
 }
Example #2
0
 protected function _disableListeners()
 {
     if (isset($this->_data['addon_id'])) {
         $this->_db->query('
             UPDATE xf_addon SET active = 0
             WHERE addon_id = ?
         ', $this->_data['addon_id']);
         $cache = $this->getModelFromCache('XenForo_Model_CodeEvent')->rebuildEventListenerCache();
         XenForo_CodeEvent::setListeners($cache, false);
     }
 }
Example #3
0
 /**
  *
  * @param array $addOns
  */
 protected function _checkAddOnsNeedUpgrading(array $addOns, $checkDisabled = false)
 {
     if (empty($addOns)) {
         return false;
     }
     if (XenForo_Application::$versionId < 1020000 || $checkDisabled) {
         /* @var $addOnModel XenForo_Model_AddOn */
         $addOnModel = XenForo_Model::create('XenForo_Model_AddOn');
         $allAddOns = $addOnModel->getAllAddOns();
     } else {
         $allAddOns = XenForo_Application::get('addOns');
     }
     $lastXmlUploadDate = $this->_getLastXmlUploadDate();
     foreach ($addOns as $addOnId) {
         if (isset($allAddOns[$addOnId])) {
             $addOn = $allAddOns[$addOnId];
             try {
                 $addOnXML = new SimpleXMLElement(file_get_contents(XenForo_Application::getInstance()->getRootDir() . '/install/data/addon-' . $addOnId . '.xml'));
                 $versionId = (string) $addOnXML->attributes()->version_id;
             } catch (Exception $e) {
                 $versionId = '';
             }
             if (is_array($addOn) && $versionId > $addOn['version_id'] || !is_array($addOn) && $versionId > $addOn) {
                 self::$_upgradeAddOns[$addOnId] = $addOn;
             } else {
                 $xmlUploadDate = filemtime(XenForo_Application::getInstance()->getRootDir() . '/install/data/addon-' . $addOnId . '.xml');
                 if ($xmlUploadDate > $lastXmlUploadDate) {
                     $lastXmlUploadDate = $xmlUploadDate;
                 }
             }
         }
     }
     eval('
         class Waindigo_Listener_ControllerPreDispatch_TemplatePostRender
         {
         	public static function templatePostRender($templateName, &$content, array &$containerData, XenForo_Template_Abstract $template)
         	{
         		if ($templateName == "PAGE_CONTAINER") {
         			$upgradeAddOns = Waindigo_Listener_ControllerPreDispatch::getUpgradeAddOns();
         			if (!empty($upgradeAddOns)) {
         			    $params = $template->getParams();
         			    if (!$params[\'showUpgradePendingNotice\']) {
             			    $pattern = \'#<noscript><p class="importantMessage">.*</p></noscript>#U\';
                             $replacement = \'<p class="importantMessage"><a href="\'.XenForo_Link::buildAdminLink(\'add-ons/upgrade-all-from-xml\').\'">\' . new XenForo_Phrase(\'upgrade_add_on\') . \'</a></p>\';
             			    $content = preg_replace($pattern, \'${1}\' . $replacement, $content);
         			    }
         			}
         		}
         	}
         }');
     $tprListeners = XenForo_CodeEvent::getEventListeners('template_post_render');
     if (!$tprListeners || XenForo_Application::$versionId >= 1020052) {
         $tprListeners = array();
     }
     $newListener = array('Waindigo_Listener_ControllerPreDispatch_TemplatePostRender', 'templatePostRender');
     if (XenForo_Application::$versionId < 1020000) {
         $tprListeners[] = $newListener;
     } else {
         $tprListeners['_'][] = $newListener;
     }
     XenForo_CodeEvent::setListeners(array('template_post_render' => $tprListeners));
     if (empty(self::$_upgradeAddOns)) {
         $this->_setLastXmlUploadDate($lastXmlUploadDate);
         return false;
     }
     return true;
 }
Example #4
0
 /**
  * Pre-loads globally required data for the system.
  */
 public function preLoadData()
 {
     $required = array_merge(array('options', 'languages', 'contentTypes', 'codeEventListeners', 'deferredRun', 'simpleCache', 'addOns', 'defaultStyleProperties', 'routeFiltersIn', 'routeFiltersOut'), $this->_dataPreLoadFromRegistry);
     $dr = new XenForo_Model_DataRegistry();
     // this is a slight hack to prevent the class from being cached
     $data = $dr->getMulti($required);
     if (XenForo_Application::get('config')->enableListeners) {
         if (!is_array($data['codeEventListeners'])) {
             $data['codeEventListeners'] = XenForo_Model::create('XenForo_Model_CodeEvent')->rebuildEventListenerCache();
         }
         XenForo_CodeEvent::setListeners($data['codeEventListeners']);
     }
     if (!is_array($data['options'])) {
         $data['options'] = XenForo_Model::create('XenForo_Model_Option')->rebuildOptionCache();
     }
     $options = new XenForo_Options($data['options']);
     XenForo_Application::setDefaultsFromOptions($options);
     XenForo_Application::set('options', $options);
     if (!is_array($data['languages'])) {
         $data['languages'] = XenForo_Model::create('XenForo_Model_Language')->rebuildLanguageCache();
     }
     XenForo_Application::set('languages', $data['languages']);
     if (!is_array($data['defaultStyleProperties'])) {
         $data['defaultStyleProperties'] = XenForo_Model::create('XenForo_Model_StyleProperty')->rebuildPropertyCacheInStyleAndChildren(0, true);
     }
     XenForo_Application::set('defaultStyleProperties', $data['defaultStyleProperties']);
     if (!is_array($data['contentTypes'])) {
         $data['contentTypes'] = XenForo_Model::create('XenForo_Model_ContentType')->rebuildContentTypeCache();
     }
     XenForo_Application::set('contentTypes', $data['contentTypes']);
     if (!is_int($data['deferredRun'])) {
         $data['deferredRun'] = XenForo_Model::create('XenForo_Model_Deferred')->updateNextDeferredTime();
     }
     XenForo_Application::set('deferredRun', $data['deferredRun']);
     if (!is_array($data['addOns'])) {
         $data['addOns'] = XenForo_Model::create('XenForo_Model_AddOn')->rebuildActiveAddOnCache();
     }
     XenForo_Application::set('addOns', $data['addOns']);
     if (!is_array($data['simpleCache'])) {
         $data['simpleCache'] = array();
         XenForo_Model::create('XenForo_Model_DataRegistry')->set('simpleCache', $data['simpleCache']);
     }
     XenForo_Application::set('simpleCache', $data['simpleCache']);
     if (!is_array($data['routeFiltersIn']) || !is_array($data['routeFiltersOut'])) {
         $filterCache = XenForo_Model::create('XenForo_Model_RouteFilter')->rebuildRouteFilterCache();
         $data['routeFiltersIn'] = $filterCache['in'];
         $data['routeFiltersOut'] = $filterCache['out'];
     }
     XenForo_Application::set('routeFiltersIn', $data['routeFiltersIn']);
     XenForo_Application::set('routeFiltersOut', $data['routeFiltersOut']);
     XenForo_Link::setRouteFiltersOut($data['routeFiltersOut']);
     $this->_handleCustomPreloadedData($data);
     XenForo_CodeEvent::fire('init_dependencies', array($this, $data));
 }
Example #5
0
 /**
  * Pre-loads globally required data for the system.
  */
 public function preLoadData()
 {
     $required = array_merge(array('options', 'languages', 'contentTypes', 'codeEventListeners', 'cron', 'simpleCache'), $this->_dataPreLoadFromRegistry);
     $data = XenForo_Model::create('XenForo_Model_DataRegistry')->getMulti($required);
     if (XenForo_Application::get('config')->enableListeners) {
         if (!is_array($data['codeEventListeners'])) {
             $data['codeEventListeners'] = XenForo_Model::create('XenForo_Model_CodeEvent')->rebuildEventListenerCache();
         }
         XenForo_CodeEvent::setListeners($data['codeEventListeners']);
     }
     if (!is_array($data['options'])) {
         $data['options'] = XenForo_Model::create('XenForo_Model_Option')->rebuildOptionCache();
     }
     $options = new XenForo_Options($data['options']);
     XenForo_Application::setDefaultsFromOptions($options);
     XenForo_Application::set('options', $options);
     if (!is_array($data['languages'])) {
         $data['languages'] = XenForo_Model::create('XenForo_Model_Language')->rebuildLanguageCache();
     }
     XenForo_Application::set('languages', $data['languages']);
     if (!is_array($data['contentTypes'])) {
         $data['contentTypes'] = XenForo_Model::create('XenForo_Model_ContentType')->rebuildContentTypeCache();
     }
     XenForo_Application::set('contentTypes', $data['contentTypes']);
     if (!is_int($data['cron'])) {
         $data['cron'] = XenForo_Model::create('XenForo_Model_Cron')->updateMinimumNextRunTime();
     }
     XenForo_Application::set('cron', $data['cron']);
     if (!is_array($data['simpleCache'])) {
         $data['simpleCache'] = array();
         XenForo_Model::create('XenForo_Model_DataRegistry')->set('simpleCache', $data['simpleCache']);
     }
     XenForo_Application::set('simpleCache', $data['simpleCache']);
     $this->_handleCustomPreloadedData($data);
     XenForo_CodeEvent::fire('init_dependencies', array($this, $data));
 }