PluginProbe
Forumax – AI Powered Advanced Community Forum Plugin / 2.0.0
Forumax – AI Powered Advanced Community Forum Plugin v2.0.0
2.5.1 2.5.0 2.4.4 2.4.3 2.4.2 2.4.1 2.4.0 trunk 1.0.8 1.1.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 All 31 releases
bbp-core / vendor / bbpress / includes / admin / converters / SimplePress5.php

SimplePress5.php in Forumax – AI Powered Advanced Community Forum Plugin 2.0.0, at vendor/bbpress/includes/admin/converters/SimplePress5.php

617 lines 19.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * bbPress SimplePress5 Converter
5 *
6 * @package bbPress
7 * @subpackage Converters
8 */
9
10 /**
11 * Implementation of SimplePress v5 converter.
12 *
13 * @since 2.3.0 bbPress (r4638)
14 *
15 * @link Codex Docs https://codex.bbpress.org/import-forums/simplepress/
16 */
17 class SimplePress5 extends BBP_Converter_Base {
18
19 /**
20 * Main Constructor
21 *
22 */
23 public function __construct() {
24 parent::__construct();
25 }
26
27 /**
28 * Sets up the field mappings
29 */
30 public function setup_globals() {
31
32 // Setup smiley URL & path
33 $this->bbcode_parser_properties = array(
34 'smiley_url' => false,
35 'smiley_dir' => false
36 );
37
38 /** Forum Section *****************************************************/
39
40 // Old forum id (Stored in postmeta)
41 $this->field_map[] = array(
42 'from_tablename' => 'sfforums',
43 'from_fieldname' => 'forum_id',
44 'to_type' => 'forum',
45 'to_fieldname' => '_bbp_old_forum_id'
46 );
47
48 // Forum parent id (If no parent, then 0, Stored in postmeta)
49 $this->field_map[] = array(
50 'from_tablename' => 'sfforums',
51 'from_fieldname' => 'parent',
52 'to_type' => 'forum',
53 'to_fieldname' => '_bbp_old_forum_parent_id'
54 );
55
56 // Forum topic count (Stored in postmeta)
57 $this->field_map[] = array(
58 'from_tablename' => 'sfforums',
59 'from_fieldname' => 'topic_count',
60 'to_type' => 'forum',
61 'to_fieldname' => '_bbp_topic_count'
62 );
63
64 // Forum reply count (Stored in postmeta)
65 $this->field_map[] = array(
66 'from_tablename' => 'sfforums',
67 'from_fieldname' => 'post_count',
68 'to_type' => 'forum',
69 'to_fieldname' => '_bbp_reply_count'
70 );
71
72 // Forum total topic count (Stored in postmeta)
73 $this->field_map[] = array(
74 'from_tablename' => 'sfforums',
75 'from_fieldname' => 'topic_count',
76 'to_type' => 'forum',
77 'to_fieldname' => '_bbp_total_topic_count'
78 );
79
80 // Forum total reply count (Stored in postmeta)
81 $this->field_map[] = array(
82 'from_tablename' => 'sfforums',
83 'from_fieldname' => 'post_count',
84 'to_type' => 'forum',
85 'to_fieldname' => '_bbp_total_reply_count'
86 );
87
88 // Forum title.
89 $this->field_map[] = array(
90 'from_tablename' => 'sfforums',
91 'from_fieldname' => 'forum_name',
92 'to_type' => 'forum',
93 'to_fieldname' => 'post_title'
94 );
95
96 // Forum slug (Clean name to avoid conflicts)
97 $this->field_map[] = array(
98 'from_tablename' => 'sfforums',
99 'from_fieldname' => 'forum_name',
100 'to_type' => 'forum',
101 'to_fieldname' => 'post_name',
102 'callback_method' => 'callback_slug'
103 );
104
105 // Forum description.
106 $this->field_map[] = array(
107 'from_tablename' => 'sfforums',
108 'from_fieldname' => 'forum_desc',
109 'to_type' => 'forum',
110 'to_fieldname' => 'post_content',
111 'callback_method' => 'callback_null'
112 );
113
114 // Forum display order (Starts from 1)
115 $this->field_map[] = array(
116 'from_tablename' => 'sfforums',
117 'from_fieldname' => 'forum_seq',
118 'to_type' => 'forum',
119 'to_fieldname' => 'menu_order'
120 );
121
122 // Forum type (Set a default value 'forum', Stored in postmeta)
123 $this->field_map[] = array(
124 'to_type' => 'forum',
125 'to_fieldname' => '_bbp_forum_type',
126 'default' => 'forum'
127 );
128
129 // Forum status (Set a default value 'open', Stored in postmeta)
130 $this->field_map[] = array(
131 'to_type' => 'forum',
132 'to_fieldname' => '_bbp_status',
133 'default' => 'open'
134 );
135
136 // Forum dates.
137 $this->field_map[] = array(
138 'to_type' => 'forums',
139 'to_fieldname' => 'post_date',
140 'default' => date('Y-m-d H:i:s')
141 );
142 $this->field_map[] = array(
143 'to_type' => 'forums',
144 'to_fieldname' => 'post_date_gmt',
145 'default' => date('Y-m-d H:i:s')
146 );
147 $this->field_map[] = array(
148 'to_type' => 'forums',
149 'to_fieldname' => 'post_modified',
150 'default' => date('Y-m-d H:i:s')
151 );
152 $this->field_map[] = array(
153 'to_type' => 'forums',
154 'to_fieldname' => 'post_modified_gmt',
155 'default' => date('Y-m-d H:i:s')
156 );
157
158 /** Topic Section *****************************************************/
159
160 // Old topic id (Stored in postmeta)
161 $this->field_map[] = array(
162 'from_tablename' => 'sftopics',
163 'from_fieldname' => 'topic_id',
164 'to_type' => 'topic',
165 'to_fieldname' => '_bbp_old_topic_id'
166 );
167
168 // Topic reply count (Stored in postmeta)
169 $this->field_map[] = array(
170 'from_tablename' => 'sftopics',
171 'from_fieldname' => 'post_count',
172 'to_type' => 'topic',
173 'to_fieldname' => '_bbp_reply_count',
174 'callback_method' => 'callback_topic_reply_count'
175 );
176
177 // Topic parent forum id (If no parent, then 0. Stored in postmeta)
178 $this->field_map[] = array(
179 'from_tablename' => 'sftopics',
180 'from_fieldname' => 'forum_id',
181 'to_type' => 'topic',
182 'to_fieldname' => '_bbp_forum_id',
183 'callback_method' => 'callback_forumid'
184 );
185
186 // Topic author.
187 $this->field_map[] = array(
188 'from_tablename' => 'sftopics',
189 'from_fieldname' => 'user_id',
190 'to_type' => 'topic',
191 'to_fieldname' => 'post_author',
192 'callback_method' => 'callback_userid'
193 );
194
195 // Topic author ip (Stored in postmeta)
196 $this->field_map[] = array(
197 'from_tablename' => 'sfposts',
198 'from_fieldname' => 'poster_ip',
199 'join_tablename' => 'sftopics',
200 'join_type' => 'INNER',
201 'join_expression' => 'USING (topic_id) WHERE sfposts.post_index = 1',
202 'to_type' => 'topic',
203 'to_fieldname' => '_bbp_author_ip'
204 );
205
206 // Topic author name (Stored in postmeta as _bbp_anonymous_name)
207 $this->field_map[] = array(
208 'from_tablename' => 'sfposts',
209 'from_fieldname' => 'guest_name',
210 'join_tablename' => 'sftopics',
211 'join_type' => 'INNER',
212 'join_expression' => 'USING (topic_id) WHERE sfposts.post_index = 1',
213 'to_type' => 'topic',
214 'to_fieldname' => '_bbp_old_topic_author_name_id'
215 );
216
217 // Is the topic anonymous (Stored in postmeta)
218 $this->field_map[] = array(
219 'from_tablename' => 'sftopics',
220 'from_fieldname' => 'user_id',
221 'to_type' => 'topic',
222 'to_fieldname' => '_bbp_old_is_topic_anonymous_id',
223 'callback_method' => 'callback_check_anonymous'
224 );
225
226 // Topic content.
227 // Note: We join the sfposts table because sftopics do not have content.
228 $this->field_map[] = array(
229 'from_tablename' => 'sfposts',
230 'from_fieldname' => 'post_content',
231 'join_tablename' => 'sftopics',
232 'join_type' => 'INNER',
233 'join_expression' => 'USING (topic_id) WHERE sfposts.post_index = 1',
234 'to_type' => 'topic',
235 'to_fieldname' => 'post_content',
236 'callback_method' => 'callback_html'
237 );
238
239 // Topic title.
240 $this->field_map[] = array(
241 'from_tablename' => 'sftopics',
242 'from_fieldname' => 'topic_name',
243 'to_type' => 'topic',
244 'to_fieldname' => 'post_title'
245 );
246
247 // Topic slug (Clean name to avoid conflicts)
248 $this->field_map[] = array(
249 'from_tablename' => 'sftopics',
250 'from_fieldname' => 'topic_name',
251 'to_type' => 'topic',
252 'to_fieldname' => 'post_name',
253 'callback_method' => 'callback_slug'
254 );
255
256 // Topic parent forum id (If no parent, then 0)
257 $this->field_map[] = array(
258 'from_tablename' => 'sftopics',
259 'from_fieldname' => 'forum_id',
260 'to_type' => 'topic',
261 'to_fieldname' => 'post_parent',
262 'callback_method' => 'callback_forumid'
263 );
264
265 // Topic status (Open or Closed)
266 $this->field_map[] = array(
267 'from_tablename' => 'sftopics',
268 'from_fieldname' => 'topic_status',
269 'to_type' => 'topic',
270 'to_fieldname' => '_bbp_old_closed_status_id',
271 'callback_method' => 'callback_status'
272 );
273
274 // Sticky status (Stored in postmeta)
275 $this->field_map[] = array(
276 'from_tablename' => 'sftopics',
277 'from_fieldname' => 'topic_pinned',
278 'to_type' => 'topic',
279 'to_fieldname' => '_bbp_old_sticky_status_id',
280 'callback_method' => 'callback_sticky_status'
281 );
282
283 // Topic dates.
284 $this->field_map[] = array(
285 'from_tablename' => 'sftopics',
286 'from_fieldname' => 'topic_date',
287 'to_type' => 'topic',
288 'to_fieldname' => 'post_date'
289 );
290 $this->field_map[] = array(
291 'from_tablename' => 'sftopics',
292 'from_fieldname' => 'topic_date',
293 'to_type' => 'topic',
294 'to_fieldname' => 'post_date_gmt'
295 );
296 $this->field_map[] = array(
297 'from_tablename' => 'sftopics',
298 'from_fieldname' => 'topic_date',
299 'to_type' => 'topic',
300 'to_fieldname' => 'post_modified'
301 );
302 $this->field_map[] = array(
303 'from_tablename' => 'sftopics',
304 'from_fieldname' => 'topic_date',
305 'to_type' => 'topic',
306 'to_fieldname' => 'post_modified_gmt'
307 );
308 $this->field_map[] = array(
309 'from_tablename' => 'sftopics',
310 'from_fieldname' => 'topic_date',
311 'to_type' => 'topic',
312 'to_fieldname' => '_bbp_last_active_time'
313 );
314
315 /** Tags Section ******************************************************/
316
317 /**
318 * SimplePress Forums do not support topic tags without paid extensions
319 */
320
321 /** Reply Section *****************************************************/
322
323 // Old reply id (Stored in postmeta)
324 $this->field_map[] = array(
325 'from_tablename' => 'sfposts',
326 'from_fieldname' => 'post_id',
327 'to_type' => 'reply',
328 'to_fieldname' => '_bbp_old_reply_id'
329 );
330
331 // Reply parent forum id (If no parent, then 0. Stored in postmeta)
332 $this->field_map[] = array(
333 'from_tablename' => 'sfposts',
334 'from_fieldname' => 'forum_id',
335 'from_expression' => 'WHERE post_index != 1',
336 'to_type' => 'reply',
337 'to_fieldname' => '_bbp_forum_id',
338 'callback_method' => 'callback_forumid'
339 );
340
341 // Reply parent topic id (If no parent, then 0. Stored in postmeta)
342 $this->field_map[] = array(
343 'from_tablename' => 'sfposts',
344 'from_fieldname' => 'topic_id',
345 'to_type' => 'reply',
346 'to_fieldname' => '_bbp_topic_id',
347 'callback_method' => 'callback_topicid'
348 );
349
350 // Reply author ip (Stored in postmeta)
351 $this->field_map[] = array(
352 'from_tablename' => 'sfposts',
353 'from_fieldname' => 'poster_ip',
354 'to_type' => 'reply',
355 'to_fieldname' => '_bbp_author_ip'
356 );
357
358 // Reply author.
359 $this->field_map[] = array(
360 'from_tablename' => 'sfposts',
361 'from_fieldname' => 'user_id',
362 'to_type' => 'reply',
363 'to_fieldname' => 'post_author',
364 'callback_method' => 'callback_userid'
365 );
366
367 // Reply author name (Stored in postmeta as _bbp_anonymous_name)
368 $this->field_map[] = array(
369 'from_tablename' => 'sfposts',
370 'from_fieldname' => 'guest_name',
371 'to_type' => 'reply',
372 'to_fieldname' => '_bbp_old_reply_author_name_id'
373 );
374
375 // Is the reply anonymous (Stored in postmeta)
376 $this->field_map[] = array(
377 'from_tablename' => 'sfposts',
378 'from_fieldname' => 'user_id',
379 'to_type' => 'reply',
380 'to_fieldname' => '_bbp_old_is_reply_anonymous_id',
381 'callback_method' => 'callback_check_anonymous'
382 );
383
384 // Reply content.
385 $this->field_map[] = array(
386 'from_tablename' => 'sfposts',
387 'from_fieldname' => 'post_content',
388 'to_type' => 'reply',
389 'to_fieldname' => 'post_content',
390 'callback_method' => 'callback_html'
391 );
392
393 // Reply parent topic id (If no parent, then 0)
394 $this->field_map[] = array(
395 'from_tablename' => 'sfposts',
396 'from_fieldname' => 'topic_id',
397 'to_type' => 'reply',
398 'to_fieldname' => 'post_parent',
399 'callback_method' => 'callback_topicid'
400 );
401
402 // Reply dates.
403 $this->field_map[] = array(
404 'from_tablename' => 'sfposts',
405 'from_fieldname' => 'post_date',
406 'to_type' => 'reply',
407 'to_fieldname' => 'post_date'
408 );
409 $this->field_map[] = array(
410 'from_tablename' => 'sfposts',
411 'from_fieldname' => 'post_date',
412 'to_type' => 'reply',
413 'to_fieldname' => 'post_date_gmt'
414 );
415 $this->field_map[] = array(
416 'from_tablename' => 'sfposts',
417 'from_fieldname' => 'post_date',
418 'to_type' => 'reply',
419 'to_fieldname' => 'post_modified'
420 );
421 $this->field_map[] = array(
422 'from_tablename' => 'sfposts',
423 'from_fieldname' => 'post_date',
424 'to_type' => 'reply',
425 'to_fieldname' => 'post_modified_gmt'
426 );
427
428 /** User Section ******************************************************/
429
430 // Store old user id (Stored in usermeta)
431 $this->field_map[] = array(
432 'from_tablename' => 'users',
433 'from_fieldname' => 'ID',
434 'to_type' => 'user',
435 'to_fieldname' => '_bbp_old_user_id'
436 );
437
438 // Store old user password (Stored in usermeta)
439 $this->field_map[] = array(
440 'from_tablename' => 'users',
441 'from_fieldname' => 'user_pass',
442 'to_type' => 'user',
443 'to_fieldname' => '_bbp_password'
444 );
445
446 // User name.
447 $this->field_map[] = array(
448 'from_tablename' => 'users',
449 'from_fieldname' => 'user_login',
450 'to_type' => 'user',
451 'to_fieldname' => 'user_login'
452 );
453
454 // User nice name.
455 $this->field_map[] = array(
456 'from_tablename' => 'users',
457 'from_fieldname' => 'user_nicename',
458 'to_type' => 'user',
459 'to_fieldname' => 'user_nicename'
460 );
461
462 // User email.
463 $this->field_map[] = array(
464 'from_tablename' => 'users',
465 'from_fieldname' => 'user_email',
466 'to_type' => 'user',
467 'to_fieldname' => 'user_email'
468 );
469
470 // User homepage.
471 $this->field_map[] = array(
472 'from_tablename' => 'users',
473 'from_fieldname' => 'user_url',
474 'to_type' => 'user',
475 'to_fieldname' => 'user_url'
476 );
477
478 // User registered.
479 $this->field_map[] = array(
480 'from_tablename' => 'users',
481 'from_fieldname' => 'user_registered',
482 'to_type' => 'user',
483 'to_fieldname' => 'user_registered'
484 );
485
486 // User status.
487 $this->field_map[] = array(
488 'from_tablename' => 'users',
489 'from_fieldname' => 'user_status',
490 'to_type' => 'user',
491 'to_fieldname' => 'user_status'
492 );
493
494 // User display name.
495 $this->field_map[] = array(
496 'from_tablename' => 'users',
497 'from_fieldname' => 'display_name',
498 'to_type' => 'user',
499 'to_fieldname' => 'display_name'
500 );
501 }
502
503 /**
504 * This method allows us to indicates what is or is not converted for each
505 * converter.
506 */
507 public function info() {
508 return '';
509 }
510
511 /**
512 * This method is to save the salt and password together. That
513 * way when we authenticate it we can get it out of the database
514 * as one value. Array values are auto sanitized by WordPress.
515 */
516 public function callback_savepass( $field, $row ) {
517 return false;
518 }
519
520 /**
521 * This method is to take the pass out of the database and compare
522 * to a pass the user has typed in.
523 */
524 public function authenticate_pass( $password, $serialized_pass ) {
525 return false;
526 }
527
528 /**
529 * Translate the post status from Simple:Press v5.x numerics to WordPress's strings.
530 *
531 * @param int $status Simple:Press numeric status
532 * @return string WordPress safe
533 */
534 public function callback_status( $status = 0 ) {
535 switch ( $status ) {
536 case 1 :
537 $status = 'closed';
538 break;
539
540 case 0 :
541 default :
542 $status = 'publish';
543 break;
544 }
545 return $status;
546 }
547
548 /**
549 * Translate the topic sticky status type from Simple:Press v5.x numerics to WordPress's strings.
550 *
551 * @param int $status Simple:Press v5.x numeric forum type
552 * @return string WordPress safe
553 */
554 public function callback_sticky_status( $status = 0 ) {
555 switch ( $status ) {
556 case 1 :
557 $status = 'sticky'; // Simple:Press Sticky 'topic_sticky = 1'
558 break;
559
560 case 0 :
561 default :
562 $status = 'normal'; // Simple:Press Normal Topic 'topic_sticky = 0'
563 break;
564 }
565 return $status;
566 }
567
568 /**
569 * Verify the topic reply count.
570 *
571 * @param int $count Simple:Press v5.x reply count
572 * @return string WordPress safe
573 */
574 public function callback_topic_reply_count( $count = 1 ) {
575 $count = absint( (int) $count - 1 );
576 return $count;
577 }
578
579 /**
580 * This callback processes any custom parser.php attributes and custom HTML code with preg_replace
581 */
582 protected function callback_html( $field ) {
583
584 // Strip any custom HTML not supported by parser.php first from $field before parsing $field to parser.php
585 $simplepress_markup = $field;
586 $simplepress_markup = html_entity_decode( $simplepress_markup );
587
588 // Replace any SimplePress smilies from path '/sp-resources/forum-smileys/sf-smily.gif' with the equivelant WordPress Smilie
589 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-confused\.gif(.*?)\" \/>/', ':?' , $simplepress_markup );
590 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-cool\.gif(.*?)\" \/>/', ':cool:', $simplepress_markup );
591 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-cry\.gif(.*?)\" \/>/', ':cry:', $simplepress_markup );
592 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-embarassed\.gif(.*?)\" \/>/' , ':oops:', $simplepress_markup );
593 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-frown\.gif(.*?)\" \/>/', ':(', $simplepress_markup );
594 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-kiss\.gif(.*?)\" \/>/', ':P', $simplepress_markup );
595 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-laugh\.gif(.*?)\" \/>/', ':D', $simplepress_markup );
596 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-smile\.gif(.*?)\" \/>/', ':smile:', $simplepress_markup );
597 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-surprised\.gif(.*?)\" \/>/', ':o', $simplepress_markup );
598 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-wink\.gif(.*?)\" \/>/', ':wink:', $simplepress_markup );
599 $simplepress_markup = preg_replace( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-yell\.gif(.*?)\" \/>/', ':x', $simplepress_markup );
600
601 // Replace '<div class="sfcode">example code</div>' with '<code>*</code>'
602 $simplepress_markup = preg_replace( '/\<div class\=\"sfcode\"\>(.*?)\<\/div\>/' , '<code>$1</code>' , $simplepress_markup );
603
604 // Replace '<strong>username said </strong>' with '@username said:'
605 $simplepress_markup = preg_replace( '/\<strong\>(.*?)\ said\ \<\/strong\>/', '@$1 said:', $simplepress_markup );
606
607 // Replace '<p>&nbsp;</p>' with '<p>&nbsp;</p>'
608 $simplepress_markup = preg_replace( '/\n(&nbsp;|[\s\p{Z}\xA0\x{00A0}]+)\r/', '<br>', $simplepress_markup );
609
610 // Now that SimplePress' custom HTML codes have been stripped put the cleaned HTML back in $field
611 $field = $simplepress_markup;
612
613 // Parse out any bbCodes in $field with the BBCode 'parser.php'
614 return parent::callback_html( $field );
615 }
616 }
617