Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
93.85% covered (success)
93.85%
1022 / 1089
33.33% covered (danger)
33.33%
1 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
release_3_0_0
93.85% covered (success)
93.85%
1022 / 1089
33.33% covered (danger)
33.33%
1 / 3
3.00
0.00% covered (danger)
0.00%
0 / 1
 effectively_installed
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 update_schema
100.00% covered (success)
100.00%
1022 / 1022
100.00% covered (success)
100.00%
1 / 1
1
 revert_schema
0.00% covered (danger)
0.00%
0 / 66
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2/**
3*
4* This file is part of the phpBB Forum Software package.
5*
6* @copyright (c) phpBB Limited <https://www.phpbb.com>
7* @license GNU General Public License, version 2 (GPL-2.0)
8*
9* For full copyright and license information, please see
10* the docs/CREDITS.txt file.
11*
12*/
13
14namespace phpbb\db\migration\data\v30x;
15
16class release_3_0_0 extends \phpbb\db\migration\migration
17{
18    public function effectively_installed()
19    {
20        return phpbb_version_compare($this->config['version'], '3.0.0', '>=');
21    }
22
23    public function update_schema()
24    {
25        return array(
26            'add_tables' => array(
27                $this->table_prefix . 'attachments'    => array(
28                    'COLUMNS'    => array(
29                        'attach_id'    => array('UINT', NULL, 'auto_increment'),
30                        'post_msg_id'    => array('UINT', 0),
31                        'topic_id'    => array('UINT', 0),
32                        'in_message'    => array('BOOL', 0),
33                        'poster_id'    => array('UINT', 0),
34                        'is_orphan'    => array('BOOL', 1),
35                        'physical_filename'    => array('VCHAR', ''),
36                        'real_filename'    => array('VCHAR', ''),
37                        'download_count'    => array('UINT', 0),
38                        'attach_comment'    => array('TEXT_UNI', ''),
39                        'extension'    => array('VCHAR:100', ''),
40                        'mimetype'    => array('VCHAR:100', ''),
41                        'filesize'    => array('UINT:20', 0),
42                        'filetime'    => array('TIMESTAMP', 0),
43                        'thumbnail'    => array('BOOL', 0),
44                    ),
45                    'PRIMARY_KEY'    => 'attach_id',
46                    'KEYS'    => array(
47                        'filetime'    => array('INDEX', 'filetime'),
48                        'post_msg_id'    => array('INDEX', 'post_msg_id'),
49                        'topic_id'    => array('INDEX', 'topic_id'),
50                        'poster_id'    => array('INDEX', 'poster_id'),
51                        'is_orphan'    => array('INDEX', 'is_orphan'),
52                    ),
53                ),
54
55                $this->table_prefix . 'acl_groups'    => array(
56                    'COLUMNS'    => array(
57                        'group_id'    => array('UINT', 0),
58                        'forum_id'    => array('UINT', 0),
59                        'auth_option_id'    => array('UINT', 0),
60                        'auth_role_id'    => array('UINT', 0),
61                        'auth_setting'    => array('TINT:2', 0),
62                    ),
63                    'KEYS'    => array(
64                        'group_id'    => array('INDEX', 'group_id'),
65                        'auth_opt_id'    => array('INDEX', 'auth_option_id'),
66                        'auth_role_id'    => array('INDEX', 'auth_role_id'),
67                    ),
68                ),
69
70                $this->table_prefix . 'acl_options'    => array(
71                    'COLUMNS'    => array(
72                        'auth_option_id'    => array('UINT', NULL, 'auto_increment'),
73                        'auth_option'    => array('VCHAR:50', ''),
74                        'is_global'    => array('BOOL', 0),
75                        'is_local'    => array('BOOL', 0),
76                        'founder_only'    => array('BOOL', 0),
77                    ),
78                    'PRIMARY_KEY'    => 'auth_option_id',
79                    'KEYS'    => array(
80                        'auth_option'    => array('INDEX', 'auth_option'),
81                    ),
82                ),
83
84                $this->table_prefix . 'acl_roles'    => array(
85                    'COLUMNS'    => array(
86                        'role_id'    => array('UINT', NULL, 'auto_increment'),
87                        'role_name'    => array('VCHAR_UNI', ''),
88                        'role_description'    => array('TEXT_UNI', ''),
89                        'role_type'    => array('VCHAR:10', ''),
90                        'role_order'    => array('USINT', 0),
91                    ),
92                    'PRIMARY_KEY'    => 'role_id',
93                    'KEYS'    => array(
94                        'role_type'    => array('INDEX', 'role_type'),
95                        'role_order'    => array('INDEX', 'role_order'),
96                    ),
97                ),
98
99                $this->table_prefix . 'acl_roles_data'    => array(
100                    'COLUMNS'    => array(
101                        'role_id'    => array('UINT', 0),
102                        'auth_option_id'    => array('UINT', 0),
103                        'auth_setting'    => array('TINT:2', 0),
104                    ),
105                    'PRIMARY_KEY'    => array('role_id', 'auth_option_id'),
106                    'KEYS'    => array(
107                        'ath_op_id'    => array('INDEX', 'auth_option_id'),
108                    ),
109                ),
110
111                $this->table_prefix . 'acl_users'    => array(
112                    'COLUMNS'    => array(
113                        'user_id'    => array('UINT', 0),
114                        'forum_id'    => array('UINT', 0),
115                        'auth_option_id'    => array('UINT', 0),
116                        'auth_role_id'    => array('UINT', 0),
117                        'auth_setting'    => array('TINT:2', 0),
118                    ),
119                    'KEYS'    => array(
120                        'user_id'    => array('INDEX', 'user_id'),
121                        'auth_option_id'    => array('INDEX', 'auth_option_id'),
122                        'auth_role_id'    => array('INDEX', 'auth_role_id'),
123                    ),
124                ),
125
126                $this->table_prefix . 'banlist'    => array(
127                    'COLUMNS'    => array(
128                        'ban_id'    => array('UINT', NULL, 'auto_increment'),
129                        'ban_userid'    => array('UINT', 0),
130                        'ban_ip'    => array('VCHAR:40', ''),
131                        'ban_email'    => array('VCHAR_UNI:100', ''),
132                        'ban_start'    => array('TIMESTAMP', 0),
133                        'ban_end'    => array('TIMESTAMP', 0),
134                        'ban_exclude'    => array('BOOL', 0),
135                        'ban_reason'    => array('VCHAR_UNI', ''),
136                        'ban_give_reason'    => array('VCHAR_UNI', ''),
137                    ),
138                    'PRIMARY_KEY'    => 'ban_id',
139                    'KEYS'    => array(
140                        'ban_end'    => array('INDEX', 'ban_end'),
141                        'ban_user'    => array('INDEX', array('ban_userid', 'ban_exclude')),
142                        'ban_email'    => array('INDEX', array('ban_email', 'ban_exclude')),
143                        'ban_ip'    => array('INDEX', array('ban_ip', 'ban_exclude')),
144                    ),
145                ),
146
147                $this->table_prefix . 'bbcodes'    => array(
148                    'COLUMNS'    => array(
149                        'bbcode_id'    => array('TINT:3', 0),
150                        'bbcode_tag'    => array('VCHAR:16', ''),
151                        'bbcode_helpline'    => array('VCHAR_UNI', ''),
152                        'display_on_posting'    => array('BOOL', 0),
153                        'bbcode_match'    => array('TEXT_UNI', ''),
154                        'bbcode_tpl'    => array('MTEXT_UNI', ''),
155                        'first_pass_match'    => array('MTEXT_UNI', ''),
156                        'first_pass_replace'    => array('MTEXT_UNI', ''),
157                        'second_pass_match'    => array('MTEXT_UNI', ''),
158                        'second_pass_replace'    => array('MTEXT_UNI', ''),
159                    ),
160                    'PRIMARY_KEY'    => 'bbcode_id',
161                    'KEYS'    => array(
162                        'display_on_post'    => array('INDEX', 'display_on_posting'),
163                    ),
164                ),
165
166                $this->table_prefix . 'bookmarks'    => array(
167                    'COLUMNS'    => array(
168                        'topic_id'    => array('UINT', 0),
169                        'user_id'    => array('UINT', 0),
170                    ),
171                    'PRIMARY_KEY'    => array('topic_id', 'user_id'),
172                ),
173
174                $this->table_prefix . 'bots'    => array(
175                    'COLUMNS'    => array(
176                        'bot_id'    => array('UINT', NULL, 'auto_increment'),
177                        'bot_active'    => array('BOOL', 1),
178                        'bot_name'    => array('STEXT_UNI', ''),
179                        'user_id'    => array('UINT', 0),
180                        'bot_agent'    => array('VCHAR', ''),
181                        'bot_ip'    => array('VCHAR', ''),
182                    ),
183                    'PRIMARY_KEY'    => 'bot_id',
184                    'KEYS'    => array(
185                        'bot_active'    => array('INDEX', 'bot_active'),
186                    ),
187                ),
188
189                $this->table_prefix . 'config'    => array(
190                    'COLUMNS'    => array(
191                        'config_name'    => array('VCHAR', ''),
192                        'config_value'    => array('VCHAR_UNI', ''),
193                        'is_dynamic'    => array('BOOL', 0),
194                    ),
195                    'PRIMARY_KEY'    => 'config_name',
196                    'KEYS'    => array(
197                        'is_dynamic'    => array('INDEX', 'is_dynamic'),
198                    ),
199                ),
200
201                $this->table_prefix . 'confirm'    => array(
202                    'COLUMNS'    => array(
203                        'confirm_id'    => array('CHAR:32', ''),
204                        'session_id'    => array('CHAR:32', ''),
205                        'confirm_type'    => array('TINT:3', 0),
206                        'code'    => array('VCHAR:8', ''),
207                        'seed'    => array('UINT:10', 0),
208                    ),
209                    'PRIMARY_KEY'    => array('session_id', 'confirm_id'),
210                    'KEYS'    => array(
211                        'confirm_type'    => array('INDEX', 'confirm_type'),
212                    ),
213                ),
214
215                $this->table_prefix . 'disallow'    => array(
216                    'COLUMNS'    => array(
217                        'disallow_id'    => array('UINT', NULL, 'auto_increment'),
218                        'disallow_username'    => array('VCHAR_UNI:255', ''),
219                    ),
220                    'PRIMARY_KEY'    => 'disallow_id',
221                ),
222
223                $this->table_prefix . 'drafts'    => array(
224                    'COLUMNS'    => array(
225                        'draft_id'    => array('UINT', NULL, 'auto_increment'),
226                        'user_id'    => array('UINT', 0),
227                        'topic_id'    => array('UINT', 0),
228                        'forum_id'    => array('UINT', 0),
229                        'save_time'    => array('TIMESTAMP', 0),
230                        'draft_subject'    => array('XSTEXT_UNI', ''),
231                        'draft_message'    => array('MTEXT_UNI', ''),
232                    ),
233                    'PRIMARY_KEY'    => 'draft_id',
234                    'KEYS'    => array(
235                        'save_time'    => array('INDEX', 'save_time'),
236                    ),
237                ),
238
239                $this->table_prefix . 'extensions'    => array(
240                    'COLUMNS'    => array(
241                        'extension_id'    => array('UINT', NULL, 'auto_increment'),
242                        'group_id'    => array('UINT', 0),
243                        'extension'    => array('VCHAR:100', ''),
244                    ),
245                    'PRIMARY_KEY'    => 'extension_id',
246                ),
247
248                $this->table_prefix . 'extension_groups'    => array(
249                    'COLUMNS'    => array(
250                        'group_id'    => array('UINT', NULL, 'auto_increment'),
251                        'group_name'    => array('VCHAR_UNI', ''),
252                        'cat_id'    => array('TINT:2', 0),
253                        'allow_group'    => array('BOOL', 0),
254                        'download_mode'    => array('BOOL', 1),
255                        'upload_icon'    => array('VCHAR', ''),
256                        'max_filesize'    => array('UINT:20', 0),
257                        'allowed_forums'    => array('TEXT', ''),
258                        'allow_in_pm'    => array('BOOL', 0),
259                    ),
260                    'PRIMARY_KEY'    => 'group_id',
261                ),
262
263                $this->table_prefix . 'forums'    => array(
264                    'COLUMNS'    => array(
265                        'forum_id'    => array('UINT', NULL, 'auto_increment'),
266                        'parent_id'    => array('UINT', 0),
267                        'left_id'    => array('UINT', 0),
268                        'right_id'    => array('UINT', 0),
269                        'forum_parents'    => array('MTEXT', ''),
270                        'forum_name'    => array('STEXT_UNI', ''),
271                        'forum_desc'    => array('TEXT_UNI', ''),
272                        'forum_desc_bitfield'    => array('VCHAR:255', ''),
273                        'forum_desc_options'    => array('UINT:11', 7),
274                        'forum_desc_uid'    => array('VCHAR:8', ''),
275                        'forum_link'    => array('VCHAR_UNI', ''),
276                        'forum_password'    => array('VCHAR_UNI:40', ''),
277                        'forum_style'    => array('USINT', 0),
278                        'forum_image'    => array('VCHAR', ''),
279                        'forum_rules'    => array('TEXT_UNI', ''),
280                        'forum_rules_link'    => array('VCHAR_UNI', ''),
281                        'forum_rules_bitfield'    => array('VCHAR:255', ''),
282                        'forum_rules_options'    => array('UINT:11', 7),
283                        'forum_rules_uid'    => array('VCHAR:8', ''),
284                        'forum_topics_per_page'    => array('TINT:4', 0),
285                        'forum_type'    => array('TINT:4', 0),
286                        'forum_status'    => array('TINT:4', 0),
287                        'forum_posts'    => array('UINT', 0),
288                        'forum_topics'    => array('UINT', 0),
289                        'forum_topics_real'    => array('UINT', 0),
290                        'forum_last_post_id'    => array('UINT', 0),
291                        'forum_last_poster_id'    => array('UINT', 0),
292                        'forum_last_post_subject' => array('XSTEXT_UNI', ''),
293                        'forum_last_post_time'    => array('TIMESTAMP', 0),
294                        'forum_last_poster_name'=> array('VCHAR_UNI', ''),
295                        'forum_last_poster_colour'=> array('VCHAR:6', ''),
296                        'forum_flags'    => array('TINT:4', 32),
297                        'display_on_index'    => array('BOOL', 1),
298                        'enable_indexing'    => array('BOOL', 1),
299                        'enable_icons'    => array('BOOL', 1),
300                        'enable_prune'    => array('BOOL', 0),
301                        'prune_next'    => array('TIMESTAMP', 0),
302                        'prune_days'    => array('UINT', 0),
303                        'prune_viewed'    => array('UINT', 0),
304                        'prune_freq'    => array('UINT', 0),
305                    ),
306                    'PRIMARY_KEY'    => 'forum_id',
307                    'KEYS'    => array(
308                        'left_right_id'    => array('INDEX', array('left_id', 'right_id')),
309                        'forum_lastpost_id'    => array('INDEX', 'forum_last_post_id'),
310                    ),
311                ),
312
313                $this->table_prefix . 'forums_access'    => array(
314                    'COLUMNS'    => array(
315                        'forum_id'    => array('UINT', 0),
316                        'user_id'    => array('UINT', 0),
317                        'session_id'    => array('CHAR:32', ''),
318                    ),
319                    'PRIMARY_KEY'    => array('forum_id', 'user_id', 'session_id'),
320                ),
321
322                $this->table_prefix . 'forums_track'    => array(
323                    'COLUMNS'    => array(
324                        'user_id'    => array('UINT', 0),
325                        'forum_id'    => array('UINT', 0),
326                        'mark_time'    => array('TIMESTAMP', 0),
327                    ),
328                    'PRIMARY_KEY'    => array('user_id', 'forum_id'),
329                ),
330
331                $this->table_prefix . 'forums_watch'    => array(
332                    'COLUMNS'    => array(
333                        'forum_id'    => array('UINT', 0),
334                        'user_id'    => array('UINT', 0),
335                        'notify_status'    => array('BOOL', 0),
336                    ),
337                    'KEYS'    => array(
338                        'forum_id'    => array('INDEX', 'forum_id'),
339                        'user_id'    => array('INDEX', 'user_id'),
340                        'notify_stat'    => array('INDEX', 'notify_status'),
341                    ),
342                ),
343
344                $this->table_prefix . 'groups'    => array(
345                    'COLUMNS'    => array(
346                        'group_id'    => array('UINT', NULL, 'auto_increment'),
347                        'group_type'    => array('TINT:4', 1),
348                        'group_founder_manage'    => array('BOOL', 0),
349                        'group_name'    => array('VCHAR_CI', ''),
350                        'group_desc'    => array('TEXT_UNI', ''),
351                        'group_desc_bitfield'    => array('VCHAR:255', ''),
352                        'group_desc_options'    => array('UINT:11', 7),
353                        'group_desc_uid'    => array('VCHAR:8', ''),
354                        'group_display'    => array('BOOL', 0),
355                        'group_avatar'    => array('VCHAR', ''),
356                        'group_avatar_type'    => array('TINT:2', 0),
357                        'group_avatar_width'    => array('USINT', 0),
358                        'group_avatar_height'    => array('USINT', 0),
359                        'group_rank'    => array('UINT', 0),
360                        'group_colour'    => array('VCHAR:6', ''),
361                        'group_sig_chars'    => array('UINT', 0),
362                        'group_receive_pm'    => array('BOOL', 0),
363                        'group_message_limit'    => array('UINT', 0),
364                        'group_legend'    => array('BOOL', 1),
365                    ),
366                    'PRIMARY_KEY'    => 'group_id',
367                    'KEYS'    => array(
368                        'group_legend'    => array('INDEX', 'group_legend'),
369                    ),
370                ),
371
372                $this->table_prefix . 'icons'    => array(
373                    'COLUMNS'    => array(
374                        'icons_id'    => array('UINT', NULL, 'auto_increment'),
375                        'icons_url'    => array('VCHAR', ''),
376                        'icons_width'    => array('TINT:4', 0),
377                        'icons_height'    => array('TINT:4', 0),
378                        'icons_order'    => array('UINT', 0),
379                        'display_on_posting'    => array('BOOL', 1),
380                    ),
381                    'PRIMARY_KEY'    => 'icons_id',
382                    'KEYS'    => array(
383                        'display_on_posting'    => array('INDEX', 'display_on_posting'),
384                    ),
385                ),
386
387                $this->table_prefix . 'lang'    => array(
388                    'COLUMNS'    => array(
389                        'lang_id'    => array('TINT:4', NULL, 'auto_increment'),
390                        'lang_iso'    => array('VCHAR:30', ''),
391                        'lang_dir'    => array('VCHAR:30', ''),
392                        'lang_english_name'    => array('VCHAR_UNI:100', ''),
393                        'lang_local_name'    => array('VCHAR_UNI:255', ''),
394                        'lang_author'    => array('VCHAR_UNI:255', ''),
395                    ),
396                    'PRIMARY_KEY'    => 'lang_id',
397                    'KEYS'    => array(
398                        'lang_iso'    => array('INDEX', 'lang_iso'),
399                    ),
400                ),
401
402                $this->table_prefix . 'log'    => array(
403                    'COLUMNS'    => array(
404                        'log_id'    => array('UINT', NULL, 'auto_increment'),
405                        'log_type'    => array('TINT:4', 0),
406                        'user_id'    => array('UINT', 0),
407                        'forum_id'    => array('UINT', 0),
408                        'topic_id'    => array('UINT', 0),
409                        'reportee_id'    => array('UINT', 0),
410                        'log_ip'    => array('VCHAR:40', ''),
411                        'log_time'    => array('TIMESTAMP', 0),
412                        'log_operation'    => array('TEXT_UNI', ''),
413                        'log_data'    => array('MTEXT_UNI', ''),
414                    ),
415                    'PRIMARY_KEY'    => 'log_id',
416                    'KEYS'    => array(
417                        'log_type'    => array('INDEX', 'log_type'),
418                        'forum_id'    => array('INDEX', 'forum_id'),
419                        'topic_id'    => array('INDEX', 'topic_id'),
420                        'reportee_id'    => array('INDEX', 'reportee_id'),
421                        'user_id'    => array('INDEX', 'user_id'),
422                    ),
423                ),
424
425                $this->table_prefix . 'moderator_cache'    => array(
426                    'COLUMNS'    => array(
427                        'forum_id'    => array('UINT', 0),
428                        'user_id'    => array('UINT', 0),
429                        'username'    => array('VCHAR_UNI:255', ''),
430                        'group_id'    => array('UINT', 0),
431                        'group_name'    => array('VCHAR_UNI', ''),
432                        'display_on_index'    => array('BOOL', 1),
433                    ),
434                    'KEYS'    => array(
435                        'disp_idx'    => array('INDEX', 'display_on_index'),
436                        'forum_id'    => array('INDEX', 'forum_id'),
437                    ),
438                ),
439
440                $this->table_prefix . 'modules'    => array(
441                    'COLUMNS'    => array(
442                        'module_id'    => array('UINT', NULL, 'auto_increment'),
443                        'module_enabled'    => array('BOOL', 1),
444                        'module_display'    => array('BOOL', 1),
445                        'module_basename'    => array('VCHAR', ''),
446                        'module_class'    => array('VCHAR:10', ''),
447                        'parent_id'    => array('UINT', 0),
448                        'left_id'    => array('UINT', 0),
449                        'right_id'    => array('UINT', 0),
450                        'module_langname'    => array('VCHAR', ''),
451                        'module_mode'    => array('VCHAR', ''),
452                        'module_auth'    => array('VCHAR', ''),
453                    ),
454                    'PRIMARY_KEY'    => 'module_id',
455                    'KEYS'    => array(
456                        'left_right_id'    => array('INDEX', array('left_id', 'right_id')),
457                        'module_enabled'    => array('INDEX', 'module_enabled'),
458                        'class_left_id'    => array('INDEX', array('module_class', 'left_id')),
459                    ),
460                ),
461
462                $this->table_prefix . 'poll_options'    => array(
463                    'COLUMNS'    => array(
464                        'poll_option_id'    => array('TINT:4', 0),
465                        'topic_id'    => array('UINT', 0),
466                        'poll_option_text'    => array('TEXT_UNI', ''),
467                        'poll_option_total'    => array('UINT', 0),
468                    ),
469                    'KEYS'    => array(
470                        'poll_opt_id'    => array('INDEX', 'poll_option_id'),
471                        'topic_id'    => array('INDEX', 'topic_id'),
472                    ),
473                ),
474
475                $this->table_prefix . 'poll_votes'    => array(
476                    'COLUMNS'    => array(
477                        'topic_id'    => array('UINT', 0),
478                        'poll_option_id'    => array('TINT:4', 0),
479                        'vote_user_id'    => array('UINT', 0),
480                        'vote_user_ip'    => array('VCHAR:40', ''),
481                    ),
482                    'KEYS'    => array(
483                        'topic_id'    => array('INDEX', 'topic_id'),
484                        'vote_user_id'    => array('INDEX', 'vote_user_id'),
485                        'vote_user_ip'    => array('INDEX', 'vote_user_ip'),
486                    ),
487                ),
488
489                $this->table_prefix . 'posts'    => array(
490                    'COLUMNS'    => array(
491                        'post_id'    => array('UINT', NULL, 'auto_increment'),
492                        'topic_id'    => array('UINT', 0),
493                        'forum_id'    => array('UINT', 0),
494                        'poster_id'    => array('UINT', 0),
495                        'icon_id'    => array('UINT', 0),
496                        'poster_ip'    => array('VCHAR:40', ''),
497                        'post_time'    => array('TIMESTAMP', 0),
498                        'post_approved'    => array('BOOL', 1),
499                        'post_reported'    => array('BOOL', 0),
500                        'enable_bbcode'    => array('BOOL', 1),
501                        'enable_smilies'    => array('BOOL', 1),
502                        'enable_magic_url'    => array('BOOL', 1),
503                        'enable_sig'    => array('BOOL', 1),
504                        'post_username'    => array('VCHAR_UNI:255', ''),
505                        'post_subject'    => array('XSTEXT_UNI', '', 'true_sort'),
506                        'post_text'    => array('MTEXT_UNI', ''),
507                        'post_checksum'    => array('VCHAR:32', ''),
508                        'post_attachment'    => array('BOOL', 0),
509                        'bbcode_bitfield'    => array('VCHAR:255', ''),
510                        'bbcode_uid'    => array('VCHAR:8', ''),
511                        'post_postcount'    => array('BOOL', 1),
512                        'post_edit_time'    => array('TIMESTAMP', 0),
513                        'post_edit_reason'    => array('STEXT_UNI', ''),
514                        'post_edit_user'    => array('UINT', 0),
515                        'post_edit_count'    => array('USINT', 0),
516                        'post_edit_locked'    => array('BOOL', 0),
517                    ),
518                    'PRIMARY_KEY'    => 'post_id',
519                    'KEYS'    => array(
520                        'forum_id'    => array('INDEX', 'forum_id'),
521                        'topic_id'    => array('INDEX', 'topic_id'),
522                        'poster_ip'    => array('INDEX', 'poster_ip'),
523                        'poster_id'    => array('INDEX', 'poster_id'),
524                        'post_approved'    => array('INDEX', 'post_approved'),
525                        'tid_post_time'    => array('INDEX', array('topic_id', 'post_time')),
526                    ),
527                ),
528
529                $this->table_prefix . 'privmsgs'    => array(
530                    'COLUMNS'    => array(
531                        'msg_id'    => array('UINT', NULL, 'auto_increment'),
532                        'root_level'    => array('UINT', 0),
533                        'author_id'    => array('UINT', 0),
534                        'icon_id'    => array('UINT', 0),
535                        'author_ip'    => array('VCHAR:40', ''),
536                        'message_time'    => array('TIMESTAMP', 0),
537                        'enable_bbcode'    => array('BOOL', 1),
538                        'enable_smilies'    => array('BOOL', 1),
539                        'enable_magic_url'    => array('BOOL', 1),
540                        'enable_sig'    => array('BOOL', 1),
541                        'message_subject'    => array('XSTEXT_UNI', ''),
542                        'message_text'    => array('MTEXT_UNI', ''),
543                        'message_edit_reason'    => array('STEXT_UNI', ''),
544                        'message_edit_user'    => array('UINT', 0),
545                        'message_attachment'    => array('BOOL', 0),
546                        'bbcode_bitfield'    => array('VCHAR:255', ''),
547                        'bbcode_uid'    => array('VCHAR:8', ''),
548                        'message_edit_time'    => array('TIMESTAMP', 0),
549                        'message_edit_count'    => array('USINT', 0),
550                        'to_address'    => array('TEXT_UNI', ''),
551                        'bcc_address'    => array('TEXT_UNI', ''),
552                    ),
553                    'PRIMARY_KEY'    => 'msg_id',
554                    'KEYS'    => array(
555                        'author_ip'    => array('INDEX', 'author_ip'),
556                        'message_time'    => array('INDEX', 'message_time'),
557                        'author_id'    => array('INDEX', 'author_id'),
558                        'root_level'    => array('INDEX', 'root_level'),
559                    ),
560                ),
561
562                $this->table_prefix . 'privmsgs_folder'    => array(
563                    'COLUMNS'    => array(
564                        'folder_id'    => array('UINT', NULL, 'auto_increment'),
565                        'user_id'    => array('UINT', 0),
566                        'folder_name'    => array('VCHAR_UNI', ''),
567                        'pm_count'    => array('UINT', 0),
568                    ),
569                    'PRIMARY_KEY'    => 'folder_id',
570                    'KEYS'    => array(
571                        'user_id'    => array('INDEX', 'user_id'),
572                    ),
573                ),
574
575                $this->table_prefix . 'privmsgs_rules'    => array(
576                    'COLUMNS'    => array(
577                        'rule_id'    => array('UINT', NULL, 'auto_increment'),
578                        'user_id'    => array('UINT', 0),
579                        'rule_check'    => array('UINT', 0),
580                        'rule_connection'    => array('UINT', 0),
581                        'rule_string'    => array('VCHAR_UNI', ''),
582                        'rule_user_id'    => array('UINT', 0),
583                        'rule_group_id'    => array('UINT', 0),
584                        'rule_action'    => array('UINT', 0),
585                        'rule_folder_id'    => array('INT:11', 0),
586                    ),
587                    'PRIMARY_KEY'    => 'rule_id',
588                    'KEYS'    => array(
589                        'user_id'    => array('INDEX', 'user_id'),
590                    ),
591                ),
592
593                $this->table_prefix . 'privmsgs_to'    => array(
594                    'COLUMNS'    => array(
595                        'msg_id'    => array('UINT', 0),
596                        'user_id'    => array('UINT', 0),
597                        'author_id'    => array('UINT', 0),
598                        'pm_deleted'    => array('BOOL', 0),
599                        'pm_new'    => array('BOOL', 1),
600                        'pm_unread'    => array('BOOL', 1),
601                        'pm_replied'    => array('BOOL', 0),
602                        'pm_marked'    => array('BOOL', 0),
603                        'pm_forwarded'    => array('BOOL', 0),
604                        'folder_id'    => array('INT:11', 0),
605                    ),
606                    'KEYS'    => array(
607                        'msg_id'    => array('INDEX', 'msg_id'),
608                        'author_id'    => array('INDEX', 'author_id'),
609                        'usr_flder_id'    => array('INDEX', array('user_id', 'folder_id')),
610                    ),
611                ),
612
613                $this->table_prefix . 'profile_fields'    => array(
614                    'COLUMNS'    => array(
615                        'field_id'    => array('UINT', NULL, 'auto_increment'),
616                        'field_name'    => array('VCHAR_UNI', ''),
617                        'field_type'    => array('TINT:4', 0),
618                        'field_ident'    => array('VCHAR:20', ''),
619                        'field_length'    => array('VCHAR:20', ''),
620                        'field_minlen'    => array('VCHAR', ''),
621                        'field_maxlen'    => array('VCHAR', ''),
622                        'field_novalue'    => array('VCHAR_UNI', ''),
623                        'field_default_value'    => array('VCHAR_UNI', ''),
624                        'field_validation'    => array('VCHAR_UNI:20', ''),
625                        'field_required'    => array('BOOL', 0),
626                        'field_show_on_reg'    => array('BOOL', 0),
627                        'field_hide'    => array('BOOL', 0),
628                        'field_no_view'    => array('BOOL', 0),
629                        'field_active'    => array('BOOL', 0),
630                        'field_order'    => array('UINT', 0),
631                    ),
632                    'PRIMARY_KEY'    => 'field_id',
633                    'KEYS'    => array(
634                        'fld_type'    => array('INDEX', 'field_type'),
635                        'fld_ordr'    => array('INDEX', 'field_order'),
636                    ),
637                ),
638
639                $this->table_prefix . 'profile_fields_data'    => array(
640                    'COLUMNS'    => array(
641                        'user_id'    => array('UINT', 0),
642                    ),
643                    'PRIMARY_KEY'    => 'user_id',
644                ),
645
646                $this->table_prefix . 'profile_fields_lang'    => array(
647                    'COLUMNS'    => array(
648                        'field_id'    => array('UINT', 0),
649                        'lang_id'    => array('UINT', 0),
650                        'option_id'    => array('UINT', 0),
651                        'field_type'    => array('TINT:4', 0),
652                        'lang_value'    => array('VCHAR_UNI', ''),
653                    ),
654                    'PRIMARY_KEY'    => array('field_id', 'lang_id', 'option_id'),
655                ),
656
657                $this->table_prefix . 'profile_lang'    => array(
658                    'COLUMNS'    => array(
659                        'field_id'    => array('UINT', 0),
660                        'lang_id'    => array('UINT', 0),
661                        'lang_name'    => array('VCHAR_UNI', ''),
662                        'lang_explain'    => array('TEXT_UNI', ''),
663                        'lang_default_value'    => array('VCHAR_UNI', ''),
664                    ),
665                    'PRIMARY_KEY'    => array('field_id', 'lang_id'),
666                ),
667
668                $this->table_prefix . 'ranks'    => array(
669                    'COLUMNS'    => array(
670                        'rank_id'    => array('UINT', NULL, 'auto_increment'),
671                        'rank_title'    => array('VCHAR_UNI', ''),
672                        'rank_min'    => array('UINT', 0),
673                        'rank_special'    => array('BOOL', 0),
674                        'rank_image'    => array('VCHAR', ''),
675                    ),
676                    'PRIMARY_KEY'    => 'rank_id',
677                ),
678
679                $this->table_prefix . 'reports'    => array(
680                    'COLUMNS'    => array(
681                        'report_id'    => array('UINT', NULL, 'auto_increment'),
682                        'reason_id'    => array('USINT', 0),
683                        'post_id'    => array('UINT', 0),
684                        'user_id'    => array('UINT', 0),
685                        'user_notify'    => array('BOOL', 0),
686                        'report_closed'    => array('BOOL', 0),
687                        'report_time'    => array('TIMESTAMP', 0),
688                        'report_text'    => array('MTEXT_UNI', ''),
689                    ),
690                    'PRIMARY_KEY'    => 'report_id',
691                ),
692
693                $this->table_prefix . 'reports_reasons'    => array(
694                    'COLUMNS'    => array(
695                        'reason_id'    => array('USINT', NULL, 'auto_increment'),
696                        'reason_title'    => array('VCHAR_UNI', ''),
697                        'reason_description'    => array('MTEXT_UNI', ''),
698                        'reason_order'    => array('USINT', 0),
699                    ),
700                    'PRIMARY_KEY'    => 'reason_id',
701                ),
702
703                $this->table_prefix . 'search_results'    => array(
704                    'COLUMNS'    => array(
705                        'search_key'    => array('VCHAR:32', ''),
706                        'search_time'    => array('TIMESTAMP', 0),
707                        'search_keywords'    => array('MTEXT_UNI', ''),
708                        'search_authors'    => array('MTEXT', ''),
709                    ),
710                    'PRIMARY_KEY'    => 'search_key',
711                ),
712
713                $this->table_prefix . 'search_wordlist'    => array(
714                    'COLUMNS'    => array(
715                        'word_id'    => array('UINT', NULL, 'auto_increment'),
716                        'word_text'    => array('VCHAR_UNI', ''),
717                        'word_common'    => array('BOOL', 0),
718                        'word_count'    => array('UINT', 0),
719                    ),
720                    'PRIMARY_KEY'    => 'word_id',
721                    'KEYS'    => array(
722                        'wrd_txt'    => array('UNIQUE', 'word_text'),
723                        'wrd_cnt'    => array('INDEX', 'word_count'),
724                    ),
725                ),
726
727                $this->table_prefix . 'search_wordmatch'    => array(
728                    'COLUMNS'    => array(
729                        'post_id'    => array('UINT', 0),
730                        'word_id'    => array('UINT', 0),
731                        'title_match'    => array('BOOL', 0),
732                    ),
733                    'KEYS'    => array(
734                        'unq_mtch'    => array('UNIQUE', array('word_id', 'post_id', 'title_match')),
735                        'word_id'    => array('INDEX', 'word_id'),
736                        'post_id'    => array('INDEX', 'post_id'),
737                    ),
738                ),
739
740                $this->table_prefix . 'sessions'    => array(
741                    'COLUMNS'    => array(
742                        'session_id'    => array('CHAR:32', ''),
743                        'session_user_id'    => array('UINT', 0),
744                        'session_last_visit'    => array('TIMESTAMP', 0),
745                        'session_start'    => array('TIMESTAMP', 0),
746                        'session_time'    => array('TIMESTAMP', 0),
747                        'session_ip'    => array('VCHAR:40', ''),
748                        'session_browser'    => array('VCHAR:150', ''),
749                        'session_forwarded_for'    => array('VCHAR:255', ''),
750                        'session_page'    => array('VCHAR_UNI', ''),
751                        'session_viewonline'    => array('BOOL', 1),
752                        'session_autologin'    => array('BOOL', 0),
753                        'session_admin'    => array('BOOL', 0),
754                    ),
755                    'PRIMARY_KEY'    => 'session_id',
756                    'KEYS'    => array(
757                        'session_time'    => array('INDEX', 'session_time'),
758                        'session_user_id'    => array('INDEX', 'session_user_id'),
759                    ),
760                ),
761
762                $this->table_prefix . 'sessions_keys'    => array(
763                    'COLUMNS'    => array(
764                        'key_id'    => array('CHAR:32', ''),
765                        'user_id'    => array('UINT', 0),
766                        'last_ip'    => array('VCHAR:40', ''),
767                        'last_login'    => array('TIMESTAMP', 0),
768                    ),
769                    'PRIMARY_KEY'    => array('key_id', 'user_id'),
770                    'KEYS'    => array(
771                        'last_login'    => array('INDEX', 'last_login'),
772                    ),
773                ),
774
775                $this->table_prefix . 'sitelist'    => array(
776                    'COLUMNS'    => array(
777                        'site_id'    => array('UINT', NULL, 'auto_increment'),
778                        'site_ip'    => array('VCHAR:40', ''),
779                        'site_hostname'    => array('VCHAR', ''),
780                        'ip_exclude'    => array('BOOL', 0),
781                    ),
782                    'PRIMARY_KEY'    => 'site_id',
783                ),
784
785                $this->table_prefix . 'smilies'    => array(
786                    'COLUMNS'    => array(
787                        'smiley_id'    => array('UINT', NULL, 'auto_increment'),
788// We may want to set 'code' to VCHAR:50 or check if unicode support is possible... at the moment only ASCII characters are allowed.
789                        'code'    => array('VCHAR_UNI:50', ''),
790                        'emotion'    => array('VCHAR_UNI:50', ''),
791                        'smiley_url'    => array('VCHAR:50', ''),
792                        'smiley_width'    => array('USINT', 0),
793                        'smiley_height'    => array('USINT', 0),
794                        'smiley_order'    => array('UINT', 0),
795                        'display_on_posting'=> array('BOOL', 1),
796                    ),
797                    'PRIMARY_KEY'    => 'smiley_id',
798                    'KEYS'    => array(
799                        'display_on_post'    => array('INDEX', 'display_on_posting'),
800                    ),
801                ),
802
803                $this->table_prefix . 'styles'    => array(
804                    'COLUMNS'    => array(
805                        'style_id'    => array('USINT', NULL, 'auto_increment'),
806                        'style_name'    => array('VCHAR_UNI:255', ''),
807                        'style_copyright'    => array('VCHAR_UNI', ''),
808                        'style_active'    => array('BOOL', 1),
809                        'template_id'    => array('USINT', 0),
810                        'theme_id'    => array('USINT', 0),
811                        'imageset_id'    => array('USINT', 0),
812                    ),
813                    'PRIMARY_KEY'    => 'style_id',
814                    'KEYS'    => array(
815                        'style_name'    => array('UNIQUE', 'style_name'),
816                        'template_id'    => array('INDEX', 'template_id'),
817                        'theme_id'    => array('INDEX', 'theme_id'),
818                        'imageset_id'    => array('INDEX', 'imageset_id'),
819                    ),
820                ),
821
822                $this->table_prefix . 'styles_template'    => array(
823                    'COLUMNS'    => array(
824                        'template_id'    => array('USINT', NULL, 'auto_increment'),
825                        'template_name'    => array('VCHAR_UNI:255', ''),
826                        'template_copyright'    => array('VCHAR_UNI', ''),
827                        'template_path'    => array('VCHAR:100', ''),
828                        'bbcode_bitfield'    => array('VCHAR:255', 'kNg='),
829                        'template_storedb'    => array('BOOL', 0),
830                    ),
831                    'PRIMARY_KEY'    => 'template_id',
832                    'KEYS'    => array(
833                        'tmplte_nm'    => array('UNIQUE', 'template_name'),
834                    ),
835                ),
836
837                $this->table_prefix . 'styles_template_data'    => array(
838                    'COLUMNS'    => array(
839                        'template_id'    => array('USINT', 0),
840                        'template_filename'    => array('VCHAR:100', ''),
841                        'template_included'    => array('TEXT', ''),
842                        'template_mtime'    => array('TIMESTAMP', 0),
843                        'template_data'    => array('MTEXT_UNI', ''),
844                    ),
845                    'KEYS'    => array(
846                        'tid'    => array('INDEX', 'template_id'),
847                        'tfn'    => array('INDEX', 'template_filename'),
848                    ),
849                ),
850
851                $this->table_prefix . 'styles_theme'    => array(
852                    'COLUMNS'    => array(
853                        'theme_id'    => array('USINT', NULL, 'auto_increment'),
854                        'theme_name'    => array('VCHAR_UNI:255', ''),
855                        'theme_copyright'    => array('VCHAR_UNI', ''),
856                        'theme_path'    => array('VCHAR:100', ''),
857                        'theme_storedb'    => array('BOOL', 0),
858                        'theme_mtime'    => array('TIMESTAMP', 0),
859                        'theme_data'    => array('MTEXT_UNI', ''),
860                    ),
861                    'PRIMARY_KEY'    => 'theme_id',
862                    'KEYS'    => array(
863                        'theme_name'    => array('UNIQUE', 'theme_name'),
864                    ),
865                ),
866
867                $this->table_prefix . 'styles_imageset'    => array(
868                    'COLUMNS'    => array(
869                        'imageset_id'    => array('USINT', NULL, 'auto_increment'),
870                        'imageset_name'    => array('VCHAR_UNI:255', ''),
871                        'imageset_copyright'    => array('VCHAR_UNI', ''),
872                        'imageset_path'    => array('VCHAR:100', ''),
873                    ),
874                    'PRIMARY_KEY'    => 'imageset_id',
875                    'KEYS'    => array(
876                        'imgset_nm'    => array('UNIQUE', 'imageset_name'),
877                    ),
878                ),
879
880                $this->table_prefix . 'styles_imageset_data'    => array(
881                    'COLUMNS'    => array(
882                        'image_id'    => array('USINT', NULL, 'auto_increment'),
883                        'image_name'    => array('VCHAR:200', ''),
884                        'image_filename'    => array('VCHAR:200', ''),
885                        'image_lang'    => array('VCHAR:30', ''),
886                        'image_height'    => array('USINT', 0),
887                        'image_width'    => array('USINT', 0),
888                        'imageset_id'    => array('USINT', 0),
889                    ),
890                    'PRIMARY_KEY'    => 'image_id',
891                    'KEYS'    => array(
892                        'i_d'    => array('INDEX', 'imageset_id'),
893                    ),
894                ),
895
896                $this->table_prefix . 'topics'    => array(
897                    'COLUMNS'    => array(
898                        'topic_id'    => array('UINT', NULL, 'auto_increment'),
899                        'forum_id'    => array('UINT', 0),
900                        'icon_id'    => array('UINT', 0),
901                        'topic_attachment'    => array('BOOL', 0),
902                        'topic_approved'    => array('BOOL', 1),
903                        'topic_reported'    => array('BOOL', 0),
904                        'topic_title'    => array('XSTEXT_UNI', '', 'true_sort'),
905                        'topic_poster'    => array('UINT', 0),
906                        'topic_time'    => array('TIMESTAMP', 0),
907                        'topic_time_limit'    => array('TIMESTAMP', 0),
908                        'topic_views'    => array('UINT', 0),
909                        'topic_replies'    => array('UINT', 0),
910                        'topic_replies_real'    => array('UINT', 0),
911                        'topic_status'    => array('TINT:3', 0),
912                        'topic_type'    => array('TINT:3', 0),
913                        'topic_first_post_id'    => array('UINT', 0),
914                        'topic_first_poster_name'    => array('VCHAR_UNI', ''),
915                        'topic_first_poster_colour'    => array('VCHAR:6', ''),
916                        'topic_last_post_id'    => array('UINT', 0),
917                        'topic_last_poster_id'    => array('UINT', 0),
918                        'topic_last_poster_name'    => array('VCHAR_UNI', ''),
919                        'topic_last_poster_colour'    => array('VCHAR:6', ''),
920                        'topic_last_post_subject'    => array('XSTEXT_UNI', ''),
921                        'topic_last_post_time'    => array('TIMESTAMP', 0),
922                        'topic_last_view_time'    => array('TIMESTAMP', 0),
923                        'topic_moved_id'    => array('UINT', 0),
924                        'topic_bumped'    => array('BOOL', 0),
925                        'topic_bumper'    => array('UINT', 0),
926                        'poll_title'    => array('STEXT_UNI', ''),
927                        'poll_start'    => array('TIMESTAMP', 0),
928                        'poll_length'    => array('TIMESTAMP', 0),
929                        'poll_max_options'    => array('TINT:4', 1),
930                        'poll_last_vote'    => array('TIMESTAMP', 0),
931                        'poll_vote_change'    => array('BOOL', 0),
932                    ),
933                    'PRIMARY_KEY'    => 'topic_id',
934                    'KEYS'    => array(
935                        'forum_id'    => array('INDEX', 'forum_id'),
936                        'forum_id_type'    => array('INDEX', array('forum_id', 'topic_type')),
937                        'last_post_time'    => array('INDEX', 'topic_last_post_time'),
938                        'topic_approved'    => array('INDEX', 'topic_approved'),
939                        'forum_appr_last'    => array('INDEX', array('forum_id', 'topic_approved', 'topic_last_post_id')),
940                        'fid_time_moved'    => array('INDEX', array('forum_id', 'topic_last_post_time', 'topic_moved_id')),
941                    ),
942                ),
943
944                $this->table_prefix . 'topics_track'    => array(
945                    'COLUMNS'    => array(
946                        'user_id'    => array('UINT', 0),
947                        'topic_id'    => array('UINT', 0),
948                        'forum_id'    => array('UINT', 0),
949                        'mark_time'    => array('TIMESTAMP', 0),
950                    ),
951                    'PRIMARY_KEY'    => array('user_id', 'topic_id'),
952                    'KEYS'    => array(
953                        'forum_id'    => array('INDEX', 'forum_id'),
954                    ),
955                ),
956
957                $this->table_prefix . 'topics_posted'    => array(
958                    'COLUMNS'    => array(
959                        'user_id'    => array('UINT', 0),
960                        'topic_id'    => array('UINT', 0),
961                        'topic_posted'    => array('BOOL', 0),
962                    ),
963                    'PRIMARY_KEY'    => array('user_id', 'topic_id'),
964                ),
965
966                $this->table_prefix . 'topics_watch'    => array(
967                    'COLUMNS'    => array(
968                        'topic_id'    => array('UINT', 0),
969                        'user_id'    => array('UINT', 0),
970                        'notify_status'    => array('BOOL', 0),
971                    ),
972                    'KEYS'    => array(
973                        'topic_id'    => array('INDEX', 'topic_id'),
974                        'user_id'    => array('INDEX', 'user_id'),
975                        'notify_stat'    => array('INDEX', 'notify_status'),
976                    ),
977                ),
978
979                $this->table_prefix . 'user_group'    => array(
980                    'COLUMNS'    => array(
981                        'group_id'    => array('UINT', 0),
982                        'user_id'    => array('UINT', 0),
983                        'group_leader'    => array('BOOL', 0),
984                        'user_pending'    => array('BOOL', 1),
985                    ),
986                    'KEYS'    => array(
987                        'group_id'    => array('INDEX', 'group_id'),
988                        'user_id'    => array('INDEX', 'user_id'),
989                        'group_leader'    => array('INDEX', 'group_leader'),
990                    ),
991                ),
992
993                $this->table_prefix . 'users'    => array(
994                    'COLUMNS'    => array(
995                        'user_id'    => array('UINT', NULL, 'auto_increment'),
996                        'user_type'    => array('TINT:2', 0),
997                        'group_id'    => array('UINT', 3),
998                        'user_permissions'    => array('MTEXT', ''),
999                        'user_perm_from'    => array('UINT', 0),
1000                        'user_ip'    => array('VCHAR:40', ''),
1001                        'user_regdate'    => array('TIMESTAMP', 0),
1002                        'username'    => array('VCHAR_CI', ''),
1003                        'username_clean'    => array('VCHAR_CI', ''),
1004                        'user_password'    => array('VCHAR_UNI:40', ''),
1005                        'user_passchg'    => array('TIMESTAMP', 0),
1006                        'user_pass_convert'    => array('BOOL', 0),
1007                        'user_email'    => array('VCHAR_UNI:100', ''),
1008                        'user_email_hash'    => array('BINT', 0),
1009                        'user_birthday'    => array('VCHAR:10', ''),
1010                        'user_lastvisit'    => array('TIMESTAMP', 0),
1011                        'user_lastmark'    => array('TIMESTAMP', 0),
1012                        'user_lastpost_time'    => array('TIMESTAMP', 0),
1013                        'user_lastpage'    => array('VCHAR_UNI:200', ''),
1014                        'user_last_confirm_key'    => array('VCHAR:10', ''),
1015                        'user_last_search'    => array('TIMESTAMP', 0),
1016                        'user_warnings'    => array('TINT:4', 0),
1017                        'user_last_warning'    => array('TIMESTAMP', 0),
1018                        'user_login_attempts'    => array('TINT:4', 0),
1019                        'user_inactive_reason'    => array('TINT:2', 0),
1020                        'user_inactive_time'    => array('TIMESTAMP', 0),
1021                        'user_posts'    => array('UINT', 0),
1022                        'user_lang'    => array('VCHAR:30', ''),
1023                        'user_timezone'    => array('DECIMAL', 0),
1024                        'user_dst'    => array('BOOL', 0),
1025                        'user_dateformat'    => array('VCHAR_UNI:30', 'd M Y H:i'),
1026                        'user_style'    => array('USINT', 0),
1027                        'user_rank'    => array('UINT', 0),
1028                        'user_colour'    => array('VCHAR:6', ''),
1029                        'user_new_privmsg'    => array('INT:4', 0),
1030                        'user_unread_privmsg'    => array('INT:4', 0),
1031                        'user_last_privmsg'    => array('TIMESTAMP', 0),
1032                        'user_message_rules'    => array('BOOL', 0),
1033                        'user_full_folder'    => array('INT:11', -3),
1034                        'user_emailtime'    => array('TIMESTAMP', 0),
1035                        'user_topic_show_days'    => array('USINT', 0),
1036                        'user_topic_sortby_type'    => array('VCHAR:1', 't'),
1037                        'user_topic_sortby_dir'    => array('VCHAR:1', 'd'),
1038                        'user_post_show_days'    => array('USINT', 0),
1039                        'user_post_sortby_type'    => array('VCHAR:1', 't'),
1040                        'user_post_sortby_dir'    => array('VCHAR:1', 'a'),
1041                        'user_notify'    => array('BOOL', 0),
1042                        'user_notify_pm'    => array('BOOL', 1),
1043                        'user_notify_type'    => array('TINT:4', 0),
1044                        'user_allow_pm'    => array('BOOL', 1),
1045                        'user_allow_viewonline'    => array('BOOL', 1),
1046                        'user_allow_viewemail'    => array('BOOL', 1),
1047                        'user_allow_massemail'    => array('BOOL', 1),
1048                        'user_options'    => array('UINT:11', 895),
1049                        'user_avatar'    => array('VCHAR', ''),
1050                        'user_avatar_type'    => array('TINT:2', 0),
1051                        'user_avatar_width'    => array('USINT', 0),
1052                        'user_avatar_height'    => array('USINT', 0),
1053                        'user_sig'    => array('MTEXT_UNI', ''),
1054                        'user_sig_bbcode_uid'    => array('VCHAR:8', ''),
1055                        'user_sig_bbcode_bitfield'    => array('VCHAR:255', ''),
1056                        'user_from'    => array('VCHAR_UNI:100', ''),
1057                        'user_icq'    => array('VCHAR:15', ''),
1058                        'user_aim'    => array('VCHAR_UNI', ''),
1059                        'user_yim'    => array('VCHAR_UNI', ''),
1060                        'user_msnm'    => array('VCHAR_UNI', ''),
1061                        'user_jabber'    => array('VCHAR_UNI', ''),
1062                        'user_website'    => array('VCHAR_UNI:200', ''),
1063                        'user_occ'    => array('TEXT_UNI', ''),
1064                        'user_interests'    => array('TEXT_UNI', ''),
1065                        'user_actkey'    => array('VCHAR:32', ''),
1066                        'user_newpasswd'    => array('VCHAR_UNI:40', ''),
1067                        'user_form_salt'    => array('VCHAR_UNI:32', ''),
1068
1069                    ),
1070                    'PRIMARY_KEY'    => 'user_id',
1071                    'KEYS'    => array(
1072                        'user_birthday'    => array('INDEX', 'user_birthday'),
1073                        'user_email_hash'    => array('INDEX', 'user_email_hash'),
1074                        'user_type'    => array('INDEX', 'user_type'),
1075                        'username_clean'    => array('UNIQUE', 'username_clean'),
1076                    ),
1077                ),
1078
1079                $this->table_prefix . 'warnings'    => array(
1080                    'COLUMNS'    => array(
1081                        'warning_id'    => array('UINT', NULL, 'auto_increment'),
1082                        'user_id'    => array('UINT', 0),
1083                        'post_id'    => array('UINT', 0),
1084                        'log_id'    => array('UINT', 0),
1085                        'warning_time'    => array('TIMESTAMP', 0),
1086                    ),
1087                    'PRIMARY_KEY'    => 'warning_id',
1088                ),
1089
1090                $this->table_prefix . 'words'    => array(
1091                    'COLUMNS'    => array(
1092                        'word_id'    => array('UINT', NULL, 'auto_increment'),
1093                        'word'    => array('VCHAR_UNI', ''),
1094                        'replacement'    => array('VCHAR_UNI', ''),
1095                    ),
1096                    'PRIMARY_KEY'    => 'word_id',
1097                ),
1098
1099                $this->table_prefix . 'zebra'    => array(
1100                    'COLUMNS'    => array(
1101                        'user_id'    => array('UINT', 0),
1102                        'zebra_id'    => array('UINT', 0),
1103                        'friend'    => array('BOOL', 0),
1104                        'foe'    => array('BOOL', 0),
1105                    ),
1106                    'PRIMARY_KEY'    => array('user_id', 'zebra_id'),
1107                ),
1108            ),
1109        );
1110    }
1111
1112    public function revert_schema()
1113    {
1114        return array(
1115            'drop_tables' => array(
1116                $this->table_prefix . 'attachments',
1117                $this->table_prefix . 'acl_groups',
1118                $this->table_prefix . 'acl_options',
1119                $this->table_prefix . 'acl_roles',
1120                $this->table_prefix . 'acl_roles_data',
1121                $this->table_prefix . 'acl_users',
1122                $this->table_prefix . 'banlist',
1123                $this->table_prefix . 'bbcodes',
1124                $this->table_prefix . 'bookmarks',
1125                $this->table_prefix . 'bots',
1126                $this->table_prefix . 'config',
1127                $this->table_prefix . 'confirm',
1128                $this->table_prefix . 'disallow',
1129                $this->table_prefix . 'drafts',
1130                $this->table_prefix . 'extensions',
1131                $this->table_prefix . 'extension_groups',
1132                $this->table_prefix . 'forums',
1133                $this->table_prefix . 'forums_access',
1134                $this->table_prefix . 'forums_track',
1135                $this->table_prefix . 'forums_watch',
1136                $this->table_prefix . 'groups',
1137                $this->table_prefix . 'icons',
1138                $this->table_prefix . 'lang',
1139                $this->table_prefix . 'log',
1140                $this->table_prefix . 'moderator_cache',
1141                $this->table_prefix . 'modules',
1142                $this->table_prefix . 'poll_options',
1143                $this->table_prefix . 'poll_votes',
1144                $this->table_prefix . 'posts',
1145                $this->table_prefix . 'privmsgs',
1146                $this->table_prefix . 'privmsgs_folder',
1147                $this->table_prefix . 'privmsgs_rules',
1148                $this->table_prefix . 'privmsgs_to',
1149                $this->table_prefix . 'profile_fields',
1150                $this->table_prefix . 'profile_fields_data',
1151                $this->table_prefix . 'profile_fields_lang',
1152                $this->table_prefix . 'profile_lang',
1153                $this->table_prefix . 'ranks',
1154                $this->table_prefix . 'reports',
1155                $this->table_prefix . 'reports_reasons',
1156                $this->table_prefix . 'search_results',
1157                $this->table_prefix . 'search_wordlist',
1158                $this->table_prefix . 'search_wordmatch',
1159                $this->table_prefix . 'sessions',
1160                $this->table_prefix . 'sessions_keys',
1161                $this->table_prefix . 'sitelist',
1162                $this->table_prefix . 'smilies',
1163                $this->table_prefix . 'styles',
1164                $this->table_prefix . 'styles_template',
1165                $this->table_prefix . 'styles_template_data',
1166                $this->table_prefix . 'styles_theme',
1167                $this->table_prefix . 'styles_imageset',
1168                $this->table_prefix . 'styles_imageset_data',
1169                $this->table_prefix . 'topics',
1170                $this->table_prefix . 'topics_track',
1171                $this->table_prefix . 'topics_posted',
1172                $this->table_prefix . 'topics_watch',
1173                $this->table_prefix . 'user_group',
1174                $this->table_prefix . 'users',
1175                $this->table_prefix . 'warnings',
1176                $this->table_prefix . 'words',
1177                $this->table_prefix . 'zebra',
1178            ),
1179        );
1180    }
1181}