Moderator Checkpoint System

Moderator Checkpoint System [Paid] 3.2.2

No permission to buy (£40.00)

Stuart Wright

Well-known member
Stuart Wright submitted a new resource:

Moderator Checkpoint System for XF2 - Track which posts have been checked by your moderators to save duplication of work

This addon has been working to save moderators time on AVForums.com since 2013.
Note: Taken official ownership of this addon from Chris D on 3rd April 2019.
  • Saves duplication of work by multiple moderators by showing which posts have been checked
  • Records when moderators have checked posts
  • Saves the checking moderator name and timestamp
  • Checked and unchecked posts are shown in different colours for easy identification
  • Completely checked threads and threads with unchecked...

Read more about this resource...
 
I have to buy product again for full price (40 GBP) or I can buy renewal (20GBP) if I update from xf1 version?
If I can buy renewal, how to do so? Because I can only add "new addon" in to cart on your page

19-12-45.webp


19-17-01.webp
 
I believe Stuart may be in the process of putting things in place to allow existing customers to claim their FetchApp orders as licenses on his site. Don't worry, you haven't been forgotten.
 
@Stuart Wright Your site show Moderator Checkpoint System 2.0.3 but here Moderator Checkpoint System 3.0.4. So version numbering are not updated? Also please make under consideration for making add-on option and SP title suitable with Moderator Checkpoint System, not AVForums.com - Moderator Checkpoint System. We already know this add-on from AVForums.com.
 
I have to buy product again for full price (40 GBP) or I can buy renewal (20GBP) if I update from xf1 version?
If I can buy renewal, how to do so? Because I can only add "new addon" in to cart on your page
Renewal. I will post instructions on M2N.co.uk with a link to them here, soon.
 
You can click this link for instructions on how to claim your license over at the M2N site and download the Moderator Checkpoint System for Xenforo 2.
 
Ok, installed. So this has no options, no style properties, no cache rebuild to start from an all read environment?

What am I missing from the first version?
 
With checkpoint on, I'm getting this in some forums due to some threads, at a guess, having corrupted in trying to set as checked or such.

Code:
XF\Db\Exception: MySQL fetch error [2014]: Commands out of sync; you can't run this command now in src/XF/Db/AbstractStatement.php at line 212
[LIST=1]
[*]XF\Db\AbstractStatement->getException() in src/XF/Db/Mysqli/Statement.php at line 196
[*]XF\Db\Mysqli\Statement->getException() in src/XF/Db/Mysqli/Statement.php at line 134
[*]XF\Db\Mysqli\Statement->fetchRowValues() in src/XF/Db/AbstractStatement.php at line 88
[*]XF\Db\AbstractStatement->fetchAliasGrouped() in src/XF/Mvc/Entity/Finder.php at line 1165
[*]XF\Mvc\Entity\Finder->fetch() in src/XF/Pub/Controller/Forum.php at line 229
[*]XF\Pub\Controller\Forum->actionForum() in src/addons/xenMade/STNS/XF/Pub/Controller/Forum.php at line 13
[*]xenMade\STNS\XF\Pub\Controller\Forum->actionForum() in src/addons/XenMax/PrefixFilter/XF/Pub/Controller/Forum.php at line 24
[*]XenMax\PrefixFilter\XF\Pub\Controller\Forum->actionForum() in src/XF/Mvc/Dispatcher.php at line 249
[*]XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 88
[*]XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 41
[*]XF\Mvc\Dispatcher->run() in src/XF/App.php at line 1931
[*]XF\App->run() in src/XF.php at line 328
[*]XF::runApp() in index.php at line 13
[/LIST]
Disable checkpoint frontend, all is good and the forum shows its content. I have this in three forums.

Is there a command line, or bulk option to force check all threads? To correct such an issue?
 
Backend log:

Code:
[LIST]
[*]XF\Db\Exception: MySQL fetch error [2014]: Commands out of sync; you can't run this command now
[*]src/XF/Db/AbstractStatement.php:212
[*]Generated by: anthony
[*]Apr 10, 2019 at 7:49 AM
[/LIST]
Stack trace
            SELECT `xf_thread`.*, `xf_deletion_log_DeletionLog_1`.*, `xf_user_User_2`.*, `xf_thread_read_Read_3`.*, `xf_thread_user_post_UserPosts_4`.*, `xf_thread_watch_Watch_5`.*, `xf_ignore_content_IgnoreContent_6`.*
            FROM `xf_thread`
            LEFT JOIN `xf_deletion_log` AS `xf_deletion_log_DeletionLog_1` ON (`xf_deletion_log_DeletionLog_1`.`content_type` = 'thread' AND `xf_deletion_log_DeletionLog_1`.`content_id` = `xf_thread`.`thread_id`)
LEFT JOIN `xf_user` AS `xf_user_User_2` ON (`xf_user_User_2`.`user_id` = `xf_thread`.`user_id`)
LEFT JOIN `xf_thread_read` AS `xf_thread_read_Read_3` ON (`xf_thread_read_Read_3`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_read_Read_3`.`user_id` = '1')
LEFT JOIN `xf_thread_user_post` AS `xf_thread_user_post_UserPosts_4` ON (`xf_thread_user_post_UserPosts_4`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_user_post_UserPosts_4`.`user_id` = '1')
LEFT JOIN `xf_thread_watch` AS `xf_thread_watch_Watch_5` ON (`xf_thread_watch_Watch_5`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_watch_Watch_5`.`user_id` = '1')
LEFT JOIN `xf_ignore_content` AS `xf_ignore_content_IgnoreContent_6` ON (`xf_ignore_content_IgnoreContent_6`.`content_type` = 'thread' AND `xf_ignore_content_IgnoreContent_6`.`content_id` = `xf_thread`.`thread_id` AND `xf_ignore_content_IgnoreContent_6`.`user_id` = '1')
            WHERE (`xf_thread`.`node_id` = 30) AND ((`xf_thread`.`discussion_state` IN ('visible', 'deleted', 'moderated'))) AND (`xf_thread`.`discussion_state` = 'visible') AND (`xf_thread`.`discussion_type` != 'redirect') AND (`xf_thread`.`sticky` = 0)
            ORDER BY
            CASE
            WHEN `xf_thread`.`discussion_state` = 'visible'
            THEN (`xf_thread`.`reply_count` + 1) - `xf_thread`.`thread_check_count`
            ELSE 0
            END DESC,
            `xf_thread`.`last_post_date`
         DESC
       
LIMIT 25
------------

#0 src/XF/Db/Mysqli/Statement.php(196): XF\Db\AbstractStatement->getException('MySQL fetch err...', 2014, 'HY000')
#1 src/XF/Db/Mysqli/Statement.php(134): XF\Db\Mysqli\Statement->getException('MySQL fetch err...', 2014, 'HY000')
#2 src/XF/Db/AbstractStatement.php(88): XF\Db\Mysqli\Statement->fetchRowValues()
#3 src/XF/Mvc/Entity/Finder.php(1165): XF\Db\AbstractStatement->fetchAliasGrouped()
#4 src/XF/Pub/Controller/Forum.php(229): XF\Mvc\Entity\Finder->fetch()
#5 src/addons/xenMade/STNS/XF/Pub/Controller/Forum.php(13): XF\Pub\Controller\Forum->actionForum(Object(XF\Mvc\ParameterBag))
#6 src/addons/XenMax/PrefixFilter/XF/Pub/Controller/Forum.php(24): xenMade\STNS\XF\Pub\Controller\Forum->actionForum(Object(XF\Mvc\ParameterBag))
#7 src/XF/Mvc/Dispatcher.php(249): XenMax\PrefixFilter\XF\Pub\Controller\Forum->actionForum(Object(XF\Mvc\ParameterBag))
#8 src/XF/Mvc/Dispatcher.php(88): XF\Mvc\Dispatcher->dispatchClass('XF:Forum', 'Forum', 'html', Object(XF\Mvc\ParameterBag), 'forums', Object(EWR\Porta\Pub\Controller\Forum), Object(XF\Mvc\Reply\Reroute))
#9 src/XF/Mvc/Dispatcher.php(41): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#10 src/XF/App.php(1931): XF\Mvc\Dispatcher->run()
#11 src/XF.php(328): XF\App->run()
#12 index.php(13): XF::runApp('XF\\Pub\\App')
#13 {main}
Request state
array(4) {
  ["url"] => string(18) "/forums/social.30/"
  ["referrer"] => string(30) "https://www.myptsd.com/forums/"
  ["_GET"] => array(1) {
    ["/forums/social_30/"] => string(0) ""
  }
  ["_POST"] => array(0) {
  }
}
 
So this has no options, no style properties, no cache rebuild to start from an all read environment?
Same for me, @Stuart Wright . There seems to be something missing.

Suggestion: when zero posts are unchecked in a thread please remove the info-bar, since it just tells you that there is nothing to tell ;)
199967

Incompatibility:
Active mode doesn´t work, when https://xenforo.com/community/resources/th-question-and-answer-forums.5725/ is active. I am unsure which add-on causes this. Just tagging @ThemeHouse and @Mike Creuzer here, so they can have a look inside, too.

Luckily, I don´t have any errors in the logs like Anthony is experiencing :)
 
There are no options or style properties anymore. What are you hoping to change?

The rebuild missing is an oversight.

Will look at the other issues.

I also cannot repro Anthony’s issue but it is vaguely familiar so I have some things to check.
 
There are no options or style properties anymore. What are you hoping to change?
I was expecting some style settings to adjust colours and those little things. When you say it´s intended, then of course they aren´t in there anymore and I can stop searching ;)
 
Last edited:
Actually, I did intend for the colours to be easier to change at least. It's a little complicated at the moment.

In the next version we'll have 4 colour variables you can change if you need to inside the core_m2n_checkpoint.less template:
Less:
@m2n-checkpoint-checked: #daf3d8;
@m2n-checkpoint-checked-heavy: #63b265;
@m2n-checkpoint-recent: #fde9e9;
@m2n-checkpoint-recent-heavy: #c84448;
 
Will look at the other issues.

I also cannot repro Anthony’s issue but it is vaguely familiar so I have some things to check.
Thanks. I don't care about options and colours, was more checking that they aren't supposed to be, based on pointing to XF1 version for usage, was all.

I think the error in some of my forums is due to large threads, which is where I had most issue trying to get them to check as I have a 60 second max for my PHP execution, obvious reason, to avoid nasty scripts doing nasty things for long periods of time.
 
Actually, I did intend for the colours to be easier to change at least. It's a little complicated at the moment.

In the next version we'll have 4 colour variables you can change if you need to inside the core_m2n_checkpoint.less template:
Less:
@m2n-checkpoint-checked: #daf3d8;
@m2n-checkpoint-checked-heavy: #63b265;
@m2n-checkpoint-recent: #fde9e9;
@m2n-checkpoint-recent-heavy: #c84448;
Chris & Stuart, regarding the incompatibility with the Themhouse Q&A add-on: can you tell, wether this is a problem in MCS or Q&A?
 
Chris & Stuart, regarding the incompatibility with the Themhouse Q&A add-on: can you tell, wether this is a problem in MCS or Q&A?
I can't see anything invalid in our approach there so would have to guess that @ThemeHouse may be doing something unexpected here? @Jake B. @Mike Creuzer care to take a look?

Our extension of Thread::actionThread is simply:
PHP:
public function actionIndex(ParameterBag $params)
{
   $reply = parent::actionIndex($params);

   if ($reply instanceof View && !empty($reply->getParam('posts')))
   {
      $posts = $reply->getParam('posts');

      if (\XF::visitor()->moderation_mode && \XF::visitor()->active_checking)
      {
         $thread = $reply->getParam('thread');
         $forum = $thread->Forum;

         /** @var \M2N\Checkpoint\Service\BulkChecker $checker */
         $checker = $this->app()->service('M2N\Checkpoint:BulkChecker');

         $checker->checkPosts($posts, true);
         $checker->checkOrUncheckThreads($thread);
         $checker->checkOrUncheckForums($forum);
      }

      $perPage = $reply->getParam('perPage');
      $postCheckDates = $posts->pluckNamed('post_check_date');
      $reply->setParam('pageChecked', !in_array(0, $postCheckDates));
      $postsUnchecked = array_filter($postCheckDates);
      if (count($postsUnchecked) == $perPage)
      {
         $reply->setParam('pageUnchecked', true);
      }
   }

   return $reply;
}
 
Does this happen on the "normal" thread view (sorted by date)? Or is it specific to sorting by votes? We use a separate controller action for sorting by votes (IIRC this was to prevent having to query the threads twice, but this was done during the developer previews so I don't remember the exact reasoning at this point) and we reroute to that action from actionIndex:

PHP:
public function actionIndex(ParameterBag $params)
{
    $thread = $this->assertViewableThread($params->thread_id, $this->getThreadViewExtraWith());

    /** @var \XF\Entity\Forum $forum */
    $forum = $thread->Forum;

    if ($thread->th_is_qa_qaforum) {
        $options = \XF::options();
        $view = $this->filter('view', 'string', $options->th_defaultThreadView_qaForums);

        if ($view == 'votes') {
            return $this->rerouteController('XF:Thread', 'threadVotes', $params);
        } else {
            $response = parent::actionIndex($params);

            if ($response instanceof \XF\Mvc\Reply\View) {
                $pageNavParams = $response->getParam('pageNavParams');
                if (!$pageNavParams) {
                    $pageNavParams = [];
                }
                $pageNavParams['view'] = 'date';

                $response->setParam('pageNavParams', $pageNavParams);
            }

            return $response;
        }
    }

    return parent::actionIndex($params);
}

I could probably change it to run that function (return $this->actionThreadVotes($params)) directly instead so it'll still directly return XF\Mvc\Response\View instead of the reroute.

@Chris D Would you mind sending me a copy of this add-on so I can do some testing to resolve the issue?
 
Back
Top Bottom