XF 2.2 Another Problem

Ozzy47

Well-known member
So I am trying to install this addon I took over, and when installing, we get an error:
Code:
Server error log
LogicException: Tried to call XF\Extension::resolveExtendedClassToRoot on XF\Mvc\Reply\View, but extendClass was never called on the base class src/XF/Extension.php:322
Generated by: Ozzy47 Mar 16, 2024 at 7:10 PM

Stack trace

#0 src/addons/xenbros/Customtoolbar/Customlistener.php(9): XF\Extension->resolveExtendedClassToRoot('XF\\Mvc\\Reply\\Vi...')
#1 src/XF/Extension.php(81): xenbros\Customtoolbar\Customlistener::templaterGlobalDataListener(Object(XF\Admin\App), Array, Object(XF\Mvc\Reply\View))
#2 src/XF/App.php(2994): XF\Extension->fire('templater_globa...', Array, NULL)
#3 src/XF/App.php(2212): XF\App->fire('templater_globa...', Array)
#4 src/XF/App.php(2081): XF\App->getGlobalTemplateData(Object(XF\Mvc\Reply\View))
#5 src/XF/Admin/App.php(114): XF\App->preRender(Object(XF\Mvc\Reply\View), 'html')
#6 src/XF/Mvc/Dispatcher.php(397): XF\Admin\App->preRender(Object(XF\Mvc\Reply\View), 'html')
#7 src/XF/Mvc/Dispatcher.php(60): XF\Mvc\Dispatcher->render(Object(XF\Mvc\Reply\View), 'html')
#8 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#9 src/XF.php(524): XF\App->run()
#10 admin.php(13): XF::runApp('XF\\Admin\\App')
#11 {main}

Request state

array(4) {
  ["url"] => string(47) "/admin.php?options/groups/custom_side_tool_bar/"
  ["referrer"] => string(52) "https://mysite.com/admin.php?options/"
  ["_GET"] => array(1) {
    ["options/groups/custom_side_tool_bar/"] => string(0) ""
  }
  ["_POST"] => array(0) {
  }
}

The file in question has this, which I'm uncertain of what it is doing.
PHP:
<?php

namespace xenbros\Customtoolbar;

class Customlistener
{
 public static function templaterGlobalDataListener(\XF\App $app, array &$data, $reply)
    {
        if ($app->extension()->resolveExtendedClassToRoot($reply) != 'XF\Mvc\Reply\View')
        {
            return;
        }   
        $finder = $app->finder('xenbros\Customtoolbar:CustomTool');     
        $toolbarss = $finder->order('xtoolbar_position', 'ASC')->fetch();
        $data['xenBros_customToolbar'] = [
            'xenbros_values'          => $toolbarss,
        ];
        //\XF::dump($toolbarss);
    }
}
 
It looks to be adding some global template data (at the cost of a query on each page). It's trying to skip over non-view replies (redirects, errors, etc). Idiomatically, the condition should be:

PHP:
if (!($reply instanceof \XF\Mvc\Reply\View))
{
    return;
}
 
Hmmm, different error:
An exception occurred: [ParseError] syntax error, unexpected token "return" in src/addons/xenbros/Customtoolbar/Customlistener.php on line 15
 
Top Bottom