Skip to:
Content

bbPress.org

Ticket #2402: Kunena3.php

File Kunena3.php, 23.7 KB (added by netweb, 8 years ago)

Kunena v3.x Importer

Line 
1<?php
2
3/**
4 * Implementation of Kunena v3.x Forums for Joomla Forum converter.
5 *
6 * @since bbPress (r5057)
7 * @link Codex Docs http://codex.bbpress.org/import-forums/kunena/
8 */
9class Kunena3 extends BBP_Converter_Base {
10
11        /**
12         * Main Constructor
13         *
14         * @uses Kunena3::setup_globals()
15         */
16        function __construct() {
17                parent::__construct();
18                $this->setup_globals();
19        }
20
21        /**
22         * Sets up the field mappings
23         */
24        public function setup_globals() {
25
26                /** Forum Section *****************************************************/
27
28                // Forum id (Stored in postmeta)
29                $this->field_map[] = array(
30                        'from_tablename' => 'kunena_categories',
31                        'from_fieldname' => 'id',
32                        'to_type'        => 'forum',
33                        'to_fieldname'   => '_bbp_forum_id'
34                );
35
36                // Forum parent id (If no parent, then 0, Stored in postmeta)
37                $this->field_map[] = array(
38                        'from_tablename'  => 'kunena_categories',
39                        'from_fieldname'  => 'parent_id',
40                        'to_type'         => 'forum',
41                        'to_fieldname'    => '_bbp_forum_parent_id'
42                );
43
44                // Forum topic count (Stored in postmeta)
45                $this->field_map[] = array(
46                        'from_tablename' => 'kunena_categories',
47                        'from_fieldname' => 'numTopics',
48                        'to_type'        => 'forum',
49                        'to_fieldname'   => '_bbp_topic_count'
50                );
51
52                // Forum reply count (Stored in postmeta)
53                $this->field_map[] = array(
54                        'from_tablename' => 'kunena_categories',
55                        'from_fieldname' => 'numPosts',
56                        'to_type'        => 'forum',
57                        'to_fieldname'   => '_bbp_reply_count'
58                );
59
60                // Forum total topic count (Includes unpublished topics, Stored in postmeta)
61                $this->field_map[] = array(
62                        'from_tablename'  => 'kunena_categories',
63                        'from_fieldname'  => 'numTopics',
64                        'to_type'         => 'forum',
65                        'to_fieldname'    => '_bbp_total_topic_count'
66                );
67
68                // Forum total reply count (Includes unpublished replies, Stored in postmeta)
69                $this->field_map[] = array(
70                        'from_tablename'  => 'kunena_categories',
71                        'from_fieldname'  => 'numPosts',
72                        'to_type'         => 'forum',
73                        'to_fieldname'    => '_bbp_total_reply_count'
74                );
75
76                // Forum title.
77                $this->field_map[] = array(
78                        'from_tablename' => 'kunena_categories',
79                        'from_fieldname' => 'name',
80                        'to_type'        => 'forum',
81                        'to_fieldname'   => 'post_title'
82                );
83
84                // Forum slug (Clean name to avoid conflicts)
85                $this->field_map[] = array(
86                        'from_tablename'  => 'kunena_categories',
87                        'from_fieldname'  => 'alias',
88                        'to_type'         => 'forum',
89                        'to_fieldname'    => 'post_name',
90                        'callback_method' => 'callback_slug'
91                );
92
93                // Forum description.
94                $this->field_map[] = array(
95                        'from_tablename'  => 'kunena_categories',
96                        'from_fieldname'  => 'description',
97                        'to_type'         => 'forum',
98                        'to_fieldname'    => 'post_content',
99                        'callback_method' => 'callback_null'
100                );
101
102                // Forum display order (Starts from 1)
103                $this->field_map[] = array(
104                        'from_tablename' => 'kunena_categories',
105                        'from_fieldname' => 'ordering',
106                        'to_type'        => 'forum',
107                        'to_fieldname'   => 'menu_order'
108                );
109
110                // Forum type (Category = 0 or Forum = >0, Stored in postmeta)
111                $this->field_map[] = array(
112                        'from_tablename'  => 'kunena_categories',
113                        'from_fieldname'  => 'parent_id',
114                        'to_type'         => 'forum',
115                        'to_fieldname'    => '_bbp_forum_type',
116                        'callback_method' => 'callback_forum_type'
117                );
118
119                // Forum status (Open = 0 or Closed = 1, Stored in postmeta)
120                $this->field_map[] = array(
121                        'from_tablename'  => 'kunena_categories',
122                        'from_fieldname'  => 'locked',
123                        'to_type'         => 'forum',
124                        'to_fieldname'    => '_bbp_status',
125                        'callback_method' => 'callback_forum_status'
126                );
127
128                // Forum dates.
129                $this->field_map[] = array(
130                        'to_type'      => 'forum',
131                        'to_fieldname' => 'post_date',
132                        'default'      => date('Y-m-d H:i:s')
133                );
134                $this->field_map[] = array(
135                        'to_type'      => 'forum',
136                        'to_fieldname' => 'post_date_gmt',
137                        'default'      => date('Y-m-d H:i:s')
138                );
139                $this->field_map[] = array(
140                        'to_type'      => 'forum',
141                        'to_fieldname' => 'post_modified',
142                        'default'      => date('Y-m-d H:i:s')
143                );
144                $this->field_map[] = array(
145                        'to_type'      => 'forum',
146                        'to_fieldname' => 'post_modified_gmt',
147                        'default'      => date('Y-m-d H:i:s')
148                );
149
150                /** Topic Section *****************************************************/
151
152                // Topic id (Stored in postmeta)
153                $this->field_map[] = array(
154                        'from_tablename' => 'kunena_topics',
155                        'from_fieldname' => 'id',
156                        'to_type'        => 'topic',
157                        'to_fieldname'   => '_bbp_topic_id'
158                );
159
160                // Topic reply count (Stored in postmeta)
161                $this->field_map[] = array(
162                        'from_tablename'  => 'kunena_topics',
163                        'from_fieldname'  => 'posts',
164                        'to_type'         => 'topic',
165                        'to_fieldname'    => '_bbp_reply_count',
166                        'callback_method' => 'callback_topic_reply_count'
167                );
168
169                // Topic total reply count (Includes unpublished replies, Stored in postmeta)
170                $this->field_map[] = array(
171                        'from_tablename'  => 'kunena_topics',
172                        'from_fieldname'  => 'posts',
173                        'to_type'         => 'topic',
174                        'to_fieldname'    => '_bbp_total_reply_count',
175                        'callback_method' => 'callback_topic_reply_count'
176                );
177
178                // Topic parent forum id (If no parent, then 0. Stored in postmeta)
179                $this->field_map[] = array(
180                        'from_tablename'  => 'kunena_topics',
181                        'from_fieldname'  => 'category_id',
182                        'to_type'         => 'topic',
183                        'to_fieldname'    => '_bbp_forum_id',
184                        'callback_method' => 'callback_forumid'
185                );
186
187                // Topic author.
188                $this->field_map[] = array(
189                        'from_tablename'  => 'kunena_topics',
190                        'from_fieldname'  => 'first_post_userid',
191                        'to_type'         => 'topic',
192                        'to_fieldname'    => 'post_author',
193                        'callback_method' => 'callback_userid'
194                );
195
196                // Topic Author ip (Stored in postmeta)
197                // Note: We join the 'kunena_messages' table because 'kunena_topics' table does not include author ip.
198                $this->field_map[] = array(
199                        'from_tablename'  => 'kunena_messages',
200                        'from_fieldname'  => 'ip',
201                        'join_tablename'  => 'kunena_topics',
202                        'join_type'       => 'LEFT',
203                        'join_expression' => 'USING (id)',
204                        'to_type'         => 'topic',
205                        'to_fieldname'    => '_bbp_author_ip'
206                );
207
208                // Topic content.
209                $this->field_map[] = array(
210                        'from_tablename'  => 'kunena_topics',
211                        'from_fieldname'  => 'first_post_message',
212                        'to_type'         => 'topic',
213                        'to_fieldname'    => 'post_content',
214                        'callback_method' => 'callback_html'
215                );
216
217                // Topic title.
218                $this->field_map[] = array(
219                        'from_tablename' => 'kunena_topics',
220                        'from_fieldname' => 'subject',
221                        'to_type'        => 'topic',
222                        'to_fieldname'   => 'post_title'
223                );
224
225                // Topic slug (Clean name to avoid conflicts)
226                $this->field_map[] = array(
227                        'from_tablename'  => 'kunena_topics',
228                        'from_fieldname'  => 'subject',
229                        'to_type'         => 'topic',
230                        'to_fieldname'    => 'post_name',
231                        'callback_method' => 'callback_slug'
232                );
233
234                // Topic parent forum id (If no parent, then 0)
235                $this->field_map[] = array(
236                        'from_tablename'  => 'kunena_topics',
237                        'from_fieldname'  => 'category_id',
238                        'to_type'         => 'topic',
239                        'to_fieldname'    => 'post_parent',
240                        'callback_method' => 'callback_forumid'
241                );
242
243                // Topic dates.
244                $this->field_map[] = array(
245                        'from_tablename'  => 'kunena_topics',
246                        'from_fieldname'  => 'first_post_time',
247                        'to_type'         => 'topic',
248                        'to_fieldname'    => 'post_date',
249                        'callback_method' => 'callback_datetime'
250                );
251                $this->field_map[] = array(
252                        'from_tablename'  => 'kunena_topics',
253                        'from_fieldname'  => 'first_post_time',
254                        'to_type'         => 'topic',
255                        'to_fieldname'    => 'post_date_gmt',
256                        'callback_method' => 'callback_datetime'
257                );
258                $this->field_map[] = array(
259                        'from_tablename'  => 'kunena_topics',
260                        'from_fieldname'  => 'last_post_time',
261                        'to_type'         => 'topic',
262                        'to_fieldname'    => 'post_modified',
263                        'callback_method' => 'callback_datetime'
264                );
265                $this->field_map[] = array(
266                        'from_tablename'  => 'kunena_topics',
267                        'from_fieldname'  => 'last_post_time',
268                        'to_type'         => 'topic',
269                        'to_fieldname'    => 'post_modified_gmt',
270                        'callback_method' => 'callback_datetime'
271                );
272                $this->field_map[] = array(
273                        'from_tablename'  => 'kunena_topics',
274                        'from_fieldname'  => 'last_post_time',
275                        'to_type'         => 'topic',
276                        'to_fieldname'    => '_bbp_last_active_time',
277                        'callback_method' => 'callback_datetime'
278                );
279
280                // Topic status (Open or Closed, Kunena v3.x 0=open & 1=closed)
281                $this->field_map[] = array(
282                        'from_tablename'  => 'kunena_topics',
283                        'from_fieldname'  => 'locked',
284                        'to_type'         => 'topic',
285                        'to_fieldname'    => 'post_status',
286                        'callback_method' => 'callback_topic_status'
287                );
288
289                /** Tags Section ******************************************************/
290
291                /**
292                 * Kunena v3.x Forums do not support topic tags out of the box
293                 */
294
295                /** Reply Section ******************************************************/
296
297                // Reply id (Stored in postmeta)
298                $this->field_map[] = array(
299                        'from_tablename'  => 'kunena_messages',
300                        'from_fieldname'  => 'id',
301                        'to_type'         => 'reply',
302                        'to_fieldname'    => '_bbp_post_id'
303                );
304
305                // Reply parent forum id (If no parent, then 0. Stored in postmeta)
306                $this->field_map[] = array(
307                        'from_tablename'  => 'kunena_messages',
308                        'from_fieldname'  => 'catid',
309                        'to_type'         => 'reply',
310                        'to_fieldname'    => '_bbp_forum_id',
311                        'callback_method' => 'callback_topicid_to_forumid'
312                );
313
314                // Reply parent topic id (If no parent, then 0. Stored in postmeta)
315                $this->field_map[] = array(
316                        'from_tablename'  => 'kunena_messages',
317                        'from_fieldname'  => 'thread',
318                        'to_type'         => 'reply',
319                        'to_fieldname'    => '_bbp_topic_id',
320                        'callback_method' => 'callback_topicid'
321                );
322
323                // Reply author ip (Stored in postmeta)
324                $this->field_map[] = array(
325                        'from_tablename' => 'kunena_messages',
326                        'from_fieldname' => 'ip',
327                        'to_type'        => 'reply',
328                        'to_fieldname'   => '_bbp_author_ip'
329                );
330
331                // Reply author.
332                $this->field_map[] = array(
333                        'from_tablename'  => 'kunena_messages',
334                        'from_fieldname'  => 'userid',
335                        'to_type'         => 'reply',
336                        'to_fieldname'    => 'post_author',
337                        'callback_method' => 'callback_userid'
338                );
339
340                // Reply title.
341                $this->field_map[] = array(
342                        'from_tablename' => 'kunena_messages',
343                        'from_fieldname' => 'subject',
344                        'to_type'        => 'reply',
345                        'to_fieldname'   => 'post_title',
346                        'callback_method' => 'callback_reply_title'
347                );
348
349                // Reply slug (Clean name to avoid conflicts)
350                $this->field_map[] = array(
351                        'from_tablename'  => 'kunena_messages',
352                        'from_fieldname'  => 'subject',
353                        'to_type'         => 'reply',
354                        'to_fieldname'    => 'post_name',
355                        'callback_method' => 'callback_slug'
356                );
357
358                // Reply content.
359                // Note: We join the 'kunena_messages_text' table because 'kunena_messages' table does not include reply content.
360                $this->field_map[] = array(
361                        'from_tablename'  => 'kunena_messages_text',
362                        'from_fieldname'  => 'message',
363                        'join_tablename'  => 'kunena_messages',
364                        'join_type'       => 'LEFT',
365                        'join_expression' => 'ON kunena_messages_text.mesid = kunena_messages.id LEFT JOIN jos_kunena_topics AS kunena_topics ON kunena_messages.thread = kunena_topics.id WHERE kunena_messages.parent != 0',
366                        'to_type'         => 'reply',
367                        'to_fieldname'    => 'post_content',
368                        'callback_method' => 'callback_html'
369                );
370
371                // Reply parent topic id (If no parent, then 0)
372                $this->field_map[] = array(
373                        'from_tablename'  => 'kunena_messages',
374                        'from_fieldname'  => 'thread',
375                        'to_type'         => 'reply',
376                        'to_fieldname'    => 'post_parent',
377                        'callback_method' => 'callback_topicid'
378                );
379
380                // Reply dates.
381                $this->field_map[] = array(
382                        'from_tablename'  => 'kunena_messages',
383                        'from_fieldname'  => 'time',
384                        'to_type'         => 'reply',
385                        'to_fieldname'    => 'post_date',
386                        'callback_method' => 'callback_datetime'
387                );
388                $this->field_map[] = array(
389                        'from_tablename'  => 'kunena_messages',
390                        'from_fieldname'  => 'time',
391                        'to_type'         => 'reply',
392                        'to_fieldname'    => 'post_date_gmt',
393                        'callback_method' => 'callback_datetime'
394                );
395                $this->field_map[] = array(
396                        'from_tablename'  => 'kunena_messages',
397                        'from_fieldname'  => 'time',
398                        'to_type'         => 'reply',
399                        'to_fieldname'    => 'post_modified',
400                        'callback_method' => 'callback_datetime'
401                );
402                $this->field_map[] = array(
403                        'from_tablename'  => 'kunena_messages',
404                        'from_fieldname'  => 'time',
405                        'to_type'         => 'reply',
406                        'to_fieldname'    => 'post_modified_gmt',
407                        'callback_method' => 'callback_datetime'
408                );
409
410                /** User Section ******************************************************/
411
412                //Note: We are importing the Joomla User details and the Kunena v3.x user profile details.
413
414                // Store old User id (Stored in usermeta)
415                $this->field_map[] = array(
416                        'from_tablename' => 'users',
417                        'from_fieldname' => 'id',
418                        'to_type'        => 'user',
419                        'to_fieldname'   => '_bbp_user_id'
420                );
421
422                // Store old User password (Stored in usermeta serialized with salt)
423                $this->field_map[] = array(
424                        'from_tablename'  => 'users',
425                        'from_fieldname'  => 'password',
426                        'to_type'         => 'user',
427                        'to_fieldname'    => '_bbp_password',
428                        'callback_method' => 'callback_savepass'
429                );
430
431                // Store old User Salt (This is only used for the SELECT row info for the above password save)
432//              $this->field_map[] = array(
433//                      'from_tablename' => 'users',
434//                      'from_fieldname' => 'salt',
435//                      'to_type'        => 'user',
436//                      'to_fieldname'   => ''
437//              );
438
439                // User password verify class (Stored in usermeta for verifying password)
440                $this->field_map[] = array(
441                        'to_type'      => 'users',
442                        'to_fieldname' => '_bbp_class',
443                        'default'      => 'Kunena3'
444                );
445
446                // User name.
447                $this->field_map[] = array(
448                        'from_tablename' => 'users',
449                        'from_fieldname' => 'username',
450                        'to_type'        => 'user',
451                        'to_fieldname'   => 'user_login'
452                );
453
454                // User nice name.
455                $this->field_map[] = array(
456                        'from_tablename' => 'users',
457                        'from_fieldname' => 'username',
458                        'to_type'        => 'user',
459                        'to_fieldname'   => 'user_nicename'
460                );
461
462                // User email.
463                $this->field_map[] = array(
464                        'from_tablename' => 'users',
465                        'from_fieldname' => 'email',
466                        'to_type'        => 'user',
467                        'to_fieldname'   => 'user_email'
468                );
469
470                // User homepage.
471                $this->field_map[] = array(
472                        'from_tablename'  => 'kunena_users',
473                        'from_fieldname'  => 'websiteurl',
474                        'join_tablename'  => 'users',
475                        'join_type'       => 'LEFT',
476                        'join_expression' => 'ON kunena_users.userid = users.id',
477                        'to_type'         => 'user',
478                        'to_fieldname'    => 'user_url'
479                );
480
481                // User registered.
482                $this->field_map[] = array(
483                        'from_tablename'  => 'users',
484                        'from_fieldname'  => 'registerDate',
485                        'to_type'         => 'user',
486                        'to_fieldname'    => 'user_registered',
487                        'callback_method' => 'callback_datetime'
488                );
489
490                // User display name.
491                $this->field_map[] = array(
492                        'from_tablename' => 'users',
493                        'from_fieldname' => 'name',
494                        'to_type'        => 'user',
495                        'to_fieldname'   => 'display_name'
496                );
497
498                // User AIM (Stored in usermeta)
499                $this->field_map[] = array(
500                        'from_tablename'  => 'kunena_users',
501                        'from_fieldname'  => 'aim',
502                        'join_tablename'  => 'users',
503                        'join_type'       => 'LEFT',
504                        'join_expression' => 'ON kunena_users.userid = users.id',
505                        'to_type'         => 'user',
506                        'to_fieldname'    => 'aim'
507                );
508
509                // User Yahoo (Stored in usermeta)
510                $this->field_map[] = array(
511                        'from_tablename'  => 'kunena_users',
512                        'from_fieldname'  => 'yim',
513                        'join_tablename'  => 'users',
514                        'join_type'       => 'LEFT',
515                        'join_expression' => 'ON kunena_users.userid = users.id',
516                        'to_type'         => 'user',
517                        'to_fieldname'    => 'yim'
518                );
519
520                // Store Google Tak (Stored in usermeta)
521                $this->field_map[] = array(
522                        'from_tablename'  => 'kunena_users',
523                        'from_fieldname'  => 'gtalk',
524                        'join_tablename'  => 'users',
525                        'join_type'       => 'LEFT',
526                        'join_expression' => 'ON kunena_users.userid = users.id',
527                        'to_type'         => 'user',
528                        'to_fieldname'    => 'jabber'
529                );
530
531                // Store ICQ (Stored in usermeta)
532                $this->field_map[] = array(
533                        'from_tablename'  => 'kunena_users',
534                        'from_fieldname'  => 'icq',
535                        'join_tablename'  => 'users',
536                        'join_type'       => 'LEFT',
537                        'join_expression' => 'ON kunena_users.userid = users.id',
538                        'to_type'         => 'user',
539                        'to_fieldname'    => '_bbp_kunena3_user_icq'
540                );
541
542                // Store MSN (Stored in usermeta)
543                $this->field_map[] = array(
544                        'from_tablename'  => 'kunena_users',
545                        'from_fieldname'  => 'msn',
546                        'join_tablename'  => 'users',
547                        'join_type'       => 'LEFT',
548                        'join_expression' => 'ON kunena_users.userid = users.id',
549                        'to_type'         => 'user',
550                        'to_fieldname'    => '_bbp_kunena3_user_msn'
551                );
552
553                // Store Skype (Stored in usermeta)
554                $this->field_map[] = array(
555                        'from_tablename'  => 'kunena_users',
556                        'from_fieldname'  => 'skype',
557                        'join_tablename'  => 'users',
558                        'join_type'       => 'LEFT',
559                        'join_expression' => 'ON kunena_users.userid = users.id',
560                        'to_type'         => 'user',
561                        'to_fieldname'    => '_bbp_kunena3_user_skype'
562                );
563
564                // Store Twitter (Stored in usermeta)
565                $this->field_map[] = array(
566                        'from_tablename'  => 'kunena_users',
567                        'from_fieldname'  => 'twitter',
568                        'join_tablename'  => 'users',
569                        'join_type'       => 'LEFT',
570                        'join_expression' => 'ON kunena_users.userid = users.id',
571                        'to_type'         => 'user',
572                        'to_fieldname'    => '_bbp_kunena3_user_twitter'
573                );
574
575                // Store Facebook (Stored in usermeta)
576                $this->field_map[] = array(
577                        'from_tablename'  => 'kunena_users',
578                        'from_fieldname'  => 'facebook',
579                        'join_tablename'  => 'users',
580                        'join_type'       => 'LEFT',
581                        'join_expression' => 'ON kunena_users.userid = users.id',
582                        'to_type'         => 'user',
583                        'to_fieldname'    => '_bbp_kunena3_user_facebook'
584                );
585
586                // Store myspace (Stored in usermeta)
587                $this->field_map[] = array(
588                        'from_tablename'  => 'kunena_users',
589                        'from_fieldname'  => 'myspace',
590                        'join_tablename'  => 'users',
591                        'join_type'       => 'LEFT',
592                        'join_expression' => 'ON kunena_users.userid = users.id',
593                        'to_type'         => 'user',
594                        'to_fieldname'    => '_bbp_kunena3_user_myspace'
595                );
596
597                // Store linkedin (Stored in usermeta)
598                $this->field_map[] = array(
599                        'from_tablename'  => 'kunena_users',
600                        'from_fieldname'  => 'linkedin',
601                        'join_tablename'  => 'users',
602                        'join_type'       => 'LEFT',
603                        'join_expression' => 'ON kunena_users.userid = users.id',
604                        'to_type'         => 'user',
605                        'to_fieldname'    => '_bbp_kunena3_user_linkedin'
606                );
607
608                // Store delicious (Stored in usermeta)
609                $this->field_map[] = array(
610                        'from_tablename'  => 'kunena_users',
611                        'from_fieldname'  => 'delicious',
612                        'join_tablename'  => 'users',
613                        'join_type'       => 'LEFT',
614                        'join_expression' => 'ON kunena_users.userid = users.id',
615                        'to_type'         => 'user',
616                        'to_fieldname'    => '_bbp_kunena3_user_delicious'
617                );
618
619                // Store friendfeed (Stored in usermeta)
620                $this->field_map[] = array(
621                        'from_tablename'  => 'kunena_users',
622                        'from_fieldname'  => 'friendfeed',
623                        'join_tablename'  => 'users',
624                        'join_type'       => 'LEFT',
625                        'join_expression' => 'ON kunena_users.userid = users.id',
626                        'to_type'         => 'user',
627                        'to_fieldname'    => '_bbp_kunena3_user_friendfeed'
628                );
629
630                // Store digg (Stored in usermeta)
631                $this->field_map[] = array(
632                        'from_tablename'  => 'kunena_users',
633                        'from_fieldname'  => 'digg',
634                        'join_tablename'  => 'users',
635                        'join_type'       => 'LEFT',
636                        'join_expression' => 'ON kunena_users.userid = users.id',
637                        'to_type'         => 'user',
638                        'to_fieldname'    => '_bbp_kunena3_user_digg'
639                );
640
641                // Store blogspot (Stored in usermeta)
642                $this->field_map[] = array(
643                        'from_tablename'  => 'kunena_users',
644                        'from_fieldname'  => 'blogspot',
645                        'join_tablename'  => 'users',
646                        'join_type'       => 'LEFT',
647                        'join_expression' => 'ON kunena_users.userid = users.id',
648                        'to_type'         => 'user',
649                        'to_fieldname'    => '_bbp_kunena3_user_blogspot'
650                );
651
652                // Store flickr (Stored in usermeta)
653                $this->field_map[] = array(
654                        'from_tablename'  => 'kunena_users',
655                        'from_fieldname'  => 'flickr',
656                        'join_tablename'  => 'users',
657                        'join_type'       => 'LEFT',
658                        'join_expression' => 'ON kunena_users.userid = users.id',
659                        'to_type'         => 'user',
660                        'to_fieldname'    => '_bbp_kunena3_user_flickr'
661                );
662
663                // Store bebo (Stored in usermeta)
664                $this->field_map[] = array(
665                        'from_tablename'  => 'kunena_users',
666                        'from_fieldname'  => 'bebo',
667                        'join_tablename'  => 'users',
668                        'join_type'       => 'LEFT',
669                        'join_expression' => 'ON kunena_users.userid = users.id',
670                        'to_type'         => 'user',
671                        'to_fieldname'    => '_bbp_kunena3_user_bebo'
672                );
673
674                // Store websitename (Stored in usermeta)
675                $this->field_map[] = array(
676                        'from_tablename'  => 'kunena_users',
677                        'from_fieldname'  => 'websitename',
678                        'join_tablename'  => 'users',
679                        'join_type'       => 'LEFT',
680                        'join_expression' => 'ON kunena_users.userid = users.id',
681                        'to_type'         => 'user',
682                        'to_fieldname'    => '_bbp_kunena3_user_websitename'
683                );
684
685                // Store location (Stored in usermeta)
686                $this->field_map[] = array(
687                        'from_tablename'  => 'kunena_users',
688                        'from_fieldname'  => 'location',
689                        'join_tablename'  => 'users',
690                        'join_type'       => 'LEFT',
691                        'join_expression' => 'ON kunena_users.userid = users.id',
692                        'to_type'         => 'user',
693                        'to_fieldname'    => '_bbp_kunena3_user_location'
694                );
695
696                // Store Signature (Stored in usermeta)
697                $this->field_map[] = array(
698                        'from_tablename'  => 'kunena_users',
699                        'from_fieldname'  => 'signature',
700                        'join_tablename'  => 'users',
701                        'join_type'       => 'LEFT',
702                        'join_expression' => 'ON kunena_users.userid = users.id',
703                        'to_type'         => 'user',
704                        'to_fieldname'    => '_bbp_kunena3_user_sig',
705                        'callback_method' => 'callback_html'
706                );
707        }
708
709        /**
710         * This method allows us to indicates what is or is not converted for each
711         * converter.
712         */
713        public function info()
714        {
715                return '';
716        }
717
718        /**
719         * This method is to save the salt and password together.  That
720         * way when we authenticate it we can get it out of the database
721         * as one value. Array values are auto sanitized by WordPress.
722         */
723        public function callback_savepass( $field, $row )
724        {
725                $pass_array = array( 'hash' => $field, 'salt' => $row['salt'] );
726                return $pass_array;
727        }
728
729        /**
730         * This method is to take the pass out of the database and compare
731         * to a pass the user has typed in.
732         */
733        public function authenticate_pass( $password, $serialized_pass )
734        {
735                $pass_array = unserialize( $serialized_pass );
736                return ( $pass_array['hash'] == md5( md5( $password ). $pass_array['salt'] ) );
737        }
738
739        /**
740         * Translate the forum type from Kunena v3.x numeric's to WordPress's strings.
741         *
742         * @param int $status Kunena v3.x numeric forum type
743         * @return string WordPress safe
744         */
745        public function callback_forum_type( $status = 0 ) {
746                if ( $status == 0 ) {
747                        $status = 'category';
748                } else {
749                        $status = 'forum';
750                }
751                return $status;
752        }
753
754        /**
755         * Translate the forum status from Kunena v3.x numeric's to WordPress's strings.
756         *
757         * @param int $status Kunena v3.x numeric forum status
758         * @return string WordPress safe
759         */
760        public function callback_forum_status( $status = 0 ) {
761                switch ( $status ) {
762                        case 1 :
763                                $status = 'closed';
764                                break;
765
766                        case 0  :
767                        default :
768                                $status = 'open';
769                                break;
770                }
771                return $status;
772        }
773
774        /**
775         * Translate the post status from Kunena v3.x numeric's to WordPress's strings.
776         *
777         * @param int $status Kunena v3.x numeric topic status
778         * @return string WordPress safe
779         */
780        public function callback_topic_status( $status = 0 ) {
781                switch ( $status ) {
782                        case 1 :
783                                $status = 'closed';
784                                break;
785
786                        case 0  :
787                        default :
788                                $status = 'publish';
789                                break;
790                }
791                return $status;
792        }
793
794        /**
795         * Verify the topic/reply count.
796         *
797         * @param int $count Kunena v3.x topic/reply counts
798         * @return string WordPress safe
799         */
800        public function callback_topic_reply_count( $count = 1 ) {
801                $count = absint( (int) $count - 1 );
802                return $count;
803        }
804
805        /**
806         * Set the reply title
807         *
808         * @param string $title Kunena v3.x topic title of this reply
809         * @return string Prefixed topic title, or empty string
810         */
811        public function callback_reply_title( $title = '' ) {
812                $title = !empty( $title ) ? __( 'Re: ', 'bbpress' ) . html_entity_decode( $title ) : '';
813                return $title;
814        }
815}