|
1 | | -/* Insert initial topic/forum combinations */ |
2 | | -INSERT INTO wp_bbp_topics (`topic_id`, `forum_id`) ( |
3 | | -SELECT |
4 | | - t.ID AS topic_id, |
5 | | - f.ID AS forum_id |
6 | | -FROM wp_posts t |
7 | | -INNER JOIN wp_posts f ON f.ID = t.post_parent AND f.post_type = 'forum' AND f.post_status IN ('publish', 'private', 'hidden') |
8 | | -WHERE t.post_type = 'topic' AND t.post_status IN ('publish', 'closed', 'pending', 'trash', 'spam')); |
| 1 | +/* Update last_reply_id, last_active_id */ |
| 2 | +UPDATE wp_bbp_topics t |
| 3 | +LEFT JOIN ( |
| 4 | + SELECT t.topic_id, MAX(p.ID) AS last_reply_id |
| 5 | + FROM wp_bbp_topics t |
| 6 | + INNER JOIN wp_posts p ON p.post_parent = t.topic_id AND p.post_type = 'reply' |
| 7 | + WHERE p.post_status IN ('publish') |
| 8 | + GROUP BY t.topic_id) r ON t.topic_id = r.topic_id |
| 9 | +SET t.last_reply_id = r.last_reply_id, t.last_active_id = r.last_reply_id; |
| 10 | + |
| 11 | +/* Update last_active_id if it is 0 */ |
| 12 | +UPDATE wp_bbp_topics t |
| 13 | +SET t.last_active_id = t.topic_id |
| 14 | +WHERE t.last_active_id = 0; |
| 15 | + |
| 16 | +/* Update last_active_time */ |
| 17 | +UPDATE wp_bbp_topics t |
| 18 | +INNER JOIN wp_posts p ON p.ID = t.last_active_id |
| 19 | +SET t.last_active_time = p.post_date; |
| 20 | + |
| 21 | +/* Update reply_count */ |
| 22 | +UPDATE wp_bbp_topics o INNER JOIN ( |
| 23 | + SELECT t.topic_id, COUNT(r.reply_id) AS reply_count FROM wp_bbp_topics t |
| 24 | + INNER JOIN wp_bbp_replies r ON t.topic_id = r.topic_id |
| 25 | + INNER JOIN wp_posts p ON p.ID = r.reply_id |
| 26 | + WHERE p.post_status IN ('publish') |
| 27 | + GROUP BY t.topic_id) r ON r.topic_id = o.topic_id |
| 28 | +SET o.reply_count = r.reply_count; |
| 29 | + |
| 30 | +/* Update reply_count_hidden */ |
| 31 | +UPDATE wp_bbp_topics o INNER JOIN ( |
| 32 | + SELECT t.topic_id, COUNT(r.reply_id) AS reply_count_hidden FROM wp_bbp_topics t |
| 33 | + INNER JOIN wp_bbp_replies r ON t.topic_id = r.topic_id |
| 34 | + INNER JOIN wp_posts p ON p.ID = r.reply_id |
| 35 | + WHERE p.post_status IN ('trash', 'spam', 'pedning') |
| 36 | + GROUP BY t.topic_id) r ON r.topic_id = o.topic_id |
| 37 | +SET o.reply_count_hidden = r.reply_count_hidden; |
| 38 | + |
| 39 | +/* Update voices. Engagement table must be populated before this query */ |
| 40 | +UPDATE wp_bbp_topics t INNER JOIN ( |
| 41 | + SELECT topic_id, COUNT(user_id) AS voices |
| 42 | + FROM wp_bbp_engaged_topics |
| 43 | + GROUP BY topic_id) e ON e.topic_id = t.topic_id |
| 44 | +SET t.voice_count = e.voices; |
0 commit comments