XF 2.2 Errors filling logs

Having the same error logged multiple times per minute, depending on how many users are online. This is from an addon that was written by our former webmaster, who is out of the picture now.

ErrorException: Template error: [E_WARNING] Attempt to read property "Profile" on null src/addons/NCWW/Main/Listener.php:12
Generated by: Unknown account Nov 15, 2024 at 9:24 AM


#0 src/addons/NCWW/Main/Listener.php(12): XF\Template\Templater->handleTemplateError(2, '[E_WARNING] Att...', '/home/nginx/dom...', 12)
#1 src/XF/Template/Templater.php(1699): NCWW\Main\Listener::getNick('', Array, Object(XF\Template\Templater))
#2 /ovr/internal_data/code_cache/templates/l1/s2/public/message_macros.php(40): XF\Template\Templater->callback('\\NCWW\\Main\\List...', 'getNick', '', Array)
#3 src/XF/Template/Templater.php(828): XF\Template\Templater->{closure}(Object(XF\Template\Templater), Array, NULL)
#4 /ovr/internal_data/code_cache/templates/l1/s2/public/post_macros.php(25): XF\Template\Templater->callMacro('message_macros', 'user_info', Array, Array)
#5 src/XF/Template/Templater.php(991): XF\Template\Templater->{closure}(Object(XF\Template\Templater), Array, Object(XF\Template\ExtensionSet))
#6 src/XF/Template/Templater.php(927): XF\Template\Templater->renderExtensionInternal('user_cell', Array, Array, Object(XF\Template\ExtensionSet))
#7 /ovr/internal_data/code_cache/templates/l1/s2/public/post_macros.php(148): XF\Template\Templater->renderExtension('user_cell', Array, Object(XF\Template\ExtensionSet))
#8 src/XF/Template/Templater.php(991): XF\Template\Templater->{closure}(Object(XF\Template\Templater), Array, Object(XF\Template\ExtensionSet))
#9 src/XF/Template/Templater.php(927): XF\Template\Templater->renderExtensionInternal('full_body', Array, Array, Object(XF\Template\ExtensionSet))
#10 /ovr/internal_data/code_cache/templates/l1/s2/public/post_macros.php(192): XF\Template\Templater->renderExtension('full_body', Array, Object(XF\Template\ExtensionSet))
#11 src/XF/Template/Templater.php(828): XF\Template\Templater->{closure}(Object(XF\Template\Templater), Array, Object(XF\Template\ExtensionSet))
#12 /ovr/internal_data/code_cache/templates/l1/s2/public/thread_view.php(905): XF\Template\Templater->callMacro('post_macros', 'post', Array, Array)
#13 src/XF/Template/Templater.php(1655): XF\Template\Templater->{closure}(Object(XF\Template\Templater), Array, Object(XF\Template\ExtensionSet))
#14 src/XF/Template/Template.php(24): XF\Template\Templater->renderTemplate('thread_view', Array)
#15 src/XF/Mvc/Renderer/Html.php(50): XF\Template\Template->render()
#16 src/XF/Mvc/Dispatcher.php(460): XF\Mvc\Renderer\Html->renderView('XF:Thread\\View', 'public:thread_v...', Array)
#17 src/XF/Mvc/Dispatcher.php(442): XF\Mvc\Dispatcher->renderView(Object(XF\Mvc\Renderer\Html), Object(XF\Mvc\Reply\View))
#18 src/XF/Mvc/Dispatcher.php(402): XF\Mvc\Dispatcher->renderReply(Object(XF\Mvc\Renderer\Html), Object(XF\Mvc\Reply\View))
#19 src/XF/Mvc/Dispatcher.php(60): XF\Mvc\Dispatcher->render(Object(XF\Mvc\Reply\View), 'html')
#20 src/XF/App.php(2485): XF\Mvc\Dispatcher->run()
#21 src/XF.php(524): XF\App->run()
#22 index.php(20): XF::runApp('XF\\Pub\\App')
#23 {main}

array(4) {
["url"] => string(51) "/forums/index.php?threads/weight-loss-update.39364/"
["referrer"] => bool(false)
["_GET"] => array(1) {
["threads/weight-loss-update_39364/"] => string(0) ""
}
["_POST"] => array(0) {
}
}

I get the same error that references line 13 as well.

ErrorException: Template error: [E_WARNING] Attempt to read property "custom_fields" on null src/addons/NCWW/Main/Listener.php:13
Generated by: Unknown account Nov 15, 2024 at 9:24 AM

The file in question is this:

<?php

namespace NCWW\Main;

use XF\Mvc\Entity\Entity;

class Listener
{
public static function getNick($contents, $params)
{
$user = $params[0];
$profile = $user->Profile;
$custom = $profile->custom_fields_;
$nick = $custom['nick_name'];
$ret = "<DIV style=\"text-align:center\" >$nick</DIV>";
return $ret;
}

};

Any thoughts on corrective action?
 
@Neal Bowman, I have no idea what this add-on does, but given it has a necessary functionality and works for logged in users:

I guess, that guests cause this error, You can try adding these lines below $user = $params[0];:

PHP:
        if (!$user->user_id)
        {
            return;
        }
 
@nocte, I tried that just now, got this error in the log:

  • ErrorException: Template error: [E_WARNING] Attempt to read property "user_id" on null
  • src/addons/NCWW/Main/Listener.php:12
  • Generated by: Unknown account
  • Nov 15, 2024 at 10:28 PM
 
You can give this a shot...

PHP:
<?php

namespace NCWW\Main;

use XF\Mvc\Entity\Entity;

class Listener
{
    public static function getNick($contents, $params)
    {
        // Validate $params and ensure $user is available
        if (empty($params[0]) || !($params[0] instanceof Entity)) {
            $ret = '<div style="text-align:center;">User not found</div>';
            return $ret;
        }

        $user = $params[0];
        $profile = $user->Profile ?? null;

        // Check if profile and custom fields are available
        if ($profile && isset($profile->custom_fields_)) {
            $custom = $profile->custom_fields_;
            if (!empty($custom['nick_name'])) {
                // Escape nickname for safety
                $nick = htmlspecialchars($custom['nick_name'], ENT_QUOTES, 'UTF-8');
                $ret = "<div style=\"text-align:center;\">$nick</div>";
            } else {
                $ret = "<div style=\"text-align:center;\"></div>"; // Blank field if nickname is unset
            }
        } else {
            $ret = "<div style=\"text-align:center;\"></div>"; // Blank field if profile or custom fields are missing
        }

        return $ret;
    }
}
 
Last edited:
Back
Top Bottom