[ Index ] |
PHP Cross Reference of BBPress |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * bbPress MyBB Converter 5 * 6 * @package bbPress 7 * @subpackage Converters 8 */ 9 10 /** 11 * Implementation of MyBB Forum converter. 12 * 13 * @since 2.5.0 bbPress (r5140) 14 * 15 * @link Codex Docs https://codex.bbpress.org/import-forums/mybb 16 */ 17 class MyBB 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 /** Forum Section *****************************************************/ 33 34 // Old forum id (Stored in postmeta) 35 $this->field_map[] = array( 36 'from_tablename' => 'forums', 37 'from_fieldname' => 'fid', 38 'to_type' => 'forum', 39 'to_fieldname' => '_bbp_old_forum_id' 40 ); 41 42 // Forum parent id (If no parent, then 0, Stored in postmeta) 43 $this->field_map[] = array( 44 'from_tablename' => 'forums', 45 'from_fieldname' => 'pid', 46 'to_type' => 'forum', 47 'to_fieldname' => '_bbp_old_forum_parent_id' 48 ); 49 50 // Forum topic count (Stored in postmeta) 51 $this->field_map[] = array( 52 'from_tablename' => 'forums', 53 'from_fieldname' => 'threads', 54 'to_type' => 'forum', 55 'to_fieldname' => '_bbp_topic_count' 56 ); 57 58 // Forum reply count (Stored in postmeta) 59 $this->field_map[] = array( 60 'from_tablename' => 'forums', 61 'from_fieldname' => 'posts', 62 'to_type' => 'forum', 63 'to_fieldname' => '_bbp_reply_count' 64 ); 65 66 // Forum title. 67 $this->field_map[] = array( 68 'from_tablename' => 'forums', 69 'from_fieldname' => 'name', 70 'to_type' => 'forum', 71 'to_fieldname' => 'post_title' 72 ); 73 74 // Forum slug (Clean name to avoid conflicts) 75 $this->field_map[] = array( 76 'from_tablename' => 'forums', 77 'from_fieldname' => 'name', 78 'to_type' => 'forum', 79 'to_fieldname' => 'post_name', 80 'callback_method' => 'callback_slug' 81 ); 82 83 // Forum description. 84 $this->field_map[] = array( 85 'from_tablename' => 'forums', 86 'from_fieldname' => 'description', 87 'to_type' => 'forum', 88 'to_fieldname' => 'post_content', 89 'callback_method' => 'callback_null' 90 ); 91 92 // Forum display order (Starts from 1) 93 $this->field_map[] = array( 94 'from_tablename' => 'forums', 95 'from_fieldname' => 'disporder', 96 'to_type' => 'forum', 97 'to_fieldname' => 'menu_order' 98 ); 99 100 // Forum type (Set a default value 'forum', Stored in postmeta) 101 $this->field_map[] = array( 102 'to_type' => 'forum', 103 'to_fieldname' => '_bbp_forum_type', 104 'default' => 'forum' 105 ); 106 107 // Forum status (Set a default value 'open', Stored in postmeta) 108 $this->field_map[] = array( 109 'to_type' => 'forum', 110 'to_fieldname' => '_bbp_status', 111 'default' => 'open' 112 ); 113 114 // Forum dates. 115 $this->field_map[] = array( 116 'to_type' => 'forum', 117 'to_fieldname' => 'post_date', 118 'default' => date('Y-m-d H:i:s') 119 ); 120 $this->field_map[] = array( 121 'to_type' => 'forum', 122 'to_fieldname' => 'post_date_gmt', 123 'default' => date('Y-m-d H:i:s') 124 ); 125 $this->field_map[] = array( 126 'to_type' => 'forum', 127 'to_fieldname' => 'post_modified', 128 'default' => date('Y-m-d H:i:s') 129 ); 130 $this->field_map[] = array( 131 'to_type' => 'forum', 132 'to_fieldname' => 'post_modified_gmt', 133 'default' => date('Y-m-d H:i:s') 134 ); 135 136 /** Topic Section *****************************************************/ 137 138 // Old topic id (Stored in postmeta) 139 $this->field_map[] = array( 140 'from_tablename' => 'threads', 141 'from_fieldname' => 'tid', 142 'to_type' => 'topic', 143 'to_fieldname' => '_bbp_old_topic_id' 144 ); 145 146 // Topic reply count (Stored in postmeta) 147 $this->field_map[] = array( 148 'from_tablename' => 'threads', 149 'from_fieldname' => 'replies', 150 'to_type' => 'topic', 151 'to_fieldname' => '_bbp_reply_count', 152 'callback_method' => 'callback_topic_reply_count' 153 ); 154 155 // Topic total reply count (Includes unpublished replies, Stored in postmeta) 156 $this->field_map[] = array( 157 'from_tablename' => 'threads', 158 'from_fieldname' => 'replies', 159 'to_type' => 'topic', 160 'to_fieldname' => '_bbp_total_reply_count', 161 'callback_method' => 'callback_topic_reply_count' 162 ); 163 164 // Topic parent forum id (If no parent, then 0. Stored in postmeta) 165 $this->field_map[] = array( 166 'from_tablename' => 'threads', 167 'from_fieldname' => 'fid', 168 'to_type' => 'topic', 169 'to_fieldname' => '_bbp_forum_id', 170 'callback_method' => 'callback_forumid' 171 ); 172 173 // Topic author. 174 $this->field_map[] = array( 175 'from_tablename' => 'threads', 176 'from_fieldname' => 'uid', 177 'to_type' => 'topic', 178 'to_fieldname' => 'post_author', 179 'callback_method' => 'callback_userid' 180 ); 181 182 // Topic Author ip (Stored in postmeta) 183 $this->field_map[] = array( 184 'from_tablename' => 'posts', 185 'from_fieldname' => 'ipaddress', 186 'join_tablename' => 'threads', 187 'join_type' => 'INNER', 188 'join_expression' => 'USING (tid) WHERE replyto = 0', 189 'to_type' => 'topic', 190 'to_fieldname' => '_bbp_author_ip' 191 ); 192 193 // Topic content. 194 // Note: We join the 'posts' table because 'threads' table does not have content. 195 $this->field_map[] = array( 196 'from_tablename' => 'posts', 197 'from_fieldname' => 'message', 198 'join_tablename' => 'threads', 199 'join_type' => 'INNER', 200 'join_expression' => 'USING (tid) WHERE replyto = 0', 201 'to_type' => 'topic', 202 'to_fieldname' => 'post_content', 203 'callback_method' => 'callback_html' 204 ); 205 206 // Topic title. 207 $this->field_map[] = array( 208 'from_tablename' => 'threads', 209 'from_fieldname' => 'subject', 210 'to_type' => 'topic', 211 'to_fieldname' => 'post_title' 212 ); 213 214 // Topic slug (Clean name to avoid conflicts) 215 $this->field_map[] = array( 216 'from_tablename' => 'threads', 217 'from_fieldname' => 'subject', 218 'to_type' => 'topic', 219 'to_fieldname' => 'post_name', 220 'callback_method' => 'callback_slug' 221 ); 222 223 // Topic parent forum id (If no parent, then 0) 224 $this->field_map[] = array( 225 'from_tablename' => 'threads', 226 'from_fieldname' => 'fid', 227 'to_type' => 'topic', 228 'to_fieldname' => 'post_parent', 229 'callback_method' => 'callback_forumid' 230 ); 231 232 // Sticky status (Stored in postmeta) 233 $this->field_map[] = array( 234 'from_tablename' => 'threads', 235 'from_fieldname' => 'sticky', 236 'to_type' => 'topic', 237 'to_fieldname' => '_bbp_old_sticky_status_id', 238 'callback_method' => 'callback_sticky_status' 239 ); 240 241 // Topic dates. 242 $this->field_map[] = array( 243 'from_tablename' => 'threads', 244 'from_fieldname' => 'dateline', 245 'to_type' => 'topic', 246 'to_fieldname' => 'post_date', 247 'callback_method' => 'callback_datetime' 248 ); 249 $this->field_map[] = array( 250 'from_tablename' => 'threads', 251 'from_fieldname' => 'dateline', 252 'to_type' => 'topic', 253 'to_fieldname' => 'post_date_gmt', 254 'callback_method' => 'callback_datetime' 255 ); 256 $this->field_map[] = array( 257 'from_tablename' => 'threads', 258 'from_fieldname' => 'lastpost', 259 'to_type' => 'topic', 260 'to_fieldname' => 'post_modified', 261 'callback_method' => 'callback_datetime' 262 ); 263 $this->field_map[] = array( 264 'from_tablename' => 'threads', 265 'from_fieldname' => 'lastpost', 266 'to_type' => 'topic', 267 'to_fieldname' => 'post_modified_gmt', 268 'callback_method' => 'callback_datetime' 269 ); 270 $this->field_map[] = array( 271 'from_tablename' => 'threads', 272 'from_fieldname' => 'lastpost', 273 'to_type' => 'topic', 274 'to_fieldname' => '_bbp_last_active_time', 275 'callback_method' => 'callback_datetime' 276 ); 277 278 // Topic status (Open or Closed, MyBB v1.6.10 open = null & closed = 1) 279 $this->field_map[] = array( 280 'from_tablename' => 'threads', 281 'from_fieldname' => 'closed', 282 'to_type' => 'topic', 283 'to_fieldname' => '_bbp_old_closed_status_id', 284 'callback_method' => 'callback_topic_status' 285 ); 286 287 /** Tags Section ******************************************************/ 288 289 /** 290 * MyBB v1.6.10 Forums do not support topic tags out of the box 291 */ 292 293 /** Reply Section *****************************************************/ 294 295 // Old reply id (Stored in postmeta) 296 $this->field_map[] = array( 297 'from_tablename' => 'posts', 298 'from_fieldname' => 'pid', 299 'from_expression' => 'WHERE replyto != 0', 300 'to_type' => 'reply', 301 'to_fieldname' => '_bbp_old_reply_id' 302 ); 303 304 // Reply parent forum id (If no parent, then 0. Stored in postmeta) 305 $this->field_map[] = array( 306 'from_tablename' => 'posts', 307 'from_fieldname' => 'fid', 308 'to_type' => 'reply', 309 'to_fieldname' => '_bbp_forum_id', 310 'callback_method' => 'callback_topicid_to_forumid' 311 ); 312 313 // Reply parent topic id (If no parent, then 0. Stored in postmeta) 314 $this->field_map[] = array( 315 'from_tablename' => 'posts', 316 'from_fieldname' => 'tid', 317 'to_type' => 'reply', 318 'to_fieldname' => '_bbp_topic_id', 319 'callback_method' => 'callback_topicid' 320 ); 321 322 // Reply author ip (Stored in postmeta) 323 $this->field_map[] = array( 324 'from_tablename' => 'posts', 325 'from_fieldname' => 'ipaddress', 326 'to_type' => 'reply', 327 'to_fieldname' => '_bbp_author_ip' 328 ); 329 330 // Reply author. 331 $this->field_map[] = array( 332 'from_tablename' => 'posts', 333 'from_fieldname' => 'uid', 334 'to_type' => 'reply', 335 'to_fieldname' => 'post_author', 336 'callback_method' => 'callback_userid' 337 ); 338 339 // Reply content. 340 $this->field_map[] = array( 341 'from_tablename' => 'posts', 342 'from_fieldname' => 'message', 343 'to_type' => 'reply', 344 'to_fieldname' => 'post_content', 345 'callback_method' => 'callback_html' 346 ); 347 348 // Reply parent topic id (If no parent, then 0) 349 $this->field_map[] = array( 350 'from_tablename' => 'posts', 351 'from_fieldname' => 'tid', 352 'to_type' => 'reply', 353 'to_fieldname' => 'post_parent', 354 'callback_method' => 'callback_topicid' 355 ); 356 357 // Reply dates. 358 $this->field_map[] = array( 359 'from_tablename' => 'posts', 360 'from_fieldname' => 'dateline', 361 'to_type' => 'reply', 362 'to_fieldname' => 'post_date', 363 'callback_method' => 'callback_datetime' 364 ); 365 $this->field_map[] = array( 366 'from_tablename' => 'posts', 367 'from_fieldname' => 'dateline', 368 'to_type' => 'reply', 369 'to_fieldname' => 'post_date_gmt', 370 'callback_method' => 'callback_datetime' 371 ); 372 $this->field_map[] = array( 373 'from_tablename' => 'posts', 374 'from_fieldname' => 'edittime', 375 'to_type' => 'reply', 376 'to_fieldname' => 'post_modified', 377 'callback_method' => 'callback_datetime' 378 ); 379 $this->field_map[] = array( 380 'from_tablename' => 'posts', 381 'from_fieldname' => 'edittime', 382 'to_type' => 'reply', 383 'to_fieldname' => 'post_modified_gmt', 384 'callback_method' => 'callback_datetime' 385 ); 386 387 /** User Section ******************************************************/ 388 389 // Store old user id (Stored in usermeta) 390 $this->field_map[] = array( 391 'from_tablename' => 'users', 392 'from_fieldname' => 'uid', 393 'to_type' => 'user', 394 'to_fieldname' => '_bbp_old_user_id' 395 ); 396 397 // Store old user password (Stored in usermeta serialized with salt) 398 $this->field_map[] = array( 399 'from_tablename' => 'users', 400 'from_fieldname' => 'password', 401 'to_type' => 'user', 402 'to_fieldname' => '_bbp_password', 403 'callback_method' => 'callback_savepass' 404 ); 405 406 // Store old user salt (This is only used for the SELECT row info for the above password save) 407 $this->field_map[] = array( 408 'from_tablename' => 'users', 409 'from_fieldname' => 'salt', 410 'to_type' => 'user', 411 'to_fieldname' => '' 412 ); 413 414 // User password verify class (Stored in usermeta for verifying password) 415 $this->field_map[] = array( 416 'to_type' => 'users', 417 'to_fieldname' => '_bbp_class', 418 'default' => 'MyBB' 419 ); 420 421 // User name. 422 $this->field_map[] = array( 423 'from_tablename' => 'users', 424 'from_fieldname' => 'username', 425 'to_type' => 'user', 426 'to_fieldname' => 'user_login' 427 ); 428 429 // User nice name. 430 $this->field_map[] = array( 431 'from_tablename' => 'users', 432 'from_fieldname' => 'username', 433 'to_type' => 'user', 434 'to_fieldname' => 'user_nicename' 435 ); 436 437 // User email. 438 $this->field_map[] = array( 439 'from_tablename' => 'users', 440 'from_fieldname' => 'email', 441 'to_type' => 'user', 442 'to_fieldname' => 'user_email' 443 ); 444 445 // User homepage. 446 $this->field_map[] = array( 447 'from_tablename' => 'users', 448 'from_fieldname' => 'website', 449 'to_type' => 'user', 450 'to_fieldname' => 'user_url' 451 ); 452 453 // User registered. 454 $this->field_map[] = array( 455 'from_tablename' => 'users', 456 'from_fieldname' => 'regdate', 457 'to_type' => 'user', 458 'to_fieldname' => 'user_registered', 459 'callback_method' => 'callback_datetime' 460 ); 461 462 // User display name. 463 $this->field_map[] = array( 464 'from_tablename' => 'users', 465 'from_fieldname' => 'usertitle', 466 'to_type' => 'user', 467 'to_fieldname' => 'display_name' 468 ); 469 470 // User AIM (Stored in usermeta) 471 $this->field_map[] = array( 472 'from_tablename' => 'users', 473 'from_fieldname' => 'aim', 474 'to_type' => 'user', 475 'to_fieldname' => '_bbp_mybb_user_aim' 476 ); 477 478 // User Yahoo (Stored in usermeta) 479 $this->field_map[] = array( 480 'from_tablename' => 'users', 481 'from_fieldname' => 'yahoo', 482 'to_type' => 'user', 483 'to_fieldname' => '_bbp_mybb_user_yim' 484 ); 485 486 // Store ICQ (Stored in usermeta) 487 $this->field_map[] = array( 488 'from_tablename' => 'users', 489 'from_fieldname' => 'icq', 490 'to_type' => 'user', 491 'to_fieldname' => '_bbp_mybb_user_icq' 492 ); 493 494 // Store MSN (Stored in usermeta) 495 $this->field_map[] = array( 496 'from_tablename' => 'users', 497 'from_fieldname' => 'msn', 498 'to_type' => 'user', 499 'to_fieldname' => '_bbp_mybb_user_msn' 500 ); 501 502 // Store Signature (Stored in usermeta) 503 $this->field_map[] = array( 504 'from_tablename' => 'users', 505 'from_fieldname' => 'signature', 506 'to_type' => 'user', 507 'to_fieldname' => '_bbp_mybb_user_sig', 508 'callback_method' => 'callback_html' 509 ); 510 511 } 512 513 /** 514 * This method allows us to indicates what is or is not converted for each 515 * converter. 516 */ 517 public function info() { 518 return ''; 519 } 520 521 /** 522 * This method is to save the salt and password together. That 523 * way when we authenticate it we can get it out of the database 524 * as one value. Array values are auto sanitized by WordPress. 525 */ 526 public function callback_savepass( $field, $row ) { 527 $pass_array = array( 'hash' => $field, 'salt' => $row['salt'] ); 528 return $pass_array; 529 } 530 531 /** 532 * This method is to take the pass out of the database and compare 533 * to a pass the user has typed in. 534 */ 535 public function authenticate_pass( $password, $serialized_pass ) { 536 $pass_array = unserialize( $serialized_pass ); 537 return ( $pass_array['hash'] == md5( md5( $password ). $pass_array['salt'] ) ); 538 } 539 540 /** 541 * Translate the post status from MyBB v1.6.10 numerics to WordPress's strings. 542 * 543 * @param int $status MyBB v1.6.10 numeric topic status 544 * @return string WordPress safe 545 */ 546 public function callback_topic_status( $status = 0 ) { 547 switch ( $status ) { 548 case 1 : 549 $status = 'closed'; 550 break; 551 552 case 0 : 553 default : 554 $status = 'publish'; 555 break; 556 } 557 return $status; 558 } 559 560 /** 561 * Translate the topic sticky status type from MyBB v1.6.10 numerics to WordPress's strings. 562 * 563 * @param int $status MyBB v1.6.10 numeric forum type 564 * @return string WordPress safe 565 */ 566 public function callback_sticky_status( $status = 0 ) { 567 switch ( $status ) { 568 case 1 : 569 $status = 'sticky'; // MyBB Sticky 'topic_sticky = 1' 570 break; 571 572 case 0 : 573 default : 574 $status = 'normal'; // MyBB Normal Topic 'topic_sticky = 0' 575 break; 576 } 577 return $status; 578 } 579 580 /** 581 * Verify the topic/reply count. 582 * 583 * @param int $count MyBB v1.6.10 topic/reply counts 584 * @return string WordPress safe 585 */ 586 public function callback_topic_reply_count( $count = 1 ) { 587 $count = absint( (int) $count - 1 ); 588 return $count; 589 } 590 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Dec 3 01:00:50 2024 | Cross-referenced by PHPXref 0.7.1 |