Skip to:
Content

bbPress.org

Ticket #2402: Kunena.php

File Kunena.php, 23.4 KB (added by netweb, 8 years ago)

Kunena 3rd Pass

Line 
1<?php
2
3/**
4 * Implementation of Kunena Forums for Joomla Forum converter.
5 *
6 * @since bbPress (r5057)
7 * @link Codex Docs http://codex.bbpress.org/import-forums/kunena/
8 */
9class Kunena extends BBP_Converter_Base {
10
11        /**
12         * Main Constructor
13         *
14         * @uses Kunena::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                // Topic content.
208                $this->field_map[] = array(
209                        'from_tablename'  => 'kunena_topics',
210                        'from_fieldname'  => 'first_post_message',
211                        'to_type'         => 'topic',
212                        'to_fieldname'    => 'post_content',
213                        'callback_method' => 'callback_html'
214                );
215
216                // Topic title.
217                $this->field_map[] = array(
218                        'from_tablename' => 'kunena_topics',
219                        'from_fieldname' => 'subject',
220                        'to_type'        => 'topic',
221                        'to_fieldname'   => 'post_title'
222                );
223
224                // Topic slug (Clean name to avoid conflicts)
225                $this->field_map[] = array(
226                        'from_tablename'  => 'kunena_topics',
227                        'from_fieldname'  => 'subject',
228                        'to_type'         => 'topic',
229                        'to_fieldname'    => 'post_name',
230                        'callback_method' => 'callback_slug'
231                );
232
233                // Topic parent forum id (If no parent, then 0)
234                $this->field_map[] = array(
235                        'from_tablename'  => 'kunena_topics',
236                        'from_fieldname'  => 'category_id',
237                        'to_type'         => 'topic',
238                        'to_fieldname'    => 'post_parent',
239                        'callback_method' => 'callback_forumid'
240                );
241
242                // Topic dates.
243                $this->field_map[] = array(
244                        'from_tablename'  => 'kunena_topics',
245                        'from_fieldname'  => 'first_post_time',
246                        'to_type'         => 'topic',
247                        'to_fieldname'    => 'post_date',
248                        'callback_method' => 'callback_datetime'
249                );
250                $this->field_map[] = array(
251                        'from_tablename'  => 'kunena_topics',
252                        'from_fieldname'  => 'first_post_time',
253                        'to_type'         => 'topic',
254                        'to_fieldname'    => 'post_date_gmt',
255                        'callback_method' => 'callback_datetime'
256                );
257                $this->field_map[] = array(
258                        'from_tablename'  => 'kunena_topics',
259                        'from_fieldname'  => 'last_post_time',
260                        'to_type'         => 'topic',
261                        'to_fieldname'    => 'post_modified',
262                        'callback_method' => 'callback_datetime'
263                );
264                $this->field_map[] = array(
265                        'from_tablename'  => 'kunena_topics',
266                        'from_fieldname'  => 'last_post_time',
267                        'to_type'         => 'topic',
268                        'to_fieldname'    => 'post_modified_gmt',
269                        'callback_method' => 'callback_datetime'
270                );
271                $this->field_map[] = array(
272                        'from_tablename'  => 'kunena_topics',
273                        'from_fieldname'  => 'last_post_time',
274                        'to_type'         => 'topic',
275                        'to_fieldname'    => '_bbp_last_active_time',
276                        'callback_method' => 'callback_datetime'
277                );
278
279                // Topic status (Open or Closed, Kunena v3.0.1 0=open & 1=closed)
280                $this->field_map[] = array(
281                        'from_tablename'  => 'kunena_topics',
282                        'from_fieldname'  => 'locked',
283                        'to_type'         => 'topic',
284                        'to_fieldname'    => 'post_status',
285                        'callback_method' => 'callback_topic_status'
286                );
287
288                /** Tags Section ******************************************************/
289
290                /**
291                 * Kunena v3.0.1 Forums do not support topic tags out of the box
292                 */
293
294                /** Reply Section ******************************************************/
295
296                // Reply id (Stored in postmeta)
297                $this->field_map[] = array(
298                        'from_tablename'  => 'kunena_messages',
299                        'from_fieldname'  => 'id',
300                        'to_type'         => 'reply',
301                        'to_fieldname'    => '_bbp_post_id'
302                );
303
304                // Reply parent forum id (If no parent, then 0. Stored in postmeta)
305                $this->field_map[] = array(
306                        'from_tablename'  => 'kunena_messages',
307                        'from_fieldname'  => 'catid',
308                        'to_type'         => 'reply',
309                        'to_fieldname'    => '_bbp_forum_id',
310                        'callback_method' => 'callback_topicid_to_forumid'
311                );
312
313                // Reply parent topic id (If no parent, then 0. Stored in postmeta)
314                $this->field_map[] = array(
315                        'from_tablename'  => 'kunena_messages',
316                        'from_fieldname'  => 'thread',
317                        'to_type'         => 'reply',
318                        'to_fieldname'    => '_bbp_topic_id',
319                        'callback_method' => 'callback_topicid'
320                );
321
322                // Reply author ip (Stored in postmeta)
323                $this->field_map[] = array(
324                        'from_tablename' => 'kunena_messages',
325                        'from_fieldname' => 'ip',
326                        'to_type'        => 'reply',
327                        'to_fieldname'   => '_bbp_author_ip'
328                );
329
330                // Reply author.
331                $this->field_map[] = array(
332                        'from_tablename'  => 'kunena_messages',
333                        'from_fieldname'  => 'userid',
334                        'to_type'         => 'reply',
335                        'to_fieldname'    => 'post_author',
336                        'callback_method' => 'callback_userid'
337                );
338
339                // Reply title.
340                $this->field_map[] = array(
341                        'from_tablename' => 'kunena_messages',
342                        'from_fieldname' => 'subject',
343                        'to_type'        => 'reply',
344                        'to_fieldname'   => 'post_title'
345                );
346
347                // Reply slug (Clean name to avoid conflicts)
348                $this->field_map[] = array(
349                        'from_tablename'  => 'kunena_messages',
350                        'from_fieldname'  => 'subject',
351                        'to_type'         => 'reply',
352                        'to_fieldname'    => 'post_name',
353                        'callback_method' => 'callback_slug'
354                );
355
356                // Reply content.
357                // Note: We join the 'kunena_messages_text' table because 'kunena_messages' table does not include content.
358                $this->field_map[] = array(
359                        'from_tablename'  => 'kunena_messages_text',
360                        'from_fieldname'  => 'message',
361                        'join_tablename'  => 'kunena_messages',
362                        'join_type'       => 'LEFT',
363                        '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',
364                        'to_type'         => 'reply',
365                        'to_fieldname'    => 'post_content',
366                        'callback_method' => 'callback_html'
367                );
368
369                // Reply parent topic id (If no parent, then 0)
370                $this->field_map[] = array(
371                        'from_tablename'  => 'kunena_messages',
372                        'from_fieldname'  => 'thread',
373                        'to_type'         => 'reply',
374                        'to_fieldname'    => 'post_parent',
375                        'callback_method' => 'callback_topicid'
376                );
377
378                // Reply dates.
379                $this->field_map[] = array(
380                        'from_tablename'  => 'kunena_messages',
381                        'from_fieldname'  => 'time',
382                        'to_type'         => 'reply',
383                        'to_fieldname'    => 'post_date',
384                        'callback_method' => 'callback_datetime'
385                );
386                $this->field_map[] = array(
387                        'from_tablename'  => 'kunena_messages',
388                        'from_fieldname'  => 'time',
389                        'to_type'         => 'reply',
390                        'to_fieldname'    => 'post_date_gmt',
391                        'callback_method' => 'callback_datetime'
392                );
393                $this->field_map[] = array(
394                        'from_tablename'  => 'kunena_messages',
395                        'from_fieldname'  => 'time',
396                        'to_type'         => 'reply',
397                        'to_fieldname'    => 'post_modified',
398                        'callback_method' => 'callback_datetime'
399                );
400                $this->field_map[] = array(
401                        'from_tablename'  => 'kunena_messages',
402                        'from_fieldname'  => 'time',
403                        'to_type'         => 'reply',
404                        'to_fieldname'    => 'post_modified_gmt',
405                        'callback_method' => 'callback_datetime'
406                );
407
408                /** User Section ******************************************************/
409
410                //Note: We are importing the Joomla User details and the Kunena user profile details.
411
412                // Store old User id (Stored in usermeta)
413                $this->field_map[] = array(
414                        'from_tablename' => 'users',
415                        'from_fieldname' => 'id',
416                        'to_type'        => 'user',
417                        'to_fieldname'   => '_bbp_user_id'
418                );
419
420                // Store old User password (Stored in usermeta serialized with salt)
421                $this->field_map[] = array(
422                        'from_tablename'  => 'users',
423                        'from_fieldname'  => 'password',
424                        'to_type'         => 'user',
425                        'to_fieldname'    => '_bbp_password',
426                        'callback_method' => 'callback_savepass'
427                );
428
429                // Store old User Salt (This is only used for the SELECT row info for the above password save)
430//              $this->field_map[] = array(
431//                      'from_tablename' => 'users',
432//                      'from_fieldname' => 'salt',
433//                      'to_type'        => 'user',
434//                      'to_fieldname'   => ''
435//              );
436
437                // User password verify class (Stored in usermeta for verifying password)
438                $this->field_map[] = array(
439                        'to_type'      => 'users',
440                        'to_fieldname' => '_bbp_class',
441                        'default'      => 'Kunena'
442                );
443
444                // User name.
445                $this->field_map[] = array(
446                        'from_tablename' => 'users',
447                        'from_fieldname' => 'username',
448                        'to_type'        => 'user',
449                        'to_fieldname'   => 'user_login'
450                );
451
452                // User nice name.
453                $this->field_map[] = array(
454                        'from_tablename' => 'users',
455                        'from_fieldname' => 'username',
456                        'to_type'        => 'user',
457                        'to_fieldname'   => 'user_nicename'
458                );
459
460                // User email.
461                $this->field_map[] = array(
462                        'from_tablename' => 'users',
463                        'from_fieldname' => 'email',
464                        'to_type'        => 'user',
465                        'to_fieldname'   => 'user_email'
466                );
467
468                // User homepage.
469                $this->field_map[] = array(
470                        'from_tablename'  => 'kunena_users',
471                        'from_fieldname'  => 'websiteurl',
472                        'join_tablename'  => 'users',
473                        'join_type'       => 'LEFT',
474                        'join_expression' => 'ON kunena_users.userid = users.id',
475                        'to_type'         => 'user',
476                        'to_fieldname'    => 'user_url'
477                );
478
479                // User registered.
480                $this->field_map[] = array(
481                        'from_tablename'  => 'users',
482                        'from_fieldname'  => 'registerDate',
483                        'to_type'         => 'user',
484                        'to_fieldname'    => 'user_registered',
485                        'callback_method' => 'callback_datetime'
486                );
487
488                // User display name.
489                $this->field_map[] = array(
490                        'from_tablename' => 'users',
491                        'from_fieldname' => 'name',
492                        'to_type'        => 'user',
493                        'to_fieldname'   => 'display_name'
494                );
495
496                // User AIM (Stored in usermeta)
497                $this->field_map[] = array(
498                        'from_tablename'  => 'kunena_users',
499                        'from_fieldname'  => 'aim',
500                        'join_tablename'  => 'users',
501                        'join_type'       => 'LEFT',
502                        'join_expression' => 'ON kunena_users.userid = users.id',
503                        'to_type'         => 'user',
504                        'to_fieldname'    => 'aim'
505                );
506
507                // User Yahoo (Stored in usermeta)
508                $this->field_map[] = array(
509                        'from_tablename'  => 'kunena_users',
510                        'from_fieldname'  => 'yim',
511                        'join_tablename'  => 'users',
512                        'join_type'       => 'LEFT',
513                        'join_expression' => 'ON kunena_users.userid = users.id',
514                        'to_type'         => 'user',
515                        'to_fieldname'    => 'yim'
516                );
517
518                // Store Google Tak (Stored in usermeta)
519                $this->field_map[] = array(
520                        'from_tablename'  => 'kunena_users',
521                        'from_fieldname'  => 'gtalk',
522                        'join_tablename'  => 'users',
523                        'join_type'       => 'LEFT',
524                        'join_expression' => 'ON kunena_users.userid = users.id',
525                        'to_type'         => 'user',
526                        'to_fieldname'    => 'jabber'
527                );
528
529                // Store ICQ (Stored in usermeta)
530                $this->field_map[] = array(
531                        'from_tablename'  => 'kunena_users',
532                        'from_fieldname'  => 'icq',
533                        'join_tablename'  => 'users',
534                        'join_type'       => 'LEFT',
535                        'join_expression' => 'ON kunena_users.userid = users.id',
536                        'to_type'         => 'user',
537                        'to_fieldname'    => '_bbp_kunena_user_icq'
538                );
539
540                // Store MSN (Stored in usermeta)
541                $this->field_map[] = array(
542                        'from_tablename'  => 'kunena_users',
543                        'from_fieldname'  => 'msn',
544                        'join_tablename'  => 'users',
545                        'join_type'       => 'LEFT',
546                        'join_expression' => 'ON kunena_users.userid = users.id',
547                        'to_type'         => 'user',
548                        'to_fieldname'    => '_bbp_kunena_user_msn'
549                );
550
551                // Store Skype (Stored in usermeta)
552                $this->field_map[] = array(
553                        'from_tablename'  => 'kunena_users',
554                        'from_fieldname'  => 'skype',
555                        'join_tablename'  => 'users',
556                        'join_type'       => 'LEFT',
557                        'join_expression' => 'ON kunena_users.userid = users.id',
558                        'to_type'         => 'user',
559                        'to_fieldname'    => '_bbp_kunena_user_skype'
560                );
561
562                // Store Twitter (Stored in usermeta)
563                $this->field_map[] = array(
564                        'from_tablename'  => 'kunena_users',
565                        'from_fieldname'  => 'twitter',
566                        'join_tablename'  => 'users',
567                        'join_type'       => 'LEFT',
568                        'join_expression' => 'ON kunena_users.userid = users.id',
569                        'to_type'         => 'user',
570                        'to_fieldname'    => '_bbp_kunena_user_twitter'
571                );
572
573                // Store Facebook (Stored in usermeta)
574                $this->field_map[] = array(
575                        'from_tablename'  => 'kunena_users',
576                        'from_fieldname'  => 'facebook',
577                        'join_tablename'  => 'users',
578                        'join_type'       => 'LEFT',
579                        'join_expression' => 'ON kunena_users.userid = users.id',
580                        'to_type'         => 'user',
581                        'to_fieldname'    => '_bbp_kunena_user_facebook'
582                );
583
584                // Store myspace (Stored in usermeta)
585                $this->field_map[] = array(
586                        'from_tablename'  => 'kunena_users',
587                        'from_fieldname'  => 'myspace',
588                        'join_tablename'  => 'users',
589                        'join_type'       => 'LEFT',
590                        'join_expression' => 'ON kunena_users.userid = users.id',
591                        'to_type'         => 'user',
592                        'to_fieldname'    => '_bbp_kunena_user_myspace'
593                );
594
595                // Store linkedin (Stored in usermeta)
596                $this->field_map[] = array(
597                        'from_tablename'  => 'kunena_users',
598                        'from_fieldname'  => 'linkedin',
599                        'join_tablename'  => 'users',
600                        'join_type'       => 'LEFT',
601                        'join_expression' => 'ON kunena_users.userid = users.id',
602                        'to_type'         => 'user',
603                        'to_fieldname'    => '_bbp_kunena_user_linkedin'
604                );
605
606                // Store delicious (Stored in usermeta)
607                $this->field_map[] = array(
608                        'from_tablename'  => 'kunena_users',
609                        'from_fieldname'  => 'delicious',
610                        'join_tablename'  => 'users',
611                        'join_type'       => 'LEFT',
612                        'join_expression' => 'ON kunena_users.userid = users.id',
613                        'to_type'         => 'user',
614                        'to_fieldname'    => '_bbp_kunena_user_delicious'
615                );
616
617                // Store friendfeed (Stored in usermeta)
618                $this->field_map[] = array(
619                        'from_tablename'  => 'kunena_users',
620                        'from_fieldname'  => 'friendfeed',
621                        'join_tablename'  => 'users',
622                        'join_type'       => 'LEFT',
623                        'join_expression' => 'ON kunena_users.userid = users.id',
624                        'to_type'         => 'user',
625                        'to_fieldname'    => '_bbp_kunena_user_friendfeed'
626                );
627
628                // Store digg (Stored in usermeta)
629                $this->field_map[] = array(
630                        'from_tablename'  => 'kunena_users',
631                        'from_fieldname'  => 'digg',
632                        'join_tablename'  => 'users',
633                        'join_type'       => 'LEFT',
634                        'join_expression' => 'ON kunena_users.userid = users.id',
635                        'to_type'         => 'user',
636                        'to_fieldname'    => '_bbp_kunena_user_digg'
637                );
638
639                // Store blogspot (Stored in usermeta)
640                $this->field_map[] = array(
641                        'from_tablename'  => 'kunena_users',
642                        'from_fieldname'  => 'blogspot',
643                        'join_tablename'  => 'users',
644                        'join_type'       => 'LEFT',
645                        'join_expression' => 'ON kunena_users.userid = users.id',
646                        'to_type'         => 'user',
647                        'to_fieldname'    => '_bbp_kunena_user_blogspot'
648                );
649
650                // Store flickr (Stored in usermeta)
651                $this->field_map[] = array(
652                        'from_tablename'  => 'kunena_users',
653                        'from_fieldname'  => 'flickr',
654                        'join_tablename'  => 'users',
655                        'join_type'       => 'LEFT',
656                        'join_expression' => 'ON kunena_users.userid = users.id',
657                        'to_type'         => 'user',
658                        'to_fieldname'    => '_bbp_kunena_user_flickr'
659                );
660
661                // Store bebo (Stored in usermeta)
662                $this->field_map[] = array(
663                        'from_tablename'  => 'kunena_users',
664                        'from_fieldname'  => 'bebo',
665                        'join_tablename'  => 'users',
666                        'join_type'       => 'LEFT',
667                        'join_expression' => 'ON kunena_users.userid = users.id',
668                        'to_type'         => 'user',
669                        'to_fieldname'    => '_bbp_kunena_user_bebo'
670                );
671
672                // Store websitename (Stored in usermeta)
673                $this->field_map[] = array(
674                        'from_tablename'  => 'kunena_users',
675                        'from_fieldname'  => 'websitename',
676                        'join_tablename'  => 'users',
677                        'join_type'       => 'LEFT',
678                        'join_expression' => 'ON kunena_users.userid = users.id',
679                        'to_type'         => 'user',
680                        'to_fieldname'    => '_bbp_kunena_user_websitename'
681                );
682
683                // Store location (Stored in usermeta)
684                $this->field_map[] = array(
685                        'from_tablename'  => 'kunena_users',
686                        'from_fieldname'  => 'location',
687                        'join_tablename'  => 'users',
688                        'join_type'       => 'LEFT',
689                        'join_expression' => 'ON kunena_users.userid = users.id',
690                        'to_type'         => 'user',
691                        'to_fieldname'    => '_bbp_kunena_user_location'
692                );
693
694                // Store Signature (Stored in usermeta)
695                $this->field_map[] = array(
696                        'from_tablename'  => 'kunena_users',
697                        'from_fieldname'  => 'signature',
698                        'join_tablename'  => 'users',
699                        'join_type'       => 'LEFT',
700                        'join_expression' => 'ON kunena_users.userid = users.id',
701                        'to_type'         => 'user',
702                        'to_fieldname'    => '_bbp_kunena_user_sig',
703                        'callback_method' => 'callback_html'
704                );
705        }
706
707        /**
708         * This method allows us to indicates what is or is not converted for each
709         * converter.
710         */
711        public function info()
712        {
713                return '';
714        }
715
716        /**
717         * This method is to save the salt and password together.  That
718         * way when we authenticate it we can get it out of the database
719         * as one value. Array values are auto sanitized by WordPress.
720         */
721        public function callback_savepass( $field, $row )
722        {
723                $pass_array = array( 'hash' => $field, 'salt' => $row['salt'] );
724                return $pass_array;
725        }
726
727        /**
728         * This method is to take the pass out of the database and compare
729         * to a pass the user has typed in.
730         */
731        public function authenticate_pass( $password, $serialized_pass )
732        {
733                $pass_array = unserialize( $serialized_pass );
734                return ( $pass_array['hash'] == md5( md5( $password ). $pass_array['salt'] ) );
735        }
736
737        /**
738         * Translate the forum type from Kunena v3.0.1 numeric's to WordPress's strings.
739         *
740         * @param int $status Kunena v3.0.1 numeric forum type
741         * @return string WordPress safe
742         */
743        public function callback_forum_type( $status = 0 ) {
744                if ( $status == 0 ) {
745                        $status = 'category';
746                } else {
747                        $status = 'forum';
748                }
749                return $status;
750        }
751
752        /**
753         * Translate the forum status from Kunena v3.0.1 numeric's to WordPress's strings.
754         *
755         * @param int $status Kunena v3.0.1 numeric forum status
756         * @return string WordPress safe
757         */
758        public function callback_forum_status( $status = 0 ) {
759                switch ( $status ) {
760                        case 1 :
761                                $status = 'closed';
762                                break;
763
764                        case 0  :
765                        default :
766                                $status = 'open';
767                                break;
768                }
769                return $status;
770        }
771
772        /**
773         * Translate the post status from Kunena v3.0.1 numeric's to WordPress's strings.
774         *
775         * @param int $status Kunena v3.0.1 numeric topic status
776         * @return string WordPress safe
777         */
778        public function callback_topic_status( $status = 0 ) {
779                switch ( $status ) {
780                        case 1 :
781                                $status = 'closed';
782                                break;
783
784                        case 0  :
785                        default :
786                                $status = 'publish';
787                                break;
788                }
789                return $status;
790        }
791
792        /**
793         * Verify the topic/reply count.
794         *
795         * @param int $count Kunena v3.0.1 topic/reply counts
796         * @return string WordPress safe
797         */
798        public function callback_topic_reply_count( $count = 1 ) {
799                $count = absint( (int) $count - 1 );
800                return $count;
801        }
802
803}