Lack of interest New Dependency for deferred

This suggestion has been closed automatically because it did not receive enough votes over an extended period of time. If you wish to see this, please search for an open suggestion and, if you don't find any, post a new one.

xf_phantom

Well-known member
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:
Upvote 0
This suggestion has been closed. Votes are no longer accepted.
Back
Top Bottom