Search code examples
phptemplate-enginephpbb

PHPBB send template variable to overall_footer.html


Since overall_footer.html is served by a core phpbb file which shouldn't be edited, how would I go by sending some variables to the template without editing the core files?

To be a bit more specific, I'm trying to do a conditional statement using comments inside of overall_footer.html and I also need to include a functions file (functions_chat.php) in whatever file I will be editing to make this happen correctly.


Solution

  • So for anyone curious about the answer to this, it seems that the footer is actually generated in the functions.php file. Located at /includes

        function page_footer($run_cron = true, $display_template = true, $exit_handler = true)
    {
        global $db, $config, $template, $user, $auth, $cache, $phpEx;
        global $request, $phpbb_dispatcher, $phpbb_admin_path;
    
        // A listener can set this variable to `true` when it overrides this function
        $page_footer_override = false;
    
        /**
        * Execute code and/or overwrite page_footer()
        *
        * @event core.page_footer
        * @var  bool    run_cron            Shall we run cron tasks
        * @var  bool    page_footer_override    Shall we return instead of running
        *                                       the rest of page_footer()
        * @since 3.1.0-a1
        */
        $vars = array('run_cron', 'page_footer_override');
        extract($phpbb_dispatcher->trigger_event('core.page_footer', compact($vars)));
    
        if ($page_footer_override)
        {
            return;
        }
    
        phpbb_check_and_display_sql_report($request, $auth, $db);
    
        $template->assign_vars(array(
            'DEBUG_OUTPUT'          => phpbb_generate_debug_output($db, $config, $auth, $user, $phpbb_dispatcher),
            'TRANSLATION_INFO'      => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
            'CREDIT_LINE'           => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Limited'),
    
            'U_ACP' => ($auth->acl_get('a_') && !empty($user->data['is_registered'])) ? append_sid("{$phpbb_admin_path}index.$phpEx", false, true, $user->session_id) : '')
        );
    
        // Call cron-type script
        $call_cron = false;
        if (!defined('IN_CRON') && !$config['use_system_cron'] && $run_cron && !$config['board_disable'] && !$user->data['is_bot'] && !$cache->get('_cron.lock_check'))
        {
            $call_cron = true;
            $time_now = (!empty($user->time_now) && is_int($user->time_now)) ? $user->time_now : time();
    
            // Any old lock present?
            if (!empty($config['cron_lock']))
            {
                $cron_time = explode(' ', $config['cron_lock']);
    
                // If 1 hour lock is present we do not call cron.php
                if ($cron_time[0] + 3600 >= $time_now)
                {
                    $call_cron = false;
                }
            }
        }
    
        // Call cron job?
        if ($call_cron)
        {
            global $phpbb_container;
    
            /* @var $cron \phpbb\cron\manager */
            $cron = $phpbb_container->get('cron.manager');
            $task = $cron->find_one_ready_task();
    
            if ($task)
            {
                $url = $task->get_url();
                $template->assign_var('RUN_CRON_TASK', '<img src="' . $url . '" width="1" height="1" alt="cron" />');
            }
            else
            {
                $cache->put('_cron.lock_check', true, 60);
            }
        }
    

    And this is where the variables are assigned to the template

    $template->assign_vars(array(
            'DEBUG_OUTPUT'          => phpbb_generate_debug_output($db, $config, $auth, $user, $phpbb_dispatcher),
            'TRANSLATION_INFO'      => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
            'CREDIT_LINE'           => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Limited'),
    
            'U_ACP' => ($auth->acl_get('a_') && !empty($user->data['is_registered'])) ? append_sid("{$phpbb_admin_path}index.$phpEx", false, true, $user->session_id) : '')
        );