[ Index ]

PHP Cross Reference of BBPress

title

Body

[close]

/src/includes/admin/converters/ -> SMF.php (source)

   1  <?php
   2  
   3  /**
   4   * bbPress SMF Converter
   5   *
   6   * @package bbPress
   7   * @subpackage Converters
   8   */
   9  
  10  /**
  11   * Implementation of SMF Forum converter.
  12   *
  13   * @since 2.5.0 bbPress (r5189)
  14   *
  15   * @link Codex Docs https://codex.bbpress.org/import-forums/smf
  16   */
  17  class SMF 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' => 'boards',
  43              'from_fieldname' => 'id_board',
  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'  => 'boards',
  51              'from_fieldname'  => 'id_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' => 'boards',
  59              'from_fieldname' => 'num_topics',
  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' => 'boards',
  67              'from_fieldname' => 'num_posts',
  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' => 'boards',
  75              'from_fieldname' => 'num_topics',
  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' => 'boards',
  83              'from_fieldname' => 'num_posts',
  84              'to_type'        => 'forum',
  85              'to_fieldname'   => '_bbp_total_reply_count'
  86          );
  87  
  88          // Forum title.
  89          $this->field_map[] = array(
  90              'from_tablename' => 'boards',
  91              'from_fieldname' => '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'  => 'boards',
  99              'from_fieldname'  => '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'  => 'boards',
 108              'from_fieldname'  => 'description',
 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' => 'boards',
 117              'from_fieldname' => 'board_order',
 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'      => 'forum',
 139              'to_fieldname' => 'post_date',
 140              'default'      => date('Y-m-d H:i:s')
 141          );
 142          $this->field_map[] = array(
 143              'to_type'      => 'forum',
 144              'to_fieldname' => 'post_date_gmt',
 145              'default'      => date('Y-m-d H:i:s')
 146          );
 147          $this->field_map[] = array(
 148              'to_type'      => 'forum',
 149              'to_fieldname' => 'post_modified',
 150              'default'      => date('Y-m-d H:i:s')
 151          );
 152          $this->field_map[] = array(
 153              'to_type'      => 'forum',
 154              'to_fieldname' => 'post_modified_gmt',
 155              'default'      => date('Y-m-d H:i:s')
 156          );
 157  
 158          /** Forum Subscriptions Section ***************************************/
 159  
 160          // Subscribed forum ID (Stored in usermeta)
 161          $this->field_map[] = array(
 162              'from_tablename'  => 'log_notify',
 163              'from_fieldname'  => 'id_board',
 164              'from_expression' => 'WHERE log_notify.id_board != 0',
 165              'to_type'         => 'forum_subscriptions',
 166              'to_fieldname'    => '_bbp_forum_subscriptions'
 167          );
 168  
 169          // Subscribed user ID (Stored in usermeta)
 170          $this->field_map[] = array(
 171              'from_tablename'  => 'log_notify',
 172              'from_fieldname'  => 'id_member',
 173              'from_expression' => 'WHERE log_notify.id_board != 0',
 174              'to_type'         => 'forum_subscriptions',
 175              'to_fieldname'    => 'user_id',
 176              'callback_method' => 'callback_userid'
 177          );
 178  
 179          /** Topic Section ******************************************************/
 180  
 181          // Old topic id (Stored in postmeta)
 182          $this->field_map[] = array(
 183              'from_tablename' => 'topics',
 184              'from_fieldname' => 'id_topic',
 185              'to_type'        => 'topic',
 186              'to_fieldname'   => '_bbp_old_topic_id'
 187          );
 188  
 189          // Topic reply count (Stored in postmeta)
 190          $this->field_map[] = array(
 191              'from_tablename'  => 'topics',
 192              'from_fieldname'  => 'num_replies',
 193              'to_type'         => 'topic',
 194              'to_fieldname'    => '_bbp_reply_count',
 195              'callback_method' => 'callback_topic_reply_count'
 196          );
 197  
 198          // Topic total reply count (Includes unpublished replies, Stored in postmeta)
 199          $this->field_map[] = array(
 200              'from_tablename'  => 'topics',
 201              'from_fieldname'  => 'num_replies',
 202              'to_type'         => 'topic',
 203              'to_fieldname'    => '_bbp_total_reply_count',
 204              'callback_method' => 'callback_topic_reply_count'
 205          );
 206  
 207          // Topic parent forum id (If no parent, then 0. Stored in postmeta)
 208          $this->field_map[] = array(
 209              'from_tablename'  => 'topics',
 210              'from_fieldname'  => 'id_board',
 211              'to_type'         => 'topic',
 212              'to_fieldname'    => '_bbp_forum_id',
 213              'callback_method' => 'callback_forumid'
 214          );
 215  
 216          // Topic author.
 217          $this->field_map[] = array(
 218              'from_tablename'  => 'topics',
 219              'from_fieldname'  => 'id_member_started',
 220              'to_type'         => 'topic',
 221              'to_fieldname'    => 'post_author',
 222              'callback_method' => 'callback_userid'
 223          );
 224  
 225          // Topic author name (Stored in postmeta as _bbp_anonymous_name)
 226          $this->field_map[] = array(
 227              'from_tablename'  => 'messages',
 228              'from_fieldname'  => 'poster_name',
 229              'join_tablename'  => 'topics',
 230              'join_type'       => 'LEFT',
 231              'join_expression' => 'ON topics.id_first_msg = messages.id_msg',
 232              'to_type'         => 'topic',
 233              'to_fieldname'    => '_bbp_old_topic_author_name_id'
 234          );
 235  
 236          // Is the topic anonymous (Stored in postmeta)
 237          $this->field_map[] = array(
 238              'from_tablename'  => 'topics',
 239              'from_fieldname'  => 'id_member_started',
 240              'to_type'         => 'topic',
 241              'to_fieldname'    => '_bbp_old_is_topic_anonymous_id',
 242              'callback_method' => 'callback_check_anonymous'
 243          );
 244  
 245          // Topic Author ip (Stored in postmeta)
 246          $this->field_map[] = array(
 247              'from_tablename'  => 'messages',
 248              'from_fieldname'  => 'poster_ip',
 249              'join_tablename'  => 'topics',
 250              'join_type'       => 'LEFT',
 251              'join_expression' => 'ON topics.id_first_msg = messages.id_msg',
 252              'to_type'         => 'topic',
 253              'to_fieldname'    => '_bbp_author_ip'
 254          );
 255  
 256          // Topic content.
 257          // Note: We join the 'messages' table because 'topics' table does not have content.
 258          $this->field_map[] = array(
 259              'from_tablename'  => 'messages',
 260              'from_fieldname'  => 'body',
 261              'join_tablename'  => 'topics',
 262              'join_type'       => 'LEFT',
 263              'join_expression' => 'ON topics.id_first_msg = messages.id_msg',
 264              'to_type'         => 'topic',
 265              'to_fieldname'    => 'post_content',
 266              'callback_method' => 'callback_html'
 267          );
 268  
 269          // Topic title.
 270          $this->field_map[] = array(
 271              'from_tablename'  => 'messages',
 272              'from_fieldname'  => 'subject',
 273              'join_tablename'  => 'topics',
 274              'join_type'       => 'LEFT',
 275              'join_expression' => 'ON topics.id_first_msg = messages.id_msg',
 276              'to_type'         => 'topic',
 277              'to_fieldname'    => 'post_title'
 278          );
 279  
 280          // Topic slug (Clean name to avoid conflicts)
 281          $this->field_map[] = array(
 282              'from_tablename'  => 'messages',
 283              'from_fieldname'  => 'subject',
 284              'join_tablename'  => 'topics',
 285              'join_type'       => 'LEFT',
 286              'join_expression' => 'ON topics.id_first_msg = messages.id_msg',
 287              'to_type'         => 'topic',
 288              'to_fieldname'    => 'post_name',
 289              'callback_method' => 'callback_slug'
 290          );
 291  
 292          // Topic parent forum id (If no parent, then 0)
 293          $this->field_map[] = array(
 294              'from_tablename'  => 'topics',
 295              'from_fieldname'  => 'id_board',
 296              'to_type'         => 'topic',
 297              'to_fieldname'    => 'post_parent',
 298              'callback_method' => 'callback_forumid'
 299          );
 300  
 301          // Topic status (Open or Closed, SMF v2.0.4 0=open & 1=closed)
 302          $this->field_map[] = array(
 303              'from_tablename'  => 'topics',
 304              'from_fieldname'  => 'locked',
 305              'to_type'         => 'topic',
 306              'to_fieldname'    => '_bbp_old_closed_status_id',
 307              'callback_method' => 'callback_topic_status'
 308          );
 309  
 310          // Sticky status (Stored in postmeta)
 311          $this->field_map[] = array(
 312              'from_tablename'  => 'topics',
 313              'from_fieldname'  => 'is_sticky',
 314              'to_type'         => 'topic',
 315              'to_fieldname'    => '_bbp_old_sticky_status_id',
 316              'callback_method' => 'callback_sticky_status'
 317          );
 318  
 319          // Topic dates.
 320          $this->field_map[] = array(
 321              'from_tablename'  => 'messages',
 322              'from_fieldname'  => 'poster_time',
 323              'join_tablename'  => 'topics',
 324              'join_type'       => 'LEFT',
 325              'join_expression' => 'ON topics.id_first_msg = messages.id_msg',
 326              'to_type'         => 'topic',
 327              'to_fieldname'    => 'post_date',
 328              'callback_method' => 'callback_datetime'
 329          );
 330          $this->field_map[] = array(
 331              'from_tablename'  => 'messages',
 332              'from_fieldname'  => 'poster_time',
 333              'join_tablename'  => 'topics',
 334              'join_type'       => 'LEFT',
 335              'join_expression' => 'ON topics.id_first_msg = messages.id_msg',
 336              'to_type'         => 'topic',
 337              'to_fieldname'    => 'post_date_gmt',
 338              'callback_method' => 'callback_datetime'
 339          );
 340          $this->field_map[] = array(
 341              'from_tablename'  => 'messages',
 342              'from_fieldname'  => 'poster_time',
 343              'join_tablename'  => 'topics',
 344              'join_type'       => 'LEFT',
 345              'join_expression' => 'ON topics.id_first_msg = messages.id_msg',
 346              'to_type'         => 'topic',
 347              'to_fieldname'    => 'post_modified',
 348              'callback_method' => 'callback_datetime'
 349          );
 350          $this->field_map[] = array(
 351              'from_tablename'  => 'messages',
 352              'from_fieldname'  => 'poster_time',
 353              'join_tablename'  => 'topics',
 354              'join_type'       => 'LEFT',
 355              'join_expression' => 'ON topics.id_first_msg = messages.id_msg',
 356              'to_type'         => 'topic',
 357              'to_fieldname'    => 'post_modified_gmt',
 358              'callback_method' => 'callback_datetime'
 359          );
 360          $this->field_map[] = array(
 361              'from_tablename'  => 'messages',
 362              'from_fieldname'  => 'poster_time',
 363              'join_tablename'  => 'topics',
 364              'join_type'       => 'LEFT',
 365              'join_expression' => 'ON topics.id_first_msg = messages.id_msg',
 366              'to_type'         => 'topic',
 367              'to_fieldname'    => '_bbp_last_active_time',
 368              'callback_method' => 'callback_datetime'
 369          );
 370  
 371          /** Tags Section ******************************************************/
 372  
 373          /**
 374           * SMF v2.0.4 Forums do not support topic tags out of the box
 375           */
 376  
 377          /** Topic Subscriptions Section ***************************************/
 378  
 379          // Subscribed topic ID (Stored in usermeta)
 380          $this->field_map[] = array(
 381              'from_tablename'  => 'log_notify',
 382              'from_fieldname'  => 'id_topic',
 383              'from_expression' => 'WHERE log_notify.id_topic != 0',
 384              'to_type'         => 'topic_subscriptions',
 385              'to_fieldname'    => '_bbp_subscriptions'
 386          );
 387  
 388          // Subscribed user ID (Stored in usermeta)
 389          $this->field_map[] = array(
 390              'from_tablename'  => 'log_notify',
 391              'from_fieldname'  => 'id_member',
 392              'from_expression' => 'WHERE log_notify.id_topic != 0',
 393              'to_type'         => 'topic_subscriptions',
 394              'to_fieldname'    => 'user_id',
 395              'callback_method' => 'callback_userid'
 396          );
 397  
 398          /** Reply Section *****************************************************/
 399  
 400          // Old reply id (Stored in postmeta)
 401          $this->field_map[] = array(
 402              'from_tablename'  => 'messages',
 403              'from_fieldname'  => 'id_msg',
 404              'to_type'         => 'reply',
 405              'to_fieldname'    => '_bbp_old_reply_id'
 406          );
 407  
 408          // Reply parent forum id (If no parent, then 0. Stored in postmeta)
 409          $this->field_map[] = array(
 410              'from_tablename'  => 'topics',
 411              'from_fieldname'  => 'id_board',
 412              'join_tablename'  => 'messages',
 413              'join_type'       => 'LEFT',
 414              'join_expression' => 'USING (id_topic) WHERE topics.id_first_msg != messages.id_msg',
 415              'to_type'         => 'reply',
 416              'to_fieldname'    => '_bbp_forum_id',
 417              'callback_method' => 'callback_topicid_to_forumid'
 418          );
 419  
 420          // Reply parent topic id (If no parent, then 0. Stored in postmeta)
 421          $this->field_map[] = array(
 422              'from_tablename'  => 'messages',
 423              'from_fieldname'  => 'id_topic',
 424              'to_type'         => 'reply',
 425              'to_fieldname'    => '_bbp_topic_id',
 426              'callback_method' => 'callback_topicid'
 427          );
 428  
 429          // Reply author ip (Stored in postmeta)
 430          $this->field_map[] = array(
 431              'from_tablename' => 'messages',
 432              'from_fieldname' => 'poster_ip',
 433              'to_type'        => 'reply',
 434              'to_fieldname'   => '_bbp_author_ip'
 435          );
 436  
 437          // Reply author.
 438          $this->field_map[] = array(
 439              'from_tablename'  => 'messages',
 440              'from_fieldname'  => 'id_member',
 441              'to_type'         => 'reply',
 442              'to_fieldname'    => 'post_author',
 443              'callback_method' => 'callback_userid'
 444          );
 445  
 446          // Reply author name (Stored in postmeta as _bbp_anonymous_name)
 447          $this->field_map[] = array(
 448              'from_tablename'  => 'messages',
 449              'from_fieldname'  => 'poster_name',
 450              'to_type'         => 'reply',
 451              'to_fieldname'    => '_bbp_old_reply_author_name_id'
 452          );
 453  
 454          // Is the reply anonymous (Stored in postmeta)
 455          $this->field_map[] = array(
 456              'from_tablename'  => 'messages',
 457              'from_fieldname'  => 'id_member',
 458              'to_type'         => 'reply',
 459              'to_fieldname'    => '_bbp_old_is_reply_anonymous_id',
 460              'callback_method' => 'callback_check_anonymous'
 461          );
 462  
 463          // Reply content.
 464          $this->field_map[] = array(
 465              'from_tablename'  => 'messages',
 466              'from_fieldname'  => 'body',
 467              'to_type'         => 'reply',
 468              'to_fieldname'    => 'post_content',
 469              'callback_method' => 'callback_html'
 470          );
 471  
 472          // Reply parent topic id (If no parent, then 0)
 473          $this->field_map[] = array(
 474              'from_tablename'  => 'messages',
 475              'from_fieldname'  => 'id_topic',
 476              'to_type'         => 'reply',
 477              'to_fieldname'    => 'post_parent',
 478              'callback_method' => 'callback_topicid'
 479          );
 480  
 481          // Reply dates.
 482          $this->field_map[] = array(
 483              'from_tablename'  => 'messages',
 484              'from_fieldname'  => 'poster_time',
 485              'to_type'         => 'reply',
 486              'to_fieldname'    => 'post_date',
 487              'callback_method' => 'callback_datetime'
 488          );
 489          $this->field_map[] = array(
 490              'from_tablename'  => 'messages',
 491              'from_fieldname'  => 'poster_time',
 492              'to_type'         => 'reply',
 493              'to_fieldname'    => 'post_date_gmt',
 494              'callback_method' => 'callback_datetime'
 495          );
 496          $this->field_map[] = array(
 497              'from_tablename'  => 'messages',
 498              'from_fieldname'  => 'poster_time',
 499              'to_type'         => 'reply',
 500              'to_fieldname'    => 'post_modified',
 501              'callback_method' => 'callback_datetime'
 502          );
 503          $this->field_map[] = array(
 504              'from_tablename'  => 'messages',
 505              'from_fieldname'  => 'poster_time',
 506              'to_type'         => 'reply',
 507              'to_fieldname'    => 'post_modified_gmt',
 508              'callback_method' => 'callback_datetime'
 509          );
 510  
 511          /** User Section ******************************************************/
 512  
 513          // Store old user id (Stored in usermeta)
 514          $this->field_map[] = array(
 515              'from_tablename' => 'members',
 516              'from_fieldname' => 'id_member',
 517              'to_type'        => 'user',
 518              'to_fieldname'   => '_bbp_old_user_id'
 519          );
 520  
 521          // Store old user password (Stored in usermeta serialized with salt)
 522          $this->field_map[] = array(
 523              'from_tablename'  => 'members',
 524              'from_fieldname'  => 'passwd',
 525              'to_type'         => 'user',
 526              'to_fieldname'    => '_bbp_password',
 527              'callback_method' => 'callback_savepass'
 528          );
 529  
 530          // User password verify class (Stored in usermeta for verifying password)
 531          $this->field_map[] = array(
 532              'to_type'      => 'user',
 533              'to_fieldname' => '_bbp_class',
 534              'default'      => 'SMF'
 535          );
 536  
 537          // User name.
 538          $this->field_map[] = array(
 539              'from_tablename' => 'members',
 540              'from_fieldname' => 'member_name',
 541              'to_type'        => 'user',
 542              'to_fieldname'   => 'user_login'
 543          );
 544  
 545          // User nice name.
 546          $this->field_map[] = array(
 547              'from_tablename' => 'members',
 548              'from_fieldname' => 'member_name',
 549              'to_type'        => 'user',
 550              'to_fieldname'   => 'user_nicename'
 551          );
 552  
 553          // User email.
 554          $this->field_map[] = array(
 555              'from_tablename' => 'members',
 556              'from_fieldname' => 'email_address',
 557              'to_type'        => 'user',
 558              'to_fieldname'   => 'user_email'
 559          );
 560  
 561          // User homepage.
 562          $this->field_map[] = array(
 563              'from_tablename' => 'members',
 564              'from_fieldname' => 'website_url',
 565              'to_type'        => 'user',
 566              'to_fieldname'   => 'user_url'
 567          );
 568  
 569          // User registered.
 570          $this->field_map[] = array(
 571              'from_tablename'  => 'members',
 572              'from_fieldname'  => 'date_registered',
 573              'to_type'         => 'user',
 574              'to_fieldname'    => 'user_registered',
 575              'callback_method' => 'callback_datetime'
 576          );
 577  
 578          // User display name.
 579          $this->field_map[] = array(
 580              'from_tablename' => 'members',
 581              'from_fieldname' => 'real_name',
 582              'to_type'        => 'user',
 583              'to_fieldname'   => 'display_name'
 584          );
 585  
 586          // User AIM (Stored in usermeta)
 587          $this->field_map[] = array(
 588              'from_tablename' => 'members',
 589              'from_fieldname' => 'aim',
 590              'to_type'        => 'user',
 591              'to_fieldname'   => '_bbp_smf_user_aim'
 592          );
 593  
 594          // User Yahoo (Stored in usermeta)
 595          $this->field_map[] = array(
 596              'from_tablename' => 'members',
 597              'from_fieldname' => 'yim',
 598              'to_type'        => 'user',
 599              'to_fieldname'   => '_bbp_smf_user_yim'
 600          );
 601  
 602          // Store ICQ (Stored in usermeta)
 603          $this->field_map[] = array(
 604              'from_tablename' => 'members',
 605              'from_fieldname' => 'icq',
 606              'to_type'        => 'user',
 607              'to_fieldname'   => '_bbp_smf_user_icq'
 608          );
 609  
 610          // Store MSN (Stored in usermeta)
 611          $this->field_map[] = array(
 612              'from_tablename' => 'members',
 613              'from_fieldname' => 'msn',
 614              'to_type'        => 'user',
 615              'to_fieldname'   => '_bbp_smf_user_msn'
 616          );
 617  
 618          // Store Signature (Stored in usermeta)
 619          $this->field_map[] = array(
 620              'from_tablename' => 'members',
 621              'from_fieldname' => 'signature',
 622              'to_type'        => 'user',
 623              'to_fieldname'   => '_bbp_smf_user_sig',
 624              'callback_method' => 'callback_html'
 625          );
 626  
 627          // Store Avatar (Stored in usermeta)
 628          $this->field_map[] = array(
 629              'from_tablename' => 'members',
 630              'from_fieldname' => 'avatar',
 631              'to_type'        => 'user',
 632              'to_fieldname'   => '_bbp_smf_user_avatar',
 633              'callback_method' => 'callback_html'
 634          );
 635  
 636          // Store Location (Stored in usermeta)
 637          $this->field_map[] = array(
 638              'from_tablename' => 'members',
 639              'from_fieldname' => 'location',
 640              'to_type'        => 'user',
 641              'to_fieldname'   => '_bbp_smf_user_location',
 642              'callback_method' => 'callback_html'
 643          );
 644  
 645          // Store Personal Text (Stored in usermeta)
 646          $this->field_map[] = array(
 647              'from_tablename' => 'members',
 648              'from_fieldname' => 'personal_text',
 649              'to_type'        => 'user',
 650              'to_fieldname'   => '_bbp_smf_user_personal_text',
 651              'callback_method' => 'callback_html'
 652          );
 653      }
 654  
 655      /**
 656       * This method allows us to indicates what is or is not converted for each
 657       * converter.
 658       */
 659  	public function info() {
 660          return '';
 661      }
 662  
 663      /**
 664       * This method is to save the salt and password together.  That
 665       * way when we authenticate it we can get it out of the database
 666       * as one value. Array values are auto sanitized by WordPress.
 667       */
 668  	public function callback_savepass( $field, $row ) {
 669          $pass_array = array( 'hash' => $field, 'username' => $row['member_name'] );
 670          return $pass_array;
 671      }
 672  
 673      /**
 674       * This method is to take the pass out of the database and compare
 675       * to a pass the user has typed in.
 676       */
 677  	public function authenticate_pass( $password, $serialized_pass ) {
 678          $pass_array = unserialize( $serialized_pass );
 679          return ( $pass_array['hash'] === sha1( strtolower( $pass_array['username'] ) . $password ) ? true : false );
 680      }
 681  
 682      /**
 683       * Translate the post status from SMF v2.0.4 numerics to WordPress's strings.
 684       *
 685       * @param int $status SMF v2.0.4 numeric topic status
 686       * @return string WordPress safe
 687       */
 688  	public function callback_topic_status( $status = 0 ) {
 689          switch ( $status ) {
 690              case 1 :
 691                  $status = 'closed';
 692                  break;
 693  
 694              case 0  :
 695              default :
 696                  $status = 'publish';
 697                  break;
 698          }
 699          return $status;
 700      }
 701  
 702      /**
 703       * Translate the topic sticky status type from SMF v2.0.4 numerics to WordPress's strings.
 704       *
 705       * @param int $status SMF v2.0.4 numeric forum type
 706       * @return string WordPress safe
 707       */
 708  	public function callback_sticky_status( $status = 0 ) {
 709          switch ( $status ) {
 710              case 1 :
 711                  $status = 'sticky'; // SMF Sticky 'is_sticky = 1'
 712                  break;
 713  
 714              case 0  :
 715              default :
 716                  $status = 'normal'; // SMF normal topic 'is_sticky = 0'
 717                  break;
 718          }
 719          return $status;
 720      }
 721  
 722      /**
 723       * Verify the topic/reply count.
 724       *
 725       * @param int $count SMF v2.0.4 topic/reply counts
 726       * @return string WordPress safe
 727       */
 728  	public function callback_topic_reply_count( $count = 1 ) {
 729          $count = absint( (int) $count - 1 );
 730          return $count;
 731      }
 732  
 733      /**
 734       * This callback processes any custom parser.php attributes and custom code with preg_replace
 735       */
 736  	protected function callback_html( $field ) {
 737  
 738          // Strips SMF custom HTML first from $field before parsing $field to parser.php
 739          $SMF_markup = $field;
 740          $SMF_markup = html_entity_decode( $SMF_markup );
 741  
 742          // Replace '[quote]' with '<blockquote>'
 743          $SMF_markup = preg_replace( '/\[quote\]/',       '<blockquote>',  $SMF_markup );
 744          // Replace '[quote ($1)]' with '<blockquote>"
 745          $SMF_markup = preg_replace( '/\[quote (.*?)\]/', '<blockquote>',  $SMF_markup );
 746          // Replace '[/quote]' with '</blockquote>'
 747          $SMF_markup = preg_replace( '/\[\/quote\]/',     '</blockquote>', $SMF_markup );
 748  
 749          // Replace '[glow]' with ''
 750          $SMF_markup = preg_replace( '/\[glow\]/',   '',       $SMF_markup );
 751          // Replace '[glow]' with ''
 752          $SMF_markup = preg_replace( '/\[glow=(.*?)\]/',   '', $SMF_markup );
 753          // Replace '[/glow]' with ''
 754          $SMF_markup = preg_replace( '/\[\/glow\]/', '',       $SMF_markup );
 755  
 756          // Replace '[shadow]' with ''
 757          $SMF_markup = preg_replace( '/\[shadow\]/',   '',       $SMF_markup );
 758          // Replace '[shadow]' with ''
 759          $SMF_markup = preg_replace( '/\[shadow=(.*?)\]/',   '', $SMF_markup );
 760          // Replace '[/shadow]' with ''
 761          $SMF_markup = preg_replace( '/\[\/shadow\]/', '',       $SMF_markup );
 762  
 763          // Replace '[move]' with ''
 764          $SMF_markup = preg_replace( '/\[move\]/',   '', $SMF_markup );
 765          // Replace '[/move]' with ''
 766          $SMF_markup = preg_replace( '/\[\/move\]/', '', $SMF_markup );
 767  
 768          // Replace '[table]' with '<table>'
 769          $SMF_markup = preg_replace( '/\[table\]/',   '<table>',  $SMF_markup );
 770          // Replace '[/table]' with '</table>'
 771          $SMF_markup = preg_replace( '/\[\/table\]/', '</table>', $SMF_markup );
 772          // Replace '[tr]' with '<tr>'
 773          $SMF_markup = preg_replace( '/\[tr\]/',   '<tr>',  $SMF_markup );
 774          // Replace '[/tr]' with '</tr>'
 775          $SMF_markup = preg_replace( '/\[\/tr\]/', '</tr>', $SMF_markup );
 776          // Replace '[td]' with '<td>'
 777          $SMF_markup = preg_replace( '/\[td\]/',   '<td>',  $SMF_markup );
 778          // Replace '[/td]' with '</td>'
 779          $SMF_markup = preg_replace( '/\[\/td\]/', '</td>', $SMF_markup );
 780  
 781          // Replace '[list]' with '<ul>'
 782          $SMF_markup = preg_replace( '/\[list\]/',     '<ul>',                      $SMF_markup );
 783          // Replace '[liist type=decimal]' with '<ol type="a">'
 784          $SMF_markup = preg_replace( '/\[list\ type=decimal\]/',   '<ol type="a">', $SMF_markup );
 785          // Replace '[li]' with '<li>'
 786          $SMF_markup = preg_replace( '/\[li\]/',   '<li>',  $SMF_markup );
 787          // Replace '[/li]' with '</li>'
 788          $SMF_markup = preg_replace( '/\[\/li\]/', '</li>', $SMF_markup );
 789  
 790          // Replace '[tt]' with '<tt>'
 791          $SMF_markup = preg_replace( '/\[tt\]/',   '<tt>',  $SMF_markup );
 792          // Replace '[/tt]' with '</tt>'
 793          $SMF_markup = preg_replace( '/\[\/tt\]/', '</tt>', $SMF_markup );
 794  
 795          // Replace '<br />' with '<br>'
 796          $SMF_markup = preg_replace( '/\<br \/\>/', '<br>', $SMF_markup );
 797  
 798          // Replace '[size=$1]' with '<span style="font-size:$1%;">$3</span>'
 799          $SMF_markup = preg_replace( '/\[size=(.*?)\]/', '<span style="font-size:$1">', $SMF_markup );
 800          // Replace '[/size]' with '</span>'
 801          $SMF_markup = preg_replace( '/\[\/size\]/',     '</span>',                     $SMF_markup );
 802  
 803          // Replace non-break space '&nbsp;' with space ' '
 804          $SMF_markup = preg_replace( '/&nbsp;/', ' ', $SMF_markup );
 805  
 806          // Now that SMF custom HTML has been stripped put the cleaned HTML back in $field
 807          $field = $SMF_markup;
 808  
 809          // Parse out any bbCodes in $field with the BBCode 'parser.php'
 810          return parent::callback_html( $field );
 811      }
 812  }


Generated: Thu Apr 25 01:01:05 2024 Cross-referenced by PHPXref 0.7.1