[ Index ] |
PHP Cross Reference of BBPress |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * bbPress Phorum Converter 5 * 6 * @package bbPress 7 * @subpackage Converters 8 */ 9 10 /** 11 * Implementation of Phorum Forum converter. 12 * 13 * @since 2.5.0 bbPress (r5141) 14 * 15 * @link Codex Docs https://codex.bbpress.org/import-forums/phorum 16 */ 17 class Phorum 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' => 'forum_id', 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' => 'parent_id', 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' => 'thread_count', 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' => 'message_count', 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' => 'display_order', 96 'to_type' => 'forum', 97 'to_fieldname' => 'menu_order' 98 ); 99 100 // Forum type (Category = 1 or Forum = 0, Stored in postmeta) 101 $this->field_map[] = array( 102 'from_tablename' => 'forums', 103 'from_fieldname' => 'folder_flag', 104 'to_type' => 'forum', 105 'to_fieldname' => '_bbp_forum_type', 106 'callback_method' => 'callback_forum_type' 107 ); 108 109 // Forum status (Set a default value 'open', Stored in postmeta) 110 $this->field_map[] = array( 111 'to_type' => 'forum', 112 'to_fieldname' => '_bbp_status', 113 'default' => 'open' 114 ); 115 116 // Forum dates. 117 $this->field_map[] = array( 118 'to_type' => 'forum', 119 'to_fieldname' => 'post_date', 120 'default' => date('Y-m-d H:i:s') 121 ); 122 $this->field_map[] = array( 123 'to_type' => 'forum', 124 'to_fieldname' => 'post_date_gmt', 125 'default' => date('Y-m-d H:i:s') 126 ); 127 $this->field_map[] = array( 128 'to_type' => 'forum', 129 'to_fieldname' => 'post_modified', 130 'default' => date('Y-m-d H:i:s') 131 ); 132 $this->field_map[] = array( 133 'to_type' => 'forum', 134 'to_fieldname' => 'post_modified_gmt', 135 'default' => date('Y-m-d H:i:s') 136 ); 137 138 /** Topic Section *****************************************************/ 139 140 // Old topic id (Stored in postmeta) 141 $this->field_map[] = array( 142 'from_tablename' => 'messages', 143 'from_fieldname' => 'thread', 144 'from_expression' => 'WHERE parent_id = 0', 145 'to_type' => 'topic', 146 'to_fieldname' => '_bbp_old_topic_id' 147 ); 148 149 // Topic reply count (Stored in postmeta) 150 $this->field_map[] = array( 151 'from_tablename' => 'messages', 152 'from_fieldname' => 'thread_count', 153 'to_type' => 'topic', 154 'to_fieldname' => '_bbp_reply_count', 155 'callback_method' => 'callback_topic_reply_count' 156 ); 157 158 // Topic total reply count (Includes unpublished replies, Stored in postmeta) 159 $this->field_map[] = array( 160 'from_tablename' => 'messages', 161 'from_fieldname' => 'thread_count', 162 'to_type' => 'topic', 163 'to_fieldname' => '_bbp_total_reply_count', 164 'callback_method' => 'callback_topic_reply_count' 165 ); 166 167 // Topic parent forum id (If no parent, then 0, Stored in postmeta) 168 $this->field_map[] = array( 169 'from_tablename' => 'messages', 170 'from_fieldname' => 'forum_id', 171 'to_type' => 'topic', 172 'to_fieldname' => '_bbp_forum_id', 173 'callback_method' => 'callback_forumid' 174 ); 175 176 // Topic author. 177 $this->field_map[] = array( 178 'from_tablename' => 'messages', 179 'from_fieldname' => 'user_id', 180 'to_type' => 'topic', 181 'to_fieldname' => 'post_author', 182 'callback_method' => 'callback_userid' 183 ); 184 185 // Topic author name (Stored in postmeta as _bbp_anonymous_name) 186 $this->field_map[] = array( 187 'from_tablename' => 'messages', 188 'from_fieldname' => 'author', 189 'to_type' => 'topic', 190 'to_fieldname' => '_bbp_old_topic_author_name_id' 191 ); 192 193 // Is the topic anonymous (Stored in postmeta) 194 $this->field_map[] = array( 195 'from_tablename' => 'messages', 196 'from_fieldname' => 'user_id', 197 'to_type' => 'topic', 198 'to_fieldname' => '_bbp_old_is_topic_anonymous_id', 199 'callback_method' => 'callback_check_anonymous' 200 ); 201 202 // Topic Author ip (Stored in postmeta) 203 $this->field_map[] = array( 204 'from_tablename' => 'messages', 205 'from_fieldname' => 'ip', 206 'to_type' => 'topic', 207 'to_fieldname' => '_bbp_author_ip' 208 ); 209 210 // Topic content. 211 $this->field_map[] = array( 212 'from_tablename' => 'messages', 213 'from_fieldname' => 'body', 214 'to_type' => 'topic', 215 'to_fieldname' => 'post_content', 216 'callback_method' => 'callback_html' 217 ); 218 219 // Topic title. 220 $this->field_map[] = array( 221 'from_tablename' => 'messages', 222 'from_fieldname' => 'subject', 223 'to_type' => 'topic', 224 'to_fieldname' => 'post_title' 225 ); 226 227 // Topic slug (Clean name to avoid conflicts) 228 $this->field_map[] = array( 229 'from_tablename' => 'messages', 230 'from_fieldname' => 'subject', 231 'to_type' => 'topic', 232 'to_fieldname' => 'post_name', 233 'callback_method' => 'callback_slug' 234 ); 235 236 // Topic parent forum id (If no parent, then 0) 237 $this->field_map[] = array( 238 'from_tablename' => 'messages', 239 'from_fieldname' => 'forum_id', 240 'to_type' => 'topic', 241 'to_fieldname' => 'post_parent', 242 'callback_method' => 'callback_forumid' 243 ); 244 245 // Topic dates. 246 $this->field_map[] = array( 247 'from_tablename' => 'messages', 248 'from_fieldname' => 'datestamp', 249 'to_type' => 'topic', 250 'to_fieldname' => 'post_date', 251 'callback_method' => 'callback_datetime' 252 ); 253 $this->field_map[] = array( 254 'from_tablename' => 'messages', 255 'from_fieldname' => 'datestamp', 256 'to_type' => 'topic', 257 'to_fieldname' => 'post_date_gmt', 258 'callback_method' => 'callback_datetime' 259 ); 260 $this->field_map[] = array( 261 'from_tablename' => 'messages', 262 'from_fieldname' => 'datestamp', 263 'to_type' => 'topic', 264 'to_fieldname' => 'post_modified', 265 'callback_method' => 'callback_datetime' 266 ); 267 $this->field_map[] = array( 268 'from_tablename' => 'messages', 269 'from_fieldname' => 'datestamp', 270 'to_type' => 'topic', 271 'to_fieldname' => 'post_modified_gmt', 272 'callback_method' => 'callback_datetime' 273 ); 274 $this->field_map[] = array( 275 'from_tablename' => 'messages', 276 'from_fieldname' => 'datestamp', 277 'to_type' => 'topic', 278 'to_fieldname' => '_bbp_last_active_time', 279 'callback_method' => 'callback_datetime' 280 ); 281 282 // Topic status (Open = 0 or Closed = 1) 283 $this->field_map[] = array( 284 'from_tablename' => 'messages', 285 'from_fieldname' => 'closed', 286 'to_type' => 'topic', 287 'to_fieldname' => '_bbp_old_closed_status_id', 288 'callback_method' => 'callback_topic_status' 289 ); 290 291 /** Tags Section ******************************************************/ 292 293 /** 294 * Phorum v5.2.19 Forums do not support topic tags out of the box 295 */ 296 297 /** Topic Subscriptions Section ***************************************/ 298 299 // Subscribed topic ID (Stored in usermeta) 300 $this->field_map[] = array( 301 'from_tablename' => 'subscribers', 302 'from_fieldname' => 'thread', 303 'to_type' => 'topic_subscriptions', 304 'to_fieldname' => '_bbp_subscriptions' 305 ); 306 307 // Subscribed user ID (Stored in usermeta) 308 $this->field_map[] = array( 309 'from_tablename' => 'subscribers', 310 'from_fieldname' => 'user_id', 311 'to_type' => 'topic_subscriptions', 312 'to_fieldname' => 'user_id', 313 'callback_method' => 'callback_userid' 314 ); 315 316 /** Reply Section *****************************************************/ 317 318 // Old reply id (Stored in postmeta) 319 $this->field_map[] = array( 320 'from_tablename' => 'messages', 321 'from_fieldname' => 'message_id', 322 'from_expression' => 'WHERE parent_id != 0', 323 'to_type' => 'reply', 324 'to_fieldname' => '_bbp_old_reply_id' 325 ); 326 327 // Reply parent forum id (If no parent, then 0. Stored in postmeta) 328 $this->field_map[] = array( 329 'from_tablename' => 'messages', 330 'from_fieldname' => 'forum_id', 331 'to_type' => 'reply', 332 'to_fieldname' => '_bbp_forum_id', 333 'callback_method' => 'callback_forumid' 334 ); 335 336 // Reply parent topic id (If no parent, then 0. Stored in postmeta) 337 $this->field_map[] = array( 338 'from_tablename' => 'messages', 339 'from_fieldname' => 'thread', 340 'to_type' => 'reply', 341 'to_fieldname' => '_bbp_topic_id', 342 'callback_method' => 'callback_topicid' 343 ); 344 345 // Reply author ip (Stored in postmeta) 346 $this->field_map[] = array( 347 'from_tablename' => 'messages', 348 'from_fieldname' => 'ip', 349 'to_type' => 'reply', 350 'to_fieldname' => '_bbp_author_ip' 351 ); 352 353 // Reply author. 354 $this->field_map[] = array( 355 'from_tablename' => 'messages', 356 'from_fieldname' => 'user_id', 357 'to_type' => 'reply', 358 'to_fieldname' => 'post_author', 359 'callback_method' => 'callback_userid' 360 ); 361 362 // Reply author name (Stored in postmeta as _bbp_anonymous_name) 363 $this->field_map[] = array( 364 'from_tablename' => 'messages', 365 'from_fieldname' => 'author', 366 'to_type' => 'reply', 367 'to_fieldname' => '_bbp_old_reply_author_name_id' 368 ); 369 370 // Is the reply anonymous (Stored in postmeta) 371 $this->field_map[] = array( 372 'from_tablename' => 'messages', 373 'from_fieldname' => 'user_id', 374 'to_type' => 'reply', 375 'to_fieldname' => '_bbp_old_is_reply_anonymous_id', 376 'callback_method' => 'callback_check_anonymous' 377 ); 378 379 // Reply content. 380 $this->field_map[] = array( 381 'from_tablename' => 'messages', 382 'from_fieldname' => 'body', 383 'to_type' => 'reply', 384 'to_fieldname' => 'post_content', 385 'callback_method' => 'callback_html' 386 ); 387 388 // Reply parent topic id (If no parent, then 0) 389 $this->field_map[] = array( 390 'from_tablename' => 'messages', 391 'from_fieldname' => 'thread', 392 'to_type' => 'reply', 393 'to_fieldname' => 'post_parent', 394 'callback_method' => 'callback_topicid' 395 ); 396 397 // Reply dates. 398 $this->field_map[] = array( 399 'from_tablename' => 'messages', 400 'from_fieldname' => 'datestamp', 401 'to_type' => 'reply', 402 'to_fieldname' => 'post_date', 403 'callback_method' => 'callback_datetime' 404 ); 405 $this->field_map[] = array( 406 'from_tablename' => 'messages', 407 'from_fieldname' => 'datestamp', 408 'to_type' => 'reply', 409 'to_fieldname' => 'post_date_gmt', 410 'callback_method' => 'callback_datetime' 411 ); 412 $this->field_map[] = array( 413 'from_tablename' => 'messages', 414 'from_fieldname' => 'datestamp', 415 'to_type' => 'reply', 416 'to_fieldname' => 'post_modified', 417 'callback_method' => 'callback_datetime' 418 ); 419 $this->field_map[] = array( 420 'from_tablename' => 'messages', 421 'from_fieldname' => 'datestamp', 422 'to_type' => 'reply', 423 'to_fieldname' => 'post_modified_gmt', 424 'callback_method' => 'callback_datetime' 425 ); 426 427 /** User Section ******************************************************/ 428 429 // Store old user id (Stored in usermeta) 430 $this->field_map[] = array( 431 'from_tablename' => 'users', 432 'from_fieldname' => 'user_id', 433 'to_type' => 'user', 434 'to_fieldname' => '_bbp_old_user_id' 435 ); 436 437 // Store old user password (Stored in usermeta serialized with salt) 438 $this->field_map[] = array( 439 'from_tablename' => 'users', 440 'from_fieldname' => 'password', 441 'to_type' => 'user', 442 'to_fieldname' => '_bbp_password', 443 'callback_method' => 'callback_savepass' 444 ); 445 446 // Store old user salt (This is only used for the SELECT row info for the above password save) 447 // $this->field_map[] = array( 448 // 'from_tablename' => 'users', 449 // 'from_fieldname' => 'salt', 450 // 'to_type' => 'user', 451 // 'to_fieldname' => '' 452 // ); 453 454 // User password verify class (Stored in usermeta for verifying password) 455 $this->field_map[] = array( 456 'to_type' => 'users', 457 'to_fieldname' => '_bbp_class', 458 'default' => 'Phorum' 459 ); 460 461 // User name. 462 $this->field_map[] = array( 463 'from_tablename' => 'users', 464 'from_fieldname' => 'username', 465 'to_type' => 'user', 466 'to_fieldname' => 'user_login' 467 ); 468 469 // User nice name. 470 $this->field_map[] = array( 471 'from_tablename' => 'users', 472 'from_fieldname' => 'display_name', 473 'to_type' => 'user', 474 'to_fieldname' => 'user_nicename' 475 ); 476 477 // User email. 478 $this->field_map[] = array( 479 'from_tablename' => 'users', 480 'from_fieldname' => 'email', 481 'to_type' => 'user', 482 'to_fieldname' => 'user_email' 483 ); 484 485 // User registered. 486 $this->field_map[] = array( 487 'from_tablename' => 'users', 488 'from_fieldname' => 'date_added', 489 'to_type' => 'user', 490 'to_fieldname' => 'user_registered', 491 'callback_method' => 'callback_datetime' 492 ); 493 494 // User display name. 495 $this->field_map[] = array( 496 'from_tablename' => 'users', 497 'from_fieldname' => 'real_name', 498 'to_type' => 'user', 499 'to_fieldname' => 'display_name' 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_phorum_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 forum type from Phorum v5.2.19 numerics to WordPress's strings. 542 * 543 * @param int $status Phorum v5.2.19 numeric forum type 544 * @return string WordPress safe 545 */ 546 public function callback_forum_type( $status = 0 ) { 547 switch ( $status ) { 548 case 1 : 549 $status = 'category'; 550 break; 551 552 case 0 : 553 default : 554 $status = 'forum'; 555 break; 556 } 557 return $status; 558 } 559 560 /** 561 * Translate the post status from Phorum v5.2.19 numerics to WordPress's strings. 562 * 563 * @param int $status Phorum v5.2.19 numeric topic status 564 * @return string WordPress safe 565 */ 566 public function callback_topic_status( $status = 0 ) { 567 switch ( $status ) { 568 case 1 : 569 $status = 'closed'; 570 break; 571 572 case 0 : 573 default : 574 $status = 'publish'; 575 break; 576 } 577 return $status; 578 } 579 580 /** 581 * Verify the topic/reply count. 582 * 583 * @param int $count Phorum v5.2.19 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: Sat Dec 21 01:00:52 2024 | Cross-referenced by PHPXref 0.7.1 |