Skip to:
Content

bbPress.org

Ticket #1874: bbPress1.php

File bbPress1.php, 16.1 KB (added by netweb, 11 years ago)
Line 
1<?php
2
3/**
4 * bbPress 1.1 Converter
5 *
6 * @since bbPress (rxxxx)
7 */
8class bbPress1 extends BBP_Converter_Base {
9
10        /**
11         * Main constructor
12         *
13         * @uses bbPress1::setup_globals()
14         */
15        function __construct() {
16                parent::__construct();
17                $this->setup_globals();
18        }
19
20        /**
21         * Sets up the field mappings
22         */
23        public function setup_globals() {
24
25                /** Forum Section *****************************************************/
26
27                // Forum id (Stored in postmeta)
28                $this->field_map[] = array(
29                        'from_tablename' => 'forums',
30                        'from_fieldname' => 'forum_id',
31                        'to_type'        => 'forum',
32                        'to_fieldname'   => '_bbp_forum_id'
33                );
34
35                // Forum parent id (If no parent, 0. Stored in postmeta)
36                $this->field_map[] = array(
37                        'from_tablename' => 'forums',
38                        'from_fieldname' => 'forum_parent',
39                        'to_type'        => 'forum',
40                        'to_fieldname'   => '_bbp_forum_parent_id'
41                );
42
43                // Forum topic count (Stored in postmeta)
44                $this->field_map[] = array(
45                        'from_tablename' => 'forums',
46                        'from_fieldname' => 'topics',
47                        'to_type'        => 'forum',
48                        'to_fieldname'   => '_bbp_topic_count'
49                );
50
51                // Forum reply count (Stored in postmeta)
52                $this->field_map[] = array(
53                        'from_tablename' => 'forums',
54                        'from_fieldname' => 'posts',
55                        'to_type'        => 'forum',
56                        'to_fieldname'   => '_bbp_reply_count'
57                );
58
59                // Forum topic count (Stored in postmeta)
60                $this->field_map[] = array(
61                        'from_tablename' => 'forums',
62                        'from_fieldname' => 'topics',
63                        'to_type'        => 'forum',
64                        'to_fieldname'   => '_bbp_total_topic_count'
65                );
66
67                // Forum reply count (Stored in postmeta)
68                $this->field_map[] = array(
69                        'from_tablename' => 'forums',
70                        'from_fieldname' => 'posts',
71                        'to_type'        => 'forum',
72                        'to_fieldname'   => '_bbp_total_reply_count'
73                );
74
75                // Forum title.
76                $this->field_map[] = array(
77                        'from_tablename' => 'forums',
78                        'from_fieldname' => 'forum_name',
79                        'to_type'        => 'forum',
80                        'to_fieldname'   => 'post_title'
81                );
82
83                // Forum slug (Clean name to avoid confilcts)
84                $this->field_map[] = array(
85                        'from_tablename'   => 'forums',
86                        'from_fieldname'   => 'forum_slug',
87                        'to_type'          => 'forum',
88                        'to_fieldname'     => 'post_name',
89                        'callback_method'  => 'callback_slug'
90                );
91
92                // Forum description.
93                $this->field_map[] = array(
94                        'from_tablename'   => 'forums',
95                        'from_fieldname'   => 'forum_desc',
96                        'to_type'          => 'forum',
97                        'to_fieldname'     => 'post_content',
98                        'callback_method'  => 'callback_null'
99                );
100
101                // Forum display order (Starts from 1)
102                $this->field_map[] = array(
103                        'from_tablename' => 'forums',
104                        'from_fieldname' => 'forum_order',
105                        'to_type'        => 'forum',
106                        'to_fieldname'   => 'menu_order'
107                );
108
109                // Forum dates.
110                $this->field_map[] = array(
111                        'to_type'      => 'forum',
112                        'to_fieldname' => 'post_date',
113                        'default'      => date('Y-m-d H:i:s')
114                );
115                $this->field_map[] = array(
116                        'to_type'      => 'forum',
117                        'to_fieldname' => 'post_date_gmt',
118                        'default'      => date('Y-m-d H:i:s')
119                );
120                $this->field_map[] = array(
121                        'to_type'      => 'forum',
122                        'to_fieldname' => 'post_modified',
123                        'default'      => date('Y-m-d H:i:s')
124                );
125                $this->field_map[] = array(
126                        'to_type'      => 'forum',
127                        'to_fieldname' => 'post_modified_gmt',
128                        'default'      => date('Y-m-d H:i:s')
129                );
130
131                /** Topic Section *****************************************************/
132
133                // Topic id (Stored in postmeta)
134                $this->field_map[] = array(
135                        'from_tablename' => 'topics',
136                        'from_fieldname' => 'topic_id',
137                        'to_type'        => 'topic',
138                        'to_fieldname'   => '_bbp_topic_id'
139                );
140
141                // Reply count (Stored in postmeta)
142                $this->field_map[] = array(
143                        'from_tablename'  => 'topics',
144                        'from_fieldname'  => 'topic_posts',
145                        'to_type'         => 'topic',
146                        'to_fieldname'    => '_bbp_reply_count',
147                        'callback_method' => 'callback_topic_reply_count'
148                );
149
150                // Forum id (Stored in postmeta)
151                $this->field_map[] = array(
152                        'from_tablename'  => 'topics',
153                        'from_fieldname'  => 'forum_id',
154                        'to_type'         => 'topic',
155                        'to_fieldname'    => '_bbp_forum_id',
156                        'callback_method' => 'callback_forumid'
157                );
158
159                // Topic author.
160                $this->field_map[] = array(
161                        'from_tablename'  => 'topics',
162                        'from_fieldname'  => 'topic_poster',
163                        'to_type'         => 'topic',
164                        'to_fieldname'    => 'post_author',
165                        'callback_method' => 'callback_userid'
166                );
167
168                // Topic title.
169                $this->field_map[] = array(
170                        'from_tablename' => 'topics',
171                        'from_fieldname' => 'topic_title',
172                        'to_type'        => 'topic',
173                        'to_fieldname'   => 'post_title'
174                );
175
176                // Topic slug (Clean name to avoid conflicts)
177                $this->field_map[] = array(
178                        'from_tablename'  => 'topics',
179                        'from_fieldname'  => 'topic_title',
180                        'to_type'         => 'topic',
181                        'to_fieldname'    => 'post_name',
182                        'callback_method' => 'callback_slug'
183                );
184
185                // Topic content.
186                // Note: We join the posts table because topics do not have content.
187                $this->field_map[] = array(
188                        'from_tablename'  => 'posts',
189                        'from_fieldname'  => 'post_text',
190                        'join_tablename'  => 'topics',
191                        'join_type'       => 'INNER',
192                        'join_expression' => 'USING (topic_id) WHERE posts.post_position IN (0,1)',
193                        'to_type'         => 'topic',
194                        'to_fieldname'    => 'post_content',
195                        'callback_method' => 'callback_html_bbpress1'
196                );
197
198                // Topic status.
199                // Note: post_status is more accurate than topic_status
200                $this->field_map[] = array(
201                        'from_tablename'  => 'posts',
202                        'from_fieldname'  => 'post_status',
203                        'join_tablename'  => 'topics',
204                        'join_type'       => 'INNER',
205                        'join_expression' => 'USING (topic_id) WHERE posts.post_position IN (0,1)',
206                        'to_type'         => 'topic',
207                        'to_fieldname'    => 'post_status',
208                        'callback_method' => 'callback_status'
209                );
210
211                // Author ip.
212                $this->field_map[] = array(
213                        'from_tablename'  => 'posts',
214                        'from_fieldname'  => 'poster_ip',
215                        'join_tablename'  => 'topics',
216                        'join_type'       => 'INNER',
217                        'join_expression' => 'USING (topic_id) WHERE posts.post_position IN (0,1)',
218                        'to_type'         => 'topic',
219                        'to_fieldname'    => '_bbp_author_ip'
220                );
221
222                // Forum id (If no parent, 0)
223                $this->field_map[] = array(
224                        'from_tablename'  => 'topics',
225                        'from_fieldname'  => 'forum_id',
226                        'to_type'         => 'topic',
227                        'to_fieldname'    => 'post_parent',
228                        'callback_method' => 'callback_forumid'
229                );
230
231                // Topic dates.
232                $this->field_map[] = array(
233                        'from_tablename' => 'topics',
234                        'from_fieldname' => 'topic_start_time',
235                        'to_type'        => 'topic',
236                        'to_fieldname'   => 'post_date'
237                );
238                $this->field_map[] = array(
239                        'from_tablename' => 'topics',
240                        'from_fieldname' => 'topic_start_time',
241                        'to_type'        => 'topic',
242                        'to_fieldname'   => 'post_date_gmt'
243                );
244                $this->field_map[] = array(
245                        'from_tablename' => 'topics',
246                        'from_fieldname' => 'topic_time',
247                        'to_type'        => 'topic',
248                        'to_fieldname'   => 'post_modified'
249                );
250                $this->field_map[] = array(
251                        'from_tablename' => 'topics',
252                        'from_fieldname' => 'topic_time',
253                        'to_type'        => 'topic',
254                        'to_fieldname'   => 'post_modified_gmt'
255                );
256                $this->field_map[] = array(
257                        'from_tablename' => 'topics',
258                        'from_fieldname' => 'topic_time',
259                        'to_type'        => 'topic',
260                        'to_fieldname'   => '_bbp_last_active_time'
261                );
262
263                /** Tags Section ******************************************************/
264
265                // Topic id.
266                $this->field_map[] = array(
267                        'from_tablename'  => 'term_relationships',
268                        'from_fieldname'  => 'object_id',
269                        'to_type'         => 'tags',
270                        'to_fieldname'    => 'objectid',
271                        'callback_method' => 'callback_topicid'
272                );
273
274                // Taxonomy ID.
275                $this->field_map[] = array(
276                        'from_tablename'  => 'term_taxonomy',
277                        'from_fieldname'  => 'term_taxonomy_id',
278                        'join_tablename'  => 'term_relationships',
279                        'join_type'       => 'INNER',
280                        'join_expression' => 'USING (term_taxonomy_id)',
281                        'to_type'         => 'tags',
282                        'to_fieldname'    => 'taxonomy'
283                );
284
285                // Term text.
286                $this->field_map[] = array(
287                        'from_tablename'  => 'terms',
288                        'from_fieldname'  => 'name',
289                        'join_tablename'  => 'term_taxonomy',
290                        'join_type'       => 'INNER',
291                        'join_expression' => 'USING (term_id)',
292                        'to_type'         => 'tags',
293                        'to_fieldname'    => 'name'
294                );
295
296                /** Reply Section *****************************************************/
297
298                // Post id. Stores in postmeta.
299                $this->field_map[] = array(
300                        'from_tablename'  => 'posts',
301                        'from_fieldname'  => 'post_id',
302                        'to_type'         => 'reply',
303                        'to_fieldname'    => '_bbp_post_id'
304                );
305
306                // Topic id (Stores in postmeta)
307                $this->field_map[] = array(
308                        'from_tablename'  => 'posts',
309                        'from_fieldname'  => 'topic_id',
310                        'to_type'         => 'reply',
311                        'to_fieldname'    => '_bbp_topic_id',
312                        'callback_method' => 'callback_topicid'
313                );
314
315                // Forum id (Stored in postmeta)
316                $this->field_map[] = array(
317                        'from_tablename'  => 'posts',
318                        'from_fieldname'  => 'forum_id',
319                        'to_type'         => 'reply',
320                        'to_fieldname'    => '_bbp_forum_id',
321                        'callback_method' => 'callback_forumid'
322                );
323
324                // Topic title (for reply title).
325                $this->field_map[] = array(
326                        'from_tablename'  => 'topics',
327                        'from_fieldname'  => 'topic_title',
328                        'join_tablename'  => 'posts',
329                        'join_type'       => 'INNER',
330                        'join_expression' => 'USING (topic_id) WHERE posts.post_position NOT IN (0,1)',
331                        'to_type'         => 'reply',
332                        'to_fieldname'    => 'post_title',
333                        'callback_method' => 'callback_reply_title'
334                );
335
336                // Author ip.
337                $this->field_map[] = array(
338                        'from_tablename' => 'posts',
339                        'from_fieldname' => 'poster_ip',
340                        'to_type'        => 'reply',
341                        'to_fieldname'   => '_bbp_author_ip'
342                );
343
344                // Reply author.
345                $this->field_map[] = array(
346                        'from_tablename'  => 'posts',
347                        'from_fieldname'  => 'poster_id',
348                        'to_type'         => 'reply',
349                        'to_fieldname'    => 'post_author',
350                        'callback_method' => 'callback_userid'
351                );
352
353                // Reply status
354                $this->field_map[] = array(
355                        'from_tablename'  => 'posts',
356                        'from_fieldname'  => 'post_status',
357                        'to_type'         => 'reply',
358                        'to_fieldname'    => 'post_status',
359                        'callback_method' => 'callback_status'
360                );
361
362                // Reply content.
363                $this->field_map[] = array(
364                        'from_tablename'  => 'posts',
365                        'from_fieldname'  => 'post_text',
366                        'to_type'         => 'reply',
367                        'to_fieldname'    => 'post_content',
368                        'callback_method' => 'callback_html_bbpress1'
369                );
370
371                // Reply order.
372                $this->field_map[] = array(
373                        'from_tablename'  => 'posts',
374                        'from_fieldname'  => 'post_position',
375                        'to_type'         => 'reply',
376                        'to_fieldname'    => 'menu_order'
377                );
378
379                // Topic id.  If no parent, than 0.
380                $this->field_map[] = array(
381                        'from_tablename'  => 'posts',
382                        'from_fieldname'  => 'topic_id',
383                        'to_type'         => 'reply',
384                        'to_fieldname'    => 'post_parent',
385                        'callback_method' => 'callback_topicid'
386                );
387
388                // Reply dates.
389                $this->field_map[] = array(
390                        'from_tablename' => 'posts',
391                        'from_fieldname' => 'post_time',
392                        'to_type'        => 'reply',
393                        'to_fieldname'   => 'post_date'
394                );
395                $this->field_map[] = array(
396                        'from_tablename' => 'posts',
397                        'from_fieldname' => 'post_time',
398                        'to_type'        => 'reply',
399                        'to_fieldname'   => 'post_date_gmt'
400                );
401                $this->field_map[] = array(
402                        'from_tablename' => 'posts',
403                        'from_fieldname' => 'post_time',
404                        'to_type'        => 'reply',
405                        'to_fieldname'   => 'post_modified'
406                );
407                $this->field_map[] = array(
408                        'from_tablename' => 'posts',
409                        'from_fieldname' => 'post_time',
410                        'to_type'        => 'reply',
411                        'to_fieldname'   => 'post_modified_gmt'
412                );
413
414                /** User Section ******************************************************/
415
416                // Store old User id. Stores in usermeta.
417                $this->field_map[] = array(
418                        'from_tablename' => 'users',
419                        'from_fieldname' => 'ID',
420                        'to_type'        => 'user',
421                        'to_fieldname'   => '_bbp_user_id'
422                );
423
424                // Store old User password. Stores in usermeta.
425                $this->field_map[] = array(
426                        'from_tablename' => 'users',
427                        'from_fieldname' => 'user_pass',
428                        'to_type'        => 'user',
429                        'to_fieldname'   => '_bbp_password'
430                );
431
432                // User name.
433                $this->field_map[] = array(
434                        'from_tablename' => 'users',
435                        'from_fieldname' => 'user_login',
436                        'to_type'        => 'user',
437                        'to_fieldname'   => 'user_login'
438                );
439
440                // User nice name.
441                $this->field_map[] = array(
442                        'from_tablename' => 'users',
443                        'from_fieldname' => 'user_nicename',
444                        'to_type'        => 'user',
445                        'to_fieldname'   => 'user_nicename'
446                );
447
448                // User email.
449                $this->field_map[] = array(
450                        'from_tablename' => 'users',
451                        'from_fieldname' => 'user_email',
452                        'to_type'        => 'user',
453                        'to_fieldname'   => 'user_email'
454                );
455
456                // User homepage.
457                $this->field_map[] = array(
458                        'from_tablename' => 'users',
459                        'from_fieldname' => 'user_url',
460                        'to_type'        => 'user',
461                        'to_fieldname'   => 'user_url'
462                );
463
464                // User registered.
465                $this->field_map[] = array(
466                        'from_tablename' => 'users',
467                        'from_fieldname' => 'user_registered',
468                        'to_type'        => 'user',
469                        'to_fieldname'   => 'user_registered'
470                );
471
472                // User status.
473                $this->field_map[] = array(
474                        'from_tablename' => 'users',
475                        'from_fieldname' => 'user_status',
476                        'to_type'        => 'user',
477                        'to_fieldname'   => 'user_status'
478                );
479
480                // User display name.
481                $this->field_map[] = array(
482                        'from_tablename' => 'users',
483                        'from_fieldname' => 'display_name',
484                        'to_type'        => 'user',
485                        'to_fieldname'   => 'display_name'
486                );
487        }
488
489        /**
490         * This method allows us to indicates what is or is not converted for each
491         * converter.
492         */
493        public function info() {
494                return '';
495        }
496
497        /**
498         * Translate the post status from bbPress 1's numeric's to WordPress's
499         * strings.
500         *
501         * @param int $status bbPress 1.x numeric status
502         * @return string WordPress safe
503         */
504        public function callback_status( $status = 0 ) {
505                switch ( $status ) {
506                        case 2 :
507                                $status = 'spam';    // bbp_get_spam_status_id()
508                                break;
509
510                        case 1 :
511                                $status = 'trash';   // bbp_get_trash_status_id()
512                                break;
513
514                        case 0  :
515                        default :
516                                $status = 'publish'; // bbp_get_public_status_id()
517                                break;
518                }
519                return $status;
520        }
521
522        /**
523         * Verify the topic reply count.
524         *
525         * @param int $count bbPress 1.x reply count
526         * @return string WordPress safe
527         */
528        public function callback_topic_reply_count( $count = 1 ) {
529                $count = absint( (int) $count - 1 );
530                return $count;
531        }
532
533        /**
534         * Set the reply title
535         *
536         * @param string $title bbPress 1.x topic title of this reply
537         * @return string Prefixed topic title, or empty string
538         */
539        public function callback_reply_title( $title = '' ) {
540                $title = !empty( $title ) ? __( 'Re: ', 'bbpress' ) . html_entity_decode( $title ) : '';
541                return $title;
542        }
543
544        /**
545         * This method is to save the salt and password together. That
546         * way when we authenticate it we can get it out of the database
547         * as one value. Array values are auto sanitized by wordpress.
548         */
549        public function callback_savepass( $field, $row ) {
550                return false;
551        }
552
553        /**
554         * This method is to take the pass out of the database and compare
555         * to a pass the user has typed in.
556         */
557        public function authenticate_pass( $password, $serialized_pass ) {
558                return false;
559        }
560
561        /**
562         * This callback processes any custom parser.php attributes and custom code with preg_replace
563         */
564        protected function callback_html_bbpress1( $field ) {
565
566                $bbpress1_markup = $field;
567                $bbpress1_markup = html_entity_decode ( $bbpress1_markup );
568
569                // Replace [b:XXXXXXX]' with '<strong>'
570                // $bbpress1_markup = preg_replace ( '/\[b:(.*?)\]/'   , '<strong>'  , $bbpress1_markup );
571                // Replace [/b:XXXXXXX]' with '</strong>'
572                // $bbpress1_markup = preg_replace ( '/\[\/b:(.*?)\]/' , '</strong>' , $bbpress1_markup );
573
574                $field = $bbpress1_markup;
575
576                require_once( bbpress()->admin->admin_dir . 'nbbc/nbbc_main.php' );
577                $bbcode = BBCode::getInstance(); 
578                $bbcode->enable_smileys = false;
579                $bbcode->smiley_regex   = false;
580                return html_entity_decode( $bbcode->Parse( $field ) );
581        }
582}