[ Index ] |
PHP Cross Reference of BBPress |
[Summary view] [Print] [Text view]
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> </p>' with '<p> </p>' 608 $simplepress_markup = preg_replace( '/\n( |[\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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Oct 8 01:00:48 2024 | Cross-referenced by PHPXref 0.7.1 |