Skip to content

Commit 27c44f1

Browse files
committed
schema: Change character set to utf8mb4 (support for Emojis in Menus/Pages/News/Forum etc.)
1 parent 3f6ff3a commit 27c44f1

File tree

3 files changed

+56
-21
lines changed

3 files changed

+56
-21
lines changed

common.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
const MYAAC = true;
2929
const MYAAC_VERSION = '1.0-RC.2';
30-
const DATABASE_VERSION = 40;
30+
const DATABASE_VERSION = 41;
3131
const TABLE_PREFIX = 'myaac_';
3232
define('START_TIME', microtime(true));
3333
define('MYAAC_OS', stripos(PHP_OS, 'WIN') === 0 ? 'WINDOWS' : (strtoupper(PHP_OS) === 'DARWIN' ? 'MAC' : 'LINUX'));

install/includes/schema.sql

+20-20
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
SET @myaac_database_version = 40;
1+
SET @myaac_database_version = 41;
22

33
CREATE TABLE `myaac_account_actions`
44
(
@@ -8,7 +8,7 @@ CREATE TABLE `myaac_account_actions`
88
`date` INT(11) NOT NULL DEFAULT 0,
99
`action` VARCHAR(255) NOT NULL DEFAULT '',
1010
KEY (`account_id`)
11-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
11+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
1212

1313
CREATE TABLE `myaac_admin_menu`
1414
(
@@ -19,7 +19,7 @@ CREATE TABLE `myaac_admin_menu`
1919
`flags` INT(11) NOT NULL DEFAULT 0,
2020
`enabled` INT(1) NOT NULL DEFAULT 1,
2121
PRIMARY KEY (`id`)
22-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
22+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
2323

2424
CREATE TABLE `myaac_bugtracker`
2525
(
@@ -34,7 +34,7 @@ CREATE TABLE `myaac_bugtracker`
3434
`uid` INT(11) NOT NULL AUTO_INCREMENT,
3535
`tag` INT(11) NOT NULL DEFAULT 0,
3636
PRIMARY KEY (`uid`)
37-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
37+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
3838

3939
CREATE TABLE `myaac_changelog`
4040
(
@@ -46,7 +46,7 @@ CREATE TABLE `myaac_changelog`
4646
`player_id` INT(11) NOT NULL DEFAULT 0,
4747
`hide` TINYINT(1) NOT NULL DEFAULT 0,
4848
PRIMARY KEY (`id`)
49-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
49+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
5050

5151
INSERT INTO `myaac_changelog` (`id`, `type`, `where`, `date`, `body`, `hide`) VALUES (1, 3, 2, UNIX_TIMESTAMP(), 'MyAAC installed. (:', 0);
5252

@@ -57,7 +57,7 @@ CREATE TABLE `myaac_config`
5757
`value` VARCHAR(1000) NOT NULL,
5858
PRIMARY KEY (`id`),
5959
UNIQUE (`name`)
60-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
60+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
6161

6262
INSERT INTO `myaac_config` (`name`, `value`) VALUES ('database_version', @myaac_database_version);
6363

@@ -69,7 +69,7 @@ CREATE TABLE `myaac_faq`
6969
`ordering` INT(11) NOT NULL DEFAULT 0,
7070
`hide` TINYINT(1) NOT NULL DEFAULT 0,
7171
PRIMARY KEY (`id`)
72-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
72+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
7373

7474
CREATE TABLE `myaac_forum_boards`
7575
(
@@ -82,7 +82,7 @@ CREATE TABLE `myaac_forum_boards`
8282
`closed` TINYINT(1) NOT NULL DEFAULT 0,
8383
`hide` TINYINT(1) NOT NULL DEFAULT 0,
8484
PRIMARY KEY (`id`)
85-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
85+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
8686
INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`, `closed`) VALUES (NULL, 'News', 'News commenting', 0, 1);
8787
INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUES (NULL, 'Trade', 'Trade offers.', 1);
8888
INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUES (NULL, 'Quests', 'Quest making.', 2);
@@ -111,7 +111,7 @@ CREATE TABLE `myaac_forum`
111111
`closed` tinyint(1) NOT NULL DEFAULT '0',
112112
PRIMARY KEY (`id`),
113113
KEY `section` (`section`)
114-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
114+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
115115

116116
CREATE TABLE `myaac_menu`
117117
(
@@ -125,7 +125,7 @@ CREATE TABLE `myaac_menu`
125125
`ordering` INT(11) NOT NULL DEFAULT 0,
126126
`enabled` INT(1) NOT NULL DEFAULT 1,
127127
PRIMARY KEY (`id`)
128-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
128+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
129129

130130
CREATE TABLE `myaac_monsters` (
131131
`id` int(11) NOT NULL AUTO_INCREMENT,
@@ -158,7 +158,7 @@ CREATE TABLE `myaac_monsters` (
158158
`loot` text NOT NULL,
159159
`summons` TEXT NOT NULL,
160160
PRIMARY KEY (`id`)
161-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
161+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
162162

163163
CREATE TABLE `myaac_news`
164164
(
@@ -176,7 +176,7 @@ CREATE TABLE `myaac_news`
176176
`article_image` VARCHAR(100) NOT NULL DEFAULT '',
177177
`hide` TINYINT(1) NOT NULL DEFAULT 0,
178178
PRIMARY KEY (`id`)
179-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
179+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
180180

181181
CREATE TABLE `myaac_news_categories`
182182
(
@@ -186,7 +186,7 @@ CREATE TABLE `myaac_news_categories`
186186
`icon_id` INT(2) NOT NULL DEFAULT 0,
187187
`hide` TINYINT(1) NOT NULL DEFAULT 0,
188188
PRIMARY KEY (`id`)
189-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
189+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
190190

191191
INSERT INTO `myaac_news_categories` (`id`, `icon_id`) VALUES (NULL, 0);
192192
INSERT INTO `myaac_news_categories` (`id`, `icon_id`) VALUES (NULL, 1);
@@ -202,7 +202,7 @@ CREATE TABLE `myaac_notepad`
202202
`content` TEXT NOT NULL,
203203
/*`public` TINYINT(1) NOT NULL DEFAULT 0*/
204204
PRIMARY KEY (`id`)
205-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
205+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
206206

207207
CREATE TABLE `myaac_pages`
208208
(
@@ -218,7 +218,7 @@ CREATE TABLE `myaac_pages`
218218
`hide` TINYINT(1) NOT NULL DEFAULT 0,
219219
PRIMARY KEY (`id`),
220220
UNIQUE (`name`)
221-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
221+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
222222

223223
CREATE TABLE `myaac_gallery`
224224
(
@@ -230,7 +230,7 @@ CREATE TABLE `myaac_gallery`
230230
`ordering` INT(11) NOT NULL DEFAULT 0,
231231
`hide` TINYINT(1) NOT NULL DEFAULT 0,
232232
PRIMARY KEY (`id`)
233-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
233+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
234234

235235
INSERT INTO `myaac_gallery` (`id`, `ordering`, `comment`, `image`, `thumb`, `author`) VALUES (NULL, 1, 'Demon', 'images/gallery/demon.jpg', 'images/gallery/demon_thumb.gif', 'MyAAC');
236236

@@ -242,7 +242,7 @@ CREATE TABLE `myaac_settings`
242242
`value` TEXT NOT NULL,
243243
PRIMARY KEY (`id`),
244244
KEY `key` (`key`)
245-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
245+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
246246

247247
CREATE TABLE `myaac_spells`
248248
(
@@ -265,7 +265,7 @@ CREATE TABLE `myaac_spells`
265265
`hide` TINYINT(1) NOT NULL DEFAULT 0,
266266
PRIMARY KEY (`id`),
267267
UNIQUE (`name`)
268-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
268+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
269269

270270
CREATE TABLE `myaac_visitors`
271271
(
@@ -274,7 +274,7 @@ CREATE TABLE `myaac_visitors`
274274
`page` VARCHAR(2048) NOT NULL,
275275
`user_agent` VARCHAR(255) NOT NULL DEFAULT '',
276276
UNIQUE (`ip`)
277-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
277+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;
278278

279279
CREATE TABLE `myaac_weapons`
280280
(
@@ -283,4 +283,4 @@ CREATE TABLE `myaac_weapons`
283283
`maglevel` INT(11) NOT NULL DEFAULT 0,
284284
`vocations` VARCHAR(100) NOT NULL DEFAULT '',
285285
PRIMARY KEY (`id`)
286-
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
286+
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4;

system/migrations/41.php

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
/**
3+
* Change database tables character set to utf8mb4
4+
* Previously it was utf8 (utf8mb3)
5+
* utf8 will become utf8mb4 in future releases of mysql
6+
*/
7+
$tables = [
8+
'account_actions', 'admin_menu',
9+
'changelog', 'config',
10+
'faq', 'forum_boards', 'forum',
11+
'gallery',
12+
'menu', 'monsters',
13+
'news', 'news_categories', 'notepad',
14+
'pages',
15+
'settings', 'spells',
16+
'visitors', 'weapons',
17+
];
18+
19+
$up = function () use ($db, $tables)
20+
{
21+
foreach ($tables as $table) {
22+
if ($db->hasTable(TABLE_PREFIX . $table)) {
23+
$db->exec('ALTER TABLE ' . TABLE_PREFIX . $table . ' CONVERT TO CHARACTER SET utf8mb4');
24+
}
25+
}
26+
};
27+
28+
$down = function () use ($db, $tables)
29+
{
30+
foreach ($tables as $table) {
31+
if ($db->hasTable(TABLE_PREFIX . $table)) {
32+
$db->exec('ALTER TABLE ' . TABLE_PREFIX . $table . ' CONVERT TO CHARACTER SET utf8');
33+
}
34+
}
35+
};

0 commit comments

Comments
 (0)