PluginProbe
Forumax – AI Powered Advanced Community Forum Plugin / 2.5.0
Forumax – AI Powered Advanced Community Forum Plugin v2.5.0
2.5.1 2.5.0 2.4.4 2.4.3 2.4.2 2.4.1 2.4.0 trunk 1.0.8 1.1.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 All 31 releases
bbp-core / lib / bbpress / includes / admin / converters / Mingle.php

Mingle.php in Forumax – AI Powered Advanced Community Forum Plugin 2.5.0, at lib/bbpress/includes/admin/converters/Mingle.php

481 lines 12.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * bbPress Mingle Converter
5 *
6 * @package bbPress
7 * @subpackage Converters
8 */
9
10 /**
11 * Implementation of Mingle Forums converter.
12 *
13 * @since 2.3.0 bbPress (r4691)
14 *
15 * @link Codex Docs https://codex.bbpress.org/import-forums/mingle
16 */
17 class Mingle extends BBP_Converter_Base {
18
19 /**
20 * Main constructor
21 *
22 */
23 public function __construct() {
24 parent::__construct();
25 }
26
27 /**
28 * Sets up the field mappings
29 */
30 public function setup_globals() {
31
32 // Setup smiley URL & path
33 $this->bbcode_parser_properties = array(
34 'smiley_url' => false,
35 'smiley_dir' => false
36 );
37
38 /** Forum Section ******************************************************/
39
40 // Old forum id (Stored in postmeta)
41 $this->field_map[] = array(
42 'from_tablename' => 'forum_forums',
43 'from_fieldname' => 'id',
44 'to_type' => 'forum',
45 'to_fieldname' => '_bbp_old_forum_id'
46 );
47
48 // Forum parent id (If no parent, then 0. Stored in postmeta)
49 $this->field_map[] = array(
50 'from_tablename' => 'forum_forums',
51 'from_fieldname' => 'parent_id',
52 'to_type' => 'forum',
53 'to_fieldname' => '_bbp_old_forum_parent_id'
54 );
55
56 // Forum title.
57 $this->field_map[] = array(
58 'from_tablename' => 'forum_forums',
59 'from_fieldname' => 'name',
60 'to_type' => 'forum',
61 'to_fieldname' => 'post_title'
62 );
63
64 // Forum slug (Clean name to avoid confilcts)
65 $this->field_map[] = array(
66 'from_tablename' => 'forum_forums',
67 'from_fieldname' => 'name',
68 'to_type' => 'forum',
69 'to_fieldname' => 'post_name',
70 'callback_method' => 'callback_slug'
71 );
72 // Forum description.
73 $this->field_map[] = array(
74 'from_tablename' => 'forum_forums',
75 'from_fieldname' => 'description',
76 'to_type' => 'forum',
77 'to_fieldname' => 'post_content',
78 'callback_method' => 'callback_null'
79 );
80
81 // Forum display order (Starts from 1)
82 $this->field_map[] = array(
83 'from_tablename' => 'forum_forums',
84 'from_fieldname' => 'sort',
85 'to_type' => 'forum',
86 'to_fieldname' => 'menu_order'
87 );
88
89 // Forum type (Set a default value 'forum', Stored in postmeta)
90 $this->field_map[] = array(
91 'to_type' => 'forum',
92 'to_fieldname' => '_bbp_forum_type',
93 'default' => 'forum'
94 );
95
96 // Forum status (Set a default value 'open', Stored in postmeta)
97 $this->field_map[] = array(
98 'to_type' => 'forum',
99 'to_fieldname' => '_bbp_status',
100 'default' => 'open'
101 );
102
103 // Forum dates.
104 $this->field_map[] = array(
105 'to_type' => 'forum',
106 'to_fieldname' => 'post_date',
107 'default' => date('Y-m-d H:i:s')
108 );
109 $this->field_map[] = array(
110 'to_type' => 'forum',
111 'to_fieldname' => 'post_date_gmt',
112 'default' => date('Y-m-d H:i:s')
113 );
114 $this->field_map[] = array(
115 'to_type' => 'forum',
116 'to_fieldname' => 'post_modified',
117 'default' => date('Y-m-d H:i:s')
118 );
119 $this->field_map[] = array(
120 'to_type' => 'forum',
121 'to_fieldname' => 'post_modified_gmt',
122 'default' => date('Y-m-d H:i:s')
123 );
124
125 /** Topic Section ******************************************************/
126
127 // Old topic id (Stored in postmeta)
128 $this->field_map[] = array(
129 'from_tablename' => 'forum_threads',
130 'from_fieldname' => 'id',
131 'to_type' => 'topic',
132 'to_fieldname' => '_bbp_old_topic_id'
133 );
134
135 // Topic parent forum id (If no parent, then 0. Stored in postmeta)
136 $this->field_map[] = array(
137 'from_tablename' => 'forum_threads',
138 'from_fieldname' => 'parent_id',
139 'to_type' => 'topic',
140 'to_fieldname' => '_bbp_forum_id',
141 'callback_method' => 'callback_forumid'
142 );
143
144 // Topic author.
145 $this->field_map[] = array(
146 'from_tablename' => 'forum_threads',
147 'from_fieldname' => 'starter',
148 'to_type' => 'topic',
149 'to_fieldname' => 'post_author',
150 'callback_method' => 'callback_userid'
151 );
152
153 // Topic content.
154 // Note: We join the forum_posts table because forum_topics do not have topic content.
155 $this->field_map[] = array(
156 'from_tablename' => 'forum_posts',
157 'from_fieldname' => 'text',
158 'join_tablename' => 'forum_threads',
159 'join_type' => 'INNER',
160 'join_expression' => 'ON forum_posts.parent_id = forum_threads.id GROUP BY forum_threads.id',
161 'to_type' => 'topic',
162 'to_fieldname' => 'post_content',
163 'callback_method' => 'callback_html'
164 );
165 // Topic title.
166 $this->field_map[] = array(
167 'from_tablename' => 'forum_threads',
168 'from_fieldname' => 'subject',
169 'to_type' => 'topic',
170 'to_fieldname' => 'post_title'
171 );
172
173 // Topic slug (Clean name to avoid conflicts)
174 $this->field_map[] = array(
175 'from_tablename' => 'forum_threads',
176 'from_fieldname' => 'subject',
177 'to_type' => 'topic',
178 'to_fieldname' => 'post_name',
179 'callback_method' => 'callback_slug'
180 );
181
182 // Topic parent forum id (If no parent, then 0)
183 $this->field_map[] = array(
184 'from_tablename' => 'forum_threads',
185 'from_fieldname' => 'parent_id',
186 'to_type' => 'topic',
187 'to_fieldname' => 'post_parent',
188 'callback_method' => 'callback_forumid'
189 );
190
191 // Sticky status (Stored in postmeta)
192 $this->field_map[] = array(
193 'from_tablename' => 'forum_threads',
194 'from_fieldname' => 'status',
195 'to_type' => 'topic',
196 'to_fieldname' => '_bbp_old_sticky_status_id',
197 'callback_method' => 'callback_sticky_status'
198 );
199
200 // Topic dates.
201 $this->field_map[] = array(
202 'from_tablename' => 'forum_threads',
203 'from_fieldname' => 'date',
204 'to_type' => 'topic',
205 'to_fieldname' => 'post_date'
206 );
207 $this->field_map[] = array(
208 'from_tablename' => 'forum_threads',
209 'from_fieldname' => 'date',
210 'to_type' => 'topic',
211 'to_fieldname' => 'post_date_gmt'
212 );
213 $this->field_map[] = array(
214 'from_tablename' => 'forum_threads',
215 'from_fieldname' => 'last_post',
216 'to_type' => 'topic',
217 'to_fieldname' => 'post_modified'
218 );
219 $this->field_map[] = array(
220 'from_tablename' => 'forum_threads',
221 'from_fieldname' => 'last_post',
222 'to_type' => 'topic',
223 'to_fieldname' => 'post_modified_gmt'
224 );
225 $this->field_map[] = array(
226 'from_tablename' => 'forum_threads',
227 'from_fieldname' => 'last_post',
228 'to_type' => 'topic',
229 'to_fieldname' => '_bbp_last_active_time'
230 );
231
232 // Topic status (Open or Closed)
233 $this->field_map[] = array(
234 'from_tablename' => 'forum_threads',
235 'from_fieldname' => 'closed',
236 'to_type' => 'topic',
237 'to_fieldname' => '_bbp_old_closed_status_id',
238 'callback_method' => 'callback_topic_status'
239 );
240
241 /** Tags Section ******************************************************/
242
243 /**
244 * Mingle Forums do not support topic tags
245 */
246
247 /** Reply Section ******************************************************/
248
249 // Old reply id (Stored in postmeta)
250 $this->field_map[] = array(
251 'from_tablename' => 'forum_posts',
252 'from_fieldname' => 'id',
253 'to_type' => 'reply',
254 'to_fieldname' => '_bbp_old_reply_id'
255 );
256
257 // Setup reply section table joins
258 // We need join the 'forum_threads' table to only import replies
259 $this->field_map[] = array(
260 'from_tablename' => 'forum_threads',
261 'from_fieldname' => 'date',
262 'join_tablename' => 'forum_posts',
263 'join_type' => 'INNER',
264 'join_expression' => 'ON forum_posts.parent_id = forum_threads.id',
265 'from_expression' => 'WHERE forum_threads.subject != forum_posts.subject',
266 'to_type' => 'reply',
267 'to_fieldname' => '_bbp_last_active_time'
268 );
269
270 // Reply parent forum id (If no parent, then 0. Stored in postmeta)
271 $this->field_map[] = array(
272 'from_tablename' => 'forum_posts',
273 'from_fieldname' => 'parent_id',
274 'to_type' => 'reply',
275 'to_fieldname' => '_bbp_forum_id',
276 'callback_method' => 'callback_topicid_to_forumid'
277 );
278
279 // Reply parent topic id (If no parent, then 0. Stored in postmeta)
280 $this->field_map[] = array(
281 'from_tablename' => 'forum_posts',
282 'from_fieldname' => 'parent_id',
283 'to_type' => 'reply',
284 'to_fieldname' => '_bbp_topic_id',
285 'callback_method' => 'callback_topicid'
286 );
287
288 // Reply author.
289 $this->field_map[] = array(
290 'from_tablename' => 'forum_posts',
291 'from_fieldname' => 'author_id',
292 'to_type' => 'reply',
293 'to_fieldname' => 'post_author',
294 'callback_method' => 'callback_userid'
295 );
296
297 // Reply content.
298 $this->field_map[] = array(
299 'from_tablename' => 'forum_posts',
300 'from_fieldname' => 'text',
301 'to_type' => 'reply',
302 'to_fieldname' => 'post_content',
303 'callback_method' => 'callback_html'
304 );
305
306 // Reply parent topic id (If no parent, then 0)
307 $this->field_map[] = array(
308 'from_tablename' => 'forum_posts',
309 'from_fieldname' => 'parent_id',
310 'to_type' => 'reply',
311 'to_fieldname' => 'post_parent',
312 'callback_method' => 'callback_topicid'
313 );
314
315 // Reply dates.
316 $this->field_map[] = array(
317 'from_tablename' => 'forum_posts',
318 'from_fieldname' => 'date',
319 'to_type' => 'reply',
320 'to_fieldname' => 'post_date'
321 );
322 $this->field_map[] = array(
323 'from_tablename' => 'forum_posts',
324 'from_fieldname' => 'date',
325 'to_type' => 'reply',
326 'to_fieldname' => 'post_date_gmt'
327 );
328 $this->field_map[] = array(
329 'from_tablename' => 'forum_posts',
330 'from_fieldname' => 'date',
331 'to_type' => 'reply',
332 'to_fieldname' => 'post_modified'
333 );
334 $this->field_map[] = array(
335 'from_tablename' => 'forum_posts',
336 'from_fieldname' => 'date',
337 'to_type' => 'reply',
338 'to_fieldname' => 'post_modified_gmt'
339 );
340
341 /** User Section ******************************************************/
342
343 // Store old user id (Stored in usermeta)
344 $this->field_map[] = array(
345 'from_tablename' => 'users',
346 'from_fieldname' => 'ID',
347 'to_type' => 'user',
348 'to_fieldname' => '_bbp_old_user_id'
349 );
350
351 // Store old user password (Stored in usermeta)
352 $this->field_map[] = array(
353 'from_tablename' => 'users',
354 'from_fieldname' => 'user_pass',
355 'to_type' => 'user',
356 'to_fieldname' => '_bbp_password'
357 );
358
359 // User name.
360 $this->field_map[] = array(
361 'from_tablename' => 'users',
362 'from_fieldname' => 'user_login',
363 'to_type' => 'user',
364 'to_fieldname' => 'user_login'
365 );
366
367 // User nice name.
368 $this->field_map[] = array(
369 'from_tablename' => 'users',
370 'from_fieldname' => 'user_nicename',
371 'to_type' => 'user',
372 'to_fieldname' => 'user_nicename'
373 );
374
375 // User email.
376 $this->field_map[] = array(
377 'from_tablename' => 'users',
378 'from_fieldname' => 'user_email',
379 'to_type' => 'user',
380 'to_fieldname' => 'user_email'
381 );
382
383 // User homepage.
384 $this->field_map[] = array(
385 'from_tablename' => 'users',
386 'from_fieldname' => 'user_url',
387 'to_type' => 'user',
388 'to_fieldname' => 'user_url'
389 );
390
391 // User registered.
392 $this->field_map[] = array(
393 'from_tablename' => 'users',
394 'from_fieldname' => 'user_registered',
395 'to_type' => 'user',
396 'to_fieldname' => 'user_registered'
397 );
398
399 // User status.
400 $this->field_map[] = array(
401 'from_tablename' => 'users',
402 'from_fieldname' => 'user_status',
403 'to_type' => 'user',
404 'to_fieldname' => 'user_status'
405 );
406
407 // User display name.
408 $this->field_map[] = array(
409 'from_tablename' => 'users',
410 'from_fieldname' => 'display_name',
411 'to_type' => 'user',
412 'to_fieldname' => 'display_name'
413 );
414 }
415
416 /**
417 * This method allows us to indicates what is or is not converted for each
418 * converter.
419 */
420 public function info() {
421 return '';
422 }
423
424 /**
425 * This method is to save the salt and password together. That
426 * way when we authenticate it we can get it out of the database
427 * as one value. Array values are auto sanitized by WordPress.
428 */
429 public function callback_savepass( $field, $row ) {
430 return false;
431 }
432
433 /**
434 * This method is to take the pass out of the database and compare
435 * to a pass the user has typed in.
436 */
437 public function authenticate_pass( $password, $serialized_pass ) {
438 return false;
439 }
440
441 /**
442 * Translate the topic status from Mingle numerics to WordPress's strings.
443 *
444 * @param int $status Mingle v1.x numeric topic status
445 * @return string WordPress safe
446 */
447 public function callback_topic_status( $status = 0 ) {
448 switch ( $status ) {
449 case 1 :
450 $status = 'closed';
451 break;
452
453 case 0 :
454 default :
455 $status = 'publish';
456 break;
457 }
458 return $status;
459 }
460
461 /**
462 * Translate the topic sticky status type from Mingle numerics to WordPress's strings.
463 *
464 * @param int $status Mingle numeric forum type
465 * @return string WordPress safe
466 */
467 public function callback_sticky_status( $status = 0 ) {
468 switch ( $status ) {
469 case 'sticky' :
470 $status = 'sticky'; // Mingle Sticky 'status = sticky'
471 break;
472
473 case 'open' :
474 default :
475 $status = 'normal'; // Mingle Normal Topic 'status = open'
476 break;
477 }
478 return $status;
479 }
480 }
481