Skip to content

Commit cea83a8

Browse files
authored
Update wp_bbp_topics.sql
1 parent 8c88487 commit cea83a8

File tree

1 file changed

+44
-8
lines changed

1 file changed

+44
-8
lines changed

generate/updates/wp_bbp_topics.sql

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,44 @@
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

Comments
 (0)