Skip to:
Content

bbPress.org

Ticket #2164: 2164.diff

File 2164.diff, 11.5 KB (added by netweb, 9 years ago)
  • includes/admin/converters/SimplePress5.php

    diff --git a/includes/admin/converters/SimplePress5.php b/includes/admin/converters/SimplePress5.php
    index 1c93b5c..bceaf8d 100644
    a b  
    11<?php
    22
    33/**
    4  * SimplePress 5 converter.
     4 * Implementation of SimplePress v5 converter.
    55 *
    66 * @since bbPress (r4638)
    77 */
    88class SimplePress5 extends BBP_Converter_Base {
     9
     10        /**
     11         * Main Constructor
     12         *
     13         * @uses SimplePress5::setup_globals()
     14         */
    915        function __construct() {
    1016                parent::__construct();
    1117                $this->setup_globals();
    1218        }
    1319
     20        /**
     21         * Sets up the field mappings
     22         */
     23
    1424        public function setup_globals() {
    1525
    1626                /** Forum Section ******************************************************/
    1727
    18                 // Forum id. Stored in postmeta.
     28                // Forum id (Stored in postmeta)
    1929                $this->field_map[] = array(
    2030                        'from_tablename' => 'sfforums',
    2131                        'from_fieldname' => 'forum_id',
    class SimplePress5 extends BBP_Converter_Base { 
    2333                        'to_fieldname'   => '_bbp_forum_id'
    2434                );
    2535
    26                 // Forum parent id.  If no parent, than 0. Stored in postmeta.
     36                // Forum parent id (If no parent, than 0, Stored in postmeta)
    2737                $this->field_map[] = array(
    2838                        'from_tablename' => 'sfforums',
    2939                        'from_fieldname' => 'parent',
    class SimplePress5 extends BBP_Converter_Base { 
    3949                        'to_fieldname'   => 'post_title'
    4050                );
    4151
    42                 // Forum slug. Clean name.
     52                // Forum slug (Clean name to avoid conflicts)
    4353                $this->field_map[] = array(
    4454                        'from_tablename'  => 'sfforums',
    4555                        'from_fieldname'  => 'forum_name',
    class SimplePress5 extends BBP_Converter_Base { 
    5767                        'callback_method' => 'callback_null'
    5868                );
    5969
    60                 // Forum display order.  Starts from 1.
     70                // Forum display order (Starts from 1)
    6171                $this->field_map[] = array(
    6272                        'from_tablename' => 'sfforums',
    6373                        'from_fieldname' => 'forum_seq',
    class SimplePress5 extends BBP_Converter_Base { 
    8999
    90100                /** Topic Section ******************************************************/
    91101
    92                 // Topic id. Stored in postmeta.
     102                // Topic id (Stored in postmeta)
    93103                $this->field_map[] = array(
    94104                        'from_tablename' => 'sftopics',
    95105                        'from_fieldname' => 'topic_id',
    class SimplePress5 extends BBP_Converter_Base { 
    97107                        'to_fieldname'   => '_bbp_topic_id'
    98108                );
    99109
    100                 // Forum id. Stored in postmeta.
     110                // Forum id (Stored in postmeta)
    101111                $this->field_map[] = array(
    102112                        'from_tablename'  => 'sftopics',
    103113                        'from_fieldname'  => 'forum_id',
    class SimplePress5 extends BBP_Converter_Base { 
    116126                );
    117127
    118128                // Topic content.
     129                // Note: We join the sfposts table because sftopics do not have content.
    119130                $this->field_map[] = array(
    120131                        'from_tablename'  => 'sfposts',
    121132                        'from_fieldname'  => 'post_content',
    class SimplePress5 extends BBP_Converter_Base { 
    135146                        'to_fieldname'   => 'post_title'
    136147                );
    137148
    138                 // Topic slug. Clean name.
     149                // Topic slug (Clean name to avoid conflicts)
    139150                $this->field_map[] = array(
    140151                        'from_tablename'  => 'sftopics',
    141152                        'from_fieldname'  => 'topic_name',
    class SimplePress5 extends BBP_Converter_Base { 
    144155                        'callback_method' => 'callback_slug'
    145156                );
    146157
    147                 // Forum id.  If no parent, than 0.
     158                // Forum id (If no parent, than 0)
    148159                $this->field_map[] = array(
    149160                        'from_tablename'  => 'sftopics',
    150161                        'from_fieldname'  => 'forum_id',
    class SimplePress5 extends BBP_Converter_Base { 
    183194                        'callback_method' => 'callback_datetime'
    184195                );
    185196
     197                // Topic status (Open or Closed)
     198                $this->field_map[] = array(
     199                        'from_tablename'  => 'sftopics',
     200                        'from_fieldname'  => 'topic_status',
     201                        'to_type'         => 'topic',
     202                        'to_fieldname'    => 'post_status',
     203                        'callback_method' => 'callback_status'
     204                );
     205
    186206                /** Tags Section ******************************************************/
    187207                /*
    188208                // Topic id.
    class SimplePress5 extends BBP_Converter_Base { 
    206226                );
    207227                */
    208228
    209                 /** Post Section ******************************************************/
     229                /** Reply Section *****************************************************/
    210230
    211                 // Post id. Stores in postmeta.
     231                // Post id (Stored in postmeta)
    212232                $this->field_map[] = array(
    213233                        'from_tablename' => 'sfposts',
    214234                        'from_fieldname' => 'post_id',
    class SimplePress5 extends BBP_Converter_Base { 
    226246                        'to_type'         => 'reply'
    227247                );
    228248
    229                 // Forum id. Stores in postmeta.
     249                // Forum id (Stored in postmeta)
    230250                $this->field_map[] = array(
    231251                        'from_tablename'  => 'sfposts',
    232252                        'from_fieldname'  => 'forum_id',
    class SimplePress5 extends BBP_Converter_Base { 
    235255                        'callback_method' => 'callback_topicid_to_forumid'
    236256                );
    237257
    238                 // Topic id. Stores in postmeta.
     258                // Topic id (Stored in postmeta)
    239259                $this->field_map[] = array(
    240260                        'from_tablename'  => 'sfposts',
    241261                        'from_fieldname'  => 'topic_id',
    class SimplePress5 extends BBP_Converter_Base { 
    244264                        'callback_method' => 'callback_topicid'
    245265                );
    246266
    247                 // Author ip.
     267                // Author ip (Stored in postmeta)
    248268                $this->field_map[] = array(
    249269                        'from_tablename' => 'sfposts',
    250270                        'from_fieldname' => 'poster_ip',
    class SimplePress5 extends BBP_Converter_Base { 
    273293                        'to_fieldname'    => 'post_title'
    274294                );
    275295
    276                 // Topic slug. Clean name.
     296                // Topic slug (Clean name to avoid conflicts)
    277297                // Note: We join the sftopics table because sfposts do not have topic_name.
    278298                $this->field_map[] = array(
    279299                        'from_tablename'  => 'sftopics',
    class SimplePress5 extends BBP_Converter_Base { 
    295315                        'callback_method' => 'callback_html'
    296316                );
    297317
    298                 // Topic id.  If no parent, than 0.
     318                // Topic id (If no parent, than 0)
    299319                $this->field_map[] = array(
    300320                        'from_tablename'  => 'sfposts',
    301321                        'from_fieldname'  => 'topic_id',
    class SimplePress5 extends BBP_Converter_Base { 
    336356
    337357                /** User Section ******************************************************/
    338358
    339                 // Store old User id. Stores in usermeta.
     359                // Store old User id (Stored in usermeta)
    340360                $this->field_map[] = array(
    341361                        'from_tablename' => 'users',
    342362                        'from_fieldname' => 'ID',
    class SimplePress5 extends BBP_Converter_Base { 
    344364                        'to_fieldname'   => '_bbp_user_id'
    345365                );
    346366
    347                 // Store old User password. Stores in usermeta.
     367                // Store old User password (Stored in usermeta)
    348368                $this->field_map[] = array(
    349369                        'from_tablename' => 'users',
    350370                        'from_fieldname' => 'user_pass',
    class SimplePress5 extends BBP_Converter_Base { 
    435455        }
    436456
    437457        /**
    438          * This callback processes any custom parser.php attributes and custom code with preg_replace
     458         * Translate the post status from Simple:Press numeric's to WordPress's strings.
     459         *
     460         * @param int $status Simple:Press numeric status
     461         * @return string WordPress safe
     462         */
     463        public function callback_status( $status = 0 ) {
     464                switch ( $status ) {
     465                        case 1 :
     466                                $status = 'closed';
     467                                break;
     468
     469                        case 0  :
     470                        default :
     471                                $status = 'publish';
     472                                break;
     473                }
     474                return $status;
     475        }
     476
     477        /**
     478         * This callback processes any custom parser.php attributes and custom HTML code with preg_replace
    439479         */
    440480        protected function callback_html( $field ) {
    441481
    442                 // Parse out bbCodes
     482                // Strip any custom HTML not supported by parser.php first from $field before parsing $field to parser.php
     483                $simplepress_markup = $field;
     484                $simplepress_markup = html_entity_decode ( $simplepress_markup );
     485
     486                // Replace any SimplePress smilies from path '/sp-resources/forum-smileys/sf-smily.gif' with the equivelant WordPress Smilie
     487                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-confused\.gif(.*?)\" \/>/'   , ':?'      , $simplepress_markup );
     488                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-cool\.gif(.*?)\" \/>/'       , ':cool:'  , $simplepress_markup );
     489                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-cry\.gif(.*?)\" \/>/'        , ':cry:'   , $simplepress_markup );
     490                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-embarassed\.gif(.*?)\" \/>/' , ':oops:'  , $simplepress_markup );
     491                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-frown\.gif(.*?)\" \/>/'      , ':('      , $simplepress_markup );
     492                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-kiss\.gif(.*?)\" \/>/'       , ':P'      , $simplepress_markup );
     493                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-laugh\.gif(.*?)\" \/>/'      , ':D'      , $simplepress_markup );
     494                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-smile\.gif(.*?)\" \/>/'      , ':smile:' , $simplepress_markup );
     495                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-surprised\.gif(.*?)\" \/>/'  , ':o'      , $simplepress_markup );
     496                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-wink\.gif(.*?)\" \/>/'       , ':wink:'  , $simplepress_markup );
     497                $simplepress_markup = preg_replace ( '/\<img src=(.*?)\/sp-resources\/forum-smileys\/sf-yell\.gif(.*?)\" \/>/'       , ':x'      , $simplepress_markup );
     498
     499                // Replace <div class="sfcode">example code</div> with <code>*</code>
     500                $simplepress_markup = preg_replace ( '/\<div class\=\"sfcode\"\>(.*?)\<\/div\>/' , '<code>$1</code>' , $simplepress_markup );
     501
     502                // Now that SimplePress' custom HTML codes have been stripped put the cleaned HTML back in $field
     503                $field = $simplepress_markup;
     504
     505                // Parse out any bbCodes with the BBCode 'parser.php'
    443506                require_once( bbpress()->admin->admin_dir . 'parser.php' );
    444                 $bbcode = BBCode::getInstance();
     507                $bbcode = BBCode::getInstance(); 
    445508                $bbcode->enable_smileys = false;
    446509                $bbcode->smiley_regex   = false;
    447                 $field = html_entity_decode( $bbcode->Parse( $field ) );
    448 
    449                 // Replace SimplePress smilies with the equivelant WordPress
    450                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-confused.gif(.*?)" \/>/'   , ':?'      , $field );
    451                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-cool.gif(.*?)" \/>/'       , ':cool:'  , $field );
    452                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-cry.gif(.*?)" \/>/'        , ':cry:'   , $field );
    453                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-embarassed.gif(.*?)" \/>/' , ':oops:'  , $field );
    454                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-frown.gif(.*?)" \/>/'      , ':('      , $field );
    455                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-kiss.gif(.*?)" \/>/'       , ':P'      , $field );
    456                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-laugh.gif(.*?)" \/>/'      , ':D'      , $field );
    457                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-smile.gif(.*?)" \/>/'      , ':smile:' , $field );
    458                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-surprised.gif(.*?)" \/>/'  , ':o'      , $field );
    459                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-wink.gif(.*?)" \/>/'       , ':wink:'  , $field );
    460                 $field = preg_replace ( '/<img src=(.*?)\/sp-resources\/forum-smileys\/sf-yell.gif(.*?)" \/>/'       , ':x'      , $field );
    461 
    462                 return $field;
     510                return html_entity_decode( $bbcode->Parse( $field ) );
     511
    463512        }
    464513}