/** * 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)); }
/** * 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)); }
/** * Does any preperations necessary for outputting to be done. */ protected function _prepareForOutput() { $cacheData = XenForo_Model::create('XenForo_Model_DataRegistry')->getMulti(array('styles', 'displayStyles', 'options')); if (is_array($cacheData['displayStyles'])) { $this->_displayStyles = $cacheData['displayStyles']; } $styles = $cacheData['styles']; if (!is_array($styles)) { $styles = XenForo_Model::create('XenForo_Model_Style')->rebuildStyleCache(); } if (!is_array($cacheData['options'])) { $cacheData['options'] = XenForo_Model::create('XenForo_Model_Option')->rebuildOptionCache(); } $options = new XenForo_Options($cacheData['options']); XenForo_Application::setDefaultsFromOptions($options); XenForo_Application::set('options', $options); if ($this->_styleId && isset($styles[$this->_styleId])) { $style = $styles[$this->_styleId]; } else { $style = reset($styles); } if ($style) { $properties = unserialize($style['properties']); $this->_styleId = $style['style_id']; $this->_styleModifiedDate = $style['last_modified_date']; } else { $properties = array(); $this->_styleId = 0; } XenForo_Template_Helper_Core::setStyleProperties($properties, false); XenForo_Template_Public::setStyleId($this->_styleId); XenForo_Template_Abstract::setLanguageId(0); }