• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

Lack of interest New Dependency for deferred

xf_phantom

Well-known member
#1
Wouldn't it be worth to create a own dependencies object for the deferred.php file?

I'm curios because 2/3(or even all?) of the preloaded data and actions from the public dependency won't be needed and won' tneed to be handled..
PHP:
protected $_dataPreLoadFromRegistry = array(
     'routesPublic', 'routeFiltersIn', 'routeFiltersOut', 'nodeTypes',
     'bannedIps', 'discouragedIps',
     'styles', 'displayStyles', 'userBanners', 'smilies', 'bbCode', 'threadPrefixes',
     'trophyUserTitles', 'reportCounts', 'moderationCounts', 'userModerationCounts',
     'notices', 'userFieldsInfo'
   );

protected function _handleCustomPreloadedData(array &$data)
   {
     if (!is_array($data['routesPublic']))
     {
       $data['routesPublic'] = XenForo_Model::create('XenForo_Model_RoutePrefix')->rebuildRoutePrefixTypeCache('public');
     }
     XenForo_Link::setHandlerInfoForGroup('public', $data['routesPublic']);

     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']);

     if (!is_array($data['bannedIps']))
     {
       $data['bannedIps'] = XenForo_Model::create('XenForo_Model_Banning')->rebuildBannedIpCache();
     }
     XenForo_Application::set('bannedIps', $data['bannedIps']);

     if (!is_array($data['discouragedIps']))
     {
       $data['discouragedIps'] = XenForo_Model::create('XenForo_Model_Banning')->rebuildDiscouragedIpCache();
     }
     XenForo_Application::set('discouragedIps', $data['discouragedIps']);

     if (!is_array($data['styles']))
     {
       $data['styles'] = XenForo_Model::create('XenForo_Model_Style')->rebuildStyleCache();
     }
     XenForo_Application::set('styles', $data['styles']);

     if (!is_array($data['nodeTypes']))
     {
       $data['nodeTypes'] = XenForo_Model::create('XenForo_Model_Node')->rebuildNodeTypeCache();
     }
     XenForo_Application::set('nodeTypes', $data['nodeTypes']);

     if (!is_array($data['smilies']))
     {
       $data['smilies'] = XenForo_Model::create('XenForo_Model_Smilie')->rebuildSmilieCache();
     }
     XenForo_Application::set('smilies', $data['smilies']);

     if (!is_array($data['bbCode']))
     {
       $data['bbCode'] = XenForo_Model::create('XenForo_Model_BbCode')->rebuildBbCodeCache();
     }
     XenForo_Application::set('bbCode', $data['bbCode']);

     if (!is_array($data['threadPrefixes']))
     {
       $data['threadPrefixes'] = XenForo_Model::create('XenForo_Model_ThreadPrefix')->rebuildPrefixCache();
     }
     XenForo_Application::set('threadPrefixes', $data['threadPrefixes']);
     XenForo_Template_Helper_Core::setThreadPrefixes($data['threadPrefixes']);

     if (!is_array($data['displayStyles']))
     {
       $data['displayStyles'] = XenForo_Model::create('XenForo_Model_UserGroup')->rebuildDisplayStyleCache();
     }
     XenForo_Application::set('displayStyles', $data['displayStyles']);
     XenForo_Template_Helper_Core::setDisplayStyles($data['displayStyles']);

     if (!is_array($data['userBanners']))
     {
       $data['userBanners'] = XenForo_Model::create('XenForo_Model_UserGroup')->rebuildUserBannerCache();
     }
     XenForo_Application::set('userBanners', $data['userBanners']);
     XenForo_Template_Helper_Core::setUserBanners($data['userBanners']);

     if (!is_array($data['trophyUserTitles']))
     {
       $data['trophyUserTitles'] = XenForo_Model::create('XenForo_Model_Trophy')->rebuildTrophyUserTitleCache();
     }
     XenForo_Application::set('trophyUserTitles', $data['trophyUserTitles']);
     XenForo_Template_Helper_Core::setUserTitles($data['trophyUserTitles']);

     if (!is_array($data['notices']))
     {
       $data['notices'] = XenForo_Model::create('XenForo_Model_Notice')->rebuildNoticeCache();
     }
     XenForo_Application::set('notices', $data['notices']);

     if (!is_array($data['userFieldsInfo']))
     {
       $data['userFieldsInfo'] = XenForo_Model::create('XenForo_Model_UserField')->rebuildUserFieldCache();
     }
     XenForo_Application::set('userFieldsInfo', $data['userFieldsInfo']);

     if (is_array($data['reportCounts']))
     {
       XenForo_Application::set('reportCounts', $data['reportCounts']);
     }
     if (is_array($data['moderationCounts']))
     {
       XenForo_Application::set('moderationCounts', $data['moderationCounts']);
     }
     if (is_array($data['userModerationCounts']))
     {
       XenForo_Application::set('userModerationCounts', $data['userModerationCounts']);
     }
   }
In the past i've noticed that this can bring some real benefits to use my own "light" dependency object (e.g. i'm using it for my cli application and for the phpunit bootstrap process.
 
Last edited: