[Andrew] Moderator Panel

[Andrew] Moderator Panel 2.0.9

No permission to download
The way it works it looks at the rendered value of this phrase:
Code:
\XF::phrase('spam_cleaner_ban_reason')->render();
I could exclude anytime the word spam is anywhere in the reason using like but that isn't very good for performance.

1722525429483.webp
 
Yes, it seems that it only happens with banning. Here for example, the user (one user only) was banned at 04:14 and then these were all generated.

Attempted to convert NULL to string/binary [andrew_reg_country]
  • Saturday at 4:27 AM

  • src/XF/Mvc/Entity/Entity.php:775
Attempted to convert NULL to string/binary [andrew_reg_country]
  • Saturday at 4:26 AM

  • src/XF/Mvc/Entity/Entity.php:775
Attempted to convert NULL to string/binary [andrew_reg_country]
  • Saturday at 4:25 AM

  • src/XF/Mvc/Entity/Entity.php:775
Attempted to convert NULL to string/binary [andrew_reg_country]
  • Saturday at 4:16 AM

  • src/XF/Mvc/Entity/Entity.php:775
Attempted to convert NULL to string/binary [andrew_reg_country]
  • Saturday at 4:15 AM

  • src/XF/Mvc/Entity/Entity.php:775


Code:
InvalidArgumentException: Attempted to convert NULL to string/binary [andrew_reg_country] src/XF/Mvc/Entity/Entity.php:775
Generated by:  Apr 27, 2024 at 4:25 AM
Stack trace
#0 src/XF/Mvc/Entity/Entity.php(697): XF\Mvc\Entity\Entity->_castValueToType(NULL, 'andrew_reg_coun...', 5, Array)
#1 src/addons/NF/Tickets/ControllerPlugin/Ticket.php(64): XF\Mvc\Entity\Entity->setTrusted('andrew_reg_coun...', NULL)
#2 src/addons/NF/Tickets/Pub/Controller/AbstractTicketController.php(23): NF\Tickets\ControllerPlugin\Ticket->preDispatchForTicket(false, 'Index', Object(XF\Mvc\ParameterBag))
#3 src/XF/Mvc/Controller.php(126): NF\Tickets\Pub\Controller\AbstractTicketController->preDispatchType('Index', Object(XF\Mvc\ParameterBag))
#4 src/XF/Mvc/Dispatcher.php(351): XF\Mvc\Controller->preDispatch('Index', Object(XF\Mvc\ParameterBag))
#5 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'Index', Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#6 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#7 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#8 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#9 src/XF.php(524): XF\App->run()
#10 index.php(20): XF::runApp('XF\\Pub\\App')
#11 {main}

-------------

Previous InvalidArgumentException: Attempted to convert NULL to string/binary - src/XF/Mvc/Entity/ValueFormatter.php:138
#0 src/XF/Mvc/Entity/Entity.php(771): XF\Mvc\Entity\ValueFormatter->castValueToType(NULL, 5, Array)
#1 src/XF/Mvc/Entity/Entity.php(697): XF\Mvc\Entity\Entity->_castValueToType(NULL, 'andrew_reg_coun...', 5, Array)
#2 src/addons/NF/Tickets/ControllerPlugin/Ticket.php(64): XF\Mvc\Entity\Entity->setTrusted('andrew_reg_coun...', NULL)
#3 src/addons/NF/Tickets/Pub/Controller/AbstractTicketController.php(23): NF\Tickets\ControllerPlugin\Ticket->preDispatchForTicket(false, 'Index', Object(XF\Mvc\ParameterBag))
#4 src/XF/Mvc/Controller.php(126): NF\Tickets\Pub\Controller\AbstractTicketController->preDispatchType('Index', Object(XF\Mvc\ParameterBag))
#5 src/XF/Mvc/Dispatcher.php(351): XF\Mvc\Controller->preDispatch('Index', Object(XF\Mvc\ParameterBag))
#6 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'Index', Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#7 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#8 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#9 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#10 src/XF.php(524): XF\App->run()
#11 index.php(20): XF::runApp('XF\\Pub\\App')
#12 {main}



But it happened here only once for another user who was also banned at the same time 04:14 but the error was thrown at 6:30. It could be because they try to visit the http://domain.com/tickets? we are using Tickets by @Naz (no permission for banned users to access the url)

Code:
InvalidArgumentException: Attempted to convert NULL to string/binary [andrew_reg_country] src/XF/Mvc/Entity/Entity.php:775
Generated by:  Apr 27, 2024 at 6:31 AM
Stack trace
#0 src/XF/Mvc/Entity/Entity.php(697): XF\Mvc\Entity\Entity->_castValueToType(NULL, 'andrew_reg_coun...', 5, Array)
#1 src/addons/NF/Tickets/ControllerPlugin/Ticket.php(64): XF\Mvc\Entity\Entity->setTrusted('andrew_reg_coun...', NULL)
#2 src/addons/NF/Tickets/Pub/Controller/AbstractTicketController.php(23): NF\Tickets\ControllerPlugin\Ticket->preDispatchForTicket(false, 'Index', Object(XF\Mvc\ParameterBag))
#3 src/XF/Mvc/Controller.php(126): NF\Tickets\Pub\Controller\AbstractTicketController->preDispatchType('Index', Object(XF\Mvc\ParameterBag))
#4 src/XF/Mvc/Dispatcher.php(351): XF\Mvc\Controller->preDispatch('Index', Object(XF\Mvc\ParameterBag))
#5 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'Index', Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#6 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#7 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#8 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#9 src/XF.php(524): XF\App->run()
#10 index.php(20): XF::runApp('XF\\Pub\\App')
#11 {main}

-------------

Previous InvalidArgumentException: Attempted to convert NULL to string/binary - src/XF/Mvc/Entity/ValueFormatter.php:138
#0 src/XF/Mvc/Entity/Entity.php(771): XF\Mvc\Entity\ValueFormatter->castValueToType(NULL, 5, Array)
#1 src/XF/Mvc/Entity/Entity.php(697): XF\Mvc\Entity\Entity->_castValueToType(NULL, 'andrew_reg_coun...', 5, Array)
#2 src/addons/NF/Tickets/ControllerPlugin/Ticket.php(64): XF\Mvc\Entity\Entity->setTrusted('andrew_reg_coun...', NULL)
#3 src/addons/NF/Tickets/Pub/Controller/AbstractTicketController.php(23): NF\Tickets\ControllerPlugin\Ticket->preDispatchForTicket(false, 'Index', Object(XF\Mvc\ParameterBag))
#4 src/XF/Mvc/Controller.php(126): NF\Tickets\Pub\Controller\AbstractTicketController->preDispatchType('Index', Object(XF\Mvc\ParameterBag))
#5 src/XF/Mvc/Dispatcher.php(351): XF\Mvc\Controller->preDispatch('Index', Object(XF\Mvc\ParameterBag))
#6 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'Index', Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#7 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#8 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#9 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#10 src/XF.php(524): XF\App->run()
#11 index.php(20): XF::runApp('XF\\Pub\\App')
#12 {main}
Request state
array(4) {
  ["url"] => string(12) "/forum/tickets/"
  ["referrer"] => string(36) "https://defense-arab.com/vb/account/"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(0) {
  }
}
After guest (or banned user) has created a ticket via Tickets addon
i also got these error messages.
  • InvalidArgumentException: Attempted to convert NULL to string/binary [andrew_reg_country]
  • src/XF/Mvc/Entity/Entity.php:775
  • Сгенерирована пользователем: Госпожа
  • 1 Авг 2024 в 17:23
Code:
Трассировка стека
#0 src/XF/Mvc/Entity/Entity.php(697): XF\Mvc\Entity\Entity->_castValueToType(NULL, 'andrew_reg_coun...', 5, Array)
#1 src/addons/NF/Tickets/ControllerPlugin/Ticket.php(64): XF\Mvc\Entity\Entity->setTrusted('andrew_reg_coun...', NULL)
#2 src/addons/NF/Tickets/Pub/Controller/AbstractTicketController.php(23): NF\Tickets\ControllerPlugin\Ticket->preDispatchForTicket(false, 'Create', Object(XF\Mvc\ParameterBag))
#3 src/XF/Mvc/Controller.php(126): NF\Tickets\Pub\Controller\AbstractTicketController->preDispatchType('Create', Object(XF\Mvc\ParameterBag))
#4 src/addons/SV/UserActivity/UserActivityInjector.php(59): XF\Mvc\Controller->preDispatch('Create', Object(XF\Mvc\ParameterBag))
#5 src/XF/Mvc/Dispatcher.php(351): SV\UserActivity\NF\Tickets\Pub\Controller\Ticket->preDispatch('Create', Object(XF\Mvc\ParameterBag))
#6 src/XF/Mvc/Dispatcher.php(258): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'Create', Object(XF\Mvc\RouteMatch), Object(SV\UserActivity\NF\Tickets\Pub\Controller\Ticket), NULL)
#7 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\UserActivity\NF\Tickets\Pub\Controller\Ticket), NULL)
#8 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#9 src/XF/App.php(2485): XF\Mvc\Dispatcher->run()
#10 src/XF.php(524): XF\App->run()
#11 index.php(20): XF::runApp('XF\\Pub\\App')
#12 {main}

-------------

Previous InvalidArgumentException: Attempted to convert NULL to string/binary - src/XF/Mvc/Entity/ValueFormatter.php:138
#0 src/XF/Mvc/Entity/Entity.php(771): XF\Mvc\Entity\ValueFormatter->castValueToType(NULL, 5, Array)
#1 src/XF/Mvc/Entity/Entity.php(697): XF\Mvc\Entity\Entity->_castValueToType(NULL, 'andrew_reg_coun...', 5, Array)
#2 src/addons/NF/Tickets/ControllerPlugin/Ticket.php(64): XF\Mvc\Entity\Entity->setTrusted('andrew_reg_coun...', NULL)
#3 src/addons/NF/Tickets/Pub/Controller/AbstractTicketController.php(23): NF\Tickets\ControllerPlugin\Ticket->preDispatchForTicket(false, 'Create', Object(XF\Mvc\ParameterBag))
#4 src/XF/Mvc/Controller.php(126): NF\Tickets\Pub\Controller\AbstractTicketController->preDispatchType('Create', Object(XF\Mvc\ParameterBag))
#5 src/addons/SV/UserActivity/UserActivityInjector.php(59): XF\Mvc\Controller->preDispatch('Create', Object(XF\Mvc\ParameterBag))
#6 src/XF/Mvc/Dispatcher.php(351): SV\UserActivity\NF\Tickets\Pub\Controller\Ticket->preDispatch('Create', Object(XF\Mvc\ParameterBag))
#7 src/XF/Mvc/Dispatcher.php(258): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'Create', Object(XF\Mvc\RouteMatch), Object(SV\UserActivity\NF\Tickets\Pub\Controller\Ticket), NULL)
#8 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\UserActivity\NF\Tickets\Pub\Controller\Ticket), NULL)
#9 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#10 src/XF/App.php(2485): XF\Mvc\Dispatcher->run()
#11 src/XF.php(524): XF\App->run()
#12 index.php(20): XF::runApp('XF\\Pub\\App')
#13 {main}
 
So Is the issue because I was using a customised version of the phrase?

It looks at the current translation of the phrase so if you changed the phrase then past bans would show.

PHP:
        $spamCleanerPhrase = \XF::phrase('spam_cleaner_ban_reason')->render();

        $finder = \XF::finder('XF:UserBan')
            ->with('User', true);

        if (!$showSpamUsers)
        {
            $finder->where('user_reason', '!=', $spamCleanerPhrase);
            $finder->where('user_reason','!=', 'Spam');
        }
 
After guest (or banned user) has created a ticket via Tickets addon
i also got these error messages.
  • InvalidArgumentException: Attempted to convert NULL to string/binary [andrew_reg_country]
  • src/XF/Mvc/Entity/Entity.php:775
  • Сгенерирована пользователем: Госпожа
  • 1 Авг 2024 в 17:23
Code:
Трассировка стека
#0 src/XF/Mvc/Entity/Entity.php(697): XF\Mvc\Entity\Entity->_castValueToType(NULL, 'andrew_reg_coun...', 5, Array)
#1 src/addons/NF/Tickets/ControllerPlugin/Ticket.php(64): XF\Mvc\Entity\Entity->setTrusted('andrew_reg_coun...', NULL)
#2 src/addons/NF/Tickets/Pub/Controller/AbstractTicketController.php(23): NF\Tickets\ControllerPlugin\Ticket->preDispatchForTicket(false, 'Create', Object(XF\Mvc\ParameterBag))
#3 src/XF/Mvc/Controller.php(126): NF\Tickets\Pub\Controller\AbstractTicketController->preDispatchType('Create', Object(XF\Mvc\ParameterBag))
#4 src/addons/SV/UserActivity/UserActivityInjector.php(59): XF\Mvc\Controller->preDispatch('Create', Object(XF\Mvc\ParameterBag))
#5 src/XF/Mvc/Dispatcher.php(351): SV\UserActivity\NF\Tickets\Pub\Controller\Ticket->preDispatch('Create', Object(XF\Mvc\ParameterBag))
#6 src/XF/Mvc/Dispatcher.php(258): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'Create', Object(XF\Mvc\RouteMatch), Object(SV\UserActivity\NF\Tickets\Pub\Controller\Ticket), NULL)
#7 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\UserActivity\NF\Tickets\Pub\Controller\Ticket), NULL)
#8 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#9 src/XF/App.php(2485): XF\Mvc\Dispatcher->run()
#10 src/XF.php(524): XF\App->run()
#11 index.php(20): XF::runApp('XF\\Pub\\App')
#12 {main}

-------------

Previous InvalidArgumentException: Attempted to convert NULL to string/binary - src/XF/Mvc/Entity/ValueFormatter.php:138
#0 src/XF/Mvc/Entity/Entity.php(771): XF\Mvc\Entity\ValueFormatter->castValueToType(NULL, 5, Array)
#1 src/XF/Mvc/Entity/Entity.php(697): XF\Mvc\Entity\Entity->_castValueToType(NULL, 'andrew_reg_coun...', 5, Array)
#2 src/addons/NF/Tickets/ControllerPlugin/Ticket.php(64): XF\Mvc\Entity\Entity->setTrusted('andrew_reg_coun...', NULL)
#3 src/addons/NF/Tickets/Pub/Controller/AbstractTicketController.php(23): NF\Tickets\ControllerPlugin\Ticket->preDispatchForTicket(false, 'Create', Object(XF\Mvc\ParameterBag))
#4 src/XF/Mvc/Controller.php(126): NF\Tickets\Pub\Controller\AbstractTicketController->preDispatchType('Create', Object(XF\Mvc\ParameterBag))
#5 src/addons/SV/UserActivity/UserActivityInjector.php(59): XF\Mvc\Controller->preDispatch('Create', Object(XF\Mvc\ParameterBag))
#6 src/XF/Mvc/Dispatcher.php(351): SV\UserActivity\NF\Tickets\Pub\Controller\Ticket->preDispatch('Create', Object(XF\Mvc\ParameterBag))
#7 src/XF/Mvc/Dispatcher.php(258): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'Create', Object(XF\Mvc\RouteMatch), Object(SV\UserActivity\NF\Tickets\Pub\Controller\Ticket), NULL)
#8 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\UserActivity\NF\Tickets\Pub\Controller\Ticket), NULL)
#9 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#10 src/XF/App.php(2485): XF\Mvc\Dispatcher->run()
#11 src/XF.php(524): XF\App->run()
#12 index.php(20): XF::runApp('XF\\Pub\\App')
#13 {main}
what version?
 
So Is the issue because I was using a customised version of the phrase?
The issue is your current phrase value didn't match the reason the user was banned. Let me try a different approach where I check the spam cleaner table. It will add another query but should fix issues like the one you are having.
 
Thanks for fixing the missing Rank on "Most ...". The user activity column on "recently registered users" also appears to be missing. Again if it's something idiosyncratic to my system I do apologize in advance.

1722657606878.webp
 
Thanks for fixing the missing Rank on "Most ...". The user activity column on "recently registered users" also appears to be missing. Again if it's something idiosyncratic to my system I do apologize in advance.

View attachment 307859
Something is going on with your install. I don't show issues with this template and didn't have issues on the others. The "User Activity" column should be removed.
 
LOVE LOVE LOVE this add-on! I do have one request. We really need to search for users based on email address. It's by far and away what we use the most to find members. Any chance that could be added to the 'search for users' criteria?
Looks like a fairly easy add. I'll have it in the next version.
Similarly to this, the user's emails are visible in the "new account approval queue", but not in any of the other lists, such as "Recently registered users", "Moderator log", or "User change log". I think it would be nice to have their email addresses shown in one of those lists. "Recently registered users" seems like the most appropriate one.
 
Similarly to this, the user's emails are visible in the "new account approval queue", but not in any of the other lists, such as "Recently registered users", "Moderator log", or "User change log". I think it would be nice to have their email addresses shown in one of those lists. "Recently registered users" seems like the most appropriate one.
Recently registered users has challenges with space. Some user states and countries are very long. Why does a moderator need an user email address?
 
Not a mod; admin. In this case I was using it to check where a new group of users was coming from. The forum is somewhat part of a network. Not a huge deal. In the future I could just use the "new user registration queue".

Looks like there's room though:
Screenshot 2024-08-03 223305.webp

If long country names are the issue, what if the abbreviation is used instead? IE: USA. Or they're truncated and the full name is shown on mouse-over.
 
Not a mod; admin. In this case I was using it to check where a new group of users was coming from. The forum is somewhat part of a network. Not a huge deal. In the future I could just use the "new user registration queue".

Looks like there's room though:
View attachment 307939

If long country names are the issue, what if the abbreviation is used instead? IE: USA. Or they're truncated and the full name is shown on mouse-over.
I don't want to change what the API sends over. That can create complications down the road. The longest country name I have seen is: "United Kingdom of Great Britain and Northern Ireland". The longest user state is: "Awaiting Email Confirmation (from edit)".

There is already a request to add in disposable email check and I think that is a valid request. You can already search by email if you need to lookup an user. I am not sure what else an email would provide.
 
Back
Top Bottom