[XB] Year Recap: Personalized Member Statistics & Community Year in Review

[XB] Year Recap: Personalized Member Statistics & Community Year in Review [Paid] 1.6.1

No permission to buy ($35.00)
Painbaker updated [XB] Year Recap: Personalized Member Statistics & Community Year in Review with a new update entry:

1.6.0

View attachment 346500

🎉 Bring Members Back to Their Year Recap!​

This update adds annual alerts and emails to help members discover their personal Year Recap before the New Year, with flexible delivery timing, customizable email content, and reliable batch processing.

Important: This version now requires [XB] Core...

Read the rest of this update entry...
 
I get a lot of these errors:

Code:
Exception: Job PB\YearRecap:GlobalLeaderboardRebuild: Allowed memory size of 838860800 bytes exhausted (tried to allocate 8192 bytes) in /home/nginx/domains/motor-forum.nl/public/src/XF/Db/AbstractStatement.php:106
src/XF/Job/Manager.php:352
Generated by: Unknown account
Oct 9, 2026 at 4:00 AM

Stack trace
#0 [internal function]: XF\Job\Manager->handleShutdown()
#1 {main}

Request state
array(4) {
  ["url"] => string(8) "/job.php"
  ["referrer"] => string(87) "https://www.domain.com/login/logout?t=1791204857%2C7f3cc1d50e12c3a"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(0) {
  }
}
 
Painbaker updated [XB] Year Recap: Personalized Member Statistics & Community Year in Review with a new update entry:

1.6.1

  • Improved leaderboard, percentile, monthly chart, and historical comparison performance and accuracy.
  • Improved recap rebuild, cache, and notification processing.
  • Improved Story mode, ACP usability, accessibility and responsive presentation.

⚠️ This is a release candidate version. Please take a full backup before installing it on a production site. ⚠️

Read the rest of this update entry...
 
I get a lot of these errors:

Code:
Exception: Job PB\YearRecap:GlobalLeaderboardRebuild: Allowed memory size of 838860800 bytes exhausted (tried to allocate 8192 bytes) in /home/nginx/domains/motor-forum.nl/public/src/XF/Db/AbstractStatement.php:106
src/XF/Job/Manager.php:352
Generated by: Unknown account
Oct 9, 2026 at 4:00 AM

Stack trace
#0 [internal function]: XF\Job\Manager->handleShutdown()
#1 {main}

Request state
array(4) {
  ["url"] => string(8) "/job.php"
  ["referrer"] => string(87) "https://www.domain.com/login/logout?t=1791204857%2C7f3cc1d50e12c3a"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(0) {
  }
}


I've optimized the global leaderboard rebuild a bit so that it doesn't fetch unnecessary relations
If you see this error again, you should probably lower the “Global leaderboard limit” (if it was changed)
 
After upgrading I get another error:

Code:
XF\Db\InvalidQueryException: MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '\ SELECT ranked.user_id, ranked.value, ranked.position FROM ( ...' at line 1
src/XF/Db/AbstractStatement.php:225

Stack trace

\
                    SELECT ranked.user_id, ranked.value, ranked.position
                    FROM (
                        SELECT ordered.user_id, ordered.value, (@position := @position + 1) AS position
                        FROM (
                            SELECT target.user_id, target.value
                            FROM xf_pb_yearrecap_user_recap AS target
                            INNER JOIN xf_user AS target_user ON (target_user.user_id = target.user_id)
                            WHERE target.recap_id = ?
                                AND target.year = ?
                                AND target.user_id > 0
                                AND target.value IS NOT NULL
                                AND target_user.user_state = 'valid'
                                AND target_user.is_banned = 0
                            ORDER BY target.value DESC, target.user_id ASC
                            LIMIT 18446744073709551615
                        ) AS ordered
                        CROSS JOIN (SELECT @position := 0) AS positions
                    ) AS ranked
                    WHERE ranked.user_id IN (260907, 58370, 80674, 269379, 1)
               
------------

#0 src/XF/Db/Mysqli/Statement.php(207): XF\Db\AbstractStatement->getException('MySQL statement...', 1064, '42000')
#1 src/XF/Db/Mysqli/Statement.php(43): XF\Db\Mysqli\Statement->getException('MySQL statement...', 1064, '42000')
#2 src/XF/Db/Mysqli/Statement.php(61): XF\Db\Mysqli\Statement->prepare()
#3 src/XF/Db/AbstractAdapter.php(96): XF\Db\Mysqli\Statement->execute()
#4 src/XF/Db/AbstractAdapter.php(167): XF\Db\AbstractAdapter->query('\\
                    SELECT r...', Array)
#5 src/addons/PB/YearRecap/Repository/UserRecap.php(142): XF\Db\AbstractAdapter->fetchAllKeyed('\\
                    SELECT r...', 'user_id', Array)
#6 src/addons/PB/YearRecap/Pub/Controller/YearRecap.php(381): PB\YearRecap\Repository\UserRecap->getPreviousYearChangesForLeaderboard(Object(XF\Mvc\Entity\ArrayCollection), 2026, 4)
#7 src/XF/Mvc/Dispatcher.php(364): PB\YearRecap\Pub\Controller\YearRecap->actionLeaderboard(Object(XF\Mvc\ParameterBag))
#8 src/XF/Mvc/Dispatcher.php(266): XF\Mvc\Dispatcher->dispatchClass('PB\\YearRecap:Ye...', 'Leaderboard', Object(XF\Mvc\RouteMatch), Object(PB\YearRecap\Pub\Controller\YearRecap), NULL)
#9 src/XF/Mvc/Dispatcher.php(121): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(PB\YearRecap\Pub\Controller\YearRecap), NULL)
#10 src/XF/Mvc/Dispatcher.php(63): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#11 src/XF/App.php(2840): XF\Mvc\Dispatcher->run()
#12 src/XF.php(850): XF\App->run()
#13 index.php(23): XF::runApp('XF\\Pub\\App')
#14 {main}

Request state

array(4) {
  ["url"] => string(44) "/year-recap/leaderboard?recap_id=4&year=2026"
  ["referrer"] => string(59) "https://www.domain.com/year-recap/leaderboard?year=2026"
  ["_GET"] => array(3) {
    ["/year-recap/leaderboard"] => string(0) ""
    ["recap_id"] => string(1) "4"
    ["year"] => string(4) "2026"
  }
  ["_POST"] => array(0) {
  }
}
 
After upgrading I get another error:

Code:
XF\Db\InvalidQueryException: MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '\ SELECT ranked.user_id, ranked.value, ranked.position FROM ( ...' at line 1
src/XF/Db/AbstractStatement.php:225

Stack trace

\
                    SELECT ranked.user_id, ranked.value, ranked.position
                    FROM (
                        SELECT ordered.user_id, ordered.value, (@position := @position + 1) AS position
                        FROM (
                            SELECT target.user_id, target.value
                            FROM xf_pb_yearrecap_user_recap AS target
                            INNER JOIN xf_user AS target_user ON (target_user.user_id = target.user_id)
                            WHERE target.recap_id = ?
                                AND target.year = ?
                                AND target.user_id > 0
                                AND target.value IS NOT NULL
                                AND target_user.user_state = 'valid'
                                AND target_user.is_banned = 0
                            ORDER BY target.value DESC, target.user_id ASC
                            LIMIT 18446744073709551615
                        ) AS ordered
                        CROSS JOIN (SELECT @position := 0) AS positions
                    ) AS ranked
                    WHERE ranked.user_id IN (260907, 58370, 80674, 269379, 1)
              
------------

#0 src/XF/Db/Mysqli/Statement.php(207): XF\Db\AbstractStatement->getException('MySQL statement...', 1064, '42000')
#1 src/XF/Db/Mysqli/Statement.php(43): XF\Db\Mysqli\Statement->getException('MySQL statement...', 1064, '42000')
#2 src/XF/Db/Mysqli/Statement.php(61): XF\Db\Mysqli\Statement->prepare()
#3 src/XF/Db/AbstractAdapter.php(96): XF\Db\Mysqli\Statement->execute()
#4 src/XF/Db/AbstractAdapter.php(167): XF\Db\AbstractAdapter->query('\\
                    SELECT r...', Array)
#5 src/addons/PB/YearRecap/Repository/UserRecap.php(142): XF\Db\AbstractAdapter->fetchAllKeyed('\\
                    SELECT r...', 'user_id', Array)
#6 src/addons/PB/YearRecap/Pub/Controller/YearRecap.php(381): PB\YearRecap\Repository\UserRecap->getPreviousYearChangesForLeaderboard(Object(XF\Mvc\Entity\ArrayCollection), 2026, 4)
#7 src/XF/Mvc/Dispatcher.php(364): PB\YearRecap\Pub\Controller\YearRecap->actionLeaderboard(Object(XF\Mvc\ParameterBag))
#8 src/XF/Mvc/Dispatcher.php(266): XF\Mvc\Dispatcher->dispatchClass('PB\\YearRecap:Ye...', 'Leaderboard', Object(XF\Mvc\RouteMatch), Object(PB\YearRecap\Pub\Controller\YearRecap), NULL)
#9 src/XF/Mvc/Dispatcher.php(121): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(PB\YearRecap\Pub\Controller\YearRecap), NULL)
#10 src/XF/Mvc/Dispatcher.php(63): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#11 src/XF/App.php(2840): XF\Mvc\Dispatcher->run()
#12 src/XF.php(850): XF\App->run()
#13 index.php(23): XF::runApp('XF\\Pub\\App')
#14 {main}

Request state

array(4) {
  ["url"] => string(44) "/year-recap/leaderboard?recap_id=4&year=2026"
  ["referrer"] => string(59) "https://www.domain.com/year-recap/leaderboard?year=2026"
  ["_GET"] => array(3) {
    ["/year-recap/leaderboard"] => string(0) ""
    ["recap_id"] => string(1) "4"
    ["year"] => string(4) "2026"
  }
  ["_POST"] => array(0) {
  }
}
Oops
i uploaded fixed build
Please re-upload it with replacing the files
 
Back
Top Bottom