@@ -6,51 +6,20 @@ UPDATE wp_bbp_forums o LEFT JOIN (
66 GROUP BY f .forum_id ) r ON o .forum_id = r .forum_id
77SET o .subforum_count = r .subforums ;
88
9- /* Update last_topic_id, basic pass */
10- UPDATE wp_bbp_forums f LEFT JOIN (
11- SELECT t .forum_id , MAX (t .topic_id ) AS topic_id
9+ /* Update last_topic_id, topic_count */
10+ UPDATE wp_bbp_forums f INNER JOIN (
11+ SELECT t .forum_id , MAX (t .topic_id ) AS topic_id, COUNT ( t . topic_id ) AS topic_count
1212 FROM wp_bbp_topics t
1313 INNER JOIN wp_bbp_forums f ON f .forum_id = t .forum_id AND f .forum_type = ' forum'
1414 INNER JOIN wp_posts p ON p .ID = t .topic_id AND p .post_status IN (' publish' , ' closed' )
1515 GROUP BY t .forum_id ) t ON t .forum_id = f .forum_id
16- SET f .last_topic_id = t .topic_id ;
16+ SET f .last_topic_id = t .topic_id , f . topic_count = t . topic_count ;
1717
18- /* Update last_reply_id, basic pass */
19- UPDATE wp_bbp_forums f LEFT JOIN (
20- SELECT t .forum_id , MAX (t .reply_id ) AS reply_id
18+ /* Update last_reply_id, reply_count */
19+ UPDATE wp_bbp_forums f INNER JOIN (
20+ SELECT t .forum_id , MAX (t .reply_id ) AS reply_id, COUNT ( t . reply_id ) AS reply_count
2121 FROM wp_bbp_replies t
2222 INNER JOIN wp_bbp_forums f ON f .forum_id = t .forum_id AND f .forum_type = ' forum'
2323 INNER JOIN wp_posts p ON p .ID = t .reply_id AND p .post_status IN (' publish' )
2424 GROUP BY t .forum_id ) r ON r .forum_id = f .forum_id
25- SET f .last_reply_id = r .reply_id ;
26-
27- /* Update last_topic_id, inner pass, might need to be repeated more than once */
28- UPDATE wp_bbp_forums o INNER JOIN (
29- SELECT f .forum_id , MAX (t .topic_id ) AS topic_id
30- FROM wp_bbp_forums f
31- INNER JOIN wp_posts p ON p .post_parent = f .forum_id
32- INNER JOIN wp_bbp_topics t ON t .forum_id = p .ID
33- INNER JOIN wp_posts pt ON t .topic_id = pt .ID AND pt .post_status IN (' publish' , ' closed' )
34- WHERE f .subforum_count > 0 AND f .last_topic_id = 0
35- GROUP BY f .forum_id ) r ON o .forum_id = r .forum_id
36- SET o .last_topic_id = r .topic_id ;
37-
38- /* Update last_reply_id, inner pass, might need to be repeated more than once */
39- UPDATE wp_bbp_forums o INNER JOIN (
40- SELECT f .forum_id , MAX (t .reply_id ) AS reply_id
41- FROM wp_bbp_forums f
42- INNER JOIN wp_posts p ON p .post_parent = f .forum_id
43- INNER JOIN wp_bbp_replies t ON t .forum_id = p .ID
44- INNER JOIN wp_posts pt ON t .reply_id = pt .ID AND pt .post_status IN (' publish' , ' closed' )
45- WHERE f .subforum_count > 0 AND f .last_reply_id = 0
46- GROUP BY f .forum_id ) r ON o .forum_id = r .forum_id
47- SET o .last_reply_id = r .reply_id ;
48-
49- /* Update last_active_id */
50- UPDATE wp_bbp_forums f
51- SET f .last_active_id = GREATEST(last_topic_id, last_reply_id);
52-
53- /* Update last_active_time */
54- UPDATE wp_bbp_forums f
55- INNER JOIN wp_posts p ON p .ID = f .last_active_id
56- SET f .last_active_time = p .post_date ;
25+ SET f .last_reply_id = r .reply_id , f .reply_count = r .reply_count ;
0 commit comments