bbPress - Version 2.6.0

Version Description

  • Released on November 12, 2019

  • Per-Forum Moderation

  • Engagements API

  • Support for PHP 7.1 and higher

  • Improved Importer (and more platforms!)

  • Improved Voices, Favorites, Subscriptions

  • Improved Topic & Reply moderation UI

  • Improved Item Counts

  • Improved Upgrades

  • Improved Tools

  • Improved Admin-area Experience

  • 420 total improvements

Download this release

Release Info

Developer johnjamesjacoby
Plugin Icon 128x128 bbPress
Version 2.6.0
Comparing to
See all releases

Code changes from version 2.6-rc-7 to 2.6.0

Files changed (47) hide show
  1. bbpress.php +4 -4
  2. bbpress.pot +662 -598
  3. includes/admin/actions.php +27 -3
  4. includes/admin/assets/css/admin-rtl.css +58 -20
  5. includes/admin/assets/css/admin-rtl.min.css +1 -1
  6. includes/admin/assets/css/admin.css +58 -20
  7. includes/admin/assets/css/admin.min.css +1 -1
  8. includes/admin/classes/class-bbp-admin.php +156 -83
  9. includes/admin/metaboxes.php +40 -19
  10. includes/admin/parser.php +6 -6
  11. includes/admin/settings.php +8 -8
  12. includes/admin/tools.php +53 -29
  13. includes/admin/tools/common.php +522 -106
  14. includes/admin/tools/repair.php +85 -14
  15. includes/admin/tools/reset.php +3 -2
  16. includes/admin/tools/upgrade.php +54 -8
  17. includes/common/formatting.php +2 -2
  18. includes/common/functions.php +175 -35
  19. includes/common/template.php +11 -8
  20. includes/core/abstraction.php +45 -27
  21. includes/core/actions.php +69 -49
  22. includes/core/filters.php +20 -9
  23. includes/core/functions.php +2 -2
  24. includes/core/options.php +1 -1
  25. includes/core/sub-actions.php +29 -1
  26. includes/core/template-functions.php +2 -2
  27. includes/core/theme-compat.php +1 -1
  28. includes/core/update.php +156 -17
  29. includes/forums/functions.php +320 -49
  30. includes/forums/template.php +103 -53
  31. includes/replies/capabilities.php +12 -4
  32. includes/replies/functions.php +81 -34
  33. includes/replies/template.php +79 -82
  34. includes/search/functions.php +54 -0
  35. includes/search/template.php +23 -6
  36. includes/topics/capabilities.php +12 -4
  37. includes/topics/functions.php +124 -47
  38. includes/topics/template.php +71 -87
  39. includes/users/engagements.php +6 -0
  40. includes/users/template.php +1 -1
  41. readme.txt +14 -2
  42. templates/default/bbpress-functions.php +1 -1
  43. templates/default/bbpress/user-subscriptions.php +1 -4
  44. templates/default/css/bbpress-rtl.css +7 -26
  45. templates/default/css/bbpress-rtl.min.css +1 -1
  46. templates/default/css/bbpress.css +7 -26
  47. templates/default/css/bbpress.min.css +1 -1
bbpress.php CHANGED
@@ -5,7 +5,7 @@
5
  *
6
  * bbPress is forum software with a twist from the creators of WordPress.
7
  *
8
- * $Id: bbpress.php 6878 2018-12-05 18:37:32Z johnjamesjacoby $
9
  *
10
  * @package bbPress
11
  * @subpackage Main
@@ -17,7 +17,7 @@
17
  * Description: bbPress is forum software with a twist from the creators of WordPress.
18
  * Author: The bbPress Contributors
19
  * Author URI: https://bbpress.org
20
- * Version: 2.6-rc-7
21
  * Text Domain: bbpress
22
  * Domain Path: /languages/
23
  * License: GPLv2 or later (license.txt)
@@ -203,8 +203,8 @@ final class bbPress {
203
 
204
  /** Versions **********************************************************/
205
 
206
- $this->version = '2.6-rc-6878';
207
- $this->db_version = '262';
208
 
209
  /** Paths *************************************************************/
210
 
5
  *
6
  * bbPress is forum software with a twist from the creators of WordPress.
7
  *
8
+ * $Id: bbpress.php 6938 2019-11-12 17:48:18Z johnjamesjacoby $
9
  *
10
  * @package bbPress
11
  * @subpackage Main
17
  * Description: bbPress is forum software with a twist from the creators of WordPress.
18
  * Author: The bbPress Contributors
19
  * Author URI: https://bbpress.org
20
+ * Version: 2.6.0
21
  * Text Domain: bbpress
22
  * Domain Path: /languages/
23
  * License: GPLv2 or later (license.txt)
203
 
204
  /** Versions **********************************************************/
205
 
206
+ $this->version = '2.6.0';
207
+ $this->db_version = '263';
208
 
209
  /** Paths *************************************************************/
210
 
bbpress.pot CHANGED
@@ -1,17 +1,17 @@
1
- # Copyright (C) 2018 The bbPress Contributors
2
  # This file is distributed under the GPLv2 or later (license.txt).
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: bbPress 2.6-rc-7\n"
6
  "Report-Msgid-Bugs-To: https://bbpress.trac.wordpress.org\n"
7
- "POT-Creation-Date: 2018-12-05 18:40:05+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: JOHN JAMES JACOBY <jjj@bbpress.org>\n"
13
  "Language-Team: ENGLISH <jjj@bbpress.org>\n"
14
- "X-Generator: grunt-wp-i18n1.0.2\n"
15
 
16
  #: bbpress.php:144 bbpress.php:151
17
  msgid "Cheatin&#8217; huh?"
@@ -41,26 +41,26 @@ msgstr ""
41
  msgid "bbPress Item Count"
42
  msgstr ""
43
 
44
- #: includes/admin/actions.php:177 includes/admin/forums.php:538
45
  #: includes/admin/settings.php:280 includes/admin/settings.php:301
46
- #: includes/admin/tools/common.php:269 includes/admin/topics.php:854
47
  #: includes/extend/buddypress/activity.php:197
48
  #: includes/extend/buddypress/activity.php:391
49
- #: includes/forums/template.php:2610 includes/topics/template.php:47
50
  #: includes/topics/template.php:48
51
  #: templates/default/bbpress/content-statistics.php:30
52
  #: templates/default/bbpress/loop-forums.php:21
53
  msgid "Topics"
54
  msgstr ""
55
 
56
- #: includes/admin/actions.php:182 includes/admin/actions.php:194
57
  #: includes/admin/forums.php:539 includes/admin/settings.php:288
58
- #: includes/admin/settings.php:309 includes/admin/tools/common.php:272
59
  #: includes/admin/topics.php:390 includes/admin/topics.php:856
60
  #: includes/core/theme-compat.php:694
61
  #: includes/extend/buddypress/activity.php:207
62
  #: includes/extend/buddypress/activity.php:392
63
- #: includes/forums/template.php:2664 includes/replies/template.php:49
64
  #: includes/replies/template.php:50
65
  #: templates/default/bbpress/content-statistics.php:35
66
  #: templates/default/bbpress/loop-forums.php:23
@@ -70,7 +70,7 @@ msgstr ""
70
  msgid "Replies"
71
  msgstr ""
72
 
73
- #: includes/admin/actions.php:189 includes/admin/actions.php:201
74
  #: includes/admin/forums.php:537 includes/admin/metaboxes.php:113
75
  #: includes/admin/metaboxes.php:432 includes/admin/metaboxes.php:496
76
  #: includes/admin/replies.php:665 includes/admin/settings.php:351
@@ -80,7 +80,7 @@ msgstr ""
80
  msgid "Forum"
81
  msgstr ""
82
 
83
- #: includes/admin/actions.php:206 includes/admin/metaboxes.php:130
84
  #: includes/admin/metaboxes.php:523 includes/admin/replies.php:666
85
  #: includes/admin/settings.php:359 includes/topics/template.php:49
86
  #: templates/default/bbpress/content-single-topic-lead.php:23
@@ -89,109 +89,109 @@ msgstr ""
89
  msgid "Topic"
90
  msgstr ""
91
 
92
- #: includes/admin/classes/class-bbp-admin.php:221
93
- msgid "Go Upgrade"
94
  msgstr ""
95
 
96
- #: includes/admin/classes/class-bbp-admin.php:222
97
- msgid "Hide Forever"
98
  msgstr ""
99
 
100
- #: includes/admin/classes/class-bbp-admin.php:225
101
- msgid "bbPress requires a manual database upgrade. %s or %s"
102
  msgstr ""
103
 
104
- #: includes/admin/classes/class-bbp-admin.php:408
105
- #: includes/admin/classes/class-bbp-admin.php:409
106
- #: includes/admin/classes/class-bbp-admin.php:418
107
- #: includes/admin/classes/class-bbp-admin.php:419
108
- #: includes/admin/tools/common.php:266 includes/admin/tools.php:30
109
  #: includes/admin/users.php:93 includes/common/widgets.php:626
110
  #: includes/extend/buddypress/loader.php:42
111
  #: includes/extend/buddypress/loader.php:189
112
  #: includes/extend/buddypress/loader.php:311
113
  #: includes/extend/buddypress/loader.php:376 includes/forums/template.php:48
114
- #: includes/forums/template.php:49 includes/forums/template.php:68
115
  #: templates/default/bbpress/content-statistics.php:25
116
  #: templates/default/bbpress/user-profile.php:34
117
  msgid "Forums"
118
  msgstr ""
119
 
120
- #: includes/admin/classes/class-bbp-admin.php:431
121
- #: includes/admin/classes/class-bbp-admin.php:432
122
- #: includes/admin/classes/class-bbp-admin.php:440
123
- #: includes/admin/classes/class-bbp-admin.php:441
124
  msgid "Welcome to bbPress"
125
  msgstr ""
126
 
127
- #: includes/admin/classes/class-bbp-admin.php:455
128
- #: includes/admin/classes/class-bbp-admin.php:456
129
- #: includes/admin/classes/class-bbp-admin.php:477
130
- #: includes/admin/classes/class-bbp-admin.php:478
131
- #: includes/admin/classes/class-bbp-admin.php:1182
132
- #: includes/admin/classes/class-bbp-admin.php:1279
133
  msgid "Update Forums"
134
  msgstr ""
135
 
136
- #: includes/admin/classes/class-bbp-admin.php:663
137
  msgid "Settings"
138
  msgstr ""
139
 
140
- #: includes/admin/classes/class-bbp-admin.php:668
141
  msgid "About"
142
  msgstr ""
143
 
144
- #: includes/admin/classes/class-bbp-admin.php:846
145
- #: includes/admin/classes/class-bbp-admin.php:883
146
  msgid "%s - %s"
147
  msgstr ""
148
 
149
- #: includes/admin/classes/class-bbp-admin.php:901
150
  msgid "Welcome to bbPress %s"
151
  msgstr ""
152
 
153
- #: includes/admin/classes/class-bbp-admin.php:902
154
  msgid ""
155
  "bbPress is fun to use, contains no artificial colors or preservatives, and "
156
  "is absolutely wonderful in every environment. Your community is going to "
157
  "love using it."
158
  msgstr ""
159
 
160
- #: includes/admin/classes/class-bbp-admin.php:928
161
- #: includes/admin/classes/class-bbp-admin.php:1002
162
  msgid "What&#8217;s New"
163
  msgstr ""
164
 
165
- #: includes/admin/classes/class-bbp-admin.php:930
166
- #: includes/admin/classes/class-bbp-admin.php:1004
167
  msgid "Credits"
168
  msgstr ""
169
 
170
- #: includes/admin/classes/class-bbp-admin.php:935
171
  msgid "Forum Subscriptions"
172
  msgstr ""
173
 
174
- #: includes/admin/classes/class-bbp-admin.php:939
175
  msgid "Subscribe to Forums"
176
  msgstr ""
177
 
178
- #: includes/admin/classes/class-bbp-admin.php:940
179
  msgid "Now your users can subscribe to new topics in specific forums."
180
  msgstr ""
181
 
182
- #: includes/admin/classes/class-bbp-admin.php:944
183
  msgid "Manage Subscriptions"
184
  msgstr ""
185
 
186
- #: includes/admin/classes/class-bbp-admin.php:945
187
  msgid "Your users can manage all of their subscriptions in one convenient location."
188
  msgstr ""
189
 
190
- #: includes/admin/classes/class-bbp-admin.php:951
191
  msgid "Converters"
192
  msgstr ""
193
 
194
- #: includes/admin/classes/class-bbp-admin.php:955
195
  msgid ""
196
  "We&#8217;re all abuzz about the hive of new importers, AEF, Drupal, FluxBB, "
197
  "Kunena Forums for Joomla, MyBB, Phorum, PHPFox, PHPWind, PunBB, SMF, "
@@ -200,120 +200,120 @@ msgid ""
200
  "now gone if you need to remove imported users."
201
  msgstr ""
202
 
203
- #: includes/admin/classes/class-bbp-admin.php:961
204
  msgid "Theme Compatibility"
205
  msgstr ""
206
 
207
- #: includes/admin/classes/class-bbp-admin.php:962
208
  msgid "Better handling of styles and scripts in the template stack."
209
  msgstr ""
210
 
211
- #: includes/admin/classes/class-bbp-admin.php:966
212
  msgid "Polyglot support"
213
  msgstr ""
214
 
215
- #: includes/admin/classes/class-bbp-admin.php:967
216
  msgid "bbPress fully supports automatic translation updates."
217
  msgstr ""
218
 
219
- #: includes/admin/classes/class-bbp-admin.php:971
220
  msgid "User capabilities"
221
  msgstr ""
222
 
223
- #: includes/admin/classes/class-bbp-admin.php:972
224
  msgid "Roles and capabilities have been swept through, cleaned up, and simplified."
225
  msgstr ""
226
 
227
- #: includes/admin/classes/class-bbp-admin.php:978
228
- #: includes/admin/classes/class-bbp-admin.php:1118
229
  msgid "Go to Forum Settings"
230
  msgstr ""
231
 
232
- #: includes/admin/classes/class-bbp-admin.php:1008
233
  msgid "bbPress is created by a worldwide swarm of busy, busy bees."
234
  msgstr ""
235
 
236
- #: includes/admin/classes/class-bbp-admin.php:1010
237
  msgid "Project Leaders"
238
  msgstr ""
239
 
240
- #: includes/admin/classes/class-bbp-admin.php:1014
241
  msgid "Founding Developer"
242
  msgstr ""
243
 
244
- #: includes/admin/classes/class-bbp-admin.php:1018
245
  msgid "Lead Developer"
246
  msgstr ""
247
 
248
- #: includes/admin/classes/class-bbp-admin.php:1022
249
  msgid "Feature Virtuoso"
250
  msgstr ""
251
 
252
- #: includes/admin/classes/class-bbp-admin.php:1026
253
  msgid "Tool Maven"
254
  msgstr ""
255
 
256
- #: includes/admin/classes/class-bbp-admin.php:1030
257
  msgid "Contributing Developers"
258
  msgstr ""
259
 
260
- #: includes/admin/classes/class-bbp-admin.php:1034
261
- #: includes/admin/classes/class-bbp-admin.php:1038
262
  msgid "Core Developer"
263
  msgstr ""
264
 
265
- #: includes/admin/classes/class-bbp-admin.php:1042
266
  msgid "Project Emeriti"
267
  msgstr ""
268
 
269
- #: includes/admin/classes/class-bbp-admin.php:1046
270
  msgid "Feature Developer"
271
  msgstr ""
272
 
273
- #: includes/admin/classes/class-bbp-admin.php:1050
274
  msgid "Integration Testing"
275
  msgstr ""
276
 
277
- #: includes/admin/classes/class-bbp-admin.php:1054
278
  msgid "Contributors to bbPress 2.6"
279
  msgstr ""
280
 
281
- #: includes/admin/classes/class-bbp-admin.php:1139
282
- #: includes/admin/classes/class-bbp-admin.php:1161
283
  msgid "Update Forum"
284
  msgstr ""
285
 
286
- #: includes/admin/classes/class-bbp-admin.php:1150
287
- #: includes/admin/classes/class-bbp-admin.php:1199
288
  msgid "All done!"
289
  msgstr ""
290
 
291
- #: includes/admin/classes/class-bbp-admin.php:1151
292
- #: includes/admin/classes/class-bbp-admin.php:1200
293
  msgid "Go Back"
294
  msgstr ""
295
 
296
- #: includes/admin/classes/class-bbp-admin.php:1160
297
  msgid "You can update your forum through this page. Hit the link below to update."
298
  msgstr ""
299
 
300
- #: includes/admin/classes/class-bbp-admin.php:1234
301
  msgid ""
302
  "Warning! Problem updating %1$s. Your server may not be able to connect to "
303
  "sites running on it. Error message: %2$s"
304
  msgstr ""
305
 
306
- #: includes/admin/classes/class-bbp-admin.php:1259
307
  msgid ""
308
  "If your browser doesn&#8217;t start loading the next page automatically, "
309
  "click this link:"
310
  msgstr ""
311
 
312
- #: includes/admin/classes/class-bbp-admin.php:1260
313
  msgid "Next Forums"
314
  msgstr ""
315
 
316
- #: includes/admin/classes/class-bbp-admin.php:1278
317
  msgid ""
318
  "You can update all the forums on your network through this page. It works "
319
  "by calling the update script of each site automatically. Hit the link below "
@@ -621,13 +621,13 @@ msgstr ""
621
  #: includes/admin/classes/class-bbp-topic-replies-list-table.php:91
622
  #: includes/admin/replies.php:235 includes/admin/replies.php:818
623
  #: includes/admin/topics.php:240 includes/admin/topics.php:1023
624
- #: includes/replies/template.php:2031 includes/topics/template.php:2836
625
  msgid "Spam"
626
  msgstr ""
627
 
628
  #: includes/admin/classes/class-bbp-topic-replies-list-table.php:92
629
  #: includes/admin/replies.php:833 includes/admin/topics.php:1037
630
- #: includes/replies/template.php:1963 includes/topics/template.php:2544
631
  msgid "Trash"
632
  msgstr ""
633
 
@@ -638,9 +638,9 @@ msgid "View"
638
  msgstr ""
639
 
640
  #: includes/admin/classes/class-bbp-topic-replies-list-table.php:149
641
- #: includes/common/template.php:2262 includes/forums/template.php:54
642
- #: includes/replies/template.php:55 includes/replies/template.php:1851
643
- #: includes/topics/template.php:53 includes/topics/template.php:2432
644
  #: templates/default/bbpress/user-details.php:74
645
  msgid "Edit"
646
  msgstr ""
@@ -731,8 +731,8 @@ msgid ""
731
  msgstr ""
732
 
733
  #: includes/admin/forums.php:136 includes/admin/replies.php:153
734
- #: includes/admin/tools/repair.php:47 includes/admin/tools/repair.php:149
735
- #: includes/admin/tools/upgrade.php:44 includes/admin/tools/upgrade.php:146
736
  #: includes/admin/topics.php:159
737
  msgid "Bulk Actions"
738
  msgstr ""
@@ -839,7 +839,7 @@ msgid ""
839
  msgstr ""
840
 
841
  #: includes/admin/forums.php:181 includes/admin/forums.php:214
842
- #: includes/forums/template.php:69
843
  msgid "Forum Attributes"
844
  msgstr ""
845
 
@@ -882,12 +882,12 @@ msgid "Publish Box"
882
  msgstr ""
883
 
884
  #: includes/admin/forums.php:237 includes/admin/settings.php:208
885
- #: includes/admin/tools/reset.php:41
886
  msgid "Forum Moderators"
887
  msgstr ""
888
 
889
  #: includes/admin/forums.php:267 includes/admin/settings.php:184
890
- #: includes/admin/settings.php:436 includes/admin/tools/common.php:284
891
  #: includes/admin/topics.php:480 includes/extend/buddypress/loader.php:260
892
  #: templates/default/bbpress/user-details.php:67
893
  msgid "Subscriptions"
@@ -943,7 +943,7 @@ msgstr ""
943
  msgid "&mdash;"
944
  msgstr ""
945
 
946
- #: includes/admin/forums.php:595 includes/forums/template.php:572
947
  msgid "No Topics"
948
  msgstr ""
949
 
@@ -956,6 +956,7 @@ msgid "Open this forum"
956
  msgstr ""
957
 
958
  #: includes/admin/forums.php:701 includes/admin/forums.php:713
 
959
  msgid "Forum updated."
960
  msgstr ""
961
 
@@ -1050,7 +1051,7 @@ msgstr[0] ""
1050
  msgstr[1] ""
1051
 
1052
  #: includes/admin/metaboxes.php:166 includes/admin/settings.php:367
1053
- #: includes/topics/template.php:3396
1054
  msgid "Topic Tag"
1055
  msgid_plural "Topic Tags"
1056
  msgstr[0] ""
@@ -1218,19 +1219,19 @@ msgstr ""
1218
  msgid "Separate user-names with commas"
1219
  msgstr ""
1220
 
1221
- #: includes/admin/metaboxes.php:695
1222
  msgid "No users have engaged to this topic."
1223
  msgstr ""
1224
 
1225
- #: includes/admin/metaboxes.php:731
1226
  msgid "No users have favorited this topic."
1227
  msgstr ""
1228
 
1229
- #: includes/admin/metaboxes.php:769
1230
  msgid "No users have subscribed to this topic."
1231
  msgstr ""
1232
 
1233
- #: includes/admin/metaboxes.php:805
1234
  msgid "No users have subscribed to this forum."
1235
  msgstr ""
1236
 
@@ -1369,7 +1370,7 @@ msgid ""
1369
  msgstr ""
1370
 
1371
  #: includes/admin/replies.php:198 includes/admin/replies.php:336
1372
- #: includes/replies/template.php:70
1373
  msgid "Reply Attributes"
1374
  msgstr ""
1375
 
@@ -1395,7 +1396,7 @@ msgid "<strong>Reply To</strong> determines the threading of the reply."
1395
  msgstr ""
1396
 
1397
  #: includes/admin/replies.php:233 includes/admin/topics.php:238
1398
- #: includes/replies/template.php:2032 includes/topics/template.php:2837
1399
  msgid "Unspam"
1400
  msgstr ""
1401
 
@@ -1514,22 +1515,22 @@ msgid "Not Spam"
1514
  msgstr ""
1515
 
1516
  #: includes/admin/replies.php:831 includes/admin/topics.php:1035
1517
- #: includes/replies/template.php:1981 includes/topics/template.php:2561
1518
  msgid "Restore this item from the Trash"
1519
  msgstr ""
1520
 
1521
  #: includes/admin/replies.php:831 includes/admin/topics.php:1035
1522
- #: includes/replies/template.php:1964 includes/topics/template.php:2545
1523
  msgid "Restore"
1524
  msgstr ""
1525
 
1526
  #: includes/admin/replies.php:833 includes/admin/topics.php:1037
1527
- #: includes/replies/template.php:1985 includes/topics/template.php:2563
1528
  msgid "Move this item to the Trash"
1529
  msgstr ""
1530
 
1531
  #: includes/admin/replies.php:837 includes/admin/topics.php:1041
1532
- #: includes/replies/template.php:1990 includes/topics/template.php:2567
1533
  msgid "Delete this item permanently"
1534
  msgstr ""
1535
 
@@ -1546,6 +1547,7 @@ msgid "Empty Spam"
1546
  msgstr ""
1547
 
1548
  #: includes/admin/replies.php:971 includes/admin/replies.php:983
 
1549
  msgid "Reply updated."
1550
  msgstr ""
1551
 
@@ -1653,14 +1655,14 @@ msgstr ""
1653
  msgid "Revisions"
1654
  msgstr ""
1655
 
1656
- #: includes/admin/settings.php:176 includes/admin/tools/common.php:281
1657
  #: includes/admin/topics.php:450 includes/extend/buddypress/loader.php:247
1658
  #: templates/default/bbpress/user-details.php:57
1659
  msgid "Favorites"
1660
  msgstr ""
1661
 
1662
  #: includes/admin/settings.php:192 includes/admin/settings.php:444
1663
- #: includes/admin/tools/common.php:287 includes/admin/topics.php:420
1664
  #: includes/extend/buddypress/loader.php:234
1665
  #: includes/extend/buddypress/loader.php:336
1666
  #: templates/default/bbpress/user-details.php:49
@@ -1676,7 +1678,7 @@ msgid "Super Moderators"
1676
  msgstr ""
1677
 
1678
  #: includes/admin/settings.php:224 includes/admin/settings.php:391
1679
- #: includes/common/template.php:2377 includes/search/template.php:175
1680
  #: templates/default/bbpress/form-reply-search.php:20
1681
  #: templates/default/bbpress/form-search.php:21
1682
  #: templates/default/bbpress/form-topic-search.php:20
@@ -1735,7 +1737,7 @@ msgstr ""
1735
  msgid "Favorite Topics"
1736
  msgstr ""
1737
 
1738
- #: includes/admin/settings.php:457 includes/admin/tools/upgrade.php:325
1739
  #: includes/extend/buddypress/functions.php:341
1740
  msgid "Group Forums"
1741
  msgstr ""
@@ -2096,15 +2098,11 @@ msgstr ""
2096
  msgid "Ready to go."
2097
  msgstr ""
2098
 
2099
- #: includes/admin/settings.php:1776 includes/admin/tools/repair.php:28
2100
- #: includes/admin/tools/reset.php:23 includes/admin/tools/upgrade.php:25
2101
  msgid "Forum Tools"
2102
  msgstr ""
2103
 
2104
- #: includes/admin/settings.php:1778 includes/admin/tools.php:517
2105
- msgid "Import Forums"
2106
- msgstr ""
2107
-
2108
  #: includes/admin/settings.php:1787
2109
  msgid "Toggle panel: Import Status"
2110
  msgstr ""
@@ -2332,54 +2330,69 @@ msgstr ""
2332
  msgid "Possible %1$s conflict: %2$s"
2333
  msgstr ""
2334
 
2335
- #: includes/admin/tools/common.php:182
2336
  msgid "Search Tools:"
2337
  msgstr ""
2338
 
2339
- #: includes/admin/tools/common.php:184
2340
  msgid "Search Tools"
2341
  msgstr ""
2342
 
2343
- #: includes/admin/tools/common.php:205
2344
  msgid "Filter by Component"
2345
  msgstr ""
2346
 
2347
- #: includes/admin/tools/common.php:207
2348
  msgid "All Components"
2349
  msgstr ""
2350
 
2351
- #: includes/admin/tools/common.php:216
2352
- msgid "Filter"
 
 
 
 
2353
  msgstr ""
2354
 
2355
- #: includes/admin/tools/common.php:234
2356
  msgid "Low"
2357
  msgstr ""
2358
 
2359
- #: includes/admin/tools/common.php:237
2360
  msgid "Medium"
2361
  msgstr ""
2362
 
2363
- #: includes/admin/tools/common.php:240
2364
  msgid "High"
2365
  msgstr ""
2366
 
2367
- #: includes/admin/tools/common.php:263 includes/admin/tools/common.php:278
2368
  msgid "Users"
2369
  msgstr ""
2370
 
2371
- #: includes/admin/tools/common.php:275 includes/topics/template.php:3394
2372
- #: includes/topics/template.php:3395
2373
  #: templates/default/bbpress/content-statistics.php:40
2374
  msgid "Topic Tags"
2375
  msgstr ""
2376
 
2377
- #: includes/admin/tools/common.php:456
 
 
 
 
 
 
 
 
2378
  msgid "All %s"
2379
  msgstr ""
2380
 
2381
- #: includes/admin/tools/help.php:30 includes/admin/tools/repair.php:29
2382
- #: includes/admin/tools.php:499
 
 
 
2383
  msgid "Repair Forums"
2384
  msgstr ""
2385
 
@@ -2411,8 +2424,7 @@ msgid ""
2411
  "Repair Forums</a>."
2412
  msgstr ""
2413
 
2414
- #: includes/admin/tools/help.php:66 includes/admin/tools/reset.php:24
2415
- #: includes/admin/tools.php:526
2416
  msgid "Reset Forums"
2417
  msgstr ""
2418
 
@@ -2479,7 +2491,7 @@ msgid ""
2479
  "without removing your existing forum data."
2480
  msgstr ""
2481
 
2482
- #: includes/admin/tools/repair.php:31
2483
  msgid ""
2484
  "bbPress keeps track of relationships between forums, topics, replies, "
2485
  "topic-tags, favorites, subscriptions, and users. Occasionally these "
@@ -2487,449 +2499,459 @@ msgid ""
2487
  "Use the tools below to manually recalculate these relationships."
2488
  msgstr ""
2489
 
2490
- #: includes/admin/tools/repair.php:32
2491
  msgid ""
2492
  "Some of these tools create substantial database overhead. Use caution when "
2493
  "running more than 1 repair at a time."
2494
  msgstr ""
2495
 
2496
- #: includes/admin/tools/repair.php:45 includes/admin/tools/repair.php:147
2497
- #: includes/admin/tools/upgrade.php:42 includes/admin/tools/upgrade.php:144
2498
  msgid "Select bulk action"
2499
  msgstr ""
2500
 
2501
- #: includes/admin/tools/repair.php:48 includes/admin/tools/repair.php:95
2502
- #: includes/admin/tools/repair.php:150 includes/admin/tools/upgrade.php:45
2503
- #: includes/admin/tools/upgrade.php:92 includes/admin/tools/upgrade.php:147
2504
  msgid "Run"
2505
  msgstr ""
2506
 
2507
- #: includes/admin/tools/repair.php:50 includes/admin/tools/repair.php:152
2508
- #: includes/admin/tools/upgrade.php:47 includes/admin/tools/upgrade.php:149
2509
  msgid "Apply"
2510
  msgstr ""
2511
 
2512
- #: includes/admin/tools/repair.php:64 includes/admin/tools/repair.php:135
2513
- #: includes/admin/tools/upgrade.php:61 includes/admin/tools/upgrade.php:132
 
 
 
 
2514
  msgid "Select All"
2515
  msgstr ""
2516
 
2517
- #: includes/admin/tools/repair.php:68 includes/admin/tools/repair.php:85
2518
- #: includes/admin/tools/repair.php:139 includes/admin/tools/upgrade.php:65
2519
- #: includes/admin/tools/upgrade.php:82 includes/admin/tools/upgrade.php:136
2520
  msgid "Description"
2521
  msgstr ""
2522
 
2523
- #: includes/admin/tools/repair.php:69 includes/admin/tools/repair.php:102
2524
- #: includes/admin/tools/repair.php:140 includes/admin/tools/upgrade.php:66
2525
- #: includes/admin/tools/upgrade.php:99 includes/admin/tools/upgrade.php:137
2526
  msgid "Components"
2527
  msgstr ""
2528
 
2529
- #: includes/admin/tools/repair.php:70 includes/admin/tools/repair.php:109
2530
- #: includes/admin/tools/repair.php:141 includes/admin/tools/upgrade.php:67
2531
- #: includes/admin/tools/upgrade.php:106 includes/admin/tools/upgrade.php:138
2532
  msgid "Overhead"
2533
  msgstr ""
2534
 
2535
- #: includes/admin/tools/repair.php:95 includes/admin/tools/upgrade.php:92
2536
  msgid "Run %s"
2537
  msgstr ""
2538
 
2539
- #: includes/admin/tools/repair.php:99 includes/admin/tools/upgrade.php:96
2540
  msgid "Show more details"
2541
  msgstr ""
2542
 
2543
- #: includes/admin/tools/repair.php:124 includes/admin/tools/upgrade.php:121
2544
  msgid "No repair tools match this criteria."
2545
  msgstr ""
2546
 
2547
- #: includes/admin/tools/repair.php:172
2548
  msgid "Counting the number of replies in each topic&hellip; %s"
2549
  msgstr ""
2550
 
2551
- #: includes/admin/tools/repair.php:173 includes/admin/tools/repair.php:222
2552
- #: includes/admin/tools/repair.php:274 includes/admin/tools/repair.php:308
2553
- #: includes/admin/tools/repair.php:339 includes/admin/tools/repair.php:384
2554
- #: includes/admin/tools/repair.php:425 includes/admin/tools/repair.php:473
2555
- #: includes/admin/tools/repair.php:521 includes/admin/tools/repair.php:588
2556
- #: includes/admin/tools/repair.php:653 includes/admin/tools/repair.php:722
2557
- #: includes/admin/tools/repair.php:830 includes/admin/tools/repair.php:951
2558
- #: includes/admin/tools/repair.php:1063 includes/admin/tools/repair.php:1083
2559
- #: includes/admin/tools/repair.php:1134 includes/admin/tools/reset.php:121
2560
- #: includes/admin/tools/upgrade.php:242
2561
  msgid "Failed!"
2562
  msgstr ""
2563
 
2564
- #: includes/admin/tools/repair.php:207 includes/admin/tools/repair.php:259
2565
- #: includes/admin/tools/repair.php:293 includes/admin/tools/repair.php:325
2566
- #: includes/admin/tools/repair.php:369 includes/admin/tools/repair.php:410
2567
- #: includes/admin/tools/repair.php:458 includes/admin/tools/repair.php:506
2568
- #: includes/admin/tools/repair.php:573 includes/admin/tools/repair.php:638
2569
- #: includes/admin/tools/repair.php:703 includes/admin/tools/repair.php:936
2570
- #: includes/admin/tools/repair.php:996 includes/admin/tools/repair.php:1067
2571
- #: includes/admin/tools/repair.php:1119 includes/admin/tools/repair.php:1170
2572
- #: includes/admin/tools/repair.php:1223
2573
  msgid "Complete!"
2574
  msgstr ""
2575
 
2576
- #: includes/admin/tools/repair.php:221
2577
  msgid "Counting the number of voices in each topic&hellip; %s"
2578
  msgstr ""
2579
 
2580
- #: includes/admin/tools/repair.php:273
2581
  msgid ""
2582
  "Counting the number of pending, spammed, and trashed replies in each "
2583
  "topic&hellip; %s"
2584
  msgstr ""
2585
 
2586
- #: includes/admin/tools/repair.php:307
2587
  msgid "Counting the number of topics in each forum&hellip; %s"
2588
  msgstr ""
2589
 
2590
- #: includes/admin/tools/repair.php:338
2591
  msgid "Counting the number of topics in each topic-tag&hellip; %s"
2592
  msgstr ""
2593
 
2594
- #: includes/admin/tools/repair.php:383
2595
  msgid "Counting the number of replies in each forum&hellip; %s"
2596
  msgstr ""
2597
 
2598
- #: includes/admin/tools/repair.php:424
 
 
 
 
 
 
2599
  msgid "Counting the number of topics each user has created&hellip; %s"
2600
  msgstr ""
2601
 
2602
- #: includes/admin/tools/repair.php:472
2603
  msgid "Counting the number of topics to which each user has replied&hellip; %s"
2604
  msgstr ""
2605
 
2606
- #: includes/admin/tools/repair.php:520
2607
  msgid "Removing unpublished topics from user favorites&hellip; %s"
2608
  msgstr ""
2609
 
2610
- #: includes/admin/tools/repair.php:556 includes/admin/tools/repair.php:621
2611
- #: includes/admin/tools/repair.php:686
2612
  msgid "Nothing to remove!"
2613
  msgstr ""
2614
 
2615
- #: includes/admin/tools/repair.php:587
2616
  msgid "Removing trashed topics from user subscriptions&hellip; %s"
2617
  msgstr ""
2618
 
2619
- #: includes/admin/tools/repair.php:652
2620
  msgid "Removing trashed forums from user subscriptions&hellip; %s"
2621
  msgstr ""
2622
 
2623
- #: includes/admin/tools/repair.php:715
2624
  msgid "Remapping forum role for each user on this site&hellip; %s"
2625
  msgstr ""
2626
 
2627
- #: includes/admin/tools/repair.php:813
2628
  msgid "Complete! %s users updated."
2629
  msgstr ""
2630
 
2631
- #: includes/admin/tools/repair.php:829
2632
  msgid "Recomputing latest post in every topic and forum&hellip; %s"
2633
  msgstr ""
2634
 
2635
- #: includes/admin/tools/repair.php:950
2636
  msgid "Repairing the sticky topic to the parent forum relationships&hellip; %s"
2637
  msgstr ""
2638
 
2639
- #: includes/admin/tools/repair.php:1015
2640
  msgid "Repairing closed topics&hellip; %s"
2641
  msgstr ""
2642
 
2643
- #: includes/admin/tools/repair.php:1016
2644
  msgid "No closed topics to repair."
2645
  msgstr ""
2646
 
2647
- #: includes/admin/tools/repair.php:1046
2648
  msgid "Complete! %d closed topic repaired."
2649
  msgid_plural "Complete! %d closed topics repaired."
2650
  msgstr[0] ""
2651
  msgstr[1] ""
2652
 
2653
- #: includes/admin/tools/repair.php:1059
2654
  msgid "Recalculating forum visibility&hellip; %s"
2655
  msgstr ""
2656
 
2657
- #: includes/admin/tools/repair.php:1082
2658
  msgid "Recalculating the forum for each post&hellip; %s"
2659
  msgstr ""
2660
 
2661
- #: includes/admin/tools/repair.php:1133
2662
  msgid "Recalculating the topic for each post&hellip; %s"
2663
  msgstr ""
2664
 
2665
- #: includes/admin/tools/repair.php:1184
2666
  msgid "Recalculating reply menu order&hellip; %s"
2667
  msgstr ""
2668
 
2669
- #: includes/admin/tools/repair.php:1185
2670
  msgid "No reply positions to recalculate."
2671
  msgstr ""
2672
 
2673
- #: includes/admin/tools/reset.php:25
2674
  msgid ""
2675
  "Revert your forums back to a brand new installation, as if bbPress were "
2676
  "never installed. This process cannot be undone."
2677
  msgstr ""
2678
 
2679
- #: includes/admin/tools/reset.php:31
2680
  msgid "The following data will be removed:"
2681
  msgstr ""
2682
 
2683
- #: includes/admin/tools/reset.php:33 includes/forums/template.php:51
2684
- #: includes/forums/template.php:67
2685
  msgid "All Forums"
2686
  msgstr ""
2687
 
2688
- #: includes/admin/tools/reset.php:34 includes/topics/functions.php:3679
2689
- #: includes/topics/template.php:50 includes/topics/template.php:66
2690
  msgid "All Topics"
2691
  msgstr ""
2692
 
2693
- #: includes/admin/tools/reset.php:35 includes/replies/functions.php:2078
2694
- #: includes/replies/template.php:52 includes/replies/template.php:68
2695
  msgid "All Replies"
2696
  msgstr ""
2697
 
2698
- #: includes/admin/tools/reset.php:36
2699
  msgid "All Topic Tags"
2700
  msgstr ""
2701
 
2702
- #: includes/admin/tools/reset.php:37
2703
  msgid "All Meta Data"
2704
  msgstr ""
2705
 
2706
- #: includes/admin/tools/reset.php:38
2707
  msgid "Forum Settings"
2708
  msgstr ""
2709
 
2710
- #: includes/admin/tools/reset.php:39
2711
  msgid "Forum Activity"
2712
  msgstr ""
2713
 
2714
- #: includes/admin/tools/reset.php:40
2715
  msgid "Forum User Roles"
2716
  msgstr ""
2717
 
2718
- #: includes/admin/tools/reset.php:42
2719
  msgid "Importer Helper Data"
2720
  msgstr ""
2721
 
2722
- #: includes/admin/tools/reset.php:46
2723
  msgid "Delete imported users?"
2724
  msgstr ""
2725
 
2726
- #: includes/admin/tools/reset.php:49 includes/admin/tools/reset.php:59
2727
  msgid "Say it ain't so!"
2728
  msgstr ""
2729
 
2730
- #: includes/admin/tools/reset.php:50
2731
  msgid "This option will delete all previously imported users, and cannot be undone."
2732
  msgstr ""
2733
 
2734
- #: includes/admin/tools/reset.php:51
2735
  msgid ""
2736
  "Proceeding without this checked removes the meta-data necessary to delete "
2737
  "these users later."
2738
  msgstr ""
2739
 
2740
- #: includes/admin/tools/reset.php:56
2741
  msgid "Do you really want to do this?"
2742
  msgstr ""
2743
 
2744
- #: includes/admin/tools/reset.php:60
2745
  #: templates/default/bbpress/form-reply-move.php:76
2746
  #: templates/default/bbpress/form-topic-merge.php:98
2747
  #: templates/default/bbpress/form-topic-split.php:102
2748
  msgid "This process cannot be undone."
2749
  msgstr ""
2750
 
2751
- #: includes/admin/tools/reset.php:61
2752
  msgid "Backup your database before proceeding."
2753
  msgstr ""
2754
 
2755
- #: includes/admin/tools/reset.php:69
2756
  msgid "Reset bbPress"
2757
  msgstr ""
2758
 
2759
- #: includes/admin/tools/reset.php:118
2760
  msgid "Resetting&hellip;"
2761
  msgstr ""
2762
 
2763
- #: includes/admin/tools/reset.php:120
2764
  msgid "Success!"
2765
  msgstr ""
2766
 
2767
- #: includes/admin/tools/reset.php:122
2768
  msgid "Skipped."
2769
  msgstr ""
2770
 
2771
- #: includes/admin/tools/reset.php:181
2772
  msgid "Removing Forums, Topics, and Replies&hellip; %s"
2773
  msgstr ""
2774
 
2775
- #: includes/admin/tools/reset.php:189
2776
  msgid "Removing Forum, Topic, and Reply Meta Data&hellip; %s"
2777
  msgstr ""
2778
 
2779
- #: includes/admin/tools/reset.php:198
2780
  msgid "Removing Revision Data&hellip; %s"
2781
  msgstr ""
2782
 
2783
- #: includes/admin/tools/reset.php:207
2784
  msgid "Deleting Topic Tags&hellip; %s"
2785
  msgstr ""
2786
 
2787
- #: includes/admin/tools/reset.php:226
2788
  msgid "Deleting Imported Users&hellip; %s"
2789
  msgstr ""
2790
 
2791
- #: includes/admin/tools/reset.php:232
2792
  msgid "Deleting Imported User Meta&hellip; %s"
2793
  msgstr ""
2794
 
2795
- #: includes/admin/tools/reset.php:240
2796
  msgid "Deleting bbPress Specific User Meta&hellip; %s"
2797
  msgstr ""
2798
 
2799
- #: includes/admin/tools/reset.php:249
2800
  msgid "Dropping Conversion Table&hellip; %s"
2801
  msgstr ""
2802
 
2803
- #: includes/admin/tools/reset.php:256
2804
  msgid "Deleting Settings&hellip; Success!"
2805
  msgstr ""
2806
 
2807
- #: includes/admin/tools/reset.php:262
2808
  msgid "Removing Roles and Capabilities&hellip; Success!"
2809
  msgstr ""
2810
 
2811
- #: includes/admin/tools/upgrade.php:26 includes/admin/tools.php:508
2812
- msgid "Upgrade Forums"
2813
- msgstr ""
2814
-
2815
- #: includes/admin/tools/upgrade.php:28
2816
  msgid ""
2817
  "As bbPress improves, occasionally database upgrades are required but some "
2818
  "forums are too large to upgrade automatically. Use the tools below to "
2819
  "manually run upgrade routines."
2820
  msgstr ""
2821
 
2822
- #: includes/admin/tools/upgrade.php:29
2823
  msgid ""
2824
  "Some of these tools create substantial database overhead. Use caution when "
2825
  "running more than 1 upgrade at a time."
2826
  msgstr ""
2827
 
2828
- #: includes/admin/tools/upgrade.php:169
 
 
 
 
 
2829
  msgid "Upgrading user engagements&hellip; %s"
2830
  msgstr ""
2831
 
2832
- #: includes/admin/tools/upgrade.php:170
2833
  msgid "No engagements to upgrade."
2834
  msgstr ""
2835
 
2836
- #: includes/admin/tools/upgrade.php:203
2837
  msgid "Complete! %d engagements upgraded."
2838
  msgid_plural "Complete! %d engagements upgraded."
2839
  msgstr[0] ""
2840
  msgstr[1] ""
2841
 
2842
- #: includes/admin/tools/upgrade.php:221
2843
  msgid "Upgrading BuddyPress group-forum relationships&hellip; %s"
2844
  msgstr ""
2845
 
2846
- #: includes/admin/tools/upgrade.php:326
2847
  msgid "group-forums"
2848
  msgstr ""
2849
 
2850
- #: includes/admin/tools/upgrade.php:342
2851
  msgid "Complete! %s groups updated; %s forums updated; %s forum statuses synced."
2852
  msgstr ""
2853
 
2854
- #: includes/admin/tools/upgrade.php:357
2855
  msgid "Upgrading user favorites&hellip; %s"
2856
  msgstr ""
2857
 
2858
- #: includes/admin/tools/upgrade.php:358
2859
  msgid "No favorites to upgrade."
2860
  msgstr ""
2861
 
2862
- #: includes/admin/tools/upgrade.php:401
2863
  msgid "Complete! %d favorite upgraded."
2864
  msgid_plural "Complete! %d favorites upgraded."
2865
  msgstr[0] ""
2866
  msgstr[1] ""
2867
 
2868
- #: includes/admin/tools/upgrade.php:417
2869
  msgid "Upgrading user topic subscriptions&hellip; %s"
2870
  msgstr ""
2871
 
2872
- #: includes/admin/tools/upgrade.php:418
2873
  msgid "No topic subscriptions to upgrade."
2874
  msgstr ""
2875
 
2876
- #: includes/admin/tools/upgrade.php:461
2877
  msgid "Complete! %d topic subscription upgraded."
2878
  msgid_plural "Complete! %d topic subscriptions upgraded."
2879
  msgstr[0] ""
2880
  msgstr[1] ""
2881
 
2882
- #: includes/admin/tools/upgrade.php:477
2883
  msgid "Upgrading user forum subscriptions&hellip; %s"
2884
  msgstr ""
2885
 
2886
- #: includes/admin/tools/upgrade.php:478
2887
  msgid "No forum subscriptions to upgrade."
2888
  msgstr ""
2889
 
2890
- #: includes/admin/tools/upgrade.php:521
2891
  msgid "Complete! %d forum subscription upgraded."
2892
  msgid_plural "Complete! %d forum subscriptions upgraded."
2893
  msgstr[0] ""
2894
  msgstr[1] ""
2895
 
2896
- #: includes/admin/tools/upgrade.php:537
2897
  msgid "Remove favorites from usermeta&hellip; %s"
2898
  msgstr ""
2899
 
2900
- #: includes/admin/tools/upgrade.php:538
2901
  msgid "No favorites to remove."
2902
  msgstr ""
2903
 
2904
- #: includes/admin/tools/upgrade.php:557
2905
  msgid "Complete! %d favorites deleted."
2906
  msgid_plural "Complete! %d favorites deleted."
2907
  msgstr[0] ""
2908
  msgstr[1] ""
2909
 
2910
- #: includes/admin/tools/upgrade.php:573
2911
  msgid "Remove topic subscriptions from usermeta&hellip; %s"
2912
  msgstr ""
2913
 
2914
- #: includes/admin/tools/upgrade.php:574
2915
  msgid "No topic subscriptions to remove."
2916
  msgstr ""
2917
 
2918
- #: includes/admin/tools/upgrade.php:593
2919
  msgid "Complete! %d topic subscription deleted."
2920
  msgid_plural "Complete! %d topic subscriptions deleted."
2921
  msgstr[0] ""
2922
  msgstr[1] ""
2923
 
2924
- #: includes/admin/tools/upgrade.php:609
2925
  msgid "Remove forum subscriptions from usermeta&hellip; %s"
2926
  msgstr ""
2927
 
2928
- #: includes/admin/tools/upgrade.php:610
2929
  msgid "No forum subscriptions to remove."
2930
  msgstr ""
2931
 
2932
- #: includes/admin/tools/upgrade.php:629
2933
  msgid "Complete! %d forum subscription deleted."
2934
  msgid_plural "Complete! %d forum subscriptions deleted."
2935
  msgstr[0] ""
@@ -2939,225 +2961,254 @@ msgstr[1] ""
2939
  msgid "bbPress provides the following tools to help you manage your forums:"
2940
  msgstr ""
2941
 
2942
- #: includes/admin/tools.php:77
2943
  msgid "The repair was completed successfully"
2944
  msgstr ""
2945
 
2946
- #: includes/admin/tools.php:78
2947
  msgid "The repair was not successful"
2948
  msgstr ""
2949
 
2950
- #: includes/admin/tools.php:113
2951
  msgid "Recalculate parent topic for each reply"
2952
  msgstr ""
2953
 
2954
- #: includes/admin/tools.php:114
2955
  msgid "Run this if replies appear in the wrong topics."
2956
  msgstr ""
2957
 
2958
- #: includes/admin/tools.php:125
2959
  msgid "Recalculate parent forum for each topic and reply"
2960
  msgstr ""
2961
 
2962
- #: includes/admin/tools.php:126
2963
  msgid "Run this if topics or replies appear in the wrong forums."
2964
  msgstr ""
2965
 
2966
- #: includes/admin/tools.php:137
2967
  msgid "Recalculate private and hidden forums"
2968
  msgstr ""
2969
 
2970
- #: includes/admin/tools.php:138
2971
  msgid "Run this if non-public forums are publicly visible."
2972
  msgstr ""
2973
 
2974
- #: includes/admin/tools.php:149
2975
  msgid "Recalculate last activity in each topic and forum"
2976
  msgstr ""
2977
 
2978
- #: includes/admin/tools.php:150
2979
  msgid "Run this if freshness appears incorrectly."
2980
  msgstr ""
2981
 
2982
- #: includes/admin/tools.php:161
2983
  msgid "Recalculate sticky relationship of each topic"
2984
  msgstr ""
2985
 
2986
- #: includes/admin/tools.php:162
2987
  msgid "Run this if sticky topics appear incorrectly."
2988
  msgstr ""
2989
 
2990
- #: includes/admin/tools.php:173
2991
  msgid "Recalculate position of each reply in each topic"
2992
  msgstr ""
2993
 
2994
- #: includes/admin/tools.php:174
2995
  msgid "Run this if replies appear in the wrong order."
2996
  msgstr ""
2997
 
2998
- #: includes/admin/tools.php:185
2999
  msgid "Recalculate engagements in each topic for each user"
3000
  msgstr ""
3001
 
3002
- #: includes/admin/tools.php:186
3003
  msgid "Run this if voices appear incorrectly."
3004
  msgstr ""
3005
 
3006
- #: includes/admin/tools.php:197
3007
  msgid "Repair closed topic statuses"
3008
  msgstr ""
3009
 
3010
- #: includes/admin/tools.php:198
3011
  msgid "Run this if closed topics appear incorrectly."
3012
  msgstr ""
3013
 
3014
- #: includes/admin/tools.php:209
3015
  msgid "Recount topics in each forum"
3016
  msgstr ""
3017
 
3018
- #: includes/admin/tools.php:210
3019
  msgid "Run this if the number of topics in any forums are incorrect."
3020
  msgstr ""
3021
 
3022
- #: includes/admin/tools.php:221
3023
  msgid "Recount topics in each topic-tag"
3024
  msgstr ""
3025
 
3026
- #: includes/admin/tools.php:222
3027
  msgid "Run this if the number of topics in any topic-tags are incorrect."
3028
  msgstr ""
3029
 
3030
- #: includes/admin/tools.php:233
3031
  msgid "Recount replies in each forum"
3032
  msgstr ""
3033
 
3034
- #: includes/admin/tools.php:234
3035
  msgid "Run this if the number of replies in any forums are incorrect."
3036
  msgstr ""
3037
 
3038
- #: includes/admin/tools.php:245
 
 
 
 
 
 
 
 
3039
  msgid "Recount replies in each topic"
3040
  msgstr ""
3041
 
3042
- #: includes/admin/tools.php:246
3043
  msgid "Run this if the number of topics in any topics are incorrect."
3044
  msgstr ""
3045
 
3046
- #: includes/admin/tools.php:257
3047
  msgid "Recount pending, spammed, and trashed replies in each topic"
3048
  msgstr ""
3049
 
3050
- #: includes/admin/tools.php:258
3051
- msgid "Run this if non-public replies display incorrectly."
3052
  msgstr ""
3053
 
3054
- #: includes/admin/tools.php:269
3055
  msgid "Recount topics for each user"
3056
  msgstr ""
3057
 
3058
- #: includes/admin/tools.php:270
3059
  msgid "Run this to get fresh topic counts for all users."
3060
  msgstr ""
3061
 
3062
- #: includes/admin/tools.php:281
3063
  msgid "Recount replies for each user"
3064
  msgstr ""
3065
 
3066
- #: includes/admin/tools.php:282
3067
  msgid "Run this to get fresh reply counts for all users."
3068
  msgstr ""
3069
 
3070
- #: includes/admin/tools.php:293
3071
  msgid "Remove unpublished topics from user favorites"
3072
  msgstr ""
3073
 
3074
- #: includes/admin/tools.php:294
3075
  msgid "Run this to remove trashed or deleted topics from all user favorites."
3076
  msgstr ""
3077
 
3078
- #: includes/admin/tools.php:305
3079
  msgid "Remove unpublished topics from user subscriptions"
3080
  msgstr ""
3081
 
3082
- #: includes/admin/tools.php:306
3083
  msgid "Run this to remove trashed or deleted topics from all user subscriptions."
3084
  msgstr ""
3085
 
3086
- #: includes/admin/tools.php:317
3087
  msgid "Remove unpublished forums from user subscriptions"
3088
  msgstr ""
3089
 
3090
- #: includes/admin/tools.php:318
3091
  msgid "Run this to remove trashed or deleted forums from all user subscriptions."
3092
  msgstr ""
3093
 
3094
- #: includes/admin/tools.php:329
3095
  msgid "Remap all users to default forum roles"
3096
  msgstr ""
3097
 
3098
- #: includes/admin/tools.php:330
3099
  msgid "Run this if users have issues accessing the forums."
3100
  msgstr ""
3101
 
3102
- #: includes/admin/tools.php:341
3103
  msgid "Upgrade user topic engagements"
3104
  msgstr ""
3105
 
3106
- #: includes/admin/tools.php:342 includes/admin/tools.php:354
3107
- #: includes/admin/tools.php:366 includes/admin/tools.php:378
3108
- msgid "Run this if you just upgraded to 2.6."
3109
  msgstr ""
3110
 
3111
- #: includes/admin/tools.php:353
3112
  msgid "Upgrade user topic favorites"
3113
  msgstr ""
3114
 
3115
- #: includes/admin/tools.php:365
 
 
 
 
3116
  msgid "Upgrade user topic subscriptions"
3117
  msgstr ""
3118
 
3119
- #: includes/admin/tools.php:377
 
 
 
 
3120
  msgid "Upgrade user forum subscriptions"
3121
  msgstr ""
3122
 
3123
- #: includes/admin/tools.php:389
 
 
 
 
3124
  msgid "Remove favorites from user-meta"
3125
  msgstr ""
3126
 
3127
- #: includes/admin/tools.php:390
3128
- msgid ""
3129
- "Run this to delete old data, after confirming successful favorites upgrade "
3130
- "above."
3131
  msgstr ""
3132
 
3133
- #: includes/admin/tools.php:401
3134
  msgid "Remove topic subscriptions from user-meta"
3135
  msgstr ""
3136
 
3137
- #: includes/admin/tools.php:402
3138
  msgid ""
3139
- "Run this to delete old data, after confirming successful topic "
3140
- "subscriptions upgrade above."
3141
  msgstr ""
3142
 
3143
- #: includes/admin/tools.php:413
3144
  msgid "Remove forum subscriptions from user-meta"
3145
  msgstr ""
3146
 
3147
- #: includes/admin/tools.php:414
3148
  msgid ""
3149
- "Run this to delete old data, after confirming successful forum "
3150
- "subscriptions upgrade above."
3151
  msgstr ""
3152
 
3153
- #: includes/admin/tools.php:425
3154
  msgid "Upgrade BuddyPress Group Forum relationships"
3155
  msgstr ""
3156
 
3157
- #: includes/admin/tools.php:426
3158
  msgid "Run this if you just upgraded BuddyPress Forums from Legacy."
3159
  msgstr ""
3160
 
 
 
 
 
 
 
 
 
 
 
 
 
3161
  #: includes/admin/topics.php:121
3162
  msgid ""
3163
  "This screen displays the individual topics on your site. You can customize "
@@ -3307,7 +3358,7 @@ msgid ""
3307
  msgstr ""
3308
 
3309
  #: includes/admin/topics.php:204 includes/admin/topics.php:341
3310
- #: includes/topics/template.php:68
3311
  msgid "Topic Attributes"
3312
  msgstr ""
3313
 
@@ -3439,7 +3490,7 @@ msgstr ""
3439
  msgid "Voices"
3440
  msgstr ""
3441
 
3442
- #: includes/admin/topics.php:935 includes/topics/template.php:2017
3443
  msgid "No Replies"
3444
  msgstr ""
3445
 
@@ -3463,7 +3514,7 @@ msgstr ""
3463
  msgid "Unstick this topic"
3464
  msgstr ""
3465
 
3466
- #: includes/admin/topics.php:1013 includes/topics/template.php:2718
3467
  msgid "Unstick"
3468
  msgstr ""
3469
 
@@ -3471,7 +3522,7 @@ msgstr ""
3471
  msgid "Stick this topic to its forum"
3472
  msgstr ""
3473
 
3474
- #: includes/admin/topics.php:1016 includes/topics/template.php:2717
3475
  msgid "Stick"
3476
  msgstr ""
3477
 
@@ -3479,7 +3530,7 @@ msgstr ""
3479
  msgid "Stick this topic to front"
3480
  msgstr ""
3481
 
3482
- #: includes/admin/topics.php:1016 includes/topics/template.php:2719
3483
  msgid "(to front)"
3484
  msgstr ""
3485
 
@@ -3492,6 +3543,7 @@ msgid "Mark the topic as not spam"
3492
  msgstr ""
3493
 
3494
  #: includes/admin/topics.php:1175 includes/admin/topics.php:1187
 
3495
  msgid "Topic updated."
3496
  msgstr ""
3497
 
@@ -3543,7 +3595,7 @@ msgstr ""
3543
  msgid "Site Role"
3544
  msgstr ""
3545
 
3546
- #: includes/common/classes.php:493 includes/replies/template.php:2567
3547
  msgid "%1$s - %2$s"
3548
  msgstr ""
3549
 
@@ -3601,31 +3653,31 @@ msgid_plural "%s seconds"
3601
  msgstr[0] ""
3602
  msgstr[1] ""
3603
 
3604
- #: includes/common/functions.php:406 includes/common/functions.php:464
3605
  msgid "Pending: %s"
3606
  msgstr ""
3607
 
3608
- #: includes/common/functions.php:410 includes/common/functions.php:467
3609
  msgid "Private: %s"
3610
  msgstr ""
3611
 
3612
- #: includes/common/functions.php:414 includes/common/functions.php:471
3613
  msgid "Spammed: %s"
3614
  msgstr ""
3615
 
3616
- #: includes/common/functions.php:418 includes/common/functions.php:475
3617
  msgid "Trashed: %s"
3618
  msgstr ""
3619
 
3620
- #: includes/common/functions.php:559
3621
  msgid "<strong>ERROR</strong>: Invalid author name."
3622
  msgstr ""
3623
 
3624
- #: includes/common/functions.php:565
3625
  msgid "<strong>ERROR</strong>: Invalid email address."
3626
  msgstr ""
3627
 
3628
- #: includes/common/functions.php:1094
3629
  msgid ""
3630
  "%1$s wrote:\n"
3631
  "\n"
@@ -3640,7 +3692,7 @@ msgid ""
3640
  "Login and visit the topic to unsubscribe from these emails."
3641
  msgstr ""
3642
 
3643
- #: includes/common/functions.php:1250
3644
  msgid ""
3645
  "%1$s wrote:\n"
3646
  "\n"
@@ -3655,127 +3707,127 @@ msgid ""
3655
  "Login and visit the topic to unsubscribe from these emails."
3656
  msgstr ""
3657
 
3658
- #: includes/common/template.php:1562
3659
  msgid "No topics available"
3660
  msgstr ""
3661
 
3662
- #: includes/common/template.php:1567
3663
  msgid "No forums available"
3664
  msgstr ""
3665
 
3666
- #: includes/common/template.php:1572
3667
  msgid "None available"
3668
  msgstr ""
3669
 
3670
- #: includes/common/template.php:2184
3671
  msgid "Home"
3672
  msgstr ""
3673
 
3674
- #: includes/common/template.php:2254
3675
  msgid "(Edit)"
3676
  msgstr ""
3677
 
3678
- #: includes/common/template.php:2258 includes/common/template.php:2373
3679
- #: includes/common/template.php:2618 includes/core/theme-compat.php:794
3680
  #: templates/default/extras/taxonomy-topic-tag-edit.php:17
3681
  #: templates/default/extras/taxonomy-topic-tag.php:17
3682
  msgid "Topic Tag: %s"
3683
  msgstr ""
3684
 
3685
- #: includes/common/template.php:2279
3686
  msgid "&lsaquo;"
3687
  msgstr ""
3688
 
3689
- #: includes/common/template.php:2279
3690
  msgid "&rsaquo;"
3691
  msgstr ""
3692
 
3693
- #: includes/common/template.php:2542
3694
  msgid "Log Out"
3695
  msgstr ""
3696
 
3697
- #: includes/common/template.php:2582
3698
  msgid "Forum Edit: %s"
3699
  msgstr ""
3700
 
3701
- #: includes/common/template.php:2587
3702
  msgid "Topic Edit: %s"
3703
  msgstr ""
3704
 
3705
- #: includes/common/template.php:2592
3706
  msgid "Reply Edit: %s"
3707
  msgstr ""
3708
 
3709
- #: includes/common/template.php:2597
3710
  msgid "Topic Tag Edit: %s"
3711
  msgstr ""
3712
 
3713
- #: includes/common/template.php:2604
3714
  msgid "Forum: %s"
3715
  msgstr ""
3716
 
3717
- #: includes/common/template.php:2609
3718
  msgid "Topic: %s"
3719
  msgstr ""
3720
 
3721
- #: includes/common/template.php:2631
3722
  msgid "Your Topics"
3723
  msgstr ""
3724
 
3725
- #: includes/common/template.php:2635
3726
  #. translators: user's display name
3727
  msgid "%s's Topics"
3728
  msgstr ""
3729
 
3730
- #: includes/common/template.php:2641
3731
  msgid "Your Replies"
3732
  msgstr ""
3733
 
3734
- #: includes/common/template.php:2645
3735
  #. translators: user's display name
3736
  msgid "%s's Replies"
3737
  msgstr ""
3738
 
3739
- #: includes/common/template.php:2651
3740
  msgid "Your Favorites"
3741
  msgstr ""
3742
 
3743
- #: includes/common/template.php:2655
3744
  #: templates/default/bbpress/user-details.php:57
3745
  #. translators: user's display name
3746
  msgid "%s's Favorites"
3747
  msgstr ""
3748
 
3749
- #: includes/common/template.php:2661
3750
  msgid "Your Subscriptions"
3751
  msgstr ""
3752
 
3753
- #: includes/common/template.php:2665
3754
  #: templates/default/bbpress/user-details.php:67
3755
  #. translators: user's display name
3756
  msgid "%s's Subscriptions"
3757
  msgstr ""
3758
 
3759
- #: includes/common/template.php:2671
3760
  msgid "Your Profile"
3761
  msgstr ""
3762
 
3763
- #: includes/common/template.php:2675
3764
  #: templates/default/bbpress/user-details.php:30
3765
  #. translators: user's display name
3766
  msgid "%s's Profile"
3767
  msgstr ""
3768
 
3769
- #: includes/common/template.php:2684
3770
  msgid "Edit Your Profile"
3771
  msgstr ""
3772
 
3773
- #: includes/common/template.php:2689
3774
  #: templates/default/bbpress/user-details.php:74
3775
  msgid "Edit %s's Profile"
3776
  msgstr ""
3777
 
3778
- #: includes/common/template.php:2697
3779
  msgid "View: %s"
3780
  msgstr ""
3781
 
@@ -4084,12 +4136,12 @@ msgstr ""
4084
  #: includes/extend/buddypress/groups.php:557
4085
  #: includes/extend/buddypress/notifications.php:196
4086
  #: includes/forums/functions.php:126 includes/forums/functions.php:393
4087
- #: includes/replies/functions.php:129 includes/replies/functions.php:512
4088
- #: includes/replies/functions.php:1225 includes/topics/functions.php:105
4089
- #: includes/topics/functions.php:468 includes/topics/functions.php:1084
4090
- #: includes/topics/functions.php:1359 includes/topics/functions.php:1695
4091
- #: includes/topics/functions.php:1739 includes/topics/functions.php:1800
4092
- #: includes/users/engagements.php:606 includes/users/engagements.php:847
4093
  #: includes/users/functions.php:196 includes/users/functions.php:202
4094
  #: includes/users/functions.php:382
4095
  msgid "<strong>ERROR</strong>: Are you sure you wanted to do that?"
@@ -4108,7 +4160,7 @@ msgid "Search Forums..."
4108
  msgstr ""
4109
 
4110
  #: includes/extend/buddypress/loader.php:356
4111
- #: templates/default/bbpress/user-subscriptions.php:41
4112
  msgid "Subscribed Topics"
4113
  msgstr ""
4114
 
@@ -4143,7 +4195,7 @@ msgid "<strong>ERROR</strong>: Your forum needs a title."
4143
  msgstr ""
4144
 
4145
  #: includes/forums/functions.php:170 includes/forums/functions.php:459
4146
- #: includes/replies/functions.php:279 includes/replies/functions.php:596
4147
  #: includes/topics/functions.php:163 includes/topics/functions.php:535
4148
  msgid "<strong>ERROR</strong>: Your title is too long."
4149
  msgstr ""
@@ -4178,7 +4230,7 @@ msgid ""
4178
  "capability to read or create new forums in it."
4179
  msgstr ""
4180
 
4181
- #: includes/forums/functions.php:228 includes/replies/functions.php:299
4182
  #: includes/topics/functions.php:247
4183
  msgid "<strong>ERROR</strong>: Slow down; you move too fast."
4184
  msgstr ""
@@ -4191,7 +4243,7 @@ msgstr ""
4191
  msgid "<strong>ERROR</strong>: Your forum cannot be created at this time."
4192
  msgstr ""
4193
 
4194
- #: includes/forums/functions.php:353 includes/replies/functions.php:469
4195
  #: includes/topics/functions.php:400
4196
  msgid "<strong>ERROR</strong>: The following problem(s) occurred: %s"
4197
  msgstr ""
@@ -4265,297 +4317,301 @@ msgstr ""
4265
  msgid "Parent Forum:"
4266
  msgstr ""
4267
 
4268
- #: includes/forums/template.php:70
4269
  msgid "Insert into forum"
4270
  msgstr ""
4271
 
4272
- #: includes/forums/template.php:71
4273
  msgid "Uploaded to this forum"
4274
  msgstr ""
4275
 
4276
- #: includes/forums/template.php:72
4277
  msgid "Forum Image"
4278
  msgstr ""
4279
 
4280
- #: includes/forums/template.php:73
4281
  msgid "Set forum image"
4282
  msgstr ""
4283
 
4284
- #: includes/forums/template.php:74
4285
  msgid "Remove forum image"
4286
  msgstr ""
4287
 
4288
- #: includes/forums/template.php:75
4289
  msgid "Use as forum image"
4290
  msgstr ""
4291
 
 
 
 
 
4292
  #: includes/forums/template.php:76
4293
- msgid "Filter forum list"
4294
  msgstr ""
4295
 
4296
  #: includes/forums/template.php:77
4297
- msgid "Forum list navigation"
4298
  msgstr ""
4299
 
4300
  #: includes/forums/template.php:78
4301
- msgid "Forum list"
4302
  msgstr ""
4303
 
4304
- #: includes/forums/template.php:824 includes/topics/template.php:1810
4305
  #: includes/users/template.php:1273
4306
  msgid "Subscribe"
4307
  msgstr ""
4308
 
4309
- #: includes/forums/template.php:825 includes/topics/template.php:1811
4310
  #: includes/users/template.php:1274
4311
  msgid "Unsubscribe"
4312
  msgstr ""
4313
 
4314
- #: includes/forums/template.php:1161 includes/forums/template.php:1962
4315
  msgid "%s topic"
4316
  msgid_plural "%s topics"
4317
  msgstr[0] ""
4318
  msgstr[1] ""
4319
 
4320
- #: includes/forums/template.php:1176 includes/topics/template.php:2060
4321
  msgid "(+%s hidden)"
4322
  msgid_plural "(+%s hidden)"
4323
  msgstr[0] ""
4324
  msgstr[1] ""
4325
 
4326
- #: includes/forums/template.php:1951 includes/topics/template.php:2045
4327
  msgid "%s reply"
4328
  msgid_plural "%s replies"
4329
  msgstr[0] ""
4330
  msgstr[1] ""
4331
 
4332
- #: includes/forums/template.php:1971
4333
  msgid "This category has %1$s, %2$s, and was last updated %3$s by %4$s."
4334
  msgstr ""
4335
 
4336
- #: includes/forums/template.php:1972
4337
  msgid "This forum has %1$s, %2$s, and was last updated %3$s by %4$s."
4338
  msgstr ""
4339
 
4340
- #: includes/forums/template.php:1977
4341
  msgid "This category has %1$s, and was last updated %2$s by %3$s."
4342
  msgstr ""
4343
 
4344
- #: includes/forums/template.php:1978
4345
  msgid "This forum has %1$s, and was last updated %2$s by %3$s."
4346
  msgstr ""
4347
 
4348
- #: includes/forums/template.php:1984
4349
  msgid "This category has %1$s and %2$s."
4350
  msgstr ""
4351
 
4352
- #: includes/forums/template.php:1985
4353
  msgid "This forum has %1$s and %2$s."
4354
  msgstr ""
4355
 
4356
- #: includes/forums/template.php:1990
4357
  msgid "This category has %1$s."
4358
  msgstr ""
4359
 
4360
- #: includes/forums/template.php:1991
4361
  msgid "This forum has %1$s."
4362
  msgstr ""
4363
 
4364
- #: includes/forums/template.php:1995
4365
  msgid "This forum is empty."
4366
  msgstr ""
4367
 
4368
- #: includes/replies/functions.php:154
4369
  msgid "<strong>ERROR</strong>: You do not have permission to reply."
4370
  msgstr ""
4371
 
4372
- #: includes/replies/functions.php:165
4373
  msgid "<strong>ERROR</strong>: Topic ID is missing."
4374
  msgstr ""
4375
 
4376
- #: includes/replies/functions.php:169
4377
  msgid "<strong>ERROR</strong>: Topic ID must be a number."
4378
  msgstr ""
4379
 
4380
- #: includes/replies/functions.php:179
4381
  msgid "<strong>ERROR</strong>: Topic ID cannot be a negative number."
4382
  msgstr ""
4383
 
4384
- #: includes/replies/functions.php:183
4385
  msgid "<strong>ERROR</strong>: Topic does not exist."
4386
  msgstr ""
4387
 
4388
- #: includes/replies/functions.php:202 includes/replies/functions.php:216
4389
  #: includes/topics/functions.php:187 includes/topics/functions.php:201
4390
  #: includes/topics/functions.php:483
4391
  msgid "<strong>ERROR</strong>: Forum ID is missing."
4392
  msgstr ""
4393
 
4394
- #: includes/replies/functions.php:206 includes/topics/functions.php:191
4395
  msgid "<strong>ERROR</strong>: Forum ID must be a number."
4396
  msgstr ""
4397
 
4398
- #: includes/replies/functions.php:220 includes/topics/functions.php:205
4399
  msgid "<strong>ERROR</strong>: Forum ID cannot be a negative number."
4400
  msgstr ""
4401
 
4402
- #: includes/replies/functions.php:224 includes/topics/functions.php:209
4403
  msgid "<strong>ERROR</strong>: Forum does not exist."
4404
  msgstr ""
4405
 
4406
- #: includes/replies/functions.php:238 includes/replies/functions.php:564
4407
  msgid ""
4408
  "<strong>ERROR</strong>: This forum is a category. No replies can be created "
4409
  "in this forum."
4410
  msgstr ""
4411
 
4412
- #: includes/replies/functions.php:245 includes/replies/functions.php:571
4413
  msgid "<strong>ERROR</strong>: This forum has been closed to new replies."
4414
  msgstr ""
4415
 
4416
- #: includes/replies/functions.php:250 includes/replies/functions.php:576
4417
  msgid ""
4418
  "<strong>ERROR</strong>: This forum is private and you do not have the "
4419
  "capability to read or create new replies in it."
4420
  msgstr ""
4421
 
4422
- #: includes/replies/functions.php:254 includes/replies/functions.php:580
4423
  msgid ""
4424
  "<strong>ERROR</strong>: This forum is hidden and you do not have the "
4425
  "capability to read or create new replies in it."
4426
  msgstr ""
4427
 
4428
- #: includes/replies/functions.php:293 includes/replies/functions.php:610
4429
  msgid "<strong>ERROR</strong>: Your reply cannot be empty."
4430
  msgstr ""
4431
 
4432
- #: includes/replies/functions.php:305
4433
  msgid ""
4434
  "<strong>ERROR</strong>: Duplicate reply detected; it looks as though "
4435
  "you&#8217;ve already said that."
4436
  msgstr ""
4437
 
4438
- #: includes/replies/functions.php:311
4439
  msgid "<strong>ERROR</strong>: Your reply cannot be created at this time."
4440
  msgstr ""
4441
 
4442
- #: includes/replies/functions.php:336
4443
  msgid "<strong>ERROR</strong>: Topic is closed."
4444
  msgstr ""
4445
 
4446
- #: includes/replies/functions.php:396 includes/replies/functions.php:706
4447
  msgid "<strong>ERROR</strong>: There was a problem adding the tags to the topic."
4448
  msgstr ""
4449
 
4450
- #: includes/replies/functions.php:473
4451
  msgid "<strong>ERROR</strong>: The reply was not created."
4452
  msgstr ""
4453
 
4454
- #: includes/replies/functions.php:501
4455
  msgid "<strong>ERROR</strong>: Reply ID not found."
4456
  msgstr ""
4457
 
4458
- #: includes/replies/functions.php:518
4459
  msgid "<strong>ERROR</strong>: The reply you want to edit was not found."
4460
  msgstr ""
4461
 
4462
- #: includes/replies/functions.php:529
4463
  msgid "<strong>ERROR</strong>: You do not have permission to edit that reply."
4464
  msgstr ""
4465
 
4466
- #: includes/replies/functions.php:616
4467
  msgid "<strong>ERROR</strong>: Your reply cannot be edited at this time."
4468
  msgstr ""
4469
 
4470
- #: includes/replies/functions.php:1201
4471
  msgid "<strong>ERROR</strong>: A reply ID is required"
4472
  msgstr ""
4473
 
4474
- #: includes/replies/functions.php:1210
4475
  msgid "<strong>ERROR</strong>: The reply you want to move was not found."
4476
  msgstr ""
4477
 
4478
- #: includes/replies/functions.php:1220
4479
  msgid "<strong>ERROR</strong>: The topic you want to move from was not found."
4480
  msgstr ""
4481
 
4482
- #: includes/replies/functions.php:1231 includes/topics/functions.php:1095
4483
- #: includes/topics/functions.php:1365
4484
  msgid "<strong>ERROR</strong>: You do not have permission to edit the source topic."
4485
  msgstr ""
4486
 
4487
- #: includes/replies/functions.php:1241
4488
  msgid "<strong>ERROR</strong>: You need to choose a valid move option."
4489
  msgstr ""
4490
 
4491
- #: includes/replies/functions.php:1254 includes/topics/functions.php:1388
4492
  msgid "<strong>ERROR</strong>: A topic ID is required."
4493
  msgstr ""
4494
 
4495
- #: includes/replies/functions.php:1264
4496
  msgid "<strong>ERROR</strong>: The topic you want to move to was not found."
4497
  msgstr ""
4498
 
4499
- #: includes/replies/functions.php:1269 includes/topics/functions.php:1115
4500
- #: includes/topics/functions.php:1403
4501
  msgid ""
4502
  "<strong>ERROR</strong>: You do not have permission to edit the destination "
4503
  "topic."
4504
  msgstr ""
4505
 
4506
- #: includes/replies/functions.php:1323 includes/topics/functions.php:1441
4507
  msgid ""
4508
  "<strong>ERROR</strong>: There was a problem converting the reply into the "
4509
  "topic. Please try again."
4510
  msgstr ""
4511
 
4512
- #: includes/replies/functions.php:1328 includes/topics/functions.php:1446
4513
  msgid ""
4514
  "<strong>ERROR</strong>: You do not have permission to create new topics. "
4515
  "The reply could not be converted into a topic."
4516
  msgstr ""
4517
 
4518
- #: includes/replies/functions.php:1476
4519
  msgid "<strong>ERROR:</strong> This reply could not be found or no longer exists."
4520
  msgstr ""
4521
 
4522
- #: includes/replies/functions.php:1482 includes/topics/functions.php:1982
4523
  msgid "<strong>ERROR:</strong> You do not have permission to do that."
4524
  msgstr ""
4525
 
4526
- #: includes/replies/functions.php:1558
4527
  msgid "<strong>ERROR</strong>: There was a problem approving the reply."
4528
  msgstr ""
4529
 
4530
- #: includes/replies/functions.php:1558
4531
  msgid "<strong>ERROR</strong>: There was a problem unapproving the reply."
4532
  msgstr ""
4533
 
4534
- #: includes/replies/functions.php:1569
4535
  msgid "<strong>ERROR</strong>: There was a problem unmarking the reply as spam."
4536
  msgstr ""
4537
 
4538
- #: includes/replies/functions.php:1569
4539
  msgid "<strong>ERROR</strong>: There was a problem marking the reply as spam."
4540
  msgstr ""
4541
 
4542
- #: includes/replies/functions.php:1584
4543
  msgid "<strong>ERROR</strong>: There was a problem trashing the reply."
4544
  msgstr ""
4545
 
4546
- #: includes/replies/functions.php:1592
4547
  msgid "<strong>ERROR</strong>: There was a problem untrashing the reply."
4548
  msgstr ""
4549
 
4550
- #: includes/replies/functions.php:1600
4551
  msgid "<strong>ERROR</strong>: There was a problem deleting the reply."
4552
  msgstr ""
4553
 
4554
- #: includes/replies/functions.php:2076
4555
  msgid "All Posts"
4556
  msgstr ""
4557
 
4558
- #: includes/replies/functions.php:2122 includes/topics/functions.php:3723
4559
  msgid "Replies: %s"
4560
  msgstr ""
4561
 
@@ -4607,125 +4663,129 @@ msgstr ""
4607
  msgid "Parent Topic:"
4608
  msgstr ""
4609
 
4610
- #: includes/replies/template.php:69
4611
  msgid "Forum Replies"
4612
  msgstr ""
4613
 
4614
- #: includes/replies/template.php:71
4615
  msgid "Insert into reply"
4616
  msgstr ""
4617
 
4618
- #: includes/replies/template.php:72
4619
  msgid "Uploaded to this reply"
4620
  msgstr ""
4621
 
4622
- #: includes/replies/template.php:73
4623
  msgid "Reply Image"
4624
  msgstr ""
4625
 
4626
- #: includes/replies/template.php:74
4627
  msgid "Set reply image"
4628
  msgstr ""
4629
 
4630
- #: includes/replies/template.php:75
4631
  msgid "Remove reply image"
4632
  msgstr ""
4633
 
4634
- #: includes/replies/template.php:76
4635
  msgid "Use as reply image"
4636
  msgstr ""
4637
 
 
 
 
 
4638
  #: includes/replies/template.php:77
4639
- msgid "Filter reply list"
4640
  msgstr ""
4641
 
4642
  #: includes/replies/template.php:78
4643
- msgid "Reply list navigation"
4644
  msgstr ""
4645
 
4646
  #: includes/replies/template.php:79
4647
- msgid "Reply list"
4648
  msgstr ""
4649
 
4650
- #: includes/replies/template.php:527
4651
  #: templates/default/bbpress/form-reply.php:30
4652
  msgid "Reply To: %s"
4653
  msgstr ""
4654
 
4655
- #: includes/replies/template.php:739
4656
  msgid "This reply was modified %1$s by %2$s. Reason: %3$s"
4657
  msgstr ""
4658
 
4659
- #: includes/replies/template.php:741
4660
  msgid "This reply was modified %1$s by %2$s."
4661
  msgstr ""
4662
 
4663
- #: includes/replies/template.php:1199 includes/topics/template.php:1458
4664
  #: includes/users/template.php:1999
4665
  msgid "View %s's profile"
4666
  msgstr ""
4667
 
4668
- #: includes/replies/template.php:1200 includes/topics/template.php:1459
4669
  #: includes/users/template.php:2000
4670
  msgid "Visit %s's website"
4671
  msgstr ""
4672
 
4673
- #: includes/replies/template.php:1655
4674
  #: templates/default/bbpress/form-user-passwords.php:31
4675
  msgid "Cancel"
4676
  msgstr ""
4677
 
4678
- #: includes/replies/template.php:1965 includes/topics/template.php:2546
4679
  #: templates/default/bbpress/form-topic-tag.php:100
4680
  #: templates/default/bbpress/form-topic-tag.php:117
4681
  msgid "Delete"
4682
  msgstr ""
4683
 
4684
- #: includes/replies/template.php:1990 includes/topics/template.php:2567
4685
  msgid "Are you sure you want to delete that permanently?"
4686
  msgstr ""
4687
 
4688
- #: includes/replies/template.php:2087
4689
  msgid "Move"
4690
  msgstr ""
4691
 
4692
- #: includes/replies/template.php:2088
4693
  msgid "Move this reply"
4694
  msgstr ""
4695
 
4696
- #: includes/replies/template.php:2146
4697
  msgid "Split"
4698
  msgstr ""
4699
 
4700
- #: includes/replies/template.php:2147
4701
  msgid "Split the topic from this reply"
4702
  msgstr ""
4703
 
4704
- #: includes/replies/template.php:2381
4705
  msgid "Viewing %1$s reply thread"
4706
  msgid_plural "Viewing %1$s reply threads"
4707
  msgstr[0] ""
4708
  msgstr[1] ""
4709
 
4710
- #: includes/replies/template.php:2388
4711
  msgid "Viewing %1$s reply"
4712
  msgid_plural "Viewing %1$s replies"
4713
  msgstr[0] ""
4714
  msgstr[1] ""
4715
 
4716
- #: includes/replies/template.php:2392
4717
  msgid "Viewing %2$s replies (of %4$s total)"
4718
  msgid_plural "Viewing %1$s replies - %2$s through %3$s (of %4$s total)"
4719
  msgstr[0] ""
4720
  msgstr[1] ""
4721
 
4722
- #: includes/replies/template.php:2400
4723
  msgid "Viewing %1$s post"
4724
  msgid_plural "Viewing %1$s posts"
4725
  msgstr[0] ""
4726
  msgstr[1] ""
4727
 
4728
- #: includes/replies/template.php:2404
4729
  msgid "Viewing %2$s post (of %4$s total)"
4730
  msgid_plural "Viewing %1$s posts - %2$s through %3$s (of %4$s total)"
4731
  msgstr[0] ""
@@ -4735,13 +4795,13 @@ msgstr[1] ""
4735
  msgid "Search Results for '%s'"
4736
  msgstr ""
4737
 
4738
- #: includes/search/template.php:394
4739
  msgid "Viewing %1$s result"
4740
  msgid_plural "Viewing %1$s results"
4741
  msgstr[0] ""
4742
  msgstr[1] ""
4743
 
4744
- #: includes/search/template.php:398
4745
  msgid "Viewing %2$s results (of %4$s total)"
4746
  msgid_plural "Viewing %1$s results - %2$s through %3$s (of %4$s total)"
4747
  msgstr[0] ""
@@ -4795,7 +4855,7 @@ msgstr ""
4795
  msgid "<strong>ERROR</strong>: The topic was not created."
4796
  msgstr ""
4797
 
4798
- #: includes/topics/functions.php:430 includes/topics/functions.php:1077
4799
  msgid "<strong>ERROR</strong>: Topic ID not found."
4800
  msgstr ""
4801
 
@@ -4817,123 +4877,123 @@ msgstr ""
4817
  msgid "<strong>ERROR</strong>: Your topic cannot be edited at this time."
4818
  msgstr ""
4819
 
4820
- #: includes/topics/functions.php:1089
4821
  msgid "<strong>ERROR</strong>: The topic you want to merge was not found."
4822
  msgstr ""
4823
 
4824
- #: includes/topics/functions.php:1103
4825
  msgid "<strong>ERROR</strong>: Destination topic ID not found."
4826
  msgstr ""
4827
 
4828
- #: includes/topics/functions.php:1110
4829
  msgid "<strong>ERROR</strong>: The topic you want to merge to was not found."
4830
  msgstr ""
4831
 
4832
- #: includes/topics/functions.php:1335
4833
  msgid "<strong>ERROR</strong>: A reply ID is required."
4834
  msgstr ""
4835
 
4836
- #: includes/topics/functions.php:1344
4837
  msgid "<strong>ERROR</strong>: The reply you want to split from was not found."
4838
  msgstr ""
4839
 
4840
- #: includes/topics/functions.php:1354
4841
  msgid "<strong>ERROR</strong>: The topic you want to split was not found."
4842
  msgstr ""
4843
 
4844
- #: includes/topics/functions.php:1375
4845
  msgid "<strong>ERROR</strong>: You need to choose a valid split option."
4846
  msgstr ""
4847
 
4848
- #: includes/topics/functions.php:1398
4849
  msgid "<strong>ERROR</strong>: The topic you want to split to was not found."
4850
  msgstr ""
4851
 
4852
- #: includes/topics/functions.php:1683
4853
  msgid ""
4854
  "<strong>ERROR</strong>: The following problem(s) have been found while "
4855
  "getting the tag: %s"
4856
  msgstr ""
4857
 
4858
- #: includes/topics/functions.php:1701 includes/topics/functions.php:1745
4859
  msgid "<strong>ERROR</strong>: You do not have permission to edit the topic tags."
4860
  msgstr ""
4861
 
4862
- #: includes/topics/functions.php:1707 includes/topics/functions.php:1751
4863
  msgid "<strong>ERROR</strong>: You need to enter a tag name."
4864
  msgstr ""
4865
 
4866
- #: includes/topics/functions.php:1722
4867
  msgid ""
4868
  "<strong>ERROR</strong>: The following problem(s) have been found while "
4869
  "updating the tag: %s"
4870
  msgstr ""
4871
 
4872
- #: includes/topics/functions.php:1762 includes/topics/functions.php:1783
4873
  msgid ""
4874
  "<strong>ERROR</strong>: The following problem(s) have been found while "
4875
  "merging the tags: %s"
4876
  msgstr ""
4877
 
4878
- #: includes/topics/functions.php:1771
4879
  msgid "<strong>ERROR</strong>: The tags which are being merged can not be the same."
4880
  msgstr ""
4881
 
4882
- #: includes/topics/functions.php:1806
4883
  msgid "<strong>ERROR</strong>: You do not have permission to delete the topic tags."
4884
  msgstr ""
4885
 
4886
- #: includes/topics/functions.php:1815
4887
  msgid ""
4888
  "<strong>ERROR</strong>: The following problem(s) have been found while "
4889
  "deleting the tag: %s"
4890
  msgstr ""
4891
 
4892
- #: includes/topics/functions.php:1976
4893
  msgid "<strong>ERROR:</strong> This topic could not be found or no longer exists."
4894
  msgstr ""
4895
 
4896
- #: includes/topics/functions.php:2066
4897
  msgid "<strong>ERROR</strong>: There was a problem approving the topic."
4898
  msgstr ""
4899
 
4900
- #: includes/topics/functions.php:2067
4901
  msgid "<strong>ERROR</strong>: There was a problem unapproving the topic."
4902
  msgstr ""
4903
 
4904
- #: includes/topics/functions.php:2084
4905
  msgid "<strong>ERROR</strong>: There was a problem closing the topic."
4906
  msgstr ""
4907
 
4908
- #: includes/topics/functions.php:2085
4909
  msgid "<strong>ERROR</strong>: There was a problem opening the topic."
4910
  msgstr ""
4911
 
4912
- #: includes/topics/functions.php:2103
4913
  msgid "<strong>ERROR</strong>: There was a problem unsticking the topic."
4914
  msgstr ""
4915
 
4916
- #: includes/topics/functions.php:2104
4917
  msgid "<strong>ERROR</strong>: There was a problem sticking the topic."
4918
  msgstr ""
4919
 
4920
- #: includes/topics/functions.php:2122
4921
  msgid "<strong>ERROR</strong>: There was a problem unmarking the topic as spam."
4922
  msgstr ""
4923
 
4924
- #: includes/topics/functions.php:2123
4925
  msgid "<strong>ERROR</strong>: There was a problem marking the topic as spam."
4926
  msgstr ""
4927
 
4928
- #: includes/topics/functions.php:2136
4929
  msgid "<strong>ERROR</strong>: There was a problem trashing the topic."
4930
  msgstr ""
4931
 
4932
- #: includes/topics/functions.php:2147
4933
  msgid "<strong>ERROR</strong>: There was a problem untrashing the topic."
4934
  msgstr ""
4935
 
4936
- #: includes/topics/functions.php:2156
4937
  msgid "<strong>ERROR</strong>: There was a problem deleting the topic."
4938
  msgstr ""
4939
 
@@ -4981,233 +5041,245 @@ msgstr ""
4981
  msgid "Topics list navigation"
4982
  msgstr ""
4983
 
4984
- #: includes/topics/template.php:67
4985
  msgid "Forum Topics"
4986
  msgstr ""
4987
 
4988
- #: includes/topics/template.php:69
4989
  msgid "Insert into topic"
4990
  msgstr ""
4991
 
4992
- #: includes/topics/template.php:70
4993
  msgid "Uploaded to this topic"
4994
  msgstr ""
4995
 
4996
- #: includes/topics/template.php:71
4997
  msgid "Topic Image"
4998
  msgstr ""
4999
 
5000
- #: includes/topics/template.php:72
5001
  msgid "Set topic image"
5002
  msgstr ""
5003
 
5004
- #: includes/topics/template.php:73
5005
  msgid "Remove topic image"
5006
  msgstr ""
5007
 
5008
- #: includes/topics/template.php:74
5009
  msgid "Use as topic image"
5010
  msgstr ""
5011
 
 
 
 
 
5012
  #: includes/topics/template.php:75
5013
- msgid "Filter topic list"
5014
  msgstr ""
5015
 
5016
  #: includes/topics/template.php:76
5017
- msgid "Topic list navigation"
5018
  msgstr ""
5019
 
5020
  #: includes/topics/template.php:77
5021
- msgid "Topic list"
5022
  msgstr ""
5023
 
5024
- #: includes/topics/template.php:924
5025
  msgid "This topic was modified %1$s by %2$s. Reason: %3$s"
5026
  msgstr ""
5027
 
5028
- #: includes/topics/template.php:926
5029
  msgid "This topic was modified %1$s by %2$s."
5030
  msgstr ""
5031
 
5032
- #: includes/topics/template.php:1858 includes/users/template.php:1075
5033
  msgid "Favorite"
5034
  msgstr ""
5035
 
5036
- #: includes/topics/template.php:1859 includes/users/template.php:1076
5037
  msgid "Unfavorite"
5038
  msgstr ""
5039
 
5040
- #: includes/topics/template.php:2224
5041
  msgid "Tagged:"
5042
  msgstr ""
5043
 
5044
- #: includes/topics/template.php:2785
5045
  #: templates/default/bbpress/form-topic-tag.php:69
5046
  #: templates/default/bbpress/form-topic-tag.php:85
5047
  msgid "Merge"
5048
  msgstr ""
5049
 
5050
- #: includes/topics/template.php:3017
5051
  msgid "Viewing %1$s topic"
5052
  msgid_plural "Viewing %1$s topics"
5053
  msgstr[0] ""
5054
  msgstr[1] ""
5055
 
5056
- #: includes/topics/template.php:3021
5057
  msgid "Viewing topic %2$s (of %4$s total)"
5058
  msgid_plural "Viewing %1$s topics - %2$s through %3$s (of %4$s total)"
5059
  msgstr[0] ""
5060
  msgstr[1] ""
5061
 
5062
- #: includes/topics/template.php:3078
5063
  msgid "This topic is marked as spam."
5064
  msgstr ""
5065
 
5066
- #: includes/topics/template.php:3083
5067
  msgid "This topic is in the trash."
5068
  msgstr ""
5069
 
5070
- #: includes/topics/template.php:3333
 
 
 
 
5071
  msgid "%s voice"
5072
  msgid_plural "%s voices"
5073
  msgstr[0] ""
5074
  msgstr[1] ""
5075
 
5076
- #: includes/topics/template.php:3339
5077
  msgid "This topic has %1$s, %2$s, and was last updated %3$s by %4$s."
5078
  msgstr ""
5079
 
5080
- #: includes/topics/template.php:3343
5081
  msgid "This topic has %1$s and %2$s."
5082
  msgstr ""
5083
 
5084
- #: includes/topics/template.php:3347
5085
  msgid "This topic has no replies."
5086
  msgstr ""
5087
 
5088
- #: includes/topics/template.php:3397
 
 
 
 
5089
  msgid "Search Tags"
5090
  msgstr ""
5091
 
5092
- #: includes/topics/template.php:3398
5093
  msgid "Popular Tags"
5094
  msgstr ""
5095
 
5096
- #: includes/topics/template.php:3399
5097
  msgid "All Tags"
5098
  msgstr ""
5099
 
5100
- #: includes/topics/template.php:3400
5101
  msgid "Parent Tag"
5102
  msgstr ""
5103
 
5104
- #: includes/topics/template.php:3401
5105
  msgid "Parent Tag:"
5106
  msgstr ""
5107
 
5108
- #: includes/topics/template.php:3402
5109
  msgid "Edit Tag"
5110
  msgstr ""
5111
 
5112
- #: includes/topics/template.php:3403
5113
  msgid "View Topic Tag"
5114
  msgstr ""
5115
 
5116
- #: includes/topics/template.php:3404
5117
  msgid "Update Tag"
5118
  msgstr ""
5119
 
5120
- #: includes/topics/template.php:3405
5121
  msgid "Add New Tag"
5122
  msgstr ""
5123
 
5124
- #: includes/topics/template.php:3406
5125
  msgid "New Tag Name"
5126
  msgstr ""
5127
 
5128
- #: includes/topics/template.php:3407
5129
  msgid "Separate topic tags with commas"
5130
  msgstr ""
5131
 
5132
- #: includes/topics/template.php:3408
5133
  msgid "Add or remove tags"
5134
  msgstr ""
5135
 
5136
- #: includes/topics/template.php:3409
5137
  msgid "Choose from the most used tags"
5138
  msgstr ""
5139
 
5140
- #: includes/topics/template.php:3410
5141
  msgid "No topic tags found."
5142
  msgstr ""
5143
 
5144
- #: includes/topics/template.php:3411
5145
  msgid "No topic tags"
5146
  msgstr ""
5147
 
5148
- #: includes/topics/template.php:3412
5149
  msgid "Topic tags list navigation"
5150
  msgstr ""
5151
 
5152
- #: includes/topics/template.php:3413
5153
  msgid "Topic tags list"
5154
  msgstr ""
5155
 
5156
- #: includes/topics/template.php:3414
5157
  msgid "Most used topic tags"
5158
  msgstr ""
5159
 
5160
- #: includes/topics/template.php:3415
5161
  msgid "&larr; Back to Tags"
5162
  msgstr ""
5163
 
5164
- #: includes/topics/template.php:4030
5165
  msgid "Nobody"
5166
  msgstr ""
5167
 
5168
- #: includes/topics/template.php:4034
5169
  msgid "%1$s is currently editing this topic."
5170
  msgstr ""
5171
 
5172
- #: includes/users/engagements.php:602
5173
  msgid ""
5174
  "<strong>ERROR</strong>: No topic was found. Which topic are you "
5175
  "marking/unmarking as favorite?"
5176
  msgstr ""
5177
 
5178
- #: includes/users/engagements.php:610
5179
  msgid ""
5180
  "<strong>ERROR</strong>: You do not have permission to edit favorites for "
5181
  "that user!."
5182
  msgstr ""
5183
 
5184
- #: includes/users/engagements.php:651
5185
  msgid ""
5186
  "<strong>ERROR</strong>: There was a problem removing that topic from "
5187
  "favorites."
5188
  msgstr ""
5189
 
5190
- #: includes/users/engagements.php:653
5191
  msgid "<strong>ERROR</strong>: There was a problem favoriting that topic."
5192
  msgstr ""
5193
 
5194
- #: includes/users/engagements.php:843
5195
  msgid ""
5196
  "<strong>ERROR</strong>: Not found. What are you subscribing/unsubscribing "
5197
  "to?"
5198
  msgstr ""
5199
 
5200
- #: includes/users/engagements.php:851
5201
  msgid ""
5202
  "<strong>ERROR</strong>: You do not have permission to edit subscriptions of "
5203
  "that user."
5204
  msgstr ""
5205
 
5206
- #: includes/users/engagements.php:894
5207
  msgid "<strong>ERROR</strong>: There was a problem unsubscribing."
5208
  msgstr ""
5209
 
5210
- #: includes/users/engagements.php:896
5211
  msgid "<strong>ERROR</strong>: There was a problem subscribing."
5212
  msgstr ""
5213
 
@@ -5952,14 +6024,6 @@ msgstr ""
5952
  msgid "Subscribed Forums"
5953
  msgstr ""
5954
 
5955
- #: templates/default/bbpress/user-subscriptions.php:33
5956
- msgid "You are not currently subscribed to any forums."
5957
- msgstr ""
5958
-
5959
- #: templates/default/bbpress/user-subscriptions.php:34
5960
- msgid "This user is not currently subscribed to any forums."
5961
- msgstr ""
5962
-
5963
  #: templates/default/bbpress/user-topics-created.php:19
5964
  msgid "Forum Topics Started"
5965
  msgstr ""
@@ -6079,12 +6143,12 @@ msgid_plural "Hidden <span class=\"count\">(%s)</span>"
6079
  msgstr[0] ""
6080
  msgstr[1] ""
6081
 
6082
- #: includes/admin/classes/class-bbp-admin.php:786
6083
  msgctxt "admin color scheme"
6084
  msgid "Mint"
6085
  msgstr ""
6086
 
6087
- #: includes/admin/classes/class-bbp-admin.php:795
6088
  msgctxt "admin color scheme"
6089
  msgid "Evergreen"
6090
  msgstr ""
@@ -6191,137 +6255,137 @@ msgctxt "group admin edit screen"
6191
  msgid "Discussion Forum"
6192
  msgstr ""
6193
 
6194
- #: includes/forums/functions.php:1834
6195
  msgctxt "Open the forum"
6196
  msgid "Open"
6197
  msgstr ""
6198
 
6199
- #: includes/forums/functions.php:1835
6200
  msgctxt "Close the forum"
6201
  msgid "Closed"
6202
  msgstr ""
6203
 
6204
- #: includes/forums/functions.php:1852
6205
  msgctxt "Forum accepts new topics"
6206
  msgid "Forum"
6207
  msgstr ""
6208
 
6209
- #: includes/forums/functions.php:1853
6210
  msgctxt "Forum is a category"
6211
  msgid "Category"
6212
  msgstr ""
6213
 
6214
- #: includes/forums/functions.php:1870
6215
  msgctxt "Make forum public"
6216
  msgid "Public"
6217
  msgstr ""
6218
 
6219
- #: includes/forums/functions.php:1871
6220
  msgctxt "Make forum private"
6221
  msgid "Private"
6222
  msgstr ""
6223
 
6224
- #: includes/forums/functions.php:1872
6225
  msgctxt "Make forum hidden"
6226
  msgid "Hidden"
6227
  msgstr ""
6228
 
6229
- #: includes/replies/functions.php:1632
6230
  msgctxt "Publish the reply"
6231
  msgid "Publish"
6232
  msgstr ""
6233
 
6234
- #: includes/replies/functions.php:1633
6235
  msgctxt "Spam the reply"
6236
  msgid "Spam"
6237
  msgstr ""
6238
 
6239
- #: includes/replies/functions.php:1634
6240
  msgctxt "Trash the reply"
6241
  msgid "Trash"
6242
  msgstr ""
6243
 
6244
- #: includes/replies/functions.php:1635
6245
  msgctxt "Mark reply as pending"
6246
  msgid "Pending"
6247
  msgstr ""
6248
 
6249
- #: includes/replies/template.php:649 includes/topics/template.php:764
6250
  msgctxt "date at time"
6251
  msgid "%1$s at %2$s"
6252
  msgstr ""
6253
 
6254
- #: includes/replies/template.php:1582 includes/topics/template.php:2882
6255
  msgctxt "verb"
6256
  msgid "Reply"
6257
  msgstr ""
6258
 
6259
- #: includes/replies/template.php:2203
6260
  msgctxt "Pending Status"
6261
  msgid "Approve"
6262
  msgstr ""
6263
 
6264
- #: includes/replies/template.php:2204
6265
  msgctxt "Pending Status"
6266
  msgid "Unapprove"
6267
  msgstr ""
6268
 
6269
- #: includes/replies/template.php:2566
6270
  msgctxt "Default reply to dropdown text"
6271
  msgid "None"
6272
  msgstr ""
6273
 
6274
- #: includes/topics/functions.php:1850 includes/topics/template.php:2610
6275
  msgctxt "Open the topic"
6276
  msgid "Open"
6277
  msgstr ""
6278
 
6279
- #: includes/topics/functions.php:1851
6280
  msgctxt "Close the topic"
6281
  msgid "Closed"
6282
  msgstr ""
6283
 
6284
- #: includes/topics/template.php:2609
6285
  msgctxt "Close the topic"
6286
  msgid "Close"
6287
  msgstr ""
6288
 
6289
- #: includes/topics/functions.php:1852
6290
  msgctxt "Spam the topic"
6291
  msgid "Spam"
6292
  msgstr ""
6293
 
6294
- #: includes/topics/functions.php:1853
6295
  msgctxt "Trash the topic"
6296
  msgid "Trash"
6297
  msgstr ""
6298
 
6299
- #: includes/topics/functions.php:1854
6300
  msgctxt "Unapprove the topic"
6301
  msgid "Pending"
6302
  msgstr ""
6303
 
6304
- #: includes/topics/template.php:2664
6305
  msgctxt "Unapprove the topic"
6306
  msgid "Unapprove"
6307
  msgstr ""
6308
 
6309
- #: includes/topics/functions.php:1871
6310
  msgctxt "Unstick a topic"
6311
  msgid "Normal"
6312
  msgstr ""
6313
 
6314
- #: includes/topics/functions.php:1872
6315
  msgctxt "Make topic sticky"
6316
  msgid "Sticky"
6317
  msgstr ""
6318
 
6319
- #: includes/topics/functions.php:1873
6320
  msgctxt "Make topic super sticky"
6321
  msgid "Super Sticky"
6322
  msgstr ""
6323
 
6324
- #: includes/topics/template.php:2663
6325
  msgctxt "Approve the topic"
6326
  msgid "Approve"
6327
  msgstr ""
1
+ # Copyright (C) 2019 The bbPress Contributors
2
  # This file is distributed under the GPLv2 or later (license.txt).
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: bbPress 2.6.0\n"
6
  "Report-Msgid-Bugs-To: https://bbpress.trac.wordpress.org\n"
7
+ "POT-Creation-Date: 2019-11-12 17:51:12+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: JOHN JAMES JACOBY <jjj@bbpress.org>\n"
13
  "Language-Team: ENGLISH <jjj@bbpress.org>\n"
14
+ "X-Generator: grunt-wp-i18n 1.0.3\n"
15
 
16
  #: bbpress.php:144 bbpress.php:151
17
  msgid "Cheatin&#8217; huh?"
41
  msgid "bbPress Item Count"
42
  msgstr ""
43
 
44
+ #: includes/admin/actions.php:178 includes/admin/forums.php:538
45
  #: includes/admin/settings.php:280 includes/admin/settings.php:301
46
+ #: includes/admin/tools/common.php:437 includes/admin/topics.php:854
47
  #: includes/extend/buddypress/activity.php:197
48
  #: includes/extend/buddypress/activity.php:391
49
+ #: includes/forums/template.php:2660 includes/topics/template.php:47
50
  #: includes/topics/template.php:48
51
  #: templates/default/bbpress/content-statistics.php:30
52
  #: templates/default/bbpress/loop-forums.php:21
53
  msgid "Topics"
54
  msgstr ""
55
 
56
+ #: includes/admin/actions.php:183 includes/admin/actions.php:195
57
  #: includes/admin/forums.php:539 includes/admin/settings.php:288
58
+ #: includes/admin/settings.php:309 includes/admin/tools/common.php:440
59
  #: includes/admin/topics.php:390 includes/admin/topics.php:856
60
  #: includes/core/theme-compat.php:694
61
  #: includes/extend/buddypress/activity.php:207
62
  #: includes/extend/buddypress/activity.php:392
63
+ #: includes/forums/template.php:2714 includes/replies/template.php:49
64
  #: includes/replies/template.php:50
65
  #: templates/default/bbpress/content-statistics.php:35
66
  #: templates/default/bbpress/loop-forums.php:23
70
  msgid "Replies"
71
  msgstr ""
72
 
73
+ #: includes/admin/actions.php:190 includes/admin/actions.php:202
74
  #: includes/admin/forums.php:537 includes/admin/metaboxes.php:113
75
  #: includes/admin/metaboxes.php:432 includes/admin/metaboxes.php:496
76
  #: includes/admin/replies.php:665 includes/admin/settings.php:351
80
  msgid "Forum"
81
  msgstr ""
82
 
83
+ #: includes/admin/actions.php:207 includes/admin/metaboxes.php:130
84
  #: includes/admin/metaboxes.php:523 includes/admin/replies.php:666
85
  #: includes/admin/settings.php:359 includes/topics/template.php:49
86
  #: templates/default/bbpress/content-single-topic-lead.php:23
89
  msgid "Topic"
90
  msgstr ""
91
 
92
+ #: includes/admin/classes/class-bbp-admin.php:234
93
+ msgid "Learn More"
94
  msgstr ""
95
 
96
+ #: includes/admin/classes/class-bbp-admin.php:235
97
+ msgid "Hide For Now"
98
  msgstr ""
99
 
100
+ #: includes/admin/classes/class-bbp-admin.php:238
101
+ msgid "bbPress requires a manual database upgrade. %s or %s."
102
  msgstr ""
103
 
104
+ #: includes/admin/classes/class-bbp-admin.php:467
105
+ #: includes/admin/classes/class-bbp-admin.php:468
106
+ #: includes/admin/classes/class-bbp-admin.php:477
107
+ #: includes/admin/classes/class-bbp-admin.php:478
108
+ #: includes/admin/tools/common.php:434 includes/admin/tools.php:30
109
  #: includes/admin/users.php:93 includes/common/widgets.php:626
110
  #: includes/extend/buddypress/loader.php:42
111
  #: includes/extend/buddypress/loader.php:189
112
  #: includes/extend/buddypress/loader.php:311
113
  #: includes/extend/buddypress/loader.php:376 includes/forums/template.php:48
114
+ #: includes/forums/template.php:49 includes/forums/template.php:67
115
  #: templates/default/bbpress/content-statistics.php:25
116
  #: templates/default/bbpress/user-profile.php:34
117
  msgid "Forums"
118
  msgstr ""
119
 
120
+ #: includes/admin/classes/class-bbp-admin.php:490
121
+ #: includes/admin/classes/class-bbp-admin.php:491
122
+ #: includes/admin/classes/class-bbp-admin.php:499
123
+ #: includes/admin/classes/class-bbp-admin.php:500
124
  msgid "Welcome to bbPress"
125
  msgstr ""
126
 
127
+ #: includes/admin/classes/class-bbp-admin.php:514
128
+ #: includes/admin/classes/class-bbp-admin.php:515
129
+ #: includes/admin/classes/class-bbp-admin.php:536
130
+ #: includes/admin/classes/class-bbp-admin.php:537
131
+ #: includes/admin/classes/class-bbp-admin.php:1254
132
+ #: includes/admin/classes/class-bbp-admin.php:1352
133
  msgid "Update Forums"
134
  msgstr ""
135
 
136
+ #: includes/admin/classes/class-bbp-admin.php:722
137
  msgid "Settings"
138
  msgstr ""
139
 
140
+ #: includes/admin/classes/class-bbp-admin.php:727
141
  msgid "About"
142
  msgstr ""
143
 
144
+ #: includes/admin/classes/class-bbp-admin.php:916
145
+ #: includes/admin/classes/class-bbp-admin.php:953
146
  msgid "%s - %s"
147
  msgstr ""
148
 
149
+ #: includes/admin/classes/class-bbp-admin.php:971
150
  msgid "Welcome to bbPress %s"
151
  msgstr ""
152
 
153
+ #: includes/admin/classes/class-bbp-admin.php:973
154
  msgid ""
155
  "bbPress is fun to use, contains no artificial colors or preservatives, and "
156
  "is absolutely wonderful in every environment. Your community is going to "
157
  "love using it."
158
  msgstr ""
159
 
160
+ #: includes/admin/classes/class-bbp-admin.php:999
161
+ #: includes/admin/classes/class-bbp-admin.php:1073
162
  msgid "What&#8217;s New"
163
  msgstr ""
164
 
165
+ #: includes/admin/classes/class-bbp-admin.php:1001
166
+ #: includes/admin/classes/class-bbp-admin.php:1075
167
  msgid "Credits"
168
  msgstr ""
169
 
170
+ #: includes/admin/classes/class-bbp-admin.php:1006
171
  msgid "Forum Subscriptions"
172
  msgstr ""
173
 
174
+ #: includes/admin/classes/class-bbp-admin.php:1010
175
  msgid "Subscribe to Forums"
176
  msgstr ""
177
 
178
+ #: includes/admin/classes/class-bbp-admin.php:1011
179
  msgid "Now your users can subscribe to new topics in specific forums."
180
  msgstr ""
181
 
182
+ #: includes/admin/classes/class-bbp-admin.php:1015
183
  msgid "Manage Subscriptions"
184
  msgstr ""
185
 
186
+ #: includes/admin/classes/class-bbp-admin.php:1016
187
  msgid "Your users can manage all of their subscriptions in one convenient location."
188
  msgstr ""
189
 
190
+ #: includes/admin/classes/class-bbp-admin.php:1022
191
  msgid "Converters"
192
  msgstr ""
193
 
194
+ #: includes/admin/classes/class-bbp-admin.php:1026
195
  msgid ""
196
  "We&#8217;re all abuzz about the hive of new importers, AEF, Drupal, FluxBB, "
197
  "Kunena Forums for Joomla, MyBB, Phorum, PHPFox, PHPWind, PunBB, SMF, "
200
  "now gone if you need to remove imported users."
201
  msgstr ""
202
 
203
+ #: includes/admin/classes/class-bbp-admin.php:1032
204
  msgid "Theme Compatibility"
205
  msgstr ""
206
 
207
+ #: includes/admin/classes/class-bbp-admin.php:1033
208
  msgid "Better handling of styles and scripts in the template stack."
209
  msgstr ""
210
 
211
+ #: includes/admin/classes/class-bbp-admin.php:1037
212
  msgid "Polyglot support"
213
  msgstr ""
214
 
215
+ #: includes/admin/classes/class-bbp-admin.php:1038
216
  msgid "bbPress fully supports automatic translation updates."
217
  msgstr ""
218
 
219
+ #: includes/admin/classes/class-bbp-admin.php:1042
220
  msgid "User capabilities"
221
  msgstr ""
222
 
223
+ #: includes/admin/classes/class-bbp-admin.php:1043
224
  msgid "Roles and capabilities have been swept through, cleaned up, and simplified."
225
  msgstr ""
226
 
227
+ #: includes/admin/classes/class-bbp-admin.php:1049
228
+ #: includes/admin/classes/class-bbp-admin.php:1189
229
  msgid "Go to Forum Settings"
230
  msgstr ""
231
 
232
+ #: includes/admin/classes/class-bbp-admin.php:1079
233
  msgid "bbPress is created by a worldwide swarm of busy, busy bees."
234
  msgstr ""
235
 
236
+ #: includes/admin/classes/class-bbp-admin.php:1081
237
  msgid "Project Leaders"
238
  msgstr ""
239
 
240
+ #: includes/admin/classes/class-bbp-admin.php:1085
241
  msgid "Founding Developer"
242
  msgstr ""
243
 
244
+ #: includes/admin/classes/class-bbp-admin.php:1089
245
  msgid "Lead Developer"
246
  msgstr ""
247
 
248
+ #: includes/admin/classes/class-bbp-admin.php:1093
249
  msgid "Feature Virtuoso"
250
  msgstr ""
251
 
252
+ #: includes/admin/classes/class-bbp-admin.php:1097
253
  msgid "Tool Maven"
254
  msgstr ""
255
 
256
+ #: includes/admin/classes/class-bbp-admin.php:1101
257
  msgid "Contributing Developers"
258
  msgstr ""
259
 
260
+ #: includes/admin/classes/class-bbp-admin.php:1105
261
+ #: includes/admin/classes/class-bbp-admin.php:1109
262
  msgid "Core Developer"
263
  msgstr ""
264
 
265
+ #: includes/admin/classes/class-bbp-admin.php:1113
266
  msgid "Project Emeriti"
267
  msgstr ""
268
 
269
+ #: includes/admin/classes/class-bbp-admin.php:1117
270
  msgid "Feature Developer"
271
  msgstr ""
272
 
273
+ #: includes/admin/classes/class-bbp-admin.php:1121
274
  msgid "Integration Testing"
275
  msgstr ""
276
 
277
+ #: includes/admin/classes/class-bbp-admin.php:1125
278
  msgid "Contributors to bbPress 2.6"
279
  msgstr ""
280
 
281
+ #: includes/admin/classes/class-bbp-admin.php:1210
282
+ #: includes/admin/classes/class-bbp-admin.php:1233
283
  msgid "Update Forum"
284
  msgstr ""
285
 
286
+ #: includes/admin/classes/class-bbp-admin.php:1222
287
+ #: includes/admin/classes/class-bbp-admin.php:1272
288
  msgid "All done!"
289
  msgstr ""
290
 
291
+ #: includes/admin/classes/class-bbp-admin.php:1223
292
+ #: includes/admin/classes/class-bbp-admin.php:1273
293
  msgid "Go Back"
294
  msgstr ""
295
 
296
+ #: includes/admin/classes/class-bbp-admin.php:1232
297
  msgid "You can update your forum through this page. Hit the link below to update."
298
  msgstr ""
299
 
300
+ #: includes/admin/classes/class-bbp-admin.php:1307
301
  msgid ""
302
  "Warning! Problem updating %1$s. Your server may not be able to connect to "
303
  "sites running on it. Error message: %2$s"
304
  msgstr ""
305
 
306
+ #: includes/admin/classes/class-bbp-admin.php:1332
307
  msgid ""
308
  "If your browser doesn&#8217;t start loading the next page automatically, "
309
  "click this link:"
310
  msgstr ""
311
 
312
+ #: includes/admin/classes/class-bbp-admin.php:1333
313
  msgid "Next Forums"
314
  msgstr ""
315
 
316
+ #: includes/admin/classes/class-bbp-admin.php:1351
317
  msgid ""
318
  "You can update all the forums on your network through this page. It works "
319
  "by calling the update script of each site automatically. Hit the link below "
621
  #: includes/admin/classes/class-bbp-topic-replies-list-table.php:91
622
  #: includes/admin/replies.php:235 includes/admin/replies.php:818
623
  #: includes/admin/topics.php:240 includes/admin/topics.php:1023
624
+ #: includes/replies/template.php:2028 includes/topics/template.php:2807
625
  msgid "Spam"
626
  msgstr ""
627
 
628
  #: includes/admin/classes/class-bbp-topic-replies-list-table.php:92
629
  #: includes/admin/replies.php:833 includes/admin/topics.php:1037
630
+ #: includes/replies/template.php:1960 includes/topics/template.php:2515
631
  msgid "Trash"
632
  msgstr ""
633
 
638
  msgstr ""
639
 
640
  #: includes/admin/classes/class-bbp-topic-replies-list-table.php:149
641
+ #: includes/common/template.php:2265 includes/forums/template.php:54
642
+ #: includes/replies/template.php:55 includes/replies/template.php:1848
643
+ #: includes/topics/template.php:53 includes/topics/template.php:2403
644
  #: templates/default/bbpress/user-details.php:74
645
  msgid "Edit"
646
  msgstr ""
731
  msgstr ""
732
 
733
  #: includes/admin/forums.php:136 includes/admin/replies.php:153
734
+ #: includes/admin/tools/repair.php:63 includes/admin/tools/repair.php:180
735
+ #: includes/admin/tools/upgrade.php:60 includes/admin/tools/upgrade.php:192
736
  #: includes/admin/topics.php:159
737
  msgid "Bulk Actions"
738
  msgstr ""
839
  msgstr ""
840
 
841
  #: includes/admin/forums.php:181 includes/admin/forums.php:214
842
+ #: includes/forums/template.php:68
843
  msgid "Forum Attributes"
844
  msgstr ""
845
 
882
  msgstr ""
883
 
884
  #: includes/admin/forums.php:237 includes/admin/settings.php:208
885
+ #: includes/admin/tools/reset.php:42
886
  msgid "Forum Moderators"
887
  msgstr ""
888
 
889
  #: includes/admin/forums.php:267 includes/admin/settings.php:184
890
+ #: includes/admin/settings.php:436 includes/admin/tools/common.php:452
891
  #: includes/admin/topics.php:480 includes/extend/buddypress/loader.php:260
892
  #: templates/default/bbpress/user-details.php:67
893
  msgid "Subscriptions"
943
  msgid "&mdash;"
944
  msgstr ""
945
 
946
+ #: includes/admin/forums.php:595 includes/forums/template.php:581
947
  msgid "No Topics"
948
  msgstr ""
949
 
956
  msgstr ""
957
 
958
  #: includes/admin/forums.php:701 includes/admin/forums.php:713
959
+ #: includes/forums/template.php:79
960
  msgid "Forum updated."
961
  msgstr ""
962
 
1051
  msgstr[1] ""
1052
 
1053
  #: includes/admin/metaboxes.php:166 includes/admin/settings.php:367
1054
+ #: includes/topics/template.php:3380
1055
  msgid "Topic Tag"
1056
  msgid_plural "Topic Tags"
1057
  msgstr[0] ""
1219
  msgid "Separate user-names with commas"
1220
  msgstr ""
1221
 
1222
+ #: includes/admin/metaboxes.php:692
1223
  msgid "No users have engaged to this topic."
1224
  msgstr ""
1225
 
1226
+ #: includes/admin/metaboxes.php:725
1227
  msgid "No users have favorited this topic."
1228
  msgstr ""
1229
 
1230
+ #: includes/admin/metaboxes.php:765
1231
  msgid "No users have subscribed to this topic."
1232
  msgstr ""
1233
 
1234
+ #: includes/admin/metaboxes.php:798
1235
  msgid "No users have subscribed to this forum."
1236
  msgstr ""
1237
 
1370
  msgstr ""
1371
 
1372
  #: includes/admin/replies.php:198 includes/admin/replies.php:336
1373
+ #: includes/replies/template.php:69
1374
  msgid "Reply Attributes"
1375
  msgstr ""
1376
 
1396
  msgstr ""
1397
 
1398
  #: includes/admin/replies.php:233 includes/admin/topics.php:238
1399
+ #: includes/replies/template.php:2029 includes/topics/template.php:2808
1400
  msgid "Unspam"
1401
  msgstr ""
1402
 
1515
  msgstr ""
1516
 
1517
  #: includes/admin/replies.php:831 includes/admin/topics.php:1035
1518
+ #: includes/replies/template.php:1978 includes/topics/template.php:2532
1519
  msgid "Restore this item from the Trash"
1520
  msgstr ""
1521
 
1522
  #: includes/admin/replies.php:831 includes/admin/topics.php:1035
1523
+ #: includes/replies/template.php:1961 includes/topics/template.php:2516
1524
  msgid "Restore"
1525
  msgstr ""
1526
 
1527
  #: includes/admin/replies.php:833 includes/admin/topics.php:1037
1528
+ #: includes/replies/template.php:1982 includes/topics/template.php:2534
1529
  msgid "Move this item to the Trash"
1530
  msgstr ""
1531
 
1532
  #: includes/admin/replies.php:837 includes/admin/topics.php:1041
1533
+ #: includes/replies/template.php:1987 includes/topics/template.php:2538
1534
  msgid "Delete this item permanently"
1535
  msgstr ""
1536
 
1547
  msgstr ""
1548
 
1549
  #: includes/admin/replies.php:971 includes/admin/replies.php:983
1550
+ #: includes/replies/template.php:80
1551
  msgid "Reply updated."
1552
  msgstr ""
1553
 
1655
  msgid "Revisions"
1656
  msgstr ""
1657
 
1658
+ #: includes/admin/settings.php:176 includes/admin/tools/common.php:449
1659
  #: includes/admin/topics.php:450 includes/extend/buddypress/loader.php:247
1660
  #: templates/default/bbpress/user-details.php:57
1661
  msgid "Favorites"
1662
  msgstr ""
1663
 
1664
  #: includes/admin/settings.php:192 includes/admin/settings.php:444
1665
+ #: includes/admin/tools/common.php:455 includes/admin/topics.php:420
1666
  #: includes/extend/buddypress/loader.php:234
1667
  #: includes/extend/buddypress/loader.php:336
1668
  #: templates/default/bbpress/user-details.php:49
1678
  msgstr ""
1679
 
1680
  #: includes/admin/settings.php:224 includes/admin/settings.php:391
1681
+ #: includes/common/template.php:2380 includes/search/template.php:175
1682
  #: templates/default/bbpress/form-reply-search.php:20
1683
  #: templates/default/bbpress/form-search.php:21
1684
  #: templates/default/bbpress/form-topic-search.php:20
1737
  msgid "Favorite Topics"
1738
  msgstr ""
1739
 
1740
+ #: includes/admin/settings.php:457 includes/admin/tools/upgrade.php:371
1741
  #: includes/extend/buddypress/functions.php:341
1742
  msgid "Group Forums"
1743
  msgstr ""
2098
  msgid "Ready to go."
2099
  msgstr ""
2100
 
2101
+ #: includes/admin/settings.php:1776 includes/admin/tools/repair.php:43
2102
+ #: includes/admin/tools/reset.php:23 includes/admin/tools/upgrade.php:40
2103
  msgid "Forum Tools"
2104
  msgstr ""
2105
 
 
 
 
 
2106
  #: includes/admin/settings.php:1787
2107
  msgid "Toggle panel: Import Status"
2108
  msgstr ""
2330
  msgid "Possible %1$s conflict: %2$s"
2331
  msgstr ""
2332
 
2333
+ #: includes/admin/tools/common.php:258
2334
  msgid "Search Tools:"
2335
  msgstr ""
2336
 
2337
+ #: includes/admin/tools/common.php:260
2338
  msgid "Search Tools"
2339
  msgstr ""
2340
 
2341
+ #: includes/admin/tools/common.php:286
2342
  msgid "Filter by Component"
2343
  msgstr ""
2344
 
2345
+ #: includes/admin/tools/common.php:288
2346
  msgid "All Components"
2347
  msgstr ""
2348
 
2349
+ #: includes/admin/tools/common.php:372
2350
+ msgid "Filter by Version"
2351
+ msgstr ""
2352
+
2353
+ #: includes/admin/tools/common.php:374
2354
+ msgid "All Versions"
2355
  msgstr ""
2356
 
2357
+ #: includes/admin/tools/common.php:402
2358
  msgid "Low"
2359
  msgstr ""
2360
 
2361
+ #: includes/admin/tools/common.php:405
2362
  msgid "Medium"
2363
  msgstr ""
2364
 
2365
+ #: includes/admin/tools/common.php:408
2366
  msgid "High"
2367
  msgstr ""
2368
 
2369
+ #: includes/admin/tools/common.php:431 includes/admin/tools/common.php:446
2370
  msgid "Users"
2371
  msgstr ""
2372
 
2373
+ #: includes/admin/tools/common.php:443 includes/topics/template.php:3378
2374
+ #: includes/topics/template.php:3379
2375
  #: templates/default/bbpress/content-statistics.php:40
2376
  msgid "Topic Tags"
2377
  msgstr ""
2378
 
2379
+ #: includes/admin/tools/common.php:479
2380
+ msgid "2.5.0"
2381
+ msgstr ""
2382
+
2383
+ #: includes/admin/tools/common.php:483
2384
+ msgid "2.6.0"
2385
+ msgstr ""
2386
+
2387
+ #: includes/admin/tools/common.php:800 includes/admin/tools/common.php:924
2388
  msgid "All %s"
2389
  msgstr ""
2390
 
2391
+ #: includes/admin/tools/common.php:925
2392
+ msgid "Pending %s"
2393
+ msgstr ""
2394
+
2395
+ #: includes/admin/tools/help.php:30 includes/admin/tools.php:523
2396
  msgid "Repair Forums"
2397
  msgstr ""
2398
 
2424
  "Repair Forums</a>."
2425
  msgstr ""
2426
 
2427
+ #: includes/admin/tools/help.php:66 includes/admin/tools.php:550
 
2428
  msgid "Reset Forums"
2429
  msgstr ""
2430
 
2491
  "without removing your existing forum data."
2492
  msgstr ""
2493
 
2494
+ #: includes/admin/tools/repair.php:47
2495
  msgid ""
2496
  "bbPress keeps track of relationships between forums, topics, replies, "
2497
  "topic-tags, favorites, subscriptions, and users. Occasionally these "
2499
  "Use the tools below to manually recalculate these relationships."
2500
  msgstr ""
2501
 
2502
+ #: includes/admin/tools/repair.php:48
2503
  msgid ""
2504
  "Some of these tools create substantial database overhead. Use caution when "
2505
  "running more than 1 repair at a time."
2506
  msgstr ""
2507
 
2508
+ #: includes/admin/tools/repair.php:61 includes/admin/tools/repair.php:178
2509
+ #: includes/admin/tools/upgrade.php:58 includes/admin/tools/upgrade.php:190
2510
  msgid "Select bulk action"
2511
  msgstr ""
2512
 
2513
+ #: includes/admin/tools/repair.php:64 includes/admin/tools/repair.php:126
2514
+ #: includes/admin/tools/repair.php:181 includes/admin/tools/upgrade.php:61
2515
+ #: includes/admin/tools/upgrade.php:130 includes/admin/tools/upgrade.php:193
2516
  msgid "Run"
2517
  msgstr ""
2518
 
2519
+ #: includes/admin/tools/repair.php:66 includes/admin/tools/repair.php:183
2520
+ #: includes/admin/tools/upgrade.php:63 includes/admin/tools/upgrade.php:195
2521
  msgid "Apply"
2522
  msgstr ""
2523
 
2524
+ #: includes/admin/tools/repair.php:72 includes/admin/tools/upgrade.php:71
2525
+ msgid "Filter"
2526
+ msgstr ""
2527
+
2528
+ #: includes/admin/tools/repair.php:81 includes/admin/tools/repair.php:166
2529
+ #: includes/admin/tools/upgrade.php:80 includes/admin/tools/upgrade.php:177
2530
  msgid "Select All"
2531
  msgstr ""
2532
 
2533
+ #: includes/admin/tools/repair.php:89 includes/admin/tools/repair.php:116
2534
+ #: includes/admin/tools/repair.php:170 includes/admin/tools/upgrade.php:88
2535
+ #: includes/admin/tools/upgrade.php:120 includes/admin/tools/upgrade.php:181
2536
  msgid "Description"
2537
  msgstr ""
2538
 
2539
+ #: includes/admin/tools/repair.php:93 includes/admin/tools/repair.php:133
2540
+ #: includes/admin/tools/repair.php:171 includes/admin/tools/upgrade.php:98
2541
+ #: includes/admin/tools/upgrade.php:144 includes/admin/tools/upgrade.php:183
2542
  msgid "Components"
2543
  msgstr ""
2544
 
2545
+ #: includes/admin/tools/repair.php:99 includes/admin/tools/repair.php:140
2546
+ #: includes/admin/tools/repair.php:172 includes/admin/tools/upgrade.php:103
2547
+ #: includes/admin/tools/upgrade.php:151 includes/admin/tools/upgrade.php:184
2548
  msgid "Overhead"
2549
  msgstr ""
2550
 
2551
+ #: includes/admin/tools/repair.php:126 includes/admin/tools/upgrade.php:130
2552
  msgid "Run %s"
2553
  msgstr ""
2554
 
2555
+ #: includes/admin/tools/repair.php:130 includes/admin/tools/upgrade.php:134
2556
  msgid "Show more details"
2557
  msgstr ""
2558
 
2559
+ #: includes/admin/tools/repair.php:155 includes/admin/tools/upgrade.php:166
2560
  msgid "No repair tools match this criteria."
2561
  msgstr ""
2562
 
2563
+ #: includes/admin/tools/repair.php:203
2564
  msgid "Counting the number of replies in each topic&hellip; %s"
2565
  msgstr ""
2566
 
2567
+ #: includes/admin/tools/repair.php:204 includes/admin/tools/repair.php:253
2568
+ #: includes/admin/tools/repair.php:305 includes/admin/tools/repair.php:339
2569
+ #: includes/admin/tools/repair.php:370 includes/admin/tools/repair.php:415
2570
+ #: includes/admin/tools/repair.php:457 includes/admin/tools/repair.php:498
2571
+ #: includes/admin/tools/repair.php:546 includes/admin/tools/repair.php:594
2572
+ #: includes/admin/tools/repair.php:661 includes/admin/tools/repair.php:726
2573
+ #: includes/admin/tools/repair.php:795 includes/admin/tools/repair.php:903
2574
+ #: includes/admin/tools/repair.php:1024 includes/admin/tools/repair.php:1136
2575
+ #: includes/admin/tools/repair.php:1156 includes/admin/tools/repair.php:1207
2576
+ #: includes/admin/tools/reset.php:122 includes/admin/tools/upgrade.php:288
2577
  msgid "Failed!"
2578
  msgstr ""
2579
 
2580
+ #: includes/admin/tools/repair.php:238 includes/admin/tools/repair.php:290
2581
+ #: includes/admin/tools/repair.php:324 includes/admin/tools/repair.php:356
2582
+ #: includes/admin/tools/repair.php:400 includes/admin/tools/repair.php:441
2583
+ #: includes/admin/tools/repair.php:483 includes/admin/tools/repair.php:531
2584
+ #: includes/admin/tools/repair.php:579 includes/admin/tools/repair.php:646
2585
+ #: includes/admin/tools/repair.php:711 includes/admin/tools/repair.php:776
2586
+ #: includes/admin/tools/repair.php:1009 includes/admin/tools/repair.php:1069
2587
+ #: includes/admin/tools/repair.php:1140 includes/admin/tools/repair.php:1192
2588
+ #: includes/admin/tools/repair.php:1243 includes/admin/tools/repair.php:1294
2589
  msgid "Complete!"
2590
  msgstr ""
2591
 
2592
+ #: includes/admin/tools/repair.php:252
2593
  msgid "Counting the number of voices in each topic&hellip; %s"
2594
  msgstr ""
2595
 
2596
+ #: includes/admin/tools/repair.php:304
2597
  msgid ""
2598
  "Counting the number of pending, spammed, and trashed replies in each "
2599
  "topic&hellip; %s"
2600
  msgstr ""
2601
 
2602
+ #: includes/admin/tools/repair.php:338
2603
  msgid "Counting the number of topics in each forum&hellip; %s"
2604
  msgstr ""
2605
 
2606
+ #: includes/admin/tools/repair.php:369
2607
  msgid "Counting the number of topics in each topic-tag&hellip; %s"
2608
  msgstr ""
2609
 
2610
+ #: includes/admin/tools/repair.php:414
2611
  msgid "Counting the number of replies in each forum&hellip; %s"
2612
  msgstr ""
2613
 
2614
+ #: includes/admin/tools/repair.php:456
2615
+ msgid ""
2616
+ "Counting the number of pending, spammed, and trashed replies in each "
2617
+ "forum&hellip; %s"
2618
+ msgstr ""
2619
+
2620
+ #: includes/admin/tools/repair.php:497
2621
  msgid "Counting the number of topics each user has created&hellip; %s"
2622
  msgstr ""
2623
 
2624
+ #: includes/admin/tools/repair.php:545
2625
  msgid "Counting the number of topics to which each user has replied&hellip; %s"
2626
  msgstr ""
2627
 
2628
+ #: includes/admin/tools/repair.php:593
2629
  msgid "Removing unpublished topics from user favorites&hellip; %s"
2630
  msgstr ""
2631
 
2632
+ #: includes/admin/tools/repair.php:629 includes/admin/tools/repair.php:694
2633
+ #: includes/admin/tools/repair.php:759
2634
  msgid "Nothing to remove!"
2635
  msgstr ""
2636
 
2637
+ #: includes/admin/tools/repair.php:660
2638
  msgid "Removing trashed topics from user subscriptions&hellip; %s"
2639
  msgstr ""
2640
 
2641
+ #: includes/admin/tools/repair.php:725
2642
  msgid "Removing trashed forums from user subscriptions&hellip; %s"
2643
  msgstr ""
2644
 
2645
+ #: includes/admin/tools/repair.php:788
2646
  msgid "Remapping forum role for each user on this site&hellip; %s"
2647
  msgstr ""
2648
 
2649
+ #: includes/admin/tools/repair.php:886
2650
  msgid "Complete! %s users updated."
2651
  msgstr ""
2652
 
2653
+ #: includes/admin/tools/repair.php:902
2654
  msgid "Recomputing latest post in every topic and forum&hellip; %s"
2655
  msgstr ""
2656
 
2657
+ #: includes/admin/tools/repair.php:1023
2658
  msgid "Repairing the sticky topic to the parent forum relationships&hellip; %s"
2659
  msgstr ""
2660
 
2661
+ #: includes/admin/tools/repair.php:1088
2662
  msgid "Repairing closed topics&hellip; %s"
2663
  msgstr ""
2664
 
2665
+ #: includes/admin/tools/repair.php:1089
2666
  msgid "No closed topics to repair."
2667
  msgstr ""
2668
 
2669
+ #: includes/admin/tools/repair.php:1119
2670
  msgid "Complete! %d closed topic repaired."
2671
  msgid_plural "Complete! %d closed topics repaired."
2672
  msgstr[0] ""
2673
  msgstr[1] ""
2674
 
2675
+ #: includes/admin/tools/repair.php:1132
2676
  msgid "Recalculating forum visibility&hellip; %s"
2677
  msgstr ""
2678
 
2679
+ #: includes/admin/tools/repair.php:1155
2680
  msgid "Recalculating the forum for each post&hellip; %s"
2681
  msgstr ""
2682
 
2683
+ #: includes/admin/tools/repair.php:1206
2684
  msgid "Recalculating the topic for each post&hellip; %s"
2685
  msgstr ""
2686
 
2687
+ #: includes/admin/tools/repair.php:1257
2688
  msgid "Recalculating reply menu order&hellip; %s"
2689
  msgstr ""
2690
 
2691
+ #: includes/admin/tools/repair.php:1258
2692
  msgid "No reply positions to recalculate."
2693
  msgstr ""
2694
 
2695
+ #: includes/admin/tools/reset.php:26
2696
  msgid ""
2697
  "Revert your forums back to a brand new installation, as if bbPress were "
2698
  "never installed. This process cannot be undone."
2699
  msgstr ""
2700
 
2701
+ #: includes/admin/tools/reset.php:32
2702
  msgid "The following data will be removed:"
2703
  msgstr ""
2704
 
2705
+ #: includes/admin/tools/reset.php:34 includes/forums/template.php:51
 
2706
  msgid "All Forums"
2707
  msgstr ""
2708
 
2709
+ #: includes/admin/tools/reset.php:35 includes/topics/functions.php:3756
2710
+ #: includes/topics/template.php:50
2711
  msgid "All Topics"
2712
  msgstr ""
2713
 
2714
+ #: includes/admin/tools/reset.php:36 includes/replies/functions.php:2125
2715
+ #: includes/replies/template.php:52
2716
  msgid "All Replies"
2717
  msgstr ""
2718
 
2719
+ #: includes/admin/tools/reset.php:37
2720
  msgid "All Topic Tags"
2721
  msgstr ""
2722
 
2723
+ #: includes/admin/tools/reset.php:38
2724
  msgid "All Meta Data"
2725
  msgstr ""
2726
 
2727
+ #: includes/admin/tools/reset.php:39
2728
  msgid "Forum Settings"
2729
  msgstr ""
2730
 
2731
+ #: includes/admin/tools/reset.php:40
2732
  msgid "Forum Activity"
2733
  msgstr ""
2734
 
2735
+ #: includes/admin/tools/reset.php:41
2736
  msgid "Forum User Roles"
2737
  msgstr ""
2738
 
2739
+ #: includes/admin/tools/reset.php:43
2740
  msgid "Importer Helper Data"
2741
  msgstr ""
2742
 
2743
+ #: includes/admin/tools/reset.php:47
2744
  msgid "Delete imported users?"
2745
  msgstr ""
2746
 
2747
+ #: includes/admin/tools/reset.php:50 includes/admin/tools/reset.php:60
2748
  msgid "Say it ain't so!"
2749
  msgstr ""
2750
 
2751
+ #: includes/admin/tools/reset.php:51
2752
  msgid "This option will delete all previously imported users, and cannot be undone."
2753
  msgstr ""
2754
 
2755
+ #: includes/admin/tools/reset.php:52
2756
  msgid ""
2757
  "Proceeding without this checked removes the meta-data necessary to delete "
2758
  "these users later."
2759
  msgstr ""
2760
 
2761
+ #: includes/admin/tools/reset.php:57
2762
  msgid "Do you really want to do this?"
2763
  msgstr ""
2764
 
2765
+ #: includes/admin/tools/reset.php:61
2766
  #: templates/default/bbpress/form-reply-move.php:76
2767
  #: templates/default/bbpress/form-topic-merge.php:98
2768
  #: templates/default/bbpress/form-topic-split.php:102
2769
  msgid "This process cannot be undone."
2770
  msgstr ""
2771
 
2772
+ #: includes/admin/tools/reset.php:62
2773
  msgid "Backup your database before proceeding."
2774
  msgstr ""
2775
 
2776
+ #: includes/admin/tools/reset.php:70
2777
  msgid "Reset bbPress"
2778
  msgstr ""
2779
 
2780
+ #: includes/admin/tools/reset.php:119
2781
  msgid "Resetting&hellip;"
2782
  msgstr ""
2783
 
2784
+ #: includes/admin/tools/reset.php:121
2785
  msgid "Success!"
2786
  msgstr ""
2787
 
2788
+ #: includes/admin/tools/reset.php:123
2789
  msgid "Skipped."
2790
  msgstr ""
2791
 
2792
+ #: includes/admin/tools/reset.php:182
2793
  msgid "Removing Forums, Topics, and Replies&hellip; %s"
2794
  msgstr ""
2795
 
2796
+ #: includes/admin/tools/reset.php:190
2797
  msgid "Removing Forum, Topic, and Reply Meta Data&hellip; %s"
2798
  msgstr ""
2799
 
2800
+ #: includes/admin/tools/reset.php:199
2801
  msgid "Removing Revision Data&hellip; %s"
2802
  msgstr ""
2803
 
2804
+ #: includes/admin/tools/reset.php:208
2805
  msgid "Deleting Topic Tags&hellip; %s"
2806
  msgstr ""
2807
 
2808
+ #: includes/admin/tools/reset.php:227
2809
  msgid "Deleting Imported Users&hellip; %s"
2810
  msgstr ""
2811
 
2812
+ #: includes/admin/tools/reset.php:233
2813
  msgid "Deleting Imported User Meta&hellip; %s"
2814
  msgstr ""
2815
 
2816
+ #: includes/admin/tools/reset.php:241
2817
  msgid "Deleting bbPress Specific User Meta&hellip; %s"
2818
  msgstr ""
2819
 
2820
+ #: includes/admin/tools/reset.php:250
2821
  msgid "Dropping Conversion Table&hellip; %s"
2822
  msgstr ""
2823
 
2824
+ #: includes/admin/tools/reset.php:257
2825
  msgid "Deleting Settings&hellip; Success!"
2826
  msgstr ""
2827
 
2828
+ #: includes/admin/tools/reset.php:263
2829
  msgid "Removing Roles and Capabilities&hellip; Success!"
2830
  msgstr ""
2831
 
2832
+ #: includes/admin/tools/upgrade.php:44
 
 
 
 
2833
  msgid ""
2834
  "As bbPress improves, occasionally database upgrades are required but some "
2835
  "forums are too large to upgrade automatically. Use the tools below to "
2836
  "manually run upgrade routines."
2837
  msgstr ""
2838
 
2839
+ #: includes/admin/tools/upgrade.php:45
2840
  msgid ""
2841
  "Some of these tools create substantial database overhead. Use caution when "
2842
  "running more than 1 upgrade at a time."
2843
  msgstr ""
2844
 
2845
+ #: includes/admin/tools/upgrade.php:95 includes/admin/tools/upgrade.php:137
2846
+ #: includes/admin/tools/upgrade.php:182
2847
+ msgid "Version"
2848
+ msgstr ""
2849
+
2850
+ #: includes/admin/tools/upgrade.php:215
2851
  msgid "Upgrading user engagements&hellip; %s"
2852
  msgstr ""
2853
 
2854
+ #: includes/admin/tools/upgrade.php:216
2855
  msgid "No engagements to upgrade."
2856
  msgstr ""
2857
 
2858
+ #: includes/admin/tools/upgrade.php:249
2859
  msgid "Complete! %d engagements upgraded."
2860
  msgid_plural "Complete! %d engagements upgraded."
2861
  msgstr[0] ""
2862
  msgstr[1] ""
2863
 
2864
+ #: includes/admin/tools/upgrade.php:267
2865
  msgid "Upgrading BuddyPress group-forum relationships&hellip; %s"
2866
  msgstr ""
2867
 
2868
+ #: includes/admin/tools/upgrade.php:372
2869
  msgid "group-forums"
2870
  msgstr ""
2871
 
2872
+ #: includes/admin/tools/upgrade.php:388
2873
  msgid "Complete! %s groups updated; %s forums updated; %s forum statuses synced."
2874
  msgstr ""
2875
 
2876
+ #: includes/admin/tools/upgrade.php:403
2877
  msgid "Upgrading user favorites&hellip; %s"
2878
  msgstr ""
2879
 
2880
+ #: includes/admin/tools/upgrade.php:404
2881
  msgid "No favorites to upgrade."
2882
  msgstr ""
2883
 
2884
+ #: includes/admin/tools/upgrade.php:447
2885
  msgid "Complete! %d favorite upgraded."
2886
  msgid_plural "Complete! %d favorites upgraded."
2887
  msgstr[0] ""
2888
  msgstr[1] ""
2889
 
2890
+ #: includes/admin/tools/upgrade.php:463
2891
  msgid "Upgrading user topic subscriptions&hellip; %s"
2892
  msgstr ""
2893
 
2894
+ #: includes/admin/tools/upgrade.php:464
2895
  msgid "No topic subscriptions to upgrade."
2896
  msgstr ""
2897
 
2898
+ #: includes/admin/tools/upgrade.php:507
2899
  msgid "Complete! %d topic subscription upgraded."
2900
  msgid_plural "Complete! %d topic subscriptions upgraded."
2901
  msgstr[0] ""
2902
  msgstr[1] ""
2903
 
2904
+ #: includes/admin/tools/upgrade.php:523
2905
  msgid "Upgrading user forum subscriptions&hellip; %s"
2906
  msgstr ""
2907
 
2908
+ #: includes/admin/tools/upgrade.php:524
2909
  msgid "No forum subscriptions to upgrade."
2910
  msgstr ""
2911
 
2912
+ #: includes/admin/tools/upgrade.php:567
2913
  msgid "Complete! %d forum subscription upgraded."
2914
  msgid_plural "Complete! %d forum subscriptions upgraded."
2915
  msgstr[0] ""
2916
  msgstr[1] ""
2917
 
2918
+ #: includes/admin/tools/upgrade.php:583
2919
  msgid "Remove favorites from usermeta&hellip; %s"
2920
  msgstr ""
2921
 
2922
+ #: includes/admin/tools/upgrade.php:584
2923
  msgid "No favorites to remove."
2924
  msgstr ""
2925
 
2926
+ #: includes/admin/tools/upgrade.php:603
2927
  msgid "Complete! %d favorites deleted."
2928
  msgid_plural "Complete! %d favorites deleted."
2929
  msgstr[0] ""
2930
  msgstr[1] ""
2931
 
2932
+ #: includes/admin/tools/upgrade.php:619
2933
  msgid "Remove topic subscriptions from usermeta&hellip; %s"
2934
  msgstr ""
2935
 
2936
+ #: includes/admin/tools/upgrade.php:620
2937
  msgid "No topic subscriptions to remove."
2938
  msgstr ""
2939
 
2940
+ #: includes/admin/tools/upgrade.php:639
2941
  msgid "Complete! %d topic subscription deleted."
2942
  msgid_plural "Complete! %d topic subscriptions deleted."
2943
  msgstr[0] ""
2944
  msgstr[1] ""
2945
 
2946
+ #: includes/admin/tools/upgrade.php:655
2947
  msgid "Remove forum subscriptions from usermeta&hellip; %s"
2948
  msgstr ""
2949
 
2950
+ #: includes/admin/tools/upgrade.php:656
2951
  msgid "No forum subscriptions to remove."
2952
  msgstr ""
2953
 
2954
+ #: includes/admin/tools/upgrade.php:675
2955
  msgid "Complete! %d forum subscription deleted."
2956
  msgid_plural "Complete! %d forum subscriptions deleted."
2957
  msgstr[0] ""
2961
  msgid "bbPress provides the following tools to help you manage your forums:"
2962
  msgstr ""
2963
 
2964
+ #: includes/admin/tools.php:78
2965
  msgid "The repair was completed successfully"
2966
  msgstr ""
2967
 
2968
+ #: includes/admin/tools.php:79
2969
  msgid "The repair was not successful"
2970
  msgstr ""
2971
 
2972
+ #: includes/admin/tools.php:115
2973
  msgid "Recalculate parent topic for each reply"
2974
  msgstr ""
2975
 
2976
+ #: includes/admin/tools.php:116
2977
  msgid "Run this if replies appear in the wrong topics."
2978
  msgstr ""
2979
 
2980
+ #: includes/admin/tools.php:127
2981
  msgid "Recalculate parent forum for each topic and reply"
2982
  msgstr ""
2983
 
2984
+ #: includes/admin/tools.php:128
2985
  msgid "Run this if topics or replies appear in the wrong forums."
2986
  msgstr ""
2987
 
2988
+ #: includes/admin/tools.php:139
2989
  msgid "Recalculate private and hidden forums"
2990
  msgstr ""
2991
 
2992
+ #: includes/admin/tools.php:140
2993
  msgid "Run this if non-public forums are publicly visible."
2994
  msgstr ""
2995
 
2996
+ #: includes/admin/tools.php:151
2997
  msgid "Recalculate last activity in each topic and forum"
2998
  msgstr ""
2999
 
3000
+ #: includes/admin/tools.php:152
3001
  msgid "Run this if freshness appears incorrectly."
3002
  msgstr ""
3003
 
3004
+ #: includes/admin/tools.php:163
3005
  msgid "Recalculate sticky relationship of each topic"
3006
  msgstr ""
3007
 
3008
+ #: includes/admin/tools.php:164
3009
  msgid "Run this if sticky topics appear incorrectly."
3010
  msgstr ""
3011
 
3012
+ #: includes/admin/tools.php:175
3013
  msgid "Recalculate position of each reply in each topic"
3014
  msgstr ""
3015
 
3016
+ #: includes/admin/tools.php:176
3017
  msgid "Run this if replies appear in the wrong order."
3018
  msgstr ""
3019
 
3020
+ #: includes/admin/tools.php:187
3021
  msgid "Recalculate engagements in each topic for each user"
3022
  msgstr ""
3023
 
3024
+ #: includes/admin/tools.php:188
3025
  msgid "Run this if voices appear incorrectly."
3026
  msgstr ""
3027
 
3028
+ #: includes/admin/tools.php:199
3029
  msgid "Repair closed topic statuses"
3030
  msgstr ""
3031
 
3032
+ #: includes/admin/tools.php:200
3033
  msgid "Run this if closed topics appear incorrectly."
3034
  msgstr ""
3035
 
3036
+ #: includes/admin/tools.php:211
3037
  msgid "Recount topics in each forum"
3038
  msgstr ""
3039
 
3040
+ #: includes/admin/tools.php:212
3041
  msgid "Run this if the number of topics in any forums are incorrect."
3042
  msgstr ""
3043
 
3044
+ #: includes/admin/tools.php:223
3045
  msgid "Recount topics in each topic-tag"
3046
  msgstr ""
3047
 
3048
+ #: includes/admin/tools.php:224
3049
  msgid "Run this if the number of topics in any topic-tags are incorrect."
3050
  msgstr ""
3051
 
3052
+ #: includes/admin/tools.php:235
3053
  msgid "Recount replies in each forum"
3054
  msgstr ""
3055
 
3056
+ #: includes/admin/tools.php:236
3057
  msgid "Run this if the number of replies in any forums are incorrect."
3058
  msgstr ""
3059
 
3060
+ #: includes/admin/tools.php:247
3061
+ msgid "Recount pending, spammed, and trashed replies in each forum"
3062
+ msgstr ""
3063
+
3064
+ #: includes/admin/tools.php:248
3065
+ msgid "Run this if non-public replies display incorrectly in forums."
3066
+ msgstr ""
3067
+
3068
+ #: includes/admin/tools.php:259
3069
  msgid "Recount replies in each topic"
3070
  msgstr ""
3071
 
3072
+ #: includes/admin/tools.php:260
3073
  msgid "Run this if the number of topics in any topics are incorrect."
3074
  msgstr ""
3075
 
3076
+ #: includes/admin/tools.php:271
3077
  msgid "Recount pending, spammed, and trashed replies in each topic"
3078
  msgstr ""
3079
 
3080
+ #: includes/admin/tools.php:272
3081
+ msgid "Run this if non-public replies display incorrectly in topics."
3082
  msgstr ""
3083
 
3084
+ #: includes/admin/tools.php:283
3085
  msgid "Recount topics for each user"
3086
  msgstr ""
3087
 
3088
+ #: includes/admin/tools.php:284
3089
  msgid "Run this to get fresh topic counts for all users."
3090
  msgstr ""
3091
 
3092
+ #: includes/admin/tools.php:295
3093
  msgid "Recount replies for each user"
3094
  msgstr ""
3095
 
3096
+ #: includes/admin/tools.php:296
3097
  msgid "Run this to get fresh reply counts for all users."
3098
  msgstr ""
3099
 
3100
+ #: includes/admin/tools.php:307
3101
  msgid "Remove unpublished topics from user favorites"
3102
  msgstr ""
3103
 
3104
+ #: includes/admin/tools.php:308
3105
  msgid "Run this to remove trashed or deleted topics from all user favorites."
3106
  msgstr ""
3107
 
3108
+ #: includes/admin/tools.php:319
3109
  msgid "Remove unpublished topics from user subscriptions"
3110
  msgstr ""
3111
 
3112
+ #: includes/admin/tools.php:320
3113
  msgid "Run this to remove trashed or deleted topics from all user subscriptions."
3114
  msgstr ""
3115
 
3116
+ #: includes/admin/tools.php:331
3117
  msgid "Remove unpublished forums from user subscriptions"
3118
  msgstr ""
3119
 
3120
+ #: includes/admin/tools.php:332
3121
  msgid "Run this to remove trashed or deleted forums from all user subscriptions."
3122
  msgstr ""
3123
 
3124
+ #: includes/admin/tools.php:343
3125
  msgid "Remap all users to default forum roles"
3126
  msgstr ""
3127
 
3128
+ #: includes/admin/tools.php:344
3129
  msgid "Run this if users have issues accessing the forums."
3130
  msgstr ""
3131
 
3132
+ #: includes/admin/tools.php:355
3133
  msgid "Upgrade user topic engagements"
3134
  msgstr ""
3135
 
3136
+ #: includes/admin/tools.php:356
3137
+ msgid "Copies engagements from user meta to topic meta."
 
3138
  msgstr ""
3139
 
3140
+ #: includes/admin/tools.php:368
3141
  msgid "Upgrade user topic favorites"
3142
  msgstr ""
3143
 
3144
+ #: includes/admin/tools.php:369
3145
+ msgid "Copies favorites from user meta to topic meta."
3146
+ msgstr ""
3147
+
3148
+ #: includes/admin/tools.php:381
3149
  msgid "Upgrade user topic subscriptions"
3150
  msgstr ""
3151
 
3152
+ #: includes/admin/tools.php:382
3153
+ msgid "Copies topic subscriptions from user meta to topic meta."
3154
+ msgstr ""
3155
+
3156
+ #: includes/admin/tools.php:394
3157
  msgid "Upgrade user forum subscriptions"
3158
  msgstr ""
3159
 
3160
+ #: includes/admin/tools.php:395
3161
+ msgid "Copies forum subscriptions from user meta to forum meta."
3162
+ msgstr ""
3163
+
3164
+ #: includes/admin/tools.php:407
3165
  msgid "Remove favorites from user-meta"
3166
  msgstr ""
3167
 
3168
+ #: includes/admin/tools.php:408
3169
+ msgid "Run this to delete old data (after confirming successful favorites upgrade)"
 
 
3170
  msgstr ""
3171
 
3172
+ #: includes/admin/tools.php:420
3173
  msgid "Remove topic subscriptions from user-meta"
3174
  msgstr ""
3175
 
3176
+ #: includes/admin/tools.php:421
3177
  msgid ""
3178
+ "Run this to delete old data (after confirming successful topic "
3179
+ "subscriptions upgrade)"
3180
  msgstr ""
3181
 
3182
+ #: includes/admin/tools.php:433
3183
  msgid "Remove forum subscriptions from user-meta"
3184
  msgstr ""
3185
 
3186
+ #: includes/admin/tools.php:434
3187
  msgid ""
3188
+ "Run this to delete old data (after confirming successful forum "
3189
+ "subscriptions upgrade)"
3190
  msgstr ""
3191
 
3192
+ #: includes/admin/tools.php:446
3193
  msgid "Upgrade BuddyPress Group Forum relationships"
3194
  msgstr ""
3195
 
3196
+ #: includes/admin/tools.php:447
3197
  msgid "Run this if you just upgraded BuddyPress Forums from Legacy."
3198
  msgstr ""
3199
 
3200
+ #: includes/admin/tools.php:450
3201
+ msgid "Any"
3202
+ msgstr ""
3203
+
3204
+ #: includes/admin/tools.php:532
3205
+ msgid "Upgrade Forums"
3206
+ msgstr ""
3207
+
3208
+ #: includes/admin/tools.php:541
3209
+ msgid "Import Forums"
3210
+ msgstr ""
3211
+
3212
  #: includes/admin/topics.php:121
3213
  msgid ""
3214
  "This screen displays the individual topics on your site. You can customize "
3358
  msgstr ""
3359
 
3360
  #: includes/admin/topics.php:204 includes/admin/topics.php:341
3361
+ #: includes/topics/template.php:67
3362
  msgid "Topic Attributes"
3363
  msgstr ""
3364
 
3490
  msgid "Voices"
3491
  msgstr ""
3492
 
3493
+ #: includes/admin/topics.php:935 includes/topics/template.php:1988
3494
  msgid "No Replies"
3495
  msgstr ""
3496
 
3514
  msgid "Unstick this topic"
3515
  msgstr ""
3516
 
3517
+ #: includes/admin/topics.php:1013 includes/topics/template.php:2689
3518
  msgid "Unstick"
3519
  msgstr ""
3520
 
3522
  msgid "Stick this topic to its forum"
3523
  msgstr ""
3524
 
3525
+ #: includes/admin/topics.php:1016 includes/topics/template.php:2688
3526
  msgid "Stick"
3527
  msgstr ""
3528
 
3530
  msgid "Stick this topic to front"
3531
  msgstr ""
3532
 
3533
+ #: includes/admin/topics.php:1016 includes/topics/template.php:2690
3534
  msgid "(to front)"
3535
  msgstr ""
3536
 
3543
  msgstr ""
3544
 
3545
  #: includes/admin/topics.php:1175 includes/admin/topics.php:1187
3546
+ #: includes/topics/template.php:78
3547
  msgid "Topic updated."
3548
  msgstr ""
3549
 
3595
  msgid "Site Role"
3596
  msgstr ""
3597
 
3598
+ #: includes/common/classes.php:493 includes/replies/template.php:2564
3599
  msgid "%1$s - %2$s"
3600
  msgstr ""
3601
 
3653
  msgstr[0] ""
3654
  msgstr[1] ""
3655
 
3656
+ #: includes/common/functions.php:402 includes/common/functions.php:460
3657
  msgid "Pending: %s"
3658
  msgstr ""
3659
 
3660
+ #: includes/common/functions.php:406 includes/common/functions.php:463
3661
  msgid "Private: %s"
3662
  msgstr ""
3663
 
3664
+ #: includes/common/functions.php:410 includes/common/functions.php:467
3665
  msgid "Spammed: %s"
3666
  msgstr ""
3667
 
3668
+ #: includes/common/functions.php:414 includes/common/functions.php:471
3669
  msgid "Trashed: %s"
3670
  msgstr ""
3671
 
3672
+ #: includes/common/functions.php:555
3673
  msgid "<strong>ERROR</strong>: Invalid author name."
3674
  msgstr ""
3675
 
3676
+ #: includes/common/functions.php:561
3677
  msgid "<strong>ERROR</strong>: Invalid email address."
3678
  msgstr ""
3679
 
3680
+ #: includes/common/functions.php:1100
3681
  msgid ""
3682
  "%1$s wrote:\n"
3683
  "\n"
3692
  "Login and visit the topic to unsubscribe from these emails."
3693
  msgstr ""
3694
 
3695
+ #: includes/common/functions.php:1267
3696
  msgid ""
3697
  "%1$s wrote:\n"
3698
  "\n"
3707
  "Login and visit the topic to unsubscribe from these emails."
3708
  msgstr ""
3709
 
3710
+ #: includes/common/template.php:1563
3711
  msgid "No topics available"
3712
  msgstr ""
3713
 
3714
+ #: includes/common/template.php:1568
3715
  msgid "No forums available"
3716
  msgstr ""
3717
 
3718
+ #: includes/common/template.php:1573
3719
  msgid "None available"
3720
  msgstr ""
3721
 
3722
+ #: includes/common/template.php:2187
3723
  msgid "Home"
3724
  msgstr ""
3725
 
3726
+ #: includes/common/template.php:2257
3727
  msgid "(Edit)"
3728
  msgstr ""
3729
 
3730
+ #: includes/common/template.php:2261 includes/common/template.php:2376
3731
+ #: includes/common/template.php:2621 includes/core/theme-compat.php:794
3732
  #: templates/default/extras/taxonomy-topic-tag-edit.php:17
3733
  #: templates/default/extras/taxonomy-topic-tag.php:17
3734
  msgid "Topic Tag: %s"
3735
  msgstr ""
3736
 
3737
+ #: includes/common/template.php:2282
3738
  msgid "&lsaquo;"
3739
  msgstr ""
3740
 
3741
+ #: includes/common/template.php:2282
3742
  msgid "&rsaquo;"
3743
  msgstr ""
3744
 
3745
+ #: includes/common/template.php:2545
3746
  msgid "Log Out"
3747
  msgstr ""
3748
 
3749
+ #: includes/common/template.php:2585
3750
  msgid "Forum Edit: %s"
3751
  msgstr ""
3752
 
3753
+ #: includes/common/template.php:2590
3754
  msgid "Topic Edit: %s"
3755
  msgstr ""
3756
 
3757
+ #: includes/common/template.php:2595
3758
  msgid "Reply Edit: %s"
3759
  msgstr ""
3760
 
3761
+ #: includes/common/template.php:2600
3762
  msgid "Topic Tag Edit: %s"
3763
  msgstr ""
3764
 
3765
+ #: includes/common/template.php:2607
3766
  msgid "Forum: %s"
3767
  msgstr ""
3768
 
3769
+ #: includes/common/template.php:2612
3770
  msgid "Topic: %s"
3771
  msgstr ""
3772
 
3773
+ #: includes/common/template.php:2634
3774
  msgid "Your Topics"
3775
  msgstr ""
3776
 
3777
+ #: includes/common/template.php:2638
3778
  #. translators: user's display name
3779
  msgid "%s's Topics"
3780
  msgstr ""
3781
 
3782
+ #: includes/common/template.php:2644
3783
  msgid "Your Replies"
3784
  msgstr ""
3785
 
3786
+ #: includes/common/template.php:2648
3787
  #. translators: user's display name
3788
  msgid "%s's Replies"
3789
  msgstr ""
3790
 
3791
+ #: includes/common/template.php:2654
3792
  msgid "Your Favorites"
3793
  msgstr ""
3794
 
3795
+ #: includes/common/template.php:2658
3796
  #: templates/default/bbpress/user-details.php:57
3797
  #. translators: user's display name
3798
  msgid "%s's Favorites"
3799
  msgstr ""
3800
 
3801
+ #: includes/common/template.php:2664
3802
  msgid "Your Subscriptions"
3803
  msgstr ""
3804
 
3805
+ #: includes/common/template.php:2668
3806
  #: templates/default/bbpress/user-details.php:67
3807
  #. translators: user's display name
3808
  msgid "%s's Subscriptions"
3809
  msgstr ""
3810
 
3811
+ #: includes/common/template.php:2674
3812
  msgid "Your Profile"
3813
  msgstr ""
3814
 
3815
+ #: includes/common/template.php:2678
3816
  #: templates/default/bbpress/user-details.php:30
3817
  #. translators: user's display name
3818
  msgid "%s's Profile"
3819
  msgstr ""
3820
 
3821
+ #: includes/common/template.php:2687
3822
  msgid "Edit Your Profile"
3823
  msgstr ""
3824
 
3825
+ #: includes/common/template.php:2692
3826
  #: templates/default/bbpress/user-details.php:74
3827
  msgid "Edit %s's Profile"
3828
  msgstr ""
3829
 
3830
+ #: includes/common/template.php:2700
3831
  msgid "View: %s"
3832
  msgstr ""
3833
 
4136
  #: includes/extend/buddypress/groups.php:557
4137
  #: includes/extend/buddypress/notifications.php:196
4138
  #: includes/forums/functions.php:126 includes/forums/functions.php:393
4139
+ #: includes/replies/functions.php:134 includes/replies/functions.php:517
4140
+ #: includes/replies/functions.php:1238 includes/topics/functions.php:105
4141
+ #: includes/topics/functions.php:468 includes/topics/functions.php:1092
4142
+ #: includes/topics/functions.php:1367 includes/topics/functions.php:1703
4143
+ #: includes/topics/functions.php:1747 includes/topics/functions.php:1808
4144
+ #: includes/users/engagements.php:612 includes/users/engagements.php:853
4145
  #: includes/users/functions.php:196 includes/users/functions.php:202
4146
  #: includes/users/functions.php:382
4147
  msgid "<strong>ERROR</strong>: Are you sure you wanted to do that?"
4160
  msgstr ""
4161
 
4162
  #: includes/extend/buddypress/loader.php:356
4163
+ #: templates/default/bbpress/user-subscriptions.php:38
4164
  msgid "Subscribed Topics"
4165
  msgstr ""
4166
 
4195
  msgstr ""
4196
 
4197
  #: includes/forums/functions.php:170 includes/forums/functions.php:459
4198
+ #: includes/replies/functions.php:284 includes/replies/functions.php:601
4199
  #: includes/topics/functions.php:163 includes/topics/functions.php:535
4200
  msgid "<strong>ERROR</strong>: Your title is too long."
4201
  msgstr ""
4230
  "capability to read or create new forums in it."
4231
  msgstr ""
4232
 
4233
+ #: includes/forums/functions.php:228 includes/replies/functions.php:304
4234
  #: includes/topics/functions.php:247
4235
  msgid "<strong>ERROR</strong>: Slow down; you move too fast."
4236
  msgstr ""
4243
  msgid "<strong>ERROR</strong>: Your forum cannot be created at this time."
4244
  msgstr ""
4245
 
4246
+ #: includes/forums/functions.php:353 includes/replies/functions.php:474
4247
  #: includes/topics/functions.php:400
4248
  msgid "<strong>ERROR</strong>: The following problem(s) occurred: %s"
4249
  msgstr ""
4317
  msgid "Parent Forum:"
4318
  msgstr ""
4319
 
4320
+ #: includes/forums/template.php:69
4321
  msgid "Insert into forum"
4322
  msgstr ""
4323
 
4324
+ #: includes/forums/template.php:70
4325
  msgid "Uploaded to this forum"
4326
  msgstr ""
4327
 
4328
+ #: includes/forums/template.php:71
4329
  msgid "Forum Image"
4330
  msgstr ""
4331
 
4332
+ #: includes/forums/template.php:72
4333
  msgid "Set forum image"
4334
  msgstr ""
4335
 
4336
+ #: includes/forums/template.php:73
4337
  msgid "Remove forum image"
4338
  msgstr ""
4339
 
4340
+ #: includes/forums/template.php:74
4341
  msgid "Use as forum image"
4342
  msgstr ""
4343
 
4344
+ #: includes/forums/template.php:75
4345
+ msgid "Forum published."
4346
+ msgstr ""
4347
+
4348
  #: includes/forums/template.php:76
4349
+ msgid "Forum published privately."
4350
  msgstr ""
4351
 
4352
  #: includes/forums/template.php:77
4353
+ msgid "Forum reverted to draft."
4354
  msgstr ""
4355
 
4356
  #: includes/forums/template.php:78
4357
+ msgid "Forum scheduled."
4358
  msgstr ""
4359
 
4360
+ #: includes/forums/template.php:833 includes/topics/template.php:1781
4361
  #: includes/users/template.php:1273
4362
  msgid "Subscribe"
4363
  msgstr ""
4364
 
4365
+ #: includes/forums/template.php:834 includes/topics/template.php:1782
4366
  #: includes/users/template.php:1274
4367
  msgid "Unsubscribe"
4368
  msgstr ""
4369
 
4370
+ #: includes/forums/template.php:1170 includes/forums/template.php:2012
4371
  msgid "%s topic"
4372
  msgid_plural "%s topics"
4373
  msgstr[0] ""
4374
  msgstr[1] ""
4375
 
4376
+ #: includes/forums/template.php:1185 includes/topics/template.php:2031
4377
  msgid "(+%s hidden)"
4378
  msgid_plural "(+%s hidden)"
4379
  msgstr[0] ""
4380
  msgstr[1] ""
4381
 
4382
+ #: includes/forums/template.php:2001 includes/topics/template.php:2016
4383
  msgid "%s reply"
4384
  msgid_plural "%s replies"
4385
  msgstr[0] ""
4386
  msgstr[1] ""
4387
 
4388
+ #: includes/forums/template.php:2021
4389
  msgid "This category has %1$s, %2$s, and was last updated %3$s by %4$s."
4390
  msgstr ""
4391
 
4392
+ #: includes/forums/template.php:2022
4393
  msgid "This forum has %1$s, %2$s, and was last updated %3$s by %4$s."
4394
  msgstr ""
4395
 
4396
+ #: includes/forums/template.php:2027
4397
  msgid "This category has %1$s, and was last updated %2$s by %3$s."
4398
  msgstr ""
4399
 
4400
+ #: includes/forums/template.php:2028
4401
  msgid "This forum has %1$s, and was last updated %2$s by %3$s."
4402
  msgstr ""
4403
 
4404
+ #: includes/forums/template.php:2034
4405
  msgid "This category has %1$s and %2$s."
4406
  msgstr ""
4407
 
4408
+ #: includes/forums/template.php:2035
4409
  msgid "This forum has %1$s and %2$s."
4410
  msgstr ""
4411
 
4412
+ #: includes/forums/template.php:2040
4413
  msgid "This category has %1$s."
4414
  msgstr ""
4415
 
4416
+ #: includes/forums/template.php:2041
4417
  msgid "This forum has %1$s."
4418
  msgstr ""
4419
 
4420
+ #: includes/forums/template.php:2045
4421
  msgid "This forum is empty."
4422
  msgstr ""
4423
 
4424
+ #: includes/replies/functions.php:159
4425
  msgid "<strong>ERROR</strong>: You do not have permission to reply."
4426
  msgstr ""
4427
 
4428
+ #: includes/replies/functions.php:170
4429
  msgid "<strong>ERROR</strong>: Topic ID is missing."
4430
  msgstr ""
4431
 
4432
+ #: includes/replies/functions.php:174
4433
  msgid "<strong>ERROR</strong>: Topic ID must be a number."
4434
  msgstr ""
4435
 
4436
+ #: includes/replies/functions.php:184
4437
  msgid "<strong>ERROR</strong>: Topic ID cannot be a negative number."
4438
  msgstr ""
4439
 
4440
+ #: includes/replies/functions.php:188
4441
  msgid "<strong>ERROR</strong>: Topic does not exist."
4442
  msgstr ""
4443
 
4444
+ #: includes/replies/functions.php:207 includes/replies/functions.php:221
4445
  #: includes/topics/functions.php:187 includes/topics/functions.php:201
4446
  #: includes/topics/functions.php:483
4447
  msgid "<strong>ERROR</strong>: Forum ID is missing."
4448
  msgstr ""
4449
 
4450
+ #: includes/replies/functions.php:211 includes/topics/functions.php:191
4451
  msgid "<strong>ERROR</strong>: Forum ID must be a number."
4452
  msgstr ""
4453
 
4454
+ #: includes/replies/functions.php:225 includes/topics/functions.php:205
4455
  msgid "<strong>ERROR</strong>: Forum ID cannot be a negative number."
4456
  msgstr ""
4457
 
4458
+ #: includes/replies/functions.php:229 includes/topics/functions.php:209
4459
  msgid "<strong>ERROR</strong>: Forum does not exist."
4460
  msgstr ""
4461
 
4462
+ #: includes/replies/functions.php:243 includes/replies/functions.php:569
4463
  msgid ""
4464
  "<strong>ERROR</strong>: This forum is a category. No replies can be created "
4465
  "in this forum."
4466
  msgstr ""
4467
 
4468
+ #: includes/replies/functions.php:250 includes/replies/functions.php:576
4469
  msgid "<strong>ERROR</strong>: This forum has been closed to new replies."
4470
  msgstr ""
4471
 
4472
+ #: includes/replies/functions.php:255 includes/replies/functions.php:581
4473
  msgid ""
4474
  "<strong>ERROR</strong>: This forum is private and you do not have the "
4475
  "capability to read or create new replies in it."
4476
  msgstr ""
4477
 
4478
+ #: includes/replies/functions.php:259 includes/replies/functions.php:585
4479
  msgid ""
4480
  "<strong>ERROR</strong>: This forum is hidden and you do not have the "
4481
  "capability to read or create new replies in it."
4482
  msgstr ""
4483
 
4484
+ #: includes/replies/functions.php:298 includes/replies/functions.php:615
4485
  msgid "<strong>ERROR</strong>: Your reply cannot be empty."
4486
  msgstr ""
4487
 
4488
+ #: includes/replies/functions.php:310
4489
  msgid ""
4490
  "<strong>ERROR</strong>: Duplicate reply detected; it looks as though "
4491
  "you&#8217;ve already said that."
4492
  msgstr ""
4493
 
4494
+ #: includes/replies/functions.php:316
4495
  msgid "<strong>ERROR</strong>: Your reply cannot be created at this time."
4496
  msgstr ""
4497
 
4498
+ #: includes/replies/functions.php:341
4499
  msgid "<strong>ERROR</strong>: Topic is closed."
4500
  msgstr ""
4501
 
4502
+ #: includes/replies/functions.php:401 includes/replies/functions.php:711
4503
  msgid "<strong>ERROR</strong>: There was a problem adding the tags to the topic."
4504
  msgstr ""
4505
 
4506
+ #: includes/replies/functions.php:478
4507
  msgid "<strong>ERROR</strong>: The reply was not created."
4508
  msgstr ""
4509
 
4510
+ #: includes/replies/functions.php:506
4511
  msgid "<strong>ERROR</strong>: Reply ID not found."
4512
  msgstr ""
4513
 
4514
+ #: includes/replies/functions.php:523
4515
  msgid "<strong>ERROR</strong>: The reply you want to edit was not found."
4516
  msgstr ""
4517
 
4518
+ #: includes/replies/functions.php:534
4519
  msgid "<strong>ERROR</strong>: You do not have permission to edit that reply."
4520
  msgstr ""
4521
 
4522
+ #: includes/replies/functions.php:621
4523
  msgid "<strong>ERROR</strong>: Your reply cannot be edited at this time."
4524
  msgstr ""
4525
 
4526
+ #: includes/replies/functions.php:1214
4527
  msgid "<strong>ERROR</strong>: A reply ID is required"
4528
  msgstr ""
4529
 
4530
+ #: includes/replies/functions.php:1223
4531
  msgid "<strong>ERROR</strong>: The reply you want to move was not found."
4532
  msgstr ""
4533
 
4534
+ #: includes/replies/functions.php:1233
4535
  msgid "<strong>ERROR</strong>: The topic you want to move from was not found."
4536
  msgstr ""
4537
 
4538
+ #: includes/replies/functions.php:1244 includes/topics/functions.php:1103
4539
+ #: includes/topics/functions.php:1373
4540
  msgid "<strong>ERROR</strong>: You do not have permission to edit the source topic."
4541
  msgstr ""
4542
 
4543
+ #: includes/replies/functions.php:1254
4544
  msgid "<strong>ERROR</strong>: You need to choose a valid move option."
4545
  msgstr ""
4546
 
4547
+ #: includes/replies/functions.php:1267 includes/topics/functions.php:1396
4548
  msgid "<strong>ERROR</strong>: A topic ID is required."
4549
  msgstr ""
4550
 
4551
+ #: includes/replies/functions.php:1277
4552
  msgid "<strong>ERROR</strong>: The topic you want to move to was not found."
4553
  msgstr ""
4554
 
4555
+ #: includes/replies/functions.php:1282 includes/topics/functions.php:1123
4556
+ #: includes/topics/functions.php:1411
4557
  msgid ""
4558
  "<strong>ERROR</strong>: You do not have permission to edit the destination "
4559
  "topic."
4560
  msgstr ""
4561
 
4562
+ #: includes/replies/functions.php:1336 includes/topics/functions.php:1449
4563
  msgid ""
4564
  "<strong>ERROR</strong>: There was a problem converting the reply into the "
4565
  "topic. Please try again."
4566
  msgstr ""
4567
 
4568
+ #: includes/replies/functions.php:1341 includes/topics/functions.php:1454
4569
  msgid ""
4570
  "<strong>ERROR</strong>: You do not have permission to create new topics. "
4571
  "The reply could not be converted into a topic."
4572
  msgstr ""
4573
 
4574
+ #: includes/replies/functions.php:1489
4575
  msgid "<strong>ERROR:</strong> This reply could not be found or no longer exists."
4576
  msgstr ""
4577
 
4578
+ #: includes/replies/functions.php:1495 includes/topics/functions.php:2025
4579
  msgid "<strong>ERROR:</strong> You do not have permission to do that."
4580
  msgstr ""
4581
 
4582
+ #: includes/replies/functions.php:1571
4583
  msgid "<strong>ERROR</strong>: There was a problem approving the reply."
4584
  msgstr ""
4585
 
4586
+ #: includes/replies/functions.php:1571
4587
  msgid "<strong>ERROR</strong>: There was a problem unapproving the reply."
4588
  msgstr ""
4589
 
4590
+ #: includes/replies/functions.php:1582
4591
  msgid "<strong>ERROR</strong>: There was a problem unmarking the reply as spam."
4592
  msgstr ""
4593
 
4594
+ #: includes/replies/functions.php:1582
4595
  msgid "<strong>ERROR</strong>: There was a problem marking the reply as spam."
4596
  msgstr ""
4597
 
4598
+ #: includes/replies/functions.php:1597
4599
  msgid "<strong>ERROR</strong>: There was a problem trashing the reply."
4600
  msgstr ""
4601
 
4602
+ #: includes/replies/functions.php:1605
4603
  msgid "<strong>ERROR</strong>: There was a problem untrashing the reply."
4604
  msgstr ""
4605
 
4606
+ #: includes/replies/functions.php:1613
4607
  msgid "<strong>ERROR</strong>: There was a problem deleting the reply."
4608
  msgstr ""
4609
 
4610
+ #: includes/replies/functions.php:2123
4611
  msgid "All Posts"
4612
  msgstr ""
4613
 
4614
+ #: includes/replies/functions.php:2169 includes/topics/functions.php:3800
4615
  msgid "Replies: %s"
4616
  msgstr ""
4617
 
4663
  msgid "Parent Topic:"
4664
  msgstr ""
4665
 
4666
+ #: includes/replies/template.php:68
4667
  msgid "Forum Replies"
4668
  msgstr ""
4669
 
4670
+ #: includes/replies/template.php:70
4671
  msgid "Insert into reply"
4672
  msgstr ""
4673
 
4674
+ #: includes/replies/template.php:71
4675
  msgid "Uploaded to this reply"
4676
  msgstr ""
4677
 
4678
+ #: includes/replies/template.php:72
4679
  msgid "Reply Image"
4680
  msgstr ""
4681
 
4682
+ #: includes/replies/template.php:73
4683
  msgid "Set reply image"
4684
  msgstr ""
4685
 
4686
+ #: includes/replies/template.php:74
4687
  msgid "Remove reply image"
4688
  msgstr ""
4689
 
4690
+ #: includes/replies/template.php:75
4691
  msgid "Use as reply image"
4692
  msgstr ""
4693
 
4694
+ #: includes/replies/template.php:76
4695
+ msgid "Reply published."
4696
+ msgstr ""
4697
+
4698
  #: includes/replies/template.php:77
4699
+ msgid "Reply published privately."
4700
  msgstr ""
4701
 
4702
  #: includes/replies/template.php:78
4703
+ msgid "Reply reverted to draft."
4704
  msgstr ""
4705
 
4706
  #: includes/replies/template.php:79
4707
+ msgid "Reply scheduled."
4708
  msgstr ""
4709
 
4710
+ #: includes/replies/template.php:551
4711
  #: templates/default/bbpress/form-reply.php:30
4712
  msgid "Reply To: %s"
4713
  msgstr ""
4714
 
4715
+ #: includes/replies/template.php:763
4716
  msgid "This reply was modified %1$s by %2$s. Reason: %3$s"
4717
  msgstr ""
4718
 
4719
+ #: includes/replies/template.php:765
4720
  msgid "This reply was modified %1$s by %2$s."
4721
  msgstr ""
4722
 
4723
+ #: includes/replies/template.php:1195 includes/topics/template.php:1429
4724
  #: includes/users/template.php:1999
4725
  msgid "View %s's profile"
4726
  msgstr ""
4727
 
4728
+ #: includes/replies/template.php:1196 includes/topics/template.php:1430
4729
  #: includes/users/template.php:2000
4730
  msgid "Visit %s's website"
4731
  msgstr ""
4732
 
4733
+ #: includes/replies/template.php:1652
4734
  #: templates/default/bbpress/form-user-passwords.php:31
4735
  msgid "Cancel"
4736
  msgstr ""
4737
 
4738
+ #: includes/replies/template.php:1962 includes/topics/template.php:2517
4739
  #: templates/default/bbpress/form-topic-tag.php:100
4740
  #: templates/default/bbpress/form-topic-tag.php:117
4741
  msgid "Delete"
4742
  msgstr ""
4743
 
4744
+ #: includes/replies/template.php:1987 includes/topics/template.php:2538
4745
  msgid "Are you sure you want to delete that permanently?"
4746
  msgstr ""
4747
 
4748
+ #: includes/replies/template.php:2084
4749
  msgid "Move"
4750
  msgstr ""
4751
 
4752
+ #: includes/replies/template.php:2085
4753
  msgid "Move this reply"
4754
  msgstr ""
4755
 
4756
+ #: includes/replies/template.php:2143
4757
  msgid "Split"
4758
  msgstr ""
4759
 
4760
+ #: includes/replies/template.php:2144
4761
  msgid "Split the topic from this reply"
4762
  msgstr ""
4763
 
4764
+ #: includes/replies/template.php:2378
4765
  msgid "Viewing %1$s reply thread"
4766
  msgid_plural "Viewing %1$s reply threads"
4767
  msgstr[0] ""
4768
  msgstr[1] ""
4769
 
4770
+ #: includes/replies/template.php:2385
4771
  msgid "Viewing %1$s reply"
4772
  msgid_plural "Viewing %1$s replies"
4773
  msgstr[0] ""
4774
  msgstr[1] ""
4775
 
4776
+ #: includes/replies/template.php:2389
4777
  msgid "Viewing %2$s replies (of %4$s total)"
4778
  msgid_plural "Viewing %1$s replies - %2$s through %3$s (of %4$s total)"
4779
  msgstr[0] ""
4780
  msgstr[1] ""
4781
 
4782
+ #: includes/replies/template.php:2397
4783
  msgid "Viewing %1$s post"
4784
  msgid_plural "Viewing %1$s posts"
4785
  msgstr[0] ""
4786
  msgstr[1] ""
4787
 
4788
+ #: includes/replies/template.php:2401
4789
  msgid "Viewing %2$s post (of %4$s total)"
4790
  msgid_plural "Viewing %1$s posts - %2$s through %3$s (of %4$s total)"
4791
  msgstr[0] ""
4795
  msgid "Search Results for '%s'"
4796
  msgstr ""
4797
 
4798
+ #: includes/search/template.php:411
4799
  msgid "Viewing %1$s result"
4800
  msgid_plural "Viewing %1$s results"
4801
  msgstr[0] ""
4802
  msgstr[1] ""
4803
 
4804
+ #: includes/search/template.php:415
4805
  msgid "Viewing %2$s results (of %4$s total)"
4806
  msgid_plural "Viewing %1$s results - %2$s through %3$s (of %4$s total)"
4807
  msgstr[0] ""
4855
  msgid "<strong>ERROR</strong>: The topic was not created."
4856
  msgstr ""
4857
 
4858
+ #: includes/topics/functions.php:430 includes/topics/functions.php:1085
4859
  msgid "<strong>ERROR</strong>: Topic ID not found."
4860
  msgstr ""
4861
 
4877
  msgid "<strong>ERROR</strong>: Your topic cannot be edited at this time."
4878
  msgstr ""
4879
 
4880
+ #: includes/topics/functions.php:1097
4881
  msgid "<strong>ERROR</strong>: The topic you want to merge was not found."
4882
  msgstr ""
4883
 
4884
+ #: includes/topics/functions.php:1111
4885
  msgid "<strong>ERROR</strong>: Destination topic ID not found."
4886
  msgstr ""
4887
 
4888
+ #: includes/topics/functions.php:1118
4889
  msgid "<strong>ERROR</strong>: The topic you want to merge to was not found."
4890
  msgstr ""
4891
 
4892
+ #: includes/topics/functions.php:1343
4893
  msgid "<strong>ERROR</strong>: A reply ID is required."
4894
  msgstr ""
4895
 
4896
+ #: includes/topics/functions.php:1352
4897
  msgid "<strong>ERROR</strong>: The reply you want to split from was not found."
4898
  msgstr ""
4899
 
4900
+ #: includes/topics/functions.php:1362
4901
  msgid "<strong>ERROR</strong>: The topic you want to split was not found."
4902
  msgstr ""
4903
 
4904
+ #: includes/topics/functions.php:1383
4905
  msgid "<strong>ERROR</strong>: You need to choose a valid split option."
4906
  msgstr ""
4907
 
4908
+ #: includes/topics/functions.php:1406
4909
  msgid "<strong>ERROR</strong>: The topic you want to split to was not found."
4910
  msgstr ""
4911
 
4912
+ #: includes/topics/functions.php:1691
4913
  msgid ""
4914
  "<strong>ERROR</strong>: The following problem(s) have been found while "
4915
  "getting the tag: %s"
4916
  msgstr ""
4917
 
4918
+ #: includes/topics/functions.php:1709 includes/topics/functions.php:1753
4919
  msgid "<strong>ERROR</strong>: You do not have permission to edit the topic tags."
4920
  msgstr ""
4921
 
4922
+ #: includes/topics/functions.php:1715 includes/topics/functions.php:1759
4923
  msgid "<strong>ERROR</strong>: You need to enter a tag name."
4924
  msgstr ""
4925
 
4926
+ #: includes/topics/functions.php:1730
4927
  msgid ""
4928
  "<strong>ERROR</strong>: The following problem(s) have been found while "
4929
  "updating the tag: %s"
4930
  msgstr ""
4931
 
4932
+ #: includes/topics/functions.php:1770 includes/topics/functions.php:1791
4933
  msgid ""
4934
  "<strong>ERROR</strong>: The following problem(s) have been found while "
4935
  "merging the tags: %s"
4936
  msgstr ""
4937
 
4938
+ #: includes/topics/functions.php:1779
4939
  msgid "<strong>ERROR</strong>: The tags which are being merged can not be the same."
4940
  msgstr ""
4941
 
4942
+ #: includes/topics/functions.php:1814
4943
  msgid "<strong>ERROR</strong>: You do not have permission to delete the topic tags."
4944
  msgstr ""
4945
 
4946
+ #: includes/topics/functions.php:1823
4947
  msgid ""
4948
  "<strong>ERROR</strong>: The following problem(s) have been found while "
4949
  "deleting the tag: %s"
4950
  msgstr ""
4951
 
4952
+ #: includes/topics/functions.php:2019
4953
  msgid "<strong>ERROR:</strong> This topic could not be found or no longer exists."
4954
  msgstr ""
4955
 
4956
+ #: includes/topics/functions.php:2109
4957
  msgid "<strong>ERROR</strong>: There was a problem approving the topic."
4958
  msgstr ""
4959
 
4960
+ #: includes/topics/functions.php:2110
4961
  msgid "<strong>ERROR</strong>: There was a problem unapproving the topic."
4962
  msgstr ""
4963
 
4964
+ #: includes/topics/functions.php:2127
4965
  msgid "<strong>ERROR</strong>: There was a problem closing the topic."
4966
  msgstr ""
4967
 
4968
+ #: includes/topics/functions.php:2128
4969
  msgid "<strong>ERROR</strong>: There was a problem opening the topic."
4970
  msgstr ""
4971
 
4972
+ #: includes/topics/functions.php:2146
4973
  msgid "<strong>ERROR</strong>: There was a problem unsticking the topic."
4974
  msgstr ""
4975
 
4976
+ #: includes/topics/functions.php:2147
4977
  msgid "<strong>ERROR</strong>: There was a problem sticking the topic."
4978
  msgstr ""
4979
 
4980
+ #: includes/topics/functions.php:2165
4981
  msgid "<strong>ERROR</strong>: There was a problem unmarking the topic as spam."
4982
  msgstr ""
4983
 
4984
+ #: includes/topics/functions.php:2166
4985
  msgid "<strong>ERROR</strong>: There was a problem marking the topic as spam."
4986
  msgstr ""
4987
 
4988
+ #: includes/topics/functions.php:2179
4989
  msgid "<strong>ERROR</strong>: There was a problem trashing the topic."
4990
  msgstr ""
4991
 
4992
+ #: includes/topics/functions.php:2190
4993
  msgid "<strong>ERROR</strong>: There was a problem untrashing the topic."
4994
  msgstr ""
4995
 
4996
+ #: includes/topics/functions.php:2199
4997
  msgid "<strong>ERROR</strong>: There was a problem deleting the topic."
4998
  msgstr ""
4999
 
5041
  msgid "Topics list navigation"
5042
  msgstr ""
5043
 
5044
+ #: includes/topics/template.php:66
5045
  msgid "Forum Topics"
5046
  msgstr ""
5047
 
5048
+ #: includes/topics/template.php:68
5049
  msgid "Insert into topic"
5050
  msgstr ""
5051
 
5052
+ #: includes/topics/template.php:69
5053
  msgid "Uploaded to this topic"
5054
  msgstr ""
5055
 
5056
+ #: includes/topics/template.php:70
5057
  msgid "Topic Image"
5058
  msgstr ""
5059
 
5060
+ #: includes/topics/template.php:71
5061
  msgid "Set topic image"
5062
  msgstr ""
5063
 
5064
+ #: includes/topics/template.php:72
5065
  msgid "Remove topic image"
5066
  msgstr ""
5067
 
5068
+ #: includes/topics/template.php:73
5069
  msgid "Use as topic image"
5070
  msgstr ""
5071
 
5072
+ #: includes/topics/template.php:74
5073
+ msgid "Topic published."
5074
+ msgstr ""
5075
+
5076
  #: includes/topics/template.php:75
5077
+ msgid "Topic published privately."
5078
  msgstr ""
5079
 
5080
  #: includes/topics/template.php:76
5081
+ msgid "Topic reverted to draft."
5082
  msgstr ""
5083
 
5084
  #: includes/topics/template.php:77
5085
+ msgid "Topic scheduled."
5086
  msgstr ""
5087
 
5088
+ #: includes/topics/template.php:928
5089
  msgid "This topic was modified %1$s by %2$s. Reason: %3$s"
5090
  msgstr ""
5091
 
5092
+ #: includes/topics/template.php:930
5093
  msgid "This topic was modified %1$s by %2$s."
5094
  msgstr ""
5095
 
5096
+ #: includes/topics/template.php:1829 includes/users/template.php:1075
5097
  msgid "Favorite"
5098
  msgstr ""
5099
 
5100
+ #: includes/topics/template.php:1830 includes/users/template.php:1076
5101
  msgid "Unfavorite"
5102
  msgstr ""
5103
 
5104
+ #: includes/topics/template.php:2195
5105
  msgid "Tagged:"
5106
  msgstr ""
5107
 
5108
+ #: includes/topics/template.php:2756
5109
  #: templates/default/bbpress/form-topic-tag.php:69
5110
  #: templates/default/bbpress/form-topic-tag.php:85
5111
  msgid "Merge"
5112
  msgstr ""
5113
 
5114
+ #: includes/topics/template.php:2988
5115
  msgid "Viewing %1$s topic"
5116
  msgid_plural "Viewing %1$s topics"
5117
  msgstr[0] ""
5118
  msgstr[1] ""
5119
 
5120
+ #: includes/topics/template.php:2992
5121
  msgid "Viewing topic %2$s (of %4$s total)"
5122
  msgid_plural "Viewing %1$s topics - %2$s through %3$s (of %4$s total)"
5123
  msgstr[0] ""
5124
  msgstr[1] ""
5125
 
5126
+ #: includes/topics/template.php:3049
5127
  msgid "This topic is marked as spam."
5128
  msgstr ""
5129
 
5130
+ #: includes/topics/template.php:3054
5131
  msgid "This topic is in the trash."
5132
  msgstr ""
5133
 
5134
+ #: includes/topics/template.php:3059 includes/topics/template.php:3327
5135
+ msgid "This topic is pending moderation."
5136
+ msgstr ""
5137
+
5138
+ #: includes/topics/template.php:3309
5139
  msgid "%s voice"
5140
  msgid_plural "%s voices"
5141
  msgstr[0] ""
5142
  msgstr[1] ""
5143
 
5144
+ #: includes/topics/template.php:3315
5145
  msgid "This topic has %1$s, %2$s, and was last updated %3$s by %4$s."
5146
  msgstr ""
5147
 
5148
+ #: includes/topics/template.php:3319
5149
  msgid "This topic has %1$s and %2$s."
5150
  msgstr ""
5151
 
5152
+ #: includes/topics/template.php:3323
5153
  msgid "This topic has no replies."
5154
  msgstr ""
5155
 
5156
+ #: includes/topics/template.php:3331
5157
+ msgid "This topic is empty."
5158
+ msgstr ""
5159
+
5160
+ #: includes/topics/template.php:3381
5161
  msgid "Search Tags"
5162
  msgstr ""
5163
 
5164
+ #: includes/topics/template.php:3382
5165
  msgid "Popular Tags"
5166
  msgstr ""
5167
 
5168
+ #: includes/topics/template.php:3383
5169
  msgid "All Tags"
5170
  msgstr ""
5171
 
5172
+ #: includes/topics/template.php:3384
5173
  msgid "Parent Tag"
5174
  msgstr ""
5175
 
5176
+ #: includes/topics/template.php:3385
5177
  msgid "Parent Tag:"
5178
  msgstr ""
5179
 
5180
+ #: includes/topics/template.php:3386
5181
  msgid "Edit Tag"
5182
  msgstr ""
5183
 
5184
+ #: includes/topics/template.php:3387
5185
  msgid "View Topic Tag"
5186
  msgstr ""
5187
 
5188
+ #: includes/topics/template.php:3388
5189
  msgid "Update Tag"
5190
  msgstr ""
5191
 
5192
+ #: includes/topics/template.php:3389
5193
  msgid "Add New Tag"
5194
  msgstr ""
5195
 
5196
+ #: includes/topics/template.php:3390
5197
  msgid "New Tag Name"
5198
  msgstr ""
5199
 
5200
+ #: includes/topics/template.php:3391
5201
  msgid "Separate topic tags with commas"
5202
  msgstr ""
5203
 
5204
+ #: includes/topics/template.php:3392
5205
  msgid "Add or remove tags"
5206
  msgstr ""
5207
 
5208
+ #: includes/topics/template.php:3393
5209
  msgid "Choose from the most used tags"
5210
  msgstr ""
5211
 
5212
+ #: includes/topics/template.php:3394
5213
  msgid "No topic tags found."
5214
  msgstr ""
5215
 
5216
+ #: includes/topics/template.php:3395
5217
  msgid "No topic tags"
5218
  msgstr ""
5219
 
5220
+ #: includes/topics/template.php:3396
5221
  msgid "Topic tags list navigation"
5222
  msgstr ""
5223
 
5224
+ #: includes/topics/template.php:3397
5225
  msgid "Topic tags list"
5226
  msgstr ""
5227
 
5228
+ #: includes/topics/template.php:3398
5229
  msgid "Most used topic tags"
5230
  msgstr ""
5231
 
5232
+ #: includes/topics/template.php:3399
5233
  msgid "&larr; Back to Tags"
5234
  msgstr ""
5235
 
5236
+ #: includes/topics/template.php:4014
5237
  msgid "Nobody"
5238
  msgstr ""
5239
 
5240
+ #: includes/topics/template.php:4018
5241
  msgid "%1$s is currently editing this topic."
5242
  msgstr ""
5243
 
5244
+ #: includes/users/engagements.php:608
5245
  msgid ""
5246
  "<strong>ERROR</strong>: No topic was found. Which topic are you "
5247
  "marking/unmarking as favorite?"
5248
  msgstr ""
5249
 
5250
+ #: includes/users/engagements.php:616
5251
  msgid ""
5252
  "<strong>ERROR</strong>: You do not have permission to edit favorites for "
5253
  "that user!."
5254
  msgstr ""
5255
 
5256
+ #: includes/users/engagements.php:657
5257
  msgid ""
5258
  "<strong>ERROR</strong>: There was a problem removing that topic from "
5259
  "favorites."
5260
  msgstr ""
5261
 
5262
+ #: includes/users/engagements.php:659
5263
  msgid "<strong>ERROR</strong>: There was a problem favoriting that topic."
5264
  msgstr ""
5265
 
5266
+ #: includes/users/engagements.php:849
5267
  msgid ""
5268
  "<strong>ERROR</strong>: Not found. What are you subscribing/unsubscribing "
5269
  "to?"
5270
  msgstr ""
5271
 
5272
+ #: includes/users/engagements.php:857
5273
  msgid ""
5274
  "<strong>ERROR</strong>: You do not have permission to edit subscriptions of "
5275
  "that user."
5276
  msgstr ""
5277
 
5278
+ #: includes/users/engagements.php:900
5279
  msgid "<strong>ERROR</strong>: There was a problem unsubscribing."
5280
  msgstr ""
5281
 
5282
+ #: includes/users/engagements.php:902
5283
  msgid "<strong>ERROR</strong>: There was a problem subscribing."
5284
  msgstr ""
5285
 
6024
  msgid "Subscribed Forums"
6025
  msgstr ""
6026
 
 
 
 
 
 
 
 
 
6027
  #: templates/default/bbpress/user-topics-created.php:19
6028
  msgid "Forum Topics Started"
6029
  msgstr ""
6143
  msgstr[0] ""
6144
  msgstr[1] ""
6145
 
6146
+ #: includes/admin/classes/class-bbp-admin.php:829
6147
  msgctxt "admin color scheme"
6148
  msgid "Mint"
6149
  msgstr ""
6150
 
6151
+ #: includes/admin/classes/class-bbp-admin.php:838
6152
  msgctxt "admin color scheme"
6153
  msgid "Evergreen"
6154
  msgstr ""
6255
  msgid "Discussion Forum"
6256
  msgstr ""
6257
 
6258
+ #: includes/forums/functions.php:2067
6259
  msgctxt "Open the forum"
6260
  msgid "Open"
6261
  msgstr ""
6262
 
6263
+ #: includes/forums/functions.php:2068
6264
  msgctxt "Close the forum"
6265
  msgid "Closed"
6266
  msgstr ""
6267
 
6268
+ #: includes/forums/functions.php:2085
6269
  msgctxt "Forum accepts new topics"
6270
  msgid "Forum"
6271
  msgstr ""
6272
 
6273
+ #: includes/forums/functions.php:2086
6274
  msgctxt "Forum is a category"
6275
  msgid "Category"
6276
  msgstr ""
6277
 
6278
+ #: includes/forums/functions.php:2106
6279
  msgctxt "Make forum public"
6280
  msgid "Public"
6281
  msgstr ""
6282
 
6283
+ #: includes/forums/functions.php:2107
6284
  msgctxt "Make forum private"
6285
  msgid "Private"
6286
  msgstr ""
6287
 
6288
+ #: includes/forums/functions.php:2108
6289
  msgctxt "Make forum hidden"
6290
  msgid "Hidden"
6291
  msgstr ""
6292
 
6293
+ #: includes/replies/functions.php:1645
6294
  msgctxt "Publish the reply"
6295
  msgid "Publish"
6296
  msgstr ""
6297
 
6298
+ #: includes/replies/functions.php:1646
6299
  msgctxt "Spam the reply"
6300
  msgid "Spam"
6301
  msgstr ""
6302
 
6303
+ #: includes/replies/functions.php:1647
6304
  msgctxt "Trash the reply"
6305
  msgid "Trash"
6306
  msgstr ""
6307
 
6308
+ #: includes/replies/functions.php:1648
6309
  msgctxt "Mark reply as pending"
6310
  msgid "Pending"
6311
  msgstr ""
6312
 
6313
+ #: includes/replies/template.php:673 includes/topics/template.php:765
6314
  msgctxt "date at time"
6315
  msgid "%1$s at %2$s"
6316
  msgstr ""
6317
 
6318
+ #: includes/replies/template.php:1579 includes/topics/template.php:2853
6319
  msgctxt "verb"
6320
  msgid "Reply"
6321
  msgstr ""
6322
 
6323
+ #: includes/replies/template.php:2200
6324
  msgctxt "Pending Status"
6325
  msgid "Approve"
6326
  msgstr ""
6327
 
6328
+ #: includes/replies/template.php:2201
6329
  msgctxt "Pending Status"
6330
  msgid "Unapprove"
6331
  msgstr ""
6332
 
6333
+ #: includes/replies/template.php:2563
6334
  msgctxt "Default reply to dropdown text"
6335
  msgid "None"
6336
  msgstr ""
6337
 
6338
+ #: includes/topics/functions.php:1858 includes/topics/template.php:2581
6339
  msgctxt "Open the topic"
6340
  msgid "Open"
6341
  msgstr ""
6342
 
6343
+ #: includes/topics/functions.php:1859
6344
  msgctxt "Close the topic"
6345
  msgid "Closed"
6346
  msgstr ""
6347
 
6348
+ #: includes/topics/template.php:2580
6349
  msgctxt "Close the topic"
6350
  msgid "Close"
6351
  msgstr ""
6352
 
6353
+ #: includes/topics/functions.php:1860
6354
  msgctxt "Spam the topic"
6355
  msgid "Spam"
6356
  msgstr ""
6357
 
6358
+ #: includes/topics/functions.php:1861
6359
  msgctxt "Trash the topic"
6360
  msgid "Trash"
6361
  msgstr ""
6362
 
6363
+ #: includes/topics/functions.php:1862
6364
  msgctxt "Unapprove the topic"
6365
  msgid "Pending"
6366
  msgstr ""
6367
 
6368
+ #: includes/topics/template.php:2635
6369
  msgctxt "Unapprove the topic"
6370
  msgid "Unapprove"
6371
  msgstr ""
6372
 
6373
+ #: includes/topics/functions.php:1879
6374
  msgctxt "Unstick a topic"
6375
  msgid "Normal"
6376
  msgstr ""
6377
 
6378
+ #: includes/topics/functions.php:1880
6379
  msgctxt "Make topic sticky"
6380
  msgid "Sticky"
6381
  msgstr ""
6382
 
6383
+ #: includes/topics/functions.php:1881
6384
  msgctxt "Make topic super sticky"
6385
  msgid "Super Sticky"
6386
  msgstr ""
6387
 
6388
+ #: includes/topics/template.php:2634
6389
  msgctxt "Approve the topic"
6390
  msgid "Approve"
6391
  msgstr ""
includes/admin/actions.php CHANGED
@@ -51,7 +51,8 @@ add_filter( 'custom_menu_order', 'bbp_admin_custom_menu_order' );
51
  // Hook on to admin_init
52
  add_action( 'bbp_admin_init', 'bbp_setup_updater', 999 );
53
  add_action( 'bbp_admin_init', 'bbp_register_importers' );
54
- add_action( 'bbp_admin_init', 'bbp_register_admin_style' );
 
55
  add_action( 'bbp_admin_init', 'bbp_register_admin_settings' );
56
 
57
  // Hook on to current_screen
@@ -282,10 +283,33 @@ function bbp_register_importers() {
282
  /**
283
  * Dedicated action to register admin styles
284
  *
285
- * @since 2.1.0 bbPress (r3766)
286
  */
287
- function bbp_register_admin_style() {
 
 
 
 
 
 
 
288
  do_action( 'bbp_register_admin_style' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
  }
290
 
291
  /**
51
  // Hook on to admin_init
52
  add_action( 'bbp_admin_init', 'bbp_setup_updater', 999 );
53
  add_action( 'bbp_admin_init', 'bbp_register_importers' );
54
+ add_action( 'bbp_admin_init', 'bbp_register_admin_styles' );
55
+ add_action( 'bbp_admin_init', 'bbp_register_admin_scripts' );
56
  add_action( 'bbp_admin_init', 'bbp_register_admin_settings' );
57
 
58
  // Hook on to current_screen
283
  /**
284
  * Dedicated action to register admin styles
285
  *
286
+ * @since 2.6.0 bbPress (r6912)
287
  */
288
+ function bbp_register_admin_styles() {
289
+
290
+ /**
291
+ * Action used to register the admin styling
292
+ *
293
+ * @since 2.1.0
294
+ * @deprecated 2.6.0
295
+ */
296
  do_action( 'bbp_register_admin_style' );
297
+
298
+ /**
299
+ * Action used to register all admin styling
300
+ *
301
+ * @since 2.6.0
302
+ */
303
+ do_action( 'bbp_register_admin_styles' );
304
+ }
305
+
306
+ /**
307
+ * Dedicated action to register admin scripts
308
+ *
309
+ * @since 2.6.0 bbPress (r6912)
310
+ */
311
+ function bbp_register_admin_scripts() {
312
+ do_action( 'bbp_register_admin_scripts' );
313
  }
314
 
315
  /**
includes/admin/assets/css/admin-rtl.css CHANGED
@@ -33,11 +33,11 @@
33
  display: block;
34
  }
35
 
36
- .bbp-bee:before {
37
  content: "\f451";
38
  }
39
 
40
- .bbp-hive:before {
41
  content: "\f449";
42
  }
43
 
@@ -59,7 +59,7 @@
59
  font: 400 24px/1 dashicons !important;
60
  }
61
 
62
- .notice-bbpress .bbpress-logo-icon:before {
63
  content: "\f477";
64
  color: #555;
65
  }
@@ -118,29 +118,29 @@ body.rtl .about-wrap .bbp-badge {
118
 
119
  /* Dashicons */
120
 
121
- th .bbp_forums_column:before,
122
- #dashboard_right_now a.bbp-glance-forums:before,
123
- #adminmenu #menu-posts-forum .wp-menu-image:before {
124
  content: "\f449";
125
  }
126
 
127
- th .bbp_topics_column:before,
128
- #dashboard_right_now a.bbp-glance-topics:before,
129
- #adminmenu #menu-posts-topic .wp-menu-image:before {
130
  content: "\f450";
131
  }
132
 
133
- th .bbp_replies_column:before,
134
- #dashboard_right_now a.bbp-glance-replies:before,
135
- #adminmenu #menu-posts-reply .wp-menu-image:before {
136
  content: "\f451";
137
  }
138
 
139
- #dashboard_right_now a.bbp-glance-topic-tags:before {
140
  content: "\f323";
141
  }
142
 
143
- #dashboard_right_now a.bbp-glance-users:before {
144
  content: "\f110";
145
  }
146
 
@@ -151,9 +151,9 @@ th .bbp_replies_column {
151
  width: 16px;
152
  }
153
 
154
- th .bbp_forums_column:before,
155
- th .bbp_topics_column:before,
156
- th .bbp_replies_column:before {
157
  font: 400 20px/0.5 dashicons;
158
  speak: none;
159
  display: inline-block;
@@ -452,7 +452,8 @@ body.post-type-reply #the-list .row-actions .approved a {
452
  }
453
 
454
  #bbp-converter-monitor .inside {
455
- margin-bottom: 0;
 
456
  border-bottom: 1px solid #e5e5e5;
457
  }
458
 
@@ -580,11 +581,11 @@ button.bbp-db-pass-toggle:hover {
580
  color: #888;
581
  }
582
 
583
- button.bbp-db-pass-toggle.text:after {
584
  content: "\f530";
585
  }
586
 
587
- button.bbp-db-pass-toggle.password:after {
588
  content: "\f177";
589
  }
590
 
@@ -613,3 +614,40 @@ button.bbp-db-pass-toggle.password:after {
613
  td.bbp-tool-title strong {
614
  display: block;
615
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  display: block;
34
  }
35
 
36
+ .bbp-bee::before {
37
  content: "\f451";
38
  }
39
 
40
+ .bbp-hive::before {
41
  content: "\f449";
42
  }
43
 
59
  font: 400 24px/1 dashicons !important;
60
  }
61
 
62
+ .notice-bbpress .bbpress-logo-icon::before {
63
  content: "\f477";
64
  color: #555;
65
  }
118
 
119
  /* Dashicons */
120
 
121
+ th .bbp_forums_column::before,
122
+ #dashboard_right_now a.bbp-glance-forums::before,
123
+ #adminmenu #menu-posts-forum .wp-menu-image::before {
124
  content: "\f449";
125
  }
126
 
127
+ th .bbp_topics_column::before,
128
+ #dashboard_right_now a.bbp-glance-topics::before,
129
+ #adminmenu #menu-posts-topic .wp-menu-image::before {
130
  content: "\f450";
131
  }
132
 
133
+ th .bbp_replies_column::before,
134
+ #dashboard_right_now a.bbp-glance-replies::before,
135
+ #adminmenu #menu-posts-reply .wp-menu-image::before {
136
  content: "\f451";
137
  }
138
 
139
+ #dashboard_right_now a.bbp-glance-topic-tags::before {
140
  content: "\f323";
141
  }
142
 
143
+ #dashboard_right_now a.bbp-glance-users::before {
144
  content: "\f110";
145
  }
146
 
151
  width: 16px;
152
  }
153
 
154
+ th .bbp_forums_column::before,
155
+ th .bbp_topics_column::before,
156
+ th .bbp_replies_column::before {
157
  font: 400 20px/0.5 dashicons;
158
  speak: none;
159
  display: inline-block;
452
  }
453
 
454
  #bbp-converter-monitor .inside {
455
+ margin: 0;
456
+ padding: 5px;
457
  border-bottom: 1px solid #e5e5e5;
458
  }
459
 
581
  color: #888;
582
  }
583
 
584
+ button.bbp-db-pass-toggle.text::after {
585
  content: "\f530";
586
  }
587
 
588
+ button.bbp-db-pass-toggle.password::after {
589
  content: "\f177";
590
  }
591
 
614
  td.bbp-tool-title strong {
615
  display: block;
616
  }
617
+
618
+ td.bbp-tool-title p {
619
+ margin: 0;
620
+ }
621
+
622
+ .manage-column.column-components {
623
+ width: 20%;
624
+ }
625
+
626
+ .manage-column.column-version {
627
+ width: 11%;
628
+ }
629
+
630
+ .manage-column.column-overhead {
631
+ width: 13%;
632
+ }
633
+
634
+ .nav-tab-wrapper a span.awaiting-mod {
635
+ display: inline-block;
636
+ vertical-align: top;
637
+ margin: 3px 1px 0 0;
638
+ padding: 0 5px;
639
+ min-width: 7px;
640
+ height: 17px;
641
+ border-radius: 11px;
642
+ background-color: #ca4a1f;
643
+ color: #fff;
644
+ font-size: 9px;
645
+ line-height: 17px;
646
+ text-align: center;
647
+ z-index: 26;
648
+ }
649
+
650
+ /* Retro TV corners for contributor avatars */
651
+ .dashboard_page_bbp-credits .wp-person img {
652
+ border-radius: 20px;
653
+ }
includes/admin/assets/css/admin-rtl.min.css CHANGED
@@ -1 +1 @@
1
- #poststuff #bbp_forum_attributes select#parent_id,#poststuff #bbp_reply_attributes select#bbp_forum_id,#poststuff #bbp_reply_attributes select#bbp_reply_to,#poststuff #bbp_topic_attributes select#parent_id{max-width:170px}.bbp-badge{transform-origin:top right;animation:swoop 16s infinite linear}.bbp-bee{font:400 80px/1 dashicons!important;color:#000;position:absolute;height:60px;width:60px}.bbp-hive{font:400 150px/1 dashicons!important;color:#ccc;position:absolute;height:150px;width:150px;top:0;left:0;display:block}.bbp-bee:before{content:"\f451"}.bbp-hive:before{content:"\f449"}.notice-bbpress{border-right:4px solid #78cd95;padding-right:36px;background-color:#ebffeb;position:relative}.notice-bbpress .bbpress-logo-icon{position:absolute;height:auto;width:auto;padding:7px 9px;top:50%;right:0;transform:translateY(-50%);font:400 24px/1 dashicons!important}.notice-bbpress .bbpress-logo-icon:before{content:"\f477";color:#555}@keyframes buzz{0%{left:-2px;top:-1px}25%{left:1px;top:2px}50%{left:-3px;top:-1px}75%{left:2px;top:1px}0%{left:-2px;top:-1px}}@keyframes swoop{0%{transform:rotate(-95deg)}100%{transform:rotate(-455deg)}}.about-wrap .bbp-badge{position:absolute;left:50px;top:50px;height:25px;width:25px}body.rtl .about-wrap .bbp-badge{left:auto;right:50px}#adminmenu #menu-posts-forum .wp-menu-image:before,#dashboard_right_now a.bbp-glance-forums:before,th .bbp_forums_column:before{content:"\f449"}#adminmenu #menu-posts-topic .wp-menu-image:before,#dashboard_right_now a.bbp-glance-topics:before,th .bbp_topics_column:before{content:"\f450"}#adminmenu #menu-posts-reply .wp-menu-image:before,#dashboard_right_now a.bbp-glance-replies:before,th .bbp_replies_column:before{content:"\f451"}#dashboard_right_now a.bbp-glance-topic-tags:before{content:"\f323"}#dashboard_right_now a.bbp-glance-users:before{content:"\f110"}th .bbp_forums_column,th .bbp_replies_column,th .bbp_topics_column{height:16px;width:16px}th .bbp_forums_column:before,th .bbp_replies_column:before,th .bbp_topics_column:before{font:400 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;right:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}#bbp-dashboard-right-now .table,#bbp-dashboard-right-now .versions,#bbp-dashboard-right-now p.sub{margin:-12px}#bbp-dashboard-right-now .inside{font-size:12px;padding-top:20px;margin-bottom:0}#bbp-dashboard-right-now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;right:15px}body.rtl #bbp-dashboard-right-now p.sub{left:15px;right:0}#bbp-dashboard-right-now .table{margin:0;padding:0;position:relative}#bbp-dashboard-right-now .table_content{float:right;border-top:#ececec 1px solid;width:45%}body.rtl #bbp-dashboard-right-now .table_content{float:left}#bbp-dashboard-right-now .table_discussion{float:left;border-top:#ececec 1px solid;width:45%}body.rtl #bbp-dashboard-right-now .table_discussion{float:right}#bbp-dashboard-right-now table td{padding:3px 0;white-space:nowrap}#bbp-dashboard-right-now table tr.first td{border-top:none}#bbp-dashboard-right-now td.b{padding-left:6px;text-align:left;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:14px;width:1%}body.rtl #bbp-dashboard-right-now td.b{padding-right:6px;padding-left:0}#bbp-dashboard-right-now td.b a{font-size:18px}#bbp-dashboard-right-now td.b a:hover{color:#d54e21}#bbp-dashboard-right-now .t{font-size:12px;padding-left:12px;padding-top:6px;color:#777}body.rtl #bbp-dashboard-right-now .t{padding-right:12px;padding-left:0}#bbp-dashboard-right-now .t a{white-space:nowrap}#bbp-dashboard-right-now .spam{color:red}#bbp-dashboard-right-now .waiting{color:#e66f00}#bbp-dashboard-right-now .approved{color:#0f0}#bbp-dashboard-right-now .versions{padding:6px 10px 12px;clear:both}#bbp-dashboard-right-now .versions .b{font-weight:700}#bbp-dashboard-right-now a.button{float:left;clear:left;position:relative;top:-5px}body.rtl #bbp-dashboard-right-now a.button{float:right;clear:right}body.post-type-forum #minor-publishing,body.post-type-forum #save-post{display:none}body.post-type-forum strong.label,body.post-type-reply strong.label,body.post-type-topic strong.label{display:inline-block;width:60px}.column-bbp_forum_reply_count,.column-bbp_forum_topic_count,.column-bbp_topic_reply_count,.column-bbp_topic_voice_count{width:8%!important}.column-author,.column-bbp_forum_mods,.column-bbp_reply_author,.column-bbp_topic_author{width:10%!important}.column-bbp_reply_forum,.column-bbp_reply_topic,.column-bbp_topic_forum{width:10%!important}.column-bbp_forum_freshness,.column-bbp_topic_freshness{width:10%!important}.column-bbp_forum_created,.column-bbp_reply_created,.column-bbp_topic_created,.column-bbp_user_role{width:15%!important}.column-bbp_forum_topic_author,.column-bbp_topic_reply_author{width:25%!important}.column-bbp_forum_topic_author .avatar,.column-bbp_topic_reply_author .avatar{float:right;margin-left:10px}#bbp_moderators{width:100%}#bbp_forum_attributes hr{border-style:solid;border-width:1px;border-color:#ccc #ccc #fff #fff}body.post-type-forum #the-list .status-closed,body.post-type-reply #the-list .status-closed,body.post-type-topic #the-list .status-closed{background-color:#f5f5f5}body.post-type-forum #the-list .status-closed:nth-child(odd),body.post-type-reply #the-list .status-closed:nth-child(odd),body.post-type-topic #the-list .status-closed:nth-child(odd){background-color:#f0f0f0}#bbp-reply-list .status-trash,body.post-type-forum #the-list .status-spam,body.post-type-reply #the-list .status-spam,body.post-type-topic #the-list .status-spam{background-color:#fee}#bbp-reply-list .status-trash:nth-child(odd),body.post-type-forum #the-list .status-spam:nth-child(odd),body.post-type-reply #the-list .status-spam:nth-child(odd),body.post-type-topic #the-list .status-spam:nth-child(odd){background-color:#fdd}body.post-type-forum #the-list .status-pending,body.post-type-reply #the-list .status-pending,body.post-type-topic #the-list .status-pending{background-color:#fff2e8}body.post-type-forum #the-list .status-pending:nth-child(odd),body.post-type-reply #the-list .status-pending:nth-child(odd),body.post-type-topic #the-list .status-pending:nth-child(odd){background-color:#fff7f1}#bbp-reply-list .status-trash td,body.post-type-forum #the-list .status-closed td,body.post-type-forum #the-list .status-spam td,body.post-type-reply #the-list .status-closed td,body.post-type-reply #the-list .status-spam td,body.post-type-topic #the-list .status-closed td,body.post-type-topic #the-list .status-spam td{color:#999}body.post-type-forum #the-list .row-actions .approved a,body.post-type-forum #the-list .row-actions .unspam a,body.post-type-reply #the-list .row-actions .approved a,body.post-type-reply #the-list .row-actions .unspam a,body.post-type-topic #the-list .row-actions .approved a,body.post-type-topic #the-list .row-actions .unspam a{color:#006505}#bbp_topic_engagements_metabox .avatar,#bbp_topic_favorites_metabox .avatar,#bbp_topic_subscriptions_metabox .avatar{margin:3px}.bbp-converter-settings-wrap{float:right;width:55%}#poststuff.bbp-converter-monitor-wrap{float:left;width:43%;margin-right:2%;min-width:200px}#bbp-converter-monitor h2{position:relative}#bbp-converter-monitor .inside{margin-bottom:0;border-bottom:1px solid #e5e5e5}#bbp-converter-monitor div.actions{padding:10px;background:#fafafa;clear:both}#bbp-converter-spinner{margin:4px 0}div.bbp-converter-log,div.bbp-converter-warning{padding:5px 5px 5px 0}div.bbp-converter-log.started{height:300px;overflow:auto}div.bbp-converter-log p{margin:0;padding:2px}div.bbp-converter-log p:only-child{float:none;margin-bottom:0}div.bbp-converter-log div{padding:10px;margin:5px;background:#f4f4f4;border:1px solid #ddd}div.bbp-converter-log div code{margin-top:5px;display:block}div.bbp-converter-log .step{text-align:left;font-weight:600}div.bbp-converter-log .output{margin:0 5px}div.bbp-converter-log .mini-step{padding:3px 5px;vertical-align:middle;font-size:8px;font-weight:600;border-radius:6px;background-color:#aaa;color:#fff}#bbp-converter-monitor .bbp-progress-bar{position:absolute;right:0;height:1px;width:0;background-color:#00b9eb;transition-property:width;transition-timing-function:ease-out;transition-duration:1s}#bbp-converter-monitor #bbp-converter-step-percentage{bottom:1px}#bbp-converter-monitor #bbp-converter-total-percentage{bottom:0}#bbp-converter-stop{display:none}#bbp-converter-status{font-weight:400;font-size:12px;color:#aaa;display:block;margin-top:2px}.bbp-converter-db-password-wrapper{display:inline-block;position:relative}.bbp-converter-db-pass::-webkit-credentials-auto-fill-button{display:none;visibility:hidden;pointer-events:none;position:absolute;left:0}button.bbp-db-pass-toggle{border:none;background:0 0;position:absolute;left:3px;top:3px;padding:0;margin:0;cursor:pointer;color:#aaa;height:25px;width:25px;font:400 20px/1 dashicons!important}button.bbp-db-pass-toggle:hover{color:#888}button.bbp-db-pass-toggle.text:after{content:"\f530"}button.bbp-db-pass-toggle.password:after{content:"\f177"}@media screen and (max-width:782px){.bbp-converter-db-password-wrapper{width:100%}#poststuff.bbp-converter-monitor-wrap,.bbp-converter-settings-wrap{float:none;width:100%;margin:20px 0}button.bbp-db-pass-toggle{height:35px;width:35px;font:400 20px/1 dashicons!important}}td.bbp-tool-title strong{display:block}
1
+ #poststuff #bbp_forum_attributes select#parent_id,#poststuff #bbp_reply_attributes select#bbp_forum_id,#poststuff #bbp_reply_attributes select#bbp_reply_to,#poststuff #bbp_topic_attributes select#parent_id{max-width:170px}.bbp-badge{transform-origin:top right;animation:swoop 16s infinite linear}.bbp-bee{font:400 80px/1 dashicons!important;color:#000;position:absolute;height:60px;width:60px}.bbp-hive{font:400 150px/1 dashicons!important;color:#ccc;position:absolute;height:150px;width:150px;top:0;left:0;display:block}.bbp-bee::before{content:"\f451"}.bbp-hive::before{content:"\f449"}.notice-bbpress{border-right:4px solid #78cd95;padding-right:36px;background-color:#ebffeb;position:relative}.notice-bbpress .bbpress-logo-icon{position:absolute;height:auto;width:auto;padding:7px 9px;top:50%;right:0;transform:translateY(-50%);font:400 24px/1 dashicons!important}.notice-bbpress .bbpress-logo-icon::before{content:"\f477";color:#555}@keyframes buzz{0%{left:-2px;top:-1px}25%{left:1px;top:2px}50%{left:-3px;top:-1px}75%{left:2px;top:1px}0%{left:-2px;top:-1px}}@keyframes swoop{0%{transform:rotate(-95deg)}100%{transform:rotate(-455deg)}}.about-wrap .bbp-badge{position:absolute;left:50px;top:50px;height:25px;width:25px}body.rtl .about-wrap .bbp-badge{left:auto;right:50px}#adminmenu #menu-posts-forum .wp-menu-image::before,#dashboard_right_now a.bbp-glance-forums::before,th .bbp_forums_column::before{content:"\f449"}#adminmenu #menu-posts-topic .wp-menu-image::before,#dashboard_right_now a.bbp-glance-topics::before,th .bbp_topics_column::before{content:"\f450"}#adminmenu #menu-posts-reply .wp-menu-image::before,#dashboard_right_now a.bbp-glance-replies::before,th .bbp_replies_column::before{content:"\f451"}#dashboard_right_now a.bbp-glance-topic-tags::before{content:"\f323"}#dashboard_right_now a.bbp-glance-users::before{content:"\f110"}th .bbp_forums_column,th .bbp_replies_column,th .bbp_topics_column{height:16px;width:16px}th .bbp_forums_column::before,th .bbp_replies_column::before,th .bbp_topics_column::before{font:400 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;right:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}#bbp-dashboard-right-now .table,#bbp-dashboard-right-now .versions,#bbp-dashboard-right-now p.sub{margin:-12px}#bbp-dashboard-right-now .inside{font-size:12px;padding-top:20px;margin-bottom:0}#bbp-dashboard-right-now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;right:15px}body.rtl #bbp-dashboard-right-now p.sub{left:15px;right:0}#bbp-dashboard-right-now .table{margin:0;padding:0;position:relative}#bbp-dashboard-right-now .table_content{float:right;border-top:#ececec 1px solid;width:45%}body.rtl #bbp-dashboard-right-now .table_content{float:left}#bbp-dashboard-right-now .table_discussion{float:left;border-top:#ececec 1px solid;width:45%}body.rtl #bbp-dashboard-right-now .table_discussion{float:right}#bbp-dashboard-right-now table td{padding:3px 0;white-space:nowrap}#bbp-dashboard-right-now table tr.first td{border-top:none}#bbp-dashboard-right-now td.b{padding-left:6px;text-align:left;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:14px;width:1%}body.rtl #bbp-dashboard-right-now td.b{padding-right:6px;padding-left:0}#bbp-dashboard-right-now td.b a{font-size:18px}#bbp-dashboard-right-now td.b a:hover{color:#d54e21}#bbp-dashboard-right-now .t{font-size:12px;padding-left:12px;padding-top:6px;color:#777}body.rtl #bbp-dashboard-right-now .t{padding-right:12px;padding-left:0}#bbp-dashboard-right-now .t a{white-space:nowrap}#bbp-dashboard-right-now .spam{color:red}#bbp-dashboard-right-now .waiting{color:#e66f00}#bbp-dashboard-right-now .approved{color:#0f0}#bbp-dashboard-right-now .versions{padding:6px 10px 12px;clear:both}#bbp-dashboard-right-now .versions .b{font-weight:700}#bbp-dashboard-right-now a.button{float:left;clear:left;position:relative;top:-5px}body.rtl #bbp-dashboard-right-now a.button{float:right;clear:right}body.post-type-forum #minor-publishing,body.post-type-forum #save-post{display:none}body.post-type-forum strong.label,body.post-type-reply strong.label,body.post-type-topic strong.label{display:inline-block;width:60px}.column-bbp_forum_reply_count,.column-bbp_forum_topic_count,.column-bbp_topic_reply_count,.column-bbp_topic_voice_count{width:8%!important}.column-author,.column-bbp_forum_mods,.column-bbp_reply_author,.column-bbp_topic_author{width:10%!important}.column-bbp_reply_forum,.column-bbp_reply_topic,.column-bbp_topic_forum{width:10%!important}.column-bbp_forum_freshness,.column-bbp_topic_freshness{width:10%!important}.column-bbp_forum_created,.column-bbp_reply_created,.column-bbp_topic_created,.column-bbp_user_role{width:15%!important}.column-bbp_forum_topic_author,.column-bbp_topic_reply_author{width:25%!important}.column-bbp_forum_topic_author .avatar,.column-bbp_topic_reply_author .avatar{float:right;margin-left:10px}#bbp_moderators{width:100%}#bbp_forum_attributes hr{border-style:solid;border-width:1px;border-color:#ccc #ccc #fff #fff}body.post-type-forum #the-list .status-closed,body.post-type-reply #the-list .status-closed,body.post-type-topic #the-list .status-closed{background-color:#f5f5f5}body.post-type-forum #the-list .status-closed:nth-child(odd),body.post-type-reply #the-list .status-closed:nth-child(odd),body.post-type-topic #the-list .status-closed:nth-child(odd){background-color:#f0f0f0}#bbp-reply-list .status-trash,body.post-type-forum #the-list .status-spam,body.post-type-reply #the-list .status-spam,body.post-type-topic #the-list .status-spam{background-color:#fee}#bbp-reply-list .status-trash:nth-child(odd),body.post-type-forum #the-list .status-spam:nth-child(odd),body.post-type-reply #the-list .status-spam:nth-child(odd),body.post-type-topic #the-list .status-spam:nth-child(odd){background-color:#fdd}body.post-type-forum #the-list .status-pending,body.post-type-reply #the-list .status-pending,body.post-type-topic #the-list .status-pending{background-color:#fff2e8}body.post-type-forum #the-list .status-pending:nth-child(odd),body.post-type-reply #the-list .status-pending:nth-child(odd),body.post-type-topic #the-list .status-pending:nth-child(odd){background-color:#fff7f1}#bbp-reply-list .status-trash td,body.post-type-forum #the-list .status-closed td,body.post-type-forum #the-list .status-spam td,body.post-type-reply #the-list .status-closed td,body.post-type-reply #the-list .status-spam td,body.post-type-topic #the-list .status-closed td,body.post-type-topic #the-list .status-spam td{color:#999}body.post-type-forum #the-list .row-actions .approved a,body.post-type-forum #the-list .row-actions .unspam a,body.post-type-reply #the-list .row-actions .approved a,body.post-type-reply #the-list .row-actions .unspam a,body.post-type-topic #the-list .row-actions .approved a,body.post-type-topic #the-list .row-actions .unspam a{color:#006505}#bbp_topic_engagements_metabox .avatar,#bbp_topic_favorites_metabox .avatar,#bbp_topic_subscriptions_metabox .avatar{margin:3px}.bbp-converter-settings-wrap{float:right;width:55%}#poststuff.bbp-converter-monitor-wrap{float:left;width:43%;margin-right:2%;min-width:200px}#bbp-converter-monitor h2{position:relative}#bbp-converter-monitor .inside{margin:0;padding:5px;border-bottom:1px solid #e5e5e5}#bbp-converter-monitor div.actions{padding:10px;background:#fafafa;clear:both}#bbp-converter-spinner{margin:4px 0}div.bbp-converter-log,div.bbp-converter-warning{padding:5px 5px 5px 0}div.bbp-converter-log.started{height:300px;overflow:auto}div.bbp-converter-log p{margin:0;padding:2px}div.bbp-converter-log p:only-child{float:none;margin-bottom:0}div.bbp-converter-log div{padding:10px;margin:5px;background:#f4f4f4;border:1px solid #ddd}div.bbp-converter-log div code{margin-top:5px;display:block}div.bbp-converter-log .step{text-align:left;font-weight:600}div.bbp-converter-log .output{margin:0 5px}div.bbp-converter-log .mini-step{padding:3px 5px;vertical-align:middle;font-size:8px;font-weight:600;border-radius:6px;background-color:#aaa;color:#fff}#bbp-converter-monitor .bbp-progress-bar{position:absolute;right:0;height:1px;width:0;background-color:#00b9eb;transition-property:width;transition-timing-function:ease-out;transition-duration:1s}#bbp-converter-monitor #bbp-converter-step-percentage{bottom:1px}#bbp-converter-monitor #bbp-converter-total-percentage{bottom:0}#bbp-converter-stop{display:none}#bbp-converter-status{font-weight:400;font-size:12px;color:#aaa;display:block;margin-top:2px}.bbp-converter-db-password-wrapper{display:inline-block;position:relative}.bbp-converter-db-pass::-webkit-credentials-auto-fill-button{display:none;visibility:hidden;pointer-events:none;position:absolute;left:0}button.bbp-db-pass-toggle{border:none;background:0 0;position:absolute;left:3px;top:3px;padding:0;margin:0;cursor:pointer;color:#aaa;height:25px;width:25px;font:400 20px/1 dashicons!important}button.bbp-db-pass-toggle:hover{color:#888}button.bbp-db-pass-toggle.text::after{content:"\f530"}button.bbp-db-pass-toggle.password::after{content:"\f177"}@media screen and (max-width:782px){.bbp-converter-db-password-wrapper{width:100%}#poststuff.bbp-converter-monitor-wrap,.bbp-converter-settings-wrap{float:none;width:100%;margin:20px 0}button.bbp-db-pass-toggle{height:35px;width:35px;font:400 20px/1 dashicons!important}}td.bbp-tool-title strong{display:block}td.bbp-tool-title p{margin:0}.manage-column.column-components{width:20%}.manage-column.column-version{width:11%}.manage-column.column-overhead{width:13%}.nav-tab-wrapper a span.awaiting-mod{display:inline-block;vertical-align:top;margin:3px 1px 0 0;padding:0 5px;min-width:7px;height:17px;border-radius:11px;background-color:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center;z-index:26}.dashboard_page_bbp-credits .wp-person img{border-radius:20px}
includes/admin/assets/css/admin.css CHANGED
@@ -33,11 +33,11 @@
33
  display: block;
34
  }
35
 
36
- .bbp-bee:before {
37
  content: "\f451";
38
  }
39
 
40
- .bbp-hive:before {
41
  content: "\f449";
42
  }
43
 
@@ -59,7 +59,7 @@
59
  font: 400 24px/1 dashicons !important;
60
  }
61
 
62
- .notice-bbpress .bbpress-logo-icon:before {
63
  content: "\f477";
64
  color: #555;
65
  }
@@ -118,29 +118,29 @@ body.rtl .about-wrap .bbp-badge {
118
 
119
  /* Dashicons */
120
 
121
- th .bbp_forums_column:before,
122
- #dashboard_right_now a.bbp-glance-forums:before,
123
- #adminmenu #menu-posts-forum .wp-menu-image:before {
124
  content: "\f449";
125
  }
126
 
127
- th .bbp_topics_column:before,
128
- #dashboard_right_now a.bbp-glance-topics:before,
129
- #adminmenu #menu-posts-topic .wp-menu-image:before {
130
  content: "\f450";
131
  }
132
 
133
- th .bbp_replies_column:before,
134
- #dashboard_right_now a.bbp-glance-replies:before,
135
- #adminmenu #menu-posts-reply .wp-menu-image:before {
136
  content: "\f451";
137
  }
138
 
139
- #dashboard_right_now a.bbp-glance-topic-tags:before {
140
  content: "\f323";
141
  }
142
 
143
- #dashboard_right_now a.bbp-glance-users:before {
144
  content: "\f110";
145
  }
146
 
@@ -151,9 +151,9 @@ th .bbp_replies_column {
151
  width: 16px;
152
  }
153
 
154
- th .bbp_forums_column:before,
155
- th .bbp_topics_column:before,
156
- th .bbp_replies_column:before {
157
  font: 400 20px/0.5 dashicons;
158
  speak: none;
159
  display: inline-block;
@@ -452,7 +452,8 @@ body.post-type-reply #the-list .row-actions .approved a {
452
  }
453
 
454
  #bbp-converter-monitor .inside {
455
- margin-bottom: 0;
 
456
  border-bottom: 1px solid #e5e5e5;
457
  }
458
 
@@ -580,11 +581,11 @@ button.bbp-db-pass-toggle:hover {
580
  color: #888;
581
  }
582
 
583
- button.bbp-db-pass-toggle.text:after {
584
  content: "\f530";
585
  }
586
 
587
- button.bbp-db-pass-toggle.password:after {
588
  content: "\f177";
589
  }
590
 
@@ -613,3 +614,40 @@ button.bbp-db-pass-toggle.password:after {
613
  td.bbp-tool-title strong {
614
  display: block;
615
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  display: block;
34
  }
35
 
36
+ .bbp-bee::before {
37
  content: "\f451";
38
  }
39
 
40
+ .bbp-hive::before {
41
  content: "\f449";
42
  }
43
 
59
  font: 400 24px/1 dashicons !important;
60
  }
61
 
62
+ .notice-bbpress .bbpress-logo-icon::before {
63
  content: "\f477";
64
  color: #555;
65
  }
118
 
119
  /* Dashicons */
120
 
121
+ th .bbp_forums_column::before,
122
+ #dashboard_right_now a.bbp-glance-forums::before,
123
+ #adminmenu #menu-posts-forum .wp-menu-image::before {
124
  content: "\f449";
125
  }
126
 
127
+ th .bbp_topics_column::before,
128
+ #dashboard_right_now a.bbp-glance-topics::before,
129
+ #adminmenu #menu-posts-topic .wp-menu-image::before {
130
  content: "\f450";
131
  }
132
 
133
+ th .bbp_replies_column::before,
134
+ #dashboard_right_now a.bbp-glance-replies::before,
135
+ #adminmenu #menu-posts-reply .wp-menu-image::before {
136
  content: "\f451";
137
  }
138
 
139
+ #dashboard_right_now a.bbp-glance-topic-tags::before {
140
  content: "\f323";
141
  }
142
 
143
+ #dashboard_right_now a.bbp-glance-users::before {
144
  content: "\f110";
145
  }
146
 
151
  width: 16px;
152
  }
153
 
154
+ th .bbp_forums_column::before,
155
+ th .bbp_topics_column::before,
156
+ th .bbp_replies_column::before {
157
  font: 400 20px/0.5 dashicons;
158
  speak: none;
159
  display: inline-block;
452
  }
453
 
454
  #bbp-converter-monitor .inside {
455
+ margin: 0;
456
+ padding: 5px;
457
  border-bottom: 1px solid #e5e5e5;
458
  }
459
 
581
  color: #888;
582
  }
583
 
584
+ button.bbp-db-pass-toggle.text::after {
585
  content: "\f530";
586
  }
587
 
588
+ button.bbp-db-pass-toggle.password::after {
589
  content: "\f177";
590
  }
591
 
614
  td.bbp-tool-title strong {
615
  display: block;
616
  }
617
+
618
+ td.bbp-tool-title p {
619
+ margin: 0;
620
+ }
621
+
622
+ .manage-column.column-components {
623
+ width: 20%;
624
+ }
625
+
626
+ .manage-column.column-version {
627
+ width: 11%;
628
+ }
629
+
630
+ .manage-column.column-overhead {
631
+ width: 13%;
632
+ }
633
+
634
+ .nav-tab-wrapper a span.awaiting-mod {
635
+ display: inline-block;
636
+ vertical-align: top;
637
+ margin: 3px 0 0 1px;
638
+ padding: 0 5px;
639
+ min-width: 7px;
640
+ height: 17px;
641
+ border-radius: 11px;
642
+ background-color: #ca4a1f;
643
+ color: #fff;
644
+ font-size: 9px;
645
+ line-height: 17px;
646
+ text-align: center;
647
+ z-index: 26;
648
+ }
649
+
650
+ /* Retro TV corners for contributor avatars */
651
+ .dashboard_page_bbp-credits .wp-person img {
652
+ border-radius: 20px;
653
+ }
includes/admin/assets/css/admin.min.css CHANGED
@@ -1 +1 @@
1
- #poststuff #bbp_forum_attributes select#parent_id,#poststuff #bbp_reply_attributes select#bbp_forum_id,#poststuff #bbp_reply_attributes select#bbp_reply_to,#poststuff #bbp_topic_attributes select#parent_id{max-width:170px}.bbp-badge{transform-origin:top left;animation:swoop 16s infinite linear}.bbp-bee{font:400 80px/1 dashicons!important;color:#000;position:absolute;height:60px;width:60px}.bbp-hive{font:400 150px/1 dashicons!important;color:#ccc;position:absolute;height:150px;width:150px;top:0;right:0;display:block}.bbp-bee:before{content:"\f451"}.bbp-hive:before{content:"\f449"}.notice-bbpress{border-left:4px solid #78cd95;padding-left:36px;background-color:#ebffeb;position:relative}.notice-bbpress .bbpress-logo-icon{position:absolute;height:auto;width:auto;padding:7px 9px;top:50%;left:0;transform:translateY(-50%);font:400 24px/1 dashicons!important}.notice-bbpress .bbpress-logo-icon:before{content:"\f477";color:#555}@keyframes buzz{0%{right:-2px;top:-1px}25%{right:1px;top:2px}50%{right:-3px;top:-1px}75%{right:2px;top:1px}0%{right:-2px;top:-1px}}@keyframes swoop{0%{transform:rotate(95deg)}100%{transform:rotate(455deg)}}.about-wrap .bbp-badge{position:absolute;right:50px;top:50px;height:25px;width:25px}body.rtl .about-wrap .bbp-badge{right:auto;left:50px}#adminmenu #menu-posts-forum .wp-menu-image:before,#dashboard_right_now a.bbp-glance-forums:before,th .bbp_forums_column:before{content:"\f449"}#adminmenu #menu-posts-topic .wp-menu-image:before,#dashboard_right_now a.bbp-glance-topics:before,th .bbp_topics_column:before{content:"\f450"}#adminmenu #menu-posts-reply .wp-menu-image:before,#dashboard_right_now a.bbp-glance-replies:before,th .bbp_replies_column:before{content:"\f451"}#dashboard_right_now a.bbp-glance-topic-tags:before{content:"\f323"}#dashboard_right_now a.bbp-glance-users:before{content:"\f110"}th .bbp_forums_column,th .bbp_replies_column,th .bbp_topics_column{height:16px;width:16px}th .bbp_forums_column:before,th .bbp_replies_column:before,th .bbp_topics_column:before{font:400 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;left:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}#bbp-dashboard-right-now .table,#bbp-dashboard-right-now .versions,#bbp-dashboard-right-now p.sub{margin:-12px}#bbp-dashboard-right-now .inside{font-size:12px;padding-top:20px;margin-bottom:0}#bbp-dashboard-right-now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;left:15px}body.rtl #bbp-dashboard-right-now p.sub{right:15px;left:0}#bbp-dashboard-right-now .table{margin:0;padding:0;position:relative}#bbp-dashboard-right-now .table_content{float:left;border-top:#ececec 1px solid;width:45%}body.rtl #bbp-dashboard-right-now .table_content{float:right}#bbp-dashboard-right-now .table_discussion{float:right;border-top:#ececec 1px solid;width:45%}body.rtl #bbp-dashboard-right-now .table_discussion{float:left}#bbp-dashboard-right-now table td{padding:3px 0;white-space:nowrap}#bbp-dashboard-right-now table tr.first td{border-top:none}#bbp-dashboard-right-now td.b{padding-right:6px;text-align:right;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:14px;width:1%}body.rtl #bbp-dashboard-right-now td.b{padding-left:6px;padding-right:0}#bbp-dashboard-right-now td.b a{font-size:18px}#bbp-dashboard-right-now td.b a:hover{color:#d54e21}#bbp-dashboard-right-now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777}body.rtl #bbp-dashboard-right-now .t{padding-left:12px;padding-right:0}#bbp-dashboard-right-now .t a{white-space:nowrap}#bbp-dashboard-right-now .spam{color:red}#bbp-dashboard-right-now .waiting{color:#e66f00}#bbp-dashboard-right-now .approved{color:#0f0}#bbp-dashboard-right-now .versions{padding:6px 10px 12px;clear:both}#bbp-dashboard-right-now .versions .b{font-weight:700}#bbp-dashboard-right-now a.button{float:right;clear:right;position:relative;top:-5px}body.rtl #bbp-dashboard-right-now a.button{float:left;clear:left}body.post-type-forum #minor-publishing,body.post-type-forum #save-post{display:none}body.post-type-forum strong.label,body.post-type-reply strong.label,body.post-type-topic strong.label{display:inline-block;width:60px}.column-bbp_forum_reply_count,.column-bbp_forum_topic_count,.column-bbp_topic_reply_count,.column-bbp_topic_voice_count{width:8%!important}.column-author,.column-bbp_forum_mods,.column-bbp_reply_author,.column-bbp_topic_author{width:10%!important}.column-bbp_reply_forum,.column-bbp_reply_topic,.column-bbp_topic_forum{width:10%!important}.column-bbp_forum_freshness,.column-bbp_topic_freshness{width:10%!important}.column-bbp_forum_created,.column-bbp_reply_created,.column-bbp_topic_created,.column-bbp_user_role{width:15%!important}.column-bbp_forum_topic_author,.column-bbp_topic_reply_author{width:25%!important}.column-bbp_forum_topic_author .avatar,.column-bbp_topic_reply_author .avatar{float:left;margin-right:10px}#bbp_moderators{width:100%}#bbp_forum_attributes hr{border-style:solid;border-width:1px;border-color:#ccc #fff #fff #ccc}body.post-type-forum #the-list .status-closed,body.post-type-reply #the-list .status-closed,body.post-type-topic #the-list .status-closed{background-color:#f5f5f5}body.post-type-forum #the-list .status-closed:nth-child(odd),body.post-type-reply #the-list .status-closed:nth-child(odd),body.post-type-topic #the-list .status-closed:nth-child(odd){background-color:#f0f0f0}#bbp-reply-list .status-trash,body.post-type-forum #the-list .status-spam,body.post-type-reply #the-list .status-spam,body.post-type-topic #the-list .status-spam{background-color:#fee}#bbp-reply-list .status-trash:nth-child(odd),body.post-type-forum #the-list .status-spam:nth-child(odd),body.post-type-reply #the-list .status-spam:nth-child(odd),body.post-type-topic #the-list .status-spam:nth-child(odd){background-color:#fdd}body.post-type-forum #the-list .status-pending,body.post-type-reply #the-list .status-pending,body.post-type-topic #the-list .status-pending{background-color:#fff2e8}body.post-type-forum #the-list .status-pending:nth-child(odd),body.post-type-reply #the-list .status-pending:nth-child(odd),body.post-type-topic #the-list .status-pending:nth-child(odd){background-color:#fff7f1}#bbp-reply-list .status-trash td,body.post-type-forum #the-list .status-closed td,body.post-type-forum #the-list .status-spam td,body.post-type-reply #the-list .status-closed td,body.post-type-reply #the-list .status-spam td,body.post-type-topic #the-list .status-closed td,body.post-type-topic #the-list .status-spam td{color:#999}body.post-type-forum #the-list .row-actions .approved a,body.post-type-forum #the-list .row-actions .unspam a,body.post-type-reply #the-list .row-actions .approved a,body.post-type-reply #the-list .row-actions .unspam a,body.post-type-topic #the-list .row-actions .approved a,body.post-type-topic #the-list .row-actions .unspam a{color:#006505}#bbp_topic_engagements_metabox .avatar,#bbp_topic_favorites_metabox .avatar,#bbp_topic_subscriptions_metabox .avatar{margin:3px}.bbp-converter-settings-wrap{float:left;width:55%}#poststuff.bbp-converter-monitor-wrap{float:right;width:43%;margin-left:2%;min-width:200px}#bbp-converter-monitor h2{position:relative}#bbp-converter-monitor .inside{margin-bottom:0;border-bottom:1px solid #e5e5e5}#bbp-converter-monitor div.actions{padding:10px;background:#fafafa;clear:both}#bbp-converter-spinner{margin:4px 0}div.bbp-converter-log,div.bbp-converter-warning{padding:5px 0 5px 5px}div.bbp-converter-log.started{height:300px;overflow:auto}div.bbp-converter-log p{margin:0;padding:2px}div.bbp-converter-log p:only-child{float:none;margin-bottom:0}div.bbp-converter-log div{padding:10px;margin:5px;background:#f4f4f4;border:1px solid #ddd}div.bbp-converter-log div code{margin-top:5px;display:block}div.bbp-converter-log .step{text-align:right;font-weight:600}div.bbp-converter-log .output{margin:0 5px}div.bbp-converter-log .mini-step{padding:3px 5px;vertical-align:middle;font-size:8px;font-weight:600;border-radius:6px;background-color:#aaa;color:#fff}#bbp-converter-monitor .bbp-progress-bar{position:absolute;left:0;height:1px;width:0;background-color:#00b9eb;transition-property:width;transition-timing-function:ease-out;transition-duration:1s}#bbp-converter-monitor #bbp-converter-step-percentage{bottom:1px}#bbp-converter-monitor #bbp-converter-total-percentage{bottom:0}#bbp-converter-stop{display:none}#bbp-converter-status{font-weight:400;font-size:12px;color:#aaa;display:block;margin-top:2px}.bbp-converter-db-password-wrapper{display:inline-block;position:relative}.bbp-converter-db-pass::-webkit-credentials-auto-fill-button{display:none;visibility:hidden;pointer-events:none;position:absolute;right:0}button.bbp-db-pass-toggle{border:none;background:0 0;position:absolute;right:3px;top:3px;padding:0;margin:0;cursor:pointer;color:#aaa;height:25px;width:25px;font:400 20px/1 dashicons!important}button.bbp-db-pass-toggle:hover{color:#888}button.bbp-db-pass-toggle.text:after{content:"\f530"}button.bbp-db-pass-toggle.password:after{content:"\f177"}@media screen and (max-width:782px){.bbp-converter-db-password-wrapper{width:100%}#poststuff.bbp-converter-monitor-wrap,.bbp-converter-settings-wrap{float:none;width:100%;margin:20px 0}button.bbp-db-pass-toggle{height:35px;width:35px;font:400 20px/1 dashicons!important}}td.bbp-tool-title strong{display:block}
1
+ #poststuff #bbp_forum_attributes select#parent_id,#poststuff #bbp_reply_attributes select#bbp_forum_id,#poststuff #bbp_reply_attributes select#bbp_reply_to,#poststuff #bbp_topic_attributes select#parent_id{max-width:170px}.bbp-badge{transform-origin:top left;animation:swoop 16s infinite linear}.bbp-bee{font:400 80px/1 dashicons!important;color:#000;position:absolute;height:60px;width:60px}.bbp-hive{font:400 150px/1 dashicons!important;color:#ccc;position:absolute;height:150px;width:150px;top:0;right:0;display:block}.bbp-bee::before{content:"\f451"}.bbp-hive::before{content:"\f449"}.notice-bbpress{border-left:4px solid #78cd95;padding-left:36px;background-color:#ebffeb;position:relative}.notice-bbpress .bbpress-logo-icon{position:absolute;height:auto;width:auto;padding:7px 9px;top:50%;left:0;transform:translateY(-50%);font:400 24px/1 dashicons!important}.notice-bbpress .bbpress-logo-icon::before{content:"\f477";color:#555}@keyframes buzz{0%{right:-2px;top:-1px}25%{right:1px;top:2px}50%{right:-3px;top:-1px}75%{right:2px;top:1px}0%{right:-2px;top:-1px}}@keyframes swoop{0%{transform:rotate(95deg)}100%{transform:rotate(455deg)}}.about-wrap .bbp-badge{position:absolute;right:50px;top:50px;height:25px;width:25px}body.rtl .about-wrap .bbp-badge{right:auto;left:50px}#adminmenu #menu-posts-forum .wp-menu-image::before,#dashboard_right_now a.bbp-glance-forums::before,th .bbp_forums_column::before{content:"\f449"}#adminmenu #menu-posts-topic .wp-menu-image::before,#dashboard_right_now a.bbp-glance-topics::before,th .bbp_topics_column::before{content:"\f450"}#adminmenu #menu-posts-reply .wp-menu-image::before,#dashboard_right_now a.bbp-glance-replies::before,th .bbp_replies_column::before{content:"\f451"}#dashboard_right_now a.bbp-glance-topic-tags::before{content:"\f323"}#dashboard_right_now a.bbp-glance-users::before{content:"\f110"}th .bbp_forums_column,th .bbp_replies_column,th .bbp_topics_column{height:16px;width:16px}th .bbp_forums_column::before,th .bbp_replies_column::before,th .bbp_topics_column::before{font:400 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;left:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}#bbp-dashboard-right-now .table,#bbp-dashboard-right-now .versions,#bbp-dashboard-right-now p.sub{margin:-12px}#bbp-dashboard-right-now .inside{font-size:12px;padding-top:20px;margin-bottom:0}#bbp-dashboard-right-now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;left:15px}body.rtl #bbp-dashboard-right-now p.sub{right:15px;left:0}#bbp-dashboard-right-now .table{margin:0;padding:0;position:relative}#bbp-dashboard-right-now .table_content{float:left;border-top:#ececec 1px solid;width:45%}body.rtl #bbp-dashboard-right-now .table_content{float:right}#bbp-dashboard-right-now .table_discussion{float:right;border-top:#ececec 1px solid;width:45%}body.rtl #bbp-dashboard-right-now .table_discussion{float:left}#bbp-dashboard-right-now table td{padding:3px 0;white-space:nowrap}#bbp-dashboard-right-now table tr.first td{border-top:none}#bbp-dashboard-right-now td.b{padding-right:6px;text-align:right;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:14px;width:1%}body.rtl #bbp-dashboard-right-now td.b{padding-left:6px;padding-right:0}#bbp-dashboard-right-now td.b a{font-size:18px}#bbp-dashboard-right-now td.b a:hover{color:#d54e21}#bbp-dashboard-right-now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777}body.rtl #bbp-dashboard-right-now .t{padding-left:12px;padding-right:0}#bbp-dashboard-right-now .t a{white-space:nowrap}#bbp-dashboard-right-now .spam{color:red}#bbp-dashboard-right-now .waiting{color:#e66f00}#bbp-dashboard-right-now .approved{color:#0f0}#bbp-dashboard-right-now .versions{padding:6px 10px 12px;clear:both}#bbp-dashboard-right-now .versions .b{font-weight:700}#bbp-dashboard-right-now a.button{float:right;clear:right;position:relative;top:-5px}body.rtl #bbp-dashboard-right-now a.button{float:left;clear:left}body.post-type-forum #minor-publishing,body.post-type-forum #save-post{display:none}body.post-type-forum strong.label,body.post-type-reply strong.label,body.post-type-topic strong.label{display:inline-block;width:60px}.column-bbp_forum_reply_count,.column-bbp_forum_topic_count,.column-bbp_topic_reply_count,.column-bbp_topic_voice_count{width:8%!important}.column-author,.column-bbp_forum_mods,.column-bbp_reply_author,.column-bbp_topic_author{width:10%!important}.column-bbp_reply_forum,.column-bbp_reply_topic,.column-bbp_topic_forum{width:10%!important}.column-bbp_forum_freshness,.column-bbp_topic_freshness{width:10%!important}.column-bbp_forum_created,.column-bbp_reply_created,.column-bbp_topic_created,.column-bbp_user_role{width:15%!important}.column-bbp_forum_topic_author,.column-bbp_topic_reply_author{width:25%!important}.column-bbp_forum_topic_author .avatar,.column-bbp_topic_reply_author .avatar{float:left;margin-right:10px}#bbp_moderators{width:100%}#bbp_forum_attributes hr{border-style:solid;border-width:1px;border-color:#ccc #fff #fff #ccc}body.post-type-forum #the-list .status-closed,body.post-type-reply #the-list .status-closed,body.post-type-topic #the-list .status-closed{background-color:#f5f5f5}body.post-type-forum #the-list .status-closed:nth-child(odd),body.post-type-reply #the-list .status-closed:nth-child(odd),body.post-type-topic #the-list .status-closed:nth-child(odd){background-color:#f0f0f0}#bbp-reply-list .status-trash,body.post-type-forum #the-list .status-spam,body.post-type-reply #the-list .status-spam,body.post-type-topic #the-list .status-spam{background-color:#fee}#bbp-reply-list .status-trash:nth-child(odd),body.post-type-forum #the-list .status-spam:nth-child(odd),body.post-type-reply #the-list .status-spam:nth-child(odd),body.post-type-topic #the-list .status-spam:nth-child(odd){background-color:#fdd}body.post-type-forum #the-list .status-pending,body.post-type-reply #the-list .status-pending,body.post-type-topic #the-list .status-pending{background-color:#fff2e8}body.post-type-forum #the-list .status-pending:nth-child(odd),body.post-type-reply #the-list .status-pending:nth-child(odd),body.post-type-topic #the-list .status-pending:nth-child(odd){background-color:#fff7f1}#bbp-reply-list .status-trash td,body.post-type-forum #the-list .status-closed td,body.post-type-forum #the-list .status-spam td,body.post-type-reply #the-list .status-closed td,body.post-type-reply #the-list .status-spam td,body.post-type-topic #the-list .status-closed td,body.post-type-topic #the-list .status-spam td{color:#999}body.post-type-forum #the-list .row-actions .approved a,body.post-type-forum #the-list .row-actions .unspam a,body.post-type-reply #the-list .row-actions .approved a,body.post-type-reply #the-list .row-actions .unspam a,body.post-type-topic #the-list .row-actions .approved a,body.post-type-topic #the-list .row-actions .unspam a{color:#006505}#bbp_topic_engagements_metabox .avatar,#bbp_topic_favorites_metabox .avatar,#bbp_topic_subscriptions_metabox .avatar{margin:3px}.bbp-converter-settings-wrap{float:left;width:55%}#poststuff.bbp-converter-monitor-wrap{float:right;width:43%;margin-left:2%;min-width:200px}#bbp-converter-monitor h2{position:relative}#bbp-converter-monitor .inside{margin:0;padding:5px;border-bottom:1px solid #e5e5e5}#bbp-converter-monitor div.actions{padding:10px;background:#fafafa;clear:both}#bbp-converter-spinner{margin:4px 0}div.bbp-converter-log,div.bbp-converter-warning{padding:5px 0 5px 5px}div.bbp-converter-log.started{height:300px;overflow:auto}div.bbp-converter-log p{margin:0;padding:2px}div.bbp-converter-log p:only-child{float:none;margin-bottom:0}div.bbp-converter-log div{padding:10px;margin:5px;background:#f4f4f4;border:1px solid #ddd}div.bbp-converter-log div code{margin-top:5px;display:block}div.bbp-converter-log .step{text-align:right;font-weight:600}div.bbp-converter-log .output{margin:0 5px}div.bbp-converter-log .mini-step{padding:3px 5px;vertical-align:middle;font-size:8px;font-weight:600;border-radius:6px;background-color:#aaa;color:#fff}#bbp-converter-monitor .bbp-progress-bar{position:absolute;left:0;height:1px;width:0;background-color:#00b9eb;transition-property:width;transition-timing-function:ease-out;transition-duration:1s}#bbp-converter-monitor #bbp-converter-step-percentage{bottom:1px}#bbp-converter-monitor #bbp-converter-total-percentage{bottom:0}#bbp-converter-stop{display:none}#bbp-converter-status{font-weight:400;font-size:12px;color:#aaa;display:block;margin-top:2px}.bbp-converter-db-password-wrapper{display:inline-block;position:relative}.bbp-converter-db-pass::-webkit-credentials-auto-fill-button{display:none;visibility:hidden;pointer-events:none;position:absolute;right:0}button.bbp-db-pass-toggle{border:none;background:0 0;position:absolute;right:3px;top:3px;padding:0;margin:0;cursor:pointer;color:#aaa;height:25px;width:25px;font:400 20px/1 dashicons!important}button.bbp-db-pass-toggle:hover{color:#888}button.bbp-db-pass-toggle.text::after{content:"\f530"}button.bbp-db-pass-toggle.password::after{content:"\f177"}@media screen and (max-width:782px){.bbp-converter-db-password-wrapper{width:100%}#poststuff.bbp-converter-monitor-wrap,.bbp-converter-settings-wrap{float:none;width:100%;margin:20px 0}button.bbp-db-pass-toggle{height:35px;width:35px;font:400 20px/1 dashicons!important}}td.bbp-tool-title strong{display:block}td.bbp-tool-title p{margin:0}.manage-column.column-components{width:20%}.manage-column.column-version{width:11%}.manage-column.column-overhead{width:13%}.nav-tab-wrapper a span.awaiting-mod{display:inline-block;vertical-align:top;margin:3px 0 0 1px;padding:0 5px;min-width:7px;height:17px;border-radius:11px;background-color:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center;z-index:26}.dashboard_page_bbp-credits .wp-person img{border-radius:20px}
includes/admin/classes/class-bbp-admin.php CHANGED
@@ -106,10 +106,14 @@ class BBP_Admin {
106
  $bbp = bbpress();
107
  $this->admin_dir = trailingslashit( $bbp->includes_dir . 'admin' ); // Admin path
108
  $this->admin_url = trailingslashit( $bbp->includes_url . 'admin' ); // Admin url
109
- $this->images_url = trailingslashit( $this->admin_url . 'images' ); // Admin images URL
110
- $this->styles_url = trailingslashit( $this->admin_url . 'styles' ); // Admin styles URL
111
  $this->css_url = trailingslashit( $this->admin_url . 'assets/css' ); // Admin css URL
112
  $this->js_url = trailingslashit( $this->admin_url . 'assets/js' ); // Admin js URL
 
 
 
 
113
  }
114
 
115
  /**
@@ -156,12 +160,15 @@ class BBP_Admin {
156
 
157
  /** General Actions ***************************************************/
158
 
159
- add_action( 'bbp_admin_menu', array( $this, 'admin_menus' ) ); // Add menu item to settings menu
160
- add_action( 'bbp_admin_head', array( $this, 'admin_head' ) ); // Add general styling to the admin area
161
- add_action( 'bbp_register_admin_style', array( $this, 'register_admin_style' ) ); // Add green admin style
162
- add_action( 'bbp_register_admin_settings', array( $this, 'register_admin_settings' ) ); // Add settings
163
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles' ) ); // Add enqueued CSS
164
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); // Add enqueued JS
 
 
 
165
 
166
  /** Notices ***********************************************************/
167
 
@@ -169,6 +176,10 @@ class BBP_Admin {
169
  add_action( 'bbp_admin_init', array( $this, 'hide_notices' ) );
170
  add_action( 'bbp_admin_notices', array( $this, 'output_notices' ) );
171
 
 
 
 
 
172
  /** Ajax **************************************************************/
173
 
174
  // No _nopriv_ equivalent - users must be logged in
@@ -209,20 +220,22 @@ class BBP_Admin {
209
  $this->notices = array();
210
  }
211
 
212
- // Database upgrade skipped?
213
- $skipped = get_option( '_bbp_db_upgrade_skipped', 0 );
 
 
214
 
215
- // Database upgrade skipped!
216
- if ( ! empty( $skipped ) && ( $skipped < 260 ) && current_user_can( 'bbp_tools_upgrade_page' ) ) {
217
 
218
  // Link to upgrade page
219
- $upgrade_url = add_query_arg( array( 'page' => 'bbp-upgrade' ), admin_url( 'tools.php' ) );
220
- $dismiss_url = wp_nonce_url( add_query_arg( array( 'bbp-hide-notice' => 'bbp-skip-upgrade' ) ), 'bbp-hide-notice' );
221
- $upgrade_link = '<a href="' . esc_url( $upgrade_url ) . '">' . esc_html__( 'Go Upgrade', 'bbpress' ) . '</a>';
222
- $dismiss_link = '<a href="' . esc_url( $dismiss_url ) . '">' . esc_html__( 'Hide Forever', 'bbpress' ) . '</a>';
223
  $bbp_dashicon = '<span class="bbpress-logo-icon"></span>';
224
  $message = $bbp_dashicon . sprintf(
225
- esc_html__( 'bbPress requires a manual database upgrade. %s or %s', 'bbpress' ),
226
  $upgrade_link,
227
  $dismiss_link
228
  );
@@ -239,8 +252,13 @@ class BBP_Admin {
239
  */
240
  public function hide_notices() {
241
 
 
 
 
 
 
242
  // Bail if not hiding a notice
243
- if ( empty( $_GET['bbp-hide-notice'] ) ) {
244
  return;
245
  }
246
 
@@ -253,11 +271,11 @@ class BBP_Admin {
253
  check_admin_referer( 'bbp-hide-notice' );
254
 
255
  // Maybe delete notices
256
- switch ( $_GET['bbp-hide-notice'] ) {
257
 
258
  // Skipped upgrade notice
259
- case 'bbp-skip-upgrade' :
260
- delete_option( '_bbp_db_upgrade_skipped' );
261
  break;
262
  }
263
  }
@@ -362,12 +380,48 @@ class BBP_Admin {
362
  * @return string
363
  */
364
  private function esc_notice( $message = '' ) {
 
 
365
  $tags = wp_kses_allowed_html();
 
 
 
 
 
 
 
366
  $text = wp_kses( $message, $tags );
367
 
 
368
  return $text;
369
  }
370
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
371
  /**
372
  * Add the admin menus
373
  *
@@ -375,38 +429,43 @@ class BBP_Admin {
375
  */
376
  public function admin_menus() {
377
 
 
378
  $hooks = array();
379
 
380
  // Get the tools pages
381
  $tools = bbp_get_tools_admin_pages();
382
 
383
  // Loop through tools and check
384
- foreach ( $tools as $tool ) {
385
-
386
- // Try to add the admin page
387
- $page = add_management_page(
388
- $tool['name'],
389
- $tool['name'],
390
- $tool['cap'],
391
- $tool['page'],
392
- $tool['func']
393
- );
394
-
395
- // Add page to hook if user can view it
396
- if ( false !== $page ) {
397
- $hooks[] = $page;
 
 
398
  }
399
- }
400
 
401
- // Fudge the highlighted subnav item when on a bbPress admin page
402
- foreach ( $hooks as $hook ) {
403
- add_action( "admin_head-{$hook}", 'bbp_tools_modify_menu_highlight' );
 
 
 
404
  }
405
 
406
  // Forums Tools Root
407
  add_management_page(
408
  esc_html__( 'Forums', 'bbpress' ),
409
- esc_html__( 'Forums', 'bbpress' ),
410
  'bbp_tools_page',
411
  'bbp-repair',
412
  'bbp_admin_repair_page'
@@ -679,27 +738,15 @@ class BBP_Admin {
679
  */
680
  public function enqueue_scripts() {
681
 
 
 
 
682
  // Enqueue suggest for forum/topic/reply autocompletes
683
  wp_enqueue_script( 'suggest' );
684
 
685
- // Minified
686
- $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
687
-
688
- // Get the version to use for JS
689
- $version = bbp_get_version();
690
-
691
- // Footer JS
692
- wp_register_script( 'bbp-admin-badge-js', $this->js_url . 'badge' . $suffix . '.js', array(), $version, true );
693
-
694
- // Header JS
695
- wp_register_script( 'bbp-admin-common-js', $this->js_url . 'common' . $suffix . '.js', array( 'jquery', 'suggest' ), $version );
696
- wp_register_script( 'bbp-admin-topics-js', $this->js_url . 'topics' . $suffix . '.js', array( 'jquery' ), $version );
697
- wp_register_script( 'bbp-admin-replies-js', $this->js_url . 'replies' . $suffix . '.js', array( 'jquery', 'suggest' ), $version );
698
- wp_register_script( 'bbp-converter', $this->js_url . 'converter' . $suffix . '.js', array( 'jquery', 'postbox', 'dashboard' ), $version );
699
-
700
  // Post type checker (only topics and replies)
701
- if ( 'post' === get_current_screen()->base ) {
702
- switch ( get_current_screen()->post_type ) {
703
  case bbp_get_reply_post_type() :
704
  case bbp_get_topic_post_type() :
705
 
@@ -707,11 +754,11 @@ class BBP_Admin {
707
  wp_enqueue_script( 'bbp-admin-common-js' );
708
 
709
  // Topics admin
710
- if ( bbp_get_topic_post_type() === get_current_screen()->post_type ) {
711
  wp_enqueue_script( 'bbp-admin-topics-js' );
712
 
713
  // Replies admin
714
- } elseif ( bbp_get_reply_post_type() === get_current_screen()->post_type ) {
715
  wp_enqueue_script( 'bbp-admin-replies-js' );
716
  }
717
 
@@ -719,7 +766,7 @@ class BBP_Admin {
719
  }
720
 
721
  // Enqueue the badge JS
722
- } elseif ( in_array( get_current_screen()->id, array( 'dashboard_page_bbp-about', 'dashboard_page_bbp-credits' ), true ) ) {
723
  wp_enqueue_script( 'bbp-admin-badge-js' );
724
  }
725
  }
@@ -730,15 +777,6 @@ class BBP_Admin {
730
  * @since 2.6.0 bbPress (r5224)
731
  */
732
  public function enqueue_styles() {
733
-
734
- // RTL and/or minified
735
- $suffix = is_rtl() ? '-rtl' : '';
736
- $suffix .= defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
737
-
738
- // Register admin CSS with dashicons dependency
739
- wp_register_style( 'bbp-admin-css', $this->css_url . 'admin' . $suffix . '.css', array( 'dashicons' ), bbp_get_version() );
740
-
741
- // Enqueue
742
  wp_enqueue_style( 'bbp-admin-css' );
743
  }
744
 
@@ -761,25 +799,30 @@ class BBP_Admin {
761
  }
762
 
763
  /**
764
- * Registers the bbPress admin color scheme
765
  *
766
- * Because wp-content can exist outside of the WordPress root there is no
767
- * way to be certain what the relative path of the admin images is.
768
- * We are including the two most common configurations here, just in case.
769
  *
770
- * @since 2.0.0 bbPress (r2521)
771
  */
772
- public function register_admin_style() {
 
 
 
 
 
 
 
 
 
 
773
 
774
  // Color schemes are not available when running out of src
775
  if ( false !== strpos( plugin_basename( bbpress()->file ), 'src' ) ) {
776
  return;
777
  }
778
 
779
- // RTL and/or minified
780
- $suffix = is_rtl() ? '-rtl' : '';
781
- $suffix .= defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
782
-
783
  // Mint
784
  wp_admin_css_color(
785
  'bbp-mint',
@@ -799,6 +842,33 @@ class BBP_Admin {
799
  );
800
  }
801
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
802
  /**
803
  * Allow keymaster role to save Forums settings
804
  *
@@ -898,7 +968,8 @@ class BBP_Admin {
898
  private function screen_header() {
899
  list( $display_version ) = explode( '-', bbp_get_version() ); ?>
900
 
901
- <h1><?php printf( esc_html__( 'Welcome to bbPress %s', 'bbpress' ), $display_version ); ?></h1>
 
902
  <div class="about-text"><?php printf( esc_html__( 'bbPress is fun to use, contains no artificial colors or preservatives, and is absolutely wonderful in every environment. Your community is going to love using it.', 'bbpress' ), $display_version ); ?></div>
903
 
904
  <span class="bbp-hive" id="bbp-hive"></span>
@@ -1030,7 +1101,7 @@ class BBP_Admin {
1030
  <h3 class="wp-people-group"><?php esc_html_e( 'Contributing Developers', 'bbpress' ); ?></h3>
1031
  <ul class="wp-people-group " id="wp-people-group-contributing-developers">
1032
  <li class="wp-person" id="wp-person-sergeybiryukov">
1033
- <a href="https://profiles.wordpress.org/SergeyBiryukov" class="web"><img src="http://0.gravatar.com/avatar/750b7b0fcd855389264c2b1294d61bd6?s?s=120" class="gravatar" alt="" />Sergey Biryukov</a>
1034
  <span class="title"><?php esc_html_e( 'Core Developer', 'bbpress' ); ?></span>
1035
  </li>
1036
  <li class="wp-person" id="wp-person-thebrandonallen">
@@ -1136,7 +1207,8 @@ class BBP_Admin {
1136
  $action = isset( $_GET['action'] ) ? $_GET['action'] : ''; ?>
1137
 
1138
  <div class="wrap">
1139
- <h1><?php esc_html_e( 'Update Forum', 'bbpress' ); ?></h1>
 
1140
 
1141
  <?php
1142
 
@@ -1179,7 +1251,8 @@ class BBP_Admin {
1179
  $action = isset( $_GET['action'] ) ? $_GET['action'] : ''; ?>
1180
 
1181
  <div class="wrap">
1182
- <h1><?php esc_html_e( 'Update Forums', 'bbpress' ); ?></h1>
 
1183
 
1184
  <?php
1185
 
106
  $bbp = bbpress();
107
  $this->admin_dir = trailingslashit( $bbp->includes_dir . 'admin' ); // Admin path
108
  $this->admin_url = trailingslashit( $bbp->includes_url . 'admin' ); // Admin url
109
+
110
+ // Assets
111
  $this->css_url = trailingslashit( $this->admin_url . 'assets/css' ); // Admin css URL
112
  $this->js_url = trailingslashit( $this->admin_url . 'assets/js' ); // Admin js URL
113
+ $this->styles_url = trailingslashit( $this->admin_url . 'styles' ); // Admin styles URL
114
+
115
+ // Deprecated
116
+ $this->images_url = trailingslashit( $this->admin_url . 'images' ); // Admin images URL
117
  }
118
 
119
  /**
160
 
161
  /** General Actions ***************************************************/
162
 
163
+ add_action( 'bbp_admin_menu', array( $this, 'admin_menus' ) );
164
+ add_action( 'bbp_admin_head', array( $this, 'admin_head' ) );
165
+ add_action( 'bbp_register_admin_styles', array( $this, 'register_admin_styles' ) );
166
+ add_action( 'bbp_register_admin_scripts', array( $this, 'register_admin_scripts' ) );
167
+ add_action( 'bbp_register_admin_settings', array( $this, 'register_admin_settings' ) );
168
+
169
+ // Enqueue styles & scripts
170
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles' ) );
171
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
172
 
173
  /** Notices ***********************************************************/
174
 
176
  add_action( 'bbp_admin_init', array( $this, 'hide_notices' ) );
177
  add_action( 'bbp_admin_notices', array( $this, 'output_notices' ) );
178
 
179
+ /** Upgrades **********************************************************/
180
+
181
+ add_action( 'bbp_admin_init', array( $this, 'add_upgrade_count' ) );
182
+
183
  /** Ajax **************************************************************/
184
 
185
  // No _nopriv_ equivalent - users must be logged in
220
  $this->notices = array();
221
  }
222
 
223
+ // Get page
224
+ $page = ! empty( $_GET['page'] )
225
+ ? sanitize_key( $_GET['page'] )
226
+ : false;
227
 
228
+ // Pending database upgrades!
229
+ if ( ( 'bbp-upgrade' !== $page ) && bbp_get_pending_upgrades() && current_user_can( 'bbp_tools_upgrade_page' ) ) {
230
 
231
  // Link to upgrade page
232
+ $upgrade_url = add_query_arg( array( 'page' => 'bbp-upgrade', 'status' => 'pending' ), admin_url( 'tools.php' ) );
233
+ $dismiss_url = wp_nonce_url( add_query_arg( array( 'bbp-hide-notice' => 'bbp-skip-upgrades' ) ), 'bbp-hide-notice' );
234
+ $upgrade_link = '<a href="' . esc_url( $upgrade_url ) . '">' . esc_html__( 'Learn More', 'bbpress' ) . '</a>';
235
+ $dismiss_link = '<a href="' . esc_url( $dismiss_url ) . '">' . esc_html__( 'Hide For Now', 'bbpress' ) . '</a>';
236
  $bbp_dashicon = '<span class="bbpress-logo-icon"></span>';
237
  $message = $bbp_dashicon . sprintf(
238
+ esc_html__( 'bbPress requires a manual database upgrade. %s or %s.', 'bbpress' ),
239
  $upgrade_link,
240
  $dismiss_link
241
  );
252
  */
253
  public function hide_notices() {
254
 
255
+ // Hiding a notice?
256
+ $hiding_notice = ! empty( $_GET['bbp-hide-notice'] )
257
+ ? sanitize_key( $_GET['bbp-hide-notice'] )
258
+ : false;
259
+
260
  // Bail if not hiding a notice
261
+ if ( empty( $hiding_notice ) ) {
262
  return;
263
  }
264
 
271
  check_admin_referer( 'bbp-hide-notice' );
272
 
273
  // Maybe delete notices
274
+ switch ( $hiding_notice ) {
275
 
276
  // Skipped upgrade notice
277
+ case 'bbp-skip-upgrades' :
278
+ bbp_clear_pending_upgrades();
279
  break;
280
  }
281
  }
380
  * @return string
381
  */
382
  private function esc_notice( $message = '' ) {
383
+
384
+ // Get allowed HTML
385
  $tags = wp_kses_allowed_html();
386
+
387
+ // Allow spans with classes in notices
388
+ $tags['span'] = array(
389
+ 'class' => 1
390
+ );
391
+
392
+ // Parse the message and remove unsafe tags
393
  $text = wp_kses( $message, $tags );
394
 
395
+ // Return the message text
396
  return $text;
397
  }
398
 
399
+ /**
400
+ * Maybe append the pending upgrade count to the "Tools" menu.
401
+ *
402
+ * @since 2.6.0 bbPress (r6896)
403
+ *
404
+ * @global menu $menu
405
+ */
406
+ public function add_upgrade_count() {
407
+ global $menu;
408
+
409
+ // Skip if no menu (AJAX, shortinit, etc...)
410
+ if ( empty( $menu ) ) {
411
+ return;
412
+ }
413
+
414
+ // Loop through menus, and maybe add the upgrade count
415
+ foreach ( $menu as $menu_index => $menu_item ) {
416
+ $found = array_search( 'tools.php', $menu_item, true );
417
+
418
+ if ( false !== $found ) {
419
+ $menu[ $menu_index ][ 0 ] = bbp_maybe_append_pending_upgrade_count( $menu[ $menu_index ][ 0 ] );
420
+ continue;
421
+ }
422
+ }
423
+ }
424
+
425
  /**
426
  * Add the admin menus
427
  *
429
  */
430
  public function admin_menus() {
431
 
432
+ // Default hooks array
433
  $hooks = array();
434
 
435
  // Get the tools pages
436
  $tools = bbp_get_tools_admin_pages();
437
 
438
  // Loop through tools and check
439
+ if ( ! empty( $tools ) ) {
440
+ foreach ( $tools as $tool ) {
441
+
442
+ // Try to add the admin page
443
+ $page = add_management_page(
444
+ $tool['name'],
445
+ $tool['name'],
446
+ $tool['cap'],
447
+ $tool['page'],
448
+ $tool['func']
449
+ );
450
+
451
+ // Add page to hook if user can view it
452
+ if ( false !== $page ) {
453
+ $hooks[] = $page;
454
+ }
455
  }
 
456
 
457
+ // Fudge the highlighted subnav item when on a bbPress admin page
458
+ if ( ! empty( $hooks ) ) {
459
+ foreach ( $hooks as $hook ) {
460
+ add_action( "admin_head-{$hook}", 'bbp_tools_modify_menu_highlight' );
461
+ }
462
+ }
463
  }
464
 
465
  // Forums Tools Root
466
  add_management_page(
467
  esc_html__( 'Forums', 'bbpress' ),
468
+ bbp_maybe_append_pending_upgrade_count( esc_html__( 'Forums', 'bbpress' ) ),
469
  'bbp_tools_page',
470
  'bbp-repair',
471
  'bbp_admin_repair_page'
738
  */
739
  public function enqueue_scripts() {
740
 
741
+ // Get the current screen
742
+ $current_screen = get_current_screen();
743
+
744
  // Enqueue suggest for forum/topic/reply autocompletes
745
  wp_enqueue_script( 'suggest' );
746
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
747
  // Post type checker (only topics and replies)
748
+ if ( 'post' === $current_screen->base ) {
749
+ switch ( $current_screen->post_type ) {
750
  case bbp_get_reply_post_type() :
751
  case bbp_get_topic_post_type() :
752
 
754
  wp_enqueue_script( 'bbp-admin-common-js' );
755
 
756
  // Topics admin
757
+ if ( bbp_get_topic_post_type() === $current_screen->post_type ) {
758
  wp_enqueue_script( 'bbp-admin-topics-js' );
759
 
760
  // Replies admin
761
+ } elseif ( bbp_get_reply_post_type() === $current_screen->post_type ) {
762
  wp_enqueue_script( 'bbp-admin-replies-js' );
763
  }
764
 
766
  }
767
 
768
  // Enqueue the badge JS
769
+ } elseif ( in_array( $current_screen->id, array( 'dashboard_page_bbp-about', 'dashboard_page_bbp-credits' ), true ) ) {
770
  wp_enqueue_script( 'bbp-admin-badge-js' );
771
  }
772
  }
777
  * @since 2.6.0 bbPress (r5224)
778
  */
779
  public function enqueue_styles() {
 
 
 
 
 
 
 
 
 
780
  wp_enqueue_style( 'bbp-admin-css' );
781
  }
782
 
799
  }
800
 
801
  /**
802
+ * Registers the bbPress admin styling and color schemes
803
  *
804
+ * Because wp-content can exist outside of the WordPress root, there is no
805
+ * way to be certain what the relative path of admin images is.
 
806
  *
807
+ * @since 2.6.0 bbPress (r2521)
808
  */
809
+ public function register_admin_styles() {
810
+
811
+ // RTL and/or minified
812
+ $suffix = is_rtl() ? '-rtl' : '';
813
+ $suffix .= defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
814
+
815
+ // Get the version to use for JS
816
+ $version = bbp_get_version();
817
+
818
+ // Register admin CSS with dashicons dependency
819
+ wp_register_style( 'bbp-admin-css', $this->css_url . 'admin' . $suffix . '.css', array( 'dashicons' ), $version );
820
 
821
  // Color schemes are not available when running out of src
822
  if ( false !== strpos( plugin_basename( bbpress()->file ), 'src' ) ) {
823
  return;
824
  }
825
 
 
 
 
 
826
  // Mint
827
  wp_admin_css_color(
828
  'bbp-mint',
842
  );
843
  }
844
 
845
+ /**
846
+ * Registers the bbPress admin color schemes
847
+ *
848
+ * Because wp-content can exist outside of the WordPress root there is no
849
+ * way to be certain what the relative path of the admin images is.
850
+ * We are including the two most common configurations here, just in case.
851
+ *
852
+ * @since 2.6.0 bbPress (r2521)
853
+ */
854
+ public function register_admin_scripts() {
855
+
856
+ // Minified
857
+ $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
858
+
859
+ // Get the version to use for JS
860
+ $version = bbp_get_version();
861
+
862
+ // Header JS
863
+ wp_register_script( 'bbp-admin-common-js', $this->js_url . 'common' . $suffix . '.js', array( 'jquery', 'suggest' ), $version );
864
+ wp_register_script( 'bbp-admin-topics-js', $this->js_url . 'topics' . $suffix . '.js', array( 'jquery' ), $version );
865
+ wp_register_script( 'bbp-admin-replies-js', $this->js_url . 'replies' . $suffix . '.js', array( 'jquery', 'suggest' ), $version );
866
+ wp_register_script( 'bbp-converter', $this->js_url . 'converter' . $suffix . '.js', array( 'jquery', 'postbox', 'dashboard' ), $version );
867
+
868
+ // Footer JS
869
+ wp_register_script( 'bbp-admin-badge-js', $this->js_url . 'badge' . $suffix . '.js', array(), $version, true );
870
+ }
871
+
872
  /**
873
  * Allow keymaster role to save Forums settings
874
  *
968
  private function screen_header() {
969
  list( $display_version ) = explode( '-', bbp_get_version() ); ?>
970
 
971
+ <h1 class="wp-heading-inline"><?php printf( esc_html__( 'Welcome to bbPress %s', 'bbpress' ), $display_version ); ?></h1>
972
+ <hr class="wp-header-end">
973
  <div class="about-text"><?php printf( esc_html__( 'bbPress is fun to use, contains no artificial colors or preservatives, and is absolutely wonderful in every environment. Your community is going to love using it.', 'bbpress' ), $display_version ); ?></div>
974
 
975
  <span class="bbp-hive" id="bbp-hive"></span>
1101
  <h3 class="wp-people-group"><?php esc_html_e( 'Contributing Developers', 'bbpress' ); ?></h3>
1102
  <ul class="wp-people-group " id="wp-people-group-contributing-developers">
1103
  <li class="wp-person" id="wp-person-sergeybiryukov">
1104
+ <a href="https://profiles.wordpress.org/SergeyBiryukov" class="web"><img src="http://0.gravatar.com/avatar/750b7b0fcd855389264c2b1294d61bd6?s=120" class="gravatar" alt="" />Sergey Biryukov</a>
1105
  <span class="title"><?php esc_html_e( 'Core Developer', 'bbpress' ); ?></span>
1106
  </li>
1107
  <li class="wp-person" id="wp-person-thebrandonallen">
1207
  $action = isset( $_GET['action'] ) ? $_GET['action'] : ''; ?>
1208
 
1209
  <div class="wrap">
1210
+ <h1 class="wp-heading-inline"><?php esc_html_e( 'Update Forum', 'bbpress' ); ?></h1>
1211
+ <hr class="wp-header-end">
1212
 
1213
  <?php
1214
 
1251
  $action = isset( $_GET['action'] ) ? $_GET['action'] : ''; ?>
1252
 
1253
  <div class="wrap">
1254
+ <h1 class="wp-heading-inline"><?php esc_html_e( 'Update Forums', 'bbpress' ); ?></h1>
1255
+ <hr class="wp-header-end">
1256
 
1257
  <?php
1258
 
includes/admin/metaboxes.php CHANGED
@@ -685,10 +685,7 @@ function bbp_topic_engagements_metabox( $post ) {
685
 
686
  // Users were found
687
  if ( ! empty( $user_ids ) && bbp_has_users( $args ) ) :
688
-
689
- while ( bbp_users() ) : bbp_the_user();
690
- echo get_avatar( bbp_get_user_id(), 32 );
691
- endwhile;
692
 
693
  // No users
694
  else :
@@ -721,10 +718,7 @@ function bbp_topic_favorites_metabox( $post ) {
721
 
722
  // Users were found
723
  if ( ! empty( $user_ids ) && bbp_has_users( $args ) ) :
724
-
725
- while ( bbp_users() ) : bbp_the_user();
726
- echo get_avatar( bbp_get_user_id(), 32 );
727
- endwhile;
728
 
729
  // No users
730
  else :
@@ -737,19 +731,24 @@ function bbp_topic_favorites_metabox( $post ) {
737
  }
738
 
739
  /**
740
- * See who subscribed to a topic
741
  *
742
  * @since 2.6.0 bbPress (r6197)
743
  * @since 2.6.0 bbPress (r6333) Updated to use BBP_User_Query
744
  */
745
  function bbp_topic_subscriptions_metabox( $post ) {
746
 
 
 
 
 
 
747
  // Get user IDs
748
  $user_ids = bbp_get_subscribers( $post->ID );
749
 
750
  // Output
751
  ?>
752
- <input name="bbp_topic_subscription" id="bbp_topic_subscription" type="hidden" value="bbp_subscribe" <?php bbp_form_topic_subscribed(); ?> />
753
  <p><?php
754
 
755
  // Relationships
@@ -759,10 +758,7 @@ function bbp_topic_subscriptions_metabox( $post ) {
759
 
760
  // Users were found
761
  if ( ! empty( $user_ids ) && bbp_has_users( $args ) ) :
762
-
763
- while ( bbp_users() ) : bbp_the_user();
764
- echo get_avatar( bbp_get_user_id(), 32 );
765
- endwhile;
766
 
767
  // No users
768
  else :
@@ -775,7 +771,7 @@ function bbp_topic_subscriptions_metabox( $post ) {
775
  }
776
 
777
  /**
778
- * See who subscribed to a forum
779
  *
780
  * @since 2.6.0 bbPress (r6197)
781
  * @since 2.6.0 bbPress (r6333) Updated to use BBP_User_Query
@@ -795,10 +791,7 @@ function bbp_forum_subscriptions_metabox( $post ) {
795
 
796
  // Users were found
797
  if ( ! empty( $user_ids ) && bbp_has_users( $args ) ) :
798
-
799
- while ( bbp_users() ) : bbp_the_user();
800
- echo get_avatar( bbp_get_user_id(), 32 );
801
- endwhile;
802
 
803
  // No users
804
  else :
@@ -809,3 +802,31 @@ function bbp_forum_subscriptions_metabox( $post ) {
809
 
810
  do_action( 'bbp_forum_subscriptions_metabox', $post );
811
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
685
 
686
  // Users were found
687
  if ( ! empty( $user_ids ) && bbp_has_users( $args ) ) :
688
+ bbp_metabox_user_links();
 
 
 
689
 
690
  // No users
691
  else :
718
 
719
  // Users were found
720
  if ( ! empty( $user_ids ) && bbp_has_users( $args ) ) :
721
+ bbp_metabox_user_links();
 
 
 
722
 
723
  // No users
724
  else :
731
  }
732
 
733
  /**
734
+ * See who is subscribed to a topic
735
  *
736
  * @since 2.6.0 bbPress (r6197)
737
  * @since 2.6.0 bbPress (r6333) Updated to use BBP_User_Query
738
  */
739
  function bbp_topic_subscriptions_metabox( $post ) {
740
 
741
+ // Current user subscription
742
+ $input_value = bbp_is_user_subscribed( bbp_get_current_user_id(), $post->ID )
743
+ ? 'bbp_subscribe' // maintain existing subscription
744
+ : ''; // do not add or remove subscription
745
+
746
  // Get user IDs
747
  $user_ids = bbp_get_subscribers( $post->ID );
748
 
749
  // Output
750
  ?>
751
+ <input name="bbp_topic_subscription" id="bbp_topic_subscription" type="hidden" value="<?php echo esc_attr( $input_value ); ?>" />
752
  <p><?php
753
 
754
  // Relationships
758
 
759
  // Users were found
760
  if ( ! empty( $user_ids ) && bbp_has_users( $args ) ) :
761
+ bbp_metabox_user_links();
 
 
 
762
 
763
  // No users
764
  else :
771
  }
772
 
773
  /**
774
+ * See who is subscribed to a forum
775
  *
776
  * @since 2.6.0 bbPress (r6197)
777
  * @since 2.6.0 bbPress (r6333) Updated to use BBP_User_Query
791
 
792
  // Users were found
793
  if ( ! empty( $user_ids ) && bbp_has_users( $args ) ) :
794
+ bbp_metabox_user_links();
 
 
 
795
 
796
  // No users
797
  else :
802
 
803
  do_action( 'bbp_forum_subscriptions_metabox', $post );
804
  }
805
+
806
+ /**
807
+ * Loop through queried metabox users, and output links to their avatars
808
+ *
809
+ * Developers Note: This function may change in a future release to include
810
+ * additional actions, so do not use this function in any third party plugin.
811
+ *
812
+ * @since 2.6.0 bbPress (r6913)
813
+ */
814
+ function bbp_metabox_user_links() {
815
+
816
+ // Loop through users
817
+ while ( bbp_users() ) {
818
+
819
+ // Set the iterator
820
+ bbp_the_user();
821
+
822
+ // Get the user ID, URL, and Avatar
823
+ $user_id = bbp_get_user_id();
824
+ $user_url = bbp_get_user_profile_url( $user_id );
825
+ $user_avatar = get_avatar( $user_id, 32, '', '', array(
826
+ 'force_display' => true
827
+ ) );
828
+
829
+ // Output a link to the user avatar
830
+ echo '<a href="' . esc_url( $user_url ) . '">' . $user_avatar . '</a>';
831
+ }
832
+ }
includes/admin/parser.php CHANGED
@@ -222,7 +222,7 @@ $this->tag = false;
222
  $this->state = BBCODE_LEXSTATE_TEXT;
223
  if (strlen($this->text) > 0)
224
  return $this->token = BBCODE_TEXT;
225
- continue;
226
  }
227
  default:
228
  $this->tag = false;
@@ -234,11 +234,11 @@ case 91:
234
  case 123:
235
  if (preg_match($this->pat_comment, $this->text)) {
236
  $this->state = BBCODE_LEXSTATE_TEXT;
237
- continue;
238
  }
239
  if (preg_match($this->pat_comment2, $this->text)) {
240
  $this->state = BBCODE_LEXSTATE_TEXT;
241
- continue;
242
  }
243
  if (preg_match($this->pat_wiki, $this->text, $matches)) {
244
  $this->tag = Array('_name' => 'wiki', '_endtag' => false,
@@ -1482,7 +1482,7 @@ $end = $this->Internal_CleanupWSByIteratingPointer(@$rule['before_endtag'], 0, $
1482
  $this->Internal_CleanupWSByPoppingStack(@$rule['after_tag'], $output);
1483
  $tag_body = $this->Internal_CollectTextReverse($output, count($output)-1, $end);
1484
  $this->Internal_CleanupWSByPoppingStack(@$rule['before_tag'], $this->stack);
1485
- @$this->Internal_UpdateParamsForMissingEndTag(@$token[BBCODE_STACK_TAG]);
1486
  $tag_output = $this->DoTag(BBCODE_OUTPUT, $name,
1487
  @$token[BBCODE_STACK_TAG]['_default'], @$token[BBCODE_STACK_TAG], $tag_body);
1488
  $output = Array(Array(
@@ -1779,7 +1779,7 @@ $params['_content'] = $contents;
1779
  $params['_defaultcontent'] = strlen(@$params['_default']) ? $params['_default'] : $contents;
1780
  return $this->FillTemplate(@$tag_rule['template'], $params, @$tag_rule['default']);
1781
  }
1782
- function Internal_UpdateParamsForMissingEndTag(&$params) {
1783
  switch ($this->tag_marker) {
1784
  case '[': $tail_marker = ']'; break;
1785
  case '<': $tail_marker = '>'; break;
@@ -1788,6 +1788,7 @@ case '(': $tail_marker = ')'; break;
1788
  default: $tail_marker = $this->tag_marker; break;
1789
  }
1790
  $params['_endtag'] = $this->tag_marker . '/' . $params['_name'] . $tail_marker;
 
1791
  }
1792
  function Internal_ProcessIsolatedTag($tag_name, $tag_params, $tag_rule) {
1793
  if (!$this->DoTag(BBCODE_CHECK, $tag_name, @$tag_params['_default'], $tag_params, "")) {
@@ -2087,4 +2088,3 @@ $result = trim($result);
2087
  return $result;
2088
  }
2089
  }
2090
-
222
  $this->state = BBCODE_LEXSTATE_TEXT;
223
  if (strlen($this->text) > 0)
224
  return $this->token = BBCODE_TEXT;
225
+ continue 2;
226
  }
227
  default:
228
  $this->tag = false;
234
  case 123:
235
  if (preg_match($this->pat_comment, $this->text)) {
236
  $this->state = BBCODE_LEXSTATE_TEXT;
237
+ continue 2;
238
  }
239
  if (preg_match($this->pat_comment2, $this->text)) {
240
  $this->state = BBCODE_LEXSTATE_TEXT;
241
+ continue 2;
242
  }
243
  if (preg_match($this->pat_wiki, $this->text, $matches)) {
244
  $this->tag = Array('_name' => 'wiki', '_endtag' => false,
1482
  $this->Internal_CleanupWSByPoppingStack(@$rule['after_tag'], $output);
1483
  $tag_body = $this->Internal_CollectTextReverse($output, count($output)-1, $end);
1484
  $this->Internal_CleanupWSByPoppingStack(@$rule['before_tag'], $this->stack);
1485
+ @$token[BBCODE_STACK_TAG]=@$this->Internal_UpdateParamsForMissingEndTag(@$token[BBCODE_STACK_TAG]);
1486
  $tag_output = $this->DoTag(BBCODE_OUTPUT, $name,
1487
  @$token[BBCODE_STACK_TAG]['_default'], @$token[BBCODE_STACK_TAG], $tag_body);
1488
  $output = Array(Array(
1779
  $params['_defaultcontent'] = strlen(@$params['_default']) ? $params['_default'] : $contents;
1780
  return $this->FillTemplate(@$tag_rule['template'], $params, @$tag_rule['default']);
1781
  }
1782
+ function Internal_UpdateParamsForMissingEndTag($params) {
1783
  switch ($this->tag_marker) {
1784
  case '[': $tail_marker = ']'; break;
1785
  case '<': $tail_marker = '>'; break;
1788
  default: $tail_marker = $this->tag_marker; break;
1789
  }
1790
  $params['_endtag'] = $this->tag_marker . '/' . $params['_name'] . $tail_marker;
1791
+ return $params;
1792
  }
1793
  function Internal_ProcessIsolatedTag($tag_name, $tag_params, $tag_rule) {
1794
  if (!$this->DoTag(BBCODE_CHECK, $tag_name, @$tag_params['_default'], $tag_params, "")) {
2088
  return $result;
2089
  }
2090
  }
 
includes/admin/settings.php CHANGED
@@ -108,7 +108,7 @@ function bbp_admin_get_settings_fields() {
108
 
109
  'bbp_settings_users' => array(
110
 
111
- // Allow global access
112
  '_bbp_default_role' => array(
113
  'sanitize_callback' => 'sanitize_text_field',
114
  'args' => array()
@@ -275,7 +275,7 @@ function bbp_admin_get_settings_fields() {
275
 
276
  'bbp_settings_per_page' => array(
277
 
278
- // Replies per page setting
279
  '_bbp_topics_per_page' => array(
280
  'title' => esc_html__( 'Topics', 'bbpress' ),
281
  'callback' => 'bbp_admin_setting_callback_topics_per_page',
@@ -296,7 +296,7 @@ function bbp_admin_get_settings_fields() {
296
 
297
  'bbp_settings_per_rss_page' => array(
298
 
299
- // Replies per page setting
300
  '_bbp_topics_per_rss_page' => array(
301
  'title' => esc_html__( 'Topics', 'bbpress' ),
302
  'callback' => 'bbp_admin_setting_callback_topics_per_rss_page',
@@ -527,7 +527,7 @@ function bbp_admin_get_settings_fields() {
527
  'args' => array( 'label_for'=> '_bbp_converter_db_user' )
528
  ),
529
 
530
- // Database User
531
  '_bbp_converter_db_pass' => array(
532
  'title' => esc_html__( 'Database Password', 'bbpress' ),
533
  'callback' => 'bbp_converter_setting_callback_dbpass',
@@ -535,7 +535,7 @@ function bbp_admin_get_settings_fields() {
535
  'args' => array( 'label_for'=> '_bbp_converter_db_pass' )
536
  ),
537
 
538
- // Database User
539
  '_bbp_converter_db_prefix' => array(
540
  'title' => esc_html__( 'Table Prefix', 'bbpress' ),
541
  'callback' => 'bbp_converter_setting_callback_dbprefix',
@@ -1494,7 +1494,7 @@ function bbp_admin_settings() {
1494
  ?>
1495
 
1496
  <div class="wrap">
1497
- <h1><?php esc_html_e( 'Forums Settings', 'bbpress' ) ?></h1>
1498
  <hr class="wp-header-end">
1499
 
1500
  <form action="options.php" method="post">
@@ -1773,9 +1773,9 @@ function bbp_converter_settings_page() {
1773
  : esc_html__( 'Ready to go.', 'bbpress' ); ?>
1774
 
1775
  <div class="wrap">
1776
- <h1><?php esc_html_e( 'Forum Tools', 'bbpress' ); ?></h1>
1777
  <hr class="wp-header-end">
1778
- <h2 class="nav-tab-wrapper"><?php bbp_tools_admin_tabs( esc_html__( 'Import Forums', 'bbpress' ) ); ?></h2>
1779
 
1780
  <div class="bbp-converter-wrap">
1781
  <div id="poststuff" class="bbp-converter-monitor-wrap">
108
 
109
  'bbp_settings_users' => array(
110
 
111
+ // Default role setting
112
  '_bbp_default_role' => array(
113
  'sanitize_callback' => 'sanitize_text_field',
114
  'args' => array()
275
 
276
  'bbp_settings_per_page' => array(
277
 
278
+ // Topics per page setting
279
  '_bbp_topics_per_page' => array(
280
  'title' => esc_html__( 'Topics', 'bbpress' ),
281
  'callback' => 'bbp_admin_setting_callback_topics_per_page',
296
 
297
  'bbp_settings_per_rss_page' => array(
298
 
299
+ // Topics per page setting
300
  '_bbp_topics_per_rss_page' => array(
301
  'title' => esc_html__( 'Topics', 'bbpress' ),
302
  'callback' => 'bbp_admin_setting_callback_topics_per_rss_page',
527
  'args' => array( 'label_for'=> '_bbp_converter_db_user' )
528
  ),
529
 
530
+ // Database Password
531
  '_bbp_converter_db_pass' => array(
532
  'title' => esc_html__( 'Database Password', 'bbpress' ),
533
  'callback' => 'bbp_converter_setting_callback_dbpass',
535
  'args' => array( 'label_for'=> '_bbp_converter_db_pass' )
536
  ),
537
 
538
+ // Database Prefix
539
  '_bbp_converter_db_prefix' => array(
540
  'title' => esc_html__( 'Table Prefix', 'bbpress' ),
541
  'callback' => 'bbp_converter_setting_callback_dbprefix',
1494
  ?>
1495
 
1496
  <div class="wrap">
1497
+ <h1 class="wp-heading-inline"><?php esc_html_e( 'Forums Settings', 'bbpress' ) ?></h1>
1498
  <hr class="wp-header-end">
1499
 
1500
  <form action="options.php" method="post">
1773
  : esc_html__( 'Ready to go.', 'bbpress' ); ?>
1774
 
1775
  <div class="wrap">
1776
+ <h1 class="wp-heading-inline"><?php esc_html_e( 'Forum Tools', 'bbpress' ); ?></h1>
1777
  <hr class="wp-header-end">
1778
+ <h2 class="nav-tab-wrapper"><?php bbp_tools_admin_tabs( 'bbp-converter' ); ?></h2>
1779
 
1780
  <div class="bbp-converter-wrap">
1781
  <div id="poststuff" class="bbp-converter-monitor-wrap">
includes/admin/tools.php CHANGED
@@ -71,6 +71,7 @@ function bbp_register_repair_tool( $args = array() ) {
71
  'callback' => '',
72
  'priority' => 0,
73
  'overhead' => 'low',
 
74
  'components' => array(),
75
 
76
  // @todo
@@ -92,6 +93,7 @@ function bbp_register_repair_tool( $args = array() ) {
92
  'callback' => $r['callback'],
93
  'overhead' => $r['overhead'],
94
  'components' => $r['components'],
 
95
 
96
  // @todo
97
  'success' => $r['success'],
@@ -238,6 +240,18 @@ function bbp_register_default_repair_tools() {
238
  'components' => array( bbp_get_forum_post_type(), bbp_get_reply_post_type() )
239
  ) );
240
 
 
 
 
 
 
 
 
 
 
 
 
 
241
  // Count topic replies
242
  bbp_register_repair_tool( array(
243
  'id' => 'bbp-topic-replies',
@@ -245,7 +259,7 @@ function bbp_register_default_repair_tools() {
245
  'title' => esc_html__( 'Recount replies in each topic', 'bbpress' ),
246
  'description' => esc_html__( 'Run this if the number of topics in any topics are incorrect.', 'bbpress' ),
247
  'callback' => 'bbp_admin_repair_topic_reply_count',
248
- 'priority' => 60,
249
  'overhead' => 'high',
250
  'components' => array( bbp_get_topic_post_type(), bbp_get_reply_post_type() )
251
  ) );
@@ -255,9 +269,9 @@ function bbp_register_default_repair_tools() {
255
  'id' => 'bbp-topic-hidden-replies',
256
  'type' => 'repair',
257
  'title' => esc_html__( 'Recount pending, spammed, and trashed replies in each topic', 'bbpress' ),
258
- 'description' => esc_html__( 'Run this if non-public replies display incorrectly.', 'bbpress' ),
259
  'callback' => 'bbp_admin_repair_topic_hidden_reply_count',
260
- 'priority' => 65,
261
  'overhead' => 'high',
262
  'components' => array( bbp_get_topic_post_type(), bbp_get_reply_post_type() )
263
  ) );
@@ -269,7 +283,7 @@ function bbp_register_default_repair_tools() {
269
  'title' => esc_html__( 'Recount topics for each user', 'bbpress' ),
270
  'description' => esc_html__( 'Run this to get fresh topic counts for all users.', 'bbpress' ),
271
  'callback' => 'bbp_admin_repair_user_topic_count',
272
- 'priority' => 70,
273
  'overhead' => 'medium',
274
  'components' => array( bbp_get_topic_post_type(), bbp_get_user_rewrite_id() )
275
  ) );
@@ -281,7 +295,7 @@ function bbp_register_default_repair_tools() {
281
  'title' => esc_html__( 'Recount replies for each user', 'bbpress' ),
282
  'description' => esc_html__( 'Run this to get fresh reply counts for all users.', 'bbpress' ),
283
  'callback' => 'bbp_admin_repair_user_reply_count',
284
- 'priority' => 75,
285
  'overhead' => 'medium',
286
  'components' => array( bbp_get_reply_post_type(), bbp_get_user_rewrite_id() )
287
  ) );
@@ -293,7 +307,7 @@ function bbp_register_default_repair_tools() {
293
  'title' => esc_html__( 'Remove unpublished topics from user favorites', 'bbpress' ),
294
  'description' => esc_html__( 'Run this to remove trashed or deleted topics from all user favorites.', 'bbpress' ),
295
  'callback' => 'bbp_admin_repair_user_favorites',
296
- 'priority' => 80,
297
  'overhead' => 'medium',
298
  'components' => array( bbp_get_topic_post_type(), bbp_get_user_rewrite_id() )
299
  ) );
@@ -305,7 +319,7 @@ function bbp_register_default_repair_tools() {
305
  'title' => esc_html__( 'Remove unpublished topics from user subscriptions', 'bbpress' ),
306
  'description' => esc_html__( 'Run this to remove trashed or deleted topics from all user subscriptions.', 'bbpress' ),
307
  'callback' => 'bbp_admin_repair_user_topic_subscriptions',
308
- 'priority' => 85,
309
  'overhead' => 'medium',
310
  'components' => array( bbp_get_topic_post_type(), bbp_get_user_rewrite_id() )
311
  ) );
@@ -317,7 +331,7 @@ function bbp_register_default_repair_tools() {
317
  'title' => esc_html__( 'Remove unpublished forums from user subscriptions', 'bbpress' ),
318
  'description' => esc_html__( 'Run this to remove trashed or deleted forums from all user subscriptions.', 'bbpress' ),
319
  'callback' => 'bbp_admin_repair_user_forum_subscriptions',
320
- 'priority' => 90,
321
  'overhead' => 'medium',
322
  'components' => array( bbp_get_forum_post_type(), bbp_get_user_rewrite_id() )
323
  ) );
@@ -329,7 +343,7 @@ function bbp_register_default_repair_tools() {
329
  'title' => esc_html__( 'Remap all users to default forum roles', 'bbpress' ),
330
  'description' => esc_html__( 'Run this if users have issues accessing the forums.', 'bbpress' ),
331
  'callback' => 'bbp_admin_repair_user_roles',
332
- 'priority' => 95,
333
  'overhead' => 'low',
334
  'components' => array( bbp_get_user_rewrite_id() )
335
  ) );
@@ -339,9 +353,10 @@ function bbp_register_default_repair_tools() {
339
  'id' => 'bbp-user-topic-engagements-move',
340
  'type' => 'upgrade',
341
  'title' => esc_html__( 'Upgrade user topic engagements', 'bbpress' ),
342
- 'description' => esc_html__( 'Run this if you just upgraded to 2.6.', 'bbpress' ),
343
  'callback' => 'bbp_admin_upgrade_user_engagements',
344
- 'priority' => 100,
 
345
  'overhead' => 'high',
346
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_engagements_rewrite_id() )
347
  ) );
@@ -351,9 +366,10 @@ function bbp_register_default_repair_tools() {
351
  'id' => 'bbp-user-favorites-move',
352
  'type' => 'upgrade',
353
  'title' => esc_html__( 'Upgrade user topic favorites', 'bbpress' ),
354
- 'description' => esc_html__( 'Run this if you just upgraded to 2.6.', 'bbpress' ),
355
  'callback' => 'bbp_admin_upgrade_user_favorites',
356
- 'priority' => 105,
 
357
  'overhead' => 'high',
358
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_favorites_rewrite_id() )
359
  ) );
@@ -363,9 +379,10 @@ function bbp_register_default_repair_tools() {
363
  'id' => 'bbp-user-topic-subscriptions-move',
364
  'type' => 'upgrade',
365
  'title' => esc_html__( 'Upgrade user topic subscriptions', 'bbpress' ),
366
- 'description' => esc_html__( 'Run this if you just upgraded to 2.6.', 'bbpress' ),
367
  'callback' => 'bbp_admin_upgrade_user_topic_subscriptions',
368
- 'priority' => 110,
 
369
  'overhead' => 'high',
370
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_subscriptions_rewrite_id() )
371
  ) );
@@ -375,9 +392,10 @@ function bbp_register_default_repair_tools() {
375
  'id' => 'bbp-user-forum-subscriptions-move',
376
  'type' => 'upgrade',
377
  'title' => esc_html__( 'Upgrade user forum subscriptions', 'bbpress' ),
378
- 'description' => esc_html__( 'Run this if you just upgraded to 2.6.', 'bbpress' ),
379
  'callback' => 'bbp_admin_upgrade_user_forum_subscriptions',
380
- 'priority' => 115,
 
381
  'overhead' => 'high',
382
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_subscriptions_rewrite_id() )
383
  ) );
@@ -387,9 +405,10 @@ function bbp_register_default_repair_tools() {
387
  'id' => 'bbp-user-favorites-delete',
388
  'type' => 'upgrade',
389
  'title' => esc_html__( 'Remove favorites from user-meta', 'bbpress' ),
390
- 'description' => esc_html__( 'Run this to delete old data, after confirming successful favorites upgrade above.', 'bbpress' ),
391
  'callback' => 'bbp_admin_upgrade_remove_favorites_from_usermeta',
392
- 'priority' => 120,
 
393
  'overhead' => 'medium',
394
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_favorites_rewrite_id() )
395
  ) );
@@ -399,9 +418,10 @@ function bbp_register_default_repair_tools() {
399
  'id' => 'bbp-user-topic-subscriptions-delete',
400
  'type' => 'upgrade',
401
  'title' => esc_html__( 'Remove topic subscriptions from user-meta', 'bbpress' ),
402
- 'description' => esc_html__( 'Run this to delete old data, after confirming successful topic subscriptions upgrade above.', 'bbpress' ),
403
  'callback' => 'bbp_admin_upgrade_remove_topic_subscriptions_from_usermeta',
404
- 'priority' => 125,
 
405
  'overhead' => 'medium',
406
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_subscriptions_rewrite_id() )
407
  ) );
@@ -411,9 +431,10 @@ function bbp_register_default_repair_tools() {
411
  'id' => 'bbp-user-forum-subscriptions-delete',
412
  'type' => 'upgrade',
413
  'title' => esc_html__( 'Remove forum subscriptions from user-meta', 'bbpress' ),
414
- 'description' => esc_html__( 'Run this to delete old data, after confirming successful forum subscriptions upgrade above.', 'bbpress' ),
415
  'callback' => 'bbp_admin_upgrade_remove_forum_subscriptions_from_usermeta',
416
- 'priority' => 130,
 
417
  'overhead' => 'medium',
418
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_subscriptions_rewrite_id() )
419
  ) );
@@ -425,7 +446,8 @@ function bbp_register_default_repair_tools() {
425
  'title' => esc_html__( 'Upgrade BuddyPress Group Forum relationships', 'bbpress' ),
426
  'description' => esc_html__( 'Run this if you just upgraded BuddyPress Forums from Legacy.', 'bbpress' ),
427
  'callback' => 'bbp_admin_upgrade_group_forum_relationship',
428
- 'priority' => 135,
 
429
  'overhead' => 'low',
430
  'components' => array( bbp_get_forum_post_type() )
431
  ) );
@@ -468,10 +490,12 @@ function bbp_tools_admin_tabs( $active_tab = '' ) {
468
  }
469
 
470
  // Setup tab HTML
471
- $is_current = (bool) ( $tab['name'] == $active_tab );
472
  $tab_class = $is_current ? $active_class : $idle_class;
473
  $tab_url = add_query_arg( array( 'page' => $tab['page'] ), admin_url( 'tools.php' ) );
474
- $tabs_html .= '<a href="' . esc_url( $tab_url ) . '" class="' . esc_attr( $tab_class ) . '">' . esc_html( $tab['name'] ) . '</a>';
 
 
475
  }
476
 
477
  // Output the tabs
@@ -481,7 +505,7 @@ function bbp_tools_admin_tabs( $active_tab = '' ) {
481
  /**
482
  * Return possible tools pages
483
  *
484
- * @since 2.6.0 (r6273)
485
  *
486
  * @return array
487
  */
@@ -496,7 +520,7 @@ function bbp_get_tools_admin_pages() {
496
  'page' => 'bbp-repair',
497
  'func' => 'bbp_admin_repair_page',
498
  'cap' => 'bbp_tools_repair_page',
499
- 'name' => esc_html__( 'Repair Forums', 'bbpress' ),
500
 
501
  // Deprecated 2.6.0
502
  'href' => add_query_arg( array( 'page' => 'bbp-repair' ), $tools_url )
@@ -505,7 +529,7 @@ function bbp_get_tools_admin_pages() {
505
  'page' => 'bbp-upgrade',
506
  'func' => 'bbp_admin_upgrade_page',
507
  'cap' => 'bbp_tools_upgrade_page',
508
- 'name' => esc_html__( 'Upgrade Forums', 'bbpress' ),
509
 
510
  // Deprecated 2.6.0
511
  'href' => add_query_arg( array( 'page' => 'bbp-upgrade' ), $tools_url )
71
  'callback' => '',
72
  'priority' => 0,
73
  'overhead' => 'low',
74
+ 'version' => '',
75
  'components' => array(),
76
 
77
  // @todo
93
  'callback' => $r['callback'],
94
  'overhead' => $r['overhead'],
95
  'components' => $r['components'],
96
+ 'version' => $r['version'],
97
 
98
  // @todo
99
  'success' => $r['success'],
240
  'components' => array( bbp_get_forum_post_type(), bbp_get_reply_post_type() )
241
  ) );
242
 
243
+ // Count non-published replies to each forum
244
+ bbp_register_repair_tool( array(
245
+ 'id' => 'bbp-forum-hidden-replies',
246
+ 'type' => 'repair',
247
+ 'title' => esc_html__( 'Recount pending, spammed, and trashed replies in each forum', 'bbpress' ),
248
+ 'description' => esc_html__( 'Run this if non-public replies display incorrectly in forums.', 'bbpress' ),
249
+ 'callback' => 'bbp_admin_repair_forum_hidden_reply_count',
250
+ 'priority' => 60,
251
+ 'overhead' => 'high',
252
+ 'components' => array( bbp_get_forum_post_type(), bbp_get_reply_post_type() )
253
+ ) );
254
+
255
  // Count topic replies
256
  bbp_register_repair_tool( array(
257
  'id' => 'bbp-topic-replies',
259
  'title' => esc_html__( 'Recount replies in each topic', 'bbpress' ),
260
  'description' => esc_html__( 'Run this if the number of topics in any topics are incorrect.', 'bbpress' ),
261
  'callback' => 'bbp_admin_repair_topic_reply_count',
262
+ 'priority' => 65,
263
  'overhead' => 'high',
264
  'components' => array( bbp_get_topic_post_type(), bbp_get_reply_post_type() )
265
  ) );
269
  'id' => 'bbp-topic-hidden-replies',
270
  'type' => 'repair',
271
  'title' => esc_html__( 'Recount pending, spammed, and trashed replies in each topic', 'bbpress' ),
272
+ 'description' => esc_html__( 'Run this if non-public replies display incorrectly in topics.', 'bbpress' ),
273
  'callback' => 'bbp_admin_repair_topic_hidden_reply_count',
274
+ 'priority' => 70,
275
  'overhead' => 'high',
276
  'components' => array( bbp_get_topic_post_type(), bbp_get_reply_post_type() )
277
  ) );
283
  'title' => esc_html__( 'Recount topics for each user', 'bbpress' ),
284
  'description' => esc_html__( 'Run this to get fresh topic counts for all users.', 'bbpress' ),
285
  'callback' => 'bbp_admin_repair_user_topic_count',
286
+ 'priority' => 75,
287
  'overhead' => 'medium',
288
  'components' => array( bbp_get_topic_post_type(), bbp_get_user_rewrite_id() )
289
  ) );
295
  'title' => esc_html__( 'Recount replies for each user', 'bbpress' ),
296
  'description' => esc_html__( 'Run this to get fresh reply counts for all users.', 'bbpress' ),
297
  'callback' => 'bbp_admin_repair_user_reply_count',
298
+ 'priority' => 80,
299
  'overhead' => 'medium',
300
  'components' => array( bbp_get_reply_post_type(), bbp_get_user_rewrite_id() )
301
  ) );
307
  'title' => esc_html__( 'Remove unpublished topics from user favorites', 'bbpress' ),
308
  'description' => esc_html__( 'Run this to remove trashed or deleted topics from all user favorites.', 'bbpress' ),
309
  'callback' => 'bbp_admin_repair_user_favorites',
310
+ 'priority' => 85,
311
  'overhead' => 'medium',
312
  'components' => array( bbp_get_topic_post_type(), bbp_get_user_rewrite_id() )
313
  ) );
319
  'title' => esc_html__( 'Remove unpublished topics from user subscriptions', 'bbpress' ),
320
  'description' => esc_html__( 'Run this to remove trashed or deleted topics from all user subscriptions.', 'bbpress' ),
321
  'callback' => 'bbp_admin_repair_user_topic_subscriptions',
322
+ 'priority' => 90,
323
  'overhead' => 'medium',
324
  'components' => array( bbp_get_topic_post_type(), bbp_get_user_rewrite_id() )
325
  ) );
331
  'title' => esc_html__( 'Remove unpublished forums from user subscriptions', 'bbpress' ),
332
  'description' => esc_html__( 'Run this to remove trashed or deleted forums from all user subscriptions.', 'bbpress' ),
333
  'callback' => 'bbp_admin_repair_user_forum_subscriptions',
334
+ 'priority' => 95,
335
  'overhead' => 'medium',
336
  'components' => array( bbp_get_forum_post_type(), bbp_get_user_rewrite_id() )
337
  ) );
343
  'title' => esc_html__( 'Remap all users to default forum roles', 'bbpress' ),
344
  'description' => esc_html__( 'Run this if users have issues accessing the forums.', 'bbpress' ),
345
  'callback' => 'bbp_admin_repair_user_roles',
346
+ 'priority' => 100,
347
  'overhead' => 'low',
348
  'components' => array( bbp_get_user_rewrite_id() )
349
  ) );
353
  'id' => 'bbp-user-topic-engagements-move',
354
  'type' => 'upgrade',
355
  'title' => esc_html__( 'Upgrade user topic engagements', 'bbpress' ),
356
+ 'description' => esc_html__( 'Copies engagements from user meta to topic meta.', 'bbpress' ),
357
  'callback' => 'bbp_admin_upgrade_user_engagements',
358
+ 'priority' => 105,
359
+ 'version' => '2.6.0',
360
  'overhead' => 'high',
361
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_engagements_rewrite_id() )
362
  ) );
366
  'id' => 'bbp-user-favorites-move',
367
  'type' => 'upgrade',
368
  'title' => esc_html__( 'Upgrade user topic favorites', 'bbpress' ),
369
+ 'description' => esc_html__( 'Copies favorites from user meta to topic meta.', 'bbpress' ),
370
  'callback' => 'bbp_admin_upgrade_user_favorites',
371
+ 'priority' => 110,
372
+ 'version' => '2.6.0',
373
  'overhead' => 'high',
374
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_favorites_rewrite_id() )
375
  ) );
379
  'id' => 'bbp-user-topic-subscriptions-move',
380
  'type' => 'upgrade',
381
  'title' => esc_html__( 'Upgrade user topic subscriptions', 'bbpress' ),
382
+ 'description' => esc_html__( 'Copies topic subscriptions from user meta to topic meta.', 'bbpress' ),
383
  'callback' => 'bbp_admin_upgrade_user_topic_subscriptions',
384
+ 'priority' => 115,
385
+ 'version' => '2.6.0',
386
  'overhead' => 'high',
387
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_subscriptions_rewrite_id() )
388
  ) );
392
  'id' => 'bbp-user-forum-subscriptions-move',
393
  'type' => 'upgrade',
394
  'title' => esc_html__( 'Upgrade user forum subscriptions', 'bbpress' ),
395
+ 'description' => esc_html__( 'Copies forum subscriptions from user meta to forum meta.', 'bbpress' ),
396
  'callback' => 'bbp_admin_upgrade_user_forum_subscriptions',
397
+ 'priority' => 120,
398
+ 'version' => '2.6.0',
399
  'overhead' => 'high',
400
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_subscriptions_rewrite_id() )
401
  ) );
405
  'id' => 'bbp-user-favorites-delete',
406
  'type' => 'upgrade',
407
  'title' => esc_html__( 'Remove favorites from user-meta', 'bbpress' ),
408
+ 'description' => esc_html__( 'Run this to delete old data (after confirming successful favorites upgrade)', 'bbpress' ),
409
  'callback' => 'bbp_admin_upgrade_remove_favorites_from_usermeta',
410
+ 'priority' => 125,
411
+ 'version' => '2.6.1',
412
  'overhead' => 'medium',
413
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_favorites_rewrite_id() )
414
  ) );
418
  'id' => 'bbp-user-topic-subscriptions-delete',
419
  'type' => 'upgrade',
420
  'title' => esc_html__( 'Remove topic subscriptions from user-meta', 'bbpress' ),
421
+ 'description' => esc_html__( 'Run this to delete old data (after confirming successful topic subscriptions upgrade)', 'bbpress' ),
422
  'callback' => 'bbp_admin_upgrade_remove_topic_subscriptions_from_usermeta',
423
+ 'priority' => 130,
424
+ 'version' => '2.6.1',
425
  'overhead' => 'medium',
426
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_subscriptions_rewrite_id() )
427
  ) );
431
  'id' => 'bbp-user-forum-subscriptions-delete',
432
  'type' => 'upgrade',
433
  'title' => esc_html__( 'Remove forum subscriptions from user-meta', 'bbpress' ),
434
+ 'description' => esc_html__( 'Run this to delete old data (after confirming successful forum subscriptions upgrade)', 'bbpress' ),
435
  'callback' => 'bbp_admin_upgrade_remove_forum_subscriptions_from_usermeta',
436
+ 'priority' => 135,
437
+ 'version' => '2.6.1',
438
  'overhead' => 'medium',
439
  'components' => array( bbp_get_user_rewrite_id(), bbp_get_user_subscriptions_rewrite_id() )
440
  ) );
446
  'title' => esc_html__( 'Upgrade BuddyPress Group Forum relationships', 'bbpress' ),
447
  'description' => esc_html__( 'Run this if you just upgraded BuddyPress Forums from Legacy.', 'bbpress' ),
448
  'callback' => 'bbp_admin_upgrade_group_forum_relationship',
449
+ 'priority' => 140,
450
+ 'version' => esc_html__( 'Any', 'bbpress' ),
451
  'overhead' => 'low',
452
  'components' => array( bbp_get_forum_post_type() )
453
  ) );
490
  }
491
 
492
  // Setup tab HTML
493
+ $is_current = (bool) ( $tab['page'] === $active_tab );
494
  $tab_class = $is_current ? $active_class : $idle_class;
495
  $tab_url = add_query_arg( array( 'page' => $tab['page'] ), admin_url( 'tools.php' ) );
496
+
497
+ // Tab name is not escaped - may contain HTML
498
+ $tabs_html .= '<a href="' . esc_url( $tab_url ) . '" class="' . esc_attr( $tab_class ) . '">' . $tab['name'] . '</a>';
499
  }
500
 
501
  // Output the tabs
505
  /**
506
  * Return possible tools pages
507
  *
508
+ * @since 2.6.0 bbPress (r6273)
509
  *
510
  * @return array
511
  */
520
  'page' => 'bbp-repair',
521
  'func' => 'bbp_admin_repair_page',
522
  'cap' => 'bbp_tools_repair_page',
523
+ 'name' => bbp_maybe_append_pending_upgrade_count( esc_html__( 'Repair Forums', 'bbpress' ), 'repair' ),
524
 
525
  // Deprecated 2.6.0
526
  'href' => add_query_arg( array( 'page' => 'bbp-repair' ), $tools_url )
529
  'page' => 'bbp-upgrade',
530
  'func' => 'bbp_admin_upgrade_page',
531
  'cap' => 'bbp_tools_upgrade_page',
532
+ 'name' => bbp_maybe_append_pending_upgrade_count( esc_html__( 'Upgrade Forums', 'bbpress' ), 'upgrade' ),
533
 
534
  // Deprecated 2.6.0
535
  'href' => add_query_arg( array( 'page' => 'bbp-upgrade' ), $tools_url )
includes/admin/tools/common.php CHANGED
@@ -10,6 +10,58 @@
10
  // Exit if accessed directly
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  /**
14
  * Output the URL to run a specific repair tool
15
  *
@@ -43,7 +95,7 @@ function bbp_admin_repair_tool_run_url( $component = array() ) {
43
  );
44
 
45
  // Url
46
- $nonced = wp_nonce_url( add_query_arg( $args, admin_url( 'tools.php' ) ), 'bbpress-do-counts' );
47
 
48
  // Filter & return
49
  return apply_filters( 'bbp_get_admin_repair_tool_run_url', $nonced, $component );
@@ -93,20 +145,28 @@ function bbp_admin_repair_handler() {
93
 
94
  check_admin_referer( 'bbpress-do-counts' );
95
 
96
- // Stores messages
97
- $messages = array();
 
 
98
 
99
- // Kill all the caches, because we don't know what's where anymore
100
  wp_cache_flush();
101
 
102
  // Get the list
103
  $list = bbp_get_admin_repair_tools();
104
 
 
 
 
105
  // Run through checked repair tools
106
- if ( ! empty( $_GET['checked'] ) ) {
107
- foreach ( $_GET['checked'] as $item_id ) {
108
  if ( isset( $list[ $item_id ] ) && is_callable( $list[ $item_id ]['callback'] ) ) {
109
  $messages[] = call_user_func( $list[ $item_id ]['callback'] );
 
 
 
110
  }
111
  }
112
  }
@@ -118,7 +178,8 @@ function bbp_admin_repair_handler() {
118
  }
119
  }
120
 
121
- // @todo Redirect away from here
 
122
  }
123
 
124
  /**
@@ -126,7 +187,7 @@ function bbp_admin_repair_handler() {
126
  *
127
  * @since 2.6.0 bbPress (r5885)
128
  *
129
- * @param string $type repair|upgrade The type of tools to get. Default to 'repair'
130
  * @return array
131
  */
132
  function bbp_get_admin_repair_tools( $type = '' ) {
@@ -153,16 +214,31 @@ function bbp_get_admin_repair_tools( $type = '' ) {
153
  * @return array
154
  */
155
  function bbp_get_admin_repair_tool_registered_components() {
156
- $tools = bbp_get_admin_repair_tools( str_replace( 'bbp-', '', sanitize_key( $_GET['page'] ) ) );
157
- $plucked = wp_list_pluck( $tools, 'components' );
158
- $retval = array();
159
 
160
- foreach ( $plucked as $components ) {
161
- foreach ( $components as $component ) {
162
- if ( in_array( $component, $retval, true ) ) {
163
- continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  }
165
- $retval[] = $component;
166
  }
167
  }
168
 
@@ -200,9 +276,14 @@ function bbp_admin_repair_list_components_filter() {
200
  : '';
201
 
202
  // Get registered components
203
- $components = bbp_get_admin_repair_tool_registered_components(); ?>
 
 
 
 
 
204
 
205
- <label class="screen-reader-text" for="cat"><?php esc_html_e( 'Filter by Component', 'bbpress' ); ?></label>
206
  <select name="components" id="components" class="postform">
207
  <option value="" <?php selected( $selected, false ); ?>><?php esc_html_e( 'All Components', 'bbpress' ); ?></option>
208
 
@@ -213,11 +294,98 @@ function bbp_admin_repair_list_components_filter() {
213
  <?php endforeach; ?>
214
 
215
  </select>
216
- <input type="submit" name="filter_action" id="components-submit" class="button" value="<?php esc_html_e( 'Filter', 'bbpress' ); ?>">
217
 
218
  <?php
219
  }
220
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  /**
222
  * Maybe translate a repair tool overhead name
223
  *
@@ -295,7 +463,40 @@ function bbp_admin_repair_tool_translate_component( $component = '' ) {
295
  }
296
 
297
  /**
298
- * Get the array of the repair list
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
299
  *
300
  * @since 2.0.0 bbPress (r2613)
301
  *
@@ -307,50 +508,104 @@ function bbp_admin_repair_list( $type = 'repair' ) {
307
  $repair_list = array();
308
 
309
  // Get the available tools
310
- $list = bbp_get_admin_repair_tools( $type );
311
- $search = ! empty( $_GET['s'] ) ? stripslashes( $_GET['s'] ) : '';
312
- $overhead = ! empty( $_GET['overhead'] ) ? sanitize_key( $_GET['overhead'] ) : '';
313
- $component = ! empty( $_GET['components'] ) ? sanitize_key( $_GET['components'] ) : '';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
 
315
  // Overhead filter
316
  if ( ! empty( $overhead ) ) {
317
  $list = wp_list_filter( $list, array( 'overhead' => $overhead ) );
318
  }
319
 
320
- // Loop through and key by priority for sorting
321
- foreach ( $list as $id => $tool ) {
322
 
323
- // Component filter
324
- if ( ! empty( $component ) ) {
325
- if ( ! in_array( $component, $tool['components'], true ) ) {
326
- continue;
 
 
 
 
327
  }
328
- }
329
 
330
- // Search
331
- if ( ! empty( $search ) ) {
332
- if ( ! strstr( strtolower( $tool['title'] ), strtolower( $search ) ) ) {
333
- continue;
 
334
  }
335
- }
336
 
337
- // Add to repair list
338
- $repair_list[ $tool['priority'] ] = array(
339
- 'id' => sanitize_key( $id ),
340
- 'type' => $tool['type'],
341
- 'title' => $tool['title'],
342
- 'description' => $tool['description'],
343
- 'callback' => $tool['callback'],
344
- 'overhead' => $tool['overhead'],
345
- 'components' => $tool['components'],
346
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
347
  }
348
 
349
  // Sort
350
- ksort( $repair_list );
351
 
352
  // Filter & return
353
- return (array) apply_filters( 'bbp_repair_list', $repair_list );
354
  }
355
 
356
  /**
@@ -364,17 +619,26 @@ function bbp_admin_repair_list( $type = 'repair' ) {
364
  function bbp_get_admin_repair_tool_components( $item = array() ) {
365
 
366
  // Get the tools URL
367
- $tools_url = add_query_arg( array( 'page' => sanitize_key( $_GET['page'] ) ), admin_url( 'tools.php' ) );
368
 
369
  // Define links array
370
- $links = array();
 
 
 
371
 
372
  // Loop through tool components and build links
373
- foreach ( $item['components'] as $component ) {
374
- $args = array( 'components' => $component );
375
- $filter_url = add_query_arg( $args, $tools_url );
376
- $name = bbp_admin_repair_tool_translate_component( $component );
377
- $links[] = '<a href="' . esc_url( $filter_url ) . '">' . esc_html( $name ) . '</a>';
 
 
 
 
 
 
378
  }
379
 
380
  // Filter & return
@@ -382,7 +646,83 @@ function bbp_get_admin_repair_tool_components( $item = array() ) {
382
  }
383
 
384
  /**
385
- * Output filter links for components for a specific admin repair tool
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
386
  *
387
  * @since 2.6.0 bbPress (r5885)
388
  *
@@ -393,7 +733,7 @@ function bbp_admin_repair_tool_overhead_filters( $args = array() ) {
393
  }
394
 
395
  /**
396
- * Get filter links for components for a specific admin repair tool
397
  *
398
  * @since 2.6.0 bbPress (r5885)
399
  *
@@ -424,94 +764,170 @@ function bbp_get_admin_repair_tool_overhead_filters( $args = array() ) {
424
  $r['sep'] = $r['separator'];
425
  }
426
 
427
- // Get page
428
- $page = sanitize_key( $_GET['page'] );
429
-
430
  // Count the tools
431
- $tools = bbp_get_admin_repair_tools( str_replace( 'bbp-', '', $page ) );
432
 
433
  // Get the tools URL
434
- $tools_url = add_query_arg( array( 'page' => $page ), admin_url( 'tools.php' ) );
435
 
436
  // Define arrays
437
  $overheads = $links = array();
438
 
439
  // Loop through tools and count overheads
440
- foreach ( $tools as $tool ) {
 
441
 
442
- // Get the overhead level
443
- $overhead = $tool['overhead'];
444
 
445
- // Set an empty count
446
- if ( empty( $overheads[ $overhead ] ) ) {
447
- $overheads[ $overhead ] = 0;
448
- }
449
 
450
- // Bump the overhead count
451
- $overheads[ $overhead ]++;
 
452
  }
453
 
 
 
 
 
 
454
  // Create the "All" link
455
- $current = empty( $_GET['overhead'] ) ? 'current' : '';
456
  $links[] = $r['link_before'] . '<a href="' . esc_url( $tools_url ) . '" class="' . esc_attr( $current ) . '">' . sprintf( esc_html__( 'All %s', 'bbpress' ), $r['count_before'] . count( $tools ) . $r['count_after'] ) . '</a>' . $r['link_after'];
457
 
458
- // Sort
459
- ksort( $overheads );
460
 
461
- // Loop through overheads and build filter
462
- foreach ( $overheads as $overhead => $count ) {
463
 
464
- // Build the filter URL
465
- $key = sanitize_key( $overhead );
466
- $args = array( 'overhead' => $key );
467
- $filter_url = add_query_arg( $args, $tools_url );
468
 
469
- // Figure out separator and active class
470
- $current = ! empty( $_GET['overhead'] ) && ( sanitize_key( $_GET['overhead'] ) === $key )
471
- ? 'current'
472
- : '';
473
 
474
- // Counts to show
475
- if ( ! empty( $count ) ) {
476
- $overhead_count = $r['count_before'] . $count . $r['count_after'];
477
- }
 
 
 
 
 
478
 
479
- // Build the link
480
- $links[] = $r['link_before'] . '<a href="' . esc_url( $filter_url ) . '" class="' . esc_attr( $current ) . '">' . bbp_admin_repair_tool_translate_overhead( $overhead ) . $overhead_count . '</a>' . $r['link_after'];
 
481
  }
482
 
483
  // Surround output with before & after strings
484
  $output = $r['before'] . implode( $r['sep'], $links ) . $r['after'];
485
 
486
  // Filter & return
487
- return apply_filters( 'bbp_get_admin_repair_tool_components', $output, $r, $args );
488
  }
489
 
 
 
490
  /**
491
- * Get filter links for overhead for a specific admin repair tool
 
 
 
 
 
 
 
 
 
 
 
492
  *
493
  * @since 2.6.0 bbPress (r5885)
494
  *
495
- * @param array $item
496
  * @return array
497
  */
498
- function bbp_get_admin_repair_tool_overhead( $item = array() ) {
499
 
500
- // Get the tools URL
501
- $tools_url = add_query_arg( array( 'page' => sanitize_key( $_GET['page'] ) ), admin_url( 'tools.php' ) );
 
 
 
 
 
 
 
502
 
503
- // Define links array
504
- $links = array();
505
- $overheads = array( $item['overhead'] );
506
 
507
- // Loop through tool overhead and build links
508
- foreach ( $overheads as $overhead ) {
509
- $args = array( 'overhead' => $overhead );
510
- $filter_url = add_query_arg( $args, $tools_url );
511
- $name = bbp_admin_repair_tool_translate_overhead( $overhead );
512
- $links[] = '<a href="' . esc_url( $filter_url ) . '">' . esc_html( $name ) . '</a>';
513
  }
514
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
515
  // Filter & return
516
- return (array) apply_filters( 'bbp_get_admin_repair_tool_overhead', $links, $item );
517
  }
10
  // Exit if accessed directly
11
  defined( 'ABSPATH' ) || exit;
12
 
13
+ /**
14
+ * Return the current admin repair tool page
15
+ *
16
+ * @since 2.6.0 bbPress (r6894)
17
+ *
18
+ * @return string
19
+ */
20
+ function bbp_get_admin_repair_tool_page() {
21
+ return sanitize_key( $_GET['page'] );
22
+ }
23
+
24
+ /**
25
+ * Return the current admin repair tool page ID
26
+ *
27
+ * @since 2.6.0 bbPress (r6894)
28
+ *
29
+ * @return string
30
+ */
31
+ function bbp_get_admin_repair_tool_page_id() {
32
+
33
+ // Get the page
34
+ $page = bbp_get_admin_repair_tool_page();
35
+
36
+ // Maybe trim prefix off of page
37
+ if ( ! empty( $page ) && ( 0 === strpos( $page, 'bbp-' ) ) ) {
38
+ $page = str_replace( 'bbp-', '', $page );
39
+ } else {
40
+ $page = '';
41
+ }
42
+
43
+ return $page;
44
+ }
45
+
46
+ /**
47
+ * Return a URL to the repair tool page
48
+ *
49
+ * @since 2.6.0 bbPress (r6894)
50
+ *
51
+ * @param array $args
52
+ *
53
+ * @return string
54
+ */
55
+ function bbp_get_admin_repair_tool_page_url( $args = array() ) {
56
+
57
+ // Parse arguments
58
+ $r = wp_parse_args( $args, array(
59
+ 'page' => bbp_get_admin_repair_tool_page()
60
+ ) );
61
+
62
+ return add_query_arg( $r, admin_url( 'tools.php' ) );
63
+ }
64
+
65
  /**
66
  * Output the URL to run a specific repair tool
67
  *
95
  );
96
 
97
  // Url
98
+ $nonced = wp_nonce_url( bbp_get_admin_repair_tool_page_url( $args ), 'bbpress-do-counts' );
99
 
100
  // Filter & return
101
  return apply_filters( 'bbp_get_admin_repair_tool_run_url', $nonced, $component );
145
 
146
  check_admin_referer( 'bbpress-do-counts' );
147
 
148
+ // Parse list of checked repairs
149
+ $checked = ! empty( $_GET['checked'] )
150
+ ? array_map( 'sanitize_key', $_GET['checked'] )
151
+ : array();
152
 
153
+ // Flush all caches before running tools
154
  wp_cache_flush();
155
 
156
  // Get the list
157
  $list = bbp_get_admin_repair_tools();
158
 
159
+ // Stores messages
160
+ $messages = array();
161
+
162
  // Run through checked repair tools
163
+ if ( count( $checked ) ) {
164
+ foreach ( $checked as $item_id ) {
165
  if ( isset( $list[ $item_id ] ) && is_callable( $list[ $item_id ]['callback'] ) ) {
166
  $messages[] = call_user_func( $list[ $item_id ]['callback'] );
167
+
168
+ // Remove from pending
169
+ bbp_remove_pending_upgrade( $item_id );
170
  }
171
  }
172
  }
178
  }
179
  }
180
 
181
+ // Flush all caches after running tools
182
+ wp_cache_flush();
183
  }
184
 
185
  /**
187
  *
188
  * @since 2.6.0 bbPress (r5885)
189
  *
190
+ * @param string $type repair|upgrade The type of tools to get. Default empty for all tools.
191
  * @return array
192
  */
193
  function bbp_get_admin_repair_tools( $type = '' ) {
214
  * @return array
215
  */
216
  function bbp_get_admin_repair_tool_registered_components() {
 
 
 
217
 
218
+ // Default return value
219
+ $retval = array();
220
+
221
+ // Get tools
222
+ $tools = bbp_get_admin_repair_tools( bbp_get_admin_repair_tool_page_id() );
223
+
224
+ // Loop through tools
225
+ if ( ! empty( $tools ) ) {
226
+ $plucked = wp_list_pluck( $tools, 'components' );
227
+
228
+ // Loop through components
229
+ if ( count( $plucked ) ) {
230
+ foreach ( $plucked as $components ) {
231
+ foreach ( $components as $component ) {
232
+
233
+ // Skip if already in array
234
+ if ( in_array( $component, $retval, true ) ) {
235
+ continue;
236
+ }
237
+
238
+ // Add component to the array
239
+ $retval[] = $component;
240
+ }
241
  }
 
242
  }
243
  }
244
 
276
  : '';
277
 
278
  // Get registered components
279
+ $components = bbp_get_admin_repair_tool_registered_components();
280
+
281
+ // Bail if no components
282
+ if ( empty( $components ) ) {
283
+ return;
284
+ } ?>
285
 
286
+ <label class="screen-reader-text" for="components"><?php esc_html_e( 'Filter by Component', 'bbpress' ); ?></label>
287
  <select name="components" id="components" class="postform">
288
  <option value="" <?php selected( $selected, false ); ?>><?php esc_html_e( 'All Components', 'bbpress' ); ?></option>
289
 
294
  <?php endforeach; ?>
295
 
296
  </select>
 
297
 
298
  <?php
299
  }
300
 
301
+ /**
302
+ * Return array of versions from the array of registered tools
303
+ *
304
+ * @since 2.6.0 bbPress (r6894)
305
+ *
306
+ * @return array
307
+ */
308
+ function bbp_get_admin_repair_tool_registered_versions() {
309
+
310
+ // Default return value
311
+ $retval = array();
312
+
313
+ // Get tools
314
+ $tools = bbp_get_admin_repair_tools( bbp_get_admin_repair_tool_page_id() );
315
+
316
+ // Loop through tools
317
+ if ( ! empty( $tools ) ) {
318
+ $plucked = wp_list_pluck( $tools, 'version' );
319
+
320
+ // Loop through components
321
+ if ( count( $plucked ) ) {
322
+ foreach ( $plucked as $versions ) {
323
+
324
+ // Skip if empty
325
+ if ( empty( $versions ) ) {
326
+ continue;
327
+
328
+ // Cast to array if string
329
+ } elseif ( is_string( $versions ) ) {
330
+ $versions = (array) $versions;
331
+ }
332
+
333
+ // Loop through versions
334
+ foreach ( $versions as $version ) {
335
+
336
+ // Skip if already in array
337
+ if ( in_array( $version, $retval, true ) ) {
338
+ continue;
339
+ }
340
+
341
+ // Add component to the array
342
+ $retval[] = $version;
343
+ }
344
+ }
345
+ }
346
+ }
347
+
348
+ // Filter & return
349
+ return (array) apply_filters( 'bbp_get_admin_repair_tool_registered_versions', $retval );
350
+ }
351
+
352
+ /**
353
+ * Output a select drop-down of versions to filter by
354
+ *
355
+ * @since 2.5.0 bbPress (r6894)
356
+ */
357
+ function bbp_admin_repair_list_versions_filter() {
358
+
359
+ // Sanitize component value, if exists
360
+ $selected = ! empty( $_GET['version'] )
361
+ ? sanitize_text_field( $_GET['version'] )
362
+ : '';
363
+
364
+ // Get registered components
365
+ $versions = bbp_get_admin_repair_tool_registered_versions();
366
+
367
+ // Bail if no components
368
+ if ( empty( $versions ) ) {
369
+ return;
370
+ } ?>
371
+
372
+ <label class="screen-reader-text" for="version"><?php esc_html_e( 'Filter by Version', 'bbpress' ); ?></label>
373
+ <select name="version" id="version" class="postform">
374
+ <option value="" <?php selected( $selected, false ); ?>><?php esc_html_e( 'All Versions', 'bbpress' ); ?></option>
375
+
376
+ <?php foreach ( $versions as $version ) : ?>
377
+
378
+ <option class="level-0" value="<?php echo esc_attr( $version ); ?>" <?php selected( $selected, $version ); ?>><?php echo esc_html( bbp_admin_repair_tool_translate_version( $version ) ); ?></option>
379
+
380
+ <?php endforeach; ?>
381
+
382
+ </select>
383
+
384
+ <?php
385
+ }
386
+
387
+ /** Translations **************************************************************/
388
+
389
  /**
390
  * Maybe translate a repair tool overhead name
391
  *
463
  }
464
 
465
  /**
466
+ * Maybe translate a repair tool overhead name
467
+ *
468
+ * @since 2.6.0 bbPress (r6894)
469
+ *
470
+ * @param string $version
471
+ * @return string
472
+ */
473
+ function bbp_admin_repair_tool_translate_version( $version = '' ) {
474
+
475
+ // Get the version
476
+ switch ( $version ) {
477
+ case '2.5' :
478
+ case '2.5.0' :
479
+ $name = esc_html__( '2.5.0', 'bbpress' );
480
+ break;
481
+ case '2.6' :
482
+ case '2.6.0' :
483
+ $name = esc_html__( '2.6.0', 'bbpress' );
484
+ break;
485
+ default :
486
+ $name = sanitize_text_field( $version );
487
+ break;
488
+ }
489
+
490
+ return $name;
491
+ }
492
+
493
+ /** Lists *********************************************************************/
494
+
495
+ /**
496
+ * Get the array of the repairs to show in a list table.
497
+ *
498
+ * Uses known filters to reduce the registered results down to the most finite
499
+ * set of tools.
500
  *
501
  * @since 2.0.0 bbPress (r2613)
502
  *
508
  $repair_list = array();
509
 
510
  // Get the available tools
511
+ $list = bbp_get_admin_repair_tools( $type );
512
+
513
+ // Get pending upgrades
514
+ $pending = bbp_get_pending_upgrades();
515
+
516
+ // Search
517
+ $search = ! empty( $_GET['s'] )
518
+ ? stripslashes( $_GET['s'] )
519
+ : '';
520
+
521
+ // Status
522
+ $status = ! empty( $_GET['status'] )
523
+ ? sanitize_key( $_GET['status'] )
524
+ : '';
525
+
526
+ // Overhead
527
+ $overhead = ! empty( $_GET['overhead'] )
528
+ ? sanitize_key( $_GET['overhead'] )
529
+ : '';
530
+
531
+ // Component
532
+ $component = ! empty( $_GET['components'] )
533
+ ? sanitize_key( $_GET['components'] )
534
+ : '';
535
+
536
+ // Version
537
+ $version = ! empty( $_GET['version'] )
538
+ ? sanitize_text_field( $_GET['version'] )
539
+ : '';
540
+
541
+ // Orderby
542
+ $orderby = ! empty( $_GET['orderby'] )
543
+ ? sanitize_key( $_GET['orderby'] )
544
+ : 'priority';
545
+
546
+ // Order
547
+ $order = ! empty( $_GET['order'] ) && in_array( strtolower( $_GET['order'] ), array( 'asc', 'desc' ), true )
548
+ ? strtolower( $_GET['order'] )
549
+ : 'asc';
550
 
551
  // Overhead filter
552
  if ( ! empty( $overhead ) ) {
553
  $list = wp_list_filter( $list, array( 'overhead' => $overhead ) );
554
  }
555
 
556
+ if ( count( $list ) ) {
 
557
 
558
+ // Loop through and key by priority for sorting
559
+ foreach ( $list as $id => $tool ) {
560
+
561
+ // Status filter
562
+ if ( ! empty( $status ) && ( 'pending' === $status ) ) {
563
+ if ( ! in_array( $id, (array) $pending, true ) ) {
564
+ continue;
565
+ }
566
  }
 
567
 
568
+ // Component filter
569
+ if ( ! empty( $component ) ) {
570
+ if ( ! in_array( $component, (array) $tool['components'], true ) ) {
571
+ continue;
572
+ }
573
  }
 
574
 
575
+ // Version filter
576
+ if ( ! empty( $version ) ) {
577
+ if ( ! in_array( $version, (array) $tool['version'], true ) ) {
578
+ continue;
579
+ }
580
+ }
581
+
582
+ // Search
583
+ if ( ! empty( $search ) ) {
584
+ if ( ! strstr( strtolower( $tool['title'] ), strtolower( $search ) ) ) {
585
+ continue;
586
+ }
587
+ }
588
+
589
+ // Add to repair list
590
+ $repair_list[ $tool['priority'] ] = array(
591
+ 'id' => sanitize_key( $id ),
592
+ 'type' => $tool['type'],
593
+ 'title' => $tool['title'],
594
+ 'priority' => $tool['priority'],
595
+ 'description' => $tool['description'],
596
+ 'callback' => $tool['callback'],
597
+ 'overhead' => $tool['overhead'],
598
+ 'version' => $tool['version'],
599
+ 'components' => $tool['components']
600
+ );
601
+ }
602
  }
603
 
604
  // Sort
605
+ $retval = wp_list_sort( $repair_list, $orderby, $order, true );
606
 
607
  // Filter & return
608
+ return (array) apply_filters( 'bbp_repair_list', $retval );
609
  }
610
 
611
  /**
619
  function bbp_get_admin_repair_tool_components( $item = array() ) {
620
 
621
  // Get the tools URL
622
+ $tools_url = bbp_get_admin_repair_tool_page_url();
623
 
624
  // Define links array
625
+ $links = array();
626
+ $components = ! empty( $item['components'] )
627
+ ? (array) $item['components']
628
+ : array();
629
 
630
  // Loop through tool components and build links
631
+ if ( count( $components ) ) {
632
+ foreach ( $components as $component ) {
633
+ $args = array( 'components' => $component );
634
+ $filter_url = add_query_arg( $args, $tools_url );
635
+ $name = bbp_admin_repair_tool_translate_component( $component );
636
+ $links[] = '<a href="' . esc_url( $filter_url ) . '">' . esc_html( $name ) . '</a>';
637
+ }
638
+
639
+ // No components, so return a dash
640
+ } else {
641
+ $links[] = '&mdash;';
642
  }
643
 
644
  // Filter & return
646
  }
647
 
648
  /**
649
+ * Get filter links for versions for a specific admin repair tool
650
+ *
651
+ * @since 2.6.0 bbPress (r6894)
652
+ *
653
+ * @param array $item
654
+ * @return array
655
+ */
656
+ function bbp_get_admin_repair_tool_version( $item = array() ) {
657
+
658
+ // Get the tools URL
659
+ $tools_url = bbp_get_admin_repair_tool_page_url();
660
+
661
+ // Define links array
662
+ $links = array();
663
+ $versions = ! empty( $item['version'] )
664
+ ? (array) $item['version']
665
+ : array();
666
+
667
+ // Loop through tool versions and build links
668
+ if ( count( $versions ) ) {
669
+ foreach ( $versions as $version ) {
670
+ $args = array( 'version' => $version );
671
+ $filter_url = add_query_arg( $args, $tools_url );
672
+ $name = bbp_admin_repair_tool_translate_version( $version );
673
+ $links[] = '<a href="' . esc_url( $filter_url ) . '">' . esc_html( $name ) . '</a>';
674
+ }
675
+
676
+ // No versions, so return a dash
677
+ } else {
678
+ $links[] = '&mdash;';
679
+ }
680
+
681
+ // Filter & return
682
+ return (array) apply_filters( 'bbp_get_admin_repair_tool_version', $links, $item );
683
+ }
684
+
685
+ /**
686
+ * Get filter links for overhead for a specific admin repair tool
687
+ *
688
+ * @since 2.6.0 bbPress (r5885)
689
+ *
690
+ * @param array $item
691
+ * @return array
692
+ */
693
+ function bbp_get_admin_repair_tool_overhead( $item = array() ) {
694
+
695
+ // Get the tools URL
696
+ $tools_url = bbp_get_admin_repair_tool_page_url();
697
+
698
+ // Define links array
699
+ $links = array();
700
+ $overheads = ! empty( $item['overhead'] )
701
+ ? (array) $item['overhead']
702
+ : array();
703
+
704
+ // Loop through tool overhead and build links
705
+ if ( count( $overheads ) ) {
706
+ foreach ( $overheads as $overhead ) {
707
+ $args = array( 'overhead' => $overhead );
708
+ $filter_url = add_query_arg( $args, $tools_url );
709
+ $name = bbp_admin_repair_tool_translate_overhead( $overhead );
710
+ $links[] = '<a href="' . esc_url( $filter_url ) . '">' . esc_html( $name ) . '</a>';
711
+ }
712
+
713
+ // No overhead, so return a single dash
714
+ } else {
715
+ $links[] = '&mdash;';
716
+ }
717
+
718
+ // Filter & return
719
+ return (array) apply_filters( 'bbp_get_admin_repair_tool_overhead', $links, $item );
720
+ }
721
+
722
+ /** Overhead ******************************************************************/
723
+
724
+ /**
725
+ * Output filter links for overheads for a specific admin repair tool
726
  *
727
  * @since 2.6.0 bbPress (r5885)
728
  *
733
  }
734
 
735
  /**
736
+ * Get filter links for overheads for a specific admin repair tool
737
  *
738
  * @since 2.6.0 bbPress (r5885)
739
  *
764
  $r['sep'] = $r['separator'];
765
  }
766
 
 
 
 
767
  // Count the tools
768
+ $tools = bbp_get_admin_repair_tools( bbp_get_admin_repair_tool_page_id() );
769
 
770
  // Get the tools URL
771
+ $tools_url = bbp_get_admin_repair_tool_page_url();
772
 
773
  // Define arrays
774
  $overheads = $links = array();
775
 
776
  // Loop through tools and count overheads
777
+ if ( count( $tools ) ) {
778
+ foreach ( $tools as $tool ) {
779
 
780
+ // Get the overhead level
781
+ $overhead = $tool['overhead'];
782
 
783
+ // Set an empty count
784
+ if ( empty( $overheads[ $overhead ] ) ) {
785
+ $overheads[ $overhead ] = 0;
786
+ }
787
 
788
+ // Bump the overhead count
789
+ $overheads[ $overhead ]++;
790
+ }
791
  }
792
 
793
+ // Get the current overhead, if any
794
+ $selected = ! empty( $_GET['overhead'] )
795
+ ? sanitize_key( $_GET['overhead'] )
796
+ : '';
797
+
798
  // Create the "All" link
799
+ $current = empty( $selected ) ? 'current' : '';
800
  $links[] = $r['link_before'] . '<a href="' . esc_url( $tools_url ) . '" class="' . esc_attr( $current ) . '">' . sprintf( esc_html__( 'All %s', 'bbpress' ), $r['count_before'] . count( $tools ) . $r['count_after'] ) . '</a>' . $r['link_after'];
801
 
802
+ // Loop through overheads and created links
803
+ if ( count( $overheads ) ) {
804
 
805
+ // Sort
806
+ ksort( $overheads );
807
 
808
+ // Loop through overheads and build filter
809
+ foreach ( $overheads as $overhead => $count ) {
 
 
810
 
811
+ // Build the filter URL
812
+ $key = sanitize_key( $overhead );
813
+ $args = array( 'overhead' => $key );
814
+ $filter_url = add_query_arg( $args, $tools_url );
815
 
816
+ // Figure out separator and active class
817
+ $current = ( $selected === $key )
818
+ ? 'current'
819
+ : '';
820
+
821
+ // Counts to show
822
+ if ( ! empty( $count ) ) {
823
+ $overhead_count = $r['count_before'] . $count . $r['count_after'];
824
+ }
825
 
826
+ // Build the link
827
+ $links[] = $r['link_before'] . '<a href="' . esc_url( $filter_url ) . '" class="' . esc_attr( $current ) . '">' . bbp_admin_repair_tool_translate_overhead( $overhead ) . $overhead_count . '</a>' . $r['link_after'];
828
+ }
829
  }
830
 
831
  // Surround output with before & after strings
832
  $output = $r['before'] . implode( $r['sep'], $links ) . $r['after'];
833
 
834
  // Filter & return
835
+ return apply_filters( 'bbp_get_admin_repair_tool_overhead_filters', $output, $r, $args );
836
  }
837
 
838
+ /** Pending ******************************************************************/
839
+
840
  /**
841
+ * Output filter links for statuses
842
+ *
843
+ * @since 2.6.0 bbPress (r6925)
844
+ *
845
+ * @param array $args
846
+ */
847
+ function bbp_admin_repair_tool_status_filters( $args = array() ) {
848
+ echo bbp_get_admin_repair_tool_status_filters( $args );
849
+ }
850
+
851
+ /**
852
+ * Get filter links for statuses
853
  *
854
  * @since 2.6.0 bbPress (r5885)
855
  *
856
+ * @param array $args
857
  * @return array
858
  */
859
+ function bbp_get_admin_repair_tool_status_filters( $args = array() ) {
860
 
861
+ // Parse args
862
+ $r = bbp_parse_args( $args, array(
863
+ 'before' => '<ul class="subsubsub">',
864
+ 'after' => '</ul>',
865
+ 'link_before' => '<li>',
866
+ 'link_after' => '</li>',
867
+ 'count_before' => ' <span class="count">(',
868
+ 'count_after' => ')</span>',
869
+ 'sep' => ' | ',
870
 
871
+ // Retired, use 'sep' instead
872
+ 'separator' => false
873
+ ), 'get_admin_repair_tool_status_filters' );
874
 
875
+ /**
876
+ * Necessary for backwards compatibility
877
+ * @see https://bbpress.trac.wordpress.org/ticket/2900
878
+ */
879
+ if ( ! empty( $r['separator'] ) ) {
880
+ $r['sep'] = $r['separator'];
881
  }
882
 
883
+ // Get the type of tool
884
+ $type = bbp_get_admin_repair_tool_page_id();
885
+
886
+ // Count the tools
887
+ $tools = bbp_get_admin_repair_tools( $type );
888
+
889
+ // Get the tools URL
890
+ $tools_url = bbp_get_admin_repair_tool_page_url();
891
+
892
+ // Get pending upgrades
893
+ $pending = bbp_get_pending_upgrades( $type );
894
+
895
+ // Get the current status, if any
896
+ $selected = ! empty( $_GET['status'] )
897
+ ? sanitize_key( $_GET['status'] )
898
+ : '';
899
+
900
+ // Nothing is current?
901
+ $all_current = empty( $selected )
902
+ ? 'current'
903
+ : '';
904
+
905
+ // Pending is current?
906
+ $pending_current = ( 'pending' === $selected )
907
+ ? 'current'
908
+ : '';
909
+
910
+ // Sort
911
+ ksort( $pending );
912
+
913
+ // Build the filter URL
914
+ $filter_url = add_query_arg( array(
915
+ 'status' => 'pending'
916
+ ), $tools_url );
917
+
918
+ // Count HTML
919
+ $all_count = $r['count_before'] . count( $tools ) . $r['count_after'];
920
+ $pending_count = $r['count_before'] . count( $pending ) . $r['count_after'];
921
+
922
+ // Define links
923
+ $links = array(
924
+ $r['link_before'] . '<a href="' . esc_url( $tools_url ) . '" class="' . esc_attr( $all_current ) . '">' . sprintf( esc_html__( 'All %s', 'bbpress' ), $all_count ) . '</a>' . $r['link_after'],
925
+ $r['link_before'] . '<a href="' . esc_url( $filter_url ) . '" class="' . esc_attr( $pending_current ) . '">' . sprintf( esc_html__( 'Pending %s', 'bbpress' ), $pending_count ) . '</a>' . $r['link_after']
926
+ );
927
+
928
+ // Surround output with before & after strings
929
+ $output = $r['before'] . implode( $r['sep'], $links ) . $r['after'];
930
+
931
  // Filter & return
932
+ return apply_filters( 'bbp_get_admin_repair_tool_status_filters', $output, $r, $args );
933
  }
includes/admin/tools/repair.php CHANGED
@@ -22,16 +22,32 @@ defined( 'ABSPATH' ) || exit;
22
  function bbp_admin_repair_page() {
23
 
24
  // Get the registered repair tools
25
- $tools = bbp_admin_repair_list(); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
  <div class="wrap">
28
- <h1><?php esc_html_e( 'Forum Tools', 'bbpress' ); ?></h1>
29
- <h2 class="nav-tab-wrapper"><?php bbp_tools_admin_tabs( esc_html__( 'Repair Forums', 'bbpress' ) ); ?></h2>
 
30
 
31
  <p><?php esc_html_e( 'bbPress keeps track of relationships between forums, topics, replies, topic-tags, favorites, subscriptions, and users. Occasionally these relationships become out of sync, most often after an import or migration. Use the tools below to manually recalculate these relationships.', 'bbpress' ); ?></p>
32
  <p class="description"><?php esc_html_e( 'Some of these tools create substantial database overhead. Use caution when running more than 1 repair at a time.', 'bbpress' ); ?></p>
33
 
34
- <?php bbp_admin_repair_tool_overhead_filters(); ?>
35
 
36
  <form class="settings" method="get" action="">
37
 
@@ -53,6 +69,7 @@ function bbp_admin_repair_page() {
53
 
54
  <?php bbp_admin_repair_list_components_filter(); ?>
55
 
 
56
  </div>
57
  <br class="clear">
58
  </div>
@@ -65,9 +82,23 @@ function bbp_admin_repair_page() {
65
  </label>
66
  <input id="cb-select-all-1" type="checkbox">
67
  </td>
68
- <th scope="col" id="description" class="manage-column column-primary column-description"><?php esc_html_e( 'Description', 'bbpress' ); ?></th>
69
- <th scope="col" id="components" class="manage-column column-components"><?php esc_html_e( 'Components', 'bbpress' ); ?></th>
70
- <th scope="col" id="overhead" class="manage-column column-overhead"><?php esc_html_e( 'Overhead', 'bbpress' ); ?></th>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  </tr>
72
  </thead>
73
 
@@ -87,7 +118,7 @@ function bbp_admin_repair_page() {
87
 
88
  // Optional description
89
  if ( ! empty( $item['description'] ) ) :
90
- echo esc_html( $item['description'] );
91
  endif;
92
 
93
  ?><div class="row-actions hide-if-no-js">
@@ -260,7 +291,7 @@ function bbp_admin_repair_topic_voice_count() {
260
  }
261
 
262
  /**
263
- * Recount topic hidden replies (spammed/trashed)
264
  *
265
  * @since 2.0.0 bbPress (r2747)
266
  *
@@ -410,6 +441,48 @@ function bbp_admin_repair_forum_reply_count() {
410
  return array( 0, sprintf( $statement, esc_html__( 'Complete!', 'bbpress' ) ) );
411
  }
412
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
413
  /**
414
  * Recount topics by the users
415
  *
@@ -546,7 +619,7 @@ function bbp_admin_repair_user_favorites() {
546
  }
547
 
548
  $favorites_joined = implode( ',', $favorites );
549
- $values[] = "('{$user->user_id}', '{$key}, '{$favorites_joined}')";
550
 
551
  // Cleanup
552
  unset( $favorites, $favorites_joined );
@@ -860,7 +933,7 @@ function bbp_admin_repair_freshness() {
860
 
861
  // Now we give all the forums with topics the ID their last topic.
862
  if ( is_wp_error( $bbp_db->query( "INSERT INTO `{$bbp_db->postmeta}` (`post_id`, `meta_key`, `meta_value`)
863
- ( SELECT `forum`.`ID`, '_bbp_last_topic_id', `topic`.`ID`
864
  FROM `{$bbp_db->posts}` AS `forum` INNER JOIN `{$bbp_db->posts}` AS `topic` ON `forum`.`ID` = `topic`.`post_parent`
865
  WHERE `topic`.`post_status` = '{$pps}' AND `forum`.`post_type` = '{$fpt}' AND `topic`.`post_type` = '{$tpt}'
866
  GROUP BY `forum`.`ID` )" ) ) ) {
@@ -1217,8 +1290,6 @@ function bbp_admin_repair_reply_menu_order() {
1217
  // Cleanup
1218
  unset( $replies, $reply );
1219
 
1220
- // Flush the cache; things are about to get ugly.
1221
- wp_cache_flush();
1222
-
1223
  return array( 0, sprintf( $statement, esc_html__( 'Complete!', 'bbpress' ) ) );
1224
  }
22
  function bbp_admin_repair_page() {
23
 
24
  // Get the registered repair tools
25
+ $tools = bbp_admin_repair_list();
26
+
27
+ // Orderby
28
+ $orderby = ! empty( $_GET['orderby'] )
29
+ ? sanitize_key( $_GET['orderby'] )
30
+ : 'priority';
31
+
32
+ // Order
33
+ $order = ! empty( $_GET['order'] ) && in_array( strtolower( $_GET['order'] ), array( 'asc', 'desc' ), true )
34
+ ? strtolower( $_GET['order'] )
35
+ : 'asc';
36
+
37
+ // New order
38
+ $new_order = ( 'desc' === $order )
39
+ ? 'asc'
40
+ : 'desc'; ?>
41
 
42
  <div class="wrap">
43
+ <h1 class="wp-heading-inline"><?php esc_html_e( 'Forum Tools', 'bbpress' ); ?></h1>
44
+ <hr class="wp-header-end">
45
+ <h2 class="nav-tab-wrapper"><?php bbp_tools_admin_tabs( 'bbp-repair' ); ?></h2>
46
 
47
  <p><?php esc_html_e( 'bbPress keeps track of relationships between forums, topics, replies, topic-tags, favorites, subscriptions, and users. Occasionally these relationships become out of sync, most often after an import or migration. Use the tools below to manually recalculate these relationships.', 'bbpress' ); ?></p>
48
  <p class="description"><?php esc_html_e( 'Some of these tools create substantial database overhead. Use caution when running more than 1 repair at a time.', 'bbpress' ); ?></p>
49
 
50
+ <?php bbp_admin_repair_tool_status_filters(); ?>
51
 
52
  <form class="settings" method="get" action="">
53
 
69
 
70
  <?php bbp_admin_repair_list_components_filter(); ?>
71
 
72
+ <input type="submit" name="filter_action" id="components-submit" class="button" value="<?php esc_html_e( 'Filter', 'bbpress' ); ?>">
73
  </div>
74
  <br class="clear">
75
  </div>
82
  </label>
83
  <input id="cb-select-all-1" type="checkbox">
84
  </td>
85
+ <th scope="col" id="description" class="manage-column column-primary column-description sortable <?php echo ( 'priority' === $orderby ) ? esc_attr( $order ) : 'asc'; ?>">
86
+ <a href="<?php echo esc_url( bbp_get_admin_repair_tool_page_url( array(
87
+ 'orderby' => 'priority',
88
+ 'order' => $new_order
89
+ ) ) ); ?>"><span><?php esc_html_e( 'Description', 'bbpress' ); ?></span><span class="sorting-indicator"></span>
90
+ </a>
91
+ </th>
92
+ <th scope="col" id="components" class="manage-column column-components">
93
+ <span><?php esc_html_e( 'Components', 'bbpress' ); ?></span>
94
+ </th>
95
+ <th scope="col" id="overhead" class="manage-column column-overhead sortable <?php echo ( 'overhead' === $orderby ) ? esc_attr( $order ) : 'asc'; ?>">
96
+ <a href="<?php echo esc_url( bbp_get_admin_repair_tool_page_url( array(
97
+ 'orderby' => 'overhead',
98
+ 'order' => $new_order
99
+ ) ) ); ?>"><span><?php esc_html_e( 'Overhead', 'bbpress' ); ?></span><span class="sorting-indicator"></span>
100
+ </a>
101
+ </th>
102
  </tr>
103
  </thead>
104
 
118
 
119
  // Optional description
120
  if ( ! empty( $item['description'] ) ) :
121
+ echo '<p class="description">' . esc_html( $item['description'] ) . '</p>';
122
  endif;
123
 
124
  ?><div class="row-actions hide-if-no-js">
291
  }
292
 
293
  /**
294
+ * Recount non-public replies per topic (pending/spammed/trashed)
295
  *
296
  * @since 2.0.0 bbPress (r2747)
297
  *
441
  return array( 0, sprintf( $statement, esc_html__( 'Complete!', 'bbpress' ) ) );
442
  }
443
 
444
+ /**
445
+ * Recount non-public forum replies
446
+ *
447
+ * @since 2.6.0 bbPress (r6922)
448
+ * @since 2.6.0 bbPress (r6932) Rename to match the topic reply recount function
449
+ *
450
+ * @return array An array of the status code and the message
451
+ */
452
+ function bbp_admin_repair_forum_hidden_reply_count() {
453
+
454
+ // Define variables
455
+ $bbp_db = bbp_db();
456
+ $statement = esc_html__( 'Counting the number of pending, spammed, and trashed replies in each forum&hellip; %s', 'bbpress' );
457
+ $result = esc_html__( 'Failed!', 'bbpress' );
458
+
459
+ // Post type
460
+ $fpt = bbp_get_forum_post_type();
461
+
462
+ // Delete the meta keys _bbp_reply_count and _bbp_total_reply_count for each forum
463
+ $sql_delete = "DELETE `postmeta` FROM `{$bbp_db->postmeta}` AS `postmeta`
464
+ LEFT JOIN `{$bbp_db->posts}` AS `posts` ON `posts`.`ID` = `postmeta`.`post_id`
465
+ WHERE `posts`.`post_type` = '{$fpt}'
466
+ AND `postmeta`.`meta_key` = '_bbp_reply_count_hidden'
467
+ OR `postmeta`.`meta_key` = '_bbp_total_reply_count_hidden'";
468
+
469
+ if ( is_wp_error( $bbp_db->query( $sql_delete ) ) ) {
470
+ return array( 1, sprintf( $statement, $result ) );
471
+ }
472
+
473
+ // Recalculate the metas key _bbp_reply_count and _bbp_total_reply_count for each forum
474
+ $forums = get_posts( array( 'post_type' => bbp_get_forum_post_type(), 'numberposts' => -1 ) );
475
+ if ( ! empty( $forums ) ) {
476
+ foreach ( $forums as $forum ) {
477
+ bbp_update_forum_reply_count_hidden( $forum->ID );
478
+ }
479
+ } else {
480
+ return array( 2, sprintf( $statement, $result ) );
481
+ }
482
+
483
+ return array( 0, sprintf( $statement, esc_html__( 'Complete!', 'bbpress' ) ) );
484
+ }
485
+
486
  /**
487
  * Recount topics by the users
488
  *
619
  }
620
 
621
  $favorites_joined = implode( ',', $favorites );
622
+ $values[] = "('{$user->user_id}', '{$key}', '{$favorites_joined}')";
623
 
624
  // Cleanup
625
  unset( $favorites, $favorites_joined );
933
 
934
  // Now we give all the forums with topics the ID their last topic.
935
  if ( is_wp_error( $bbp_db->query( "INSERT INTO `{$bbp_db->postmeta}` (`post_id`, `meta_key`, `meta_value`)
936
+ ( SELECT `forum`.`ID`, '_bbp_last_topic_id', MAX( `topic`.`ID` )
937
  FROM `{$bbp_db->posts}` AS `forum` INNER JOIN `{$bbp_db->posts}` AS `topic` ON `forum`.`ID` = `topic`.`post_parent`
938
  WHERE `topic`.`post_status` = '{$pps}' AND `forum`.`post_type` = '{$fpt}' AND `topic`.`post_type` = '{$tpt}'
939
  GROUP BY `forum`.`ID` )" ) ) ) {
1290
  // Cleanup
1291
  unset( $replies, $reply );
1292
 
1293
+ // Complete results
 
 
1294
  return array( 0, sprintf( $statement, esc_html__( 'Complete!', 'bbpress' ) ) );
1295
  }
includes/admin/tools/reset.php CHANGED
@@ -20,8 +20,9 @@ function bbp_admin_reset_page() {
20
  ?>
21
 
22
  <div class="wrap">
23
- <h1><?php esc_html_e( 'Forum Tools', 'bbpress' ); ?></h1>
24
- <h2 class="nav-tab-wrapper"><?php bbp_tools_admin_tabs( esc_html__( 'Reset Forums', 'bbpress' ) ); ?></h2>
 
25
  <p><?php esc_html_e( 'Revert your forums back to a brand new installation, as if bbPress were never installed. This process cannot be undone.', 'bbpress' ); ?></p>
26
 
27
  <form class="settings" method="post" action="">
20
  ?>
21
 
22
  <div class="wrap">
23
+ <h1 class="wp-heading-inline"><?php esc_html_e( 'Forum Tools', 'bbpress' ); ?></h1>
24
+ <hr class="wp-header-end">
25
+ <h2 class="nav-tab-wrapper"><?php bbp_tools_admin_tabs( 'bbp-reset' ); ?></h2>
26
  <p><?php esc_html_e( 'Revert your forums back to a brand new installation, as if bbPress were never installed. This process cannot be undone.', 'bbpress' ); ?></p>
27
 
28
  <form class="settings" method="post" action="">
includes/admin/tools/upgrade.php CHANGED
@@ -19,16 +19,32 @@ defined( 'ABSPATH' ) || exit;
19
  function bbp_admin_upgrade_page() {
20
 
21
  // Get the registered upgrade tools
22
- $tools = bbp_admin_repair_list( 'upgrade' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
  <div class="wrap">
25
- <h1><?php esc_html_e( 'Forum Tools', 'bbpress' ); ?></h1>
26
- <h2 class="nav-tab-wrapper"><?php bbp_tools_admin_tabs( esc_html__( 'Upgrade Forums', 'bbpress' ) ); ?></h2>
 
27
 
28
  <p><?php esc_html_e( 'As bbPress improves, occasionally database upgrades are required but some forums are too large to upgrade automatically. Use the tools below to manually run upgrade routines.', 'bbpress' ); ?></p>
29
  <p class="description"><?php esc_html_e( 'Some of these tools create substantial database overhead. Use caution when running more than 1 upgrade at a time.', 'bbpress' ); ?></p>
30
 
31
- <?php bbp_admin_repair_tool_overhead_filters(); ?>
32
 
33
  <form class="settings" method="get" action="">
34
 
@@ -50,6 +66,9 @@ function bbp_admin_upgrade_page() {
50
 
51
  <?php bbp_admin_repair_list_components_filter(); ?>
52
 
 
 
 
53
  </div>
54
  <br class="clear">
55
  </div>
@@ -62,9 +81,28 @@ function bbp_admin_upgrade_page() {
62
  </label>
63
  <input id="cb-select-all-1" type="checkbox">
64
  </td>
65
- <th scope="col" id="description" class="manage-column column-primary column-description"><?php esc_html_e( 'Description', 'bbpress' ); ?></th>
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  <th scope="col" id="components" class="manage-column column-components"><?php esc_html_e( 'Components', 'bbpress' ); ?></th>
67
- <th scope="col" id="overhead" class="manage-column column-overhead"><?php esc_html_e( 'Overhead', 'bbpress' ); ?></th>
 
 
 
 
 
 
68
  </tr>
69
  </thead>
70
 
@@ -84,7 +122,7 @@ function bbp_admin_upgrade_page() {
84
 
85
  // Optional description
86
  if ( ! empty( $item['description'] ) ) :
87
- echo esc_html( $item['description'] );
88
  endif;
89
 
90
  ?><div class="row-actions hide-if-no-js">
@@ -96,8 +134,15 @@ function bbp_admin_upgrade_page() {
96
  <span class="screen-reader-text"><?php esc_html_e( 'Show more details', 'bbpress' ); ?></span>
97
  </button>
98
  </td>
 
 
 
 
 
 
 
99
  <td class="column-components desc" data-colname="<?php esc_html_e( 'Components', 'bbpress' ); ?>">
100
- <div class="bbp-tool-overhead">
101
 
102
  <?php echo implode( ', ', bbp_get_admin_repair_tool_components( $item ) ); ?>
103
 
@@ -134,6 +179,7 @@ function bbp_admin_upgrade_page() {
134
  <input id="cb-select-all-2" type="checkbox">
135
  </td>
136
  <th scope="col" class="manage-column column-primary column-description"><?php esc_html_e( 'Description', 'bbpress' ); ?></th>
 
137
  <th scope="col" class="manage-column column-components"><?php esc_html_e( 'Components', 'bbpress' ); ?></th>
138
  <th scope="col" class="manage-column column-overhead"><?php esc_html_e( 'Overhead', 'bbpress' ); ?></th>
139
  </tr>
19
  function bbp_admin_upgrade_page() {
20
 
21
  // Get the registered upgrade tools
22
+ $tools = bbp_admin_repair_list( 'upgrade' );
23
+
24
+ // Orderby
25
+ $orderby = ! empty( $_GET['orderby'] )
26
+ ? sanitize_key( $_GET['orderby'] )
27
+ : 'priority';
28
+
29
+ // Order
30
+ $order = ! empty( $_GET['order'] ) && in_array( strtolower( $_GET['order'] ), array( 'asc', 'desc' ), true )
31
+ ? strtolower( $_GET['order'] )
32
+ : 'asc';
33
+
34
+ // New order
35
+ $new_order = ( 'desc' === $order )
36
+ ? 'asc'
37
+ : 'desc'; ?>
38
 
39
  <div class="wrap">
40
+ <h1 class="wp-heading-inline"><?php esc_html_e( 'Forum Tools', 'bbpress' ); ?></h1>
41
+ <hr class="wp-header-end">
42
+ <h2 class="nav-tab-wrapper"><?php bbp_tools_admin_tabs( 'bbp-upgrade' ); ?></h2>
43
 
44
  <p><?php esc_html_e( 'As bbPress improves, occasionally database upgrades are required but some forums are too large to upgrade automatically. Use the tools below to manually run upgrade routines.', 'bbpress' ); ?></p>
45
  <p class="description"><?php esc_html_e( 'Some of these tools create substantial database overhead. Use caution when running more than 1 upgrade at a time.', 'bbpress' ); ?></p>
46
 
47
+ <?php bbp_admin_repair_tool_status_filters(); ?>
48
 
49
  <form class="settings" method="get" action="">
50
 
66
 
67
  <?php bbp_admin_repair_list_components_filter(); ?>
68
 
69
+ <?php bbp_admin_repair_list_versions_filter(); ?>
70
+
71
+ <input type="submit" name="filter_action" id="components-submit" class="button" value="<?php esc_html_e( 'Filter', 'bbpress' ); ?>">
72
  </div>
73
  <br class="clear">
74
  </div>
81
  </label>
82
  <input id="cb-select-all-1" type="checkbox">
83
  </td>
84
+ <th scope="col" id="description" class="manage-column column-primary column-description sortable <?php echo ( 'priority' === $orderby ) ? esc_attr( $order ) : 'asc'; ?>">
85
+ <a href="<?php echo esc_url( bbp_get_admin_repair_tool_page_url( array(
86
+ 'orderby' => 'priority',
87
+ 'order' => $new_order
88
+ ) ) ); ?>"><span><?php esc_html_e( 'Description', 'bbpress' ); ?></span><span class="sorting-indicator"></span>
89
+ </a>
90
+ </th>
91
+ <th scope="col" id="version" class="manage-column column-version sortable <?php echo ( 'version' === $orderby ) ? esc_attr( $order ) : 'asc'; ?>">
92
+ <a href="<?php echo esc_url( bbp_get_admin_repair_tool_page_url( array(
93
+ 'orderby' => 'version',
94
+ 'order' => $new_order
95
+ ) ) ); ?>"><span><?php esc_html_e( 'Version', 'bbpress' ); ?></span><span class="sorting-indicator"></span>
96
+ </a>
97
+ </th>
98
  <th scope="col" id="components" class="manage-column column-components"><?php esc_html_e( 'Components', 'bbpress' ); ?></th>
99
+ <th scope="col" id="overhead" class="manage-column column-overhead sortable <?php echo ( 'overhead' === $orderby ) ? esc_attr( $order ) : 'asc'; ?>">
100
+ <a href="<?php echo esc_url( bbp_get_admin_repair_tool_page_url( array(
101
+ 'orderby' => 'overhead',
102
+ 'order' => $new_order
103
+ ) ) ); ?>"><span><?php esc_html_e( 'Overhead', 'bbpress' ); ?></span><span class="sorting-indicator"></span>
104
+ </a>
105
+ </th>
106
  </tr>
107
  </thead>
108
 
122
 
123
  // Optional description
124
  if ( ! empty( $item['description'] ) ) :
125
+ echo '<p class="description">' . esc_html( $item['description'] ) . '</p>';
126
  endif;
127
 
128
  ?><div class="row-actions hide-if-no-js">
134
  <span class="screen-reader-text"><?php esc_html_e( 'Show more details', 'bbpress' ); ?></span>
135
  </button>
136
  </td>
137
+ <td class="column-version desc" data-colname="<?php esc_html_e( 'Version', 'bbpress' ); ?>">
138
+ <div class="bbp-tool-version">
139
+
140
+ <?php echo implode( ', ', bbp_get_admin_repair_tool_version( $item ) ); ?>
141
+
142
+ </div>
143
+ </td>
144
  <td class="column-components desc" data-colname="<?php esc_html_e( 'Components', 'bbpress' ); ?>">
145
+ <div class="bbp-tool-components">
146
 
147
  <?php echo implode( ', ', bbp_get_admin_repair_tool_components( $item ) ); ?>
148
 
179
  <input id="cb-select-all-2" type="checkbox">
180
  </td>
181
  <th scope="col" class="manage-column column-primary column-description"><?php esc_html_e( 'Description', 'bbpress' ); ?></th>
182
+ <th scope="col" class="manage-column column-version"><?php esc_html_e( 'Version', 'bbpress' ); ?></th>
183
  <th scope="col" class="manage-column column-components"><?php esc_html_e( 'Components', 'bbpress' ); ?></th>
184
  <th scope="col" class="manage-column column-overhead"><?php esc_html_e( 'Overhead', 'bbpress' ); ?></th>
185
  </tr>
includes/common/formatting.php CHANGED
@@ -392,7 +392,7 @@ function bbp_make_clickable( $text = '' ) {
392
  }
393
 
394
  // Cleanup of accidental links within links
395
- return preg_replace( '#(<a([ \r\n\t]+[^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i', "$1$3</a>", $r );
396
  }
397
 
398
  /**
@@ -468,7 +468,7 @@ function bbp_make_mentions_clickable( $text = '' ) {
468
  /**
469
  * Callback to convert mention matches to HTML A tag.
470
  *
471
- * @since 2.6.0 (r6014)
472
  *
473
  * @param array $matches Regular expression matches in the current text blob.
474
  *
392
  }
393
 
394
  // Cleanup of accidental links within links
395
+ return preg_replace( '#(<a([ \r\n\t]+[^>]+?>|>))<a [^>]+?>([^>]+?)</a>([^<]*)</a>#i', "$1$3$4</a>", $r );
396
  }
397
 
398
  /**
468
  /**
469
  * Callback to convert mention matches to HTML A tag.
470
  *
471
+ * @since 2.6.0 bbPress (r6014)
472
  *
473
  * @param array $matches Regular expression matches in the current text blob.
474
  *
includes/common/functions.php CHANGED
@@ -236,12 +236,8 @@ function bbp_past_edit_lock( $datetime = '', $utc = true ) {
236
  $past_time = strtotime( $datetime, $cur_time );
237
  $diff_time = ( $lock_time - $past_time ) - $duration;
238
 
239
- // 0 minutes set, so allow editing forever
240
- if ( 0 === $minutes ) {
241
- $retval = false;
242
-
243
  // Check if less than lock time
244
- } elseif ( $diff_time < $duration ) {
245
  $retval = false;
246
  }
247
  }
@@ -645,7 +641,11 @@ function bbp_update_anonymous_post_author( $post_id = 0, $anonymous_data = array
645
 
646
  // Update all anonymous metas
647
  foreach ( $r as $anon_key => $anon_value ) {
648
- update_post_meta( $post_id, '_' . $anon_key, (string) $anon_value, false );
 
 
 
 
649
  }
650
  }
651
 
@@ -1028,6 +1028,11 @@ function bbp_notify_topic_subscribers( $reply_id = 0, $topic_id = 0, $forum_id =
1028
  return false;
1029
  }
1030
 
 
 
 
 
 
1031
  /** Validation ************************************************************/
1032
 
1033
  $reply_id = bbp_get_reply_id( $reply_id );
@@ -1063,7 +1068,7 @@ function bbp_notify_topic_subscribers( $reply_id = 0, $topic_id = 0, $forum_id =
1063
  }
1064
 
1065
  // Dedicated filter to manipulate user ID's to send emails to
1066
- $user_ids = (array) apply_filters( 'bbp_topic_subscription_user_ids', $user_ids );
1067
 
1068
  // Bail of the reply author was the only one subscribed.
1069
  if ( empty( $user_ids ) ) {
@@ -1085,10 +1090,11 @@ function bbp_notify_topic_subscribers( $reply_id = 0, $topic_id = 0, $forum_id =
1085
  bbp_remove_all_filters( 'the_title' );
1086
 
1087
  // Strip tags from text and setup mail data
1088
- $blog_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
1089
- $topic_title = wp_specialchars_decode( strip_tags( bbp_get_topic_title( $topic_id ) ), ENT_QUOTES );
1090
- $reply_content = wp_specialchars_decode( strip_tags( bbp_get_reply_content( $reply_id ) ), ENT_QUOTES );
1091
- $reply_url = bbp_get_reply_url( $reply_id );
 
1092
 
1093
  // For plugins to filter messages per reply/topic/user
1094
  $message = sprintf( esc_html__( '%1$s wrote:
@@ -1121,6 +1127,9 @@ Login and visit the topic to unsubscribe from these emails.', 'bbpress' ),
1121
 
1122
  /** Headers ***************************************************************/
1123
 
 
 
 
1124
  // Get the noreply@ address
1125
  $no_reply = bbp_get_do_not_reply_address();
1126
 
@@ -1128,7 +1137,7 @@ Login and visit the topic to unsubscribe from these emails.', 'bbpress' ),
1128
  $from_email = apply_filters( 'bbp_subscription_from_email', $no_reply );
1129
 
1130
  // Setup the From header
1131
- $headers = array( 'From: ' . get_bloginfo( 'name' ) . ' <' . $from_email . '>' );
1132
 
1133
  // Loop through addresses
1134
  foreach ( (array) $email_addresses as $address ) {
@@ -1141,11 +1150,13 @@ Login and visit the topic to unsubscribe from these emails.', 'bbpress' ),
1141
  $headers = apply_filters( 'bbp_subscription_mail_headers', $headers );
1142
  $to_email = apply_filters( 'bbp_subscription_to_email', $no_reply );
1143
 
 
1144
  do_action( 'bbp_pre_notify_subscribers', $reply_id, $topic_id, $user_ids );
1145
 
1146
  // Send notification email
1147
  wp_mail( $to_email, $subject, $message, $headers );
1148
 
 
1149
  do_action( 'bbp_post_notify_subscribers', $reply_id, $topic_id, $user_ids );
1150
 
1151
  // Restore previously removed filters
@@ -1185,6 +1196,11 @@ function bbp_notify_forum_subscribers( $topic_id = 0, $forum_id = 0, $anonymous_
1185
  return false;
1186
  }
1187
 
 
 
 
 
 
1188
  /** Validation ************************************************************/
1189
 
1190
  $topic_id = bbp_get_topic_id( $topic_id );
@@ -1219,7 +1235,7 @@ function bbp_notify_forum_subscribers( $topic_id = 0, $forum_id = 0, $anonymous_
1219
  }
1220
 
1221
  // Dedicated filter to manipulate user ID's to send emails to
1222
- $user_ids = (array) apply_filters( 'bbp_forum_subscription_user_ids', $user_ids );
1223
 
1224
  // Bail of the reply author was the only one subscribed.
1225
  if ( empty( $user_ids ) ) {
@@ -1241,10 +1257,11 @@ function bbp_notify_forum_subscribers( $topic_id = 0, $forum_id = 0, $anonymous_
1241
  bbp_remove_all_filters( 'the_title' );
1242
 
1243
  // Strip tags from text and setup mail data
1244
- $blog_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
1245
- $topic_title = wp_specialchars_decode( strip_tags( bbp_get_topic_title( $topic_id ) ), ENT_QUOTES );
1246
- $topic_content = wp_specialchars_decode( strip_tags( bbp_get_topic_content( $topic_id ) ), ENT_QUOTES );
1247
- $topic_url = get_permalink( $topic_id );
 
1248
 
1249
  // For plugins to filter messages per reply/topic/user
1250
  $message = sprintf( esc_html__( '%1$s wrote:
@@ -1277,6 +1294,9 @@ Login and visit the topic to unsubscribe from these emails.', 'bbpress' ),
1277
 
1278
  /** Headers ***************************************************************/
1279
 
 
 
 
1280
  // Get the noreply@ address
1281
  $no_reply = bbp_get_do_not_reply_address();
1282
 
@@ -1284,7 +1304,7 @@ Login and visit the topic to unsubscribe from these emails.', 'bbpress' ),
1284
  $from_email = apply_filters( 'bbp_subscription_from_email', $no_reply );
1285
 
1286
  // Setup the From header
1287
- $headers = array( 'From: ' . get_bloginfo( 'name' ) . ' <' . $from_email . '>' );
1288
 
1289
  // Loop through addresses
1290
  foreach ( (array) $email_addresses as $address ) {
@@ -1297,11 +1317,13 @@ Login and visit the topic to unsubscribe from these emails.', 'bbpress' ),
1297
  $headers = apply_filters( 'bbp_subscription_mail_headers', $headers );
1298
  $to_email = apply_filters( 'bbp_subscription_to_email', $no_reply );
1299
 
 
1300
  do_action( 'bbp_pre_notify_forum_subscribers', $topic_id, $forum_id, $user_ids );
1301
 
1302
  // Send notification email
1303
  wp_mail( $to_email, $subject, $message, $headers );
1304
 
 
1305
  do_action( 'bbp_post_notify_forum_subscribers', $topic_id, $forum_id, $user_ids );
1306
 
1307
  // Restore previously removed filters
@@ -1401,6 +1423,81 @@ function bbp_get_email_addresses_from_user_ids( $user_ids = array() ) {
1401
  return apply_filters( 'bbp_get_email_addresses_from_user_ids', $retval, $user_ids, $limit );
1402
  }
1403
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1404
  /** Login *********************************************************************/
1405
 
1406
  /**
@@ -1566,12 +1663,24 @@ function bbp_get_public_child_last_id( $parent_id = 0, $post_type = 'post' ) {
1566
  return false;
1567
  }
1568
 
1569
- // Get the public posts status
1570
- $post_status = array( bbp_get_public_status_id() );
 
 
 
 
 
1571
 
1572
- // Add closed status if topic post type
1573
- if ( bbp_get_topic_post_type() === $post_type ) {
1574
- $post_status[] = bbp_get_closed_status_id();
 
 
 
 
 
 
 
1575
  }
1576
 
1577
  $query = new WP_Query( array(
@@ -1725,7 +1834,7 @@ function bbp_get_public_child_count( $parent_id = 0, $post_type = 'post' ) {
1725
 
1726
  // Forum
1727
  case bbp_get_forum_post_type() :
1728
- $post_status = array( bbp_get_public_status_id() );
1729
  break;
1730
 
1731
  // Topic
@@ -1771,7 +1880,7 @@ function bbp_get_non_public_child_count( $parent_id = 0, $post_type = 'post' ) {
1771
 
1772
  // Forum
1773
  case bbp_get_forum_post_type() :
1774
- $post_status = array( bbp_get_private_status_id(), bbp_get_hidden_status_id() );
1775
  break;
1776
 
1777
  // Topic
@@ -1781,9 +1890,13 @@ function bbp_get_non_public_child_count( $parent_id = 0, $post_type = 'post' ) {
1781
 
1782
  // Reply
1783
  case bbp_get_reply_post_type() :
1784
- default :
1785
  $post_status = bbp_get_non_public_reply_statuses();
1786
  break;
 
 
 
 
 
1787
  }
1788
 
1789
  // Get counts
@@ -1814,12 +1927,24 @@ function bbp_get_public_child_ids( $parent_id = 0, $post_type = 'post' ) {
1814
  return array();
1815
  }
1816
 
1817
- // Get the public post status
1818
- $post_status = array( bbp_get_public_status_id() );
1819
 
1820
- // Add closed status if topic post type
1821
- if ( bbp_get_topic_post_type() === $post_type ) {
1822
- $post_status[] = bbp_get_closed_status_id();
 
 
 
 
 
 
 
 
 
 
 
 
1823
  }
1824
 
1825
  $query = new WP_Query( array(
@@ -1841,7 +1966,11 @@ function bbp_get_public_child_ids( $parent_id = 0, $post_type = 'post' ) {
1841
  'ignore_sticky_posts' => true,
1842
  'no_found_rows' => true
1843
  ) );
1844
- $child_ids = ! empty( $query->posts ) ? $query->posts : array();
 
 
 
 
1845
  unset( $query );
1846
 
1847
  // Filter & return
@@ -1865,17 +1994,25 @@ function bbp_get_all_child_ids( $parent_id = 0, $post_type = 'post' ) {
1865
  return array();
1866
  }
1867
 
1868
- // Check cache key
1869
- $key = md5( serialize( array( 'parent_id' => $parent_id, 'post_type' => $post_type ) ) );
 
 
 
 
 
 
 
1870
  $last_changed = wp_cache_get_last_changed( 'bbpress_posts' );
1871
  $cache_key = "bbp_child_ids:{$key}:{$last_changed}";
1872
 
1873
  // Check for cache and set if needed
1874
  $child_ids = wp_cache_get( $cache_key, 'bbpress_posts' );
 
 
1875
  if ( false === $child_ids ) {
1876
 
1877
  // Join post statuses to specifically exclude together
1878
- $not_in = array( 'draft', 'future' );
1879
  $post_status = "'" . implode( "', '", $not_in ) . "'";
1880
  $bbp_db = bbp_db();
1881
 
@@ -2481,6 +2618,9 @@ function bbp_get_url_scheme() {
2481
  /**
2482
  * Is a title longer that the maximum title length?
2483
  *
 
 
 
2484
  * @since 2.6.0 bbPress (r6783)
2485
  *
2486
  * @param string $title
236
  $past_time = strtotime( $datetime, $cur_time );
237
  $diff_time = ( $lock_time - $past_time ) - $duration;
238
 
 
 
 
 
239
  // Check if less than lock time
240
+ if ( $diff_time < $duration ) {
241
  $retval = false;
242
  }
243
  }
641
 
642
  // Update all anonymous metas
643
  foreach ( $r as $anon_key => $anon_value ) {
644
+
645
+ // Update, or delete if empty
646
+ ! empty( $anon_value )
647
+ ? update_post_meta( $post_id, '_' . $anon_key, (string) $anon_value, false )
648
+ : delete_post_meta( $post_id, '_' . $anon_key );
649
  }
650
  }
651
 
1028
  return false;
1029
  }
1030
 
1031
+ // Bail if importing
1032
+ if ( defined( 'WP_IMPORTING' ) && WP_IMPORTING ) {
1033
+ return false;
1034
+ }
1035
+
1036
  /** Validation ************************************************************/
1037
 
1038
  $reply_id = bbp_get_reply_id( $reply_id );
1068
  }
1069
 
1070
  // Dedicated filter to manipulate user ID's to send emails to
1071
+ $user_ids = (array) apply_filters( 'bbp_topic_subscription_user_ids', $user_ids, $reply_id, $topic_id );
1072
 
1073
  // Bail of the reply author was the only one subscribed.
1074
  if ( empty( $user_ids ) ) {
1090
  bbp_remove_all_filters( 'the_title' );
1091
 
1092
  // Strip tags from text and setup mail data
1093
+ $blog_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
1094
+ $topic_title = wp_specialchars_decode( strip_tags( bbp_get_topic_title( $topic_id ) ), ENT_QUOTES );
1095
+ $reply_author_name = wp_specialchars_decode( strip_tags( $reply_author_name ), ENT_QUOTES );
1096
+ $reply_content = wp_specialchars_decode( strip_tags( bbp_get_reply_content( $reply_id ) ), ENT_QUOTES );
1097
+ $reply_url = bbp_get_reply_url( $reply_id );
1098
 
1099
  // For plugins to filter messages per reply/topic/user
1100
  $message = sprintf( esc_html__( '%1$s wrote:
1127
 
1128
  /** Headers ***************************************************************/
1129
 
1130
+ // Default bbPress X-header
1131
+ $headers = array( bbp_get_email_header() );
1132
+
1133
  // Get the noreply@ address
1134
  $no_reply = bbp_get_do_not_reply_address();
1135
 
1137
  $from_email = apply_filters( 'bbp_subscription_from_email', $no_reply );
1138
 
1139
  // Setup the From header
1140
+ $headers[] = 'From: ' . get_bloginfo( 'name' ) . ' <' . $from_email . '>';
1141
 
1142
  // Loop through addresses
1143
  foreach ( (array) $email_addresses as $address ) {
1150
  $headers = apply_filters( 'bbp_subscription_mail_headers', $headers );
1151
  $to_email = apply_filters( 'bbp_subscription_to_email', $no_reply );
1152
 
1153
+ // Before
1154
  do_action( 'bbp_pre_notify_subscribers', $reply_id, $topic_id, $user_ids );
1155
 
1156
  // Send notification email
1157
  wp_mail( $to_email, $subject, $message, $headers );
1158
 
1159
+ // After
1160
  do_action( 'bbp_post_notify_subscribers', $reply_id, $topic_id, $user_ids );
1161
 
1162
  // Restore previously removed filters
1196
  return false;
1197
  }
1198
 
1199
+ // Bail if importing
1200
+ if ( defined( 'WP_IMPORTING' ) && WP_IMPORTING ) {
1201
+ return false;
1202
+ }
1203
+
1204
  /** Validation ************************************************************/
1205
 
1206
  $topic_id = bbp_get_topic_id( $topic_id );
1235
  }
1236
 
1237
  // Dedicated filter to manipulate user ID's to send emails to
1238
+ $user_ids = (array) apply_filters( 'bbp_forum_subscription_user_ids', $user_ids, $topic_id, $forum_id );
1239
 
1240
  // Bail of the reply author was the only one subscribed.
1241
  if ( empty( $user_ids ) ) {
1257
  bbp_remove_all_filters( 'the_title' );
1258
 
1259
  // Strip tags from text and setup mail data
1260
+ $blog_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
1261
+ $topic_title = wp_specialchars_decode( strip_tags( bbp_get_topic_title( $topic_id ) ), ENT_QUOTES );
1262
+ $topic_author_name = wp_specialchars_decode( strip_tags( $topic_author_name ), ENT_QUOTES );
1263
+ $topic_content = wp_specialchars_decode( strip_tags( bbp_get_topic_content( $topic_id ) ), ENT_QUOTES );
1264
+ $topic_url = get_permalink( $topic_id );
1265
 
1266
  // For plugins to filter messages per reply/topic/user
1267
  $message = sprintf( esc_html__( '%1$s wrote:
1294
 
1295
  /** Headers ***************************************************************/
1296
 
1297
+ // Default bbPress X-header
1298
+ $headers = array( bbp_get_email_header() );
1299
+
1300
  // Get the noreply@ address
1301
  $no_reply = bbp_get_do_not_reply_address();
1302
 
1304
  $from_email = apply_filters( 'bbp_subscription_from_email', $no_reply );
1305
 
1306
  // Setup the From header
1307
+ $headers[] = 'From: ' . get_bloginfo( 'name' ) . ' <' . $from_email . '>';
1308
 
1309
  // Loop through addresses
1310
  foreach ( (array) $email_addresses as $address ) {
1317
  $headers = apply_filters( 'bbp_subscription_mail_headers', $headers );
1318
  $to_email = apply_filters( 'bbp_subscription_to_email', $no_reply );
1319
 
1320
+ // Before
1321
  do_action( 'bbp_pre_notify_forum_subscribers', $topic_id, $forum_id, $user_ids );
1322
 
1323
  // Send notification email
1324
  wp_mail( $to_email, $subject, $message, $headers );
1325
 
1326
+ // After
1327
  do_action( 'bbp_post_notify_forum_subscribers', $topic_id, $forum_id, $user_ids );
1328
 
1329
  // Restore previously removed filters
1423
  return apply_filters( 'bbp_get_email_addresses_from_user_ids', $retval, $user_ids, $limit );
1424
  }
1425
 
1426
+ /**
1427
+ * Automatically splits bbPress emails with many Bcc recipients into chunks.
1428
+ *
1429
+ * This middleware is useful because topics and forums with many subscribers
1430
+ * run into problems with Bcc limits, and many hosting companies & third-party
1431
+ * services limit the size of a Bcc audience to prevent spamming.
1432
+ *
1433
+ * The default "chunk" size is 40 users per iteration, and can be filtered if
1434
+ * desired. A future version of bbPress will introduce a setting to more easily
1435
+ * tune this.
1436
+ *
1437
+ * @since 2.6.0 bbPress (r6918)
1438
+ *
1439
+ * @param array $args Original arguments passed to wp_mail().
1440
+ * @return array
1441
+ */
1442
+ function bbp_chunk_emails( $args = array() ) {
1443
+
1444
+ // Get the maximum number of Bcc's per chunk
1445
+ $max_num = apply_filters( 'bbp_get_bcc_chunk_limit', 40, $args );
1446
+
1447
+ // Look for "bcc: " in a case-insensitive way, and split into 2 sets
1448
+ $match = '/^bcc: (\w+)/i';
1449
+ $old_headers = preg_grep( $match, $args['headers'], PREG_GREP_INVERT );
1450
+ $bcc_headers = preg_grep( $match, $args['headers'] );
1451
+
1452
+ // Bail if less than $max_num recipients
1453
+ if ( empty( $bcc_headers ) || ( count( $bcc_headers ) < $max_num ) ) {
1454
+ return $args;
1455
+ }
1456
+
1457
+ // Reindex the headers arrays
1458
+ $old_headers = array_values( $old_headers );
1459
+ $bcc_headers = array_values( $bcc_headers );
1460
+
1461
+ // Break the Bcc emails into chunks
1462
+ foreach ( array_chunk( $bcc_headers, $max_num ) as $i => $chunk ) {
1463
+
1464
+ // Skip the first chunk (it will get used in the original wp_mail() call)
1465
+ if ( 0 === $i ) {
1466
+ $first_chunk = $chunk;
1467
+ continue;
1468
+ }
1469
+
1470
+ // Send out the chunk
1471
+ $chunk_headers = array_merge( $old_headers, $chunk );
1472
+
1473
+ // Recursion alert, but should be OK!
1474
+ wp_mail(
1475
+ $args['to'],
1476
+ $args['subject'],
1477
+ $args['message'],
1478
+ $chunk_headers,
1479
+ $args['attachments']
1480
+ );
1481
+ }
1482
+
1483
+ // Set headers to old headers + the $first_chunk of Bcc's
1484
+ $args['headers'] = array_merge( $old_headers, $first_chunk );
1485
+
1486
+ // Return the reduced args, with the first chunk of Bcc's
1487
+ return $args;
1488
+ }
1489
+
1490
+ /**
1491
+ * Return the string used for the bbPress specific X-header.
1492
+ *
1493
+ * @since 2.6.0 bbPress (r6919)
1494
+ *
1495
+ * @return string
1496
+ */
1497
+ function bbp_get_email_header() {
1498
+ return apply_filters( 'bbp_get_email_header', 'X-bbPress: ' . bbp_get_version() );
1499
+ }
1500
+
1501
  /** Login *********************************************************************/
1502
 
1503
  /**
1663
  return false;
1664
  }
1665
 
1666
+ // Which statuses
1667
+ switch ( $post_type ) {
1668
+
1669
+ // Forum
1670
+ case bbp_get_forum_post_type() :
1671
+ $post_status = bbp_get_public_forum_statuses();
1672
+ break;
1673
 
1674
+ // Topic
1675
+ case bbp_get_topic_post_type() :
1676
+ $post_status = bbp_get_public_topic_statuses();
1677
+ break;
1678
+
1679
+ // Reply
1680
+ case bbp_get_reply_post_type() :
1681
+ default :
1682
+ $post_status = bbp_get_public_reply_statuses();
1683
+ break;
1684
  }
1685
 
1686
  $query = new WP_Query( array(
1834
 
1835
  // Forum
1836
  case bbp_get_forum_post_type() :
1837
+ $post_status = bbp_get_public_forum_statuses();
1838
  break;
1839
 
1840
  // Topic
1880
 
1881
  // Forum
1882
  case bbp_get_forum_post_type() :
1883
+ $post_status = bbp_get_non_public_forum_statuses();
1884
  break;
1885
 
1886
  // Topic
1890
 
1891
  // Reply
1892
  case bbp_get_reply_post_type() :
 
1893
  $post_status = bbp_get_non_public_reply_statuses();
1894
  break;
1895
+
1896
+ // Any
1897
+ default :
1898
+ $post_status = bbp_get_public_status_id();
1899
+ break;
1900
  }
1901
 
1902
  // Get counts
1927
  return array();
1928
  }
1929
 
1930
+ // Which statuses
1931
+ switch ( $post_type ) {
1932
 
1933
+ // Forum
1934
+ case bbp_get_forum_post_type() :
1935
+ $post_status = bbp_get_public_forum_statuses();
1936
+ break;
1937
+
1938
+ // Topic
1939
+ case bbp_get_topic_post_type() :
1940
+ $post_status = bbp_get_public_topic_statuses();
1941
+ break;
1942
+
1943
+ // Reply
1944
+ case bbp_get_reply_post_type() :
1945
+ default :
1946
+ $post_status = bbp_get_public_reply_statuses();
1947
+ break;
1948
  }
1949
 
1950
  $query = new WP_Query( array(
1966
  'ignore_sticky_posts' => true,
1967
  'no_found_rows' => true
1968
  ) );
1969
+
1970
+ $child_ids = ! empty( $query->posts )
1971
+ ? $query->posts
1972
+ : array();
1973
+
1974
  unset( $query );
1975
 
1976
  // Filter & return
1994
  return array();
1995
  }
1996
 
1997
+ // Make cache key
1998
+ $not_in = array( 'draft', 'future' );
1999
+ $key = md5( serialize( array(
2000
+ 'parent_id' => $parent_id,
2001
+ 'post_type' => $post_type,
2002
+ 'post_status' => $not_in
2003
+ ) ) );
2004
+
2005
+ // Check last changed
2006
  $last_changed = wp_cache_get_last_changed( 'bbpress_posts' );
2007
  $cache_key = "bbp_child_ids:{$key}:{$last_changed}";
2008
 
2009
  // Check for cache and set if needed
2010
  $child_ids = wp_cache_get( $cache_key, 'bbpress_posts' );
2011
+
2012
+ // Not already cached
2013
  if ( false === $child_ids ) {
2014
 
2015
  // Join post statuses to specifically exclude together
 
2016
  $post_status = "'" . implode( "', '", $not_in ) . "'";
2017
  $bbp_db = bbp_db();
2018
 
2618
  /**
2619
  * Is a title longer that the maximum title length?
2620
  *
2621
+ * Uses mb_strlen() in `8bit` mode to treat strings as raw. This matches the
2622
+ * behavior present in Comments, PHPMailer, RandomCompat, and others.
2623
+ *
2624
  * @since 2.6.0 bbPress (r6783)
2625
  *
2626
  * @param string $title
includes/common/template.php CHANGED
@@ -969,6 +969,7 @@ function bbp_body_class( $wp_classes, $custom_classes = false ) {
969
 
970
  } elseif ( bbp_is_single_view() ) {
971
  $bbp_classes[] = 'bbp-view';
 
972
 
973
  /** User ******************************************************************/
974
 
@@ -1979,19 +1980,21 @@ function bbp_view_id( $view = '' ) {
1979
  function bbp_get_view_id( $view = '' ) {
1980
  $bbp = bbpress();
1981
 
 
1982
  if ( ! empty( $view ) ) {
1983
- $view = sanitize_title( $view );
 
 
1984
  } elseif ( ! empty( $bbp->current_view_id ) ) {
1985
- $view = $bbp->current_view_id;
1986
- } else {
1987
- $view = get_query_var( bbp_get_view_rewrite_id() );
1988
- }
1989
 
1990
- if ( array_key_exists( $view, $bbp->views ) ) {
1991
- return $view;
 
1992
  }
1993
 
1994
- return false;
 
1995
  }
1996
 
1997
  /**
969
 
970
  } elseif ( bbp_is_single_view() ) {
971
  $bbp_classes[] = 'bbp-view';
972
+ $bbp_classes[] = 'bbp-view-' . bbp_get_view_id();
973
 
974
  /** User ******************************************************************/
975
 
1980
  function bbp_get_view_id( $view = '' ) {
1981
  $bbp = bbpress();
1982
 
1983
+ // User supplied string
1984
  if ( ! empty( $view ) ) {
1985
+ $view_id = sanitize_key( $view );
1986
+
1987
+ // Current view ID
1988
  } elseif ( ! empty( $bbp->current_view_id ) ) {
1989
+ $view_id = $bbp->current_view_id;
 
 
 
1990
 
1991
+ // Querying for view
1992
+ } else {
1993
+ $view_id = get_query_var( bbp_get_view_rewrite_id() );
1994
  }
1995
 
1996
+ // Filter & return
1997
+ return apply_filters( 'bbp_get_view_id', $view_id, $view );
1998
  }
1999
 
2000
  /**
includes/core/abstraction.php CHANGED
@@ -164,7 +164,7 @@ function bbp_db() {
164
  function bbp_rewrite() {
165
  return bbp_get_global_object( 'wp_rewrite', 'WP_Rewrite', (object) array(
166
  'root' => '',
167
- 'pagination_base' => '',
168
  ) );
169
  }
170
 
@@ -177,8 +177,17 @@ function bbp_rewrite() {
177
  */
178
  function bbp_get_root_url() {
179
 
 
 
 
 
 
 
 
 
 
180
  // Filter & return
181
- return apply_filters( 'bbp_get_root_url', bbp_rewrite()->root );
182
  }
183
 
184
  /**
@@ -190,8 +199,41 @@ function bbp_get_root_url() {
190
  */
191
  function bbp_get_paged_slug() {
192
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  // Filter & return
194
- return apply_filters( 'bbp_get_paged_slug', bbp_rewrite()->pagination_base );
195
  }
196
 
197
  /**
@@ -268,30 +310,6 @@ function bbp_paginate_links( $args = array() ) {
268
  return bbp_make_first_page_canonical( paginate_links( $r ) );
269
  }
270
 
271
- /**
272
- * Is the environment using pretty URLs?
273
- *
274
- * @since 2.5.8 bbPress (r5814)
275
- *
276
- * @global object $wp_rewrite The WP_Rewrite object
277
- *
278
- * @return bool
279
- */
280
- function bbp_use_pretty_urls() {
281
-
282
- // Default
283
- $retval = false;
284
- $rewrite = bbp_rewrite();
285
-
286
- // Use $wp_rewrite->using_permalinks() if available
287
- if ( method_exists( $rewrite, 'using_permalinks' ) ) {
288
- $retval = $rewrite->using_permalinks();
289
- }
290
-
291
- // Filter & return
292
- return apply_filters( 'bbp_pretty_urls', $retval );
293
- }
294
-
295
  /**
296
  * Parse the WordPress core version number
297
  *
164
  function bbp_rewrite() {
165
  return bbp_get_global_object( 'wp_rewrite', 'WP_Rewrite', (object) array(
166
  'root' => '',
167
+ 'pagination_base' => 'page',
168
  ) );
169
  }
170
 
177
  */
178
  function bbp_get_root_url() {
179
 
180
+ // Default
181
+ $retval = '';
182
+ $rewrite = bbp_rewrite();
183
+
184
+ // Use $wp_rewrite->root if available
185
+ if ( property_exists( $rewrite, 'root' ) ) {
186
+ $retval = $rewrite->root;
187
+ }
188
+
189
  // Filter & return
190
+ return apply_filters( 'bbp_get_root_url', $retval );
191
  }
192
 
193
  /**
199
  */
200
  function bbp_get_paged_slug() {
201
 
202
+ // Default
203
+ $retval = 'page';
204
+ $rewrite = bbp_rewrite();
205
+
206
+ // Use $wp_rewrite->pagination_base if available
207
+ if ( property_exists( $rewrite, 'pagination_base' ) ) {
208
+ $retval = $rewrite->pagination_base;
209
+ }
210
+
211
+ // Filter & return
212
+ return apply_filters( 'bbp_get_paged_slug', $retval );
213
+ }
214
+
215
+ /**
216
+ * Is the environment using pretty URLs?
217
+ *
218
+ * @since 2.5.8 bbPress (r5814)
219
+ *
220
+ * @global object $wp_rewrite The WP_Rewrite object
221
+ *
222
+ * @return bool
223
+ */
224
+ function bbp_use_pretty_urls() {
225
+
226
+ // Default
227
+ $retval = false;
228
+ $rewrite = bbp_rewrite();
229
+
230
+ // Use $wp_rewrite->using_permalinks() if available
231
+ if ( method_exists( $rewrite, 'using_permalinks' ) ) {
232
+ $retval = $rewrite->using_permalinks();
233
+ }
234
+
235
  // Filter & return
236
+ return apply_filters( 'bbp_pretty_urls', $retval );
237
  }
238
 
239
  /**
310
  return bbp_make_first_page_canonical( paginate_links( $r ) );
311
  }
312
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  /**
314
  * Parse the WordPress core version number
315
  *
includes/core/actions.php CHANGED
@@ -230,18 +230,22 @@ add_action( 'bbp_trash_topic', 'bbp_remove_topic_from_all_favorites' );
230
  add_action( 'bbp_delete_topic', 'bbp_remove_topic_from_all_favorites' );
231
 
232
  // Subscriptions
233
- add_action( 'bbp_spam_topic', 'bbp_remove_topic_from_all_subscriptions' );
234
- add_action( 'bbp_trash_topic', 'bbp_remove_topic_from_all_subscriptions' );
235
- add_action( 'bbp_delete_topic', 'bbp_remove_topic_from_all_subscriptions' );
236
- add_action( 'bbp_trash_forum', 'bbp_remove_forum_from_all_subscriptions' );
237
- add_action( 'bbp_delete_forum', 'bbp_remove_forum_from_all_subscriptions' );
238
- add_action( 'bbp_new_reply', 'bbp_notify_topic_subscribers', 11, 5 );
239
- add_action( 'bbp_new_topic', 'bbp_notify_forum_subscribers', 11, 4 );
 
 
240
 
241
  // Sticky
242
- add_action( 'bbp_spam_topic', 'bbp_unstick_topic' );
243
- add_action( 'bbp_trash_topic', 'bbp_unstick_topic' );
244
- add_action( 'bbp_delete_topic', 'bbp_unstick_topic' );
 
 
245
 
246
  // Update topic branch
247
  add_action( 'bbp_trashed_topic', 'bbp_update_topic_walker' );
@@ -261,49 +265,65 @@ add_action( 'bbp_unspammed_reply', 'bbp_update_reply_walker' );
261
  add_action( 'bbp_approved_reply', 'bbp_update_reply_walker' );
262
  add_action( 'bbp_unapproved_reply', 'bbp_update_reply_walker' );
263
 
264
- // Update forum topic/reply counts.
265
- add_action( 'bbp_new_reply', 'bbp_increase_forum_reply_count' );
266
- add_action( 'bbp_new_topic', 'bbp_increase_forum_topic_count' );
267
- add_action( 'bbp_trashed_reply', 'bbp_decrease_forum_reply_count' );
268
- add_action( 'bbp_trashed_topic', 'bbp_decrease_forum_topic_count' );
269
- add_action( 'bbp_untrashed_reply', 'bbp_increase_forum_reply_count' );
270
- add_action( 'bbp_untrashed_topic', 'bbp_increase_forum_topic_count' );
271
- add_action( 'bbp_spammed_reply', 'bbp_decrease_forum_reply_count' );
272
- add_action( 'bbp_spammed_topic', 'bbp_decrease_forum_topic_count' );
273
- add_action( 'bbp_unspammed_reply', 'bbp_increase_forum_reply_count' );
274
- add_action( 'bbp_unspammed_topic', 'bbp_increase_forum_topic_count' );
275
- add_action( 'bbp_approved_reply', 'bbp_increase_forum_reply_count' );
276
- add_action( 'bbp_approved_topic', 'bbp_increase_forum_topic_count' );
277
- add_action( 'bbp_unapproved_reply', 'bbp_decrease_forum_reply_count' );
278
- add_action( 'bbp_unapproved_topic', 'bbp_decrease_forum_topic_count' );
 
 
 
 
 
 
 
 
 
 
 
 
 
279
  add_action( 'bbp_trashed_topic', 'bbp_increase_forum_topic_count_hidden' );
280
- add_action( 'bbp_untrashed_topic', 'bbp_decrease_forum_topic_count_hidden' );
281
  add_action( 'bbp_spammed_topic', 'bbp_increase_forum_topic_count_hidden' );
282
- add_action( 'bbp_unspammed_topic', 'bbp_decrease_forum_topic_count_hidden' );
283
- add_action( 'bbp_approved_topic', 'bbp_decrease_forum_topic_count_hidden' );
284
  add_action( 'bbp_unapproved_topic', 'bbp_increase_forum_topic_count_hidden' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
285
 
286
- // Update forum reply counts for approved/unapproved topics.
287
  add_action( 'bbp_approved_topic', 'bbp_approved_unapproved_topic_update_forum_reply_count' );
288
  add_action( 'bbp_unapproved_topic', 'bbp_approved_unapproved_topic_update_forum_reply_count' );
289
 
290
- // Update topic reply counts.
291
- add_action( 'bbp_new_reply', 'bbp_increase_topic_reply_count' );
292
- add_action( 'bbp_trashed_reply', 'bbp_decrease_topic_reply_count' );
293
- add_action( 'bbp_untrashed_reply', 'bbp_increase_topic_reply_count' );
294
- add_action( 'bbp_spammed_reply', 'bbp_decrease_topic_reply_count' );
295
- add_action( 'bbp_unspammed_reply', 'bbp_increase_topic_reply_count' );
296
- add_action( 'bbp_approved_reply', 'bbp_increase_topic_reply_count' );
297
- add_action( 'bbp_unapproved_reply', 'bbp_decrease_topic_reply_count' );
298
- add_action( 'bbp_trashed_reply', 'bbp_increase_topic_reply_count_hidden' );
299
- add_action( 'bbp_untrashed_reply', 'bbp_decrease_topic_reply_count_hidden' );
300
- add_action( 'bbp_spammed_reply', 'bbp_increase_topic_reply_count_hidden' );
301
- add_action( 'bbp_unspammed_reply', 'bbp_decrease_topic_reply_count_hidden' );
302
- add_action( 'bbp_approved_reply', 'bbp_decrease_topic_reply_count_hidden' );
303
- add_action( 'bbp_unapproved_reply', 'bbp_increase_topic_reply_count_hidden' );
304
- add_action( 'bbp_deleted_reply', 'bbp_decrease_topic_reply_count_hidden' );
305
-
306
- // Users topic & reply counts.
307
  add_action( 'bbp_new_topic', 'bbp_increase_user_topic_count' );
308
  add_action( 'bbp_new_reply', 'bbp_increase_user_reply_count' );
309
  add_action( 'bbp_untrash_topic', 'bbp_increase_user_topic_count' );
@@ -322,7 +342,7 @@ add_action( 'bbp_delete_topic', 'bbp_delete_topic_replies' );
322
  add_action( 'bbp_spam_topic', 'bbp_spam_topic_replies' );
323
  add_action( 'bbp_unspam_topic', 'bbp_unspam_topic_replies' );
324
 
325
- // Topic engagements on user creation.
326
  add_action( 'bbp_new_topic', 'bbp_update_topic_engagements', 20 );
327
  add_action( 'bbp_new_reply', 'bbp_update_topic_engagements', 20 );
328
 
@@ -341,7 +361,7 @@ add_action( 'bbp_insert_reply', 'bbp_update_topic_engagements', 20 );
341
  add_action( 'bbp_insert_topic', 'bbp_update_topic_voice_count', 30 );
342
  add_action( 'bbp_insert_reply', 'bbp_update_topic_voice_count', 30 );
343
 
344
- // Recalculate engagements.
345
  add_action( 'bbp_trashed_reply', 'bbp_recalculate_topic_engagements' );
346
  add_action( 'bbp_untrashed_reply', 'bbp_recalculate_topic_engagements' );
347
  add_action( 'bbp_spammed_reply', 'bbp_recalculate_topic_engagements' );
@@ -357,7 +377,7 @@ add_action( 'bbp_approved_topic', 'bbp_recalculate_topic_engagements' );
357
  add_action( 'bbp_unapproved_topic', 'bbp_recalculate_topic_engagements' );
358
  add_action( 'bbp_deleted_topic', 'bbp_recalculate_topic_engagements' );
359
 
360
- // Update engagement counts.
361
  add_action( 'bbp_trashed_reply', 'bbp_update_topic_voice_count', 30 );
362
  add_action( 'bbp_untrashed_reply', 'bbp_update_topic_voice_count', 30 );
363
  add_action( 'bbp_spammed_reply', 'bbp_update_topic_voice_count', 30 );
230
  add_action( 'bbp_delete_topic', 'bbp_remove_topic_from_all_favorites' );
231
 
232
  // Subscriptions
233
+ add_action( 'bbp_spam_topic', 'bbp_remove_topic_from_all_subscriptions' );
234
+ add_action( 'bbp_trash_topic', 'bbp_remove_topic_from_all_subscriptions' );
235
+ add_action( 'bbp_delete_topic', 'bbp_remove_topic_from_all_subscriptions' );
236
+ add_action( 'bbp_trash_forum', 'bbp_remove_forum_from_all_subscriptions' );
237
+ add_action( 'bbp_delete_forum', 'bbp_remove_forum_from_all_subscriptions' );
238
+
239
+ // Subscription notifications
240
+ add_action( 'bbp_new_reply', 'bbp_notify_topic_subscribers', 11, 5 );
241
+ add_action( 'bbp_new_topic', 'bbp_notify_forum_subscribers', 11, 4 );
242
 
243
  // Sticky
244
+ add_action( 'bbp_stick_topic', 'bbp_unstick_topic' );
245
+ add_action( 'bbp_unapprove_topic', 'bbp_unstick_topic' );
246
+ add_action( 'bbp_spam_topic', 'bbp_unstick_topic' );
247
+ add_action( 'bbp_trash_topic', 'bbp_unstick_topic' );
248
+ add_action( 'bbp_delete_topic', 'bbp_unstick_topic' );
249
 
250
  // Update topic branch
251
  add_action( 'bbp_trashed_topic', 'bbp_update_topic_walker' );
265
  add_action( 'bbp_approved_reply', 'bbp_update_reply_walker' );
266
  add_action( 'bbp_unapproved_reply', 'bbp_update_reply_walker' );
267
 
268
+ // Update forum reply counts
269
+ add_action( 'bbp_new_reply', 'bbp_increase_forum_reply_count' );
270
+ add_action( 'bbp_untrashed_reply', 'bbp_increase_forum_reply_count' );
271
+ add_action( 'bbp_unspammed_reply', 'bbp_increase_forum_reply_count' );
272
+ add_action( 'bbp_approved_reply', 'bbp_increase_forum_reply_count' );
273
+ add_action( 'bbp_trash_reply', 'bbp_decrease_forum_reply_count' );
274
+ add_action( 'bbp_spam_reply', 'bbp_decrease_forum_reply_count' );
275
+ add_action( 'bbp_unapprove_reply', 'bbp_decrease_forum_reply_count' );
276
+
277
+ // Update forum hidden reply counts
278
+ add_action( 'bbp_trashed_reply', 'bbp_increase_forum_reply_count_hidden' );
279
+ add_action( 'bbp_spammed_reply', 'bbp_increase_forum_reply_count_hidden' );
280
+ add_action( 'bbp_unapproved_reply', 'bbp_increase_forum_reply_count_hidden' );
281
+ add_action( 'bbp_untrash_reply', 'bbp_decrease_forum_reply_count_hidden' );
282
+ add_action( 'bbp_unspam_reply', 'bbp_decrease_forum_reply_count_hidden' );
283
+ add_action( 'bbp_approve_reply', 'bbp_decrease_forum_reply_count_hidden' );
284
+ add_action( 'bbp_delete_reply', 'bbp_decrease_forum_reply_count_hidden' );
285
+
286
+ // Update forum topic counts
287
+ add_action( 'bbp_new_topic', 'bbp_increase_forum_topic_count' );
288
+ add_action( 'bbp_untrashed_topic', 'bbp_increase_forum_topic_count' );
289
+ add_action( 'bbp_unspammed_topic', 'bbp_increase_forum_topic_count' );
290
+ add_action( 'bbp_approved_topic', 'bbp_increase_forum_topic_count' );
291
+ add_action( 'bbp_trash_topic', 'bbp_decrease_forum_topic_count' );
292
+ add_action( 'bbp_spam_topic', 'bbp_decrease_forum_topic_count' );
293
+ add_action( 'bbp_unapprove_topic', 'bbp_decrease_forum_topic_count' );
294
+
295
+ // Update forum hidden topic counts
296
  add_action( 'bbp_trashed_topic', 'bbp_increase_forum_topic_count_hidden' );
 
297
  add_action( 'bbp_spammed_topic', 'bbp_increase_forum_topic_count_hidden' );
 
 
298
  add_action( 'bbp_unapproved_topic', 'bbp_increase_forum_topic_count_hidden' );
299
+ add_action( 'bbp_untrash_topic', 'bbp_decrease_forum_topic_count_hidden' );
300
+ add_action( 'bbp_unspam_topic', 'bbp_decrease_forum_topic_count_hidden' );
301
+ add_action( 'bbp_approve_topic', 'bbp_decrease_forum_topic_count_hidden' );
302
+ add_action( 'bbp_delete_topic', 'bbp_decrease_forum_topic_count_hidden' );
303
+
304
+ // Update topic reply counts
305
+ add_action( 'bbp_new_reply', 'bbp_increase_topic_reply_count' );
306
+ add_action( 'bbp_untrashed_reply', 'bbp_increase_topic_reply_count' );
307
+ add_action( 'bbp_unspammed_reply', 'bbp_increase_topic_reply_count' );
308
+ add_action( 'bbp_approved_reply', 'bbp_increase_topic_reply_count' );
309
+ add_action( 'bbp_trash_reply', 'bbp_decrease_topic_reply_count' );
310
+ add_action( 'bbp_spam_reply', 'bbp_decrease_topic_reply_count' );
311
+ add_action( 'bbp_unapprove_reply', 'bbp_decrease_topic_reply_count' );
312
+
313
+ // Update topic hidden reply counts
314
+ add_action( 'bbp_trashed_reply', 'bbp_increase_topic_reply_count_hidden' );
315
+ add_action( 'bbp_unapproved_reply', 'bbp_increase_topic_reply_count_hidden' );
316
+ add_action( 'bbp_spammed_reply', 'bbp_increase_topic_reply_count_hidden' );
317
+ add_action( 'bbp_untrash_reply', 'bbp_decrease_topic_reply_count_hidden' );
318
+ add_action( 'bbp_unspam_reply', 'bbp_decrease_topic_reply_count_hidden' );
319
+ add_action( 'bbp_approve_reply', 'bbp_decrease_topic_reply_count_hidden' );
320
+ add_action( 'bbp_delete_reply', 'bbp_decrease_topic_reply_count_hidden' );
321
 
322
+ // Update forum reply counts for approved/unapproved topics
323
  add_action( 'bbp_approved_topic', 'bbp_approved_unapproved_topic_update_forum_reply_count' );
324
  add_action( 'bbp_unapproved_topic', 'bbp_approved_unapproved_topic_update_forum_reply_count' );
325
 
326
+ // Users topic & reply counts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  add_action( 'bbp_new_topic', 'bbp_increase_user_topic_count' );
328
  add_action( 'bbp_new_reply', 'bbp_increase_user_reply_count' );
329
  add_action( 'bbp_untrash_topic', 'bbp_increase_user_topic_count' );
342
  add_action( 'bbp_spam_topic', 'bbp_spam_topic_replies' );
343
  add_action( 'bbp_unspam_topic', 'bbp_unspam_topic_replies' );
344
 
345
+ // Topic engagements on user creation
346
  add_action( 'bbp_new_topic', 'bbp_update_topic_engagements', 20 );
347
  add_action( 'bbp_new_reply', 'bbp_update_topic_engagements', 20 );
348
 
361
  add_action( 'bbp_insert_topic', 'bbp_update_topic_voice_count', 30 );
362
  add_action( 'bbp_insert_reply', 'bbp_update_topic_voice_count', 30 );
363
 
364
+ // Recalculate engagements
365
  add_action( 'bbp_trashed_reply', 'bbp_recalculate_topic_engagements' );
366
  add_action( 'bbp_untrashed_reply', 'bbp_recalculate_topic_engagements' );
367
  add_action( 'bbp_spammed_reply', 'bbp_recalculate_topic_engagements' );
377
  add_action( 'bbp_unapproved_topic', 'bbp_recalculate_topic_engagements' );
378
  add_action( 'bbp_deleted_topic', 'bbp_recalculate_topic_engagements' );
379
 
380
+ // Update engagement counts
381
  add_action( 'bbp_trashed_reply', 'bbp_update_topic_voice_count', 30 );
382
  add_action( 'bbp_untrashed_reply', 'bbp_update_topic_voice_count', 30 );
383
  add_action( 'bbp_spammed_reply', 'bbp_update_topic_voice_count', 30 );
includes/core/filters.php CHANGED
@@ -39,6 +39,7 @@ defined( 'ABSPATH' ) || exit;
39
  */
40
  add_filter( 'request', 'bbp_request', 10 );
41
  add_filter( 'template_include', 'bbp_template_include', 10 );
 
42
  add_filter( 'wp_title', 'bbp_title', 10, 3 );
43
  add_filter( 'body_class', 'bbp_body_class', 10, 2 );
44
  add_filter( 'map_meta_cap', 'bbp_map_meta_caps', 10, 4 );
@@ -67,6 +68,16 @@ add_action( 'posts_pre_query', 'bbp_posts_pre_query', 10, 2 );
67
  // User Creation
68
  add_filter( 'signup_user_meta', 'bbp_user_add_role_to_signup_meta', 10 );
69
 
 
 
 
 
 
 
 
 
 
 
70
  /**
71
  * Feeds
72
  *
@@ -83,11 +94,11 @@ add_filter( 'bbp_request', 'bbp_request_feed_trap' );
83
  * template hierarchy, start here by removing this filter, then look at how
84
  * bbp_template_include() works and do something similar. :)
85
  */
86
- add_filter( 'bbp_template_include', 'bbp_template_include_theme_supports', 2, 1 );
87
- add_filter( 'bbp_template_include', 'bbp_template_include_theme_compat', 4, 2 );
88
 
89
  // Filter bbPress template locations
90
- add_filter( 'bbp_get_template_stack', 'bbp_add_template_stack_locations' );
91
 
92
  // Links
93
  add_filter( 'paginate_links', 'bbp_add_view_all' );
@@ -96,12 +107,12 @@ add_filter( 'bbp_get_reply_permalink', 'bbp_add_view_all' );
96
  add_filter( 'bbp_get_forum_permalink', 'bbp_add_view_all' );
97
 
98
  // wp_filter_kses on new/edit forum/topic/reply title
99
- add_filter( 'bbp_new_forum_pre_title', 'wp_filter_kses' );
100
- add_filter( 'bbp_new_reply_pre_title', 'wp_filter_kses' );
101
- add_filter( 'bbp_new_topic_pre_title', 'wp_filter_kses' );
102
- add_filter( 'bbp_edit_forum_pre_title', 'wp_filter_kses' );
103
- add_filter( 'bbp_edit_reply_pre_title', 'wp_filter_kses' );
104
- add_filter( 'bbp_edit_topic_pre_title', 'wp_filter_kses' );
105
 
106
  // Prevent posting malicious or malformed content on new/edit topic/reply
107
  add_filter( 'bbp_new_reply_pre_content', 'bbp_encode_bad', 10 );
39
  */
40
  add_filter( 'request', 'bbp_request', 10 );
41
  add_filter( 'template_include', 'bbp_template_include', 10 );
42
+ add_filter( 'wp_mail', 'bbp_mail', 10, 3 );
43
  add_filter( 'wp_title', 'bbp_title', 10, 3 );
44
  add_filter( 'body_class', 'bbp_body_class', 10, 2 );
45
  add_filter( 'map_meta_cap', 'bbp_map_meta_caps', 10, 4 );
68
  // User Creation
69
  add_filter( 'signup_user_meta', 'bbp_user_add_role_to_signup_meta', 10 );
70
 
71
+ /**
72
+ * Emails
73
+ *
74
+ * bbPress sends emails for a few different reasons, largely related to user
75
+ * notifications or account changes. Because the `wp_mail` filter can be a
76
+ * crowded space, the `bbp_mail` subfilter should be used in conjunction with
77
+ * bbp_get_email_header() to narrow the results to only bbPress emails.
78
+ */
79
+ add_filter( 'bbp_mail', 'bbp_chunk_emails' );
80
+
81
  /**
82
  * Feeds
83
  *
94
  * template hierarchy, start here by removing this filter, then look at how
95
  * bbp_template_include() works and do something similar. :)
96
  */
97
+ add_filter( 'bbp_template_include', 'bbp_template_include_theme_supports', 2, 1 );
98
+ add_filter( 'bbp_template_include', 'bbp_template_include_theme_compat', 4, 2 );
99
 
100
  // Filter bbPress template locations
101
+ add_filter( 'bbp_get_template_stack', 'bbp_add_template_stack_locations' );
102
 
103
  // Links
104
  add_filter( 'paginate_links', 'bbp_add_view_all' );
107
  add_filter( 'bbp_get_forum_permalink', 'bbp_add_view_all' );
108
 
109
  // wp_filter_kses on new/edit forum/topic/reply title
110
+ add_filter( 'bbp_new_forum_pre_title', 'wp_filter_kses' );
111
+ add_filter( 'bbp_new_reply_pre_title', 'wp_filter_kses' );
112
+ add_filter( 'bbp_new_topic_pre_title', 'wp_filter_kses' );
113
+ add_filter( 'bbp_edit_forum_pre_title', 'wp_filter_kses' );
114
+ add_filter( 'bbp_edit_reply_pre_title', 'wp_filter_kses' );
115
+ add_filter( 'bbp_edit_topic_pre_title', 'wp_filter_kses' );
116
 
117
  // Prevent posting malicious or malformed content on new/edit topic/reply
118
  add_filter( 'bbp_new_reply_pre_content', 'bbp_encode_bad', 10 );
includes/core/functions.php CHANGED
@@ -267,10 +267,10 @@ function bbp_get_view_query_args( $view = '' ) {
267
  $view = bbp_get_view_id( $view );
268
  $retval = ! empty( $view ) && ! empty( $bbp->views[ $view ] )
269
  ? $bbp->views[ $view ]['query']
270
- : false;
271
 
272
  // Filter & return
273
- return apply_filters( 'bbp_get_view_query_args', $retval, $view );
274
  }
275
 
276
  /** Errors ********************************************************************/
267
  $view = bbp_get_view_id( $view );
268
  $retval = ! empty( $view ) && ! empty( $bbp->views[ $view ] )
269
  ? $bbp->views[ $view ]['query']
270
+ : array();
271
 
272
  // Filter & return
273
+ return (array) apply_filters( 'bbp_get_view_query_args', $retval, $view );
274
  }
275
 
276
  /** Errors ********************************************************************/
includes/core/options.php CHANGED
@@ -32,7 +32,7 @@ function bbp_get_default_options() {
32
  /** DB Version ********************************************************/
33
 
34
  '_bbp_db_version' => 0, // Database version
35
- '_bbp_db_upgrade_skipped' => 0, // Database upgrade skipped
36
 
37
  /** Flags *************************************************************/
38
 
32
  /** DB Version ********************************************************/
33
 
34
  '_bbp_db_version' => 0, // Database version
35
+ '_bbp_db_pending_upgrades' => array(), // Database upgrades pending
36
 
37
  /** Flags *************************************************************/
38
 
includes/core/sub-actions.php CHANGED
@@ -265,7 +265,6 @@ function bbp_login_form_login() {
265
  do_action( 'bbp_login_form_login' );
266
  }
267
 
268
-
269
  /**
270
  * Add the bbPress-specific post status transition action
271
  *
@@ -523,3 +522,32 @@ function bbp_map_meta_caps( $caps = array(), $cap = '', $user_id = 0, $args = ar
523
  // Filter & return
524
  return (array) apply_filters( 'bbp_map_meta_caps', $caps, $cap, $user_id, $args );
525
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
265
  do_action( 'bbp_login_form_login' );
266
  }
267
 
 
268
  /**
269
  * Add the bbPress-specific post status transition action
270
  *
522
  // Filter & return
523
  return (array) apply_filters( 'bbp_map_meta_caps', $caps, $cap, $user_id, $args );
524
  }
525
+
526
+ /**
527
+ * Filter the arguments used by wp_mail for bbPress specific emails
528
+ *
529
+ * @since 2.6.0 bbPress (r6918)
530
+ *
531
+ * @param array $args A compacted array of wp_mail() arguments, including the "to" email,
532
+ * subject, message, headers, and attachments values.
533
+ *
534
+ * @return array Array of capabilities
535
+ */
536
+ function bbp_mail( $args = array() ) {
537
+
538
+ // Bail if headers are missing/malformed
539
+ if ( empty( $args['headers'] ) || ! is_array( $args['headers'] ) ) {
540
+ return $args;
541
+ }
542
+
543
+ // Header to search all headers for
544
+ $bbp_header = bbp_get_email_header();
545
+
546
+ // Bail if no bbPress header found
547
+ if ( false === array_search( $bbp_header, $args['headers'], true ) ) {
548
+ return $args;
549
+ }
550
+
551
+ // Filter & return
552
+ return (array) apply_filters( 'bbp_mail', $args );
553
+ }
includes/core/template-functions.php CHANGED
@@ -649,8 +649,8 @@ function bbp_parse_query( $posts_query ) {
649
  // Check if the view exists by checking if there are query args are set
650
  $view_args = bbp_get_view_query_args( $bbp_view );
651
 
652
- // Bail if view args is false (view isn't registered)
653
- if ( false === $view_args ) {
654
  $posts_query->bbp_is_404 = true;
655
  return;
656
  }
649
  // Check if the view exists by checking if there are query args are set
650
  $view_args = bbp_get_view_query_args( $bbp_view );
651
 
652
+ // Bail if view args are empty
653
+ if ( empty( $view_args ) ) {
654
  $posts_query->bbp_is_404 = true;
655
  return;
656
  }
includes/core/theme-compat.php CHANGED
@@ -791,7 +791,7 @@ function bbp_template_include_theme_compat( $template = '' ) {
791
  'post_date' => 0,
792
  'post_content' => $new_content,
793
  'post_type' => '',
794
- 'post_title' => sprintf( esc_html__( 'Topic Tag: %s', 'bbpress' ), '<span>' . bbp_get_topic_tag_name() . '</span>' ),
795
  'post_status' => bbp_get_public_status_id(),
796
  'is_tax' => true,
797
  'is_archive' => true,
791
  'post_date' => 0,
792
  'post_content' => $new_content,
793
  'post_type' => '',
794
+ 'post_title' => sprintf( esc_html__( 'Topic Tag: %s', 'bbpress' ), bbp_get_topic_tag_name() ),
795
  'post_status' => bbp_get_public_status_id(),
796
  'is_tax' => true,
797
  'is_archive' => true,
includes/core/update.php CHANGED
@@ -338,42 +338,63 @@ function bbp_version_updater() {
338
 
339
  /** 2.6 Branch ********************************************************/
340
 
341
- // 2.6 Alpha
342
- if ( $raw_db_version < 261 ) {
343
 
344
  /**
345
  * Upgrade user favorites and subscriptions
346
- *
347
- * @link https://bbpress.trac.wordpress.org/ticket/2959
348
  */
349
- if ( ! bbp_is_large_install() ) {
350
  bbp_admin_upgrade_user_favorites();
351
  bbp_admin_upgrade_user_topic_subscriptions();
352
  bbp_admin_upgrade_user_forum_subscriptions();
353
- } else {
354
- update_option( '_bbp_db_upgrade_skipped', $raw_db_version );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
355
 
356
  // Set strategy to pre-2.6 on large network
357
  update_option( '_bbp_engagements_strategy', 'user' );
358
  }
359
- }
360
-
361
- // 2.6 Beta/RC/GM
362
- if ( $raw_db_version < 262 ) {
363
 
364
  /**
365
  * Upgrade user engagements
366
- *
367
- * @link https://bbpress.trac.wordpress.org/ticket/3068
368
  */
369
- if ( ! bbp_is_large_install() ) {
370
- bbp_admin_upgrade_user_engagements();
371
- } else {
372
- update_option( '_bbp_db_upgrade_skipped', $raw_db_version );
373
 
374
  // Set strategy to pre-2.6 on large network
375
  update_option( '_bbp_engagements_strategy', 'user' );
376
  }
 
 
 
 
 
 
 
377
  }
378
  }
379
 
@@ -490,3 +511,121 @@ function bbp_make_current_user_keymaster() {
490
  // Reload the current user so caps apply immediately
491
  wp_get_current_user();
492
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
338
 
339
  /** 2.6 Branch ********************************************************/
340
 
341
+ // Smaller installs run the upgrades directly
342
+ if ( ! bbp_is_large_install() ) {
343
 
344
  /**
345
  * Upgrade user favorites and subscriptions
 
 
346
  */
347
+ if ( $raw_db_version < 261 ) {
348
  bbp_admin_upgrade_user_favorites();
349
  bbp_admin_upgrade_user_topic_subscriptions();
350
  bbp_admin_upgrade_user_forum_subscriptions();
351
+ }
352
+
353
+ /**
354
+ * Upgrade user engagements
355
+ */
356
+ if ( $raw_db_version < 262 ) {
357
+ bbp_admin_upgrade_user_engagements();
358
+ }
359
+
360
+ /**
361
+ * Repair forum hidden reply count
362
+ */
363
+ if ( $raw_db_version < 263 ) {
364
+ bbp_admin_repair_forum_hidden_reply_count();
365
+ }
366
+
367
+ // Large installs require manual intervention
368
+ } else {
369
+
370
+ /**
371
+ * Upgrade user favorites and subscriptions
372
+ */
373
+ if ( $raw_db_version < 261 ) {
374
+ bbp_add_pending_upgrade( 'bbp-user-favorites-move' );
375
+ bbp_add_pending_upgrade( 'bbp-user-topic-subscriptions-move' );
376
+ bbp_add_pending_upgrade( 'bbp-user-forum-subscriptions-move' );
377
 
378
  // Set strategy to pre-2.6 on large network
379
  update_option( '_bbp_engagements_strategy', 'user' );
380
  }
 
 
 
 
381
 
382
  /**
383
  * Upgrade user engagements
 
 
384
  */
385
+ if ( $raw_db_version < 262 ) {
386
+ bbp_add_pending_upgrade( 'bbp-user-topic-engagements-move' );
 
 
387
 
388
  // Set strategy to pre-2.6 on large network
389
  update_option( '_bbp_engagements_strategy', 'user' );
390
  }
391
+
392
+ /**
393
+ * Upgrade user engagements
394
+ */
395
+ if ( $raw_db_version < 263 ) {
396
+ bbp_add_pending_upgrade( 'bbp-forum-hidden-replies' );
397
+ }
398
  }
399
  }
400
 
511
  // Reload the current user so caps apply immediately
512
  wp_get_current_user();
513
  }
514
+
515
+ /** Pending Upgrades **********************************************************/
516
+
517
+ /**
518
+ * Return the number of pending upgrades
519
+ *
520
+ * @since 2.6.0 bbPress (r6895)
521
+ *
522
+ * @param string $type Type of pending upgrades (upgrade|repair|empty)
523
+ *
524
+ * @return int
525
+ */
526
+ function bbp_get_pending_upgrade_count( $type = '' ) {
527
+ return count( (array) bbp_get_pending_upgrades( $type ) );
528
+ }
529
+
530
+ /**
531
+ * Return an array of pending upgrades
532
+ *
533
+ * @since 2.6.0 bbPress (r6895)
534
+ *
535
+ * @param string $type Type of pending upgrades (upgrade|repair|empty)
536
+ *
537
+ * @return array
538
+ */
539
+ function bbp_get_pending_upgrades( $type = '' ) {
540
+
541
+ // Get the pending upgrades
542
+ $retval = (array) get_option( '_bbp_db_pending_upgrades', array() );
543
+
544
+ // Looking for a specific type?
545
+ if ( ! empty( $type ) ) {
546
+ $tools = bbp_get_admin_repair_tools( $type );
547
+ $plucked = array_keys( wp_list_pluck( $tools, 'type' ) );
548
+ $retval = array_intersect( $retval, $plucked );
549
+ }
550
+
551
+ return (array) $retval;
552
+ }
553
+
554
+ /**
555
+ * Add an upgrade ID to pending upgrades array
556
+ *
557
+ * @since 2.6.0 bbPress (r6895)
558
+ *
559
+ * @param string $upgrade_id
560
+ */
561
+ function bbp_add_pending_upgrade( $upgrade_id = '' ) {
562
+
563
+ // Get the pending upgrades option
564
+ $pending = bbp_get_pending_upgrades();
565
+
566
+ // Maybe add upgrade ID to end of pending array
567
+ if ( false === array_search( $upgrade_id, $pending, true ) ) {
568
+ array_push( $pending, $upgrade_id );
569
+ }
570
+
571
+ // Update and return
572
+ return update_option( '_bbp_db_pending_upgrades', $pending );
573
+ }
574
+
575
+ /**
576
+ * Add an upgrade ID to pending upgrades array
577
+ *
578
+ * @since 2.6.0 bbPress (r6895)
579
+ *
580
+ * @param string $upgrade_id
581
+ */
582
+ function bbp_remove_pending_upgrade( $upgrade_id = '' ) {
583
+
584
+ // Get the pending upgrades option
585
+ $pending = bbp_get_pending_upgrades();
586
+
587
+ // Look for this upgrade ID
588
+ $index = array_search( $upgrade_id, $pending, true );
589
+
590
+ // Maybe remove upgrade ID from pending array
591
+ if ( false !== $index ) {
592
+ unset( $pending[ $index ] );
593
+ }
594
+
595
+ // Update and return
596
+ return update_option( '_bbp_db_pending_upgrades', $pending );
597
+ }
598
+
599
+ /**
600
+ * Delete all pending upgrades
601
+ *
602
+ * @since 2.6.0 bbPress (r6895)
603
+ */
604
+ function bbp_clear_pending_upgrades() {
605
+ return delete_option( '_bbp_db_pending_upgrades' );
606
+ }
607
+
608
+ /**
609
+ * Maybe append an upgrade count to a string
610
+ *
611
+ * @since 2.6.0 bbPress (r6896)
612
+ *
613
+ * @param string $string Text to append count to
614
+ * @param string $type Type of pending upgrades (upgrade|repair|empty)
615
+ *
616
+ * @return string
617
+ */
618
+ function bbp_maybe_append_pending_upgrade_count( $string = '', $type = '' ) {
619
+
620
+ // Look for an upgrade count
621
+ $count = bbp_get_pending_upgrade_count( $type );
622
+
623
+ // Append the count to the string
624
+ if ( ! empty( $count ) ) {
625
+ $suffix = ' <span class="awaiting-mod count-' . absint( $count ) . '"><span class="pending-count">' . bbp_number_format( $count ) . '</span></span>';
626
+ $string = "{$string}{$suffix}";
627
+ }
628
+
629
+ // Return the string, maybe with a count
630
+ return $string;
631
+ }
includes/forums/functions.php CHANGED
@@ -1134,13 +1134,14 @@ function bbp_increase_forum_topic_count( $forum_id = 0 ) {
1134
  $topic_id = $forum_id;
1135
  $forum_id = bbp_get_topic_forum_id( $topic_id );
1136
 
1137
- // Bail if not public.
1138
  if ( ! bbp_is_topic_public( $topic_id ) ) {
1139
  bbp_increase_forum_topic_count_hidden( $forum_id );
1140
  return;
1141
  }
1142
  }
1143
 
 
1144
  bbp_bump_forum_topic_count( $forum_id );
1145
  }
1146
 
@@ -1162,23 +1163,32 @@ function bbp_decrease_forum_topic_count( $forum_id = 0 ) {
1162
 
1163
  // If it's a topic, get the forum id.
1164
  if ( bbp_is_topic( $forum_id ) ) {
1165
- $forum_id = bbp_get_topic_forum_id( $forum_id );
 
 
 
 
 
 
 
1166
  }
1167
 
 
1168
  bbp_bump_forum_topic_count( $forum_id, -1 );
1169
  }
1170
 
1171
  /**
1172
- * Bump the total hidden topic count of a forum
1173
  *
1174
  * @since 2.1.0 bbPress (r3825)
1175
  *
1176
  * @param int $forum_id Optional. Forum id.
1177
  * @param int $difference Optional. Default 1
 
1178
  *
1179
- * @return int Forum hidden topic count
1180
  */
1181
- function bbp_bump_forum_topic_count_hidden( $forum_id = 0, $difference = 1 ) {
1182
 
1183
  // Bail if no bump
1184
  if ( empty( $difference ) ) {
@@ -1186,16 +1196,44 @@ function bbp_bump_forum_topic_count_hidden( $forum_id = 0, $difference = 1 ) {
1186
  }
1187
 
1188
  // Get some counts
1189
- $forum_id = bbp_get_forum_id( $forum_id );
1190
- $topic_count = bbp_get_forum_topic_count_hidden( $forum_id, true );
1191
- $difference = (int) $difference;
1192
- $new_count = (int) ( $topic_count + $difference );
1193
 
1194
  // Update this forum id
1195
- update_post_meta( $forum_id, '_bbp_topic_count_hidden', $new_count );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1196
 
1197
  // Filter & return
1198
- return (int) apply_filters( 'bbp_bump_forum_topic_count_hidden', $new_count, $forum_id, $difference );
1199
  }
1200
 
1201
  /**
@@ -1216,9 +1254,17 @@ function bbp_increase_forum_topic_count_hidden( $forum_id = 0 ) {
1216
 
1217
  // If it's a topic, get the forum id.
1218
  if ( bbp_is_topic( $forum_id ) ) {
1219
- $forum_id = bbp_get_topic_forum_id( $forum_id );
 
 
 
 
 
 
 
1220
  }
1221
 
 
1222
  bbp_bump_forum_topic_count_hidden( $forum_id );
1223
  }
1224
 
@@ -1240,9 +1286,17 @@ function bbp_decrease_forum_topic_count_hidden( $forum_id = 0 ) {
1240
 
1241
  // If it's a topic, get the forum id.
1242
  if ( bbp_is_topic( $forum_id ) ) {
1243
- $forum_id = bbp_get_topic_forum_id( $forum_id );
 
 
 
 
 
 
 
1244
  }
1245
 
 
1246
  bbp_bump_forum_topic_count_hidden( $forum_id, -1 );
1247
  }
1248
 
@@ -1266,12 +1320,12 @@ function bbp_bump_forum_reply_count( $forum_id = 0, $difference = 1, $update_anc
1266
 
1267
  // Get some counts
1268
  $forum_id = bbp_get_forum_id( $forum_id );
1269
- $topic_count = bbp_get_forum_reply_count( $forum_id, false, true );
1270
  $total_reply_count = bbp_get_forum_reply_count( $forum_id, true, true );
1271
  $difference = (int) $difference;
1272
 
1273
  // Update this forum id
1274
- update_post_meta( $forum_id, '_bbp_reply_count', (int) ( $topic_count + $difference ) );
1275
  update_post_meta( $forum_id, '_bbp_total_reply_count', (int) ( $total_reply_count + $difference ) );
1276
 
1277
  // Check for ancestors
@@ -1305,6 +1359,65 @@ function bbp_bump_forum_reply_count( $forum_id = 0, $difference = 1, $update_anc
1305
  return (int) apply_filters( 'bbp_bump_forum_reply_count', $forum_reply_count, $forum_id, $difference, $update_ancestors );
1306
  }
1307
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1308
  /**
1309
  * Increase the total reply count of a forum by one.
1310
  *
@@ -1323,9 +1436,17 @@ function bbp_increase_forum_reply_count( $forum_id = 0 ) {
1323
 
1324
  // If it's a reply, get the forum id.
1325
  if ( bbp_is_reply( $forum_id ) ) {
1326
- $forum_id = bbp_get_reply_forum_id( $forum_id );
 
 
 
 
 
 
 
1327
  }
1328
 
 
1329
  bbp_bump_forum_reply_count( $forum_id );
1330
  }
1331
 
@@ -1347,12 +1468,84 @@ function bbp_decrease_forum_reply_count( $forum_id = 0 ) {
1347
 
1348
  // If it's a reply, get the forum id.
1349
  if ( bbp_is_reply( $forum_id ) ) {
1350
- $forum_id = bbp_get_reply_forum_id( $forum_id );
 
 
 
 
 
 
 
1351
  }
1352
 
 
1353
  bbp_bump_forum_reply_count( $forum_id, -1 );
1354
  }
1355
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1356
  /**
1357
  * Update forum reply counts when a topic is approved or unapproved.
1358
  *
@@ -1377,7 +1570,7 @@ function bbp_approved_unapproved_topic_update_forum_reply_count( $topic_id = 0 )
1377
  $count = -$count;
1378
  }
1379
 
1380
- // Update counts.
1381
  bbp_bump_forum_reply_count( bbp_get_topic_forum_id( $topic_id ), $count );
1382
  }
1383
 
@@ -1436,9 +1629,7 @@ function bbp_update_forum_last_topic_id( $forum_id = 0, $topic_id = 0 ) {
1436
  }
1437
 
1438
  // Update the last public topic ID
1439
- if ( bbp_is_topic_published( $topic_id ) ) {
1440
- update_post_meta( $forum_id, '_bbp_last_topic_id', $topic_id );
1441
- }
1442
 
1443
  // Filter & return
1444
  return (int) apply_filters( 'bbp_update_forum_last_topic_id', $topic_id, $forum_id );
@@ -1478,7 +1669,9 @@ function bbp_update_forum_last_reply_id( $forum_id = 0, $reply_id = 0 ) {
1478
  $reply_id = bbp_forum_query_last_reply_id( $forum_id, $topic_ids );
1479
 
1480
  // ...and compare it to the most recent topic id...
1481
- $reply_id = ( $reply_id > max( $topic_ids ) ) ? $reply_id : max( $topic_ids );
 
 
1482
  }
1483
  }
1484
 
@@ -1492,9 +1685,7 @@ function bbp_update_forum_last_reply_id( $forum_id = 0, $reply_id = 0 ) {
1492
  }
1493
 
1494
  // Update the last public reply ID
1495
- if ( bbp_is_reply_published( $reply_id ) ) {
1496
- update_post_meta( $forum_id, '_bbp_last_reply_id', $reply_id );
1497
- }
1498
 
1499
  // Filter & return
1500
  return (int) apply_filters( 'bbp_update_forum_last_reply_id', $reply_id, $forum_id );
@@ -1519,7 +1710,7 @@ function bbp_update_forum_last_active_id( $forum_id = 0, $active_id = 0 ) {
1519
  // Do some calculation if not manually set
1520
  if ( empty( $active_id ) ) {
1521
 
1522
- // Loop through children and add together forum reply counts
1523
  $children = bbp_forum_query_subforum_ids( $forum_id );
1524
  if ( ! empty( $children ) ) {
1525
  foreach ( $children as $child ) {
@@ -1527,11 +1718,15 @@ function bbp_update_forum_last_active_id( $forum_id = 0, $active_id = 0 ) {
1527
  }
1528
  }
1529
 
1530
- // Don't count replies if the forum is a category
1531
  $topic_ids = bbp_forum_query_topic_ids( $forum_id );
1532
  if ( ! empty( $topic_ids ) ) {
 
 
1533
  $active_id = bbp_forum_query_last_reply_id( $forum_id, $topic_ids );
1534
- $active_id = $active_id > max( $topic_ids ) ? $active_id : max( $topic_ids );
 
 
1535
 
1536
  // Forum has no topics
1537
  } else {
@@ -1543,15 +1738,12 @@ function bbp_update_forum_last_active_id( $forum_id = 0, $active_id = 0 ) {
1543
  $active_id = (int) $active_id;
1544
  $children_last_active = (int) $children_last_active;
1545
 
1546
- // If child forums have higher id, use that instead
1547
  if ( ! empty( $children ) && ( $children_last_active > $active_id ) ) {
1548
  $active_id = $children_last_active;
1549
  }
1550
 
1551
- // Update only if published
1552
- if ( bbp_get_public_status_id() === get_post_status( $active_id ) ) {
1553
- update_post_meta( $forum_id, '_bbp_last_active_id', $active_id );
1554
- }
1555
 
1556
  // Filter & return
1557
  return (int) apply_filters( 'bbp_update_forum_last_active_id', $active_id, $forum_id );
@@ -1590,17 +1782,16 @@ function bbp_update_forum_last_active_time( $forum_id = 0, $new_time = '' ) {
1590
  * @since 2.0.0 bbPress (r2625)
1591
  *
1592
  * @param int $forum_id Optional. Forum id
 
1593
  * @return bool True on success, false on failure
1594
  */
1595
- function bbp_update_forum_subforum_count( $forum_id = 0, $subforums = 0 ) {
1596
  $forum_id = bbp_get_forum_id( $forum_id );
1597
 
1598
  // Maybe query for counts
1599
- if ( empty( $subforums ) ) {
1600
- $subforums = bbp_get_public_child_count( $forum_id, bbp_get_forum_post_type() );
1601
- }
1602
-
1603
- $subforums = (int) $subforums;
1604
 
1605
  update_post_meta( $forum_id, '_bbp_forum_subforum_count', $subforums );
1606
 
@@ -1657,7 +1848,7 @@ function bbp_update_forum_topic_count( $forum_id = 0 ) {
1657
  *
1658
  * @return int Topic hidden topic count
1659
  */
1660
- function bbp_update_forum_topic_count_hidden( $forum_id = 0, $topic_count = 0 ) {
1661
 
1662
  // If topic_id was passed as $forum_id, then get its forum
1663
  if ( bbp_is_topic( $forum_id ) ) {
@@ -1673,7 +1864,7 @@ function bbp_update_forum_topic_count_hidden( $forum_id = 0, $topic_count = 0 )
1673
  if ( ! empty( $forum_id ) ) {
1674
 
1675
  // Get topics of forum
1676
- if ( empty( $topic_count ) ) {
1677
  $query = new WP_Query( array(
1678
  'fields' => 'ids',
1679
  'post_parent' => $forum_id,
@@ -1729,16 +1920,14 @@ function bbp_update_forum_reply_count( $forum_id = 0 ) {
1729
  }
1730
 
1731
  // Don't count replies if the forum is a category
1732
- $reply_count = 0;
1733
- $topic_ids = bbp_forum_query_topic_ids( $forum_id );
1734
- if ( ! empty( $topic_ids ) ) {
1735
- $reply_count = bbp_get_public_child_count( $forum_id, bbp_get_reply_post_type() );
1736
- }
1737
 
1738
  // Calculate total replies in this forum
1739
  $total_replies = (int) ( $reply_count + $children_reply_count );
1740
 
1741
- // Update the count
1742
  update_post_meta( $forum_id, '_bbp_reply_count', $reply_count );
1743
  update_post_meta( $forum_id, '_bbp_total_reply_count', $total_replies );
1744
 
@@ -1746,6 +1935,46 @@ function bbp_update_forum_reply_count( $forum_id = 0 ) {
1746
  return (int) apply_filters( 'bbp_update_forum_reply_count', $total_replies, $forum_id );
1747
  }
1748
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1749
  /**
1750
  * Updates the counts of a forum.
1751
  *
@@ -1797,11 +2026,12 @@ function bbp_update_forum( $args = array() ) {
1797
  // Counts
1798
  bbp_update_forum_subforum_count( $r['forum_id'] );
1799
 
1800
- // Only update topic count if we're deleting a topic, or in the dashboard.
1801
- if ( in_array( current_filter(), array( 'bbp_delete_topic', 'save_post' ), true ) ) {
1802
  bbp_update_forum_reply_count( $r['forum_id'] );
1803
  bbp_update_forum_topic_count( $r['forum_id'] );
1804
  bbp_update_forum_topic_count_hidden( $r['forum_id'] );
 
1805
  }
1806
 
1807
  // Update the parent forum if one was passed
@@ -1821,6 +2051,9 @@ function bbp_update_forum( $args = array() ) {
1821
  /**
1822
  * Return an associative array of available topic statuses
1823
  *
 
 
 
1824
  * @since 2.4.0 bbPress (r5059)
1825
  *
1826
  * @param int $forum_id Optional. Forum id.
@@ -1857,6 +2090,9 @@ function bbp_get_forum_types( $forum_id = 0 ) {
1857
  /**
1858
  * Return an associative array of forum visibility
1859
  *
 
 
 
1860
  * @since 2.4.0 bbPress (r5059)
1861
  *
1862
  * @param int $forum_id Optional. Forum id.
@@ -1873,6 +2109,39 @@ function bbp_get_forum_visibilities( $forum_id = 0) {
1873
  ), $forum_id );
1874
  }
1875
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1876
  /** Queries *******************************************************************/
1877
 
1878
  /**
@@ -2142,7 +2411,9 @@ function bbp_forum_query_last_reply_id( $forum_id = 0, $topic_ids = 0 ) {
2142
  'ignore_sticky_posts' => true,
2143
  'no_found_rows' => true
2144
  ) );
 
2145
  $reply_id = array_shift( $query->posts );
 
2146
  unset( $query );
2147
 
2148
  // Filter & return
1134
  $topic_id = $forum_id;
1135
  $forum_id = bbp_get_topic_forum_id( $topic_id );
1136
 
1137
+ // Update inverse based on item status
1138
  if ( ! bbp_is_topic_public( $topic_id ) ) {
1139
  bbp_increase_forum_topic_count_hidden( $forum_id );
1140
  return;
1141
  }
1142
  }
1143
 
1144
+ // Bump up
1145
  bbp_bump_forum_topic_count( $forum_id );
1146
  }
1147
 
1163
 
1164
  // If it's a topic, get the forum id.
1165
  if ( bbp_is_topic( $forum_id ) ) {
1166
+ $topic_id = $forum_id;
1167
+ $forum_id = bbp_get_topic_forum_id( $topic_id );
1168
+
1169
+ // Update inverse based on item status
1170
+ if ( ! bbp_is_topic_public( $topic_id ) ) {
1171
+ bbp_decrease_forum_topic_count_hidden( $forum_id );
1172
+ return;
1173
+ }
1174
  }
1175
 
1176
+ // Bump down
1177
  bbp_bump_forum_topic_count( $forum_id, -1 );
1178
  }
1179
 
1180
  /**
1181
+ * Bump the total topic count of a forum
1182
  *
1183
  * @since 2.1.0 bbPress (r3825)
1184
  *
1185
  * @param int $forum_id Optional. Forum id.
1186
  * @param int $difference Optional. Default 1
1187
+ * @param bool $update_ancestors Optional. Default true
1188
  *
1189
+ * @return int Forum topic count
1190
  */
1191
+ function bbp_bump_forum_topic_count_hidden( $forum_id = 0, $difference = 1, $update_ancestors = true ) {
1192
 
1193
  // Bail if no bump
1194
  if ( empty( $difference ) ) {
1196
  }
1197
 
1198
  // Get some counts
1199
+ $forum_id = bbp_get_forum_id( $forum_id );
1200
+ $reply_count = bbp_get_forum_topic_count_hidden( $forum_id, false, true );
1201
+ $total_topic_count = bbp_get_forum_topic_count_hidden( $forum_id, true, true );
1202
+ $difference = (int) $difference;
1203
 
1204
  // Update this forum id
1205
+ update_post_meta( $forum_id, '_bbp_topic_count_hidden', (int) ( $reply_count + $difference ) );
1206
+ update_post_meta( $forum_id, '_bbp_total_topic_count_hidden', (int) ( $total_topic_count + $difference ) );
1207
+
1208
+ // Check for ancestors
1209
+ if ( true === $update_ancestors ) {
1210
+
1211
+ // Get post ancestors
1212
+ $forum = get_post( $forum_id );
1213
+ $ancestors = get_post_ancestors( $forum );
1214
+
1215
+ // If has ancestors, loop through them...
1216
+ if ( ! empty( $ancestors ) ) {
1217
+ foreach ( (array) $ancestors as $parent_forum_id ) {
1218
+
1219
+ // Only update topic count when an ancestor is not a category.
1220
+ if ( ! bbp_is_forum_category( $parent_forum_id ) ) {
1221
+
1222
+ $parent_topic_count = bbp_get_forum_topic_count_hidden( $parent_forum_id, false, true );
1223
+ update_post_meta( $parent_forum_id, '_bbp_topic_count_hidden', (int) ( $parent_topic_count + $difference ) );
1224
+ }
1225
+
1226
+ // Update the total topic count.
1227
+ $parent_total_topic_count = bbp_get_forum_topic_count_hidden( $parent_forum_id, true, true );
1228
+ update_post_meta( $parent_forum_id, '_bbp_total_topic_count_hidden', (int) ( $parent_total_topic_count + $difference ) );
1229
+ }
1230
+ }
1231
+ }
1232
+
1233
+ $forum_topic_count = (int) ( $total_topic_count + $difference );
1234
 
1235
  // Filter & return
1236
+ return (int) apply_filters( 'bbp_bump_forum_topic_count_hidden', $forum_topic_count, $forum_id, $difference, $update_ancestors );
1237
  }
1238
 
1239
  /**
1254
 
1255
  // If it's a topic, get the forum id.
1256
  if ( bbp_is_topic( $forum_id ) ) {
1257
+ $topic_id = $forum_id;
1258
+ $forum_id = bbp_get_topic_forum_id( $topic_id );
1259
+
1260
+ // Update inverse based on item status
1261
+ if ( bbp_is_topic_public( $topic_id ) ) {
1262
+ bbp_increase_forum_topic_count( $forum_id );
1263
+ return;
1264
+ }
1265
  }
1266
 
1267
+ // Bump up
1268
  bbp_bump_forum_topic_count_hidden( $forum_id );
1269
  }
1270
 
1286
 
1287
  // If it's a topic, get the forum id.
1288
  if ( bbp_is_topic( $forum_id ) ) {
1289
+ $topic_id = $forum_id;
1290
+ $forum_id = bbp_get_topic_forum_id( $topic_id );
1291
+
1292
+ // Update inverse based on item status
1293
+ if ( bbp_is_topic_public( $topic_id ) ) {
1294
+ bbp_decrease_forum_topic_count( $forum_id );
1295
+ return;
1296
+ }
1297
  }
1298
 
1299
+ // Bump down
1300
  bbp_bump_forum_topic_count_hidden( $forum_id, -1 );
1301
  }
1302
 
1320
 
1321
  // Get some counts
1322
  $forum_id = bbp_get_forum_id( $forum_id );
1323
+ $reply_count = bbp_get_forum_reply_count( $forum_id, false, true );
1324
  $total_reply_count = bbp_get_forum_reply_count( $forum_id, true, true );
1325
  $difference = (int) $difference;
1326
 
1327
  // Update this forum id
1328
+ update_post_meta( $forum_id, '_bbp_reply_count', (int) ( $reply_count + $difference ) );
1329
  update_post_meta( $forum_id, '_bbp_total_reply_count', (int) ( $total_reply_count + $difference ) );
1330
 
1331
  // Check for ancestors
1359
  return (int) apply_filters( 'bbp_bump_forum_reply_count', $forum_reply_count, $forum_id, $difference, $update_ancestors );
1360
  }
1361
 
1362
+ /**
1363
+ * Bump the total topic count of a forum
1364
+ *
1365
+ * @since 2.6.0 bbPress (r6922)
1366
+ *
1367
+ * @param int $forum_id Optional. Forum id.
1368
+ * @param int $difference Optional. Default 1
1369
+ * @param bool $update_ancestors Optional. Default true
1370
+ *
1371
+ * @return int Forum topic count
1372
+ */
1373
+ function bbp_bump_forum_reply_count_hidden( $forum_id = 0, $difference = 1, $update_ancestors = true ) {
1374
+
1375
+ // Bail if no bump
1376
+ if ( empty( $difference ) ) {
1377
+ return false;
1378
+ }
1379
+
1380
+ // Get some counts
1381
+ $forum_id = bbp_get_forum_id( $forum_id );
1382
+ $reply_count = bbp_get_forum_reply_count_hidden( $forum_id, false, true );
1383
+ $total_reply_count = bbp_get_forum_reply_count_hidden( $forum_id, true, true );
1384
+ $difference = (int) $difference;
1385
+
1386
+ // Update this forum id
1387
+ update_post_meta( $forum_id, '_bbp_reply_count_hidden', (int) ( $reply_count + $difference ) );
1388
+ update_post_meta( $forum_id, '_bbp_total_reply_count_hidden', (int) ( $total_reply_count + $difference ) );
1389
+
1390
+ // Check for ancestors
1391
+ if ( true === $update_ancestors ) {
1392
+
1393
+ // Get post ancestors
1394
+ $forum = get_post( $forum_id );
1395
+ $ancestors = get_post_ancestors( $forum );
1396
+
1397
+ // If has ancestors, loop through them...
1398
+ if ( ! empty( $ancestors ) ) {
1399
+ foreach ( (array) $ancestors as $parent_forum_id ) {
1400
+
1401
+ // Only update reply count when an ancestor is not a category.
1402
+ if ( ! bbp_is_forum_category( $parent_forum_id ) ) {
1403
+
1404
+ $parent_reply_count = bbp_get_forum_reply_count_hidden( $parent_forum_id, false, true );
1405
+ update_post_meta( $parent_forum_id, '_bbp_reply_count_hidden', (int) ( $parent_reply_count + $difference ) );
1406
+ }
1407
+
1408
+ // Update the total reply count.
1409
+ $parent_total_reply_count = bbp_get_forum_reply_count_hidden( $parent_forum_id, true, true );
1410
+ update_post_meta( $parent_forum_id, '_bbp_total_reply_count_hidden', (int) ( $parent_total_reply_count + $difference ) );
1411
+ }
1412
+ }
1413
+ }
1414
+
1415
+ $forum_reply_count = (int) ( $total_reply_count + $difference );
1416
+
1417
+ // Filter & return
1418
+ return (int) apply_filters( 'bbp_bump_forum_reply_count_hidden', $forum_reply_count, $forum_id, $difference, $update_ancestors );
1419
+ }
1420
+
1421
  /**
1422
  * Increase the total reply count of a forum by one.
1423
  *
1436
 
1437
  // If it's a reply, get the forum id.
1438
  if ( bbp_is_reply( $forum_id ) ) {
1439
+ $reply_id = $forum_id;
1440
+ $forum_id = bbp_get_reply_forum_id( $reply_id );
1441
+
1442
+ // Update inverse based on item status
1443
+ if ( ! bbp_is_reply_public( $reply_id ) ) {
1444
+ bbp_increase_forum_reply_count_hidden( $forum_id );
1445
+ return;
1446
+ }
1447
  }
1448
 
1449
+ // Bump up
1450
  bbp_bump_forum_reply_count( $forum_id );
1451
  }
1452
 
1468
 
1469
  // If it's a reply, get the forum id.
1470
  if ( bbp_is_reply( $forum_id ) ) {
1471
+ $reply_id = $forum_id;
1472
+ $forum_id = bbp_get_reply_forum_id( $reply_id );
1473
+
1474
+ // Update inverse based on item status
1475
+ if ( ! bbp_is_reply_public( $reply_id ) ) {
1476
+ bbp_decrease_forum_reply_count_hidden( $forum_id );
1477
+ return;
1478
+ }
1479
  }
1480
 
1481
+ // Bump down
1482
  bbp_bump_forum_reply_count( $forum_id, -1 );
1483
  }
1484
 
1485
+ /**
1486
+ * Increase the total hidden reply count of a forum by one.
1487
+ *
1488
+ * @since 2.6.0 bbPress (r6036)
1489
+ *
1490
+ * @param int $forum_id The forum id.
1491
+ *
1492
+ * @return void
1493
+ */
1494
+ function bbp_increase_forum_reply_count_hidden( $forum_id = 0 ) {
1495
+
1496
+ // Bail early if no id is passed.
1497
+ if ( empty( $forum_id ) ) {
1498
+ return;
1499
+ }
1500
+
1501
+ // If it's a reply, get the forum id.
1502
+ if ( bbp_is_reply( $forum_id ) ) {
1503
+ $reply_id = $forum_id;
1504
+ $forum_id = bbp_get_reply_forum_id( $reply_id );
1505
+
1506
+ // Update inverse based on item status
1507
+ if ( bbp_is_reply_public( $reply_id ) ) {
1508
+ bbp_increase_forum_reply_count( $forum_id );
1509
+ return;
1510
+ }
1511
+ }
1512
+
1513
+ // Bump up
1514
+ bbp_bump_forum_reply_count_hidden( $forum_id );
1515
+ }
1516
+
1517
+ /**
1518
+ * Decrease the total hidden reply count of a forum by one.
1519
+ *
1520
+ * @since 2.6.0 bbPress (r6036)
1521
+ *
1522
+ * @param int $forum_id The forum id.
1523
+ *
1524
+ * @return void
1525
+ */
1526
+ function bbp_decrease_forum_reply_count_hidden( $forum_id = 0 ) {
1527
+
1528
+ // Bail early if no id is passed.
1529
+ if ( empty( $forum_id ) ) {
1530
+ return;
1531
+ }
1532
+
1533
+ // If it's a reply, get the forum id.
1534
+ if ( bbp_is_reply( $forum_id ) ) {
1535
+ $reply_id = $forum_id;
1536
+ $forum_id = bbp_get_reply_forum_id( $reply_id );
1537
+
1538
+ // Update inverse based on item status
1539
+ if ( bbp_is_reply_public( $reply_id ) ) {
1540
+ bbp_decrease_forum_reply_count( $forum_id );
1541
+ return;
1542
+ }
1543
+ }
1544
+
1545
+ // Bump down
1546
+ bbp_bump_forum_reply_count_hidden( $forum_id, -1 );
1547
+ }
1548
+
1549
  /**
1550
  * Update forum reply counts when a topic is approved or unapproved.
1551
  *
1570
  $count = -$count;
1571
  }
1572
 
1573
+ // Bump up or down
1574
  bbp_bump_forum_reply_count( bbp_get_topic_forum_id( $topic_id ), $count );
1575
  }
1576
 
1629
  }
1630
 
1631
  // Update the last public topic ID
1632
+ update_post_meta( $forum_id, '_bbp_last_topic_id', $topic_id );
 
 
1633
 
1634
  // Filter & return
1635
  return (int) apply_filters( 'bbp_update_forum_last_topic_id', $topic_id, $forum_id );
1669
  $reply_id = bbp_forum_query_last_reply_id( $forum_id, $topic_ids );
1670
 
1671
  // ...and compare it to the most recent topic id...
1672
+ $reply_id = ( $reply_id > max( $topic_ids ) )
1673
+ ? $reply_id
1674
+ : max( $topic_ids );
1675
  }
1676
  }
1677
 
1685
  }
1686
 
1687
  // Update the last public reply ID
1688
+ update_post_meta( $forum_id, '_bbp_last_reply_id', $reply_id );
 
 
1689
 
1690
  // Filter & return
1691
  return (int) apply_filters( 'bbp_update_forum_last_reply_id', $reply_id, $forum_id );
1710
  // Do some calculation if not manually set
1711
  if ( empty( $active_id ) ) {
1712
 
1713
+ // Loop through children and get the last active ID
1714
  $children = bbp_forum_query_subforum_ids( $forum_id );
1715
  if ( ! empty( $children ) ) {
1716
  foreach ( $children as $child ) {
1718
  }
1719
  }
1720
 
1721
+ // Get topic IDs and only accept larger IDs
1722
  $topic_ids = bbp_forum_query_topic_ids( $forum_id );
1723
  if ( ! empty( $topic_ids ) ) {
1724
+
1725
+ // Make sure ID is larger
1726
  $active_id = bbp_forum_query_last_reply_id( $forum_id, $topic_ids );
1727
+ $active_id = $active_id > max( $topic_ids )
1728
+ ? $active_id
1729
+ : max( $topic_ids );
1730
 
1731
  // Forum has no topics
1732
  } else {
1738
  $active_id = (int) $active_id;
1739
  $children_last_active = (int) $children_last_active;
1740
 
1741
+ // If child forums have higher ID, use that instead
1742
  if ( ! empty( $children ) && ( $children_last_active > $active_id ) ) {
1743
  $active_id = $children_last_active;
1744
  }
1745
 
1746
+ update_post_meta( $forum_id, '_bbp_last_active_id', $active_id );
 
 
 
1747
 
1748
  // Filter & return
1749
  return (int) apply_filters( 'bbp_update_forum_last_active_id', $active_id, $forum_id );
1782
  * @since 2.0.0 bbPress (r2625)
1783
  *
1784
  * @param int $forum_id Optional. Forum id
1785
+ * @param int $subforums Optional. Number of subforums
1786
  * @return bool True on success, false on failure
1787
  */
1788
+ function bbp_update_forum_subforum_count( $forum_id = 0, $subforums = false ) {
1789
  $forum_id = bbp_get_forum_id( $forum_id );
1790
 
1791
  // Maybe query for counts
1792
+ $subforums = ! is_int( $subforums )
1793
+ ? bbp_get_public_child_count( $forum_id, bbp_get_forum_post_type() )
1794
+ : (int) $subforums;
 
 
1795
 
1796
  update_post_meta( $forum_id, '_bbp_forum_subforum_count', $subforums );
1797
 
1848
  *
1849
  * @return int Topic hidden topic count
1850
  */
1851
+ function bbp_update_forum_topic_count_hidden( $forum_id = 0, $topic_count = false ) {
1852
 
1853
  // If topic_id was passed as $forum_id, then get its forum
1854
  if ( bbp_is_topic( $forum_id ) ) {
1864
  if ( ! empty( $forum_id ) ) {
1865
 
1866
  // Get topics of forum
1867
+ if ( ! is_int( $topic_count ) ) {
1868
  $query = new WP_Query( array(
1869
  'fields' => 'ids',
1870
  'post_parent' => $forum_id,
1920
  }
1921
 
1922
  // Don't count replies if the forum is a category
1923
+ $reply_count = ! bbp_is_forum_category( $forum_id )
1924
+ ? bbp_get_public_child_count( $forum_id, bbp_get_reply_post_type() )
1925
+ : 0;
 
 
1926
 
1927
  // Calculate total replies in this forum
1928
  $total_replies = (int) ( $reply_count + $children_reply_count );
1929
 
1930
+ // Update the counts
1931
  update_post_meta( $forum_id, '_bbp_reply_count', $reply_count );
1932
  update_post_meta( $forum_id, '_bbp_total_reply_count', $total_replies );
1933
 
1935
  return (int) apply_filters( 'bbp_update_forum_reply_count', $total_replies, $forum_id );
1936
  }
1937
 
1938
+ /**
1939
+ * Adjust the total hidden reply count of a forum
1940
+ *
1941
+ * @since 2.6.0 bbPress (r6922)
1942
+ *
1943
+ * @param int $forum_id Optional. Forum id or topic id. It is checked whether it
1944
+ * is a topic or a forum. If it's a topic, its parent,
1945
+ * i.e. the forum is automatically retrieved.
1946
+ *
1947
+ * @return int Forum reply count
1948
+ */
1949
+ function bbp_update_forum_reply_count_hidden( $forum_id = 0 ) {
1950
+
1951
+ $forum_id = bbp_get_forum_id( $forum_id );
1952
+ $children_reply_count = 0;
1953
+
1954
+ // Loop through children and add together forum reply counts
1955
+ $children = bbp_forum_query_subforum_ids( $forum_id );
1956
+ if ( ! empty( $children ) ) {
1957
+ foreach ( (array) $children as $child ) {
1958
+ $children_reply_count += bbp_update_forum_reply_count_hidden( $child );
1959
+ }
1960
+ }
1961
+
1962
+ // Don't count replies if the forum is a category
1963
+ $reply_count = ! bbp_is_forum_category( $forum_id )
1964
+ ? bbp_get_non_public_child_count( $forum_id, bbp_get_reply_post_type() )
1965
+ : 0;
1966
+
1967
+ // Calculate total replies in this forum
1968
+ $total_replies = (int) ( $reply_count + $children_reply_count );
1969
+
1970
+ // Update the counts
1971
+ update_post_meta( $forum_id, '_bbp_reply_count_hidden', $reply_count );
1972
+ update_post_meta( $forum_id, '_bbp_total_reply_count_hidden', $total_replies );
1973
+
1974
+ // Filter & return
1975
+ return (int) apply_filters( 'bbp_update_forum_reply_count_hidden', $total_replies, $forum_id );
1976
+ }
1977
+
1978
  /**
1979
  * Updates the counts of a forum.
1980
  *
2026
  // Counts
2027
  bbp_update_forum_subforum_count( $r['forum_id'] );
2028
 
2029
+ // Only update topic count if we've deleted a topic
2030
+ if ( in_array( current_filter(), array( 'bbp_deleted_topic', 'save_post' ), true ) ) {
2031
  bbp_update_forum_reply_count( $r['forum_id'] );
2032
  bbp_update_forum_topic_count( $r['forum_id'] );
2033
  bbp_update_forum_topic_count_hidden( $r['forum_id'] );
2034
+ bbp_update_forum_reply_count_hidden( $r['forum_id'] );
2035
  }
2036
 
2037
  // Update the parent forum if one was passed
2051
  /**
2052
  * Return an associative array of available topic statuses
2053
  *
2054
+ * Developers note: these statuses are actually stored as meta data, and
2055
+ * Visibilities are stored in post_status.
2056
+ *
2057
  * @since 2.4.0 bbPress (r5059)
2058
  *
2059
  * @param int $forum_id Optional. Forum id.
2090
  /**
2091
  * Return an associative array of forum visibility
2092
  *
2093
+ * Developers note: these visibilities are actually stored in post_status, and
2094
+ * Statuses are stored in meta data.
2095
+ *
2096
  * @since 2.4.0 bbPress (r5059)
2097
  *
2098
  * @param int $forum_id Optional. Forum id.
2109
  ), $forum_id );
2110
  }
2111
 
2112
+ /**
2113
+ * Return array of public forum statuses.
2114
+ *
2115
+ * @since 2.6.0 bbPress (r6921)
2116
+ *
2117
+ * @return array
2118
+ */
2119
+ function bbp_get_public_forum_statuses() {
2120
+ $statuses = array(
2121
+ bbp_get_public_status_id()
2122
+ );
2123
+
2124
+ // Filter & return
2125
+ return (array) apply_filters( 'bbp_get_public_forum_statuses', $statuses );
2126
+ }
2127
+
2128
+ /**
2129
+ * Return array of non-public forum statuses.
2130
+ *
2131
+ * @since 2.6.0 bbPress (r6921)
2132
+ *
2133
+ * @return array
2134
+ */
2135
+ function bbp_get_non_public_forum_statuses() {
2136
+ $statuses = array(
2137
+ bbp_get_private_status_id(),
2138
+ bbp_get_hidden_status_id()
2139
+ );
2140
+
2141
+ // Filter & return
2142
+ return (array) apply_filters( 'bbp_get_non_public_forum_statuses', $statuses );
2143
+ }
2144
+
2145
  /** Queries *******************************************************************/
2146
 
2147
  /**
2411
  'ignore_sticky_posts' => true,
2412
  'no_found_rows' => true
2413
  ) );
2414
+
2415
  $reply_id = array_shift( $query->posts );
2416
+
2417
  unset( $query );
2418
 
2419
  // Filter & return
includes/forums/template.php CHANGED
@@ -45,37 +45,38 @@ function bbp_get_forum_post_type_labels() {
45
 
46
  // Filter & return
47
  return (array) apply_filters( 'bbp_get_forum_post_type_labels', array(
48
- 'name' => esc_attr__( 'Forums', 'bbpress' ),
49
- 'menu_name' => esc_attr__( 'Forums', 'bbpress' ),
50
- 'singular_name' => esc_attr__( 'Forum', 'bbpress' ),
51
- 'all_items' => esc_attr__( 'All Forums', 'bbpress' ),
52
- 'add_new' => esc_attr__( 'Add New', 'bbpress' ),
53
- 'add_new_item' => esc_attr__( 'Create New Forum', 'bbpress' ),
54
- 'edit' => esc_attr__( 'Edit', 'bbpress' ),
55
- 'edit_item' => esc_attr__( 'Edit Forum', 'bbpress' ),
56
- 'new_item' => esc_attr__( 'New Forum', 'bbpress' ),
57
- 'view' => esc_attr__( 'View Forum', 'bbpress' ),
58
- 'view_item' => esc_attr__( 'View Forum', 'bbpress' ),
59
- 'view_items' => esc_attr__( 'View Forums', 'bbpress' ),
60
- 'search_items' => esc_attr__( 'Search Forums', 'bbpress' ),
61
- 'not_found' => esc_attr__( 'No forums found', 'bbpress' ),
62
- 'not_found_in_trash' => esc_attr__( 'No forums found in Trash', 'bbpress' ),
63
- 'filter_items_list' => esc_attr__( 'Filter forums list', 'bbpress' ),
64
- 'items_list' => esc_attr__( 'Forums list', 'bbpress' ),
65
- 'items_list_navigation' => esc_attr__( 'Forums list navigation', 'bbpress' ),
66
- 'parent_item_colon' => esc_attr__( 'Parent Forum:', 'bbpress' ),
67
- 'all_items' => esc_attr__( 'All Forums', 'bbpress' ),
68
- 'archives' => esc_attr__( 'Forums', 'bbpress' ),
69
- 'attributes' => esc_attr__( 'Forum Attributes', 'bbpress' ),
70
- 'insert_into_item' => esc_attr__( 'Insert into forum', 'bbpress' ),
71
- 'uploaded_to_this_item' => esc_attr__( 'Uploaded to this forum', 'bbpress' ),
72
- 'featured_image' => esc_attr__( 'Forum Image', 'bbpress' ),
73
- 'set_featured_image' => esc_attr__( 'Set forum image', 'bbpress' ),
74
- 'remove_featured_image' => esc_attr__( 'Remove forum image', 'bbpress' ),
75
- 'use_featured_image' => esc_attr__( 'Use as forum image', 'bbpress' ),
76
- 'filter_items_list' => esc_attr__( 'Filter forum list', 'bbpress' ),
77
- 'items_list_navigation' => esc_attr__( 'Forum list navigation', 'bbpress' ),
78
- 'items_list' => esc_attr__( 'Forum list', 'bbpress' )
 
79
  ) );
80
  }
81
 
@@ -140,6 +141,8 @@ function bbp_has_forums( $args = array() ) {
140
  $default_post_parent = bbp_get_forum_id();
141
  }
142
 
 
 
143
  // Default argument array
144
  $default = array(
145
  'post_type' => bbp_get_forum_post_type(),
@@ -155,6 +158,12 @@ function bbp_has_forums( $args = array() ) {
155
  'update_post_family_cache' => true
156
  );
157
 
 
 
 
 
 
 
158
  // Parse arguments with default forum query for most circumstances
159
  $r = bbp_parse_args( $args, $default, 'has_forums' );
160
 
@@ -474,10 +483,10 @@ function bbp_forum_last_active_id( $forum_id = 0 ) {
474
  */
475
  function bbp_get_forum_last_active_id( $forum_id = 0 ) {
476
  $forum_id = bbp_get_forum_id( $forum_id );
477
- $active_id = get_post_meta( $forum_id, '_bbp_last_active_id', true );
478
 
479
  // Filter & return
480
- return (int) apply_filters( 'bbp_get_forum_last_active_id', (int) $active_id, $forum_id );
481
  }
482
 
483
  /**
@@ -596,20 +605,20 @@ function bbp_forum_parent_id( $forum_id = 0 ) {
596
  */
597
  function bbp_get_forum_parent_id( $forum_id = 0 ) {
598
  $forum_id = bbp_get_forum_id( $forum_id );
599
- $parent_id = get_post_field( 'post_parent', $forum_id );
600
 
601
  // Meta-data fallback
602
  if ( empty( $parent_id ) ) {
603
- $parent_id = get_post_meta( $forum_id, '_bbp_forum_id', true );
604
  }
605
 
606
  // Filter
607
  if ( ! empty( $parent_id ) ) {
608
- $parent_id = bbp_get_forum_id( $parent_id );
609
  }
610
 
611
  // Filter & return
612
- return (int) apply_filters( 'bbp_get_forum_parent_id', (int) $parent_id, $forum_id );
613
  }
614
 
615
  /**
@@ -858,10 +867,10 @@ function bbp_forum_last_topic_id( $forum_id = 0 ) {
858
  */
859
  function bbp_get_forum_last_topic_id( $forum_id = 0 ) {
860
  $forum_id = bbp_get_forum_id( $forum_id );
861
- $topic_id = get_post_meta( $forum_id, '_bbp_last_topic_id', true );
862
 
863
  // Filter & return
864
- return (int) apply_filters( 'bbp_get_forum_last_topic_id', (int) $topic_id, $forum_id );
865
  }
866
 
867
  /**
@@ -984,10 +993,10 @@ function bbp_forum_last_reply_id( $forum_id = 0 ) {
984
  */
985
  function bbp_get_forum_last_reply_id( $forum_id = 0 ) {
986
  $forum_id = bbp_get_forum_id( $forum_id );
987
- $reply_id = get_post_meta( $forum_id, '_bbp_last_reply_id', true );
988
 
989
  // Filter & return
990
- return (int) apply_filters( 'bbp_get_forum_last_reply_id', (int) $reply_id, $forum_id );
991
  }
992
 
993
  /**
@@ -1166,13 +1175,13 @@ function bbp_forum_topics_link( $forum_id = 0 ) {
1166
  : esc_html( $topics );
1167
 
1168
  // Get deleted topics
1169
- $deleted_int = bbp_get_forum_topic_count_hidden( $forum_id, true );
1170
 
1171
  // This forum has hidden topics
1172
  if ( ! empty( $deleted_int ) && current_user_can( 'edit_others_topics' ) ) {
1173
 
1174
  // Hidden text
1175
- $deleted_num = bbp_get_forum_topic_count_hidden( $forum_id, false );
1176
  $extra = ' ' . sprintf( _n( '(+%s hidden)', '(+%s hidden)', $deleted_int, 'bbpress' ), $deleted_num );
1177
 
1178
  // Hidden link
@@ -1207,7 +1216,7 @@ function bbp_forum_subforum_count( $forum_id = 0, $integer = false ) {
1207
  */
1208
  function bbp_get_forum_subforum_count( $forum_id = 0, $integer = false ) {
1209
  $forum_id = bbp_get_forum_id( $forum_id );
1210
- $forum_count = get_post_meta( $forum_id, '_bbp_forum_subforum_count', true );
1211
  $filter = ( true === $integer )
1212
  ? 'bbp_get_forum_subforum_count_int'
1213
  : 'bbp_get_forum_subforum_count';
@@ -1241,7 +1250,7 @@ function bbp_forum_topic_count( $forum_id = 0, $total_count = true, $integer = f
1241
  function bbp_get_forum_topic_count( $forum_id = 0, $total_count = true, $integer = false ) {
1242
  $forum_id = bbp_get_forum_id( $forum_id );
1243
  $meta_key = empty( $total_count ) ? '_bbp_topic_count' : '_bbp_total_topic_count';
1244
- $topics = get_post_meta( $forum_id, $meta_key, true );
1245
  $filter = ( true === $integer )
1246
  ? 'bbp_get_forum_topic_count_int'
1247
  : 'bbp_get_forum_topic_count';
@@ -1275,7 +1284,7 @@ function bbp_forum_reply_count( $forum_id = 0, $total_count = true, $integer = f
1275
  function bbp_get_forum_reply_count( $forum_id = 0, $total_count = true, $integer = false ) {
1276
  $forum_id = bbp_get_forum_id( $forum_id );
1277
  $meta_key = empty( $total_count ) ? '_bbp_reply_count' : '_bbp_total_reply_count';
1278
- $replies = get_post_meta( $forum_id, $meta_key, true );
1279
  $filter = ( true === $integer )
1280
  ? 'bbp_get_forum_reply_count_int'
1281
  : 'bbp_get_forum_reply_count';
@@ -1310,7 +1319,7 @@ function bbp_forum_post_count( $forum_id = 0, $total_count = true, $integer = fa
1310
  $forum_id = bbp_get_forum_id( $forum_id );
1311
  $topics = bbp_get_forum_topic_count( $forum_id, $total_count, true );
1312
  $replies = bbp_get_forum_reply_count( $forum_id, $total_count, true );
1313
- $retval = $replies + $topics;
1314
  $filter = ( true === $integer )
1315
  ? 'bbp_get_forum_post_count_int'
1316
  : 'bbp_get_forum_post_count';
@@ -1323,26 +1332,31 @@ function bbp_forum_post_count( $forum_id = 0, $total_count = true, $integer = fa
1323
  * and pending topics)
1324
  *
1325
  * @since 2.0.0 bbPress (r2883)
 
1326
  *
1327
- * @param int $forum_id Optional. Topic id
 
1328
  * @param boolean $integer Optional. Whether or not to format the result
1329
  */
1330
- function bbp_forum_topic_count_hidden( $forum_id = 0, $integer = false ) {
1331
- echo bbp_get_forum_topic_count_hidden( $forum_id, $integer );
1332
  }
1333
  /**
1334
  * Return total hidden topic count of a forum (hidden includes trashed,
1335
  * spammed and pending topics)
1336
  *
1337
  * @since 2.0.0 bbPress (r2883)
 
1338
  *
1339
- * @param int $forum_id Optional. Topic id
 
1340
  * @param boolean $integer Optional. Whether or not to format the result
1341
  * @return int Topic hidden topic count
1342
  */
1343
- function bbp_get_forum_topic_count_hidden( $forum_id = 0, $integer = false ) {
1344
  $forum_id = bbp_get_forum_id( $forum_id );
1345
- $topics = get_post_meta( $forum_id, '_bbp_topic_count_hidden', true );
 
1346
  $filter = ( true === $integer )
1347
  ? 'bbp_get_forum_topic_count_hidden_int'
1348
  : 'bbp_get_forum_topic_count_hidden';
@@ -1350,6 +1364,42 @@ function bbp_forum_topic_count_hidden( $forum_id = 0, $integer = false ) {
1350
  return apply_filters( $filter, $topics, $forum_id );
1351
  }
1352
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1353
  /**
1354
  * Output the status of the forum
1355
  *
45
 
46
  // Filter & return
47
  return (array) apply_filters( 'bbp_get_forum_post_type_labels', array(
48
+ 'name' => esc_attr__( 'Forums', 'bbpress' ),
49
+ 'menu_name' => esc_attr__( 'Forums', 'bbpress' ),
50
+ 'singular_name' => esc_attr__( 'Forum', 'bbpress' ),
51
+ 'all_items' => esc_attr__( 'All Forums', 'bbpress' ),
52
+ 'add_new' => esc_attr__( 'Add New', 'bbpress' ),
53
+ 'add_new_item' => esc_attr__( 'Create New Forum', 'bbpress' ),
54
+ 'edit' => esc_attr__( 'Edit', 'bbpress' ),
55
+ 'edit_item' => esc_attr__( 'Edit Forum', 'bbpress' ),
56
+ 'new_item' => esc_attr__( 'New Forum', 'bbpress' ),
57
+ 'view' => esc_attr__( 'View Forum', 'bbpress' ),
58
+ 'view_item' => esc_attr__( 'View Forum', 'bbpress' ),
59
+ 'view_items' => esc_attr__( 'View Forums', 'bbpress' ),
60
+ 'search_items' => esc_attr__( 'Search Forums', 'bbpress' ),
61
+ 'not_found' => esc_attr__( 'No forums found', 'bbpress' ),
62
+ 'not_found_in_trash' => esc_attr__( 'No forums found in Trash', 'bbpress' ),
63
+ 'filter_items_list' => esc_attr__( 'Filter forums list', 'bbpress' ),
64
+ 'items_list' => esc_attr__( 'Forums list', 'bbpress' ),
65
+ 'items_list_navigation' => esc_attr__( 'Forums list navigation', 'bbpress' ),
66
+ 'parent_item_colon' => esc_attr__( 'Parent Forum:', 'bbpress' ),
67
+ 'archives' => esc_attr__( 'Forums', 'bbpress' ),
68
+ 'attributes' => esc_attr__( 'Forum Attributes', 'bbpress' ),
69
+ 'insert_into_item' => esc_attr__( 'Insert into forum', 'bbpress' ),
70
+ 'uploaded_to_this_item' => esc_attr__( 'Uploaded to this forum', 'bbpress' ),
71
+ 'featured_image' => esc_attr__( 'Forum Image', 'bbpress' ),
72
+ 'set_featured_image' => esc_attr__( 'Set forum image', 'bbpress' ),
73
+ 'remove_featured_image' => esc_attr__( 'Remove forum image', 'bbpress' ),
74
+ 'use_featured_image' => esc_attr__( 'Use as forum image', 'bbpress' ),
75
+ 'item_published' => esc_attr__( 'Forum published.', 'bbpress' ),
76
+ 'item_published_privately' => esc_attr__( 'Forum published privately.', 'bbpress' ),
77
+ 'item_reverted_to_draft' => esc_attr__( 'Forum reverted to draft.', 'bbpress' ),
78
+ 'item_scheduled' => esc_attr__( 'Forum scheduled.', 'bbpress' ),
79
+ 'item_updated' => esc_attr__( 'Forum updated.', 'bbpress' )
80
  ) );
81
  }
82
 
141
  $default_post_parent = bbp_get_forum_id();
142
  }
143
 
144
+ $default_forum_search = bbp_sanitize_search_request( 'fs' );
145
+
146
  // Default argument array
147
  $default = array(
148
  'post_type' => bbp_get_forum_post_type(),
158
  'update_post_family_cache' => true
159
  );
160
 
161
+ // Only add 's' arg if searching for forums
162
+ // See https://bbpress.trac.wordpress.org/ticket/2607
163
+ if ( ! empty( $default_forum_search ) ) {
164
+ $default['s'] = $default_forum_search;
165
+ }
166
+
167
  // Parse arguments with default forum query for most circumstances
168
  $r = bbp_parse_args( $args, $default, 'has_forums' );
169
 
483
  */
484
  function bbp_get_forum_last_active_id( $forum_id = 0 ) {
485
  $forum_id = bbp_get_forum_id( $forum_id );
486
+ $active_id = (int) get_post_meta( $forum_id, '_bbp_last_active_id', true );
487
 
488
  // Filter & return
489
+ return (int) apply_filters( 'bbp_get_forum_last_active_id', $active_id, $forum_id );
490
  }
491
 
492
  /**
605
  */
606
  function bbp_get_forum_parent_id( $forum_id = 0 ) {
607
  $forum_id = bbp_get_forum_id( $forum_id );
608
+ $parent_id = (int) get_post_field( 'post_parent', $forum_id );
609
 
610
  // Meta-data fallback
611
  if ( empty( $parent_id ) ) {
612
+ $parent_id = (int) get_post_meta( $forum_id, '_bbp_forum_id', true );
613
  }
614
 
615
  // Filter
616
  if ( ! empty( $parent_id ) ) {
617
+ $parent_id = (int) bbp_get_forum_id( $parent_id );
618
  }
619
 
620
  // Filter & return
621
+ return (int) apply_filters( 'bbp_get_forum_parent_id', $parent_id, $forum_id );
622
  }
623
 
624
  /**
867
  */
868
  function bbp_get_forum_last_topic_id( $forum_id = 0 ) {
869
  $forum_id = bbp_get_forum_id( $forum_id );
870
+ $topic_id = (int) get_post_meta( $forum_id, '_bbp_last_topic_id', true );
871
 
872
  // Filter & return
873
+ return (int) apply_filters( 'bbp_get_forum_last_topic_id', $topic_id, $forum_id );
874
  }
875
 
876
  /**
993
  */
994
  function bbp_get_forum_last_reply_id( $forum_id = 0 ) {
995
  $forum_id = bbp_get_forum_id( $forum_id );
996
+ $reply_id = (int) get_post_meta( $forum_id, '_bbp_last_reply_id', true );
997
 
998
  // Filter & return
999
+ return (int) apply_filters( 'bbp_get_forum_last_reply_id', $reply_id, $forum_id );
1000
  }
1001
 
1002
  /**
1175
  : esc_html( $topics );
1176
 
1177
  // Get deleted topics
1178
+ $deleted_int = bbp_get_forum_topic_count_hidden( $forum_id, false, true );
1179
 
1180
  // This forum has hidden topics
1181
  if ( ! empty( $deleted_int ) && current_user_can( 'edit_others_topics' ) ) {
1182
 
1183
  // Hidden text
1184
+ $deleted_num = bbp_get_forum_topic_count_hidden( $forum_id, false, false );
1185
  $extra = ' ' . sprintf( _n( '(+%s hidden)', '(+%s hidden)', $deleted_int, 'bbpress' ), $deleted_num );
1186
 
1187
  // Hidden link
1216
  */
1217
  function bbp_get_forum_subforum_count( $forum_id = 0, $integer = false ) {
1218
  $forum_id = bbp_get_forum_id( $forum_id );
1219
+ $forum_count = (int) get_post_meta( $forum_id, '_bbp_forum_subforum_count', true );
1220
  $filter = ( true === $integer )
1221
  ? 'bbp_get_forum_subforum_count_int'
1222
  : 'bbp_get_forum_subforum_count';
1250
  function bbp_get_forum_topic_count( $forum_id = 0, $total_count = true, $integer = false ) {
1251
  $forum_id = bbp_get_forum_id( $forum_id );
1252
  $meta_key = empty( $total_count ) ? '_bbp_topic_count' : '_bbp_total_topic_count';
1253
+ $topics = (int) get_post_meta( $forum_id, $meta_key, true );
1254
  $filter = ( true === $integer )
1255
  ? 'bbp_get_forum_topic_count_int'
1256
  : 'bbp_get_forum_topic_count';
1284
  function bbp_get_forum_reply_count( $forum_id = 0, $total_count = true, $integer = false ) {
1285
  $forum_id = bbp_get_forum_id( $forum_id );
1286
  $meta_key = empty( $total_count ) ? '_bbp_reply_count' : '_bbp_total_reply_count';
1287
+ $replies = (int) get_post_meta( $forum_id, $meta_key, true );
1288
  $filter = ( true === $integer )
1289
  ? 'bbp_get_forum_reply_count_int'
1290
  : 'bbp_get_forum_reply_count';
1319
  $forum_id = bbp_get_forum_id( $forum_id );
1320
  $topics = bbp_get_forum_topic_count( $forum_id, $total_count, true );
1321
  $replies = bbp_get_forum_reply_count( $forum_id, $total_count, true );
1322
+ $retval = ( $replies + $topics );
1323
  $filter = ( true === $integer )
1324
  ? 'bbp_get_forum_post_count_int'
1325
  : 'bbp_get_forum_post_count';
1332
  * and pending topics)
1333
  *
1334
  * @since 2.0.0 bbPress (r2883)
1335
+ * @since 2.6.0 bbPress (r6922) Changed function signature to add total counts
1336
  *
1337
+ * @param int $forum_id Optional. Forum id
1338
+ * @param bool $total_count Optional. To get the total count or normal count?
1339
  * @param boolean $integer Optional. Whether or not to format the result
1340
  */
1341
+ function bbp_forum_topic_count_hidden( $forum_id = 0, $total_count = true, $integer = null ) {
1342
+ echo bbp_get_forum_topic_count_hidden( $forum_id, $total_count, $integer );
1343
  }
1344
  /**
1345
  * Return total hidden topic count of a forum (hidden includes trashed,
1346
  * spammed and pending topics)
1347
  *
1348
  * @since 2.0.0 bbPress (r2883)
1349
+ * @since 2.6.0 bbPress (r6922) Changed function signature to add total counts
1350
  *
1351
+ * @param int $forum_id Optional. Forum id
1352
+ * @param bool $total_count Optional. To get the total count or normal count?
1353
  * @param boolean $integer Optional. Whether or not to format the result
1354
  * @return int Topic hidden topic count
1355
  */
1356
+ function bbp_get_forum_topic_count_hidden( $forum_id = 0, $total_count = true, $integer = null ) {
1357
  $forum_id = bbp_get_forum_id( $forum_id );
1358
+ $meta_key = empty( $total_count ) ? '_bbp_topic_count_hidden' : '_bbp_topic_reply_count_hidden';
1359
+ $topics = (int) get_post_meta( $forum_id, $meta_key, true );
1360
  $filter = ( true === $integer )
1361
  ? 'bbp_get_forum_topic_count_hidden_int'
1362
  : 'bbp_get_forum_topic_count_hidden';
1364
  return apply_filters( $filter, $topics, $forum_id );
1365
  }
1366
 
1367
+ /**
1368
+ * Output total hidden reply count of a forum (hidden includes trashed, spammed,
1369
+ * and pending replies)
1370
+ *
1371
+ * @since 2.6.0 bbPress (r6922)
1372
+ *
1373
+ * @param int $forum_id Optional. Forum id
1374
+ * @param bool $total_count Optional. To get the total count or normal count?
1375
+ * @param boolean $integer Optional. Whether or not to format the result
1376
+ */
1377
+ function bbp_forum_reply_count_hidden( $forum_id = 0, $total_count = true, $integer = false ) {
1378
+ echo bbp_get_forum_reply_count_hidden( $forum_id, $total_count, $integer );
1379
+ }
1380
+ /**
1381
+ * Return total hidden reply count of a forum (hidden includes trashed,
1382
+ * spammed and pending replies)
1383
+ *
1384
+ * @since 2.6.0 bbPress (r6922)
1385
+ *
1386
+ * @param int $forum_id Optional. Forum id
1387
+ * @param bool $total_count Optional. To get the total count or normal
1388
+ * count?
1389
+ * @param boolean $integer Optional. Whether or not to format the result
1390
+ * @return int Forum reply count
1391
+ */
1392
+ function bbp_get_forum_reply_count_hidden( $forum_id = 0, $total_count = true, $integer = false ) {
1393
+ $forum_id = bbp_get_forum_id( $forum_id );
1394
+ $meta_key = empty( $total_count ) ? '_bbp_reply_count_hidden' : '_bbp_total_reply_count_hidden';
1395
+ $replies = (int) get_post_meta( $forum_id, $meta_key, true );
1396
+ $filter = ( true === $integer )
1397
+ ? 'bbp_get_forum_reply_count_hidden_int'
1398
+ : 'bbp_get_forum_reply_count_hidden';
1399
+
1400
+ return apply_filters( $filter, $replies, $forum_id );
1401
+ }
1402
+
1403
  /**
1404
  * Output the status of the forum
1405
  *
includes/replies/capabilities.php CHANGED
@@ -153,10 +153,18 @@ function bbp_map_reply_meta_caps( $caps = array(), $cap = '', $user_id = 0, $arg
153
  // Allow author or mod to edit if not in admin, unless past edit lock time
154
  } elseif ( ! is_admin() && ( (int) $user_id === (int) $_post->post_author ) ) {
155
 
156
- // Only allow if not past the edit-lock period
157
- $caps = ! bbp_past_edit_lock( $_post->post_date_gmt )
158
- ? array( $post_type->cap->edit_posts )
159
- : array( 'do_not_allow' );
 
 
 
 
 
 
 
 
160
 
161
  // Fallback to edit_others_posts.
162
  } else {
153
  // Allow author or mod to edit if not in admin, unless past edit lock time
154
  } elseif ( ! is_admin() && ( (int) $user_id === (int) $_post->post_author ) ) {
155
 
156
+ // If editing...
157
+ if ( bbp_is_reply_edit() ) {
158
+
159
+ // Only allow if not past the edit-lock period
160
+ $caps = ! bbp_past_edit_lock( $_post->post_date_gmt )
161
+ ? array( $post_type->cap->edit_posts )
162
+ : array( 'do_not_allow' );
163
+
164
+ // Otherwise...
165
+ } else {
166
+ $caps = array( $post_type->cap->edit_posts );
167
+ }
168
 
169
  // Fallback to edit_others_posts.
170
  } else {
includes/replies/functions.php CHANGED
@@ -26,7 +26,6 @@ function bbp_insert_reply( $reply_data = array(), $reply_meta = array() ) {
26
  // Parse arguments against default values
27
  $reply_data = bbp_parse_args( $reply_data, array(
28
  'post_parent' => 0, // topic ID
29
- 'post_status' => bbp_get_public_status_id(),
30
  'post_type' => bbp_get_reply_post_type(),
31
  'post_author' => bbp_get_current_user_id(),
32
  'post_password' => '',
@@ -36,6 +35,11 @@ function bbp_insert_reply( $reply_data = array(), $reply_meta = array() ) {
36
  'comment_status' => 'closed'
37
  ), 'insert_reply' );
38
 
 
 
 
 
 
39
  // Insert reply
40
  $reply_id = wp_insert_post( $reply_data, false );
41
 
@@ -95,14 +99,15 @@ function bbp_insert_reply( $reply_data = array(), $reply_meta = array() ) {
95
  */
96
  function bbp_insert_reply_update_counts( $reply_id = 0, $topic_id = 0, $forum_id = 0 ) {
97
 
98
- // If the reply is public, update the forum/topic reply counts.
99
  if ( bbp_is_reply_published( $reply_id ) ) {
100
  bbp_increase_topic_reply_count( $topic_id );
101
  bbp_increase_forum_reply_count( $forum_id );
102
 
103
- // If the reply isn't public only update the topic reply hidden count.
104
  } else {
105
  bbp_increase_topic_reply_count_hidden( $topic_id );
 
106
  }
107
  }
108
 
@@ -314,7 +319,7 @@ function bbp_new_reply_handler( $action = '' ) {
314
  /** Reply Status **********************************************************/
315
 
316
  // Maybe put into moderation
317
- if ( ! bbp_check_for_moderation( $anonymous_data, $reply_author, $reply_title, $reply_content ) ) {
318
  $reply_status = bbp_get_pending_status_id();
319
 
320
  // Default
@@ -825,15 +830,21 @@ function bbp_update_reply( $reply_id = 0, $topic_id = 0, $forum_id = 0, $anonymo
825
 
826
  // Handle Subscription Checkbox
827
  if ( bbp_is_subscriptions_active() && ! empty( $author_id ) && ! empty( $topic_id ) ) {
 
 
828
  $subscribed = bbp_is_user_subscribed( $author_id, $topic_id );
829
- $subscheck = ( ! empty( $_POST['bbp_topic_subscription'] ) && ( 'bbp_subscribe' === $_POST['bbp_topic_subscription'] ) ) ? true : false;
 
 
 
 
830
 
831
  // Subscribed and unsubscribing
832
- if ( true === $subscribed && false === $subscheck ) {
833
  bbp_remove_user_subscription( $author_id, $topic_id );
834
 
835
- // Subscribing
836
- } elseif ( false === $subscribed && true === $subscheck ) {
837
  bbp_add_user_subscription( $author_id, $topic_id );
838
  }
839
  }
@@ -913,21 +924,23 @@ function bbp_update_reply_walker( $reply_id, $last_active_time = '', $forum_id =
913
  // Topic meta relating to most recent reply
914
  } elseif ( bbp_is_topic( $ancestor ) ) {
915
 
916
- // Last reply and active ID's
917
- bbp_update_topic_last_reply_id ( $ancestor, $reply_id );
918
- bbp_update_topic_last_active_id( $ancestor, $active_id );
919
 
920
- // Get the last active time if none was passed
921
- $topic_last_active_time = $last_active_time;
922
- if ( empty( $last_active_time ) ) {
923
- $topic_last_active_time = get_post_field( 'post_date', bbp_get_topic_last_active_id( $ancestor ) );
924
- }
 
 
 
 
925
 
926
- // Update the topic last active time regardless of reply status.
927
- // See https://bbpress.trac.wordpress.org/ticket/2838
928
- bbp_update_topic_last_active_time( $ancestor, $topic_last_active_time );
929
 
930
- // Only update reply count if we're deleting a reply, or in the dashboard.
931
  if ( in_array( current_filter(), array( 'bbp_deleted_reply', 'save_post' ), true ) ) {
932
  bbp_update_topic_reply_count( $ancestor );
933
  bbp_update_topic_reply_count_hidden( $ancestor );
@@ -937,26 +950,26 @@ function bbp_update_reply_walker( $reply_id, $last_active_time = '', $forum_id =
937
  // Forum meta relating to most recent topic
938
  } elseif ( bbp_is_forum( $ancestor ) ) {
939
 
940
- // Last topic and reply ID's
941
- bbp_update_forum_last_topic_id( $ancestor, $topic_id );
942
- bbp_update_forum_last_reply_id( $ancestor, $reply_id );
943
 
944
- // Last Active
945
- bbp_update_forum_last_active_id( $ancestor, $active_id );
 
946
 
947
- // Get the last active time if none was passed
948
- $forum_last_active_time = $last_active_time;
949
- if ( empty( $last_active_time ) ) {
950
- $forum_last_active_time = get_post_field( 'post_date', bbp_get_forum_last_active_id( $ancestor ) );
951
- }
 
 
 
952
 
953
- // Only update if reply is published
954
- if ( bbp_is_reply_published( $reply_id ) ) {
955
  bbp_update_forum_last_active_time( $ancestor, $forum_last_active_time );
956
  }
957
 
958
- // Counts
959
- // Only update reply count if we're deleting a reply, or in the dashboard.
960
  if ( in_array( current_filter(), array( 'bbp_deleted_reply', 'save_post' ), true ) ) {
961
  bbp_update_forum_reply_count( $ancestor );
962
  }
@@ -1655,6 +1668,40 @@ function bbp_get_reply_toggles( $reply_id = 0 ) {
1655
  ), $reply_id );
1656
  }
1657
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1658
  /** Reply Actions *************************************************************/
1659
 
1660
  /**
26
  // Parse arguments against default values
27
  $reply_data = bbp_parse_args( $reply_data, array(
28
  'post_parent' => 0, // topic ID
 
29
  'post_type' => bbp_get_reply_post_type(),
30
  'post_author' => bbp_get_current_user_id(),
31
  'post_password' => '',
35
  'comment_status' => 'closed'
36
  ), 'insert_reply' );
37
 
38
+ // Possibly override status based on parent topic
39
+ if ( ! empty( $reply_data['post_parent'] ) && empty( $reply_data['post_status'] ) ) {
40
+ $reply_data['post_status'] = bbp_get_topic_status( $reply_data['post_parent'] );
41
+ }
42
+
43
  // Insert reply
44
  $reply_id = wp_insert_post( $reply_data, false );
45
 
99
  */
100
  function bbp_insert_reply_update_counts( $reply_id = 0, $topic_id = 0, $forum_id = 0 ) {
101
 
102
+ // If the reply is public, update the reply counts.
103
  if ( bbp_is_reply_published( $reply_id ) ) {
104
  bbp_increase_topic_reply_count( $topic_id );
105
  bbp_increase_forum_reply_count( $forum_id );
106
 
107
+ // If the reply isn't public only update the reply hidden counts.
108
  } else {
109
  bbp_increase_topic_reply_count_hidden( $topic_id );
110
+ bbp_increase_forum_reply_count_hidden( $forum_id );
111
  }
112
  }
113
 
319
  /** Reply Status **********************************************************/
320
 
321
  // Maybe put into moderation
322
+ if ( bbp_is_topic_pending( $topic_id ) || ! bbp_check_for_moderation( $anonymous_data, $reply_author, $reply_title, $reply_content ) ) {
323
  $reply_status = bbp_get_pending_status_id();
324
 
325
  // Default
830
 
831
  // Handle Subscription Checkbox
832
  if ( bbp_is_subscriptions_active() && ! empty( $author_id ) && ! empty( $topic_id ) ) {
833
+
834
+ // Check if subscribed
835
  $subscribed = bbp_is_user_subscribed( $author_id, $topic_id );
836
+
837
+ // Check for action
838
+ $subscheck = ( ! empty( $_POST['bbp_topic_subscription'] ) && ( 'bbp_subscribe' === $_POST['bbp_topic_subscription'] ) )
839
+ ? true
840
+ : false;
841
 
842
  // Subscribed and unsubscribing
843
+ if ( ( true === $subscribed ) && ( false === $subscheck ) ) {
844
  bbp_remove_user_subscription( $author_id, $topic_id );
845
 
846
+ // Not subscribed and subscribing
847
+ } elseif ( ( false === $subscribed ) && ( true === $subscheck ) ) {
848
  bbp_add_user_subscription( $author_id, $topic_id );
849
  }
850
  }
924
  // Topic meta relating to most recent reply
925
  } elseif ( bbp_is_topic( $ancestor ) ) {
926
 
927
+ // Only update if reply is published
928
+ if ( ! bbp_is_reply_pending( $reply_id ) ) {
 
929
 
930
+ // Last reply and active ID's
931
+ bbp_update_topic_last_reply_id ( $ancestor, $reply_id );
932
+ bbp_update_topic_last_active_id( $ancestor, $active_id );
933
+
934
+ // Get the last active time if none was passed
935
+ $topic_last_active_time = $last_active_time;
936
+ if ( empty( $last_active_time ) ) {
937
+ $topic_last_active_time = get_post_field( 'post_date', bbp_get_topic_last_active_id( $ancestor ) );
938
+ }
939
 
940
+ bbp_update_topic_last_active_time( $ancestor, $topic_last_active_time );
941
+ }
 
942
 
943
+ // Only update reply count if we've deleted a reply
944
  if ( in_array( current_filter(), array( 'bbp_deleted_reply', 'save_post' ), true ) ) {
945
  bbp_update_topic_reply_count( $ancestor );
946
  bbp_update_topic_reply_count_hidden( $ancestor );
950
  // Forum meta relating to most recent topic
951
  } elseif ( bbp_is_forum( $ancestor ) ) {
952
 
953
+ // Only update if reply is published
954
+ if ( bbp_is_reply_pending( $reply_id ) && ! bbp_is_topic_pending( $topic_id ) ) {
 
955
 
956
+ // Last topic and reply ID's
957
+ bbp_update_forum_last_topic_id( $ancestor, $topic_id );
958
+ bbp_update_forum_last_reply_id( $ancestor, $reply_id );
959
 
960
+ // Last Active
961
+ bbp_update_forum_last_active_id( $ancestor, $active_id );
962
+
963
+ // Get the last active time if none was passed
964
+ $forum_last_active_time = $last_active_time;
965
+ if ( empty( $last_active_time ) ) {
966
+ $forum_last_active_time = get_post_field( 'post_date', bbp_get_forum_last_active_id( $ancestor ) );
967
+ }
968
 
 
 
969
  bbp_update_forum_last_active_time( $ancestor, $forum_last_active_time );
970
  }
971
 
972
+ // Only update reply count if we've deleted a reply
 
973
  if ( in_array( current_filter(), array( 'bbp_deleted_reply', 'save_post' ), true ) ) {
974
  bbp_update_forum_reply_count( $ancestor );
975
  }
1668
  ), $reply_id );
1669
  }
1670
 
1671
+ /**
1672
+ * Return array of public reply statuses.
1673
+ *
1674
+ * @since 2.6.0 bbPress (r6705)
1675
+ *
1676
+ * @return array
1677
+ */
1678
+ function bbp_get_public_reply_statuses() {
1679
+ $statuses = array(
1680
+ bbp_get_public_status_id()
1681
+ );
1682
+
1683
+ // Filter & return
1684
+ return (array) apply_filters( 'bbp_get_public_reply_statuses', $statuses );
1685
+ }
1686
+
1687
+ /**
1688
+ * Return array of non-public reply statuses.
1689
+ *
1690
+ * @since 2.6.0 bbPress (r6791)
1691
+ *
1692
+ * @return array
1693
+ */
1694
+ function bbp_get_non_public_reply_statuses() {
1695
+ $statuses = array(
1696
+ bbp_get_trash_status_id(),
1697
+ bbp_get_spam_status_id(),
1698
+ bbp_get_pending_status_id()
1699
+ );
1700
+
1701
+ // Filter & return
1702
+ return (array) apply_filters( 'bbp_get_non_public_reply_statuses', $statuses );
1703
+ }
1704
+
1705
  /** Reply Actions *************************************************************/
1706
 
1707
  /**
includes/replies/template.php CHANGED
@@ -46,37 +46,38 @@ function bbp_get_reply_post_type_labels() {
46
 
47
  // Filter & return
48
  return (array) apply_filters( 'bbp_get_reply_post_type_labels', array(
49
- 'name' => esc_attr__( 'Replies', 'bbpress' ),
50
- 'menu_name' => esc_attr__( 'Replies', 'bbpress' ),
51
- 'singular_name' => esc_attr_x( 'Reply', 'noun', 'bbpress' ),
52
- 'all_items' => esc_attr__( 'All Replies', 'bbpress' ),
53
- 'add_new' => esc_attr__( 'Add New', 'bbpress' ),
54
- 'add_new_item' => esc_attr__( 'Create New Reply', 'bbpress' ),
55
- 'edit' => esc_attr__( 'Edit', 'bbpress' ),
56
- 'edit_item' => esc_attr__( 'Edit Reply', 'bbpress' ),
57
- 'new_item' => esc_attr__( 'New Reply', 'bbpress' ),
58
- 'view' => esc_attr__( 'View Reply', 'bbpress' ),
59
- 'view_item' => esc_attr__( 'View Reply', 'bbpress' ),
60
- 'view_items' => esc_attr__( 'View Replies', 'bbpress' ),
61
- 'search_items' => esc_attr__( 'Search Replies', 'bbpress' ),
62
- 'not_found' => esc_attr__( 'No replies found', 'bbpress' ),
63
- 'not_found_in_trash' => esc_attr__( 'No replies found in Trash', 'bbpress' ),
64
- 'filter_items_list' => esc_attr__( 'Filter replies list', 'bbpress' ),
65
- 'items_list' => esc_attr__( 'Replies list', 'bbpress' ),
66
- 'items_list_navigation' => esc_attr__( 'Replies list navigation', 'bbpress' ),
67
- 'parent_item_colon' => esc_attr__( 'Parent Topic:', 'bbpress' ),
68
- 'all_items' => esc_attr__( 'All Replies', 'bbpress' ),
69
- 'archives' => esc_attr__( 'Forum Replies', 'bbpress' ),
70
- 'attributes' => esc_attr__( 'Reply Attributes', 'bbpress' ),
71
- 'insert_into_item' => esc_attr__( 'Insert into reply', 'bbpress' ),
72
- 'uploaded_to_this_item' => esc_attr__( 'Uploaded to this reply', 'bbpress' ),
73
- 'featured_image' => esc_attr__( 'Reply Image', 'bbpress' ),
74
- 'set_featured_image' => esc_attr__( 'Set reply image', 'bbpress' ),
75
- 'remove_featured_image' => esc_attr__( 'Remove reply image', 'bbpress' ),
76
- 'use_featured_image' => esc_attr__( 'Use as reply image', 'bbpress' ),
77
- 'filter_items_list' => esc_attr__( 'Filter reply list', 'bbpress' ),
78
- 'items_list_navigation' => esc_attr__( 'Reply list navigation', 'bbpress' ),
79
- 'items_list' => esc_attr__( 'Reply list', 'bbpress' )
 
80
  ) );
81
  }
82
 
@@ -128,7 +129,7 @@ function bbp_has_replies( $args = array() ) {
128
  /** Defaults **************************************************************/
129
 
130
  // Other defaults
131
- $default_reply_search = ! empty( $_REQUEST['rs'] ) ? $_REQUEST['rs'] : false;
132
  $default_post_parent = ( bbp_is_single_topic() ) ? bbp_get_topic_id() : 'any';
133
  $default_post_type = ( bbp_is_single_topic() && bbp_show_lead_topic() ) ? bbp_get_reply_post_type() : array( bbp_get_topic_post_type(), bbp_get_reply_post_type() );
134
  $default_thread_replies = (bool) ( bbp_is_single_topic() && bbp_thread_replies() );
@@ -434,8 +435,17 @@ function bbp_reply_url( $reply_id = 0 ) {
434
  function bbp_get_reply_url( $reply_id = 0, $redirect_to = '' ) {
435
 
436
  // Set needed variables
437
- $reply_id = bbp_get_reply_id ( $reply_id );
438
- $topic_id = bbp_get_reply_topic_id( $reply_id );
 
 
 
 
 
 
 
 
 
439
 
440
  // Hierarchical reply page
441
  if ( bbp_thread_replies() ) {
@@ -446,23 +456,37 @@ function bbp_reply_url( $reply_id = 0 ) {
446
  $reply_page = ceil( (int) bbp_get_reply_position( $reply_id, $topic_id ) / (int) bbp_get_replies_per_page() );
447
  }
448
 
 
449
  $reply_hash = '#post-' . $reply_id;
450
  $topic_link = bbp_get_topic_permalink( $topic_id, $redirect_to );
451
  $topic_url = remove_query_arg( 'view', $topic_link );
452
 
 
 
 
 
 
453
  // Don't include pagination if on first page
454
  if ( 1 >= $reply_page ) {
455
- $url = user_trailingslashit( $topic_url ) . $reply_hash;
 
 
 
 
 
 
 
 
456
 
457
  // Include pagination
458
  } else {
459
 
460
  // Pretty permalinks
461
- if ( bbp_use_pretty_urls() ) {
462
  $url = trailingslashit( $topic_url ) . trailingslashit( bbp_get_paged_slug() ) . $reply_page;
463
  $url = user_trailingslashit( $url ) . $reply_hash;
464
 
465
- // Yucky links
466
  } else {
467
  $url = add_query_arg( 'paged', $reply_page, $topic_url ) . $reply_hash;
468
  }
@@ -760,7 +784,9 @@ function bbp_reply_revision_log( $reply_id = 0 ) {
760
  function bbp_get_reply_raw_revision_log( $reply_id = 0 ) {
761
  $reply_id = bbp_get_reply_id( $reply_id );
762
  $revision_log = get_post_meta( $reply_id, '_bbp_revision_log', true );
763
- $revision_log = empty( $revision_log ) ? array() : $revision_log;
 
 
764
 
765
  // Filter & return
766
  return apply_filters( 'bbp_get_reply_raw_revision_log', $revision_log, $reply_id );
@@ -826,40 +852,6 @@ function bbp_reply_status( $reply_id = 0 ) {
826
  return apply_filters( 'bbp_get_reply_status', get_post_status( $reply_id ), $reply_id );
827
  }
828
 
829
- /**
830
- * Return array of public reply statuses.
831
- *
832
- * @since 2.6.0 bbPress (r6705)
833
- *
834
- * @return array
835
- */
836
- function bbp_get_public_reply_statuses() {
837
- $statuses = array(
838
- bbp_get_public_status_id()
839
- );
840
-
841
- // Filter & return
842
- return (array) apply_filters( 'bbp_get_public_reply_statuses', $statuses );
843
- }
844
-
845
- /**
846
- * Return array of non-public reply statuses.
847
- *
848
- * @since 2.6.0 bbPress (r6791)
849
- *
850
- * @return array
851
- */
852
- function bbp_get_non_public_reply_statuses() {
853
- $statuses = array(
854
- bbp_get_trash_status_id(),
855
- bbp_get_spam_status_id(),
856
- bbp_get_pending_status_id()
857
- );
858
-
859
- // Filter & return
860
- return (array) apply_filters( 'bbp_get_non_public_reply_statuses', $statuses );
861
- }
862
-
863
  /**
864
  * Is the reply publicly viewable?
865
  *
@@ -884,17 +876,21 @@ function bbp_is_reply_public( $reply_id = 0 ) {
884
  * Is the reply not spam or deleted?
885
  *
886
  * @since 2.0.0 bbPress (r3496)
 
887
  *
888
  * @param int $reply_id Optional. Topic id
889
  * @return bool True if published, false if not.
890
  */
891
  function bbp_is_reply_published( $reply_id = 0 ) {
892
  $reply_id = bbp_get_reply_id( $reply_id );
 
893
  $status = bbp_get_public_status_id();
894
- $reply_status = bbp_get_reply_status( $reply_id ) === $status;
 
 
895
 
896
  // Filter & return
897
- return (bool) apply_filters( 'bbp_is_reply_published', (bool) $reply_status, $reply_id );
898
  }
899
 
900
  /**
@@ -1428,20 +1424,20 @@ function bbp_reply_topic_id( $reply_id = 0 ) {
1428
  */
1429
  function bbp_get_reply_topic_id( $reply_id = 0 ) {
1430
  $reply_id = bbp_get_reply_id( $reply_id );
1431
- $topic_id = get_post_field( 'post_parent', $reply_id );
1432
 
1433
  // Meta-data fallback
1434
  if ( empty( $topic_id ) ) {
1435
- $topic_id = get_post_meta( $reply_id, '_bbp_topic_id', true );
1436
  }
1437
 
1438
  // Filter
1439
  if ( ! empty( $topic_id ) ) {
1440
- $topic_id = bbp_get_topic_id( $topic_id );
1441
  }
1442
 
1443
  // Filter & return
1444
- return (int) apply_filters( 'bbp_get_reply_topic_id', (int) $topic_id, $reply_id );
1445
  }
1446
 
1447
  /**
@@ -1465,16 +1461,17 @@ function bbp_reply_forum_id( $reply_id = 0 ) {
1465
  */
1466
  function bbp_get_reply_forum_id( $reply_id = 0 ) {
1467
  $reply_id = bbp_get_reply_id( $reply_id );
1468
- $forum_id = get_post_field( 'post_parent', bbp_get_reply_topic_id( $reply_id ) );
 
1469
 
1470
  // Meta-data fallback
1471
  if ( empty( $forum_id ) ) {
1472
- $forum_id = get_post_meta( $reply_id, '_bbp_forum_id', true );
1473
  }
1474
 
1475
  // Filter
1476
  if ( ! empty( $forum_id ) ) {
1477
- $forum_id = bbp_get_forum_id( $forum_id );
1478
  }
1479
 
1480
  // Filter & return
@@ -2304,7 +2301,7 @@ function bbp_reply_class( $reply_id = 0, $classes = array() ) {
2304
  function bbp_get_replies_pagination_base( $topic_id = 0 ) {
2305
 
2306
  // If pretty permalinks are enabled, make our pagination pretty
2307
- if ( bbp_use_pretty_urls() ) {
2308
 
2309
  // User's replies
2310
  if ( bbp_is_single_user_replies() ) {
46
 
47
  // Filter & return
48
  return (array) apply_filters( 'bbp_get_reply_post_type_labels', array(
49
+ 'name' => esc_attr__( 'Replies', 'bbpress' ),
50
+ 'menu_name' => esc_attr__( 'Replies', 'bbpress' ),
51
+ 'singular_name' => esc_attr_x( 'Reply', 'noun', 'bbpress' ),
52
+ 'all_items' => esc_attr__( 'All Replies', 'bbpress' ),
53
+ 'add_new' => esc_attr__( 'Add New', 'bbpress' ),
54
+ 'add_new_item' => esc_attr__( 'Create New Reply', 'bbpress' ),
55
+ 'edit' => esc_attr__( 'Edit', 'bbpress' ),
56
+ 'edit_item' => esc_attr__( 'Edit Reply', 'bbpress' ),
57
+ 'new_item' => esc_attr__( 'New Reply', 'bbpress' ),
58
+ 'view' => esc_attr__( 'View Reply', 'bbpress' ),
59
+ 'view_item' => esc_attr__( 'View Reply', 'bbpress' ),
60
+ 'view_items' => esc_attr__( 'View Replies', 'bbpress' ),
61
+ 'search_items' => esc_attr__( 'Search Replies', 'bbpress' ),
62
+ 'not_found' => esc_attr__( 'No replies found', 'bbpress' ),
63
+ 'not_found_in_trash' => esc_attr__( 'No replies found in Trash', 'bbpress' ),
64
+ 'filter_items_list' => esc_attr__( 'Filter replies list', 'bbpress' ),
65
+ 'items_list' => esc_attr__( 'Replies list', 'bbpress' ),
66
+ 'items_list_navigation' => esc_attr__( 'Replies list navigation', 'bbpress' ),
67
+ 'parent_item_colon' => esc_attr__( 'Parent Topic:', 'bbpress' ),
68
+ 'archives' => esc_attr__( 'Forum Replies', 'bbpress' ),
69
+ 'attributes' => esc_attr__( 'Reply Attributes', 'bbpress' ),
70
+ 'insert_into_item' => esc_attr__( 'Insert into reply', 'bbpress' ),
71
+ 'uploaded_to_this_item' => esc_attr__( 'Uploaded to this reply', 'bbpress' ),
72
+ 'featured_image' => esc_attr__( 'Reply Image', 'bbpress' ),
73
+ 'set_featured_image' => esc_attr__( 'Set reply image', 'bbpress' ),
74
+ 'remove_featured_image' => esc_attr__( 'Remove reply image', 'bbpress' ),
75
+ 'use_featured_image' => esc_attr__( 'Use as reply image', 'bbpress' ),
76
+ 'item_published' => esc_attr__( 'Reply published.', 'bbpress' ),
77
+ 'item_published_privately' => esc_attr__( 'Reply published privately.', 'bbpress' ),
78
+ 'item_reverted_to_draft' => esc_attr__( 'Reply reverted to draft.', 'bbpress' ),
79
+ 'item_scheduled' => esc_attr__( 'Reply scheduled.', 'bbpress' ),
80
+ 'item_updated' => esc_attr__( 'Reply updated.', 'bbpress' )
81
  ) );
82
  }
83
 
129
  /** Defaults **************************************************************/
130
 
131
  // Other defaults
132
+ $default_reply_search = bbp_sanitize_search_request( 'rs' );
133
  $default_post_parent = ( bbp_is_single_topic() ) ? bbp_get_topic_id() : 'any';
134
  $default_post_type = ( bbp_is_single_topic() && bbp_show_lead_topic() ) ? bbp_get_reply_post_type() : array( bbp_get_topic_post_type(), bbp_get_reply_post_type() );
135
  $default_thread_replies = (bool) ( bbp_is_single_topic() && bbp_thread_replies() );
435
  function bbp_get_reply_url( $reply_id = 0, $redirect_to = '' ) {
436
 
437
  // Set needed variables
438
+ $reply_id = bbp_get_reply_id( $reply_id );
439
+
440
+ // Juggle reply & topic IDs for unpretty URL formatting
441
+ if ( bbp_is_reply( $reply_id ) ) {
442
+ $topic_id = bbp_get_reply_topic_id( $reply_id );
443
+ $topic = bbp_get_topic( $topic_id );
444
+ } elseif ( bbp_is_topic( $reply_id ) ) {
445
+ $topic_id = bbp_get_topic_id( $reply_id );
446
+ $topic = bbp_get_topic( $topic_id );
447
+ $reply_id = $topic_id;
448
+ }
449
 
450
  // Hierarchical reply page
451
  if ( bbp_thread_replies() ) {
456
  $reply_page = ceil( (int) bbp_get_reply_position( $reply_id, $topic_id ) / (int) bbp_get_replies_per_page() );
457
  }
458
 
459
+ // Get links & URLS
460
  $reply_hash = '#post-' . $reply_id;
461
  $topic_link = bbp_get_topic_permalink( $topic_id, $redirect_to );
462
  $topic_url = remove_query_arg( 'view', $topic_link );
463
 
464
+ // Get vars needed to support pending topics with unpretty links
465
+ $has_slug = ! empty( $topic ) ? $topic->post_name : '';
466
+ $pretty = bbp_use_pretty_urls();
467
+ $published = ! bbp_is_topic_pending( $topic_id );
468
+
469
  // Don't include pagination if on first page
470
  if ( 1 >= $reply_page ) {
471
+
472
+ // Pretty permalinks
473
+ if ( ! empty( $has_slug ) && ! empty( $pretty ) && ! empty( $published ) ) {
474
+ $url = user_trailingslashit( $topic_url ) . $reply_hash;
475
+
476
+ // Unpretty links
477
+ } else {
478
+ $url = $topic_url . $reply_hash;
479
+ }
480
 
481
  // Include pagination
482
  } else {
483
 
484
  // Pretty permalinks
485
+ if ( ! empty( $has_slug ) && ! empty( $pretty ) && ! empty( $published ) ) {
486
  $url = trailingslashit( $topic_url ) . trailingslashit( bbp_get_paged_slug() ) . $reply_page;
487
  $url = user_trailingslashit( $url ) . $reply_hash;
488
 
489
+ // Unpretty links
490
  } else {
491
  $url = add_query_arg( 'paged', $reply_page, $topic_url ) . $reply_hash;
492
  }
784
  function bbp_get_reply_raw_revision_log( $reply_id = 0 ) {
785
  $reply_id = bbp_get_reply_id( $reply_id );
786
  $revision_log = get_post_meta( $reply_id, '_bbp_revision_log', true );
787
+ $revision_log = ! empty( $revision_log )
788
+ ? $revision_log
789
+ : array();
790
 
791
  // Filter & return
792
  return apply_filters( 'bbp_get_reply_raw_revision_log', $revision_log, $reply_id );
852
  return apply_filters( 'bbp_get_reply_status', get_post_status( $reply_id ), $reply_id );
853
  }
854
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
855
  /**
856
  * Is the reply publicly viewable?
857
  *
876
  * Is the reply not spam or deleted?
877
  *
878
  * @since 2.0.0 bbPress (r3496)
879
+ * @since 2.6.0 bbPress (r6922) Returns false if topic is also not published
880
  *
881
  * @param int $reply_id Optional. Topic id
882
  * @return bool True if published, false if not.
883
  */
884
  function bbp_is_reply_published( $reply_id = 0 ) {
885
  $reply_id = bbp_get_reply_id( $reply_id );
886
+ $topic_id = bbp_get_reply_topic_id( $reply_id );
887
  $status = bbp_get_public_status_id();
888
+ $topic_status = bbp_is_topic_published( $topic_id );
889
+ $reply_status = ( bbp_get_reply_status( $reply_id ) === $status );
890
+ $retval = ( $reply_status && $topic_status );
891
 
892
  // Filter & return
893
+ return (bool) apply_filters( 'bbp_is_reply_published', (bool) $retval, $reply_id );
894
  }
895
 
896
  /**
1424
  */
1425
  function bbp_get_reply_topic_id( $reply_id = 0 ) {
1426
  $reply_id = bbp_get_reply_id( $reply_id );
1427
+ $topic_id = (int) get_post_field( 'post_parent', $reply_id );
1428
 
1429
  // Meta-data fallback
1430
  if ( empty( $topic_id ) ) {
1431
+ $topic_id = (int) get_post_meta( $reply_id, '_bbp_topic_id', true );
1432
  }
1433
 
1434
  // Filter
1435
  if ( ! empty( $topic_id ) ) {
1436
+ $topic_id = (int) bbp_get_topic_id( $topic_id );
1437
  }
1438
 
1439
  // Filter & return
1440
+ return (int) apply_filters( 'bbp_get_reply_topic_id', $topic_id, $reply_id );
1441
  }
1442
 
1443
  /**
1461
  */
1462
  function bbp_get_reply_forum_id( $reply_id = 0 ) {
1463
  $reply_id = bbp_get_reply_id( $reply_id );
1464
+ $topic_id = bbp_get_reply_topic_id( $reply_id );
1465
+ $forum_id = (int) get_post_field( 'post_parent', $topic_id );
1466
 
1467
  // Meta-data fallback
1468
  if ( empty( $forum_id ) ) {
1469
+ $forum_id = (int) get_post_meta( $reply_id, '_bbp_forum_id', true );
1470
  }
1471
 
1472
  // Filter
1473
  if ( ! empty( $forum_id ) ) {
1474
+ $forum_id = (int) bbp_get_forum_id( $forum_id );
1475
  }
1476
 
1477
  // Filter & return
2301
  function bbp_get_replies_pagination_base( $topic_id = 0 ) {
2302
 
2303
  // If pretty permalinks are enabled, make our pagination pretty
2304
+ if ( bbp_use_pretty_urls() && ! bbp_is_topic_pending( $topic_id )) {
2305
 
2306
  // User's replies
2307
  if ( bbp_is_single_user_replies() ) {
includes/search/functions.php CHANGED
@@ -81,3 +81,57 @@ function bbp_search_results_redirect() {
81
  // Redirect and bail
82
  bbp_redirect( $redirect_to );
83
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  // Redirect and bail
82
  bbp_redirect( $redirect_to );
83
  }
84
+
85
+ /**
86
+ * Return an array of search types
87
+ *
88
+ * @since 2.6.0 bbPress (r6903)
89
+ *
90
+ * @return array
91
+ */
92
+ function bbp_get_search_type_ids() {
93
+ return apply_filters( 'bbp_get_search_types', array( 's', 'fs', 'ts', 'rs' ) );
94
+ }
95
+
96
+ /**
97
+ * Sanitize a query argument used to pass some search terms.
98
+ *
99
+ * Accepts a single parameter to be used for forums, topics, or replies.
100
+ *
101
+ * @since 2.6.0 bbPress (r6903)
102
+ *
103
+ * @param string $query_arg s|fs|ts|rs
104
+ *
105
+ * @return mixed
106
+ */
107
+ function bbp_sanitize_search_request( $query_arg = 's' ) {
108
+
109
+ // Define allowed keys
110
+ $allowed = bbp_get_search_type_ids();
111
+
112
+ // Bail if not an allowed query string key
113
+ if ( ! in_array( $query_arg, $allowed, true ) ) {
114
+ return false;
115
+ }
116
+
117
+ // Get search terms if requested
118
+ $terms = ! empty( $_REQUEST[ $query_arg ] )
119
+ ? $_REQUEST[ $query_arg ]
120
+ : false;
121
+
122
+ // Bail if query argument does not exist
123
+ if ( empty( $terms ) ) {
124
+ return false;
125
+ }
126
+
127
+ // Maybe implode if an array
128
+ if ( is_array( $terms ) ) {
129
+ $terms = implode( ' ', $terms );
130
+ }
131
+
132
+ // Sanitize
133
+ $retval = sanitize_title( trim( $terms ) );
134
+
135
+ // Filter & return
136
+ return apply_filters( 'bbp_sanitize_search_request', $retval, $query_arg );
137
+ }
includes/search/template.php CHANGED
@@ -300,13 +300,30 @@ function bbp_search_terms( $search_terms = '' ) {
300
  if ( get_query_var( bbp_get_search_rewrite_id() ) ) {
301
  $search_terms = get_query_var( bbp_get_search_rewrite_id() );
302
 
303
- // Topic search
304
- } elseif ( ! empty( $_REQUEST['ts'] ) ) {
305
- $search_terms = sanitize_title( $_REQUEST['ts'] );
306
 
307
- // Reply search
308
- } elseif ( ! empty( $_REQUEST['rs'] ) ) {
309
- $search_terms = sanitize_title( $_REQUEST['rs'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  }
311
  }
312
 
300
  if ( get_query_var( bbp_get_search_rewrite_id() ) ) {
301
  $search_terms = get_query_var( bbp_get_search_rewrite_id() );
302
 
303
+ // Other searches
304
+ } else {
 
305
 
306
+ // Get known search type IDs
307
+ $types = bbp_get_search_type_ids();
308
+
309
+ // Filterable, so make sure types exist
310
+ if ( ! empty( $types ) ) {
311
+
312
+ // Loop through types
313
+ foreach ( $types as $type ) {
314
+
315
+ // Look for search terms
316
+ $terms = bbp_sanitize_search_request( $type );
317
+
318
+ // Skip if no terms
319
+ if ( empty( $terms ) ) {
320
+ continue;
321
+ }
322
+
323
+ // Set terms if not empty
324
+ $search_terms = $terms;
325
+ }
326
+ }
327
  }
328
  }
329
 
includes/topics/capabilities.php CHANGED
@@ -173,10 +173,18 @@ function bbp_map_topic_meta_caps( $caps = array(), $cap = '', $user_id = 0, $arg
173
  // User is author so allow edit if not in admin, unless it's past edit lock time
174
  } elseif ( ! is_admin() && ( (int) $user_id === (int) $_post->post_author ) ) {
175
 
176
- // Only allow if not past the edit-lock period
177
- $caps = ! bbp_past_edit_lock( $_post->post_date_gmt )
178
- ? array( $post_type->cap->edit_posts )
179
- : array( 'do_not_allow' );
 
 
 
 
 
 
 
 
180
 
181
  // Unknown, so map to edit_others_posts
182
  } else {
173
  // User is author so allow edit if not in admin, unless it's past edit lock time
174
  } elseif ( ! is_admin() && ( (int) $user_id === (int) $_post->post_author ) ) {
175
 
176
+ // If editing...
177
+ if ( bbp_is_topic_edit() ) {
178
+
179
+ // Only allow if not past the edit-lock period
180
+ $caps = ! bbp_past_edit_lock( $_post->post_date_gmt )
181
+ ? array( $post_type->cap->edit_posts )
182
+ : array( 'do_not_allow' );
183
+
184
+ // Otherwise...
185
+ } else {
186
+ $caps = array( $post_type->cap->edit_posts );
187
+ }
188
 
189
  // Unknown, so map to edit_others_posts
190
  } else {
includes/topics/functions.php CHANGED
@@ -797,17 +797,21 @@ function bbp_update_topic( $topic_id = 0, $forum_id = 0, $anonymous_data = array
797
 
798
  // Handle Subscription Checkbox
799
  if ( bbp_is_subscriptions_active() && ! empty( $author_id ) ) {
 
 
800
  $subscribed = bbp_is_user_subscribed( $author_id, $topic_id );
 
 
801
  $subscheck = ( ! empty( $_POST['bbp_topic_subscription'] ) && ( 'bbp_subscribe' === $_POST['bbp_topic_subscription'] ) )
802
  ? true
803
  : false;
804
 
805
  // Subscribed and unsubscribing
806
- if ( true === $subscribed && false === $subscheck ) {
807
  bbp_remove_user_subscription( $author_id, $topic_id );
808
 
809
- // Subscribing
810
- } elseif ( false === $subscribed && true === $subscheck ) {
811
  bbp_add_user_subscription( $author_id, $topic_id );
812
  }
813
  }
@@ -839,7 +843,7 @@ function bbp_update_topic( $topic_id = 0, $forum_id = 0, $anonymous_data = array
839
 
840
  /**
841
  * Walks up the post_parent tree from the current topic_id, and updates the
842
- * counts of forums above it. This calls a few internal functions that all run
843
  * manual queries against the database to get their results. As such, this
844
  * function can be costly to run but is necessary to keep everything accurate.
845
  *
@@ -989,22 +993,16 @@ function bbp_move_topic_handler( $topic_id, $old_forum_id, $new_forum_id ) {
989
  // Get topic ancestors
990
  $old_forum_ancestors = array_values( array_unique( array_merge( array( $old_forum_id ), (array) get_post_ancestors( $old_forum_id ) ) ) );
991
 
992
- // Get reply count.
993
- $public_reply_count = bbp_get_public_child_count( $topic_id, bbp_get_reply_post_type() );
994
-
995
- // Topic status.
996
- $topic_status = get_post_field( 'post_status', $topic_id );
997
-
998
- // Update old/new forum counts.
999
- if ( $topic_status === bbp_get_public_status_id() ) {
1000
 
1001
  // Update old forum counts.
1002
  bbp_decrease_forum_topic_count( $old_forum_id );
1003
- bbp_bump_forum_reply_count( $old_forum_id, -$public_reply_count );
1004
 
1005
  // Update new forum counts.
1006
  bbp_increase_forum_topic_count( $new_forum_id );
1007
- bbp_bump_forum_reply_count( $new_forum_id, $public_reply_count );
 
1008
  } else {
1009
 
1010
  // Update old forum counts.
@@ -1014,6 +1012,16 @@ function bbp_move_topic_handler( $topic_id, $old_forum_id, $new_forum_id ) {
1014
  bbp_increase_forum_topic_count_hidden( $new_forum_id );
1015
  }
1016
 
 
 
 
 
 
 
 
 
 
 
1017
  // Loop through ancestors and update them
1018
  if ( ! empty( $old_forum_ancestors ) ) {
1019
  foreach ( $old_forum_ancestors as $ancestor ) {
@@ -1895,6 +1903,41 @@ function bbp_get_topic_toggles( $topic_id = 0 ) {
1895
  ), $topic_id );
1896
  }
1897
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1898
  /** Stickies ******************************************************************/
1899
 
1900
  /**
@@ -2279,13 +2322,14 @@ function bbp_increase_topic_reply_count( $topic_id = 0 ) {
2279
  $reply_id = $topic_id;
2280
  $topic_id = bbp_get_reply_topic_id( $reply_id );
2281
 
2282
- // If this is a new, unpublished, reply, update hidden count and bail.
2283
- if ( ! bbp_is_reply_published( $reply_id ) ) {
2284
  bbp_increase_topic_reply_count_hidden( $topic_id );
2285
  return;
2286
  }
2287
  }
2288
 
 
2289
  bbp_bump_topic_reply_count( $topic_id );
2290
  }
2291
 
@@ -2307,9 +2351,17 @@ function bbp_decrease_topic_reply_count( $topic_id = 0 ) {
2307
 
2308
  // If it's a reply, get the topic id.
2309
  if ( bbp_is_reply( $topic_id ) ) {
2310
- $topic_id = bbp_get_reply_topic_id( $topic_id );
 
 
 
 
 
 
 
2311
  }
2312
 
 
2313
  bbp_bump_topic_reply_count( $topic_id, -1 );
2314
  }
2315
 
@@ -2360,9 +2412,17 @@ function bbp_increase_topic_reply_count_hidden( $topic_id = 0 ) {
2360
 
2361
  // If it's a reply, get the topic id.
2362
  if ( bbp_is_reply( $topic_id ) ) {
2363
- $topic_id = bbp_get_reply_topic_id( $topic_id );
 
 
 
 
 
 
 
2364
  }
2365
 
 
2366
  bbp_bump_topic_reply_count_hidden( $topic_id );
2367
  }
2368
 
@@ -2384,9 +2444,17 @@ function bbp_decrease_topic_reply_count_hidden( $topic_id = 0 ) {
2384
 
2385
  // If it's a reply, get the topic id.
2386
  if ( bbp_is_reply( $topic_id ) ) {
2387
- $topic_id = bbp_get_reply_topic_id( $topic_id );
 
 
 
 
 
 
 
2388
  }
2389
 
 
2390
  bbp_bump_topic_reply_count_hidden( $topic_id, -1 );
2391
  }
2392
 
@@ -2469,7 +2537,7 @@ function bbp_update_topic_topic_id( $topic_id = 0 ) {
2469
  * @param int $reply_count Optional. Set the reply count manually.
2470
  * @return int Topic reply count
2471
  */
2472
- function bbp_update_topic_reply_count( $topic_id = 0, $reply_count = 0 ) {
2473
 
2474
  // If it's a reply, then get the parent (topic id)
2475
  $topic_id = bbp_is_reply( $topic_id )
@@ -2477,7 +2545,7 @@ function bbp_update_topic_reply_count( $topic_id = 0, $reply_count = 0 ) {
2477
  : bbp_get_topic_id( $topic_id );
2478
 
2479
  // Get replies of topic if not passed
2480
- $reply_count = empty( $reply_count )
2481
  ? bbp_get_public_child_count( $topic_id, bbp_get_reply_post_type() )
2482
  : (int) $reply_count;
2483
 
@@ -2497,7 +2565,7 @@ function bbp_update_topic_reply_count( $topic_id = 0, $reply_count = 0 ) {
2497
  * @param int $reply_count Optional. Set the reply count manually
2498
  * @return int Topic hidden reply count
2499
  */
2500
- function bbp_update_topic_reply_count_hidden( $topic_id = 0, $reply_count = 0 ) {
2501
 
2502
  // If it's a reply, then get the parent (topic id)
2503
  $topic_id = bbp_is_reply( $topic_id )
@@ -2505,7 +2573,7 @@ function bbp_update_topic_reply_count_hidden( $topic_id = 0, $reply_count = 0 )
2505
  : bbp_get_topic_id( $topic_id );
2506
 
2507
  // Get replies of topic
2508
- $reply_count = empty( $reply_count )
2509
  ? bbp_get_non_public_child_count( $topic_id, bbp_get_reply_post_type() )
2510
  : (int) $reply_count;
2511
 
@@ -2544,9 +2612,7 @@ function bbp_update_topic_last_active_id( $topic_id = 0, $active_id = 0 ) {
2544
  $active_id = (int) $active_id;
2545
 
2546
  // Update only if published
2547
- if ( bbp_get_public_status_id() === get_post_status( $active_id ) ) {
2548
- update_post_meta( $topic_id, '_bbp_last_active_id', $active_id );
2549
- }
2550
 
2551
  // Filter & return
2552
  return (int) apply_filters( 'bbp_update_topic_last_active_id', $active_id, $topic_id );
@@ -2614,9 +2680,7 @@ function bbp_update_topic_last_reply_id( $topic_id = 0, $reply_id = 0 ) {
2614
  $reply_id = (int) $reply_id;
2615
 
2616
  // Update if reply is published
2617
- if ( bbp_is_reply_published( $reply_id ) ) {
2618
- update_post_meta( $topic_id, '_bbp_last_reply_id', $reply_id );
2619
- }
2620
 
2621
  // Filter & return
2622
  return (int) apply_filters( 'bbp_update_topic_last_reply_id', $reply_id, $topic_id );
@@ -3108,20 +3172,18 @@ function bbp_stick_topic( $topic_id = 0, $super = false ) {
3108
  return false;
3109
  }
3110
 
3111
- // We may have a super sticky to which we want to convert into a normal
3112
- // sticky and vice versa; unstick the topic first to avoid any possible error.
3113
- bbp_unstick_topic( $topic_id );
3114
 
3115
- $forum_id = empty( $super ) ? bbp_get_topic_forum_id( $topic_id ) : 0;
3116
- $stickies = bbp_get_stickies( $forum_id );
 
 
3117
 
3118
- do_action( 'bbp_stick_topic', $topic_id, $super );
 
3119
 
3120
- if ( ! is_array( $stickies ) ) {
3121
- $stickies = array( $topic_id );
3122
- } else {
3123
- $stickies[] = $topic_id;
3124
- }
3125
 
3126
  // Pull out duplicates and empties
3127
  $stickies = array_unique( array_filter( $stickies ) );
@@ -3135,7 +3197,11 @@ function bbp_stick_topic( $topic_id = 0, $super = false ) {
3135
 
3136
  // Reset keys
3137
  $stickies = array_values( $stickies );
3138
- $success = ! empty( $super ) ? update_option( '_bbp_super_sticky_topics', $stickies ) : update_post_meta( $forum_id, '_bbp_sticky_topics', $stickies );
 
 
 
 
3139
 
3140
  do_action( 'bbp_stuck_topic', $topic_id, $super, $success );
3141
 
@@ -3237,6 +3303,8 @@ function bbp_unapprove_topic( $topic_id = 0 ) {
3237
  * @return bool Always true.
3238
  */
3239
  function bbp_unstick_topic( $topic_id = 0 ) {
 
 
3240
  $topic_id = bbp_get_topic_id( $topic_id );
3241
  $super = bbp_is_topic_super_sticky( $topic_id );
3242
  $forum_id = empty( $super ) ? bbp_get_topic_forum_id( $topic_id ) : 0;
@@ -3245,18 +3313,30 @@ function bbp_unstick_topic( $topic_id = 0 ) {
3245
 
3246
  do_action( 'bbp_unstick_topic', $topic_id );
3247
 
 
3248
  if ( empty( $stickies ) ) {
3249
  $success = true;
 
 
3250
  } elseif ( ! in_array( $topic_id, $stickies, true ) ) {
3251
  $success = true;
 
 
3252
  } elseif ( false === $offset ) {
3253
  $success = true;
 
 
3254
  } else {
3255
  array_splice( $stickies, $offset, 1 );
 
3256
  if ( empty( $stickies ) ) {
3257
- $success = ! empty( $super ) ? delete_option( '_bbp_super_sticky_topics' ) : delete_post_meta( $forum_id, '_bbp_sticky_topics' );
 
 
3258
  } else {
3259
- $success = ! empty( $super ) ? update_option( '_bbp_super_sticky_topics', $stickies ) : update_post_meta( $forum_id, '_bbp_sticky_topics', $stickies );
 
 
3260
  }
3261
  }
3262
 
@@ -3614,10 +3694,7 @@ function bbp_update_topic_tag_count( $terms, $taxonomy ) {
3614
  }
3615
 
3616
  // Statuses to count
3617
- $object_statuses = array(
3618
- bbp_get_public_status_id(),
3619
- bbp_get_closed_status_id()
3620
- );
3621
 
3622
  // Get database
3623
  $bbp_db = bbp_db();
797
 
798
  // Handle Subscription Checkbox
799
  if ( bbp_is_subscriptions_active() && ! empty( $author_id ) ) {
800
+
801
+ // Check if subscribed
802
  $subscribed = bbp_is_user_subscribed( $author_id, $topic_id );
803
+
804
+ // Check for action
805
  $subscheck = ( ! empty( $_POST['bbp_topic_subscription'] ) && ( 'bbp_subscribe' === $_POST['bbp_topic_subscription'] ) )
806
  ? true
807
  : false;
808
 
809
  // Subscribed and unsubscribing
810
+ if ( ( true === $subscribed ) && ( false === $subscheck ) ) {
811
  bbp_remove_user_subscription( $author_id, $topic_id );
812
 
813
+ // Not subscribed and subscribing
814
+ } elseif ( ( false === $subscribed ) && ( true === $subscheck ) ) {
815
  bbp_add_user_subscription( $author_id, $topic_id );
816
  }
817
  }
843
 
844
  /**
845
  * Walks up the post_parent tree from the current topic_id, and updates the
846
+ * meta data of forums above it. This calls several functions that all run
847
  * manual queries against the database to get their results. As such, this
848
  * function can be costly to run but is necessary to keep everything accurate.
849
  *
993
  // Get topic ancestors
994
  $old_forum_ancestors = array_values( array_unique( array_merge( array( $old_forum_id ), (array) get_post_ancestors( $old_forum_id ) ) ) );
995
 
996
+ // Public counts
997
+ if ( bbp_is_topic_public( $topic_id ) ) {
 
 
 
 
 
 
998
 
999
  // Update old forum counts.
1000
  bbp_decrease_forum_topic_count( $old_forum_id );
 
1001
 
1002
  // Update new forum counts.
1003
  bbp_increase_forum_topic_count( $new_forum_id );
1004
+
1005
+ // Non-public counts
1006
  } else {
1007
 
1008
  // Update old forum counts.
1012
  bbp_increase_forum_topic_count_hidden( $new_forum_id );
1013
  }
1014
 
1015
+ // Get reply counts.
1016
+ $public_reply_count = bbp_get_public_child_count( $topic_id, bbp_get_reply_post_type() );
1017
+ $hidden_reply_count = bbp_get_non_public_child_count( $topic_id, bbp_get_reply_post_type() );
1018
+
1019
+ // Bump reply counts.
1020
+ bbp_bump_forum_reply_count( $old_forum_id, -$public_reply_count );
1021
+ bbp_bump_forum_reply_count( $new_forum_id, $public_reply_count );
1022
+ bbp_bump_forum_reply_count_hidden( $old_forum_id, -$hidden_reply_count );
1023
+ bbp_bump_forum_reply_count_hidden( $new_forum_id, $hidden_reply_count );
1024
+
1025
  // Loop through ancestors and update them
1026
  if ( ! empty( $old_forum_ancestors ) ) {
1027
  foreach ( $old_forum_ancestors as $ancestor ) {
1903
  ), $topic_id );
1904
  }
1905
 
1906
+ /**
1907
+ * Return array of public topic statuses.
1908
+ *
1909
+ * @since 2.6.0 bbPress (r6383)
1910
+ *
1911
+ * @return array
1912
+ */
1913
+ function bbp_get_public_topic_statuses() {
1914
+ $statuses = array(
1915
+ bbp_get_public_status_id(),
1916
+ bbp_get_closed_status_id()
1917
+ );
1918
+
1919
+ // Filter & return
1920
+ return (array) apply_filters( 'bbp_get_public_topic_statuses', $statuses );
1921
+ }
1922
+
1923
+ /**
1924
+ * Return array of non-public topic statuses.
1925
+ *
1926
+ * @since 2.6.0 bbPress (r6642)
1927
+ *
1928
+ * @return array
1929
+ */
1930
+ function bbp_get_non_public_topic_statuses() {
1931
+ $statuses = array(
1932
+ bbp_get_trash_status_id(),
1933
+ bbp_get_spam_status_id(),
1934
+ bbp_get_pending_status_id()
1935
+ );
1936
+
1937
+ // Filter & return
1938
+ return (array) apply_filters( 'bbp_get_non_public_topic_statuses', $statuses );
1939
+ }
1940
+
1941
  /** Stickies ******************************************************************/
1942
 
1943
  /**
2322
  $reply_id = $topic_id;
2323
  $topic_id = bbp_get_reply_topic_id( $reply_id );
2324
 
2325
+ // Update inverse based on item status
2326
+ if ( ! bbp_is_reply_public( $reply_id ) ) {
2327
  bbp_increase_topic_reply_count_hidden( $topic_id );
2328
  return;
2329
  }
2330
  }
2331
 
2332
+ // Bump up
2333
  bbp_bump_topic_reply_count( $topic_id );
2334
  }
2335
 
2351
 
2352
  // If it's a reply, get the topic id.
2353
  if ( bbp_is_reply( $topic_id ) ) {
2354
+ $reply_id = $topic_id;
2355
+ $topic_id = bbp_get_reply_topic_id( $reply_id );
2356
+
2357
+ // Update inverse based on item status
2358
+ if ( ! bbp_is_reply_public( $reply_id ) ) {
2359
+ bbp_decrease_topic_reply_count_hidden( $topic_id );
2360
+ return;
2361
+ }
2362
  }
2363
 
2364
+ // Bump down
2365
  bbp_bump_topic_reply_count( $topic_id, -1 );
2366
  }
2367
 
2412
 
2413
  // If it's a reply, get the topic id.
2414
  if ( bbp_is_reply( $topic_id ) ) {
2415
+ $reply_id = $topic_id;
2416
+ $topic_id = bbp_get_reply_topic_id( $reply_id );
2417
+
2418
+ // Update inverse based on item status
2419
+ if ( bbp_is_reply_public( $reply_id ) ) {
2420
+ bbp_increase_topic_reply_count( $topic_id );
2421
+ return;
2422
+ }
2423
  }
2424
 
2425
+ // Bump up
2426
  bbp_bump_topic_reply_count_hidden( $topic_id );
2427
  }
2428
 
2444
 
2445
  // If it's a reply, get the topic id.
2446
  if ( bbp_is_reply( $topic_id ) ) {
2447
+ $reply_id = $topic_id;
2448
+ $topic_id = bbp_get_reply_topic_id( $reply_id );
2449
+
2450
+ // Update inverse based on item status
2451
+ if ( bbp_is_reply_public( $reply_id ) ) {
2452
+ bbp_decrease_topic_reply_count( $topic_id );
2453
+ return;
2454
+ }
2455
  }
2456
 
2457
+ // Bump down
2458
  bbp_bump_topic_reply_count_hidden( $topic_id, -1 );
2459
  }
2460
 
2537
  * @param int $reply_count Optional. Set the reply count manually.
2538
  * @return int Topic reply count
2539
  */
2540
+ function bbp_update_topic_reply_count( $topic_id = 0, $reply_count = false ) {
2541
 
2542
  // If it's a reply, then get the parent (topic id)
2543
  $topic_id = bbp_is_reply( $topic_id )
2545
  : bbp_get_topic_id( $topic_id );
2546
 
2547
  // Get replies of topic if not passed
2548
+ $reply_count = ! is_int( $reply_count )
2549
  ? bbp_get_public_child_count( $topic_id, bbp_get_reply_post_type() )
2550
  : (int) $reply_count;
2551
 
2565
  * @param int $reply_count Optional. Set the reply count manually
2566
  * @return int Topic hidden reply count
2567
  */
2568
+ function bbp_update_topic_reply_count_hidden( $topic_id = 0, $reply_count = false ) {
2569
 
2570
  // If it's a reply, then get the parent (topic id)
2571
  $topic_id = bbp_is_reply( $topic_id )
2573
  : bbp_get_topic_id( $topic_id );
2574
 
2575
  // Get replies of topic
2576
+ $reply_count = ! is_int( $reply_count )
2577
  ? bbp_get_non_public_child_count( $topic_id, bbp_get_reply_post_type() )
2578
  : (int) $reply_count;
2579
 
2612
  $active_id = (int) $active_id;
2613
 
2614
  // Update only if published
2615
+ update_post_meta( $topic_id, '_bbp_last_active_id', $active_id );
 
 
2616
 
2617
  // Filter & return
2618
  return (int) apply_filters( 'bbp_update_topic_last_active_id', $active_id, $topic_id );
2680
  $reply_id = (int) $reply_id;
2681
 
2682
  // Update if reply is published
2683
+ update_post_meta( $topic_id, '_bbp_last_reply_id', $reply_id );
 
 
2684
 
2685
  // Filter & return
2686
  return (int) apply_filters( 'bbp_update_topic_last_reply_id', $reply_id, $topic_id );
3172
  return false;
3173
  }
3174
 
3175
+ do_action( 'bbp_stick_topic', $topic_id, $super );
 
 
3176
 
3177
+ // Maybe get the forum ID if not getting supers
3178
+ $forum_id = empty( $super )
3179
+ ? bbp_get_topic_forum_id( $topic_id )
3180
+ : 0;
3181
 
3182
+ // Get the stickies, maybe from the forum ID
3183
+ $stickies = bbp_get_stickies( $forum_id );
3184
 
3185
+ // Add the topic to the stickies
3186
+ $stickies[] = $topic_id;
 
 
 
3187
 
3188
  // Pull out duplicates and empties
3189
  $stickies = array_unique( array_filter( $stickies ) );
3197
 
3198
  // Reset keys
3199
  $stickies = array_values( $stickies );
3200
+
3201
+ // Update
3202
+ $success = ! empty( $super )
3203
+ ? update_option( '_bbp_super_sticky_topics', $stickies )
3204
+ : update_post_meta( $forum_id, '_bbp_sticky_topics', $stickies );
3205
 
3206
  do_action( 'bbp_stuck_topic', $topic_id, $super, $success );
3207
 
3303
  * @return bool Always true.
3304
  */
3305
  function bbp_unstick_topic( $topic_id = 0 ) {
3306
+
3307
+ // Get topic sticky status
3308
  $topic_id = bbp_get_topic_id( $topic_id );
3309
  $super = bbp_is_topic_super_sticky( $topic_id );
3310
  $forum_id = empty( $super ) ? bbp_get_topic_forum_id( $topic_id ) : 0;
3313
 
3314
  do_action( 'bbp_unstick_topic', $topic_id );
3315
 
3316
+ // Nothing to unstick
3317
  if ( empty( $stickies ) ) {
3318
  $success = true;
3319
+
3320
+ // Topic not in stickies
3321
  } elseif ( ! in_array( $topic_id, $stickies, true ) ) {
3322
  $success = true;
3323
+
3324
+ // Topic not in stickies
3325
  } elseif ( false === $offset ) {
3326
  $success = true;
3327
+
3328
+ // Splice out the offset
3329
  } else {
3330
  array_splice( $stickies, $offset, 1 );
3331
+
3332
  if ( empty( $stickies ) ) {
3333
+ $success = ! empty( $super )
3334
+ ? delete_option( '_bbp_super_sticky_topics' )
3335
+ : delete_post_meta( $forum_id, '_bbp_sticky_topics' );
3336
  } else {
3337
+ $success = ! empty( $super )
3338
+ ? update_option( '_bbp_super_sticky_topics', $stickies )
3339
+ : update_post_meta( $forum_id, '_bbp_sticky_topics', $stickies );
3340
  }
3341
  }
3342
 
3694
  }
3695
 
3696
  // Statuses to count
3697
+ $object_statuses = bbp_get_public_topic_statuses();
 
 
 
3698
 
3699
  // Get database
3700
  $bbp_db = bbp_db();
includes/topics/template.php CHANGED
@@ -44,37 +44,38 @@ function bbp_get_topic_post_type_labels() {
44
 
45
  // Filter & return
46
  return (array) apply_filters( 'bbp_get_topic_post_type_labels', array(
47
- 'name' => esc_attr__( 'Topics', 'bbpress' ),
48
- 'menu_name' => esc_attr__( 'Topics', 'bbpress' ),
49
- 'singular_name' => esc_attr__( 'Topic', 'bbpress' ),
50
- 'all_items' => esc_attr__( 'All Topics', 'bbpress' ),
51
- 'add_new' => esc_attr__( 'Add New', 'bbpress' ),
52
- 'add_new_item' => esc_attr__( 'Create New Topic', 'bbpress' ),
53
- 'edit' => esc_attr__( 'Edit', 'bbpress' ),
54
- 'edit_item' => esc_attr__( 'Edit Topic', 'bbpress' ),
55
- 'new_item' => esc_attr__( 'New Topic', 'bbpress' ),
56
- 'view' => esc_attr__( 'View Topic', 'bbpress' ),
57
- 'view_item' => esc_attr__( 'View Topic', 'bbpress' ),
58
- 'view_items' => esc_attr__( 'View Topics', 'bbpress' ),
59
- 'search_items' => esc_attr__( 'Search Topics', 'bbpress' ),
60
- 'not_found' => esc_attr__( 'No topics found', 'bbpress' ),
61
- 'not_found_in_trash' => esc_attr__( 'No topics found in Trash', 'bbpress' ),
62
- 'filter_items_list' => esc_attr__( 'Filter topics list', 'bbpress' ),
63
- 'items_list' => esc_attr__( 'Topics list', 'bbpress' ),
64
- 'items_list_navigation' => esc_attr__( 'Topics list navigation', 'bbpress' ),
65
- 'parent_item_colon' => esc_attr__( 'Forum:', 'bbpress' ),
66
- 'all_items' => esc_attr__( 'All Topics', 'bbpress' ),
67
- 'archives' => esc_attr__( 'Forum Topics', 'bbpress' ),
68
- 'attributes' => esc_attr__( 'Topic Attributes', 'bbpress' ),
69
- 'insert_into_item' => esc_attr__( 'Insert into topic', 'bbpress' ),
70
- 'uploaded_to_this_item' => esc_attr__( 'Uploaded to this topic', 'bbpress' ),
71
- 'featured_image' => esc_attr__( 'Topic Image', 'bbpress' ),
72
- 'set_featured_image' => esc_attr__( 'Set topic image', 'bbpress' ),
73
- 'remove_featured_image' => esc_attr__( 'Remove topic image', 'bbpress' ),
74
- 'use_featured_image' => esc_attr__( 'Use as topic image', 'bbpress' ),
75
- 'filter_items_list' => esc_attr__( 'Filter topic list', 'bbpress' ),
76
- 'items_list_navigation' => esc_attr__( 'Topic list navigation', 'bbpress' ),
77
- 'items_list' => esc_attr__( 'Topic list', 'bbpress' )
 
78
  ) );
79
  }
80
 
@@ -147,7 +148,7 @@ function bbp_has_topics( $args = array() ) {
147
  /** Defaults **************************************************************/
148
 
149
  // Other defaults
150
- $default_topic_search = ! empty( $_REQUEST['ts'] ) ? $_REQUEST['ts'] : false;
151
  $default_show_stickies = (bool) ( bbp_is_single_forum() || bbp_is_topic_archive() ) && ( false === $default_topic_search );
152
  $default_post_parent = bbp_is_single_forum() ? bbp_get_forum_id() : 'any';
153
 
@@ -803,8 +804,11 @@ function bbp_topic_pagination( $args = array() ) {
803
  'after' => '</span>',
804
  ), 'get_topic_pagination' );
805
 
 
 
 
806
  // If pretty permalinks are enabled, make our pagination pretty
807
- $base = bbp_use_pretty_urls()
808
  ? trailingslashit( get_permalink( $r['topic_id'] ) ) . user_trailingslashit( bbp_get_paged_slug() . '/%#%/' )
809
  : add_query_arg( 'paged', '%#%', get_permalink( $r['topic_id'] ) );
810
 
@@ -945,7 +949,9 @@ function bbp_topic_revision_log( $topic_id = 0 ) {
945
  $topic_id = bbp_get_topic_id( $topic_id );
946
 
947
  $revision_log = get_post_meta( $topic_id, '_bbp_revision_log', true );
948
- $revision_log = empty( $revision_log ) ? array() : $revision_log;
 
 
949
 
950
  // Filter & return
951
  return apply_filters( 'bbp_get_topic_raw_revision_log', $revision_log, $topic_id );
@@ -1053,41 +1059,6 @@ function bbp_topic_status( $topic_id = 0 ) {
1053
  return apply_filters( 'bbp_get_topic_status', get_post_status( $topic_id ), $topic_id );
1054
  }
1055
 
1056
- /**
1057
- * Return array of public topic statuses.
1058
- *
1059
- * @since 2.6.0 bbPress (r6383)
1060
- *
1061
- * @return array
1062
- */
1063
- function bbp_get_public_topic_statuses() {
1064
- $statuses = array(
1065
- bbp_get_public_status_id(),
1066
- bbp_get_closed_status_id()
1067
- );
1068
-
1069
- // Filter & return
1070
- return (array) apply_filters( 'bbp_get_public_topic_statuses', $statuses );
1071
- }
1072
-
1073
- /**
1074
- * Return array of non-public topic statuses.
1075
- *
1076
- * @since 2.6.0 bbPress (r6642)
1077
- *
1078
- * @return array
1079
- */
1080
- function bbp_get_non_public_topic_statuses() {
1081
- $statuses = array(
1082
- bbp_get_trash_status_id(),
1083
- bbp_get_spam_status_id(),
1084
- bbp_get_pending_status_id()
1085
- );
1086
-
1087
- // Filter & return
1088
- return (array) apply_filters( 'bbp_get_non_public_topic_statuses', $statuses );
1089
- }
1090
-
1091
  /**
1092
  * Is the topic closed to new replies?
1093
  *
@@ -1691,20 +1662,20 @@ function bbp_topic_forum_id( $topic_id = 0 ) {
1691
  */
1692
  function bbp_get_topic_forum_id( $topic_id = 0 ) {
1693
  $topic_id = bbp_get_topic_id( $topic_id );
1694
- $forum_id = get_post_field( 'post_parent', $topic_id );
1695
 
1696
  // Meta-data fallback
1697
  if ( empty( $forum_id ) ) {
1698
- $forum_id = get_post_meta( $topic_id, '_bbp_forum_id', true );
1699
  }
1700
 
1701
  // Filter
1702
  if ( ! empty( $forum_id ) ) {
1703
- $forum_id = bbp_get_forum_id( $forum_id );
1704
  }
1705
 
1706
  // Filter & return
1707
- return (int) apply_filters( 'bbp_get_topic_forum_id', (int) $forum_id, $topic_id );
1708
  }
1709
 
1710
  /**
@@ -1727,10 +1698,10 @@ function bbp_topic_last_active_id( $topic_id = 0 ) {
1727
  */
1728
  function bbp_get_topic_last_active_id( $topic_id = 0 ) {
1729
  $topic_id = bbp_get_topic_id( $topic_id );
1730
- $active_id = get_post_meta( $topic_id, '_bbp_last_active_id', true );
1731
 
1732
  // Filter & return
1733
- return (int) apply_filters( 'bbp_get_topic_last_active_id', (int) $active_id, $topic_id );
1734
  }
1735
 
1736
  /**
@@ -1889,10 +1860,10 @@ function bbp_topic_last_reply_id( $topic_id = 0 ) {
1889
  */
1890
  function bbp_get_topic_last_reply_id( $topic_id = 0 ) {
1891
  $topic_id = bbp_get_topic_id( $topic_id );
1892
- $reply_id = get_post_meta( $topic_id, '_bbp_last_reply_id', true );
1893
 
1894
  // Filter & return
1895
- return (int) apply_filters( 'bbp_get_topic_last_reply_id', (int) $reply_id, $topic_id );
1896
  }
1897
 
1898
  /**
@@ -2091,7 +2062,7 @@ function bbp_topic_reply_count( $topic_id = 0, $integer = false ) {
2091
  */
2092
  function bbp_get_topic_reply_count( $topic_id = 0, $integer = false ) {
2093
  $topic_id = bbp_get_topic_id( $topic_id );
2094
- $replies = get_post_meta( $topic_id, '_bbp_reply_count', true );
2095
  $filter = ( true === $integer )
2096
  ? 'bbp_get_topic_reply_count_int'
2097
  : 'bbp_get_topic_reply_count';
@@ -2121,7 +2092,7 @@ function bbp_topic_post_count( $topic_id = 0, $integer = false ) {
2121
  */
2122
  function bbp_get_topic_post_count( $topic_id = 0, $integer = false ) {
2123
  $topic_id = bbp_get_topic_id( $topic_id );
2124
- $replies = get_post_meta( $topic_id, '_bbp_reply_count', true ) + 1;
2125
  $filter = ( true === $integer )
2126
  ? 'bbp_get_topic_post_count_int'
2127
  : 'bbp_get_topic_post_count';
@@ -2153,7 +2124,7 @@ function bbp_topic_reply_count_hidden( $topic_id = 0, $integer = false ) {
2153
  */
2154
  function bbp_get_topic_reply_count_hidden( $topic_id = 0, $integer = false ) {
2155
  $topic_id = bbp_get_topic_id( $topic_id );
2156
- $replies = get_post_meta( $topic_id, '_bbp_reply_count_hidden', true );
2157
  $filter = ( true === $integer )
2158
  ? 'bbp_get_topic_reply_count_hidden_int'
2159
  : 'bbp_get_topic_reply_count_hidden';
@@ -2181,7 +2152,7 @@ function bbp_topic_voice_count( $topic_id = 0, $integer = false ) {
2181
  */
2182
  function bbp_get_topic_voice_count( $topic_id = 0, $integer = false ) {
2183
  $topic_id = bbp_get_topic_id( $topic_id );
2184
- $voices = get_post_meta( $topic_id, '_bbp_voice_count', true );
2185
  $filter = ( true === $integer )
2186
  ? 'bbp_get_topic_voice_count_int'
2187
  : 'bbp_get_topic_voice_count';
@@ -2376,7 +2347,7 @@ function bbp_topic_admin_links( $args = array() ) {
2376
 
2377
  // See if links need to be unset
2378
  $topic_status = bbp_get_topic_status( $r['id'] );
2379
- if ( in_array( $topic_status, array( bbp_get_spam_status_id(), bbp_get_trash_status_id(), bbp_get_pending_status_id() ) ) ) {
2380
 
2381
  // Close link shouldn't be visible on trashed/spammed/pending topics
2382
  unset( $r['links']['close'] );
@@ -3080,7 +3051,12 @@ function bbp_topic_notices() {
3080
 
3081
  // Trashed notice
3082
  case bbp_get_trash_status_id() :
3083
- $notice_text = esc_html__( 'This topic is in the trash.', 'bbpress' );
 
 
 
 
 
3084
  break;
3085
 
3086
  // Standard status
@@ -3334,17 +3310,25 @@ function bbp_single_topic_description( $args = array() ) {
3334
 
3335
  // Topic has activity (could be from reply or topic author)
3336
  $last_active = bbp_get_topic_last_active_id( $topic_id );
3337
- if ( ! empty( $last_active ) ) {
3338
  $last_updated_by = bbp_get_author_link( array( 'post_id' => $last_active, 'size' => $r['size'] ) );
3339
  $retstr = sprintf( esc_html__( 'This topic has %1$s, %2$s, and was last updated %3$s by %4$s.', 'bbpress' ), $reply_count, $voice_count, $time_since, $last_updated_by );
3340
 
3341
  // Topic has no replies
3342
- } elseif ( ! empty( $voice_count ) && ! empty( $reply_count ) ) {
3343
  $retstr = sprintf( esc_html__( 'This topic has %1$s and %2$s.', 'bbpress' ), $voice_count, $reply_count );
3344
 
3345
  // Topic has no replies and no voices
3346
- } elseif ( empty( $voice_count ) && empty( $reply_count ) ) {
3347
- $retstr = sprintf( esc_html__( 'This topic has no replies.', 'bbpress' ), $voice_count, $reply_count );
 
 
 
 
 
 
 
 
3348
  }
3349
 
3350
  // Add the 'view all' filter back
44
 
45
  // Filter & return
46
  return (array) apply_filters( 'bbp_get_topic_post_type_labels', array(
47
+ 'name' => esc_attr__( 'Topics', 'bbpress' ),
48
+ 'menu_name' => esc_attr__( 'Topics', 'bbpress' ),
49
+ 'singular_name' => esc_attr__( 'Topic', 'bbpress' ),
50
+ 'all_items' => esc_attr__( 'All Topics', 'bbpress' ),
51
+ 'add_new' => esc_attr__( 'Add New', 'bbpress' ),
52
+ 'add_new_item' => esc_attr__( 'Create New Topic', 'bbpress' ),
53
+ 'edit' => esc_attr__( 'Edit', 'bbpress' ),
54
+ 'edit_item' => esc_attr__( 'Edit Topic', 'bbpress' ),
55
+ 'new_item' => esc_attr__( 'New Topic', 'bbpress' ),
56
+ 'view' => esc_attr__( 'View Topic', 'bbpress' ),
57
+ 'view_item' => esc_attr__( 'View Topic', 'bbpress' ),
58
+ 'view_items' => esc_attr__( 'View Topics', 'bbpress' ),
59
+ 'search_items' => esc_attr__( 'Search Topics', 'bbpress' ),
60
+ 'not_found' => esc_attr__( 'No topics found', 'bbpress' ),
61
+ 'not_found_in_trash' => esc_attr__( 'No topics found in Trash', 'bbpress' ),
62
+ 'filter_items_list' => esc_attr__( 'Filter topics list', 'bbpress' ),
63
+ 'items_list' => esc_attr__( 'Topics list', 'bbpress' ),
64
+ 'items_list_navigation' => esc_attr__( 'Topics list navigation', 'bbpress' ),
65
+ 'parent_item_colon' => esc_attr__( 'Forum:', 'bbpress' ),
66
+ 'archives' => esc_attr__( 'Forum Topics', 'bbpress' ),
67
+ 'attributes' => esc_attr__( 'Topic Attributes', 'bbpress' ),
68
+ 'insert_into_item' => esc_attr__( 'Insert into topic', 'bbpress' ),
69
+ 'uploaded_to_this_item' => esc_attr__( 'Uploaded to this topic', 'bbpress' ),
70
+ 'featured_image' => esc_attr__( 'Topic Image', 'bbpress' ),
71
+ 'set_featured_image' => esc_attr__( 'Set topic image', 'bbpress' ),
72
+ 'remove_featured_image' => esc_attr__( 'Remove topic image', 'bbpress' ),
73
+ 'use_featured_image' => esc_attr__( 'Use as topic image', 'bbpress' ),
74
+ 'item_published' => esc_attr__( 'Topic published.', 'bbpress' ),
75
+ 'item_published_privately' => esc_attr__( 'Topic published privately.', 'bbpress' ),
76
+ 'item_reverted_to_draft' => esc_attr__( 'Topic reverted to draft.', 'bbpress' ),
77
+ 'item_scheduled' => esc_attr__( 'Topic scheduled.', 'bbpress' ),
78
+ 'item_updated' => esc_attr__( 'Topic updated.', 'bbpress' )
79
  ) );
80
  }
81
 
148
  /** Defaults **************************************************************/
149
 
150
  // Other defaults
151
+ $default_topic_search = bbp_sanitize_search_request( 'ts' );
152
  $default_show_stickies = (bool) ( bbp_is_single_forum() || bbp_is_topic_archive() ) && ( false === $default_topic_search );
153
  $default_post_parent = bbp_is_single_forum() ? bbp_get_forum_id() : 'any';
154
 
804
  'after' => '</span>',
805
  ), 'get_topic_pagination' );
806
 
807
+ // Slug must be checked for topics that have never been approved/published
808
+ $has_slug = bbp_get_topic( $r['topic_id'] )->post_name;
809
+
810
  // If pretty permalinks are enabled, make our pagination pretty
811
+ $base = ! empty( $has_slug ) && bbp_use_pretty_urls() && ! bbp_is_topic_pending( $r['topic_id'] )
812
  ? trailingslashit( get_permalink( $r['topic_id'] ) ) . user_trailingslashit( bbp_get_paged_slug() . '/%#%/' )
813
  : add_query_arg( 'paged', '%#%', get_permalink( $r['topic_id'] ) );
814
 
949
  $topic_id = bbp_get_topic_id( $topic_id );
950
 
951
  $revision_log = get_post_meta( $topic_id, '_bbp_revision_log', true );
952
+ $revision_log = ! empty( $revision_log )
953
+ ? $revision_log
954
+ : array();
955
 
956
  // Filter & return
957
  return apply_filters( 'bbp_get_topic_raw_revision_log', $revision_log, $topic_id );
1059
  return apply_filters( 'bbp_get_topic_status', get_post_status( $topic_id ), $topic_id );
1060
  }
1061
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1062
  /**
1063
  * Is the topic closed to new replies?
1064
  *
1662
  */
1663
  function bbp_get_topic_forum_id( $topic_id = 0 ) {
1664
  $topic_id = bbp_get_topic_id( $topic_id );
1665
+ $forum_id = (int) get_post_field( 'post_parent', $topic_id );
1666
 
1667
  // Meta-data fallback
1668
  if ( empty( $forum_id ) ) {
1669
+ $forum_id = (int) get_post_meta( $topic_id, '_bbp_forum_id', true );
1670
  }
1671
 
1672
  // Filter
1673
  if ( ! empty( $forum_id ) ) {
1674
+ $forum_id = (int) bbp_get_forum_id( $forum_id );
1675
  }
1676
 
1677
  // Filter & return
1678
+ return (int) apply_filters( 'bbp_get_topic_forum_id', $forum_id, $topic_id );
1679
  }
1680
 
1681
  /**
1698
  */
1699
  function bbp_get_topic_last_active_id( $topic_id = 0 ) {
1700
  $topic_id = bbp_get_topic_id( $topic_id );
1701
+ $active_id = (int) get_post_meta( $topic_id, '_bbp_last_active_id', true );
1702
 
1703
  // Filter & return
1704
+ return (int) apply_filters( 'bbp_get_topic_last_active_id', $active_id, $topic_id );
1705
  }
1706
 
1707
  /**
1860
  */
1861
  function bbp_get_topic_last_reply_id( $topic_id = 0 ) {
1862
  $topic_id = bbp_get_topic_id( $topic_id );
1863
+ $reply_id = (int) get_post_meta( $topic_id, '_bbp_last_reply_id', true );
1864
 
1865
  // Filter & return
1866
+ return (int) apply_filters( 'bbp_get_topic_last_reply_id', $reply_id, $topic_id );
1867
  }
1868
 
1869
  /**
2062
  */
2063
  function bbp_get_topic_reply_count( $topic_id = 0, $integer = false ) {
2064
  $topic_id = bbp_get_topic_id( $topic_id );
2065
+ $replies = (int) get_post_meta( $topic_id, '_bbp_reply_count', true );
2066
  $filter = ( true === $integer )
2067
  ? 'bbp_get_topic_reply_count_int'
2068
  : 'bbp_get_topic_reply_count';
2092
  */
2093
  function bbp_get_topic_post_count( $topic_id = 0, $integer = false ) {
2094
  $topic_id = bbp_get_topic_id( $topic_id );
2095
+ $replies = ( (int) get_post_meta( $topic_id, '_bbp_reply_count', true ) ) + 1;
2096
  $filter = ( true === $integer )
2097
  ? 'bbp_get_topic_post_count_int'
2098
  : 'bbp_get_topic_post_count';
2124
  */
2125
  function bbp_get_topic_reply_count_hidden( $topic_id = 0, $integer = false ) {
2126
  $topic_id = bbp_get_topic_id( $topic_id );
2127
+ $replies = (int) get_post_meta( $topic_id, '_bbp_reply_count_hidden', true );
2128
  $filter = ( true === $integer )
2129
  ? 'bbp_get_topic_reply_count_hidden_int'
2130
  : 'bbp_get_topic_reply_count_hidden';
2152
  */
2153
  function bbp_get_topic_voice_count( $topic_id = 0, $integer = false ) {
2154
  $topic_id = bbp_get_topic_id( $topic_id );
2155
+ $voices = (int) get_post_meta( $topic_id, '_bbp_voice_count', true );
2156
  $filter = ( true === $integer )
2157
  ? 'bbp_get_topic_voice_count_int'
2158
  : 'bbp_get_topic_voice_count';
2347
 
2348
  // See if links need to be unset
2349
  $topic_status = bbp_get_topic_status( $r['id'] );
2350
+ if ( in_array( $topic_status, bbp_get_non_public_topic_statuses(), true ) ) {
2351
 
2352
  // Close link shouldn't be visible on trashed/spammed/pending topics
2353
  unset( $r['links']['close'] );
3051
 
3052
  // Trashed notice
3053
  case bbp_get_trash_status_id() :
3054
+ $notice_text = esc_html__( 'This topic is in the trash.', 'bbpress' );
3055
+ break;
3056
+
3057
+ // Pending notice
3058
+ case bbp_get_pending_status_id() :
3059
+ $notice_text = esc_html__( 'This topic is pending moderation.', 'bbpress' );
3060
  break;
3061
 
3062
  // Standard status
3310
 
3311
  // Topic has activity (could be from reply or topic author)
3312
  $last_active = bbp_get_topic_last_active_id( $topic_id );
3313
+ if ( ! empty( $vc_int ) && ! empty( $last_active ) ) {
3314
  $last_updated_by = bbp_get_author_link( array( 'post_id' => $last_active, 'size' => $r['size'] ) );
3315
  $retstr = sprintf( esc_html__( 'This topic has %1$s, %2$s, and was last updated %3$s by %4$s.', 'bbpress' ), $reply_count, $voice_count, $time_since, $last_updated_by );
3316
 
3317
  // Topic has no replies
3318
+ } elseif ( ! empty( $vc_int ) && ! empty( $reply_count ) ) {
3319
  $retstr = sprintf( esc_html__( 'This topic has %1$s and %2$s.', 'bbpress' ), $voice_count, $reply_count );
3320
 
3321
  // Topic has no replies and no voices
3322
+ } elseif ( empty( $vc_int ) && empty( $reply_count ) ) {
3323
+ $retstr = esc_html__( 'This topic has no replies.', 'bbpress' );
3324
+
3325
+ // Topic is pending
3326
+ } elseif ( bbp_get_topic_status( $topic_id ) === bbp_get_pending_status_id() ) {
3327
+ $retstr = esc_html__( 'This topic is pending moderation.', 'bbpress' );
3328
+
3329
+ // Fallback
3330
+ } else {
3331
+ $retstr = esc_html__( 'This topic is empty.', 'bbpress' );
3332
  }
3333
 
3334
  // Add the 'view all' filter back
includes/users/engagements.php CHANGED
@@ -416,6 +416,12 @@ function bbp_update_topic_engagements( $topic_id = 0 ) {
416
 
417
  // Is a topic
418
  } elseif ( bbp_is_topic( $topic_id ) ) {
 
 
 
 
 
 
419
  $author_id = bbp_get_topic_author_id( $topic_id );
420
  $topic_id = bbp_get_topic_id( $topic_id );
421
 
416
 
417
  // Is a topic
418
  } elseif ( bbp_is_topic( $topic_id ) ) {
419
+
420
+ // Bail if topic isn't published
421
+ if ( ! bbp_is_topic_published( $topic_id ) ) {
422
+ return;
423
+ }
424
+
425
  $author_id = bbp_get_topic_author_id( $topic_id );
426
  $topic_id = bbp_get_topic_id( $topic_id );
427
 
includes/users/template.php CHANGED
@@ -2289,7 +2289,7 @@ function bbp_current_user_can_access_create_reply_form() {
2289
  $retval = true;
2290
 
2291
  // Looking at a single topic, topic is open, and forum is open
2292
- } elseif ( ( bbp_is_single_topic() || is_page() || is_single() ) && bbp_is_topic_open() && bbp_is_forum_open() ) {
2293
  $retval = bbp_current_user_can_publish_replies();
2294
 
2295
  // User can edit this reply
2289
  $retval = true;
2290
 
2291
  // Looking at a single topic, topic is open, and forum is open
2292
+ } elseif ( ( bbp_is_single_topic() || is_page() || is_single() ) && bbp_is_topic_open() && bbp_is_forum_open() && bbp_is_topic_published() ) {
2293
  $retval = bbp_current_user_can_publish_replies();
2294
 
2295
  // User can edit this reply
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: matt, johnjamesjacoby, jmdodd, netweb, sergeybiryukov
3
  Tags: forums, discussion, support, theme, akismet, multisite
4
  Requires at least: 4.7
5
- Tested up to: 4.9
6
  Stable tag: 2.6.0
7
  License: GPLv2 or later
8
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -55,7 +55,19 @@ bbPress is intentionally simple yet infinitely powerful forum software, built by
55
  == Changelog ==
56
 
57
  = 2.6.0 =
58
- * Released on September 4, 2018
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
  = 2.5.14 =
61
  * Released on September 9, 2016
2
  Contributors: matt, johnjamesjacoby, jmdodd, netweb, sergeybiryukov
3
  Tags: forums, discussion, support, theme, akismet, multisite
4
  Requires at least: 4.7
5
+ Tested up to: 5.3
6
  Stable tag: 2.6.0
7
  License: GPLv2 or later
8
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
55
  == Changelog ==
56
 
57
  = 2.6.0 =
58
+ * Released on November 12, 2019
59
+
60
+ * Per-Forum Moderation
61
+ * Engagements API
62
+ * Support for PHP 7.1 and higher
63
+ * Improved Importer (and more platforms!)
64
+ * Improved Voices, Favorites, Subscriptions
65
+ * Improved Topic & Reply moderation UI
66
+ * Improved Item Counts
67
+ * Improved Upgrades
68
+ * Improved Tools
69
+ * Improved Admin-area Experience
70
+ * 420 total improvements
71
 
72
  = 2.5.14 =
73
  * Released on September 9, 2016
templates/default/bbpress-functions.php CHANGED
@@ -124,7 +124,7 @@ class BBP_Default extends BBP_Theme_Compat {
124
  // Get and filter the bbp-default style
125
  $styles = apply_filters( 'bbp_default_styles', array(
126
  'bbp-default' => array(
127
- 'file' => 'css/bbpress.css',
128
  'dependencies' => array()
129
  )
130
  ) );
124
  // Get and filter the bbp-default style
125
  $styles = apply_filters( 'bbp_default_styles', array(
126
  'bbp-default' => array(
127
+ 'file' => 'css/bbpress' . $suffix . '.css',
128
  'dependencies' => array()
129
  )
130
  ) );
templates/default/bbpress/user-subscriptions.php CHANGED
@@ -29,10 +29,7 @@ do_action( 'bbp_template_before_user_subscriptions' ); ?>
29
 
30
  <?php else : ?>
31
 
32
- <p><?php bbp_is_user_home()
33
- ? esc_html_e( 'You are not currently subscribed to any forums.', 'bbpress' )
34
- : esc_html_e( 'This user is not currently subscribed to any forums.', 'bbpress' );
35
- ?></p>
36
 
37
  <?php endif; ?>
38
 
29
 
30
  <?php else : ?>
31
 
32
+ <?php bbp_get_template_part( 'feedback', 'no-forums' ); ?>
 
 
 
33
 
34
  <?php endif; ?>
35
 
templates/default/css/bbpress-rtl.css CHANGED
@@ -159,7 +159,7 @@ body.reply-edit .reply {
159
  font-size: 11px;
160
  }
161
 
162
- #bbpress-forums .bbp-forums-list .bbp-forum.css-sep:not(:last-child):after {
163
  content: ", ";
164
  }
165
 
@@ -301,7 +301,7 @@ span.bbp-author-ip {
301
  font-size: 11px;
302
  font-weight: 700;
303
  word-wrap: break-word;
304
- color: #aaa;
305
  }
306
 
307
  /* =Topic and reply content
@@ -317,9 +317,9 @@ span.bbp-author-ip {
317
  }
318
 
319
  /* Clearing hack */
320
- #bbpress-forums div.bbp-forum-content:after,
321
- #bbpress-forums div.bbp-topic-content:after,
322
- #bbpress-forums div.bbp-reply-content:after {
323
  clear: both;
324
  content: ".";
325
  display: block;
@@ -518,7 +518,7 @@ span.bbp-admin-links {
518
  }
519
 
520
  span.bbp-admin-links a {
521
- color: #bbb;
522
  font-weight: 400;
523
  font-size: 10px;
524
  text-transform: uppercase;
@@ -543,7 +543,7 @@ td.bbp-topic-counts {
543
  .bbp-reply-header a.bbp-reply-permalink {
544
  float: left;
545
  margin-right: 10px;
546
- color: #ccc;
547
  }
548
 
549
  /* =Toggles
@@ -1156,17 +1156,10 @@ div.bbp-template-notice li {
1156
  margin-top: 10px;
1157
  }
1158
 
1159
- .bbp-login-form .bbp-remember-me {
1160
-
1161
- }
1162
-
1163
  .bbp-login-form .bbp-submit-wrapper {
1164
  text-align: left;
1165
  }
1166
 
1167
- .bbp-login-form .bbp-login-links {
1168
- }
1169
-
1170
  .bbp-login-form .bbp-login-links a {
1171
  float: right;
1172
  clear: right;
@@ -1327,18 +1320,6 @@ body.my-account #bbpress-forums {
1327
  padding: 0;
1328
  }
1329
 
1330
- /* =BuddyPress Group Forums
1331
- -------------------------------------------------------------- */
1332
-
1333
- #bbpress-forums div.row-actions {
1334
- font-size: 11px;
1335
- visibility: hidden;
1336
- }
1337
-
1338
- #bbpress-forums li:hover > div.row-actions {
1339
- visibility: visible;
1340
- }
1341
-
1342
  /* =Alerts
1343
  -------------------------------------------------------------- */
1344
 
159
  font-size: 11px;
160
  }
161
 
162
+ #bbpress-forums .bbp-forums-list .bbp-forum.css-sep:not(:last-child)::after {
163
  content: ", ";
164
  }
165
 
301
  font-size: 11px;
302
  font-weight: 700;
303
  word-wrap: break-word;
304
+ color: #747474;
305
  }
306
 
307
  /* =Topic and reply content
317
  }
318
 
319
  /* Clearing hack */
320
+ #bbpress-forums div.bbp-forum-content::after,
321
+ #bbpress-forums div.bbp-topic-content::after,
322
+ #bbpress-forums div.bbp-reply-content::after {
323
  clear: both;
324
  content: ".";
325
  display: block;
518
  }
519
 
520
  span.bbp-admin-links a {
521
+ color: #707070;
522
  font-weight: 400;
523
  font-size: 10px;
524
  text-transform: uppercase;
543
  .bbp-reply-header a.bbp-reply-permalink {
544
  float: left;
545
  margin-right: 10px;
546
+ color: #707070;
547
  }
548
 
549
  /* =Toggles
1156
  margin-top: 10px;
1157
  }
1158
 
 
 
 
 
1159
  .bbp-login-form .bbp-submit-wrapper {
1160
  text-align: left;
1161
  }
1162
 
 
 
 
1163
  .bbp-login-form .bbp-login-links a {
1164
  float: right;
1165
  clear: right;
1320
  padding: 0;
1321
  }
1322
 
 
 
 
 
 
 
 
 
 
 
 
 
1323
  /* =Alerts
1324
  -------------------------------------------------------------- */
1325
 
templates/default/css/bbpress-rtl.min.css CHANGED
@@ -1 +1 @@
1
- .hidden,.js .hide-if-js{display:none}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0;word-wrap:normal!important}#bbpress-forums{background:0 0;clear:both;margin-bottom:20px;overflow:hidden;font-size:12px;line-height:18px}#bbpress-forums a,#bbpress-forums a:hover{box-shadow:none;border:none;transition:none}#bbpress-forums hr{margin:0 0 24px}#bbpress-forums div.even,#bbpress-forums ul.even{background-color:#fff}#bbpress-forums div.odd,#bbpress-forums ul.odd{background-color:#fbfbfb}body.reply-edit .reply{float:none}#bbpress-forums div.reply{height:auto;width:100%}#bbpress-forums div.bbp-forum-header,#bbpress-forums div.bbp-reply-header,#bbpress-forums div.bbp-topic-header{background-color:#f4f4f4}#bbpress-forums .status-spam.even,#bbpress-forums .status-trash.even{background-color:#fee}#bbpress-forums .status-spam.odd,#bbpress-forums .status-trash.odd{background-color:#fdd}#bbpress-forums .status-pending.even,#bbpress-forums .status-pending.odd,#bbpress-forums ul.status-pending a{background-color:#fef7f1}#bbpress-forums ul.status-closed,#bbpress-forums ul.status-closed a{color:#ccc}#bbpress-forums ul{background:0 0;list-style:none;margin:0;padding:0}#bbpress-forums ul.bbp-threaded-replies{margin-right:50px}#bbpress-forums li{background:0 0;margin:0;list-style:none}#bbpress-forums ul.bbp-forums,#bbpress-forums ul.bbp-lead-topic,#bbpress-forums ul.bbp-replies,#bbpress-forums ul.bbp-search-results,#bbpress-forums ul.bbp-topics{font-size:12px;overflow:hidden;border:1px solid #eee;margin-bottom:20px;clear:both}#bbpress-forums li.bbp-body,#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{clear:both}#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{background:#f3f3f3;border-top:1px solid #eee;font-weight:700;padding:8px;text-align:center}#bbpress-forums li.bbp-header{background:#eaeaea}#bbpress-forums li.bbp-header ul{overflow:hidden}#bbpress-forums .bbp-forums-list{margin:0 7px 0 0;padding-right:12px;border-right:1px solid #ddd}#bbpress-forums .bbp-forums-list .bbp-forum{display:inline;font-size:11px}#bbpress-forums .bbp-forums-list .bbp-forum.css-sep:not(:last-child):after{content:", "}#bbpress-forums li.bbp-footer p{margin:0;line-height:1}li.bbp-forum-info,li.bbp-topic-title{float:right;text-align:right;width:55%}li.bbp-forum-reply-count,li.bbp-forum-topic-count,li.bbp-topic-reply-count,li.bbp-topic-voice-count{float:right;text-align:center;width:10%}li.bbp-forum-freshness,li.bbp-topic-freshness{text-align:center;float:right;width:22%}#bbpress-forums li.bbp-body ul.forum,#bbpress-forums li.bbp-body ul.topic{border-top:1px solid #eee;overflow:hidden;padding:8px}#bbpress-forums #favorite-toggle,#bbpress-forums #subscription-toggle{float:left}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{background:0 0;border:none;font-size:16px;line-height:1;margin:8px 0;padding:0;text-transform:none}#bbpress-forums div.bbp-forum-author,#bbpress-forums div.bbp-reply-author,#bbpress-forums div.bbp-topic-author{float:right;text-align:center;width:115px}#bbpress-forums div.bbp-forum-author img.avatar,#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{border:none;max-width:80px;padding:0;margin:12px auto 0;float:none}#bbpress-forums div.bbp-forum-author .bbp-author-name,#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{margin:0 12px;word-wrap:break-word;display:inline-block}#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{clear:right;display:block}#bbpress-forums div.bbp-forum-author .bbp-author-role,#bbpress-forums div.bbp-reply-author .bbp-author-role,#bbpress-forums div.bbp-topic-author .bbp-author-role{font-size:11px;font-style:italic}#bbpress-forums li.bbp-footer .bbp-forum-author,#bbpress-forums li.bbp-footer .bbp-reply-author,#bbpress-forums li.bbp-footer .bbp-search-author,#bbpress-forums li.bbp-footer .bbp-topic-author,#bbpress-forums li.bbp-header .bbp-forum-author,#bbpress-forums li.bbp-header .bbp-reply-author,#bbpress-forums li.bbp-header .bbp-search-author,#bbpress-forums li.bbp-header .bbp-topic-author{float:right;margin:0;padding:0;width:120px}#bbpress-forums li.bbp-footer .bbp-forum-content,#bbpress-forums li.bbp-footer .bbp-reply-content,#bbpress-forums li.bbp-footer .bbp-search-content,#bbpress-forums li.bbp-footer .bbp-topic-content,#bbpress-forums li.bbp-header .bbp-forum-content,#bbpress-forums li.bbp-header .bbp-reply-content,#bbpress-forums li.bbp-header .bbp-search-content,#bbpress-forums li.bbp-header .bbp-topic-content{margin-right:140px;padding:0;text-align:right}div.bbp-forum-header,div.bbp-reply-header,div.bbp-topic-header,li.bbp-body div.hentry{margin:0;overflow:hidden;padding:8px}div.bbp-forum-header,div.bbp-reply-header,div.bbp-topic-header{border-top:1px solid #ddd;clear:both}span.bbp-author-ip{font-size:11px;font-weight:700;word-wrap:break-word;color:#aaa}#bbpress-forums div.bbp-forum-content,#bbpress-forums div.bbp-reply-content,#bbpress-forums div.bbp-topic-content{margin-right:130px;padding:12px 0 12px 12px;text-align:right;position:relative}#bbpress-forums div.bbp-forum-content:after,#bbpress-forums div.bbp-reply-content:after,#bbpress-forums div.bbp-topic-content:after{clear:both;content:".";display:block;float:none;height:0;font-size:0;visibility:hidden}#bbpress-forums div.bbp-reply-content a,#bbpress-forums div.bbp-topic-content a{background:0 0;border:none;display:inline;font-weight:400;margin:0;padding:0}#bbpress-forums div.bbp-reply-content a.bbp-user-mention,#bbpress-forums div.bbp-topic-content a.bbp-user-mention{background:0 0;border:none;text-decoration:none;text-shadow:none;display:inline;font-weight:600;margin:0;padding:0}#bbpress-forums div.bbp-reply-content h1,#bbpress-forums div.bbp-reply-content h2,#bbpress-forums div.bbp-reply-content h3,#bbpress-forums div.bbp-reply-content h4,#bbpress-forums div.bbp-reply-content h5,#bbpress-forums div.bbp-reply-content h6,#bbpress-forums div.bbp-topic-content h1,#bbpress-forums div.bbp-topic-content h2,#bbpress-forums div.bbp-topic-content h3,#bbpress-forums div.bbp-topic-content h4,#bbpress-forums div.bbp-topic-content h5,#bbpress-forums div.bbp-topic-content h6{clear:none;line-height:1;margin:24px 0;padding:0}#bbpress-forums div.bbp-reply-content img,#bbpress-forums div.bbp-topic-content img{max-width:100%;height:auto}#bbpress-forums div.bbp-reply-content ol,#bbpress-forums div.bbp-reply-content ul,#bbpress-forums div.bbp-topic-content ol,#bbpress-forums div.bbp-topic-content ul{margin:0 15px 15px;padding:0}#bbpress-forums div.bbp-reply-content ul li,#bbpress-forums div.bbp-topic-content ul li{list-style-type:disc}#bbpress-forums div.bbp-reply-content ol li,#bbpress-forums div.bbp-topic-content ol li{list-style-type:decimal}#bbpress-forums div.bbp-reply-content ol li li,#bbpress-forums div.bbp-topic-content ol li li{list-style-type:lower-alpha}#bbpress-forums div.bbp-reply-content ol li li li,#bbpress-forums div.bbp-topic-content ol li li li{list-style-type:upper-roman}#bbpress-forums div.bbp-reply-content code,#bbpress-forums div.bbp-reply-content pre,#bbpress-forums div.bbp-topic-content code,#bbpress-forums div.bbp-topic-content pre{font-family:Inconsolata,Consolas,Monaco,"Lucida Console",monospace;display:inline-block;background-color:#f9f9f9;border:1px solid #ddd;padding:0 5px;max-width:95%;vertical-align:middle;margin-top:-3px;overflow-x:auto}#bbpress-forums div.bbp-reply-content pre,#bbpress-forums div.bbp-topic-content pre{display:block;line-height:18px;margin:0 0 24px;padding:5px 10px;white-space:pre;overflow:auto}#bbpress-forums div.bbp-reply-content pre code,#bbpress-forums div.bbp-topic-content pre code{display:block;border:none;padding:0;margin:0;background-color:transparent;overflow-wrap:normal;overflow:auto;max-width:100%}#bbpress-forums div.bbp-reply-content iframe.wp-embedded-content,#bbpress-forums div.bbp-topic-content iframe.wp-embedded-content{position:relative}#bbpress-forums div.bbp-reply-to{margin-right:130px;padding:12px 0 12px 12px;text-align:left}#bbpress-forums div#bbp-cancel-reply-to{text-align:left}div.bbp-breadcrumb{float:right}div.bbp-breadcrumb,div.bbp-topic-tags{font-size:12px}#bbpress-forums div.bbp-breadcrumb p,#bbpress-forums div.bbp-topic-tags p{margin-bottom:10px}#bbpress-forums div.bbp-topic-tags{float:left;clear:both}#bbp-topic-hot-tags{clear:both}#bbpress-forums #bbp-search-form{clear:right}#bbpress-forums #bbp-search-form .hidden{height:0;width:0;overflow:hidden;position:absolute;background:0 0;right:-999em}#bbpress-forums #bbp-search-form #bbp_search{display:inline-block;width:auto}#bbpress-forums div.bbp-search-form{float:left}span.bbp-admin-links{float:left;color:#ddd}span.bbp-admin-links a{color:#bbb;font-weight:400;font-size:10px;text-transform:uppercase;text-decoration:none}fieldset span.bbp-admin-links{float:right}tr td span.bbp-admin-links a:hover{color:#ff4b33}td.bbp-topic-admin-links,td.bbp-topic-counts{width:50%}.bbp-forum-header a.bbp-forum-permalink,.bbp-reply-header a.bbp-reply-permalink,.bbp-topic-header a.bbp-topic-permalink{float:left;margin-right:10px;color:#ccc}.bbp-row-actions #favorite-toggle a{text-decoration:none;padding:0 3px 1px;color:#7c7;border:1px solid #aca;background-color:#dfd;font-weight:700;font-size:12px}.bbp-row-actions #favorite-toggle a:hover{color:#5a5;border-color:#7c7;background-color:#beb}.bbp-row-actions #favorite-toggle span.is-favorite a{color:#faa;border:1px solid #faa;background-color:#fee}.bbp-row-actions #favorite-toggle span.is-favorite a:hover{color:#c88;border-color:#c88;background-color:#fdd}.bbp-row-actions #subscription-toggle a{text-decoration:none;padding:0 3px 1px;color:#7c7;border:1px solid #aca;background-color:#dfd;font-weight:700;font-size:12px}.bbp-row-actions #subscription-toggle a:hover{color:#5a5;border-color:#7c7;background-color:#beb}.bbp-row-actions #subscription-toggle span.is-subscribed a{color:#faa;border:1px solid #faa;background-color:#fee}.bbp-row-actions #subscription-toggle span.is-subscribed a:hover{color:#c88;border-color:#c88;background-color:#fdd}#bbpress-forums .bbp-forum-info .bbp-forum-content,#bbpress-forums p.bbp-topic-meta{font-size:11px;margin:5px 0;padding:0;word-wrap:break-word}#bbpress-forums p.bbp-topic-meta span{white-space:nowrap}.bbp-pagination-count{float:right;border:1px solid transparent}.bbp-pagination-links{float:left;list-style:none;display:inline}.bbp-pagination{float:right;width:100%;margin-bottom:15px}#bbpress-forums .bbp-pagination-links a,#bbpress-forums .bbp-pagination-links span.current{display:block;float:right;font-size:12px;line-height:18px;padding:0 5px;margin-right:5px;border:1px solid #efefef;border-radius:0;background:0 0;color:inherit;text-decoration:none}#bbpress-forums .bbp-pagination-links span.dots{display:block;float:right;padding:1px 4px;margin-right:5px}#bbpress-forums .bbp-topic-pagination{display:inline-block;margin-right:5px;margin-bottom:2px}#bbpress-forums .bbp-topic-pagination a{font-size:10px;line-height:10px;padding:1px 3px;border:1px solid #ddd;color:inherit;text-decoration:none}#bbpress-forums .bbp-pagination-links a:hover,#bbpress-forums .bbp-pagination-links span.current,#bbpress-forums .bbp-topic-pagination a:hover{background:#eee;opacity:.8;border:1px solid #ddd}#bbpress-forums fieldset.bbp-form{clear:right;border:1px solid #eee;padding:10px 20px;margin-bottom:10px}#bbpress-forums fieldset.bbp-form legend{padding:5px;width:auto;border:none}#bbpress-forums fieldset.bbp-form label{margin:0;display:inline-block}#bbp-edit-topic-tag.bbp-form fieldset.bbp-form label,#bbp-login fieldset label,#bbp-lost-pass fieldset label,#bbp-register fieldset label{width:100px}#bbpress-forums fieldset.bbp-form input,#bbpress-forums fieldset.bbp-form p,#bbpress-forums fieldset.bbp-form select,#bbpress-forums fieldset.bbp-form textarea{margin:0 0 8px}textarea#bbp_forum_content,textarea#bbp_reply_content,textarea#bbp_topic_content{width:97%;box-sizing:border-box}textarea#bbp_forum_content{height:210px}#bbpress-forums fieldset.bbp-forum-form-attributes{width:200px;float:left;clear:none;margin-right:25px}#bbpress-forums fieldset select#bbp_forum_id{max-width:200px}.bbp-reply-form,.bbp-topic-form,.bbp-topic-tag-form{clear:right}body.reply-edit .bbp-reply-form div.avatar img,body.single-forum .bbp-topic-form div.avatar img,body.single-reply .bbp-reply-form div.avatar img,body.topic-edit .bbp-topic-form div.avatar img{margin-left:0;padding:10px;border:1px solid #ddd;line-height:0;background-color:#efefef}body.page .bbp-reply-form code,body.page .bbp-topic-form code,body.reply-edit .bbp-reply-form code,body.single-forum .bbp-topic-form code,body.single-topic .bbp-reply-form code,body.topic-edit .bbp-topic-form code{font-size:10px;background-color:#f0fff8;border:1px solid #ceefe1;display:block;padding:8px;margin-top:5px;width:369px}#delete_tag,#merge_tag{display:inline}div.bbp-submit-wrapper{margin-top:15px;float:left;clear:both}p.form-allowed-tags{max-width:100%}#bbpress-forums div.bbp-the-content-wrapper{margin-bottom:10px}#bbpress-forums div.bbp-the-content-wrapper textarea.bbp-the-content{width:100%;margin:0;font-size:12px}#bbpress-forums div.bbp-the-content-wrapper table,#bbpress-forums div.bbp-the-content-wrapper tbody,#bbpress-forums div.bbp-the-content-wrapper td,#bbpress-forums div.bbp-the-content-wrapper tr{border:none;padding:0;margin:0;width:auto;line-height:1}#bbpress-forums div.bbp-the-content-wrapper input[type=button]{padding:5px 7px;margin:0 0 0 -1px;line-height:1;border:1px solid transparent;background-color:transparent;box-shadow:none;text-shadow:none;border-radius:0;text-transform:uppercase;font-size:11px}#bbpress-forums div.bbp-the-content-wrapper input[type=button]:hover{border-color:rgba(0,0,0,.1);background-color:rgba(255,255,255,.5)}#bbpress-forums div.bbp-the-content-wrapper div.quicktags-toolbar{padding:5px;min-height:26px}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar{padding:4px 4px 8px}#bbpress-forums div.wp-editor-container{margin:0;padding:0;line-height:0}#bbpress-forums div.bbp-the-content-wrapper td.mceStatusbar{line-height:16px}#bbpress-forums #bbp-your-profile fieldset{padding:20px 20px 0}#bbpress-forums #bbp-your-profile fieldset div{margin-bottom:20px;float:right;width:100%;clear:right}#bbpress-forums #bbp-your-profile fieldset select{margin-bottom:0;width:60%;background-color:#f9f9f9;border:1px solid #ddd}#bbpress-forums #bbp-your-profile fieldset input,#bbpress-forums #bbp-your-profile fieldset textarea{margin-bottom:0;width:60%;background-color:#f9f9f9;border:1px solid #ddd;box-shadow:none;border-radius:0}#bbpress-forums #bbp-your-profile fieldset input:focus,#bbpress-forums #bbp-your-profile fieldset textarea:focus{border:1px solid #ccc;box-shadow:inset -1px 1px 1px rgba(0,0,0,.1);outline-color:rgba(240,255,240,.1)}#bbpress-forums #bbp-your-profile fieldset.bbp-form input.checkbox{width:auto}#bbpress-forums #bbp-your-profile fieldset legend{display:none}#bbpress-forums #bbp-your-profile fieldset label[for]{float:right;width:20%;padding:5px 0 5px 20px;text-align:left;cursor:pointer}#bbpress-forums #bbp-your-profile fieldset dl label[for]{text-align:right;width:60%}#bbpress-forums #bbp-your-profile fieldset p.description{margin:5px 20% 0 0;font-size:12px;font-style:italic;float:right;clear:right;width:60%;padding:5px 8px;border:#cee1ef 1px solid;background-color:#f0f8ff}#bbpress-forums #bbp-your-profile fieldset fieldset{margin:0;border:none;padding:0;clear:none;float:none}#bbpress-forums #bbp-your-profile fieldset fieldset.capabilities dl{margin:0}#bbpress-forums #bbp-your-profile fieldset.submit button{float:left}#bbpress-forums #bbp-your-profile fieldset fieldset.password{width:60%;display:inline}#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-button-wrapper,#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-input-wrapper{width:100%;margin:0;display:inline-block}#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-button-wrapper button{width:46%;margin:4% 2%;box-sizing:border-box;display:inline-block}#bbpress-forums #bbp-your-profile fieldset fieldset.password input,#bbpress-forums #bbp-your-profile fieldset fieldset.passwword textarea{width:100%}#bbpress-forums #bbp-your-profile fieldset fieldset.password button .dashicons{display:none}#bbpress-forums #bbp-your-profile fieldset fieldset.password span.description{margin-right:0;margin-bottom:20px}#bbpress-forums #password #pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:0;padding:8px;text-align:center;box-sizing:border-box;display:inline-block}#bbpress-forums #password #pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#bbpress-forums #password #pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#bbpress-forums #password #pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#bbpress-forums #password #pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#bbpress-forums #password #pass1-text.short,#bbpress-forums #password #pass1.short{border-color:#e35b5b}#bbpress-forums #password #pass1-text.bad,#bbpress-forums #password#pass1.bad{border-color:#f78b53}#bbpress-forums #password #pass1-text.good,#bbpress-forums #password #pass1.good{border-color:#ffc733}#bbpress-forums #password #pass1-text.strong,#bbpress-forums #password #pass1.strong{border-color:#83c373}#bbpress-forums .indicator-hint{padding-top:8px}#bbpress-forums #pass1-text,#bbpress-forums .pw-weak,#bbpress-forums .show-password #pass1{display:none}#bbpress-forums .show-password #pass1-text{display:inline-block}div.bbp-template-notice,div.indicator-hint{border-width:1px;border-style:solid;padding:0 .6em;margin:5px 0 15px;border-radius:3px;background-color:#ffffe0;border-color:#e6db55;color:#000;clear:both}div.bbp-template-notice a{color:#555;text-decoration:none}div.bbp-template-notice a:hover{color:#000}div.bbp-template-notice.info{border:#cee1ef 1px solid;background-color:#f0f8ff}div.bbp-template-notice.important{border:#e6db55 1px solid;background-color:#fffbcc}div.bbp-template-notice.error,div.bbp-template-notice.warning{background-color:#ffebe8;border-color:#c00}div.bbp-template-notice.error a,div.bbp-template-notice.warning a{color:#c00}div.bbp-template-notice li,div.bbp-template-notice p{margin:.5em 0 6px!important;padding:2px;font-size:12px;line-height:1.4}.bbp-forum-content ul.sticky,.bbp-topics ul.sticky,.bbp-topics ul.super-sticky,.bbp-topics-front ul.super-sticky{background-color:#ffffe0!important;font-size:1.1em}#bbpress-forums .bbp-reply-content ul.bbp-reply-revision-log,#bbpress-forums .bbp-reply-content ul.bbp-topic-revision-log,#bbpress-forums .bbp-topic-content ul.bbp-topic-revision-log{border-top:1px dotted #ddd;width:100%;margin:0;padding:8px 0 0;font-size:11px;color:#aaa}#bbpress-forums .bbp-reply-content ul.bbp-reply-revision-log li,#bbpress-forums .bbp-reply-content ul.bbp-topic-revision-log li,#bbpress-forums .bbp-topic-content ul.bbp-topic-revision-log li{list-style-type:none}.bbp-login-form fieldset legend{display:none}.bbp-login-form .bbp-email input,.bbp-login-form .bbp-password input,.bbp-login-form .bbp-username input{padding:5px}.bbp-login-form label{width:140px;display:inline-block}#sidebar .bbp-login-form label{width:70px}.bbp-login-form .bbp-email,.bbp-login-form .bbp-password,.bbp-login-form .bbp-remember-me,.bbp-login-form .bbp-submit-wrapper,.bbp-login-form .bbp-username{margin-top:10px}.bbp-login-form .bbp-submit-wrapper{text-align:left}.bbp-login-form .bbp-login-links a{float:right;clear:right}.bbp-logged-in img.avatar{float:right;margin:0 0 0 15px}.bbp-logged-in h4{font-weight:700;font-size:1.3em;clear:none;margin-bottom:10px}#bbpress-forums img.avatar{box-shadow:none;display:inline-block}#bbpress-forums .widget_display_replies img.avatar,#bbpress-forums .widget_display_topics img.avatar,#bbpress-forums div.bbp-template-notice img.avatar,#bbpress-forums p.bbp-topic-meta img.avatar,#bbpress-forums ul.bbp-reply-revision-log img.avatar,#bbpress-forums ul.bbp-topic-revision-log img.avatar{float:none;vertical-align:middle;border:3px double #ddd}fieldset div.avatar{float:left}.activity-list li.bbp_reply_create .activity-content .activity-inner,.activity-list li.bbp_topic_create .activity-content .activity-inner{border-right:2px solid #eaeaea;margin-right:5px;padding-right:10px}#bbpress-forums h1{clear:none;font-size:1.8em;line-height:1;padding-bottom:10px}#bbpress-forums #bbp-user-wrapper{float:right;width:100%}#bbpress-forums .bbp-user-section{overflow:auto;clear:left}#bbpress-forums #bbp-user-wrapper h2.entry-title{font-size:1.4em;margin:0;padding-bottom:10px;padding-top:0;clear:none}#bbpress-forums #bbp-user-wrapper fieldset.bbp-form,#bbpress-forums #bbp-user-wrapper ul.bbp-forums,#bbpress-forums #bbp-user-wrapper ul.bbp-lead-topic,#bbpress-forums #bbp-user-wrapper ul.bbp-replies,#bbpress-forums #bbp-user-wrapper ul.bbp-topics{clear:none}#bbpress-forums #bbp-single-user-details{margin:0;width:150px;float:right;overflow:hidden}#bbpress-forums #bbp-single-user-details #bbp-user-avatar{margin:0;width:150px}#bbpress-forums #bbp-single-user-details #bbp-user-avatar img.avatar{border:none;height:150px;padding:0;margin:0 0 20px;width:150px}#bbpress-forums #bbp-single-user-details #bbp-user-description{float:none;margin-right:180px}#bbpress-forums #bbp-single-user-details #bbp-user-navigation{float:none;margin:0}#bbpress-forums #bbp-single-user-details #bbp-user-navigation li{margin:0}#bbpress-forums #bbp-single-user-details #bbp-user-navigation a{padding:5px 8px;display:block;border:1px solid transparent;text-decoration:none}#bbpress-forums #bbp-single-user-details #bbp-user-navigation li.current a{background:#eee;opacity:.8}#bbpress-forums #bbp-user-body{margin-right:180px}body.my-account #bbpress-forums{border-top:none;padding-top:0;margin-bottom:0}#bbpress-forums dl.bbp-user-capabilities{display:inline-block;vertical-align:top}#bbpress-forums dl.bbp-user-capabilities dt{margin:0 0 10px;text-transform:capitalize}#bbpress-forums dl.bbp-user-capabilities dd{margin:0;padding:0}#bbpress-forums div.row-actions{font-size:11px;visibility:hidden}#bbpress-forums li:hover>div.row-actions{visibility:visible}.bbp-alert-outer{height:100%;width:100%;top:0;right:0;position:fixed;background-color:rgba(0,0,0,.2);z-index:99999}.bbp-alert-inner{width:350px;text-align:center;background:#fff;position:fixed;top:50%;right:50%;margin-top:-75px;margin-right:-185px;border-radius:3px;border:1px solid #aaa;padding:15px 10px 10px}.bbp-alert-outer .bbp-alert-inner p{margin:10px 0}.bbp-alert-actions a{padding:5px 20px;text-decoration:none}@media only screen and (max-width:480px){#bbpress-forums div.bbp-topic-tags{clear:right;float:right}div.bbp-search-form button,div.bbp-search-form input{font-size:11px;padding:2px}li.bbp-forum-info,li.bbp-topic-title{width:45%}li.bbp-forum-reply-count,li.bbp-forum-topic-count,li.bbp-topic-reply-count,li.bbp-topic-voice-count{width:15%}span.bbp-reply-post-date,span.bbp-topic-post-date{float:right}span.bbp-admin-links{clear:right;float:right}#bbpress-forums .bbp-forums-list li,#bbpress-forums .bbp-forums-list span{display:block;font-size:11px}#bbpress-forums .bbp-body div.bbp-reply-author,#bbpress-forums .bbp-body div.bbp-topic-author{margin:-15px 10px 10px;min-height:100px;padding-right:80px;position:relative;text-align:right;width:100%}#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{clear:none;display:inline-block;margin-right:0;word-wrap:break-word}#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{position:absolute;top:15px;right:0;width:60px;height:auto}#bbpress-forums div.bbp-reply-author .bbp-author-role,#bbpress-forums div.bbp-topic-author .bbp-author-role{font-size:12px;font-style:normal}#bbpress-forums .bbp-body div.bbp-reply-content,#bbpress-forums .bbp-body div.bbp-topic-content{clear:both;margin:10px;padding:0}#bbpress-forums div.bbp-reply-content p,#bbpress-forums div.bbp-topic-content p{margin-bottom:1em}div.bbp-submit-wrapper{float:right}#bbpress-forums fieldset.bbp-form{padding:0 10px 10px}#bbpress-forums #bbp-user-body{clear:both;margin-right:0;word-wrap:break-word}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:14px}}@media only screen and (max-width:320px){#bbpress-forums div.bbp-search-form{margin-bottom:10px}#bbpress-forums li.bbp-body li.bbp-forum-info,#bbpress-forums li.bbp-body li.bbp-topic-title,#bbpress-forums li.bbp-header li.bbp-forum-info,#bbpress-forums li.bbp-header li.bbp-topic-title{width:100%}#bbpress-forums li.bbp-header li.bbp-forum-info,#bbpress-forums li.bbp-header li.bbp-topic-title{text-align:center;text-transform:uppercase}#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count,#bbpress-forums li.bbp-header li.bbp-forum-reply-count,#bbpress-forums li.bbp-header li.bbp-forum-topic-count,#bbpress-forums li.bbp-header li.bbp-topic-reply-count,#bbpress-forums li.bbp-header li.bbp-topic-voice-count{width:20%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{width:58%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count{margin-top:7px}#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{font-size:10px}#bbpress-forums li.bbp-header div.bbp-reply-author,#bbpress-forums li.bbp-header div.bbp-search-author,#bbpress-forums li.bbp-header div.bbp-topic-author{text-align:right;width:25%}#bbpress-forums li.bbp-header div.bbp-reply-content,#bbpress-forums li.bbp-header div.bbp-search-content,#bbpress-forums li.bbp-header div.bbp-topic-content{margin-right:25%}#bbpress-forums div.bbp-template-notice img.avatar,#bbpress-forums p.bbp-topic-meta img.avatar{width:14px;height:auto}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar{padding:1px}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar td{width:20px;height:20px}#bbpress-forums div.wp-editor-container{width:100%;overflow:auto}#bbpress-forums input#bbp_topic_tags,#bbpress-forums input#bbp_topic_title{width:95%}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:14px}}@media only screen and (max-width:240px){#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count,#bbpress-forums li.bbp-footer div.bbp-reply-author,#bbpress-forums li.bbp-footer div.bbp-search-author,#bbpress-forums li.bbp-footer div.bbp-topic-author,#bbpress-forums li.bbp-header li.bbp-forum-reply-count,#bbpress-forums li.bbp-header li.bbp-forum-topic-count,#bbpress-forums li.bbp-header li.bbp-topic-reply-count,#bbpress-forums li.bbp-header li.bbp-topic-voice-count{width:45%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{clear:both;width:100%}#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{text-align:center}#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header div.bbp-reply-author,#bbpress-forums li.bbp-header div.bbp-reply-content,#bbpress-forums li.bbp-header div.bbp-search-author,#bbpress-forums li.bbp-header div.bbp-search-content,#bbpress-forums li.bbp-header div.bbp-topic-author,#bbpress-forums li.bbp-header div.bbp-topic-content{margin-right:0;text-align:right}#bbpress-forums li.bbp-body li.bbp-topic-freshness p.bbp-topic-meta{display:inline-block}#bbpress-forums li.bbp-header{overflow:hidden}#bbpress-forums li.bbp-footer div.bbp-reply-content,#bbpress-forums li.bbp-footer div.bbp-search-content,#bbpress-forums li.bbp-footer div.bbp-topic-content{display:inline-block;margin-right:0}#bbpress-forums li.bbp-body div.bbp-reply-author,#bbpress-forums li.bbp-body div.bbp-topic-author{min-height:60px;padding-right:60px}#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{width:40px;height:auto}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:12px}}
1
+ .hidden,.js .hide-if-js{display:none}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0;word-wrap:normal!important}#bbpress-forums{background:0 0;clear:both;margin-bottom:20px;overflow:hidden;font-size:12px;line-height:18px}#bbpress-forums a,#bbpress-forums a:hover{box-shadow:none;border:none;transition:none}#bbpress-forums hr{margin:0 0 24px}#bbpress-forums div.even,#bbpress-forums ul.even{background-color:#fff}#bbpress-forums div.odd,#bbpress-forums ul.odd{background-color:#fbfbfb}body.reply-edit .reply{float:none}#bbpress-forums div.reply{height:auto;width:100%}#bbpress-forums div.bbp-forum-header,#bbpress-forums div.bbp-reply-header,#bbpress-forums div.bbp-topic-header{background-color:#f4f4f4}#bbpress-forums .status-spam.even,#bbpress-forums .status-trash.even{background-color:#fee}#bbpress-forums .status-spam.odd,#bbpress-forums .status-trash.odd{background-color:#fdd}#bbpress-forums .status-pending.even,#bbpress-forums .status-pending.odd,#bbpress-forums ul.status-pending a{background-color:#fef7f1}#bbpress-forums ul.status-closed,#bbpress-forums ul.status-closed a{color:#ccc}#bbpress-forums ul{background:0 0;list-style:none;margin:0;padding:0}#bbpress-forums ul.bbp-threaded-replies{margin-right:50px}#bbpress-forums li{background:0 0;margin:0;list-style:none}#bbpress-forums ul.bbp-forums,#bbpress-forums ul.bbp-lead-topic,#bbpress-forums ul.bbp-replies,#bbpress-forums ul.bbp-search-results,#bbpress-forums ul.bbp-topics{font-size:12px;overflow:hidden;border:1px solid #eee;margin-bottom:20px;clear:both}#bbpress-forums li.bbp-body,#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{clear:both}#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{background:#f3f3f3;border-top:1px solid #eee;font-weight:700;padding:8px;text-align:center}#bbpress-forums li.bbp-header{background:#eaeaea}#bbpress-forums li.bbp-header ul{overflow:hidden}#bbpress-forums .bbp-forums-list{margin:0 7px 0 0;padding-right:12px;border-right:1px solid #ddd}#bbpress-forums .bbp-forums-list .bbp-forum{display:inline;font-size:11px}#bbpress-forums .bbp-forums-list .bbp-forum.css-sep:not(:last-child)::after{content:", "}#bbpress-forums li.bbp-footer p{margin:0;line-height:1}li.bbp-forum-info,li.bbp-topic-title{float:right;text-align:right;width:55%}li.bbp-forum-reply-count,li.bbp-forum-topic-count,li.bbp-topic-reply-count,li.bbp-topic-voice-count{float:right;text-align:center;width:10%}li.bbp-forum-freshness,li.bbp-topic-freshness{text-align:center;float:right;width:22%}#bbpress-forums li.bbp-body ul.forum,#bbpress-forums li.bbp-body ul.topic{border-top:1px solid #eee;overflow:hidden;padding:8px}#bbpress-forums #favorite-toggle,#bbpress-forums #subscription-toggle{float:left}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{background:0 0;border:none;font-size:16px;line-height:1;margin:8px 0;padding:0;text-transform:none}#bbpress-forums div.bbp-forum-author,#bbpress-forums div.bbp-reply-author,#bbpress-forums div.bbp-topic-author{float:right;text-align:center;width:115px}#bbpress-forums div.bbp-forum-author img.avatar,#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{border:none;max-width:80px;padding:0;margin:12px auto 0;float:none}#bbpress-forums div.bbp-forum-author .bbp-author-name,#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{margin:0 12px;word-wrap:break-word;display:inline-block}#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{clear:right;display:block}#bbpress-forums div.bbp-forum-author .bbp-author-role,#bbpress-forums div.bbp-reply-author .bbp-author-role,#bbpress-forums div.bbp-topic-author .bbp-author-role{font-size:11px;font-style:italic}#bbpress-forums li.bbp-footer .bbp-forum-author,#bbpress-forums li.bbp-footer .bbp-reply-author,#bbpress-forums li.bbp-footer .bbp-search-author,#bbpress-forums li.bbp-footer .bbp-topic-author,#bbpress-forums li.bbp-header .bbp-forum-author,#bbpress-forums li.bbp-header .bbp-reply-author,#bbpress-forums li.bbp-header .bbp-search-author,#bbpress-forums li.bbp-header .bbp-topic-author{float:right;margin:0;padding:0;width:120px}#bbpress-forums li.bbp-footer .bbp-forum-content,#bbpress-forums li.bbp-footer .bbp-reply-content,#bbpress-forums li.bbp-footer .bbp-search-content,#bbpress-forums li.bbp-footer .bbp-topic-content,#bbpress-forums li.bbp-header .bbp-forum-content,#bbpress-forums li.bbp-header .bbp-reply-content,#bbpress-forums li.bbp-header .bbp-search-content,#bbpress-forums li.bbp-header .bbp-topic-content{margin-right:140px;padding:0;text-align:right}div.bbp-forum-header,div.bbp-reply-header,div.bbp-topic-header,li.bbp-body div.hentry{margin:0;overflow:hidden;padding:8px}div.bbp-forum-header,div.bbp-reply-header,div.bbp-topic-header{border-top:1px solid #ddd;clear:both}span.bbp-author-ip{font-size:11px;font-weight:700;word-wrap:break-word;color:#747474}#bbpress-forums div.bbp-forum-content,#bbpress-forums div.bbp-reply-content,#bbpress-forums div.bbp-topic-content{margin-right:130px;padding:12px 0 12px 12px;text-align:right;position:relative}#bbpress-forums div.bbp-forum-content::after,#bbpress-forums div.bbp-reply-content::after,#bbpress-forums div.bbp-topic-content::after{clear:both;content:".";display:block;float:none;height:0;font-size:0;visibility:hidden}#bbpress-forums div.bbp-reply-content a,#bbpress-forums div.bbp-topic-content a{background:0 0;border:none;display:inline;font-weight:400;margin:0;padding:0}#bbpress-forums div.bbp-reply-content a.bbp-user-mention,#bbpress-forums div.bbp-topic-content a.bbp-user-mention{background:0 0;border:none;text-decoration:none;text-shadow:none;display:inline;font-weight:600;margin:0;padding:0}#bbpress-forums div.bbp-reply-content h1,#bbpress-forums div.bbp-reply-content h2,#bbpress-forums div.bbp-reply-content h3,#bbpress-forums div.bbp-reply-content h4,#bbpress-forums div.bbp-reply-content h5,#bbpress-forums div.bbp-reply-content h6,#bbpress-forums div.bbp-topic-content h1,#bbpress-forums div.bbp-topic-content h2,#bbpress-forums div.bbp-topic-content h3,#bbpress-forums div.bbp-topic-content h4,#bbpress-forums div.bbp-topic-content h5,#bbpress-forums div.bbp-topic-content h6{clear:none;line-height:1;margin:24px 0;padding:0}#bbpress-forums div.bbp-reply-content img,#bbpress-forums div.bbp-topic-content img{max-width:100%;height:auto}#bbpress-forums div.bbp-reply-content ol,#bbpress-forums div.bbp-reply-content ul,#bbpress-forums div.bbp-topic-content ol,#bbpress-forums div.bbp-topic-content ul{margin:0 15px 15px;padding:0}#bbpress-forums div.bbp-reply-content ul li,#bbpress-forums div.bbp-topic-content ul li{list-style-type:disc}#bbpress-forums div.bbp-reply-content ol li,#bbpress-forums div.bbp-topic-content ol li{list-style-type:decimal}#bbpress-forums div.bbp-reply-content ol li li,#bbpress-forums div.bbp-topic-content ol li li{list-style-type:lower-alpha}#bbpress-forums div.bbp-reply-content ol li li li,#bbpress-forums div.bbp-topic-content ol li li li{list-style-type:upper-roman}#bbpress-forums div.bbp-reply-content code,#bbpress-forums div.bbp-reply-content pre,#bbpress-forums div.bbp-topic-content code,#bbpress-forums div.bbp-topic-content pre{font-family:Inconsolata,Consolas,Monaco,"Lucida Console",monospace;display:inline-block;background-color:#f9f9f9;border:1px solid #ddd;padding:0 5px;max-width:95%;vertical-align:middle;margin-top:-3px;overflow-x:auto}#bbpress-forums div.bbp-reply-content pre,#bbpress-forums div.bbp-topic-content pre{display:block;line-height:18px;margin:0 0 24px;padding:5px 10px;white-space:pre;overflow:auto}#bbpress-forums div.bbp-reply-content pre code,#bbpress-forums div.bbp-topic-content pre code{display:block;border:none;padding:0;margin:0;background-color:transparent;overflow-wrap:normal;overflow:auto;max-width:100%}#bbpress-forums div.bbp-reply-content iframe.wp-embedded-content,#bbpress-forums div.bbp-topic-content iframe.wp-embedded-content{position:relative}#bbpress-forums div.bbp-reply-to{margin-right:130px;padding:12px 0 12px 12px;text-align:left}#bbpress-forums div#bbp-cancel-reply-to{text-align:left}div.bbp-breadcrumb{float:right}div.bbp-breadcrumb,div.bbp-topic-tags{font-size:12px}#bbpress-forums div.bbp-breadcrumb p,#bbpress-forums div.bbp-topic-tags p{margin-bottom:10px}#bbpress-forums div.bbp-topic-tags{float:left;clear:both}#bbp-topic-hot-tags{clear:both}#bbpress-forums #bbp-search-form{clear:right}#bbpress-forums #bbp-search-form .hidden{height:0;width:0;overflow:hidden;position:absolute;background:0 0;right:-999em}#bbpress-forums #bbp-search-form #bbp_search{display:inline-block;width:auto}#bbpress-forums div.bbp-search-form{float:left}span.bbp-admin-links{float:left;color:#ddd}span.bbp-admin-links a{color:#707070;font-weight:400;font-size:10px;text-transform:uppercase;text-decoration:none}fieldset span.bbp-admin-links{float:right}tr td span.bbp-admin-links a:hover{color:#ff4b33}td.bbp-topic-admin-links,td.bbp-topic-counts{width:50%}.bbp-forum-header a.bbp-forum-permalink,.bbp-reply-header a.bbp-reply-permalink,.bbp-topic-header a.bbp-topic-permalink{float:left;margin-right:10px;color:#707070}.bbp-row-actions #favorite-toggle a{text-decoration:none;padding:0 3px 1px;color:#7c7;border:1px solid #aca;background-color:#dfd;font-weight:700;font-size:12px}.bbp-row-actions #favorite-toggle a:hover{color:#5a5;border-color:#7c7;background-color:#beb}.bbp-row-actions #favorite-toggle span.is-favorite a{color:#faa;border:1px solid #faa;background-color:#fee}.bbp-row-actions #favorite-toggle span.is-favorite a:hover{color:#c88;border-color:#c88;background-color:#fdd}.bbp-row-actions #subscription-toggle a{text-decoration:none;padding:0 3px 1px;color:#7c7;border:1px solid #aca;background-color:#dfd;font-weight:700;font-size:12px}.bbp-row-actions #subscription-toggle a:hover{color:#5a5;border-color:#7c7;background-color:#beb}.bbp-row-actions #subscription-toggle span.is-subscribed a{color:#faa;border:1px solid #faa;background-color:#fee}.bbp-row-actions #subscription-toggle span.is-subscribed a:hover{color:#c88;border-color:#c88;background-color:#fdd}#bbpress-forums .bbp-forum-info .bbp-forum-content,#bbpress-forums p.bbp-topic-meta{font-size:11px;margin:5px 0;padding:0;word-wrap:break-word}#bbpress-forums p.bbp-topic-meta span{white-space:nowrap}.bbp-pagination-count{float:right;border:1px solid transparent}.bbp-pagination-links{float:left;list-style:none;display:inline}.bbp-pagination{float:right;width:100%;margin-bottom:15px}#bbpress-forums .bbp-pagination-links a,#bbpress-forums .bbp-pagination-links span.current{display:block;float:right;font-size:12px;line-height:18px;padding:0 5px;margin-right:5px;border:1px solid #efefef;border-radius:0;background:0 0;color:inherit;text-decoration:none}#bbpress-forums .bbp-pagination-links span.dots{display:block;float:right;padding:1px 4px;margin-right:5px}#bbpress-forums .bbp-topic-pagination{display:inline-block;margin-right:5px;margin-bottom:2px}#bbpress-forums .bbp-topic-pagination a{font-size:10px;line-height:10px;padding:1px 3px;border:1px solid #ddd;color:inherit;text-decoration:none}#bbpress-forums .bbp-pagination-links a:hover,#bbpress-forums .bbp-pagination-links span.current,#bbpress-forums .bbp-topic-pagination a:hover{background:#eee;opacity:.8;border:1px solid #ddd}#bbpress-forums fieldset.bbp-form{clear:right;border:1px solid #eee;padding:10px 20px;margin-bottom:10px}#bbpress-forums fieldset.bbp-form legend{padding:5px;width:auto;border:none}#bbpress-forums fieldset.bbp-form label{margin:0;display:inline-block}#bbp-edit-topic-tag.bbp-form fieldset.bbp-form label,#bbp-login fieldset label,#bbp-lost-pass fieldset label,#bbp-register fieldset label{width:100px}#bbpress-forums fieldset.bbp-form input,#bbpress-forums fieldset.bbp-form p,#bbpress-forums fieldset.bbp-form select,#bbpress-forums fieldset.bbp-form textarea{margin:0 0 8px}textarea#bbp_forum_content,textarea#bbp_reply_content,textarea#bbp_topic_content{width:97%;box-sizing:border-box}textarea#bbp_forum_content{height:210px}#bbpress-forums fieldset.bbp-forum-form-attributes{width:200px;float:left;clear:none;margin-right:25px}#bbpress-forums fieldset select#bbp_forum_id{max-width:200px}.bbp-reply-form,.bbp-topic-form,.bbp-topic-tag-form{clear:right}body.reply-edit .bbp-reply-form div.avatar img,body.single-forum .bbp-topic-form div.avatar img,body.single-reply .bbp-reply-form div.avatar img,body.topic-edit .bbp-topic-form div.avatar img{margin-left:0;padding:10px;border:1px solid #ddd;line-height:0;background-color:#efefef}body.page .bbp-reply-form code,body.page .bbp-topic-form code,body.reply-edit .bbp-reply-form code,body.single-forum .bbp-topic-form code,body.single-topic .bbp-reply-form code,body.topic-edit .bbp-topic-form code{font-size:10px;background-color:#f0fff8;border:1px solid #ceefe1;display:block;padding:8px;margin-top:5px;width:369px}#delete_tag,#merge_tag{display:inline}div.bbp-submit-wrapper{margin-top:15px;float:left;clear:both}p.form-allowed-tags{max-width:100%}#bbpress-forums div.bbp-the-content-wrapper{margin-bottom:10px}#bbpress-forums div.bbp-the-content-wrapper textarea.bbp-the-content{width:100%;margin:0;font-size:12px}#bbpress-forums div.bbp-the-content-wrapper table,#bbpress-forums div.bbp-the-content-wrapper tbody,#bbpress-forums div.bbp-the-content-wrapper td,#bbpress-forums div.bbp-the-content-wrapper tr{border:none;padding:0;margin:0;width:auto;line-height:1}#bbpress-forums div.bbp-the-content-wrapper input[type=button]{padding:5px 7px;margin:0 0 0 -1px;line-height:1;border:1px solid transparent;background-color:transparent;box-shadow:none;text-shadow:none;border-radius:0;text-transform:uppercase;font-size:11px}#bbpress-forums div.bbp-the-content-wrapper input[type=button]:hover{border-color:rgba(0,0,0,.1);background-color:rgba(255,255,255,.5)}#bbpress-forums div.bbp-the-content-wrapper div.quicktags-toolbar{padding:5px;min-height:26px}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar{padding:4px 4px 8px}#bbpress-forums div.wp-editor-container{margin:0;padding:0;line-height:0}#bbpress-forums div.bbp-the-content-wrapper td.mceStatusbar{line-height:16px}#bbpress-forums #bbp-your-profile fieldset{padding:20px 20px 0}#bbpress-forums #bbp-your-profile fieldset div{margin-bottom:20px;float:right;width:100%;clear:right}#bbpress-forums #bbp-your-profile fieldset select{margin-bottom:0;width:60%;background-color:#f9f9f9;border:1px solid #ddd}#bbpress-forums #bbp-your-profile fieldset input,#bbpress-forums #bbp-your-profile fieldset textarea{margin-bottom:0;width:60%;background-color:#f9f9f9;border:1px solid #ddd;box-shadow:none;border-radius:0}#bbpress-forums #bbp-your-profile fieldset input:focus,#bbpress-forums #bbp-your-profile fieldset textarea:focus{border:1px solid #ccc;box-shadow:inset -1px 1px 1px rgba(0,0,0,.1);outline-color:rgba(240,255,240,.1)}#bbpress-forums #bbp-your-profile fieldset.bbp-form input.checkbox{width:auto}#bbpress-forums #bbp-your-profile fieldset legend{display:none}#bbpress-forums #bbp-your-profile fieldset label[for]{float:right;width:20%;padding:5px 0 5px 20px;text-align:left;cursor:pointer}#bbpress-forums #bbp-your-profile fieldset dl label[for]{text-align:right;width:60%}#bbpress-forums #bbp-your-profile fieldset p.description{margin:5px 20% 0 0;font-size:12px;font-style:italic;float:right;clear:right;width:60%;padding:5px 8px;border:#cee1ef 1px solid;background-color:#f0f8ff}#bbpress-forums #bbp-your-profile fieldset fieldset{margin:0;border:none;padding:0;clear:none;float:none}#bbpress-forums #bbp-your-profile fieldset fieldset.capabilities dl{margin:0}#bbpress-forums #bbp-your-profile fieldset.submit button{float:left}#bbpress-forums #bbp-your-profile fieldset fieldset.password{width:60%;display:inline}#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-button-wrapper,#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-input-wrapper{width:100%;margin:0;display:inline-block}#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-button-wrapper button{width:46%;margin:4% 2%;box-sizing:border-box;display:inline-block}#bbpress-forums #bbp-your-profile fieldset fieldset.password input,#bbpress-forums #bbp-your-profile fieldset fieldset.passwword textarea{width:100%}#bbpress-forums #bbp-your-profile fieldset fieldset.password button .dashicons{display:none}#bbpress-forums #bbp-your-profile fieldset fieldset.password span.description{margin-right:0;margin-bottom:20px}#bbpress-forums #password #pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:0;padding:8px;text-align:center;box-sizing:border-box;display:inline-block}#bbpress-forums #password #pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#bbpress-forums #password #pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#bbpress-forums #password #pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#bbpress-forums #password #pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#bbpress-forums #password #pass1-text.short,#bbpress-forums #password #pass1.short{border-color:#e35b5b}#bbpress-forums #password #pass1-text.bad,#bbpress-forums #password#pass1.bad{border-color:#f78b53}#bbpress-forums #password #pass1-text.good,#bbpress-forums #password #pass1.good{border-color:#ffc733}#bbpress-forums #password #pass1-text.strong,#bbpress-forums #password #pass1.strong{border-color:#83c373}#bbpress-forums .indicator-hint{padding-top:8px}#bbpress-forums #pass1-text,#bbpress-forums .pw-weak,#bbpress-forums .show-password #pass1{display:none}#bbpress-forums .show-password #pass1-text{display:inline-block}div.bbp-template-notice,div.indicator-hint{border-width:1px;border-style:solid;padding:0 .6em;margin:5px 0 15px;border-radius:3px;background-color:#ffffe0;border-color:#e6db55;color:#000;clear:both}div.bbp-template-notice a{color:#555;text-decoration:none}div.bbp-template-notice a:hover{color:#000}div.bbp-template-notice.info{border:#cee1ef 1px solid;background-color:#f0f8ff}div.bbp-template-notice.important{border:#e6db55 1px solid;background-color:#fffbcc}div.bbp-template-notice.error,div.bbp-template-notice.warning{background-color:#ffebe8;border-color:#c00}div.bbp-template-notice.error a,div.bbp-template-notice.warning a{color:#c00}div.bbp-template-notice li,div.bbp-template-notice p{margin:.5em 0 6px!important;padding:2px;font-size:12px;line-height:1.4}.bbp-forum-content ul.sticky,.bbp-topics ul.sticky,.bbp-topics ul.super-sticky,.bbp-topics-front ul.super-sticky{background-color:#ffffe0!important;font-size:1.1em}#bbpress-forums .bbp-reply-content ul.bbp-reply-revision-log,#bbpress-forums .bbp-reply-content ul.bbp-topic-revision-log,#bbpress-forums .bbp-topic-content ul.bbp-topic-revision-log{border-top:1px dotted #ddd;width:100%;margin:0;padding:8px 0 0;font-size:11px;color:#aaa}#bbpress-forums .bbp-reply-content ul.bbp-reply-revision-log li,#bbpress-forums .bbp-reply-content ul.bbp-topic-revision-log li,#bbpress-forums .bbp-topic-content ul.bbp-topic-revision-log li{list-style-type:none}.bbp-login-form fieldset legend{display:none}.bbp-login-form .bbp-email input,.bbp-login-form .bbp-password input,.bbp-login-form .bbp-username input{padding:5px}.bbp-login-form label{width:140px;display:inline-block}#sidebar .bbp-login-form label{width:70px}.bbp-login-form .bbp-email,.bbp-login-form .bbp-password,.bbp-login-form .bbp-remember-me,.bbp-login-form .bbp-submit-wrapper,.bbp-login-form .bbp-username{margin-top:10px}.bbp-login-form .bbp-submit-wrapper{text-align:left}.bbp-login-form .bbp-login-links a{float:right;clear:right}.bbp-logged-in img.avatar{float:right;margin:0 0 0 15px}.bbp-logged-in h4{font-weight:700;font-size:1.3em;clear:none;margin-bottom:10px}#bbpress-forums img.avatar{box-shadow:none;display:inline-block}#bbpress-forums .widget_display_replies img.avatar,#bbpress-forums .widget_display_topics img.avatar,#bbpress-forums div.bbp-template-notice img.avatar,#bbpress-forums p.bbp-topic-meta img.avatar,#bbpress-forums ul.bbp-reply-revision-log img.avatar,#bbpress-forums ul.bbp-topic-revision-log img.avatar{float:none;vertical-align:middle;border:3px double #ddd}fieldset div.avatar{float:left}.activity-list li.bbp_reply_create .activity-content .activity-inner,.activity-list li.bbp_topic_create .activity-content .activity-inner{border-right:2px solid #eaeaea;margin-right:5px;padding-right:10px}#bbpress-forums h1{clear:none;font-size:1.8em;line-height:1;padding-bottom:10px}#bbpress-forums #bbp-user-wrapper{float:right;width:100%}#bbpress-forums .bbp-user-section{overflow:auto;clear:left}#bbpress-forums #bbp-user-wrapper h2.entry-title{font-size:1.4em;margin:0;padding-bottom:10px;padding-top:0;clear:none}#bbpress-forums #bbp-user-wrapper fieldset.bbp-form,#bbpress-forums #bbp-user-wrapper ul.bbp-forums,#bbpress-forums #bbp-user-wrapper ul.bbp-lead-topic,#bbpress-forums #bbp-user-wrapper ul.bbp-replies,#bbpress-forums #bbp-user-wrapper ul.bbp-topics{clear:none}#bbpress-forums #bbp-single-user-details{margin:0;width:150px;float:right;overflow:hidden}#bbpress-forums #bbp-single-user-details #bbp-user-avatar{margin:0;width:150px}#bbpress-forums #bbp-single-user-details #bbp-user-avatar img.avatar{border:none;height:150px;padding:0;margin:0 0 20px;width:150px}#bbpress-forums #bbp-single-user-details #bbp-user-description{float:none;margin-right:180px}#bbpress-forums #bbp-single-user-details #bbp-user-navigation{float:none;margin:0}#bbpress-forums #bbp-single-user-details #bbp-user-navigation li{margin:0}#bbpress-forums #bbp-single-user-details #bbp-user-navigation a{padding:5px 8px;display:block;border:1px solid transparent;text-decoration:none}#bbpress-forums #bbp-single-user-details #bbp-user-navigation li.current a{background:#eee;opacity:.8}#bbpress-forums #bbp-user-body{margin-right:180px}body.my-account #bbpress-forums{border-top:none;padding-top:0;margin-bottom:0}#bbpress-forums dl.bbp-user-capabilities{display:inline-block;vertical-align:top}#bbpress-forums dl.bbp-user-capabilities dt{margin:0 0 10px;text-transform:capitalize}#bbpress-forums dl.bbp-user-capabilities dd{margin:0;padding:0}.bbp-alert-outer{height:100%;width:100%;top:0;right:0;position:fixed;background-color:rgba(0,0,0,.2);z-index:99999}.bbp-alert-inner{width:350px;text-align:center;background:#fff;position:fixed;top:50%;right:50%;margin-top:-75px;margin-right:-185px;border-radius:3px;border:1px solid #aaa;padding:15px 10px 10px}.bbp-alert-outer .bbp-alert-inner p{margin:10px 0}.bbp-alert-actions a{padding:5px 20px;text-decoration:none}@media only screen and (max-width:480px){#bbpress-forums div.bbp-topic-tags{clear:right;float:right}div.bbp-search-form button,div.bbp-search-form input{font-size:11px;padding:2px}li.bbp-forum-info,li.bbp-topic-title{width:45%}li.bbp-forum-reply-count,li.bbp-forum-topic-count,li.bbp-topic-reply-count,li.bbp-topic-voice-count{width:15%}span.bbp-reply-post-date,span.bbp-topic-post-date{float:right}span.bbp-admin-links{clear:right;float:right}#bbpress-forums .bbp-forums-list li,#bbpress-forums .bbp-forums-list span{display:block;font-size:11px}#bbpress-forums .bbp-body div.bbp-reply-author,#bbpress-forums .bbp-body div.bbp-topic-author{margin:-15px 10px 10px;min-height:100px;padding-right:80px;position:relative;text-align:right;width:100%}#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{clear:none;display:inline-block;margin-right:0;word-wrap:break-word}#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{position:absolute;top:15px;right:0;width:60px;height:auto}#bbpress-forums div.bbp-reply-author .bbp-author-role,#bbpress-forums div.bbp-topic-author .bbp-author-role{font-size:12px;font-style:normal}#bbpress-forums .bbp-body div.bbp-reply-content,#bbpress-forums .bbp-body div.bbp-topic-content{clear:both;margin:10px;padding:0}#bbpress-forums div.bbp-reply-content p,#bbpress-forums div.bbp-topic-content p{margin-bottom:1em}div.bbp-submit-wrapper{float:right}#bbpress-forums fieldset.bbp-form{padding:0 10px 10px}#bbpress-forums #bbp-user-body{clear:both;margin-right:0;word-wrap:break-word}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:14px}}@media only screen and (max-width:320px){#bbpress-forums div.bbp-search-form{margin-bottom:10px}#bbpress-forums li.bbp-body li.bbp-forum-info,#bbpress-forums li.bbp-body li.bbp-topic-title,#bbpress-forums li.bbp-header li.bbp-forum-info,#bbpress-forums li.bbp-header li.bbp-topic-title{width:100%}#bbpress-forums li.bbp-header li.bbp-forum-info,#bbpress-forums li.bbp-header li.bbp-topic-title{text-align:center;text-transform:uppercase}#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count,#bbpress-forums li.bbp-header li.bbp-forum-reply-count,#bbpress-forums li.bbp-header li.bbp-forum-topic-count,#bbpress-forums li.bbp-header li.bbp-topic-reply-count,#bbpress-forums li.bbp-header li.bbp-topic-voice-count{width:20%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{width:58%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count{margin-top:7px}#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{font-size:10px}#bbpress-forums li.bbp-header div.bbp-reply-author,#bbpress-forums li.bbp-header div.bbp-search-author,#bbpress-forums li.bbp-header div.bbp-topic-author{text-align:right;width:25%}#bbpress-forums li.bbp-header div.bbp-reply-content,#bbpress-forums li.bbp-header div.bbp-search-content,#bbpress-forums li.bbp-header div.bbp-topic-content{margin-right:25%}#bbpress-forums div.bbp-template-notice img.avatar,#bbpress-forums p.bbp-topic-meta img.avatar{width:14px;height:auto}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar{padding:1px}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar td{width:20px;height:20px}#bbpress-forums div.wp-editor-container{width:100%;overflow:auto}#bbpress-forums input#bbp_topic_tags,#bbpress-forums input#bbp_topic_title{width:95%}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:14px}}@media only screen and (max-width:240px){#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count,#bbpress-forums li.bbp-footer div.bbp-reply-author,#bbpress-forums li.bbp-footer div.bbp-search-author,#bbpress-forums li.bbp-footer div.bbp-topic-author,#bbpress-forums li.bbp-header li.bbp-forum-reply-count,#bbpress-forums li.bbp-header li.bbp-forum-topic-count,#bbpress-forums li.bbp-header li.bbp-topic-reply-count,#bbpress-forums li.bbp-header li.bbp-topic-voice-count{width:45%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{clear:both;width:100%}#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{text-align:center}#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header div.bbp-reply-author,#bbpress-forums li.bbp-header div.bbp-reply-content,#bbpress-forums li.bbp-header div.bbp-search-author,#bbpress-forums li.bbp-header div.bbp-search-content,#bbpress-forums li.bbp-header div.bbp-topic-author,#bbpress-forums li.bbp-header div.bbp-topic-content{margin-right:0;text-align:right}#bbpress-forums li.bbp-body li.bbp-topic-freshness p.bbp-topic-meta{display:inline-block}#bbpress-forums li.bbp-header{overflow:hidden}#bbpress-forums li.bbp-footer div.bbp-reply-content,#bbpress-forums li.bbp-footer div.bbp-search-content,#bbpress-forums li.bbp-footer div.bbp-topic-content{display:inline-block;margin-right:0}#bbpress-forums li.bbp-body div.bbp-reply-author,#bbpress-forums li.bbp-body div.bbp-topic-author{min-height:60px;padding-right:60px}#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{width:40px;height:auto}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:12px}}
templates/default/css/bbpress.css CHANGED
@@ -159,7 +159,7 @@ body.reply-edit .reply {
159
  font-size: 11px;
160
  }
161
 
162
- #bbpress-forums .bbp-forums-list .bbp-forum.css-sep:not(:last-child):after {
163
  content: ", ";
164
  }
165
 
@@ -301,7 +301,7 @@ span.bbp-author-ip {
301
  font-size: 11px;
302
  font-weight: 700;
303
  word-wrap: break-word;
304
- color: #aaa;
305
  }
306
 
307
  /* =Topic and reply content
@@ -317,9 +317,9 @@ span.bbp-author-ip {
317
  }
318
 
319
  /* Clearing hack */
320
- #bbpress-forums div.bbp-forum-content:after,
321
- #bbpress-forums div.bbp-topic-content:after,
322
- #bbpress-forums div.bbp-reply-content:after {
323
  clear: both;
324
  content: ".";
325
  display: block;
@@ -518,7 +518,7 @@ span.bbp-admin-links {
518
  }
519
 
520
  span.bbp-admin-links a {
521
- color: #bbb;
522
  font-weight: 400;
523
  font-size: 10px;
524
  text-transform: uppercase;
@@ -543,7 +543,7 @@ td.bbp-topic-counts {
543
  .bbp-reply-header a.bbp-reply-permalink {
544
  float: right;
545
  margin-left: 10px;
546
- color: #ccc;
547
  }
548
 
549
  /* =Toggles
@@ -1156,17 +1156,10 @@ div.bbp-template-notice li {
1156
  margin-top: 10px;
1157
  }
1158
 
1159
- .bbp-login-form .bbp-remember-me {
1160
-
1161
- }
1162
-
1163
  .bbp-login-form .bbp-submit-wrapper {
1164
  text-align: right;
1165
  }
1166
 
1167
- .bbp-login-form .bbp-login-links {
1168
- }
1169
-
1170
  .bbp-login-form .bbp-login-links a {
1171
  float: left;
1172
  clear: left;
@@ -1327,18 +1320,6 @@ body.my-account #bbpress-forums {
1327
  padding: 0;
1328
  }
1329
 
1330
- /* =BuddyPress Group Forums
1331
- -------------------------------------------------------------- */
1332
-
1333
- #bbpress-forums div.row-actions {
1334
- font-size: 11px;
1335
- visibility: hidden;
1336
- }
1337
-
1338
- #bbpress-forums li:hover > div.row-actions {
1339
- visibility: visible;
1340
- }
1341
-
1342
  /* =Alerts
1343
  -------------------------------------------------------------- */
1344
 
159
  font-size: 11px;
160
  }
161
 
162
+ #bbpress-forums .bbp-forums-list .bbp-forum.css-sep:not(:last-child)::after {
163
  content: ", ";
164
  }
165
 
301
  font-size: 11px;
302
  font-weight: 700;
303
  word-wrap: break-word;
304
+ color: #747474;
305
  }
306
 
307
  /* =Topic and reply content
317
  }
318
 
319
  /* Clearing hack */
320
+ #bbpress-forums div.bbp-forum-content::after,
321
+ #bbpress-forums div.bbp-topic-content::after,
322
+ #bbpress-forums div.bbp-reply-content::after {
323
  clear: both;
324
  content: ".";
325
  display: block;
518
  }
519
 
520
  span.bbp-admin-links a {
521
+ color: #707070;
522
  font-weight: 400;
523
  font-size: 10px;
524
  text-transform: uppercase;
543
  .bbp-reply-header a.bbp-reply-permalink {
544
  float: right;
545
  margin-left: 10px;
546
+ color: #707070;
547
  }
548
 
549
  /* =Toggles
1156
  margin-top: 10px;
1157
  }
1158
 
 
 
 
 
1159
  .bbp-login-form .bbp-submit-wrapper {
1160
  text-align: right;
1161
  }
1162
 
 
 
 
1163
  .bbp-login-form .bbp-login-links a {
1164
  float: left;
1165
  clear: left;
1320
  padding: 0;
1321
  }
1322
 
 
 
 
 
 
 
 
 
 
 
 
 
1323
  /* =Alerts
1324
  -------------------------------------------------------------- */
1325
 
templates/default/css/bbpress.min.css CHANGED
@@ -1 +1 @@
1
- .hidden,.js .hide-if-js{display:none}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0;word-wrap:normal!important}#bbpress-forums{background:0 0;clear:both;margin-bottom:20px;overflow:hidden;font-size:12px;line-height:18px}#bbpress-forums a,#bbpress-forums a:hover{box-shadow:none;border:none;transition:none}#bbpress-forums hr{margin:0 0 24px}#bbpress-forums div.even,#bbpress-forums ul.even{background-color:#fff}#bbpress-forums div.odd,#bbpress-forums ul.odd{background-color:#fbfbfb}body.reply-edit .reply{float:none}#bbpress-forums div.reply{height:auto;width:100%}#bbpress-forums div.bbp-forum-header,#bbpress-forums div.bbp-reply-header,#bbpress-forums div.bbp-topic-header{background-color:#f4f4f4}#bbpress-forums .status-spam.even,#bbpress-forums .status-trash.even{background-color:#fee}#bbpress-forums .status-spam.odd,#bbpress-forums .status-trash.odd{background-color:#fdd}#bbpress-forums .status-pending.even,#bbpress-forums .status-pending.odd,#bbpress-forums ul.status-pending a{background-color:#fef7f1}#bbpress-forums ul.status-closed,#bbpress-forums ul.status-closed a{color:#ccc}#bbpress-forums ul{background:0 0;list-style:none;margin:0;padding:0}#bbpress-forums ul.bbp-threaded-replies{margin-left:50px}#bbpress-forums li{background:0 0;margin:0;list-style:none}#bbpress-forums ul.bbp-forums,#bbpress-forums ul.bbp-lead-topic,#bbpress-forums ul.bbp-replies,#bbpress-forums ul.bbp-search-results,#bbpress-forums ul.bbp-topics{font-size:12px;overflow:hidden;border:1px solid #eee;margin-bottom:20px;clear:both}#bbpress-forums li.bbp-body,#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{clear:both}#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{background:#f3f3f3;border-top:1px solid #eee;font-weight:700;padding:8px;text-align:center}#bbpress-forums li.bbp-header{background:#eaeaea}#bbpress-forums li.bbp-header ul{overflow:hidden}#bbpress-forums .bbp-forums-list{margin:0 0 0 7px;padding-left:12px;border-left:1px solid #ddd}#bbpress-forums .bbp-forums-list .bbp-forum{display:inline;font-size:11px}#bbpress-forums .bbp-forums-list .bbp-forum.css-sep:not(:last-child):after{content:", "}#bbpress-forums li.bbp-footer p{margin:0;line-height:1}li.bbp-forum-info,li.bbp-topic-title{float:left;text-align:left;width:55%}li.bbp-forum-reply-count,li.bbp-forum-topic-count,li.bbp-topic-reply-count,li.bbp-topic-voice-count{float:left;text-align:center;width:10%}li.bbp-forum-freshness,li.bbp-topic-freshness{text-align:center;float:left;width:22%}#bbpress-forums li.bbp-body ul.forum,#bbpress-forums li.bbp-body ul.topic{border-top:1px solid #eee;overflow:hidden;padding:8px}#bbpress-forums #favorite-toggle,#bbpress-forums #subscription-toggle{float:right}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{background:0 0;border:none;font-size:16px;line-height:1;margin:8px 0;padding:0;text-transform:none}#bbpress-forums div.bbp-forum-author,#bbpress-forums div.bbp-reply-author,#bbpress-forums div.bbp-topic-author{float:left;text-align:center;width:115px}#bbpress-forums div.bbp-forum-author img.avatar,#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{border:none;max-width:80px;padding:0;margin:12px auto 0;float:none}#bbpress-forums div.bbp-forum-author .bbp-author-name,#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{margin:0 12px;word-wrap:break-word;display:inline-block}#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{clear:left;display:block}#bbpress-forums div.bbp-forum-author .bbp-author-role,#bbpress-forums div.bbp-reply-author .bbp-author-role,#bbpress-forums div.bbp-topic-author .bbp-author-role{font-size:11px;font-style:italic}#bbpress-forums li.bbp-footer .bbp-forum-author,#bbpress-forums li.bbp-footer .bbp-reply-author,#bbpress-forums li.bbp-footer .bbp-search-author,#bbpress-forums li.bbp-footer .bbp-topic-author,#bbpress-forums li.bbp-header .bbp-forum-author,#bbpress-forums li.bbp-header .bbp-reply-author,#bbpress-forums li.bbp-header .bbp-search-author,#bbpress-forums li.bbp-header .bbp-topic-author{float:left;margin:0;padding:0;width:120px}#bbpress-forums li.bbp-footer .bbp-forum-content,#bbpress-forums li.bbp-footer .bbp-reply-content,#bbpress-forums li.bbp-footer .bbp-search-content,#bbpress-forums li.bbp-footer .bbp-topic-content,#bbpress-forums li.bbp-header .bbp-forum-content,#bbpress-forums li.bbp-header .bbp-reply-content,#bbpress-forums li.bbp-header .bbp-search-content,#bbpress-forums li.bbp-header .bbp-topic-content{margin-left:140px;padding:0;text-align:left}div.bbp-forum-header,div.bbp-reply-header,div.bbp-topic-header,li.bbp-body div.hentry{margin:0;overflow:hidden;padding:8px}div.bbp-forum-header,div.bbp-reply-header,div.bbp-topic-header{border-top:1px solid #ddd;clear:both}span.bbp-author-ip{font-size:11px;font-weight:700;word-wrap:break-word;color:#aaa}#bbpress-forums div.bbp-forum-content,#bbpress-forums div.bbp-reply-content,#bbpress-forums div.bbp-topic-content{margin-left:130px;padding:12px 12px 12px 0;text-align:left;position:relative}#bbpress-forums div.bbp-forum-content:after,#bbpress-forums div.bbp-reply-content:after,#bbpress-forums div.bbp-topic-content:after{clear:both;content:".";display:block;float:none;height:0;font-size:0;visibility:hidden}#bbpress-forums div.bbp-reply-content a,#bbpress-forums div.bbp-topic-content a{background:0 0;border:none;display:inline;font-weight:400;margin:0;padding:0}#bbpress-forums div.bbp-reply-content a.bbp-user-mention,#bbpress-forums div.bbp-topic-content a.bbp-user-mention{background:0 0;border:none;text-decoration:none;text-shadow:none;display:inline;font-weight:600;margin:0;padding:0}#bbpress-forums div.bbp-reply-content h1,#bbpress-forums div.bbp-reply-content h2,#bbpress-forums div.bbp-reply-content h3,#bbpress-forums div.bbp-reply-content h4,#bbpress-forums div.bbp-reply-content h5,#bbpress-forums div.bbp-reply-content h6,#bbpress-forums div.bbp-topic-content h1,#bbpress-forums div.bbp-topic-content h2,#bbpress-forums div.bbp-topic-content h3,#bbpress-forums div.bbp-topic-content h4,#bbpress-forums div.bbp-topic-content h5,#bbpress-forums div.bbp-topic-content h6{clear:none;line-height:1;margin:24px 0;padding:0}#bbpress-forums div.bbp-reply-content img,#bbpress-forums div.bbp-topic-content img{max-width:100%;height:auto}#bbpress-forums div.bbp-reply-content ol,#bbpress-forums div.bbp-reply-content ul,#bbpress-forums div.bbp-topic-content ol,#bbpress-forums div.bbp-topic-content ul{margin:0 15px 15px;padding:0}#bbpress-forums div.bbp-reply-content ul li,#bbpress-forums div.bbp-topic-content ul li{list-style-type:disc}#bbpress-forums div.bbp-reply-content ol li,#bbpress-forums div.bbp-topic-content ol li{list-style-type:decimal}#bbpress-forums div.bbp-reply-content ol li li,#bbpress-forums div.bbp-topic-content ol li li{list-style-type:lower-alpha}#bbpress-forums div.bbp-reply-content ol li li li,#bbpress-forums div.bbp-topic-content ol li li li{list-style-type:upper-roman}#bbpress-forums div.bbp-reply-content code,#bbpress-forums div.bbp-reply-content pre,#bbpress-forums div.bbp-topic-content code,#bbpress-forums div.bbp-topic-content pre{font-family:Inconsolata,Consolas,Monaco,"Lucida Console",monospace;display:inline-block;background-color:#f9f9f9;border:1px solid #ddd;padding:0 5px;max-width:95%;vertical-align:middle;margin-top:-3px;overflow-x:auto}#bbpress-forums div.bbp-reply-content pre,#bbpress-forums div.bbp-topic-content pre{display:block;line-height:18px;margin:0 0 24px;padding:5px 10px;white-space:pre;overflow:auto}#bbpress-forums div.bbp-reply-content pre code,#bbpress-forums div.bbp-topic-content pre code{display:block;border:none;padding:0;margin:0;background-color:transparent;overflow-wrap:normal;overflow:auto;max-width:100%}#bbpress-forums div.bbp-reply-content iframe.wp-embedded-content,#bbpress-forums div.bbp-topic-content iframe.wp-embedded-content{position:relative}#bbpress-forums div.bbp-reply-to{margin-left:130px;padding:12px 12px 12px 0;text-align:right}#bbpress-forums div#bbp-cancel-reply-to{text-align:right}div.bbp-breadcrumb{float:left}div.bbp-breadcrumb,div.bbp-topic-tags{font-size:12px}#bbpress-forums div.bbp-breadcrumb p,#bbpress-forums div.bbp-topic-tags p{margin-bottom:10px}#bbpress-forums div.bbp-topic-tags{float:right;clear:both}#bbp-topic-hot-tags{clear:both}#bbpress-forums #bbp-search-form{clear:left}#bbpress-forums #bbp-search-form .hidden{height:0;width:0;overflow:hidden;position:absolute;background:0 0;left:-999em}#bbpress-forums #bbp-search-form #bbp_search{display:inline-block;width:auto}#bbpress-forums div.bbp-search-form{float:right}span.bbp-admin-links{float:right;color:#ddd}span.bbp-admin-links a{color:#bbb;font-weight:400;font-size:10px;text-transform:uppercase;text-decoration:none}fieldset span.bbp-admin-links{float:left}tr td span.bbp-admin-links a:hover{color:#ff4b33}td.bbp-topic-admin-links,td.bbp-topic-counts{width:50%}.bbp-forum-header a.bbp-forum-permalink,.bbp-reply-header a.bbp-reply-permalink,.bbp-topic-header a.bbp-topic-permalink{float:right;margin-left:10px;color:#ccc}.bbp-row-actions #favorite-toggle a{text-decoration:none;padding:0 3px 1px;color:#7c7;border:1px solid #aca;background-color:#dfd;font-weight:700;font-size:12px}.bbp-row-actions #favorite-toggle a:hover{color:#5a5;border-color:#7c7;background-color:#beb}.bbp-row-actions #favorite-toggle span.is-favorite a{color:#faa;border:1px solid #faa;background-color:#fee}.bbp-row-actions #favorite-toggle span.is-favorite a:hover{color:#c88;border-color:#c88;background-color:#fdd}.bbp-row-actions #subscription-toggle a{text-decoration:none;padding:0 3px 1px;color:#7c7;border:1px solid #aca;background-color:#dfd;font-weight:700;font-size:12px}.bbp-row-actions #subscription-toggle a:hover{color:#5a5;border-color:#7c7;background-color:#beb}.bbp-row-actions #subscription-toggle span.is-subscribed a{color:#faa;border:1px solid #faa;background-color:#fee}.bbp-row-actions #subscription-toggle span.is-subscribed a:hover{color:#c88;border-color:#c88;background-color:#fdd}#bbpress-forums .bbp-forum-info .bbp-forum-content,#bbpress-forums p.bbp-topic-meta{font-size:11px;margin:5px 0;padding:0;word-wrap:break-word}#bbpress-forums p.bbp-topic-meta span{white-space:nowrap}.bbp-pagination-count{float:left;border:1px solid transparent}.bbp-pagination-links{float:right;list-style:none;display:inline}.bbp-pagination{float:left;width:100%;margin-bottom:15px}#bbpress-forums .bbp-pagination-links a,#bbpress-forums .bbp-pagination-links span.current{display:block;float:left;font-size:12px;line-height:18px;padding:0 5px;margin-left:5px;border:1px solid #efefef;border-radius:0;background:0 0;color:inherit;text-decoration:none}#bbpress-forums .bbp-pagination-links span.dots{display:block;float:left;padding:1px 4px;margin-left:5px}#bbpress-forums .bbp-topic-pagination{display:inline-block;margin-left:5px;margin-bottom:2px}#bbpress-forums .bbp-topic-pagination a{font-size:10px;line-height:10px;padding:1px 3px;border:1px solid #ddd;color:inherit;text-decoration:none}#bbpress-forums .bbp-pagination-links a:hover,#bbpress-forums .bbp-pagination-links span.current,#bbpress-forums .bbp-topic-pagination a:hover{background:#eee;opacity:.8;border:1px solid #ddd}#bbpress-forums fieldset.bbp-form{clear:left;border:1px solid #eee;padding:10px 20px;margin-bottom:10px}#bbpress-forums fieldset.bbp-form legend{padding:5px;width:auto;border:none}#bbpress-forums fieldset.bbp-form label{margin:0;display:inline-block}#bbp-edit-topic-tag.bbp-form fieldset.bbp-form label,#bbp-login fieldset label,#bbp-lost-pass fieldset label,#bbp-register fieldset label{width:100px}#bbpress-forums fieldset.bbp-form input,#bbpress-forums fieldset.bbp-form p,#bbpress-forums fieldset.bbp-form select,#bbpress-forums fieldset.bbp-form textarea{margin:0 0 8px}textarea#bbp_forum_content,textarea#bbp_reply_content,textarea#bbp_topic_content{width:97%;box-sizing:border-box}textarea#bbp_forum_content{height:210px}#bbpress-forums fieldset.bbp-forum-form-attributes{width:200px;float:right;clear:none;margin-left:25px}#bbpress-forums fieldset select#bbp_forum_id{max-width:200px}.bbp-reply-form,.bbp-topic-form,.bbp-topic-tag-form{clear:left}body.reply-edit .bbp-reply-form div.avatar img,body.single-forum .bbp-topic-form div.avatar img,body.single-reply .bbp-reply-form div.avatar img,body.topic-edit .bbp-topic-form div.avatar img{margin-right:0;padding:10px;border:1px solid #ddd;line-height:0;background-color:#efefef}body.page .bbp-reply-form code,body.page .bbp-topic-form code,body.reply-edit .bbp-reply-form code,body.single-forum .bbp-topic-form code,body.single-topic .bbp-reply-form code,body.topic-edit .bbp-topic-form code{font-size:10px;background-color:#f0fff8;border:1px solid #ceefe1;display:block;padding:8px;margin-top:5px;width:369px}#delete_tag,#merge_tag{display:inline}div.bbp-submit-wrapper{margin-top:15px;float:right;clear:both}p.form-allowed-tags{max-width:100%}#bbpress-forums div.bbp-the-content-wrapper{margin-bottom:10px}#bbpress-forums div.bbp-the-content-wrapper textarea.bbp-the-content{width:100%;margin:0;font-size:12px}#bbpress-forums div.bbp-the-content-wrapper table,#bbpress-forums div.bbp-the-content-wrapper tbody,#bbpress-forums div.bbp-the-content-wrapper td,#bbpress-forums div.bbp-the-content-wrapper tr{border:none;padding:0;margin:0;width:auto;line-height:1}#bbpress-forums div.bbp-the-content-wrapper input[type=button]{padding:5px 7px;margin:0 -1px 0 0;line-height:1;border:1px solid transparent;background-color:transparent;box-shadow:none;text-shadow:none;border-radius:0;text-transform:uppercase;font-size:11px}#bbpress-forums div.bbp-the-content-wrapper input[type=button]:hover{border-color:rgba(0,0,0,.1);background-color:rgba(255,255,255,.5)}#bbpress-forums div.bbp-the-content-wrapper div.quicktags-toolbar{padding:5px;min-height:26px}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar{padding:4px 4px 8px}#bbpress-forums div.wp-editor-container{margin:0;padding:0;line-height:0}#bbpress-forums div.bbp-the-content-wrapper td.mceStatusbar{line-height:16px}#bbpress-forums #bbp-your-profile fieldset{padding:20px 20px 0}#bbpress-forums #bbp-your-profile fieldset div{margin-bottom:20px;float:left;width:100%;clear:left}#bbpress-forums #bbp-your-profile fieldset select{margin-bottom:0;width:60%;background-color:#f9f9f9;border:1px solid #ddd}#bbpress-forums #bbp-your-profile fieldset input,#bbpress-forums #bbp-your-profile fieldset textarea{margin-bottom:0;width:60%;background-color:#f9f9f9;border:1px solid #ddd;box-shadow:none;border-radius:0}#bbpress-forums #bbp-your-profile fieldset input:focus,#bbpress-forums #bbp-your-profile fieldset textarea:focus{border:1px solid #ccc;box-shadow:inset 1px 1px 1px rgba(0,0,0,.1);outline-color:rgba(240,255,240,.1)}#bbpress-forums #bbp-your-profile fieldset.bbp-form input.checkbox{width:auto}#bbpress-forums #bbp-your-profile fieldset legend{display:none}#bbpress-forums #bbp-your-profile fieldset label[for]{float:left;width:20%;padding:5px 20px 5px 0;text-align:right;cursor:pointer}#bbpress-forums #bbp-your-profile fieldset dl label[for]{text-align:left;width:60%}#bbpress-forums #bbp-your-profile fieldset p.description{margin:5px 0 0 20%;font-size:12px;font-style:italic;float:left;clear:left;width:60%;padding:5px 8px;border:#cee1ef 1px solid;background-color:#f0f8ff}#bbpress-forums #bbp-your-profile fieldset fieldset{margin:0;border:none;padding:0;clear:none;float:none}#bbpress-forums #bbp-your-profile fieldset fieldset.capabilities dl{margin:0}#bbpress-forums #bbp-your-profile fieldset.submit button{float:right}#bbpress-forums #bbp-your-profile fieldset fieldset.password{width:60%;display:inline}#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-button-wrapper,#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-input-wrapper{width:100%;margin:0;display:inline-block}#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-button-wrapper button{width:46%;margin:4% 2%;box-sizing:border-box;display:inline-block}#bbpress-forums #bbp-your-profile fieldset fieldset.password input,#bbpress-forums #bbp-your-profile fieldset fieldset.passwword textarea{width:100%}#bbpress-forums #bbp-your-profile fieldset fieldset.password button .dashicons{display:none}#bbpress-forums #bbp-your-profile fieldset fieldset.password span.description{margin-left:0;margin-bottom:20px}#bbpress-forums #password #pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:0;padding:8px;text-align:center;box-sizing:border-box;display:inline-block}#bbpress-forums #password #pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#bbpress-forums #password #pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#bbpress-forums #password #pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#bbpress-forums #password #pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#bbpress-forums #password #pass1-text.short,#bbpress-forums #password #pass1.short{border-color:#e35b5b}#bbpress-forums #password #pass1-text.bad,#bbpress-forums #password#pass1.bad{border-color:#f78b53}#bbpress-forums #password #pass1-text.good,#bbpress-forums #password #pass1.good{border-color:#ffc733}#bbpress-forums #password #pass1-text.strong,#bbpress-forums #password #pass1.strong{border-color:#83c373}#bbpress-forums .indicator-hint{padding-top:8px}#bbpress-forums #pass1-text,#bbpress-forums .pw-weak,#bbpress-forums .show-password #pass1{display:none}#bbpress-forums .show-password #pass1-text{display:inline-block}div.bbp-template-notice,div.indicator-hint{border-width:1px;border-style:solid;padding:0 .6em;margin:5px 0 15px;border-radius:3px;background-color:#ffffe0;border-color:#e6db55;color:#000;clear:both}div.bbp-template-notice a{color:#555;text-decoration:none}div.bbp-template-notice a:hover{color:#000}div.bbp-template-notice.info{border:#cee1ef 1px solid;background-color:#f0f8ff}div.bbp-template-notice.important{border:#e6db55 1px solid;background-color:#fffbcc}div.bbp-template-notice.error,div.bbp-template-notice.warning{background-color:#ffebe8;border-color:#c00}div.bbp-template-notice.error a,div.bbp-template-notice.warning a{color:#c00}div.bbp-template-notice li,div.bbp-template-notice p{margin:.5em 0 6px!important;padding:2px;font-size:12px;line-height:1.4}.bbp-forum-content ul.sticky,.bbp-topics ul.sticky,.bbp-topics ul.super-sticky,.bbp-topics-front ul.super-sticky{background-color:#ffffe0!important;font-size:1.1em}#bbpress-forums .bbp-reply-content ul.bbp-reply-revision-log,#bbpress-forums .bbp-reply-content ul.bbp-topic-revision-log,#bbpress-forums .bbp-topic-content ul.bbp-topic-revision-log{border-top:1px dotted #ddd;width:100%;margin:0;padding:8px 0 0;font-size:11px;color:#aaa}#bbpress-forums .bbp-reply-content ul.bbp-reply-revision-log li,#bbpress-forums .bbp-reply-content ul.bbp-topic-revision-log li,#bbpress-forums .bbp-topic-content ul.bbp-topic-revision-log li{list-style-type:none}.bbp-login-form fieldset legend{display:none}.bbp-login-form .bbp-email input,.bbp-login-form .bbp-password input,.bbp-login-form .bbp-username input{padding:5px}.bbp-login-form label{width:140px;display:inline-block}#sidebar .bbp-login-form label{width:70px}.bbp-login-form .bbp-email,.bbp-login-form .bbp-password,.bbp-login-form .bbp-remember-me,.bbp-login-form .bbp-submit-wrapper,.bbp-login-form .bbp-username{margin-top:10px}.bbp-login-form .bbp-submit-wrapper{text-align:right}.bbp-login-form .bbp-login-links a{float:left;clear:left}.bbp-logged-in img.avatar{float:left;margin:0 15px 0 0}.bbp-logged-in h4{font-weight:700;font-size:1.3em;clear:none;margin-bottom:10px}#bbpress-forums img.avatar{box-shadow:none;display:inline-block}#bbpress-forums .widget_display_replies img.avatar,#bbpress-forums .widget_display_topics img.avatar,#bbpress-forums div.bbp-template-notice img.avatar,#bbpress-forums p.bbp-topic-meta img.avatar,#bbpress-forums ul.bbp-reply-revision-log img.avatar,#bbpress-forums ul.bbp-topic-revision-log img.avatar{float:none;vertical-align:middle;border:3px double #ddd}fieldset div.avatar{float:right}.activity-list li.bbp_reply_create .activity-content .activity-inner,.activity-list li.bbp_topic_create .activity-content .activity-inner{border-left:2px solid #eaeaea;margin-left:5px;padding-left:10px}#bbpress-forums h1{clear:none;font-size:1.8em;line-height:1;padding-bottom:10px}#bbpress-forums #bbp-user-wrapper{float:left;width:100%}#bbpress-forums .bbp-user-section{overflow:auto;clear:right}#bbpress-forums #bbp-user-wrapper h2.entry-title{font-size:1.4em;margin:0;padding-bottom:10px;padding-top:0;clear:none}#bbpress-forums #bbp-user-wrapper fieldset.bbp-form,#bbpress-forums #bbp-user-wrapper ul.bbp-forums,#bbpress-forums #bbp-user-wrapper ul.bbp-lead-topic,#bbpress-forums #bbp-user-wrapper ul.bbp-replies,#bbpress-forums #bbp-user-wrapper ul.bbp-topics{clear:none}#bbpress-forums #bbp-single-user-details{margin:0;width:150px;float:left;overflow:hidden}#bbpress-forums #bbp-single-user-details #bbp-user-avatar{margin:0;width:150px}#bbpress-forums #bbp-single-user-details #bbp-user-avatar img.avatar{border:none;height:150px;padding:0;margin:0 0 20px;width:150px}#bbpress-forums #bbp-single-user-details #bbp-user-description{float:none;margin-left:180px}#bbpress-forums #bbp-single-user-details #bbp-user-navigation{float:none;margin:0}#bbpress-forums #bbp-single-user-details #bbp-user-navigation li{margin:0}#bbpress-forums #bbp-single-user-details #bbp-user-navigation a{padding:5px 8px;display:block;border:1px solid transparent;text-decoration:none}#bbpress-forums #bbp-single-user-details #bbp-user-navigation li.current a{background:#eee;opacity:.8}#bbpress-forums #bbp-user-body{margin-left:180px}body.my-account #bbpress-forums{border-top:none;padding-top:0;margin-bottom:0}#bbpress-forums dl.bbp-user-capabilities{display:inline-block;vertical-align:top}#bbpress-forums dl.bbp-user-capabilities dt{margin:0 0 10px;text-transform:capitalize}#bbpress-forums dl.bbp-user-capabilities dd{margin:0;padding:0}#bbpress-forums div.row-actions{font-size:11px;visibility:hidden}#bbpress-forums li:hover>div.row-actions{visibility:visible}.bbp-alert-outer{height:100%;width:100%;top:0;left:0;position:fixed;background-color:rgba(0,0,0,.2);z-index:99999}.bbp-alert-inner{width:350px;text-align:center;background:#fff;position:fixed;top:50%;left:50%;margin-top:-75px;margin-left:-185px;border-radius:3px;border:1px solid #aaa;padding:15px 10px 10px}.bbp-alert-outer .bbp-alert-inner p{margin:10px 0}.bbp-alert-actions a{padding:5px 20px;text-decoration:none}@media only screen and (max-width:480px){#bbpress-forums div.bbp-topic-tags{clear:left;float:left}div.bbp-search-form button,div.bbp-search-form input{font-size:11px;padding:2px}li.bbp-forum-info,li.bbp-topic-title{width:45%}li.bbp-forum-reply-count,li.bbp-forum-topic-count,li.bbp-topic-reply-count,li.bbp-topic-voice-count{width:15%}span.bbp-reply-post-date,span.bbp-topic-post-date{float:left}span.bbp-admin-links{clear:left;float:left}#bbpress-forums .bbp-forums-list li,#bbpress-forums .bbp-forums-list span{display:block;font-size:11px}#bbpress-forums .bbp-body div.bbp-reply-author,#bbpress-forums .bbp-body div.bbp-topic-author{margin:-15px 10px 10px;min-height:100px;padding-left:80px;position:relative;text-align:left;width:100%}#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{clear:none;display:inline-block;margin-left:0;word-wrap:break-word}#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{position:absolute;top:15px;left:0;width:60px;height:auto}#bbpress-forums div.bbp-reply-author .bbp-author-role,#bbpress-forums div.bbp-topic-author .bbp-author-role{font-size:12px;font-style:normal}#bbpress-forums .bbp-body div.bbp-reply-content,#bbpress-forums .bbp-body div.bbp-topic-content{clear:both;margin:10px;padding:0}#bbpress-forums div.bbp-reply-content p,#bbpress-forums div.bbp-topic-content p{margin-bottom:1em}div.bbp-submit-wrapper{float:left}#bbpress-forums fieldset.bbp-form{padding:0 10px 10px}#bbpress-forums #bbp-user-body{clear:both;margin-left:0;word-wrap:break-word}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:14px}}@media only screen and (max-width:320px){#bbpress-forums div.bbp-search-form{margin-bottom:10px}#bbpress-forums li.bbp-body li.bbp-forum-info,#bbpress-forums li.bbp-body li.bbp-topic-title,#bbpress-forums li.bbp-header li.bbp-forum-info,#bbpress-forums li.bbp-header li.bbp-topic-title{width:100%}#bbpress-forums li.bbp-header li.bbp-forum-info,#bbpress-forums li.bbp-header li.bbp-topic-title{text-align:center;text-transform:uppercase}#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count,#bbpress-forums li.bbp-header li.bbp-forum-reply-count,#bbpress-forums li.bbp-header li.bbp-forum-topic-count,#bbpress-forums li.bbp-header li.bbp-topic-reply-count,#bbpress-forums li.bbp-header li.bbp-topic-voice-count{width:20%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{width:58%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count{margin-top:7px}#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{font-size:10px}#bbpress-forums li.bbp-header div.bbp-reply-author,#bbpress-forums li.bbp-header div.bbp-search-author,#bbpress-forums li.bbp-header div.bbp-topic-author{text-align:left;width:25%}#bbpress-forums li.bbp-header div.bbp-reply-content,#bbpress-forums li.bbp-header div.bbp-search-content,#bbpress-forums li.bbp-header div.bbp-topic-content{margin-left:25%}#bbpress-forums div.bbp-template-notice img.avatar,#bbpress-forums p.bbp-topic-meta img.avatar{width:14px;height:auto}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar{padding:1px}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar td{width:20px;height:20px}#bbpress-forums div.wp-editor-container{width:100%;overflow:auto}#bbpress-forums input#bbp_topic_tags,#bbpress-forums input#bbp_topic_title{width:95%}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:14px}}@media only screen and (max-width:240px){#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count,#bbpress-forums li.bbp-footer div.bbp-reply-author,#bbpress-forums li.bbp-footer div.bbp-search-author,#bbpress-forums li.bbp-footer div.bbp-topic-author,#bbpress-forums li.bbp-header li.bbp-forum-reply-count,#bbpress-forums li.bbp-header li.bbp-forum-topic-count,#bbpress-forums li.bbp-header li.bbp-topic-reply-count,#bbpress-forums li.bbp-header li.bbp-topic-voice-count{width:45%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{clear:both;width:100%}#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{text-align:center}#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header div.bbp-reply-author,#bbpress-forums li.bbp-header div.bbp-reply-content,#bbpress-forums li.bbp-header div.bbp-search-author,#bbpress-forums li.bbp-header div.bbp-search-content,#bbpress-forums li.bbp-header div.bbp-topic-author,#bbpress-forums li.bbp-header div.bbp-topic-content{margin-left:0;text-align:left}#bbpress-forums li.bbp-body li.bbp-topic-freshness p.bbp-topic-meta{display:inline-block}#bbpress-forums li.bbp-header{overflow:hidden}#bbpress-forums li.bbp-footer div.bbp-reply-content,#bbpress-forums li.bbp-footer div.bbp-search-content,#bbpress-forums li.bbp-footer div.bbp-topic-content{display:inline-block;margin-left:0}#bbpress-forums li.bbp-body div.bbp-reply-author,#bbpress-forums li.bbp-body div.bbp-topic-author{min-height:60px;padding-left:60px}#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{width:40px;height:auto}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:12px}}
1
+ .hidden,.js .hide-if-js{display:none}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0;word-wrap:normal!important}#bbpress-forums{background:0 0;clear:both;margin-bottom:20px;overflow:hidden;font-size:12px;line-height:18px}#bbpress-forums a,#bbpress-forums a:hover{box-shadow:none;border:none;transition:none}#bbpress-forums hr{margin:0 0 24px}#bbpress-forums div.even,#bbpress-forums ul.even{background-color:#fff}#bbpress-forums div.odd,#bbpress-forums ul.odd{background-color:#fbfbfb}body.reply-edit .reply{float:none}#bbpress-forums div.reply{height:auto;width:100%}#bbpress-forums div.bbp-forum-header,#bbpress-forums div.bbp-reply-header,#bbpress-forums div.bbp-topic-header{background-color:#f4f4f4}#bbpress-forums .status-spam.even,#bbpress-forums .status-trash.even{background-color:#fee}#bbpress-forums .status-spam.odd,#bbpress-forums .status-trash.odd{background-color:#fdd}#bbpress-forums .status-pending.even,#bbpress-forums .status-pending.odd,#bbpress-forums ul.status-pending a{background-color:#fef7f1}#bbpress-forums ul.status-closed,#bbpress-forums ul.status-closed a{color:#ccc}#bbpress-forums ul{background:0 0;list-style:none;margin:0;padding:0}#bbpress-forums ul.bbp-threaded-replies{margin-left:50px}#bbpress-forums li{background:0 0;margin:0;list-style:none}#bbpress-forums ul.bbp-forums,#bbpress-forums ul.bbp-lead-topic,#bbpress-forums ul.bbp-replies,#bbpress-forums ul.bbp-search-results,#bbpress-forums ul.bbp-topics{font-size:12px;overflow:hidden;border:1px solid #eee;margin-bottom:20px;clear:both}#bbpress-forums li.bbp-body,#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{clear:both}#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{background:#f3f3f3;border-top:1px solid #eee;font-weight:700;padding:8px;text-align:center}#bbpress-forums li.bbp-header{background:#eaeaea}#bbpress-forums li.bbp-header ul{overflow:hidden}#bbpress-forums .bbp-forums-list{margin:0 0 0 7px;padding-left:12px;border-left:1px solid #ddd}#bbpress-forums .bbp-forums-list .bbp-forum{display:inline;font-size:11px}#bbpress-forums .bbp-forums-list .bbp-forum.css-sep:not(:last-child)::after{content:", "}#bbpress-forums li.bbp-footer p{margin:0;line-height:1}li.bbp-forum-info,li.bbp-topic-title{float:left;text-align:left;width:55%}li.bbp-forum-reply-count,li.bbp-forum-topic-count,li.bbp-topic-reply-count,li.bbp-topic-voice-count{float:left;text-align:center;width:10%}li.bbp-forum-freshness,li.bbp-topic-freshness{text-align:center;float:left;width:22%}#bbpress-forums li.bbp-body ul.forum,#bbpress-forums li.bbp-body ul.topic{border-top:1px solid #eee;overflow:hidden;padding:8px}#bbpress-forums #favorite-toggle,#bbpress-forums #subscription-toggle{float:right}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{background:0 0;border:none;font-size:16px;line-height:1;margin:8px 0;padding:0;text-transform:none}#bbpress-forums div.bbp-forum-author,#bbpress-forums div.bbp-reply-author,#bbpress-forums div.bbp-topic-author{float:left;text-align:center;width:115px}#bbpress-forums div.bbp-forum-author img.avatar,#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{border:none;max-width:80px;padding:0;margin:12px auto 0;float:none}#bbpress-forums div.bbp-forum-author .bbp-author-name,#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{margin:0 12px;word-wrap:break-word;display:inline-block}#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{clear:left;display:block}#bbpress-forums div.bbp-forum-author .bbp-author-role,#bbpress-forums div.bbp-reply-author .bbp-author-role,#bbpress-forums div.bbp-topic-author .bbp-author-role{font-size:11px;font-style:italic}#bbpress-forums li.bbp-footer .bbp-forum-author,#bbpress-forums li.bbp-footer .bbp-reply-author,#bbpress-forums li.bbp-footer .bbp-search-author,#bbpress-forums li.bbp-footer .bbp-topic-author,#bbpress-forums li.bbp-header .bbp-forum-author,#bbpress-forums li.bbp-header .bbp-reply-author,#bbpress-forums li.bbp-header .bbp-search-author,#bbpress-forums li.bbp-header .bbp-topic-author{float:left;margin:0;padding:0;width:120px}#bbpress-forums li.bbp-footer .bbp-forum-content,#bbpress-forums li.bbp-footer .bbp-reply-content,#bbpress-forums li.bbp-footer .bbp-search-content,#bbpress-forums li.bbp-footer .bbp-topic-content,#bbpress-forums li.bbp-header .bbp-forum-content,#bbpress-forums li.bbp-header .bbp-reply-content,#bbpress-forums li.bbp-header .bbp-search-content,#bbpress-forums li.bbp-header .bbp-topic-content{margin-left:140px;padding:0;text-align:left}div.bbp-forum-header,div.bbp-reply-header,div.bbp-topic-header,li.bbp-body div.hentry{margin:0;overflow:hidden;padding:8px}div.bbp-forum-header,div.bbp-reply-header,div.bbp-topic-header{border-top:1px solid #ddd;clear:both}span.bbp-author-ip{font-size:11px;font-weight:700;word-wrap:break-word;color:#747474}#bbpress-forums div.bbp-forum-content,#bbpress-forums div.bbp-reply-content,#bbpress-forums div.bbp-topic-content{margin-left:130px;padding:12px 12px 12px 0;text-align:left;position:relative}#bbpress-forums div.bbp-forum-content::after,#bbpress-forums div.bbp-reply-content::after,#bbpress-forums div.bbp-topic-content::after{clear:both;content:".";display:block;float:none;height:0;font-size:0;visibility:hidden}#bbpress-forums div.bbp-reply-content a,#bbpress-forums div.bbp-topic-content a{background:0 0;border:none;display:inline;font-weight:400;margin:0;padding:0}#bbpress-forums div.bbp-reply-content a.bbp-user-mention,#bbpress-forums div.bbp-topic-content a.bbp-user-mention{background:0 0;border:none;text-decoration:none;text-shadow:none;display:inline;font-weight:600;margin:0;padding:0}#bbpress-forums div.bbp-reply-content h1,#bbpress-forums div.bbp-reply-content h2,#bbpress-forums div.bbp-reply-content h3,#bbpress-forums div.bbp-reply-content h4,#bbpress-forums div.bbp-reply-content h5,#bbpress-forums div.bbp-reply-content h6,#bbpress-forums div.bbp-topic-content h1,#bbpress-forums div.bbp-topic-content h2,#bbpress-forums div.bbp-topic-content h3,#bbpress-forums div.bbp-topic-content h4,#bbpress-forums div.bbp-topic-content h5,#bbpress-forums div.bbp-topic-content h6{clear:none;line-height:1;margin:24px 0;padding:0}#bbpress-forums div.bbp-reply-content img,#bbpress-forums div.bbp-topic-content img{max-width:100%;height:auto}#bbpress-forums div.bbp-reply-content ol,#bbpress-forums div.bbp-reply-content ul,#bbpress-forums div.bbp-topic-content ol,#bbpress-forums div.bbp-topic-content ul{margin:0 15px 15px;padding:0}#bbpress-forums div.bbp-reply-content ul li,#bbpress-forums div.bbp-topic-content ul li{list-style-type:disc}#bbpress-forums div.bbp-reply-content ol li,#bbpress-forums div.bbp-topic-content ol li{list-style-type:decimal}#bbpress-forums div.bbp-reply-content ol li li,#bbpress-forums div.bbp-topic-content ol li li{list-style-type:lower-alpha}#bbpress-forums div.bbp-reply-content ol li li li,#bbpress-forums div.bbp-topic-content ol li li li{list-style-type:upper-roman}#bbpress-forums div.bbp-reply-content code,#bbpress-forums div.bbp-reply-content pre,#bbpress-forums div.bbp-topic-content code,#bbpress-forums div.bbp-topic-content pre{font-family:Inconsolata,Consolas,Monaco,"Lucida Console",monospace;display:inline-block;background-color:#f9f9f9;border:1px solid #ddd;padding:0 5px;max-width:95%;vertical-align:middle;margin-top:-3px;overflow-x:auto}#bbpress-forums div.bbp-reply-content pre,#bbpress-forums div.bbp-topic-content pre{display:block;line-height:18px;margin:0 0 24px;padding:5px 10px;white-space:pre;overflow:auto}#bbpress-forums div.bbp-reply-content pre code,#bbpress-forums div.bbp-topic-content pre code{display:block;border:none;padding:0;margin:0;background-color:transparent;overflow-wrap:normal;overflow:auto;max-width:100%}#bbpress-forums div.bbp-reply-content iframe.wp-embedded-content,#bbpress-forums div.bbp-topic-content iframe.wp-embedded-content{position:relative}#bbpress-forums div.bbp-reply-to{margin-left:130px;padding:12px 12px 12px 0;text-align:right}#bbpress-forums div#bbp-cancel-reply-to{text-align:right}div.bbp-breadcrumb{float:left}div.bbp-breadcrumb,div.bbp-topic-tags{font-size:12px}#bbpress-forums div.bbp-breadcrumb p,#bbpress-forums div.bbp-topic-tags p{margin-bottom:10px}#bbpress-forums div.bbp-topic-tags{float:right;clear:both}#bbp-topic-hot-tags{clear:both}#bbpress-forums #bbp-search-form{clear:left}#bbpress-forums #bbp-search-form .hidden{height:0;width:0;overflow:hidden;position:absolute;background:0 0;left:-999em}#bbpress-forums #bbp-search-form #bbp_search{display:inline-block;width:auto}#bbpress-forums div.bbp-search-form{float:right}span.bbp-admin-links{float:right;color:#ddd}span.bbp-admin-links a{color:#707070;font-weight:400;font-size:10px;text-transform:uppercase;text-decoration:none}fieldset span.bbp-admin-links{float:left}tr td span.bbp-admin-links a:hover{color:#ff4b33}td.bbp-topic-admin-links,td.bbp-topic-counts{width:50%}.bbp-forum-header a.bbp-forum-permalink,.bbp-reply-header a.bbp-reply-permalink,.bbp-topic-header a.bbp-topic-permalink{float:right;margin-left:10px;color:#707070}.bbp-row-actions #favorite-toggle a{text-decoration:none;padding:0 3px 1px;color:#7c7;border:1px solid #aca;background-color:#dfd;font-weight:700;font-size:12px}.bbp-row-actions #favorite-toggle a:hover{color:#5a5;border-color:#7c7;background-color:#beb}.bbp-row-actions #favorite-toggle span.is-favorite a{color:#faa;border:1px solid #faa;background-color:#fee}.bbp-row-actions #favorite-toggle span.is-favorite a:hover{color:#c88;border-color:#c88;background-color:#fdd}.bbp-row-actions #subscription-toggle a{text-decoration:none;padding:0 3px 1px;color:#7c7;border:1px solid #aca;background-color:#dfd;font-weight:700;font-size:12px}.bbp-row-actions #subscription-toggle a:hover{color:#5a5;border-color:#7c7;background-color:#beb}.bbp-row-actions #subscription-toggle span.is-subscribed a{color:#faa;border:1px solid #faa;background-color:#fee}.bbp-row-actions #subscription-toggle span.is-subscribed a:hover{color:#c88;border-color:#c88;background-color:#fdd}#bbpress-forums .bbp-forum-info .bbp-forum-content,#bbpress-forums p.bbp-topic-meta{font-size:11px;margin:5px 0;padding:0;word-wrap:break-word}#bbpress-forums p.bbp-topic-meta span{white-space:nowrap}.bbp-pagination-count{float:left;border:1px solid transparent}.bbp-pagination-links{float:right;list-style:none;display:inline}.bbp-pagination{float:left;width:100%;margin-bottom:15px}#bbpress-forums .bbp-pagination-links a,#bbpress-forums .bbp-pagination-links span.current{display:block;float:left;font-size:12px;line-height:18px;padding:0 5px;margin-left:5px;border:1px solid #efefef;border-radius:0;background:0 0;color:inherit;text-decoration:none}#bbpress-forums .bbp-pagination-links span.dots{display:block;float:left;padding:1px 4px;margin-left:5px}#bbpress-forums .bbp-topic-pagination{display:inline-block;margin-left:5px;margin-bottom:2px}#bbpress-forums .bbp-topic-pagination a{font-size:10px;line-height:10px;padding:1px 3px;border:1px solid #ddd;color:inherit;text-decoration:none}#bbpress-forums .bbp-pagination-links a:hover,#bbpress-forums .bbp-pagination-links span.current,#bbpress-forums .bbp-topic-pagination a:hover{background:#eee;opacity:.8;border:1px solid #ddd}#bbpress-forums fieldset.bbp-form{clear:left;border:1px solid #eee;padding:10px 20px;margin-bottom:10px}#bbpress-forums fieldset.bbp-form legend{padding:5px;width:auto;border:none}#bbpress-forums fieldset.bbp-form label{margin:0;display:inline-block}#bbp-edit-topic-tag.bbp-form fieldset.bbp-form label,#bbp-login fieldset label,#bbp-lost-pass fieldset label,#bbp-register fieldset label{width:100px}#bbpress-forums fieldset.bbp-form input,#bbpress-forums fieldset.bbp-form p,#bbpress-forums fieldset.bbp-form select,#bbpress-forums fieldset.bbp-form textarea{margin:0 0 8px}textarea#bbp_forum_content,textarea#bbp_reply_content,textarea#bbp_topic_content{width:97%;box-sizing:border-box}textarea#bbp_forum_content{height:210px}#bbpress-forums fieldset.bbp-forum-form-attributes{width:200px;float:right;clear:none;margin-left:25px}#bbpress-forums fieldset select#bbp_forum_id{max-width:200px}.bbp-reply-form,.bbp-topic-form,.bbp-topic-tag-form{clear:left}body.reply-edit .bbp-reply-form div.avatar img,body.single-forum .bbp-topic-form div.avatar img,body.single-reply .bbp-reply-form div.avatar img,body.topic-edit .bbp-topic-form div.avatar img{margin-right:0;padding:10px;border:1px solid #ddd;line-height:0;background-color:#efefef}body.page .bbp-reply-form code,body.page .bbp-topic-form code,body.reply-edit .bbp-reply-form code,body.single-forum .bbp-topic-form code,body.single-topic .bbp-reply-form code,body.topic-edit .bbp-topic-form code{font-size:10px;background-color:#f0fff8;border:1px solid #ceefe1;display:block;padding:8px;margin-top:5px;width:369px}#delete_tag,#merge_tag{display:inline}div.bbp-submit-wrapper{margin-top:15px;float:right;clear:both}p.form-allowed-tags{max-width:100%}#bbpress-forums div.bbp-the-content-wrapper{margin-bottom:10px}#bbpress-forums div.bbp-the-content-wrapper textarea.bbp-the-content{width:100%;margin:0;font-size:12px}#bbpress-forums div.bbp-the-content-wrapper table,#bbpress-forums div.bbp-the-content-wrapper tbody,#bbpress-forums div.bbp-the-content-wrapper td,#bbpress-forums div.bbp-the-content-wrapper tr{border:none;padding:0;margin:0;width:auto;line-height:1}#bbpress-forums div.bbp-the-content-wrapper input[type=button]{padding:5px 7px;margin:0 -1px 0 0;line-height:1;border:1px solid transparent;background-color:transparent;box-shadow:none;text-shadow:none;border-radius:0;text-transform:uppercase;font-size:11px}#bbpress-forums div.bbp-the-content-wrapper input[type=button]:hover{border-color:rgba(0,0,0,.1);background-color:rgba(255,255,255,.5)}#bbpress-forums div.bbp-the-content-wrapper div.quicktags-toolbar{padding:5px;min-height:26px}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar{padding:4px 4px 8px}#bbpress-forums div.wp-editor-container{margin:0;padding:0;line-height:0}#bbpress-forums div.bbp-the-content-wrapper td.mceStatusbar{line-height:16px}#bbpress-forums #bbp-your-profile fieldset{padding:20px 20px 0}#bbpress-forums #bbp-your-profile fieldset div{margin-bottom:20px;float:left;width:100%;clear:left}#bbpress-forums #bbp-your-profile fieldset select{margin-bottom:0;width:60%;background-color:#f9f9f9;border:1px solid #ddd}#bbpress-forums #bbp-your-profile fieldset input,#bbpress-forums #bbp-your-profile fieldset textarea{margin-bottom:0;width:60%;background-color:#f9f9f9;border:1px solid #ddd;box-shadow:none;border-radius:0}#bbpress-forums #bbp-your-profile fieldset input:focus,#bbpress-forums #bbp-your-profile fieldset textarea:focus{border:1px solid #ccc;box-shadow:inset 1px 1px 1px rgba(0,0,0,.1);outline-color:rgba(240,255,240,.1)}#bbpress-forums #bbp-your-profile fieldset.bbp-form input.checkbox{width:auto}#bbpress-forums #bbp-your-profile fieldset legend{display:none}#bbpress-forums #bbp-your-profile fieldset label[for]{float:left;width:20%;padding:5px 20px 5px 0;text-align:right;cursor:pointer}#bbpress-forums #bbp-your-profile fieldset dl label[for]{text-align:left;width:60%}#bbpress-forums #bbp-your-profile fieldset p.description{margin:5px 0 0 20%;font-size:12px;font-style:italic;float:left;clear:left;width:60%;padding:5px 8px;border:#cee1ef 1px solid;background-color:#f0f8ff}#bbpress-forums #bbp-your-profile fieldset fieldset{margin:0;border:none;padding:0;clear:none;float:none}#bbpress-forums #bbp-your-profile fieldset fieldset.capabilities dl{margin:0}#bbpress-forums #bbp-your-profile fieldset.submit button{float:right}#bbpress-forums #bbp-your-profile fieldset fieldset.password{width:60%;display:inline}#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-button-wrapper,#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-input-wrapper{width:100%;margin:0;display:inline-block}#bbpress-forums #bbp-your-profile fieldset fieldset.password .password-button-wrapper button{width:46%;margin:4% 2%;box-sizing:border-box;display:inline-block}#bbpress-forums #bbp-your-profile fieldset fieldset.password input,#bbpress-forums #bbp-your-profile fieldset fieldset.passwword textarea{width:100%}#bbpress-forums #bbp-your-profile fieldset fieldset.password button .dashicons{display:none}#bbpress-forums #bbp-your-profile fieldset fieldset.password span.description{margin-left:0;margin-bottom:20px}#bbpress-forums #password #pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:0;padding:8px;text-align:center;box-sizing:border-box;display:inline-block}#bbpress-forums #password #pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#bbpress-forums #password #pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#bbpress-forums #password #pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#bbpress-forums #password #pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#bbpress-forums #password #pass1-text.short,#bbpress-forums #password #pass1.short{border-color:#e35b5b}#bbpress-forums #password #pass1-text.bad,#bbpress-forums #password#pass1.bad{border-color:#f78b53}#bbpress-forums #password #pass1-text.good,#bbpress-forums #password #pass1.good{border-color:#ffc733}#bbpress-forums #password #pass1-text.strong,#bbpress-forums #password #pass1.strong{border-color:#83c373}#bbpress-forums .indicator-hint{padding-top:8px}#bbpress-forums #pass1-text,#bbpress-forums .pw-weak,#bbpress-forums .show-password #pass1{display:none}#bbpress-forums .show-password #pass1-text{display:inline-block}div.bbp-template-notice,div.indicator-hint{border-width:1px;border-style:solid;padding:0 .6em;margin:5px 0 15px;border-radius:3px;background-color:#ffffe0;border-color:#e6db55;color:#000;clear:both}div.bbp-template-notice a{color:#555;text-decoration:none}div.bbp-template-notice a:hover{color:#000}div.bbp-template-notice.info{border:#cee1ef 1px solid;background-color:#f0f8ff}div.bbp-template-notice.important{border:#e6db55 1px solid;background-color:#fffbcc}div.bbp-template-notice.error,div.bbp-template-notice.warning{background-color:#ffebe8;border-color:#c00}div.bbp-template-notice.error a,div.bbp-template-notice.warning a{color:#c00}div.bbp-template-notice li,div.bbp-template-notice p{margin:.5em 0 6px!important;padding:2px;font-size:12px;line-height:1.4}.bbp-forum-content ul.sticky,.bbp-topics ul.sticky,.bbp-topics ul.super-sticky,.bbp-topics-front ul.super-sticky{background-color:#ffffe0!important;font-size:1.1em}#bbpress-forums .bbp-reply-content ul.bbp-reply-revision-log,#bbpress-forums .bbp-reply-content ul.bbp-topic-revision-log,#bbpress-forums .bbp-topic-content ul.bbp-topic-revision-log{border-top:1px dotted #ddd;width:100%;margin:0;padding:8px 0 0;font-size:11px;color:#aaa}#bbpress-forums .bbp-reply-content ul.bbp-reply-revision-log li,#bbpress-forums .bbp-reply-content ul.bbp-topic-revision-log li,#bbpress-forums .bbp-topic-content ul.bbp-topic-revision-log li{list-style-type:none}.bbp-login-form fieldset legend{display:none}.bbp-login-form .bbp-email input,.bbp-login-form .bbp-password input,.bbp-login-form .bbp-username input{padding:5px}.bbp-login-form label{width:140px;display:inline-block}#sidebar .bbp-login-form label{width:70px}.bbp-login-form .bbp-email,.bbp-login-form .bbp-password,.bbp-login-form .bbp-remember-me,.bbp-login-form .bbp-submit-wrapper,.bbp-login-form .bbp-username{margin-top:10px}.bbp-login-form .bbp-submit-wrapper{text-align:right}.bbp-login-form .bbp-login-links a{float:left;clear:left}.bbp-logged-in img.avatar{float:left;margin:0 15px 0 0}.bbp-logged-in h4{font-weight:700;font-size:1.3em;clear:none;margin-bottom:10px}#bbpress-forums img.avatar{box-shadow:none;display:inline-block}#bbpress-forums .widget_display_replies img.avatar,#bbpress-forums .widget_display_topics img.avatar,#bbpress-forums div.bbp-template-notice img.avatar,#bbpress-forums p.bbp-topic-meta img.avatar,#bbpress-forums ul.bbp-reply-revision-log img.avatar,#bbpress-forums ul.bbp-topic-revision-log img.avatar{float:none;vertical-align:middle;border:3px double #ddd}fieldset div.avatar{float:right}.activity-list li.bbp_reply_create .activity-content .activity-inner,.activity-list li.bbp_topic_create .activity-content .activity-inner{border-left:2px solid #eaeaea;margin-left:5px;padding-left:10px}#bbpress-forums h1{clear:none;font-size:1.8em;line-height:1;padding-bottom:10px}#bbpress-forums #bbp-user-wrapper{float:left;width:100%}#bbpress-forums .bbp-user-section{overflow:auto;clear:right}#bbpress-forums #bbp-user-wrapper h2.entry-title{font-size:1.4em;margin:0;padding-bottom:10px;padding-top:0;clear:none}#bbpress-forums #bbp-user-wrapper fieldset.bbp-form,#bbpress-forums #bbp-user-wrapper ul.bbp-forums,#bbpress-forums #bbp-user-wrapper ul.bbp-lead-topic,#bbpress-forums #bbp-user-wrapper ul.bbp-replies,#bbpress-forums #bbp-user-wrapper ul.bbp-topics{clear:none}#bbpress-forums #bbp-single-user-details{margin:0;width:150px;float:left;overflow:hidden}#bbpress-forums #bbp-single-user-details #bbp-user-avatar{margin:0;width:150px}#bbpress-forums #bbp-single-user-details #bbp-user-avatar img.avatar{border:none;height:150px;padding:0;margin:0 0 20px;width:150px}#bbpress-forums #bbp-single-user-details #bbp-user-description{float:none;margin-left:180px}#bbpress-forums #bbp-single-user-details #bbp-user-navigation{float:none;margin:0}#bbpress-forums #bbp-single-user-details #bbp-user-navigation li{margin:0}#bbpress-forums #bbp-single-user-details #bbp-user-navigation a{padding:5px 8px;display:block;border:1px solid transparent;text-decoration:none}#bbpress-forums #bbp-single-user-details #bbp-user-navigation li.current a{background:#eee;opacity:.8}#bbpress-forums #bbp-user-body{margin-left:180px}body.my-account #bbpress-forums{border-top:none;padding-top:0;margin-bottom:0}#bbpress-forums dl.bbp-user-capabilities{display:inline-block;vertical-align:top}#bbpress-forums dl.bbp-user-capabilities dt{margin:0 0 10px;text-transform:capitalize}#bbpress-forums dl.bbp-user-capabilities dd{margin:0;padding:0}.bbp-alert-outer{height:100%;width:100%;top:0;left:0;position:fixed;background-color:rgba(0,0,0,.2);z-index:99999}.bbp-alert-inner{width:350px;text-align:center;background:#fff;position:fixed;top:50%;left:50%;margin-top:-75px;margin-left:-185px;border-radius:3px;border:1px solid #aaa;padding:15px 10px 10px}.bbp-alert-outer .bbp-alert-inner p{margin:10px 0}.bbp-alert-actions a{padding:5px 20px;text-decoration:none}@media only screen and (max-width:480px){#bbpress-forums div.bbp-topic-tags{clear:left;float:left}div.bbp-search-form button,div.bbp-search-form input{font-size:11px;padding:2px}li.bbp-forum-info,li.bbp-topic-title{width:45%}li.bbp-forum-reply-count,li.bbp-forum-topic-count,li.bbp-topic-reply-count,li.bbp-topic-voice-count{width:15%}span.bbp-reply-post-date,span.bbp-topic-post-date{float:left}span.bbp-admin-links{clear:left;float:left}#bbpress-forums .bbp-forums-list li,#bbpress-forums .bbp-forums-list span{display:block;font-size:11px}#bbpress-forums .bbp-body div.bbp-reply-author,#bbpress-forums .bbp-body div.bbp-topic-author{margin:-15px 10px 10px;min-height:100px;padding-left:80px;position:relative;text-align:left;width:100%}#bbpress-forums div.bbp-reply-author .bbp-author-name,#bbpress-forums div.bbp-topic-author .bbp-author-name{clear:none;display:inline-block;margin-left:0;word-wrap:break-word}#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{position:absolute;top:15px;left:0;width:60px;height:auto}#bbpress-forums div.bbp-reply-author .bbp-author-role,#bbpress-forums div.bbp-topic-author .bbp-author-role{font-size:12px;font-style:normal}#bbpress-forums .bbp-body div.bbp-reply-content,#bbpress-forums .bbp-body div.bbp-topic-content{clear:both;margin:10px;padding:0}#bbpress-forums div.bbp-reply-content p,#bbpress-forums div.bbp-topic-content p{margin-bottom:1em}div.bbp-submit-wrapper{float:left}#bbpress-forums fieldset.bbp-form{padding:0 10px 10px}#bbpress-forums #bbp-user-body{clear:both;margin-left:0;word-wrap:break-word}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:14px}}@media only screen and (max-width:320px){#bbpress-forums div.bbp-search-form{margin-bottom:10px}#bbpress-forums li.bbp-body li.bbp-forum-info,#bbpress-forums li.bbp-body li.bbp-topic-title,#bbpress-forums li.bbp-header li.bbp-forum-info,#bbpress-forums li.bbp-header li.bbp-topic-title{width:100%}#bbpress-forums li.bbp-header li.bbp-forum-info,#bbpress-forums li.bbp-header li.bbp-topic-title{text-align:center;text-transform:uppercase}#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count,#bbpress-forums li.bbp-header li.bbp-forum-reply-count,#bbpress-forums li.bbp-header li.bbp-forum-topic-count,#bbpress-forums li.bbp-header li.bbp-topic-reply-count,#bbpress-forums li.bbp-header li.bbp-topic-voice-count{width:20%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{width:58%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count{margin-top:7px}#bbpress-forums li.bbp-footer,#bbpress-forums li.bbp-header{font-size:10px}#bbpress-forums li.bbp-header div.bbp-reply-author,#bbpress-forums li.bbp-header div.bbp-search-author,#bbpress-forums li.bbp-header div.bbp-topic-author{text-align:left;width:25%}#bbpress-forums li.bbp-header div.bbp-reply-content,#bbpress-forums li.bbp-header div.bbp-search-content,#bbpress-forums li.bbp-header div.bbp-topic-content{margin-left:25%}#bbpress-forums div.bbp-template-notice img.avatar,#bbpress-forums p.bbp-topic-meta img.avatar{width:14px;height:auto}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar{padding:1px}#bbpress-forums div.bbp-the-content-wrapper td.mceToolbar td{width:20px;height:20px}#bbpress-forums div.wp-editor-container{width:100%;overflow:auto}#bbpress-forums input#bbp_topic_tags,#bbpress-forums input#bbp_topic_title{width:95%}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:14px}}@media only screen and (max-width:240px){#bbpress-forums li.bbp-body li.bbp-forum-reply-count,#bbpress-forums li.bbp-body li.bbp-forum-topic-count,#bbpress-forums li.bbp-body li.bbp-topic-reply-count,#bbpress-forums li.bbp-body li.bbp-topic-voice-count,#bbpress-forums li.bbp-footer div.bbp-reply-author,#bbpress-forums li.bbp-footer div.bbp-search-author,#bbpress-forums li.bbp-footer div.bbp-topic-author,#bbpress-forums li.bbp-header li.bbp-forum-reply-count,#bbpress-forums li.bbp-header li.bbp-forum-topic-count,#bbpress-forums li.bbp-header li.bbp-topic-reply-count,#bbpress-forums li.bbp-header li.bbp-topic-voice-count{width:45%}#bbpress-forums li.bbp-body li.bbp-forum-freshness,#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{clear:both;width:100%}#bbpress-forums li.bbp-header li.bbp-forum-freshness,#bbpress-forums li.bbp-header li.bbp-topic-freshness{text-align:center}#bbpress-forums li.bbp-body li.bbp-topic-freshness,#bbpress-forums li.bbp-header div.bbp-reply-author,#bbpress-forums li.bbp-header div.bbp-reply-content,#bbpress-forums li.bbp-header div.bbp-search-author,#bbpress-forums li.bbp-header div.bbp-search-content,#bbpress-forums li.bbp-header div.bbp-topic-author,#bbpress-forums li.bbp-header div.bbp-topic-content{margin-left:0;text-align:left}#bbpress-forums li.bbp-body li.bbp-topic-freshness p.bbp-topic-meta{display:inline-block}#bbpress-forums li.bbp-header{overflow:hidden}#bbpress-forums li.bbp-footer div.bbp-reply-content,#bbpress-forums li.bbp-footer div.bbp-search-content,#bbpress-forums li.bbp-footer div.bbp-topic-content{display:inline-block;margin-left:0}#bbpress-forums li.bbp-body div.bbp-reply-author,#bbpress-forums li.bbp-body div.bbp-topic-author{min-height:60px;padding-left:60px}#bbpress-forums div.bbp-reply-author img.avatar,#bbpress-forums div.bbp-topic-author img.avatar{width:40px;height:auto}#bbpress-forums div.bbp-forum-title h3,#bbpress-forums div.bbp-reply-title h3,#bbpress-forums div.bbp-topic-title h3{font-size:12px}}