diff --git a/system/migrations/1-hooks.sql b/system/migrations/1-hooks.sql
new file mode 100644
index 00000000..218988ce
--- /dev/null
+++ b/system/migrations/1-hooks.sql
@@ -0,0 +1,8 @@
+CREATE TABLE `myaac_hooks`
+(
+ `id` INT(11) NOT NULL AUTO_INCREMENT,
+ `name` VARCHAR(30) NOT NULL DEFAULT '',
+ `type` INT(2) NOT NULL DEFAULT 0,
+ `file` VARCHAR(100) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
diff --git a/system/migrations/1.php b/system/migrations/1.php
index 6e4f3252..a3c38f66 100644
--- a/system/migrations/1.php
+++ b/system/migrations/1.php
@@ -1,16 +1,16 @@
query("ALTER TABLE `" . TABLE_PREFIX . "account_actions` MODIFY `ip` INT(11) NOT NULL DEFAULT 0;");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "account_actions` MODIFY `date` INT(11) NOT NULL DEFAULT 0;");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "account_actions` MODIFY `action` VARCHAR(255) NOT NULL DEFAULT '';");
- $db->query("
- CREATE TABLE `myaac_hooks`
-(
- `id` INT(11) NOT NULL AUTO_INCREMENT,
- `name` VARCHAR(30) NOT NULL DEFAULT '',
- `type` INT(2) NOT NULL DEFAULT 0,
- `file` VARCHAR(100) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
-");
+/**
+ * @var OTS_DB_MySQL $db
+ */
-?>
+$up = function () use ($db) {
+ $db->modifyColumn(TABLE_PREFIX . 'account_actions', 'ip', "INT(11) NOT NULL DEFAULT 0");
+ $db->modifyColumn(TABLE_PREFIX . 'account_actions', 'date', "INT(11) NOT NULL DEFAULT 0");
+ $db->modifyColumn(TABLE_PREFIX . 'account_actions', 'action', "VARCHAR(255) NOT NULL DEFAULT ''");
+
+ $db->query(file_get_contents(__DIR__ . '/1-hooks.sql'));
+};
+
+$down = function () use ($db) {
+ $db->dropTable(TABLE_PREFIX . 'hooks');
+};
diff --git a/system/migrations/10-admin_menu.sql b/system/migrations/10-admin_menu.sql
new file mode 100644
index 00000000..72083c35
--- /dev/null
+++ b/system/migrations/10-admin_menu.sql
@@ -0,0 +1,10 @@
+CREATE TABLE `myaac_admin_menu`
+(
+ `id` INT(11) NOT NULL AUTO_INCREMENT,
+ `name` VARCHAR(255) NOT NULL DEFAULT '',
+ `page` VARCHAR(255) NOT NULL DEFAULT '',
+ `ordering` INT(11) NOT NULL DEFAULT 0,
+ `flags` INT(11) NOT NULL DEFAULT 0,
+ `enabled` INT(1) NOT NULL DEFAULT 1,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
diff --git a/system/migrations/10.php b/system/migrations/10.php
index da660ab9..8783dbf0 100644
--- a/system/migrations/10.php
+++ b/system/migrations/10.php
@@ -1,17 +1,24 @@
hasColumn(TABLE_PREFIX . 'hooks', 'ordering'))
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "hooks` ADD `ordering` INT(11) NOT NULL DEFAULT 0 AFTER `file`;");
+/**
+ * @var OTS_DB_MySQL $db
+ */
- if(!$db->hasTable(TABLE_PREFIX . 'admin_menu'))
- $db->query("
-CREATE TABLE `myaac_admin_menu`
-(
- `id` INT(11) NOT NULL AUTO_INCREMENT,
- `name` VARCHAR(255) NOT NULL DEFAULT '',
- `page` VARCHAR(255) NOT NULL DEFAULT '',
- `ordering` INT(11) NOT NULL DEFAULT 0,
- `flags` INT(11) NOT NULL DEFAULT 0,
- `enabled` INT(1) NOT NULL DEFAULT 1,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
-");
\ No newline at end of file
+$up = function () use ($db) {
+ if (!$db->hasColumn(TABLE_PREFIX . 'hooks', 'ordering')) {
+ $db->addColumn(TABLE_PREFIX . 'hooks', 'ordering', "INT(11) NOT NULL DEFAULT 0 AFTER `file`");
+ }
+
+ if (!$db->hasTable(TABLE_PREFIX . 'admin_menu')) {
+ $db->query(file_get_contents(__DIR__ . '/10-admin_menu.sql'));
+ }
+};
+
+$down = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'hooks', 'ordering')) {
+ $db->dropColumn(TABLE_PREFIX . 'hooks', 'ordering');
+ }
+
+ if ($db->hasTable(TABLE_PREFIX . 'admin_menu')) {
+ $db->dropTable(TABLE_PREFIX . 'admin_menu');
+ }
+};
diff --git a/system/migrations/11.php b/system/migrations/11.php
index 845f9e67..bc26da0e 100644
--- a/system/migrations/11.php
+++ b/system/migrations/11.php
@@ -1,19 +1,44 @@
query("RENAME TABLE
- " . TABLE_PREFIX . "screenshots TO " . TABLE_PREFIX . "gallery,
- " . TABLE_PREFIX . "movies TO " . TABLE_PREFIX . "videos;");
+ $db->renameTable(TABLE_PREFIX . 'screenshots', TABLE_PREFIX . 'gallery');
+ $db->renameTable(TABLE_PREFIX . 'movies', TABLE_PREFIX . 'videos');
// rename images dir
- if(file_exists(BASE . 'images/screenshots') && !file_exists(BASE . GALLERY_DIR)) {
+ if (file_exists(BASE . 'images/screenshots') && !file_exists(BASE . GALLERY_DIR)) {
rename(BASE . 'images/screenshots', BASE . GALLERY_DIR);
}
// convert old database screenshots images to gallery
$query = $db->query('SELECT `id`, `image`, `thumb` FROM `' . TABLE_PREFIX . 'gallery`;');
- foreach($query->fetchAll() as $item) {
+ foreach ($query->fetchAll() as $item) {
$db->update(TABLE_PREFIX . 'gallery', array(
'image' => str_replace('/screenshots/', '/gallery/', $item['image']),
'thumb' => str_replace('/screenshots/', '/gallery/', $item['thumb']),
), array('id' => $item['id']));
}
+};
+
+$down = function () use ($db) {
+ // rename database tables
+ $db->renameTable(TABLE_PREFIX . 'gallery', TABLE_PREFIX . 'screenshots');
+ $db->renameTable(TABLE_PREFIX . 'videos', TABLE_PREFIX . 'movies');
+
+ // rename images dir
+ if (file_exists(BASE . GALLERY_DIR) && !file_exists(BASE . 'images/screenshots')) {
+ rename(BASE . GALLERY_DIR, BASE . 'images/screenshots');
+ }
+
+ // convert new database gallery images to screenshots
+ $query = $db->query('SELECT `id`, `image`, `thumb` FROM `' . TABLE_PREFIX . 'screenshots`;');
+ foreach ($query->fetchAll() as $item) {
+ $db->update(TABLE_PREFIX . 'screenshots', [
+ 'image' => str_replace('/gallery/', '/screenshots/', $item['image']),
+ 'thumb' => str_replace('/gallery/', '/screenshots/', $item['thumb']),
+ ], ['id' => $item['id']]);
+ }
+};
diff --git a/system/migrations/12-items.sql b/system/migrations/12-items.sql
new file mode 100644
index 00000000..458333e0
--- /dev/null
+++ b/system/migrations/12-items.sql
@@ -0,0 +1,9 @@
+CREATE TABLE `myaac_items`
+(
+ `id` INT(11) NOT NULL,
+ `article` VARCHAR(5) NOT NULL DEFAULT '',
+ `name` VARCHAR(50) NOT NULL DEFAULT '',
+ `plural` VARCHAR(50) NOT NULL DEFAULT '',
+ `attributes` VARCHAR(500) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
diff --git a/system/migrations/12-weapons.sql b/system/migrations/12-weapons.sql
new file mode 100644
index 00000000..9085732e
--- /dev/null
+++ b/system/migrations/12-weapons.sql
@@ -0,0 +1,8 @@
+CREATE TABLE `myaac_weapons`
+(
+ `id` INT(11) NOT NULL,
+ `level` INT(11) NOT NULL DEFAULT 0,
+ `maglevel` INT(11) NOT NULL DEFAULT 0,
+ `vocations` VARCHAR(100) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
diff --git a/system/migrations/12.php b/system/migrations/12.php
index 9730ed8b..75cd5690 100644
--- a/system/migrations/12.php
+++ b/system/migrations/12.php
@@ -1,51 +1,65 @@
hasColumn(TABLE_PREFIX . 'spells', 'item_id'))
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` ADD `item_id` INT(11) NOT NULL DEFAULT 0 AFTER `conjure_count`;");
+use MyAAC\Models\Spell;
-// change unique index from spell to name
-$db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` DROP INDEX `spell`;");
-$db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` ADD UNIQUE INDEX (`name`);");
-
-// change comment of spells.type
-$db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` MODIFY `type` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - instant, 2 - conjure, 3 - rune';");
-
-// new items table
-if(!$db->hasTable(TABLE_PREFIX . 'items'))
-$db->query("
-CREATE TABLE `" . TABLE_PREFIX . "items`
-(
- `id` INT(11) NOT NULL,
- `article` VARCHAR(5) NOT NULL DEFAULT '',
- `name` VARCHAR(50) NOT NULL DEFAULT '',
- `plural` VARCHAR(50) NOT NULL DEFAULT '',
- `attributes` VARCHAR(500) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
-");
-
-// new weapons table
-if(!$db->hasTable(TABLE_PREFIX . 'weapons'))
-$db->query("
-CREATE TABLE `" . TABLE_PREFIX . "weapons`
-(
- `id` INT(11) NOT NULL,
- `level` INT(11) NOT NULL DEFAULT 0,
- `maglevel` INT(11) NOT NULL DEFAULT 0,
- `vocations` VARCHAR(100) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
-");
-
-// modify vocations to support json data
-$db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` MODIFY `vocations` VARCHAR(100) NOT NULL DEFAULT '';");
-$query = $db->query('SELECT `id`, `vocations` FROM `' . TABLE_PREFIX . 'spells`');
-foreach($query->fetchAll() as $spell) {
- $tmp = explode(',', $spell['vocations']);
- foreach($tmp as &$v) {
- $v = (int)$v;
+$up = function () use ($db) {
+ // add new item_id field for runes
+ if (!$db->hasColumn(TABLE_PREFIX . 'spells', 'item_id')) {
+ $db->addColumn(TABLE_PREFIX . 'spells', 'item_id', 'INT(11) NOT NULL DEFAULT 0 AFTER `conjure_count`');
}
- $db->update(TABLE_PREFIX . 'spells', array('vocations' => json_encode($tmp)), array('id' => $spell['id']));
-}
-?>
\ No newline at end of file
+
+ // change unique index from spell to name
+ $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` DROP INDEX `spell`;");
+ $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` ADD UNIQUE INDEX (`name`);");
+
+ // change comment of spells.type
+ $db->modifyColumn(TABLE_PREFIX . 'spells', 'type', "TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - instant, 2 - conjure, 3 - rune'");
+
+ // new items table
+ if (!$db->hasTable(TABLE_PREFIX . 'items')) {
+ $db->query(file_get_contents(__DIR__ . '/12-items.sql'));
+ }
+
+ // new weapons table
+ if (!$db->hasTable(TABLE_PREFIX . 'weapons')) {
+ $db->query(file_get_contents(__DIR__ . '/12-weapons.sql'));
+ }
+
+ // modify vocations to support json data
+ $db->modifyColumn(TABLE_PREFIX . 'spells', 'vocations', "VARCHAR(100) NOT NULL DEFAULT ''");
+
+ $spells = Spell::select('id', 'vocations')->get();
+ foreach ($spells as $spell) {
+ $tmp = explode(',', $spell->vocations);
+ foreach ($tmp as &$v) {
+ $v = (int)$v;
+ }
+
+ Spell::where('id', $spell->id)->update('vocations', json_encode($tmp));
+ }
+};
+
+$down = function () use ($db) {
+ // remove item_id field for runes
+ if ($db->hasColumn(TABLE_PREFIX . 'spells', 'item_id')) {
+ $db->dropColumn(TABLE_PREFIX . 'spells', 'item_id');
+ }
+
+ // change unique index from spell to name
+ $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` ADD INDEX `spell`;");
+ $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` DROP UNIQUE INDEX (`name`);");
+
+ $db->dropTable(TABLE_PREFIX . 'items');
+ $db->dropTable(TABLE_PREFIX . 'weapons');
+
+ $spells = Spell::select('id', 'vocations')->get();
+ // modify vocations to use vocation separated by comma
+ foreach ($spells as $spell) {
+ $vocations = empty($spell->vocations) ? [] : json_decode($spell->vocations);
+
+ Spell::where('id', $spell->id)->update('vocations', implode(',', $vocations));
+ }
+};
diff --git a/system/migrations/13.php b/system/migrations/13.php
index 4eee77f3..86da43ad 100644
--- a/system/migrations/13.php
+++ b/system/migrations/13.php
@@ -1,3 +1,16 @@
hasColumn(TABLE_PREFIX . 'spells', 'spell'))
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` DROP COLUMN `spell`;");
\ No newline at end of file
+/**
+ * @var OTS_DB_MySQL $db
+ */
+
+$up = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'spells', 'spell')) {
+ $db->dropColumn(TABLE_PREFIX . 'spells', 'spell');
+ }
+};
+
+$down = function () use ($db) {
+ if (!$db->hasColumn(TABLE_PREFIX . 'spells', 'spell')) {
+ $db->addColumn(TABLE_PREFIX . 'spells', 'spell', "VARCHAR(255) NOT NULL DEFAULT ''");
+ }
+};
diff --git a/system/migrations/14.php b/system/migrations/14.php
index acd13afb..4c295c67 100644
--- a/system/migrations/14.php
+++ b/system/migrations/14.php
@@ -1,18 +1,39 @@
hasColumn(TABLE_PREFIX . 'monsters', 'file_path')) {
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` CHANGE `file_path` `loot` VARCHAR(5000);");
-}
+$up = function () use ($db) {
+ // change monsters.file_path field to loot
+ if ($db->hasColumn(TABLE_PREFIX . 'monsters', 'file_path')) {
+ $db->changeColumn(TABLE_PREFIX . 'monsters', 'file_path', 'loot', 'VARCHAR(5000)');
+ }
-// update loot to empty string
-$db->query("UPDATE `" . TABLE_PREFIX . "monsters` SET `loot` = '';");
+ // update loot to empty string
+ $db->query("UPDATE `" . TABLE_PREFIX . "monsters` SET `loot` = '';");
-// drop monsters.gfx_name field
-$db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `gfx_name`;");
+ // drop monsters.gfx_name field
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'gfx_name');
-// rename hide_creature to hidden
-if($db->hasColumn(TABLE_PREFIX . 'monsters', 'hide_creature')) {
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` CHANGE `hide_creature` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
-}
-?>
\ No newline at end of file
+ // rename hide_creature to hidden
+ if ($db->hasColumn(TABLE_PREFIX . 'monsters', 'hide_creature')) {
+ $db->changeColumn(TABLE_PREFIX . 'monsters', 'hide_creature', 'hidden', "TINYINT(1) NOT NULL DEFAULT 0");
+ }
+};
+
+$down = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'monsters', 'loot')) {
+ $db->changeColumn(TABLE_PREFIX . 'monsters', 'loot', 'file_path', 'VARCHAR(5000)');
+ }
+
+ // update file_path to empty string
+ $db->query("UPDATE `" . TABLE_PREFIX . "monsters` SET `file_path` = '';");
+
+ // add monsters.gfx_name field
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'gfx_name', 'varchar(255) NOT NULL AFTER `race`');
+
+ // rename hidden to hide_creature
+ if ($db->hasColumn(TABLE_PREFIX . 'monsters', 'hidden')) {
+ $db->changeColumn(TABLE_PREFIX . 'monsters', 'hidden', 'hide_creature', 'TINYINT(1) NOT NULL DEFAULT 0');
+ }
+};
diff --git a/system/migrations/15.php b/system/migrations/15.php
index 971587ec..3907d5d7 100644
--- a/system/migrations/15.php
+++ b/system/migrations/15.php
@@ -1,10 +1,26 @@
hasColumn(TABLE_PREFIX . 'forum_boards', 'guild')) {
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "forum_boards` ADD `guild` TINYINT(1) NOT NULL DEFAULT 0 AFTER `closed`;");
-}
-if(!$db->hasColumn(TABLE_PREFIX . 'forum_boards', 'access')) {
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "forum_boards` ADD `access` TINYINT(1) NOT NULL DEFAULT 0 AFTER `guild`;");
-}
+$up = function ($db) {
+ if (!$db->hasColumn(TABLE_PREFIX . 'forum_boards', 'guild')) {
+ $db->addColumn(TABLE_PREFIX . 'forum_boards', 'guild', 'TINYINT(1) NOT NULL DEFAULT 0 AFTER `closed`');
+ }
+
+ if (!$db->hasColumn(TABLE_PREFIX . 'forum_boards', 'access')) {
+ $db->addColumn(TABLE_PREFIX . 'forum_boards', 'access', 'TINYINT(1) NOT NULL DEFAULT 0 AFTER `guild`');
+ }
+};
+
+$down = function ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'forum_boards', 'guild')) {
+ $db->dropColumn(TABLE_PREFIX . 'forum_boards', 'guild');
+ }
+
+ if ($db->hasColumn(TABLE_PREFIX . 'forum_boards', 'access')) {
+ $db->dropColumn(TABLE_PREFIX . 'forum_boards', 'access');
+ }
+};
diff --git a/system/migrations/16.php b/system/migrations/16.php
index ad0112a2..0be467d4 100644
--- a/system/migrations/16.php
+++ b/system/migrations/16.php
@@ -1,5 +1,14 @@
query("ALTER TABLE `" . TABLE_PREFIX . "spells` MODIFY `vocations` VARCHAR(300) NOT NULL DEFAULT '';");
-?>
\ No newline at end of file
+
+$up = function () use ($db) {
+ $db->modifyColumn(TABLE_PREFIX . 'spells', 'vocations', "VARCHAR(300) NOT NULL DEFAULT ''");
+};
+
+$down = function () {
+ // nothing to do here
+};
diff --git a/system/migrations/17-menu.sql b/system/migrations/17-menu.sql
new file mode 100644
index 00000000..738e722b
--- /dev/null
+++ b/system/migrations/17-menu.sql
@@ -0,0 +1,11 @@
+CREATE TABLE `myaac_menu`
+(
+ `id` INT(11) NOT NULL AUTO_INCREMENT,
+ `template` VARCHAR(255) NOT NULL,
+ `name` VARCHAR(255) NOT NULL,
+ `link` VARCHAR(255) NOT NULL,
+ `category` INT(11) NOT NULL DEFAULT 1,
+ `ordering` INT(11) NOT NULL DEFAULT 0,
+ `enabled` INT(1) NOT NULL DEFAULT 1,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
diff --git a/system/migrations/17.php b/system/migrations/17.php
index 73e3828c..497e3e3c 100644
--- a/system/migrations/17.php
+++ b/system/migrations/17.php
@@ -1,23 +1,20 @@
hasTable('myaac_menu')) {
- $db->query("
-CREATE TABLE `myaac_menu`
-(
- `id` INT(11) NOT NULL AUTO_INCREMENT,
- `template` VARCHAR(255) NOT NULL,
- `name` VARCHAR(255) NOT NULL,
- `link` VARCHAR(255) NOT NULL,
- `category` INT(11) NOT NULL DEFAULT 1,
- `ordering` INT(11) NOT NULL DEFAULT 0,
- `enabled` INT(1) NOT NULL DEFAULT 1,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
-");
-}
+$up = function () use ($db) {
+ if (!$db->hasTable(TABLE_PREFIX . 'menu')) {
+ $db->exec(file_get_contents(__DIR__ . '/17-menu.sql'));
+ }
-Plugins::installMenus('kathrine', require TEMPLATES . 'kathrine/menus.php');
-Plugins::installMenus('tibiacom', require TEMPLATES . 'tibiacom/menus.php');
+ Plugins::installMenus('kathrine', require TEMPLATES . 'kathrine/menus.php');
+ Plugins::installMenus('tibiacom', require TEMPLATES . 'tibiacom/menus.php');
+};
+
+$down = function () use ($db) {
+ $db->dropTable(TABLE_PREFIX . 'menu');
+};
diff --git a/system/migrations/18.php b/system/migrations/18.php
index 7ec9675a..7c251e7c 100644
--- a/system/migrations/18.php
+++ b/system/migrations/18.php
@@ -1,6 +1,24 @@
query("ALTER TABLE `" . TABLE_PREFIX . "news` ADD `article_text` VARCHAR(300) NOT NULL DEFAULT '' AFTER `comments`;");
-$db->query("ALTER TABLE `" . TABLE_PREFIX . "news` ADD `article_image` VARCHAR(100) NOT NULL DEFAULT '' AFTER `article_text`;");
+$up = function () use ($db) {
+ if (!$db->hasColumn(TABLE_PREFIX . 'news', 'article_text')) {
+ $db->addColumn(TABLE_PREFIX . 'news', 'article_text', "VARCHAR(300) NOT NULL DEFAULT '' AFTER `comments`");
+ }
-?>
\ No newline at end of file
+ if (!$db->hasColumn(TABLE_PREFIX . 'news', 'article_image')) {
+ $db->addColumn(TABLE_PREFIX . 'news', 'article_image', "VARCHAR(100) NOT NULL DEFAULT '' AFTER `article_text`");
+ }
+};
+
+$down = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'news', 'article_text')) {
+ $db->dropColumn(TABLE_PREFIX . 'news', 'article_text');
+ }
+
+ if ($db->hasColumn(TABLE_PREFIX . 'news', 'article_image')) {
+ $db->dropColumn(TABLE_PREFIX . 'news', 'article_image');
+ }
+};
diff --git a/system/migrations/2.php b/system/migrations/2.php
index 90d9a610..d65c0586 100644
--- a/system/migrations/2.php
+++ b/system/migrations/2.php
@@ -1,5 +1,11 @@
query("ALTER TABLE `" . TABLE_PREFIX . "faq` MODIFY `answer` VARCHAR(1020) NOT NULL DEFAULT '';");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "movies` MODIFY `title` VARCHAR(100) NOT NULL DEFAULT '';");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "news` MODIFY `title` VARCHAR(100) NOT NULL DEFAULT '';");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "news` MODIFY `body` TEXT NOT NULL DEFAULT '';");
+/**
+ * @var OTS_DB_MySQL $db
+ */
+
+$up = function () use ($db) {
+ $db->modifyColumn(TABLE_PREFIX . 'faq', 'answer', "VARCHAR(1020) NOT NULL DEFAULT ''");
+ $db->modifyColumn(TABLE_PREFIX . 'movies', 'title', "VARCHAR(100) NOT NULL DEFAULT ''");
+ $db->modifyColumn(TABLE_PREFIX . 'news', 'title', "VARCHAR(100) NOT NULL DEFAULT ''");
+ $db->modifyColumn(TABLE_PREFIX . 'news', 'body', "TEXT NOT NULL");
+};
diff --git a/system/migrations/20.php b/system/migrations/20.php
index 1255fa14..1d08985f 100644
--- a/system/migrations/20.php
+++ b/system/migrations/20.php
@@ -2,20 +2,26 @@
use MyAAC\Settings;
-if (!$db->hasTable('players')) {
- return;
-}
+$up = function () use ($db) {
+ if (!$db->hasTable('players')) {
+ return;
+ }
-$query = $db->query("SELECT `id` FROM `players` WHERE (`name` = " . $db->quote("Rook Sample") . " OR `name` = " . $db->quote("Sorcerer Sample") . " OR `name` = " . $db->quote("Druid Sample") . " OR `name` = " . $db->quote("Paladin Sample") . " OR `name` = " . $db->quote("Knight Sample") . " OR `name` = " . $db->quote("Account Manager") . ") ORDER BY `id`;");
+ $query = $db->query("SELECT `id` FROM `players` WHERE (`name` = " . $db->quote("Rook Sample") . " OR `name` = " . $db->quote("Sorcerer Sample") . " OR `name` = " . $db->quote("Druid Sample") . " OR `name` = " . $db->quote("Paladin Sample") . " OR `name` = " . $db->quote("Knight Sample") . " OR `name` = " . $db->quote("Account Manager") . ") ORDER BY `id`;");
-$highscores_ignored_ids = array();
-if($query->rowCount() > 0) {
- foreach($query->fetchAll() as $result)
- $highscores_ignored_ids[] = $result['id'];
-}
-else {
- $highscores_ignored_ids[] = 0;
-}
+ $highscores_ignored_ids = array();
+ if ($query->rowCount() > 0) {
+ foreach ($query->fetchAll() as $result)
+ $highscores_ignored_ids[] = $result['id'];
+ } else {
+ $highscores_ignored_ids[] = 0;
+ }
-$settings = Settings::getInstance();
-$settings->updateInDatabase('core', 'highscores_ids_hidden', implode(', ', $highscores_ignored_ids));
+ $settings = Settings::getInstance();
+ $settings->updateInDatabase('core', 'highscores_ids_hidden', implode(', ', $highscores_ignored_ids));
+};
+
+$down = function () {
+ $settings = Settings::getInstance();
+ $settings->updateInDatabase('core', 'highscores_ids_hidden', '0');
+};
diff --git a/system/migrations/21.php b/system/migrations/21.php
index 51bb518a..6282407c 100644
--- a/system/migrations/21.php
+++ b/system/migrations/21.php
@@ -1,14 +1,23 @@
exec("ALTER TABLE `" . TABLE_PREFIX . "forum` ADD `post_html` TINYINT(1) NOT NULL DEFAULT 0 AFTER `post_smile`;");
+$up = function () use ($db) {
+ $db->addColumn(TABLE_PREFIX . 'forum', 'post_html', 'TINYINT(1) NOT NULL DEFAULT 0 AFTER `post_smile`');
-$query = $db->query("SELECT `id` FROM `" . TABLE_PREFIX . "forum_boards` WHERE `name` LIKE " . $db->quote('News') . " LIMIT 1;");
-if($query->rowCount() == 0) {
- return; // don't make anything
-}
+ $query = $db->query("SELECT `id` FROM `" . TABLE_PREFIX . "forum_boards` WHERE `name` LIKE " . $db->quote('News') . " LIMIT 1;");
+ if ($query->rowCount() == 0) {
+ return; // don't make anything
+ }
-$query = $query->fetch();
-$id = $query['id'];
+ $query = $query->fetch();
+ $id = $query['id'];
-// update all forum threads with is_html = 1
-$db->exec("UPDATE `" . TABLE_PREFIX . "forum` SET `post_html` = 1 WHERE `section` = " . $id . " AND `id` = `first_post`;");
\ No newline at end of file
+ // update all forum threads with is_html = 1
+ $db->exec("UPDATE `" . TABLE_PREFIX . "forum` SET `post_html` = 1 WHERE `section` = " . $id . " AND `id` = `first_post`;");
+};
+
+$down = function () use ($db) {
+ $db->dropColumn(TABLE_PREFIX . 'forum', 'post_html');
+};
diff --git a/system/migrations/22-z_polls.sql b/system/migrations/22-z_polls.sql
new file mode 100644
index 00000000..7d5d39df
--- /dev/null
+++ b/system/migrations/22-z_polls.sql
@@ -0,0 +1,10 @@
+CREATE TABLE `z_polls` (
+ `id` int(11) NOT NULL auto_increment,
+ `question` varchar(255) NOT NULL,
+ `description` varchar(255) NOT NULL,
+ `end` int(11) NOT NULL DEFAULT 0,
+ `start` int(11) NOT NULL DEFAULT 0,
+ `answers` int(11) NOT NULL DEFAULT 0,
+ `votes_all` int(11) NOT NULL DEFAULT 0,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
diff --git a/system/migrations/22-z_polls_answers.sql b/system/migrations/22-z_polls_answers.sql
new file mode 100644
index 00000000..f28940cf
--- /dev/null
+++ b/system/migrations/22-z_polls_answers.sql
@@ -0,0 +1,6 @@
+CREATE TABLE `z_polls_answers` (
+ `poll_id` int(11) NOT NULL,
+ `answer_id` int(11) NOT NULL,
+ `answer` varchar(255) NOT NULL,
+ `votes` int(11) NOT NULL DEFAULT 0
+) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
diff --git a/system/migrations/22.php b/system/migrations/22.php
index eca1ddac..c9621032 100644
--- a/system/migrations/22.php
+++ b/system/migrations/22.php
@@ -1,31 +1,35 @@
hasTable('z_polls'))
- $db->query('
-CREATE TABLE `z_polls` (
- `id` int(11) NOT NULL auto_increment,
- `question` varchar(255) NOT NULL,
- `description` varchar(255) NOT NULL,
- `end` int(11) NOT NULL DEFAULT 0,
- `start` int(11) NOT NULL DEFAULT 0,
- `answers` int(11) NOT NULL DEFAULT 0,
- `votes_all` int(11) NOT NULL DEFAULT 0,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
-');
+$up = function () use ($db) {
+ if (!$db->hasTable('z_polls')) {
+ $db->exec(file_get_contents(__DIR__ . '/22-z_polls.sql'));
+ }
-if(!$db->hasTable('z_polls_answers'))
-$db->query('
- CREATE TABLE `z_polls_answers` (
- `poll_id` int(11) NOT NULL,
- `answer_id` int(11) NOT NULL,
- `answer` varchar(255) NOT NULL,
- `votes` int(11) NOT NULL DEFAULT 0
-) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
-');
+ if (!$db->hasTable('z_polls_answers')) {
+ $db->exec(file_get_contents(__DIR__ . '/22-z_polls_answers.sql'));
+ }
-if(!$db->hasColumn('accounts', 'vote'))
- $db->query('ALTER TABLE `accounts` ADD `vote` INT( 11 ) DEFAULT 0 NOT NULL ;');
-else {
- $db->query('ALTER TABLE `accounts` MODIFY `vote` INT( 11 ) DEFAULT 0 NOT NULL ;');
-}
\ No newline at end of file
+ if (!$db->hasColumn('accounts', 'vote')) {
+ $db->addColumn('accounts', 'vote', 'int(11) NOT NULL DEFAULT 0');
+ }
+ else {
+ $db->modifyColumn('accounts', 'vote', 'int(11) NOT NULL DEFAULT 0');
+ }
+};
+
+$down = function () use ($db) {
+ if ($db->hasTable('z_polls')) {
+ $db->dropTable('z_polls;');
+ }
+
+ if ($db->hasTable('z_polls_answers')) {
+ $db->dropTable('z_polls_answers');
+ }
+
+ if ($db->hasColumn('accounts', 'vote')) {
+ $db->dropColumn('accounts', 'vote');
+ }
+};
diff --git a/system/migrations/23.php b/system/migrations/23.php
index ba4bbe0c..6174a086 100644
--- a/system/migrations/23.php
+++ b/system/migrations/23.php
@@ -1,7 +1,24 @@
hasColumn(TABLE_PREFIX . 'menu', 'blank'))
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "menu` ADD `blank` TINYINT(1) NOT NULL DEFAULT 0 AFTER `link`;");
+$up = function () use ($db) {
+ if (!$db->hasColumn(TABLE_PREFIX . 'menu', 'blank')) {
+ $db->addColumn(TABLE_PREFIX . 'menu', 'blank', 'TINYINT(1) NOT NULL DEFAULT 0 AFTER `link`');
+ }
-if(!$db->hasColumn(TABLE_PREFIX . 'menu', 'color'))
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "menu` ADD `color` CHAR(6) NOT NULL DEFAULT '' AFTER `blank`;");
\ No newline at end of file
+ if (!$db->hasColumn(TABLE_PREFIX . 'menu', 'color')) {
+ $db->addColumn(TABLE_PREFIX . 'menu', 'color', "CHAR(6) NOT NULL DEFAULT '' AFTER `blank`");
+ }
+};
+
+$down = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'menu', 'blank')) {
+ $db->dropColumn(TABLE_PREFIX . 'menu', 'blank');
+ }
+
+ if ($db->hasColumn(TABLE_PREFIX . 'menu', 'color')) {
+ $db->dropColumn(TABLE_PREFIX . 'menu', 'color');
+ }
+};
diff --git a/system/migrations/24-items.sql b/system/migrations/24-items.sql
new file mode 100644
index 00000000..458333e0
--- /dev/null
+++ b/system/migrations/24-items.sql
@@ -0,0 +1,9 @@
+CREATE TABLE `myaac_items`
+(
+ `id` INT(11) NOT NULL,
+ `article` VARCHAR(5) NOT NULL DEFAULT '',
+ `name` VARCHAR(50) NOT NULL DEFAULT '',
+ `plural` VARCHAR(50) NOT NULL DEFAULT '',
+ `attributes` VARCHAR(500) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
diff --git a/system/migrations/24.php b/system/migrations/24.php
index b7e93819..3fa44ae1 100644
--- a/system/migrations/24.php
+++ b/system/migrations/24.php
@@ -1,3 +1,12 @@
exec('DROP TABLE IF EXISTS `' . TABLE_PREFIX . 'items`;');
\ No newline at end of file
+$up = function () use ($db) {
+ $db->dropTable(TABLE_PREFIX . 'items');
+};
+
+$down = function () use ($db) {
+ $db->exec(file_get_contents(__DIR__ . '/24-items.sql'));
+};
diff --git a/system/migrations/25.php b/system/migrations/25.php
index 9e87c504..6a4b3ad2 100644
--- a/system/migrations/25.php
+++ b/system/migrations/25.php
@@ -1,3 +1,12 @@
exec('ALTER TABLE `' . TABLE_PREFIX . 'monsters` MODIFY `loot` text NOT NULL;');
\ No newline at end of file
+$up = function () use ($db) {
+ $db->modifyColumn(TABLE_PREFIX . 'monsters', 'loot', 'text NOT NULL');
+};
+
+$down = function () {
+ // nothing to do
+};
diff --git a/system/migrations/26.php b/system/migrations/26.php
index 9804b774..ad565754 100644
--- a/system/migrations/26.php
+++ b/system/migrations/26.php
@@ -1,17 +1,32 @@
hasColumn(TABLE_PREFIX . 'spells', 'spell')) {
- $db->exec('ALTER TABLE `' . TABLE_PREFIX . "spells` MODIFY `spell` VARCHAR(255) NOT NULL DEFAULT '';");
-}
+$up = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'spells', 'spell')) {
+ $db->modifyColumn(TABLE_PREFIX . 'spells', 'spell', "VARCHAR(255) NOT NULL DEFAULT ''");
+ }
-if($db->hasColumn(TABLE_PREFIX . 'spells', 'words')) {
- $db->exec('ALTER TABLE `' . TABLE_PREFIX . "spells` MODIFY `words` VARCHAR(255) NOT NULL DEFAULT '';");
-}
+ if ($db->hasColumn(TABLE_PREFIX . 'spells', 'words')) {
+ $db->modifyColumn(TABLE_PREFIX . 'spells', 'words', "VARCHAR(255) NOT NULL DEFAULT ''");
+ }
-if(!$db->hasColumn(TABLE_PREFIX . 'spells', 'conjure_id')) {
- $db->exec('ALTER TABLE `' . TABLE_PREFIX . 'spells` ADD `conjure_id` INT(11) NOT NULL DEFAULT 0 AFTER `soul`;');
-}
+ if (!$db->hasColumn(TABLE_PREFIX . 'spells', 'conjure_id')) {
+ $db->addColumn(TABLE_PREFIX . 'spells', 'conjure_id', 'INT(11) NOT NULL DEFAULT 0 AFTER `soul`');
+ }
-if(!$db->hasColumn(TABLE_PREFIX . 'spells', 'reagent')) {
- $db->exec('ALTER TABLE `' . TABLE_PREFIX . 'spells` ADD `reagent` INT(11) NOT NULL DEFAULT 0 AFTER `conjure_count`;');
-}
+ if (!$db->hasColumn(TABLE_PREFIX . 'spells', 'reagent')) {
+ $db->addColumn(TABLE_PREFIX . 'spells', 'reagent', 'INT(11) NOT NULL DEFAULT 0 AFTER `conjure_count`');
+ }
+};
+
+$down = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'spells', 'conjure_id')) {
+ $db->dropColumn(TABLE_PREFIX . 'spells', 'conjure_id');
+ }
+
+ if ($db->hasColumn(TABLE_PREFIX . 'spells', 'reagent')) {
+ $db->dropColumn(TABLE_PREFIX . 'spells', 'reagent');
+ }
+};
diff --git a/system/migrations/27-commands.html b/system/migrations/27-commands.html
new file mode 100644
index 00000000..accb1c62
--- /dev/null
+++ b/system/migrations/27-commands.html
@@ -0,0 +1,22 @@
+
+
+
+ Words |
+ Description |
+
+
+
+
+ !example |
+ This is just an example |
+
+
+ !buyhouse |
+ Buy house you are looking at |
+
+
+ !aol |
+ Buy AoL |
+
+
+
diff --git a/system/migrations/27-downloads.html b/system/migrations/27-downloads.html
new file mode 100644
index 00000000..ebf401fc
--- /dev/null
+++ b/system/migrations/27-downloads.html
@@ -0,0 +1,6 @@
+
+
+We're using official Tibia Client
{{ config.client / 100 }}
+
Download Tibia Client {{ config.client / 100 }} for Windows HERE.
+
IP Changer:
+
HERE
diff --git a/system/migrations/27.php b/system/migrations/27.php
index 42040092..13c401a1 100644
--- a/system/migrations/27.php
+++ b/system/migrations/27.php
@@ -1,47 +1,46 @@
-
-We're using official Tibia Client
{{ config.client / 100 }}
-
Download Tibia Client {{ config.client / 100 }} for Windows HERE.
-
IP Changer:
-
HERE
-HTML;
-$query = $db->query("SELECT `id` FROM `" . TABLE_PREFIX . "pages` WHERE `name` LIKE " . $db->quote('downloads') . " LIMIT 1;");
-if($query->rowCount() === 0) {
- $db->exec("INSERT INTO `myaac_pages` (`id`, `name`, `title`, `body`, `date`, `player_id`, `php`, `access`, `hide`) VALUES
- (null, 'downloads', 'Downloads', {$db->quote($downloadsPage)}, 0, 1, 0, 0, 0);");
-}
+use MyAAC\Models\Pages;
-$commandsPage = <<
-
-
-Words |
-Description |
-
-
-
-
-!example |
-This is just an example |
-
-
-!buyhouse |
-Buy house you are looking at |
-
-
-!aol |
-Buy AoL |
-
-
-
-HTML;
+$up = function () {
+ $downloadsModel = Pages::where('name', 'downloads')->first();
+ if (!$downloadsModel) {
+ Pages::create([
+ 'name' => 'downloads',
+ 'title' => 'Downloads',
+ 'body' => file_get_contents(__DIR__ . '/27-downloads.html'),
+ 'date' => time(),
+ 'player_id' => 1,
+ 'php' => 0,
+ 'access' => 0,
+ 'hide' => 0,
+ ]);
+ }
-$query = $db->query("SELECT `id` FROM `" . TABLE_PREFIX . "pages` WHERE `name` LIKE " . $db->quote('commands') . " LIMIT 1;");
-if($query->rowCount() === 0) {
- $db->exec("INSERT INTO `myaac_pages` (`id`, `name`, `title`, `body`, `date`, `player_id`, `php`, `access`, `hide`) VALUES
-(null, 'commands', 'Commands', {$db->quote($commandsPage)}, 0, 1, 0, 0, 0);");
-}
+ $commandsModel = Pages::where('name', 'commands')->first();
+ if (!$commandsModel) {
+ Pages::create([
+ 'name' => 'commands',
+ 'title' => 'Commands',
+ 'body' => file_get_contents(__DIR__ . '/27-commands.html'),
+ 'date' => time(),
+ 'player_id' => 1,
+ 'php' => 0,
+ 'access' => 0,
+ 'hide' => 0,
+ ]);
+ }
+};
+
+$down = function () {
+ $downloadsModel = Pages::where('name', 'downloads')->first();
+ if ($downloadsModel) {
+ $downloadsModel->delete();
+ }
+
+ $commandsModel = Pages::where('name', 'commands')->first();
+ if ($commandsModel) {
+ $commandsModel->delete();
+ }
+};
diff --git a/system/migrations/28-hooks.sql b/system/migrations/28-hooks.sql
new file mode 100644
index 00000000..ff1a228d
--- /dev/null
+++ b/system/migrations/28-hooks.sql
@@ -0,0 +1,10 @@
+CREATE TABLE `myaac_hooks`
+(
+ `id` INT(11) NOT NULL AUTO_INCREMENT,
+ `name` VARCHAR(30) NOT NULL DEFAULT '',
+ `type` INT(2) NOT NULL DEFAULT 0,
+ `file` VARCHAR(100) NOT NULL,
+ `ordering` INT(11) NOT NULL DEFAULT 0,
+ `enabled` INT(1) NOT NULL DEFAULT 1,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
diff --git a/system/migrations/28.php b/system/migrations/28.php
index d06487c8..9df8dedc 100644
--- a/system/migrations/28.php
+++ b/system/migrations/28.php
@@ -1,10 +1,25 @@
exec('DROP TABLE IF EXISTS `' . TABLE_PREFIX . 'hooks`;');
+$up = function () use ($db) {
+ $db->dropTable(TABLE_PREFIX . 'hooks');
+
+ $cache = Cache::getInstance();
+ if($cache->enabled()) {
+ $cache->delete('hooks');
+ }
+};
+
+$down = function () use ($db) {
+ $db->exec(file_get_contents(__DIR__ . '/28-hooks.sql'));
+
+ $cache = Cache::getInstance();
+ if($cache->enabled()) {
+ $cache->delete('hooks');
+ }
+};
-$cache = Cache::getInstance();
-if($cache->enabled()) {
- $cache->delete('hooks');
-}
diff --git a/system/migrations/29.php b/system/migrations/29.php
index 79e3d81d..e9c1ec7f 100644
--- a/system/migrations/29.php
+++ b/system/migrations/29.php
@@ -1,5 +1,16 @@
hasColumn(TABLE_PREFIX . 'pages', 'enable_tinymce')) {
- $db->exec('ALTER TABLE `' . TABLE_PREFIX . 'pages` ADD `enable_tinymce` TINYINT(1) NOT NULL DEFAULT 1 COMMENT \'1 - enabled, 0 - disabled\' AFTER `php`;');
-}
+$up = function () use ($db) {
+ if (!$db->hasColumn(TABLE_PREFIX . 'pages', 'enable_tinymce')) {
+ $db->addColumn(TABLE_PREFIX . 'pages', 'enable_tinymce', "TINYINT(1) NOT NULL DEFAULT 1 COMMENT '1 - enabled, 0 - disabled' AFTER `php`");
+ }
+};
+
+$down = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'pages', 'enable_tinymce')) {
+ $db->dropColumn(TABLE_PREFIX . 'pages', 'enable_tinymce');
+ }
+};
diff --git a/system/migrations/3.php b/system/migrations/3.php
index 76c0acc8..4bb21872 100644
--- a/system/migrations/3.php
+++ b/system/migrations/3.php
@@ -1,3 +1,15 @@
query("ALTER TABLE `" . TABLE_PREFIX . "account_actions` ADD `ipv6` BINARY(16) NOT NULL DEFAULT 0;");
-?>
\ No newline at end of file
+/**
+ * @var OTS_DB_MySQL $db
+ */
+
+$up = function () use ($db) {
+ if (!$db->hasColumn(TABLE_PREFIX . 'account_actions', 'ipv6')) {
+ $db->addColumn(TABLE_PREFIX . 'account_actions', 'ipv6', "BINARY(16) NOT NULL DEFAULT 0");
+ }
+};
+
+$down = function () use ($db) {
+ // we don't want data loss
+ //$db->dropColumn(TABLE_PREFIX . 'account_actions', 'ipv6');
+};
diff --git a/system/migrations/30-rules.txt b/system/migrations/30-rules.txt
new file mode 100644
index 00000000..2b226230
--- /dev/null
+++ b/system/migrations/30-rules.txt
@@ -0,0 +1,25 @@
+1. Names
+a) Names which contain insulting (e.g. "Bastard"), racist (e.g. "Nigger"), extremely right-wing (e.g. "Hitler"), sexist (e.g. "Bitch") or offensive (e.g. "Copkiller") language.
+b) Names containing parts of sentences (e.g. "Mike returns"), nonsensical combinations of letters (e.g. "Fgfshdsfg") or invalid formattings (e.g. "Thegreatknight").
+c) Names that obviously do not describe a person (e.g. "Christmastree", "Matrix"), names of real life celebrities (e.g. "Britney Spears"), names that refer to real countries (e.g. "Swedish Druid"), names which were created to fake other players' identities (e.g. "Arieswer" instead of "Arieswar") or official positions (e.g. "System Admin").
+
+2. Cheating
+a) Exploiting obvious errors of the game ("bugs"), for instance to duplicate items. If you find an error you must report it to CipSoft immediately.
+b) Intentional abuse of weaknesses in the gameplay, for example arranging objects or players in a way that other players cannot move them.
+c) Using tools to automatically perform or repeat certain actions without any interaction by the player ("macros").
+d) Manipulating the client program or using additional software to play the game.
+e) Trying to steal other players\' account data ("hacking").
+f) Playing on more than one account at the same time ("multi-clienting").
+g) Offering account data to other players or accepting other players' account data ("account-trading/sharing").
+
+3. Gamemasters
+a) Threatening a gamemaster because of his or her actions or position as a gamemaster.
+b) Pretending to be a gamemaster or to have influence on the decisions of a gamemaster.
+c) Intentionally giving wrong or misleading information to a gamemaster concerning his or her investigations or making false reports about rule violations.
+
+4. Player Killing
+a) Excessive killing of characters who are not marked with a "skull" on worlds which are not PvP-enforced. Please note that killing marked characters is not a reason for a banishment.
+
+A violation of the Tibia Rules may lead to temporary banishment of characters and accounts. In severe cases removal or modification of character skills, attributes and belongings, as well as the permanent removal of accounts without any compensation may be considered. The sanction is based on the seriousness of the rule violation and the previous record of the player. It is determined by the gamemaster imposing the banishment.
+
+These rules may be changed at any time. All changes will be announced on the official website.
diff --git a/system/migrations/30.php b/system/migrations/30.php
index 3d919597..be99aebe 100644
--- a/system/migrations/30.php
+++ b/system/migrations/30.php
@@ -1,31 +1,27 @@
query("SELECT `id` FROM `" . TABLE_PREFIX . "pages` WHERE `name` LIKE " . $db->quote('rules_on_the_page') . " LIMIT 1;");
-if($query->rowCount() === 0) {
- $db->exec("INSERT INTO `myaac_pages` (`id`, `name`, `title`, `body`, `date`, `player_id`, `php`, `enable_tinymce`, `access`, `hide`) VALUES
- (null, 'rules_on_the_page', 'Rules', '1. Names
-a) Names which contain insulting (e.g. \"Bastard\"), racist (e.g. \"Nigger\"), extremely right-wing (e.g. \"Hitler\"), sexist (e.g. \"Bitch\") or offensive (e.g. \"Copkiller\") language.
-b) Names containing parts of sentences (e.g. \"Mike returns\"), nonsensical combinations of letters (e.g. \"Fgfshdsfg\") or invalid formattings (e.g. \"Thegreatknight\").
-c) Names that obviously do not describe a person (e.g. \"Christmastree\", \"Matrix\"), names of real life celebrities (e.g. \"Britney Spears\"), names that refer to real countries (e.g. \"Swedish Druid\"), names which were created to fake other players\' identities (e.g. \"Arieswer\" instead of \"Arieswar\") or official positions (e.g. \"System Admin\").
+use MyAAC\Models\Pages;
-2. Cheating
-a) Exploiting obvious errors of the game (\"bugs\"), for instance to duplicate items. If you find an error you must report it to CipSoft immediately.
-b) Intentional abuse of weaknesses in the gameplay, for example arranging objects or players in a way that other players cannot move them.
-c) Using tools to automatically perform or repeat certain actions without any interaction by the player (\"macros\").
-d) Manipulating the client program or using additional software to play the game.
-e) Trying to steal other players\' account data (\"hacking\").
-f) Playing on more than one account at the same time (\"multi-clienting\").
-g) Offering account data to other players or accepting other players\' account data (\"account-trading/sharing\").
+$up = function () {
+ $rulesOnPage = Pages::where('name', 'rules_on_the_page')->first();
+ if (!$rulesOnPage) {
+ Pages::create([
+ 'name' => 'downloads',
+ 'title' => 'Rules',
+ 'body' => file_get_contents(__DIR__ . '/30-rules.txt'),
+ 'date' => time(),
+ 'player_id' => 1,
+ 'php' => 0,
+ 'enable_tinymce' => 0,
+ 'access' => 0,
+ 'hide' => 0,
+ ]);
+ }
+};
-3. Gamemasters
-a) Threatening a gamemaster because of his or her actions or position as a gamemaster.
-b) Pretending to be a gamemaster or to have influence on the decisions of a gamemaster.
-c) Intentionally giving wrong or misleading information to a gamemaster concerning his or her investigations or making false reports about rule violations.
-
-4. Player Killing
-a) Excessive killing of characters who are not marked with a \"skull\" on worlds which are not PvP-enforced. Please note that killing marked characters is not a reason for a banishment.
-
-A violation of the Tibia Rules may lead to temporary banishment of characters and accounts. In severe cases removal or modification of character skills, attributes and belongings, as well as the permanent removal of accounts without any compensation may be considered. The sanction is based on the seriousness of the rule violation and the previous record of the player. It is determined by the gamemaster imposing the banishment.
-
-These rules may be changed at any time. All changes will be announced on the official website.', 0, 1, 0, 0, 0, 0);");
-}
+$down = function () {
+ $rulesOnPage = Pages::where('name', 'rules_on_the_page')->first();
+ if ($rulesOnPage) {
+ Pages::where('name', 'rules_on_the_page')->delete();
+ }
+};
diff --git a/system/migrations/31.php b/system/migrations/31.php
index d4d8162c..dc8f342d 100644
--- a/system/migrations/31.php
+++ b/system/migrations/31.php
@@ -1,118 +1,121 @@
hasColumn(TABLE_PREFIX . 'monsters', 'elements')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `elements` TEXT NOT NULL AFTER `immunities`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'elements', "TEXT NOT NULL AFTER `immunities`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'pushable')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `pushable` TINYINT(1) NOT NULL DEFAULT '0' AFTER `convinceable`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'pushable', "TINYINT(1) NOT NULL DEFAULT '0' AFTER `convinceable`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'canpushitems')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `canpushitems` TINYINT(1) NOT NULL DEFAULT '0' AFTER `pushable`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'canpushitems', "TINYINT(1) NOT NULL DEFAULT '0' AFTER `pushable`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'canpushcreatures')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `canpushcreatures` TINYINT(1) NOT NULL DEFAULT '0' AFTER `canpushitems`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'canpushcreatures', "TINYINT(1) NOT NULL DEFAULT '0' AFTER `canpushitems`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'canwalkonenergy')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `canwalkonenergy` TINYINT(1) NOT NULL DEFAULT '0' AFTER `canpushitems`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'canwalkonenergy', "TINYINT(1) NOT NULL DEFAULT '0' AFTER `canpushitems`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'canwalkonpoison')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `canwalkonpoison` TINYINT(1) NOT NULL DEFAULT '0' AFTER `canwalkonenergy`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'canwalkonpoison', "TINYINT(1) NOT NULL DEFAULT '0' AFTER `canwalkonenergy`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'canwalkonfire')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `canwalkonfire` TINYINT(1) NOT NULL DEFAULT '0' AFTER `canwalkonpoison`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'canwalkonfire', "TINYINT(1) NOT NULL DEFAULT '0' AFTER `canwalkonpoison`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'runonhealth')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `runonhealth` TINYINT(1) NOT NULL DEFAULT '0' AFTER `canwalkonfire`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'runonhealth', "TINYINT(1) NOT NULL DEFAULT '0' AFTER `canwalkonfire`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'hostile')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `hostile` TINYINT(1) NOT NULL DEFAULT '0' AFTER `runonhealth`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'hostile', "TINYINT(1) NOT NULL DEFAULT '0' AFTER `runonhealth`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'attackable')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `attackable` TINYINT(1) NOT NULL DEFAULT '0' AFTER `hostile`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'attackable', "TINYINT(1) NOT NULL DEFAULT '0' AFTER `hostile`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'rewardboss')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `rewardboss` TINYINT(1) NOT NULL DEFAULT '0' AFTER `attackable`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'rewardboss', "TINYINT(1) TINYINT(1) NOT NULL DEFAULT '0' AFTER `attackable`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'defense')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `defense` INT(11) NOT NULL DEFAULT '0' AFTER `rewardboss`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'defense', "INT(11) NOT NULL DEFAULT '0' AFTER `rewardboss`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'armor')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `armor` INT(11) NOT NULL DEFAULT '0' AFTER `defense`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'armor', "INT(11) NOT NULL DEFAULT '0' AFTER `defense`");
}
if(!$db->hasColumn(TABLE_PREFIX . 'monsters', 'summons')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `summons` TEXT NOT NULL AFTER `loot`;");
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'summons', "TEXT NOT NULL AFTER `loot`");
}
};
$down = function () use ($db) {
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'elements')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `elements`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'elements');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'pushable')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `pushable`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'pushable');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'canpushitems')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `canpushitems`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'canpushitems');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'canpushcreatures')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `canpushcreatures`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'canpushcreatures');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'canwalkonenergy')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `canwalkonenergy`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'canwalkonenergy');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'canwalkonpoison')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `canwalkonpoison`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'canwalkonpoison');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'canwalkonfire')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `canwalkonfire`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'canwalkonfire');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'runonhealth')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `runonhealth`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'runonhealth');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'hostile')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `hostile`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'hostile');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'attackable')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `attackable`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'attackable');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'rewardboss')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `rewardboss`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'rewardboss');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'defense')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `defense`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'defense');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'armor')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `armor`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'armor');
}
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'summons')) {
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `summons`;");
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'summons');
}
};
diff --git a/system/migrations/32.php b/system/migrations/32.php
index 0fb1238a..63f7b757 100644
--- a/system/migrations/32.php
+++ b/system/migrations/32.php
@@ -1,8 +1,12 @@
exec('ALTER TABLE `' . TABLE_PREFIX . "visitors` MODIFY `page` VARCHAR(2048) NOT NULL;");
+ $db->modifyColumn(TABLE_PREFIX . 'visitors', 'page', 'VARCHAR(2048) NOT NULL');
};
$down = function () {
diff --git a/system/migrations/33.php b/system/migrations/33.php
index cbe7a410..6eef23a9 100644
--- a/system/migrations/33.php
+++ b/system/migrations/33.php
@@ -1,12 +1,16 @@
exec('ALTER TABLE `' . TABLE_PREFIX . "visitors` MODIFY `ip` VARCHAR(45) NOT NULL;");
+ $db->modifyColumn(TABLE_PREFIX . 'visitors', 'ip', 'VARCHAR(15) NOT NULL');
};
-$down = function () {
+$down = function () use ($db) {
// nothing to be done, as we have just extended the size of a column
};
diff --git a/system/migrations/34.php b/system/migrations/34.php
index 358b5cfc..702e3a65 100644
--- a/system/migrations/34.php
+++ b/system/migrations/34.php
@@ -1,10 +1,18 @@
exec('ALTER TABLE `' . TABLE_PREFIX . "visitors` ADD `user_agent` VARCHAR(255) NOT NULL DEFAULT '';");
+ if (!$db->hasColumn(TABLE_PREFIX . 'visitors', 'user_agent')) {
+ $db->addColumn(TABLE_PREFIX . 'visitors', 'user_agent', "VARCHAR(255) NOT NULL DEFAULT ''");
+ }
};
$down = function () use ($db) {
- $db->exec('ALTER TABLE `' . TABLE_PREFIX . "monsters` DROP COLUMN `user_agent`;");
+ if ($db->hasColumn(TABLE_PREFIX . 'visitors', 'user_agent')) {
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'user_agent');
+ }
};
diff --git a/system/migrations/35.php b/system/migrations/35.php
index 6579f373..1baf68a7 100644
--- a/system/migrations/35.php
+++ b/system/migrations/35.php
@@ -1,10 +1,17 @@
exec('ALTER TABLE `' . TABLE_PREFIX . "monsters` ADD `look` VARCHAR(255) NOT NULL DEFAULT '' AFTER `health`;");
+ if (!$db->hasColumn(TABLE_PREFIX . 'monsters', 'look')) {
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'look', "VARCHAR(255) NOT NULL DEFAULT '' AFTER `health`");
+ }
};
$down = function () use ($db) {
- $db->exec('ALTER TABLE `' . TABLE_PREFIX . "monsters` DROP COLUMN `look`;");
+ if ($db->hasColumn(TABLE_PREFIX . 'monsters', 'look')) {
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'look');
+ }
};
diff --git a/system/migrations/36-settings.sql b/system/migrations/36-settings.sql
new file mode 100644
index 00000000..eded157b
--- /dev/null
+++ b/system/migrations/36-settings.sql
@@ -0,0 +1,9 @@
+CREATE TABLE `myaac_settings`
+(
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` VARCHAR(255) NOT NULL DEFAULT '',
+ `key` VARCHAR(255) NOT NULL DEFAULT '',
+ `value` TEXT NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `key` (`key`)
+) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
diff --git a/system/migrations/36.php b/system/migrations/36.php
index f9899368..15f9eb55 100644
--- a/system/migrations/36.php
+++ b/system/migrations/36.php
@@ -1,20 +1,17 @@
hasTable(TABLE_PREFIX . 'settings')) {
- $db->exec("CREATE TABLE `" . TABLE_PREFIX . "settings`
- (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `name` VARCHAR(255) NOT NULL DEFAULT '',
- `key` VARCHAR(255) NOT NULL DEFAULT '',
- `value` TEXT NOT NULL,
- PRIMARY KEY (`id`),
- KEY `key` (`key`)
- ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;");
+ $db->exec(file_get_contents(__DIR__ . '/36-settings.sql'));
}
};
$down = function () use ($db) {
- $db->exec("DROP TABLE IF EXISTS `" . TABLE_PREFIX . "settings`");
+ if ($db->hasTable(TABLE_PREFIX . 'settings')) {
+ $db->dropTable(TABLE_PREFIX . 'settings');
+ }
};
diff --git a/system/migrations/39.php b/system/migrations/39.php
index 637dca77..dbbdf1fd 100644
--- a/system/migrations/39.php
+++ b/system/migrations/39.php
@@ -1,36 +1,41 @@
hasColumn('players', 'hide')) {
- $db->exec("ALTER TABLE `players` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
+ $db->changeColumn('players', 'hidden', 'hide', $definition);
}
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "changelog` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "faq` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "forum_boards` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "news` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "news_categories` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "pages` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "gallery` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "spells` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
+ $db->changeColumn(TABLE_PREFIX . 'changelog', 'hidden', 'hide', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'faq', 'hidden', 'hide', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'forum_boards', 'hidden', 'hide', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'monsters', 'hidden', 'hide', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'news', 'hidden', 'hide', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'news_categories', 'hidden', 'hide', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'pages', 'hidden', 'hide', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'gallery', 'hidden', 'hide', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'spells', 'hidden', 'hide', $definition);
};
-$down = function () use ($db) {
- if (!$db->hasColumn('players', 'hide')) {
- $db->exec("ALTER TABLE `players` CHANGE `hide` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
+$down = function () use ($db, $definition) {
+ if (!$db->hasColumn('players', 'hidden')) {
+ $db->changeColumn('players', 'hide', 'hidden', $definition);
}
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "changelog` CHANGE `hide` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "faq` CHANGE `hide` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "forum_boards` CHANGE `hide` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` CHANGE `hide` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "news` CHANGE `hide` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "news_categories` CHANGE `hide` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "pages` CHANGE `hide` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "gallery` CHANGE `hide` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
- $db->exec("ALTER TABLE `" . TABLE_PREFIX . "spells` CHANGE `hide` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
+ $db->changeColumn(TABLE_PREFIX . 'changelog', 'hide', 'hidden', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'faq', 'hide', 'hidden', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'forum_boards', 'hide', 'hidden', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'monsters', 'hide', 'hidden', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'news', 'hide', 'hidden', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'news_categories', 'hide', 'hidden', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'pages', 'hide', 'hidden', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'gallery', 'hide', 'hidden', $definition);
+ $db->changeColumn(TABLE_PREFIX . 'spells', 'hide', 'hidden', $definition);
};
diff --git a/system/migrations/4.php b/system/migrations/4.php
index db17feb1..93746eef 100644
--- a/system/migrations/4.php
+++ b/system/migrations/4.php
@@ -1,3 +1,16 @@
hasColumn(TABLE_PREFIX . 'monsters', 'id'))
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `id` int(11) NOT NULL AUTO_INCREMENT primary key FIRST;");
\ No newline at end of file
+/**
+ * @var OTS_DB_MySQL $db
+ */
+
+$up = function () use ($db) {
+ if (!$db->hasColumn(TABLE_PREFIX . 'monsters', 'id')) {
+ $db->addColumn(TABLE_PREFIX . 'monsters', 'id', "int(11) NOT NULL AUTO_INCREMENT primary key FIRST");
+ }
+};
+
+$down = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'monsters', 'id')) {
+ $db->dropColumn(TABLE_PREFIX . 'monsters', 'id');
+ }
+};
diff --git a/system/migrations/5.php b/system/migrations/5.php
index bef48d61..383b86a8 100644
--- a/system/migrations/5.php
+++ b/system/migrations/5.php
@@ -1,4 +1,16 @@
hasColumn(TABLE_PREFIX . 'spells', 'cities'))
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` DROP COLUMN cities;");
-?>
\ No newline at end of file
+/**
+ * @var OTS_DB_MySQL $db
+ */
+
+$up = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'spells', 'cities')) {
+ $db->dropColumn(TABLE_PREFIX . 'spells', 'cities');
+ }
+};
+
+$up = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'spells', 'cities')) {
+ $db->addColumn(TABLE_PREFIX . 'spells', 'cities', 'VARCHAR(32) NOT NULL,');
+ }
+};
diff --git a/system/migrations/6.php b/system/migrations/6.php
index e287d55a..b99671d3 100644
--- a/system/migrations/6.php
+++ b/system/migrations/6.php
@@ -1,3 +1,16 @@
hasColumn(TABLE_PREFIX . 'hooks', 'enabled'))
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "hooks` ADD `enabled` INT(1) NOT NULL DEFAULT 1;");
\ No newline at end of file
+/**
+ * @var OTS_DB_MySQL $db
+ */
+
+$up = function () use ($db) {
+ if (!$db->hasColumn(TABLE_PREFIX . 'hooks', 'enabled')) {
+ $db->addColumn(TABLE_PREFIX . 'hooks', 'enabled', 'INT(1) NOT NULL DEFAULT 1');
+ }
+};
+
+$down = function () use ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'hooks', 'enabled')) {
+ $db->dropColumn(TABLE_PREFIX . 'hooks', 'enabled');
+ }
+};
diff --git a/system/migrations/7.php b/system/migrations/7.php
index a34f5a22..4c948519 100644
--- a/system/migrations/7.php
+++ b/system/migrations/7.php
@@ -1,4 +1,16 @@
hasColumn(TABLE_PREFIX . 'screenshots', 'name'))
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "screenshots` DROP `name`;");
-?>
\ No newline at end of file
+/**
+ * @var OTS_DB_MySQL $db
+ */
+
+$up = function ($db) {
+ if ($db->hasColumn(TABLE_PREFIX . 'screenshots', 'name')) {
+ $db->dropColumn(TABLE_PREFIX . 'screenshots', 'name');
+ }
+};
+
+$up = function ($db) {
+ if (!$db->hasColumn(TABLE_PREFIX . 'screenshots', 'name')) {
+ $db->addColumn(TABLE_PREFIX . 'screenshots', 'name', 'VARCHAR(30) NOT NULL');
+ }
+};
diff --git a/system/migrations/8.php b/system/migrations/8.php
index 4785e23b..a192b273 100644
--- a/system/migrations/8.php
+++ b/system/migrations/8.php
@@ -1,17 +1,31 @@
hasTable(TABLE_PREFIX . 'forum_sections'))
- $db->query('RENAME TABLE `' . TABLE_PREFIX . 'forum_sections` TO `' . TABLE_PREFIX . 'forum_boards`;');
-
+/**
+ * @var OTS_DB_MySQL $db
+ */
+
+$up = function ($db) {
+ if ($db->hasTable(TABLE_PREFIX . 'forum_sections')) {
+ $db->renameTable(TABLE_PREFIX . 'forum_sections', TABLE_PREFIX . 'forum_boards');
+ }
+
$query = $db->query('SELECT `id` FROM `' . TABLE_PREFIX . 'forum_boards` WHERE `ordering` > 0;');
- if($query->rowCount() == 0) {
- $boards = array(
+ if ($query->rowCount() == 0) {
+ $boards = [
'News',
'Trade',
'Quests',
'Pictures',
'Bug Report'
- );
-
- foreach($boards as $id => $board)
+ ];
+
+ foreach ($boards as $id => $board) {
$db->query('UPDATE `' . TABLE_PREFIX . 'forum_boards` SET `ordering` = ' . $id . ' WHERE `name` = ' . $db->quote($board));
- }
\ No newline at end of file
+ }
+ }
+};
+
+$down = function () use ($db) {
+ if ($db->hasTable(TABLE_PREFIX . 'forum_boards')) {
+ $db->renameTable(TABLE_PREFIX . 'forum_boards', TABLE_PREFIX . 'forum_sections');
+ }
+};
diff --git a/system/migrations/9.php b/system/migrations/9.php
index d4869c10..c0db4971 100644
--- a/system/migrations/9.php
+++ b/system/migrations/9.php
@@ -1,9 +1,18 @@
query("ALTER TABLE `" . TABLE_PREFIX . "bugtracker` MODIFY `type` INT(11) NOT NULL DEFAULT 0;");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "bugtracker` MODIFY `status` INT(11) NOT NULL DEFAULT 0;");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "bugtracker` MODIFY `id` INT(11) NOT NULL DEFAULT 0;");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "bugtracker` MODIFY `subject` VARCHAR(255) NOT NULL DEFAULT '';");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "bugtracker` MODIFY `reply` INT(11) NOT NULL DEFAULT 0;");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "bugtracker` MODIFY `who` INT(11) NOT NULL DEFAULT 0;");
- $db->query("ALTER TABLE `" . TABLE_PREFIX . "bugtracker` MODIFY `tag` INT(11) NOT NULL DEFAULT 0;");
-?>
\ No newline at end of file
+/**
+ * @var OTS_DB_MySQL $db
+ */
+
+$up = function () use ($db) {
+ $db->modifyColumn(TABLE_PREFIX . 'bugtracker', 'type', "INT(11) NOT NULL DEFAULT 0");
+ $db->modifyColumn(TABLE_PREFIX . 'bugtracker', 'status', "INT(11) NOT NULL DEFAULT 0");
+ $db->modifyColumn(TABLE_PREFIX . 'bugtracker', 'id', "INT(11) NOT NULL DEFAULT 0");
+ $db->modifyColumn(TABLE_PREFIX . 'bugtracker', 'subject', "VARCHAR(255) NOT NULL DEFAULT ''");
+ $db->modifyColumn(TABLE_PREFIX . 'bugtracker', 'reply', "INT(11) NOT NULL DEFAULT 0");
+ $db->modifyColumn(TABLE_PREFIX . 'bugtracker', 'who', "INT(11) NOT NULL DEFAULT 0");
+ $db->modifyColumn(TABLE_PREFIX . 'bugtracker', 'tag', "INT(11) NOT NULL DEFAULT 0");
+};
+
+$down = function () {
+ // nothing to do here
+};