From 82a533d88c8a342076891d132b4b409ed9a1fe72 Mon Sep 17 00:00:00 2001 From: slawkens Date: Fri, 18 Apr 2025 18:12:56 +0200 Subject: [PATCH 01/18] Add $db->hasTableAndColumns($table, $columns), credits to @opentibiabr Team --- system/libs/pot/OTS_DB_MySQL.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/system/libs/pot/OTS_DB_MySQL.php b/system/libs/pot/OTS_DB_MySQL.php index 89e8dd0d..baa38c76 100644 --- a/system/libs/pot/OTS_DB_MySQL.php +++ b/system/libs/pot/OTS_DB_MySQL.php @@ -234,6 +234,19 @@ class OTS_DB_MySQL extends OTS_Base_DB return $this->hasTable($table) && ($this->has_column_cache[$table . '.' . $column] = count($this->query('SHOW COLUMNS FROM `' . $table . "` LIKE '" . $column . "'")->fetchAll()) > 0); } + public function hasTableAndColumns(string $table, array $columns = []): bool + { + if (!$this->hasTable($table)) return false; + + foreach ($columns as $column) { + if (!$this->hasColumn($table, $column)) { + return false; + } + } + + return true; + } + public function revalidateCache() { foreach($this->has_table_cache as $key => $value) { $this->hasTableInternal($key); From 86cb5821f61e42bb5bb7e849e2609d58ddde26eb Mon Sep 17 00:00:00 2001 From: slawkens Date: Fri, 18 Apr 2025 19:42:33 +0200 Subject: [PATCH 02/18] README.md corrections * Add links to docs & faq * add info about 2.x dev version * fix some grammar typos --- README.md | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 8fab33a5..767911d1 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,19 @@ Official website: https://my-aac.org [![OpenTibia Discord](https://img.shields.io/discord/288399552581468162)](https://discord.gg/2J39Wus) [![Closed Issues](https://img.shields.io/github/issues-closed-raw/slawkens/myaac)](https://github.com/slawkens/myaac/issues?q=is%3Aissue+is%3Aclosed) -| Version | Status | Branch | Requirements | -|:--------|:-----------------------|:-------|:---------------| -| **1.x** | **Active development** | master | **PHP >= 8.1** | -| 0.9.x | Not developed anymore | 0.9 | PHP >= 7.2.5 | -| 0.8.x | Active support | 0.8 | PHP >= 7.2.5 | -| 0.7.x | End Of Life | 0.7 | PHP >= 5.3.3 | +| Version | Status | Branch | Requirements | +|:--------|:-----------------------|:--------|:---------------| +| 2.x | Experimental features | develop | PHP >= 8.1 | +| **1.x** | **Active development** | main | **PHP >= 8.1** | +| 0.9.x | Not developed anymore | 0.9 | PHP >= 7.2.5 | +| 0.8.x | Active support | 0.8 | PHP >= 7.2.5 | +| 0.7.x | End Of Life | 0.7 | PHP >= 5.3.3 | + +The recommended version to install is 1.x, which can be found at releases page - [https://github.com/slawkens/myaac/releases](https://github.com/slawkens/myaac/releases). + +### Documentation +* [docs.my-aac.org](https://docs.my-aac.org) +* [my-aac.org - FAQ](https://my-aac.org/faqs/) ### Requirements @@ -47,23 +54,23 @@ Official website: https://my-aac.org ### Configuration -Check *config.php* to get more informations. (Notice: MyAAC 1.0+ doesn't use config.php anymore, it has been moved to Admin Panel - Settings page). +Check *config.php* to get more information. (Notice: MyAAC 1.0+ doesn't use config.php anymore, it has been moved to Admin Panel - Settings page). Use *config.local.php* for your local configuration changes. ### Branches This repository follows the Git Flow Workflow. -Cheatsheet: [Git-Flow-Cheetsheet](https://danielkummer.github.io/git-flow-cheatsheet) +Cheatsheet: [Git-Flow-Cheatsheet](https://danielkummer.github.io/git-flow-cheatsheet) That means, we use: -* master branch, for current stable release +* main branch, for current stable release * develop branch, for development version (next release) * feature branches, for features etc. ### Known Problems -- Some compatibility issues with some exotical distibutions. +- Some compatibility issues with some exotic distributions. ### Contributing @@ -77,7 +84,7 @@ Look: [Contributing](https://github.com/otsoft/myaac/wiki/Contributing) in our w ### Other Notes -If you have a great idea or want contribute to the project - visit our website at https://www.my-aac.org +If you have a great idea or want to contribute to the project - visit our website at https://www.my-aac.org ## Project supported by JetBrains From e0043b13009900e5ba1f017bb290c61d31e5a541 Mon Sep 17 00:00:00 2001 From: slawkens Date: Fri, 18 Apr 2025 20:44:11 +0200 Subject: [PATCH 03/18] Fix warning --- install/includes/config.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install/includes/config.php b/install/includes/config.php index 5d9ae07a..bc6759b3 100644 --- a/install/includes/config.php +++ b/install/includes/config.php @@ -26,6 +26,9 @@ if(!isset($error) || !$error) { $config['database_type'] = $config['lua']['database_type']; else if(isset($config['lua']['sql_type'])) // otserv $config['database_type'] = $config['lua']['sql_type']; + else { + $config['database_type'] = ''; + } $config['database_type'] = strtolower($config['database_type']); if(empty($config['database_type'])) { From 8cf340907797e2b9ed8279502345fbe4f7b0346c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o?= <107767789+JoaozinhoBrasil@users.noreply.github.com> Date: Fri, 18 Apr 2025 18:17:35 -0300 Subject: [PATCH 04/18] SQL Syntax Standardization (#298) * Update schema.sql * Update schema.sql --- install/includes/schema.sql | 302 ++++++++++++++++++------------------ 1 file changed, 151 insertions(+), 151 deletions(-) diff --git a/install/includes/schema.sql b/install/includes/schema.sql index 21409c00..36f5eb31 100644 --- a/install/includes/schema.sql +++ b/install/includes/schema.sql @@ -2,34 +2,34 @@ SET @myaac_database_version = 43; CREATE TABLE `myaac_account_actions` ( - `account_id` INT(11) NOT NULL, - `ip` INT(10) UNSIGNED NOT NULL DEFAULT 0, - `ipv6` BINARY(16) NOT NULL DEFAULT 0, - `date` INT(11) NOT NULL DEFAULT 0, - `action` VARCHAR(255) NOT NULL DEFAULT '', + `account_id` int NOT NULL, + `ip` int unsigned NOT NULL DEFAULT 0, + `ipv6` binary(16) NOT NULL DEFAULT 0, + `date` int NOT NULL DEFAULT 0, + `action` varchar(255) NOT NULL DEFAULT '', KEY (`account_id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; 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, + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL DEFAULT '', + `page` varchar(255) NOT NULL DEFAULT '', + `ordering` int NOT NULL DEFAULT 0, + `flags` int NOT NULL DEFAULT 0, + `enabled` int NOT NULL DEFAULT 1, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; CREATE TABLE `myaac_changelog` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `body` VARCHAR(500) NOT NULL DEFAULT '', - `type` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - added, 2 - removed, 3 - changed, 4 - fixed', - `where` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - server, 2 - site', - `date` INT(11) NOT NULL DEFAULT 0, - `player_id` INT(11) NOT NULL DEFAULT 0, - `hide` TINYINT(1) NOT NULL DEFAULT 0, + `id` int NOT NULL AUTO_INCREMENT, + `body` varchar(500) NOT NULL DEFAULT '', + `type` tinyint NOT NULL DEFAULT 0 COMMENT '1 - added, 2 - removed, 3 - changed, 4 - fixed', + `where` tinyint NOT NULL DEFAULT 0 COMMENT '1 - server, 2 - site', + `date` int NOT NULL DEFAULT 0, + `player_id` int NOT NULL DEFAULT 0, + `hide` tinyint NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; @@ -37,9 +37,9 @@ INSERT INTO `myaac_changelog` (`id`, `type`, `where`, `date`, `body`, `hide`) VA CREATE TABLE `myaac_config` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `name` VARCHAR(30) NOT NULL, - `value` VARCHAR(1000) NOT NULL, + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(30) NOT NULL, + `value` varchar(1000) NOT NULL, PRIMARY KEY (`id`), UNIQUE (`name`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; @@ -48,24 +48,24 @@ INSERT INTO `myaac_config` (`name`, `value`) VALUES ('database_version', @myaac_ CREATE TABLE `myaac_faq` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `question` VARCHAR(255) NOT NULL DEFAULT '', - `answer` VARCHAR(1020) NOT NULL DEFAULT '', - `ordering` INT(11) NOT NULL DEFAULT 0, - `hide` TINYINT(1) NOT NULL DEFAULT 0, + `id` int NOT NULL AUTO_INCREMENT, + `question` varchar(255) NOT NULL DEFAULT '', + `answer` varchar(1020) NOT NULL DEFAULT '', + `ordering` int NOT NULL DEFAULT 0, + `hide` tinyint NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; CREATE TABLE `myaac_forum_boards` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `name` VARCHAR(32) NOT NULL, - `description` VARCHAR(255) NOT NULL DEFAULT '', - `ordering` INT(11) NOT NULL DEFAULT 0, - `guild` INT(11) NOT NULL DEFAULT 0, - `access` INT(11) NOT NULL DEFAULT 0, - `closed` TINYINT(1) NOT NULL DEFAULT 0, - `hide` TINYINT(1) NOT NULL DEFAULT 0, + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(32) NOT NULL, + `description` varchar(255) NOT NULL DEFAULT '', + `ordering` int NOT NULL DEFAULT 0, + `guild` int NOT NULL DEFAULT 0, + `access` int NOT NULL DEFAULT 0, + `closed` tinyint NOT NULL DEFAULT 0, + `hide` tinyint NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`, `closed`) VALUES (NULL, 'News', 'News commenting', 0, 1); @@ -76,100 +76,100 @@ INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUE CREATE TABLE `myaac_forum` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `first_post` int(11) NOT NULL default '0', - `last_post` int(11) NOT NULL default '0', - `section` int(3) NOT NULL default '0', - `replies` int(20) NOT NULL default '0', - `views` int(20) NOT NULL default '0', - `author_aid` int(20) NOT NULL default '0', - `author_guid` int(20) NOT NULL default '0', + `id` int NOT NULL AUTO_INCREMENT, + `first_post` int NOT NULL DEFAULT 0, + `last_post` int NOT NULL DEFAULT 0, + `section` int NOT NULL DEFAULT 0, + `replies` int NOT NULL DEFAULT 0, + `views` int NOT NULL DEFAULT 0, + `author_aid` int NOT NULL DEFAULT 0, + `author_guid` int NOT NULL DEFAULT 0, `post_text` text NOT NULL, `post_topic` varchar(255) NOT NULL DEFAULT '', - `post_smile` tinyint(1) NOT NULL default '0', - `post_html` tinyint(1) NOT NULL default '0', - `post_date` int(20) NOT NULL default '0', - `last_edit_aid` int(20) NOT NULL default '0', - `edit_date` int(20) NOT NULL default '0', - `post_ip` varchar(45) NOT NULL default '0.0.0.0', - `sticked` tinyint(1) NOT NULL DEFAULT '0', - `closed` tinyint(1) NOT NULL DEFAULT '0', + `post_smile` tinyint NOT NULL DEFAULT 0, + `post_html` tinyint NOT NULL DEFAULT 0, + `post_date` int NOT NULL DEFAULT 0, + `last_edit_aid` int NOT NULL DEFAULT 0, + `edit_date` int NOT NULL DEFAULT 0, + `post_ip` varchar(45) NOT NULL DEFAULT '0.0.0.0', + `sticked` tinyint NOT NULL DEFAULT 0, + `closed` tinyint NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `section` (`section`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; 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, - `blank` TINYINT(1) NOT NULL DEFAULT 0, - `color` VARCHAR(6) NOT NULL DEFAULT '', - `category` INT(11) NOT NULL DEFAULT 1, - `ordering` INT(11) NOT NULL DEFAULT 0, - `enabled` INT(1) NOT NULL DEFAULT 1, + `id` int NOT NULL AUTO_INCREMENT, + `template` varchar(255) NOT NULL, + `name` varchar(255) NOT NULL, + `link` varchar(255) NOT NULL, + `blank` tinyint NOT NULL DEFAULT 0, + `color` varchar(6) NOT NULL DEFAULT '', + `category` int NOT NULL DEFAULT 1, + `ordering` int NOT NULL DEFAULT 0, + `enabled` int NOT NULL DEFAULT 1, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; CREATE TABLE `myaac_monsters` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `hide` tinyint(1) NOT NULL default 0, + `id` int NOT NULL AUTO_INCREMENT, + `hide` tinyint NOT NULL DEFAULT 0, `name` varchar(255) NOT NULL, - `mana` int(11) NOT NULL DEFAULT 0, - `exp` int(11) NOT NULL, - `health` int(11) NOT NULL, - `look` VARCHAR(255) NOT NULL DEFAULT '', - `speed_lvl` int(11) NOT NULL default 1, - `use_haste` tinyint(1) NOT NULL, + `mana` int NOT NULL DEFAULT 0, + `exp` int NOT NULL, + `health` int NOT NULL, + `look` varchar(255) NOT NULL DEFAULT '', + `speed_lvl` int NOT NULL DEFAULT 1, + `use_haste` tinyint NOT NULL, `voices` text NOT NULL, `immunities` varchar(255) NOT NULL, - `elements` TEXT NOT NULL, - `summonable` tinyint(1) NOT NULL, - `convinceable` tinyint(1) NOT NULL, - `pushable` TINYINT(1) NOT NULL DEFAULT '0', - `canpushitems` TINYINT(1) NOT NULL DEFAULT '0', - `canwalkonenergy` TINYINT(1) NOT NULL DEFAULT '0', - `canwalkonpoison` TINYINT(1) NOT NULL DEFAULT '0', - `canwalkonfire` TINYINT(1) NOT NULL DEFAULT '0', - `runonhealth` TINYINT(1) NOT NULL DEFAULT '0', - `hostile` TINYINT(1) NOT NULL DEFAULT '0', - `attackable` TINYINT(1) NOT NULL DEFAULT '0', - `rewardboss` TINYINT(1) NOT NULL DEFAULT '0', - `defense` INT(11) NOT NULL DEFAULT '0', - `armor` INT(11) NOT NULL DEFAULT '0', - `canpushcreatures` TINYINT(1) NOT NULL DEFAULT '0', + `elements` text NOT NULL, + `summonable` tinyint NOT NULL, + `convinceable` tinyint NOT NULL, + `pushable` tinyint NOT NULL DEFAULT 0, + `canpushitems` tinyint NOT NULL DEFAULT 0, + `canwalkonenergy` tinyint NOT NULL DEFAULT 0, + `canwalkonpoison` tinyint NOT NULL DEFAULT 0, + `canwalkonfire` tinyint NOT NULL DEFAULT 0, + `runonhealth` tinyint NOT NULL DEFAULT 0, + `hostile` tinyint NOT NULL DEFAULT 0, + `attackable` tinyint NOT NULL DEFAULT 0, + `rewardboss` tinyint NOT NULL DEFAULT 0, + `defense` int NOT NULL DEFAULT 0, + `armor` int NOT NULL DEFAULT 0, + `canpushcreatures` tinyint NOT NULL DEFAULT 0, `race` varchar(255) NOT NULL, `loot` text NOT NULL, - `summons` TEXT NOT NULL, + `summons` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; CREATE TABLE `myaac_news` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `title` VARCHAR(100) NOT NULL, - `body` TEXT NOT NULL, - `type` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - news, 2 - ticker, 3 - article', - `date` INT(11) NOT NULL DEFAULT 0, - `category` TINYINT(1) NOT NULL DEFAULT 0, - `player_id` INT(11) NOT NULL DEFAULT 0, - `last_modified_by` INT(11) NOT NULL DEFAULT 0, - `last_modified_date` INT(11) NOT NULL DEFAULT 0, - `comments` VARCHAR(50) NOT NULL DEFAULT '', - `article_text` VARCHAR(300) NOT NULL DEFAULT '', - `article_image` VARCHAR(100) NOT NULL DEFAULT '', - `hide` TINYINT(1) NOT NULL DEFAULT 0, + `id` int NOT NULL AUTO_INCREMENT, + `title` varchar(100) NOT NULL, + `body` text NOT NULL, + `type` tinyint NOT NULL DEFAULT 0 COMMENT '1 - news, 2 - ticker, 3 - article', + `date` int NOT NULL DEFAULT 0, + `category` tinyint NOT NULL DEFAULT 0, + `player_id` int NOT NULL DEFAULT 0, + `last_modified_by` int NOT NULL DEFAULT 0, + `last_modified_date` int NOT NULL DEFAULT 0, + `comments` varchar(50) NOT NULL DEFAULT '', + `article_text` varchar(300) NOT NULL DEFAULT '', + `article_image` varchar(100) NOT NULL DEFAULT '', + `hide` tinyint NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; CREATE TABLE `myaac_news_categories` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `name` VARCHAR(50) NOT NULL DEFAULT "", - `description` VARCHAR(50) NOT NULL DEFAULT "", - `icon_id` INT(2) NOT NULL DEFAULT 0, - `hide` TINYINT(1) NOT NULL DEFAULT 0, + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL DEFAULT "", + `description` varchar(50) NOT NULL DEFAULT "", + `icon_id` int NOT NULL DEFAULT 0, + `hide` tinyint NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; @@ -181,39 +181,39 @@ INSERT INTO `myaac_news_categories` (`id`, `icon_id`) VALUES (NULL, 4); CREATE TABLE `myaac_notepad` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `account_id` INT(11) NOT NULL, - /*`name` VARCHAR(30) NOT NULL,*/ - `content` TEXT NOT NULL, - /*`public` TINYINT(1) NOT NULL DEFAULT 0*/ + `id` int NOT NULL AUTO_INCREMENT, + `account_id` int NOT NULL, + /*`name` varchar(30) NOT NULL,*/ + `content` text NOT NULL, + /*`public` tinyint NOT NULL DEFAULT 0*/ PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; CREATE TABLE `myaac_pages` ( `id` INT NOT NULL AUTO_INCREMENT, - `name` VARCHAR(30) NOT NULL, - `title` VARCHAR(30) NOT NULL, - `body` TEXT NOT NULL, - `date` INT(11) NOT NULL DEFAULT 0, - `player_id` INT(11) NOT NULL DEFAULT 0, - `php` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0 - plain html, 1 - php', - `enable_tinymce` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '1 - enabled, 0 - disabled', - `access` TINYINT(2) NOT NULL DEFAULT 0, - `hide` TINYINT(1) NOT NULL DEFAULT 0, + `name` varchar(30) NOT NULL, + `title` varchar(30) NOT NULL, + `body` text NOT NULL, + `date` int NOT NULL DEFAULT 0, + `player_id` int NOT NULL DEFAULT 0, + `php` tinyint NOT NULL DEFAULT 0 COMMENT '0 - plain html, 1 - php', + `enable_tinymce` tinyint NOT NULL DEFAULT 1 COMMENT '1 - enabled, 0 - disabled', + `access` tinyint NOT NULL DEFAULT 0, + `hide` tinyint NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE (`name`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; CREATE TABLE `myaac_gallery` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `comment` VARCHAR(255) NOT NULL DEFAULT '', - `image` VARCHAR(255) NOT NULL, - `thumb` VARCHAR(255) NOT NULL, - `author` VARCHAR(50) NOT NULL DEFAULT '', - `ordering` INT(11) NOT NULL DEFAULT 0, - `hide` TINYINT(1) NOT NULL DEFAULT 0, + `id` int NOT NULL AUTO_INCREMENT, + `comment` varchar(255) NOT NULL DEFAULT '', + `image` varchar(255) NOT NULL, + `thumb` varchar(255) NOT NULL, + `author` varchar(50) NOT NULL DEFAULT '', + `ordering` int NOT NULL DEFAULT 0, + `hide` tinyint NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; @@ -221,51 +221,51 @@ INSERT INTO `myaac_gallery` (`id`, `ordering`, `comment`, `image`, `thumb`, `aut 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, + `id` int 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=utf8mb4; CREATE TABLE `myaac_spells` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `spell` VARCHAR(255) NOT NULL DEFAULT '', - `name` VARCHAR(255) NOT NULL, - `words` VARCHAR(255) NOT NULL DEFAULT '', - `category` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - attack, 2 - healing, 3 - summon, 4 - supply, 5 - support', - `type` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - instant, 2 - conjure, 3 - rune', - `level` INT(11) NOT NULL DEFAULT 0, - `maglevel` INT(11) NOT NULL DEFAULT 0, - `mana` INT(11) NOT NULL DEFAULT 0, - `soul` TINYINT(3) NOT NULL DEFAULT 0, - `conjure_id` INT(11) NOT NULL DEFAULT 0, - `conjure_count` TINYINT(3) NOT NULL DEFAULT 0, - `reagent` INT(11) NOT NULL DEFAULT 0, - `item_id` INT(11) NOT NULL DEFAULT 0, - `premium` TINYINT(1) NOT NULL DEFAULT 0, - `vocations` VARCHAR(100) NOT NULL DEFAULT '', - `hide` TINYINT(1) NOT NULL DEFAULT 0, + `id` int NOT NULL AUTO_INCREMENT, + `spell` varchar(255) NOT NULL DEFAULT '', + `name` varchar(255) NOT NULL, + `words` varchar(255) NOT NULL DEFAULT '', + `category` tinyint NOT NULL DEFAULT 0 COMMENT '1 - attack, 2 - healing, 3 - summon, 4 - supply, 5 - support', + `type` tinyint NOT NULL DEFAULT 0 COMMENT '1 - instant, 2 - conjure, 3 - rune', + `level` int NOT NULL DEFAULT 0, + `maglevel` int NOT NULL DEFAULT 0, + `mana` int NOT NULL DEFAULT 0, + `soul` tinyint NOT NULL DEFAULT 0, + `conjure_id` int NOT NULL DEFAULT 0, + `conjure_count` tinyint NOT NULL DEFAULT 0, + `reagent` int NOT NULL DEFAULT 0, + `item_id` int NOT NULL DEFAULT 0, + `premium` tinyint NOT NULL DEFAULT 0, + `vocations` varchar(100) NOT NULL DEFAULT '', + `hide` tinyint NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE (`name`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; CREATE TABLE `myaac_visitors` ( - `ip` VARCHAR(45) NOT NULL, - `lastvisit` INT(11) NOT NULL DEFAULT 0, - `page` VARCHAR(2048) NOT NULL, - `user_agent` VARCHAR(255) NOT NULL DEFAULT '', + `ip` varchar(45) NOT NULL, + `lastvisit` int NOT NULL DEFAULT 0, + `page` varchar(2048) NOT NULL, + `user_agent` varchar(255) NOT NULL DEFAULT '', UNIQUE (`ip`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; 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 '', + `id` int NOT NULL, + `level` int NOT NULL DEFAULT 0, + `maglevel` int NOT NULL DEFAULT 0, + `vocations` varchar(100) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; From c2bf94fb2370d2009a2eb907f818955132cf8611 Mon Sep 17 00:00:00 2001 From: slawkens Date: Sun, 20 Apr 2025 20:40:10 +0200 Subject: [PATCH 05/18] Fix: display 404 error instead of 500 when page has been removed from filesystem --- system/router.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/system/router.php b/system/router.php index ab9ea966..4f68b127 100644 --- a/system/router.php +++ b/system/router.php @@ -108,6 +108,10 @@ $dispatcher = FastRoute\cachedDispatcher(function (FastRoute\RouteCollector $r) foreach ($routes as $route) { if (!str_contains($route[2], '__redirect__') && !str_contains($route[2], '__database__')) { + if (!is_file(BASE . 'system/pages/' . $route[2])) { + continue; + } + $routesFinal[] = [$route[0], $route[1], 'system/pages/' . $route[2], $route[3] ?? 10000]; } else { From b71555d60d73af2bbc1daa49657bfa42778f2844 Mon Sep 17 00:00:00 2001 From: slawkens Date: Sun, 20 Apr 2025 21:29:22 +0200 Subject: [PATCH 06/18] Update router.php --- system/router.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/system/router.php b/system/router.php index 4f68b127..e0bcc04f 100644 --- a/system/router.php +++ b/system/router.php @@ -89,8 +89,6 @@ if($logged && $account_logged && $account_logged->isLoaded()) { * Routes loading */ $dispatcher = FastRoute\cachedDispatcher(function (FastRoute\RouteCollector $r) { - $routes = require SYSTEM . 'routes.php'; - $routesFinal = []; foreach(getDatabasePages() as $page) { $routesFinal[] = ['*', $page, '__database__/' . $page, 100]; @@ -106,6 +104,7 @@ $dispatcher = FastRoute\cachedDispatcher(function (FastRoute\RouteCollector $r) */ } + $routes = require SYSTEM . 'routes.php'; foreach ($routes as $route) { if (!str_contains($route[2], '__redirect__') && !str_contains($route[2], '__database__')) { if (!is_file(BASE . 'system/pages/' . $route[2])) { From 4e7c894cf21cbaf837e11e320655e948e4caaa9d Mon Sep 17 00:00:00 2001 From: slawkens Date: Sun, 20 Apr 2025 21:29:37 +0200 Subject: [PATCH 07/18] Nothing.. --- admin/pages/plugins.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/pages/plugins.php b/admin/pages/plugins.php index 8e87f75e..db886635 100644 --- a/admin/pages/plugins.php +++ b/admin/pages/plugins.php @@ -17,7 +17,7 @@ csrfProtect(); $use_datatable = true; -if (!getBoolean(setting('core.admin_plugins_manage_enable'))) { +if (!setting('core.admin_plugins_manage_enable')) { warning('Plugin installation and management is disabled in Settings.
If you wish to enable, go to Settings and enable Enable Plugins Manage.'); } else { From 1d0c173e7d000aecbd432800941fc3e38a0e50f2 Mon Sep 17 00:00:00 2001 From: slawkens Date: Sun, 20 Apr 2025 21:30:59 +0200 Subject: [PATCH 08/18] Clear cache on plugin enable/disable, fixes some issues with plugin pages --- system/src/Plugins.php | 1 + 1 file changed, 1 insertion(+) diff --git a/system/src/Plugins.php b/system/src/Plugins.php index 0ee7c36e..f6711a3a 100644 --- a/system/src/Plugins.php +++ b/system/src/Plugins.php @@ -699,6 +699,7 @@ class Plugins { return false; } + clearCache(); return true; } From d0d0af289ddd2b543a878da56b7fa941148a1582 Mon Sep 17 00:00:00 2001 From: slawkens Date: Sun, 20 Apr 2025 21:32:46 +0200 Subject: [PATCH 09/18] Refactor code + use clearCache() instead --- system/src/Plugins.php | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/system/src/Plugins.php b/system/src/Plugins.php index f6711a3a..a0910b01 100644 --- a/system/src/Plugins.php +++ b/system/src/Plugins.php @@ -793,25 +793,19 @@ class Plugins { } } - if($success) { - foreach($plugin_info['uninstall'] as $file) { - if(!deleteDirectory(BASE . $file)) { - self::$warnings[] = 'Cannot delete: ' . $file; - } - } - - $cache = Cache::getInstance(); - if($cache->enabled()) { - $cache->delete('templates'); - $cache->delete('hooks'); - $cache->delete('template_menus'); - } - - return true; + if(!$success) { + $revertEnable(); + return false; } - $revertEnable(); - return false; + foreach($plugin_info['uninstall'] as $file) { + if(!deleteDirectory(BASE . $file)) { + self::$warnings[] = 'Cannot delete: ' . $file; + } + } + + clearCache(); + return true; } public static function is_installed($plugin_name, $version): bool From b618084d50918539d9a70abd97e764137b966067 Mon Sep 17 00:00:00 2001 From: slawkens Date: Mon, 21 Apr 2025 23:43:57 +0200 Subject: [PATCH 10/18] Fix headline.php: change image format to .png cause of black background --- templates/tibiacom/headline.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/tibiacom/headline.php b/templates/tibiacom/headline.php index 4bf3f273..dd85d826 100644 --- a/templates/tibiacom/headline.php +++ b/templates/tibiacom/headline.php @@ -17,7 +17,7 @@ $font = getenv('GDFONTPATH') . DIRECTORY_SEPARATOR . 'martel.ttf'; imagettftext($image, 18, 0, 4, 20, imagecolorallocate($image, 240, 209, 164), $font, $text); // header mime type -header('Content-type: image/gif'); +header('Content-type: image/png'); // output image to browser -imagegif($image); +imagepng($image); From d47195a7878095336f9c9edc6f96244257f67eec Mon Sep 17 00:00:00 2001 From: slawkens Date: Tue, 22 Apr 2025 13:30:11 +0200 Subject: [PATCH 11/18] Do not autoload sub-folders if autoload pages is disabled --- plugins/example.json | 2 +- system/src/Plugins.php | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/example.json b/plugins/example.json index 681136fb..395db41d 100644 --- a/plugins/example.json +++ b/plugins/example.json @@ -46,7 +46,7 @@ "settings": "plugins/your-plugin-folder/settings.php", "autoload": { "pages": true, - "pagesSubFolders": false, + "pages-sub-folders": false, "commands": true, "themes": true, "admin-pages": true, diff --git a/system/src/Plugins.php b/system/src/Plugins.php index a0910b01..f9d4d5ce 100644 --- a/system/src/Plugins.php +++ b/system/src/Plugins.php @@ -151,7 +151,8 @@ class Plugins { $pagesDefaultPriority = $plugin['pages-default-priority']; } - if (self::getAutoLoadOption($plugin, 'pages', true)) { + $autoLoadPages = self::getAutoLoadOption($plugin, 'pages', true); + if ($autoLoadPages) { // // Get all plugins/*/pages/*.php pages // @@ -164,7 +165,8 @@ class Plugins { } } - if (self::getAutoLoadOption($plugin, 'pagesSubFolders', true)) { + if ($autoLoadPages && self::getAutoLoadOption($plugin, 'pagesSubFolders', true) && + self::getAutoLoadOption($plugin, 'pages-sub-folders', true)) { // // Get all plugins/*/pages/subFolder/*.php pages // From 93c09b33803861f82cbe216148755f97bf43f7ac Mon Sep 17 00:00:00 2001 From: slawkens Date: Tue, 22 Apr 2025 13:42:55 +0200 Subject: [PATCH 12/18] Release v1.4 --- CHANGELOG-1.x.md | 21 +++++++++++++++++++++ common.php | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG-1.x.md b/CHANGELOG-1.x.md index 473bc51b..c6feb09d 100644 --- a/CHANGELOG-1.x.md +++ b/CHANGELOG-1.x.md @@ -1,5 +1,26 @@ # Changelog +## [1.4 - 22.04.2025] + +### Added +* feat: admin-pages (can add admin pages through plugins) (https://github.com/slawkens/myaac/commit/ceaa0639e66d31e8177ff90791463470367aa45d) + * just place the page in admin-pages folder in the plugin + * Also, possibility to overwrite default myaac admin pages +* Add db->hasTableAndColumns(table, columns), credits to @opentibiabr Team (https://github.com/slawkens/myaac/commit/82a533d88c8a342076891d132b4b409ed9a1fe72) +* Add noSubmit option to buttons.base (https://github.com/slawkens/myaac/commit/64f6d3abcada3bf9fd7599f50d2fac0a1367f383) + +### Fixed +* Fix: display 404 error instead of 500 when page has been removed from filesystem (https://github.com/slawkens/myaac/commit/c2bf94fb2370d2009a2eb907f818955132cf8611) +* Fix headline.php: change image format to .png cause of black background (https://github.com/slawkens/myaac/commit/b618084d50918539d9a70abd97e764137b966067) +* Clear cache on plugin enable/disable, fixes some issues with plugin pages being cached (https://github.com/slawkens/myaac/commit/1d0c173e7d000aecbd432800941fc3e38a0e50f2) +* Do not autoload sub-folders if autoload pages is disabled (https://github.com/slawkens/myaac/commit/d47195a7878095336f9c9edc6f96244257f67eec) + +### Changed +* SQL Syntax Standardization (by @JoaozinhoBrasil, #298) +* Pages in theme/template folder will now have precedence over normal pages (https://github.com/slawkens/myaac/commit/6d8f4718a1d349fba8f0ebc39cfd3a1a84d104b0) +* Small changes in account.login.html.twig (https://github.com/slawkens/myaac/commit/f40b986b59d4c8fa89ab4745731bf366f8619976) +* Plugin name is required, version is optional (https://github.com/slawkens/myaac/commit/e6f05a2731c61d931be49e121c068e49c0ad5e01) + ## [1.3.3 - 04.04.2025] ### Fixed diff --git a/common.php b/common.php index 33e31085..51d5a6ef 100644 --- a/common.php +++ b/common.php @@ -26,7 +26,7 @@ if (version_compare(phpversion(), '8.1', '<')) die('PHP version 8.1 or higher is required.'); const MYAAC = true; -const MYAAC_VERSION = '1.3.4-dev'; +const MYAAC_VERSION = '1.4'; const DATABASE_VERSION = 43; const TABLE_PREFIX = 'myaac_'; define('START_TIME', microtime(true)); From de0512f11ac92aafc71f549043bd29bfb7f4aace Mon Sep 17 00:00:00 2001 From: slawkens Date: Tue, 22 Apr 2025 15:57:23 +0200 Subject: [PATCH 13/18] Start v1.4.1-dev --- common.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.php b/common.php index 51d5a6ef..4c903f5b 100644 --- a/common.php +++ b/common.php @@ -26,7 +26,7 @@ if (version_compare(phpversion(), '8.1', '<')) die('PHP version 8.1 or higher is required.'); const MYAAC = true; -const MYAAC_VERSION = '1.4'; +const MYAAC_VERSION = '1.4.1-dev'; const DATABASE_VERSION = 43; const TABLE_PREFIX = 'myaac_'; define('START_TIME', microtime(true)); From fa1f927082e6b59256c8bfd704aba29be0bfdf59 Mon Sep 17 00:00:00 2001 From: slawkens Date: Wed, 23 Apr 2025 18:04:54 +0200 Subject: [PATCH 14/18] Update login.php --- login.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login.php b/login.php index 75aeed4d..26616c79 100644 --- a/login.php +++ b/login.php @@ -143,7 +143,7 @@ switch ($action) { if ($limiter->exceeded($ip)) { sendError($ban_msg); } - + sendError(($inputEmail != false ? 'Email' : 'Account name') . ' or password is not correct.'); } From 4e6aa0f2628992078c2b47588168dcad9647613c Mon Sep 17 00:00:00 2001 From: slawkens Date: Wed, 23 Apr 2025 18:05:14 +0200 Subject: [PATCH 15/18] Fix boostedCreature fetch on login.php --- login.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login.php b/login.php index 26616c79..d51ae57b 100644 --- a/login.php +++ b/login.php @@ -86,7 +86,7 @@ switch ($action) { die(json_encode(['eventlist' => $eventlist, 'lastupdatetimestamp' => time()])); case 'boostedcreature': - $boostedCreature = BoostedCreature::latest(); + $boostedCreature = BoostedCreature::first(); die(json_encode([ 'boostedcreature' => true, 'raceid' => $boostedCreature->raceid From dbea69f31478391dacfbbc02c8353c39b4245daf Mon Sep 17 00:00:00 2001 From: slawkens Date: Wed, 23 Apr 2025 20:41:50 +0200 Subject: [PATCH 16/18] Fix if user removes the menu category --- system/templates/admin.menus.js.html.twig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/system/templates/admin.menus.js.html.twig b/system/templates/admin.menus.js.html.twig index dcb4fd33..9f7ea45e 100644 --- a/system/templates/admin.menus.js.html.twig +++ b/system/templates/admin.menus.js.html.twig @@ -4,7 +4,9 @@ let colors = []; {% for cat, menu in menus %} - last_id[{{ cat }}] = {{ last_id[cat] }}; + {% if config('menu_categories')[cat] is not empty %} + last_id[{{ cat }}] = {{ last_id[cat] }}; + {% endif %} {% endfor %} {% set menuDefaultLinksColor = config('menu_default_links_color') %} From 1e45d5c39306b2ed7cbaaca365c71c336ea1128e Mon Sep 17 00:00:00 2001 From: slawkens Date: Thu, 24 Apr 2025 13:43:50 +0200 Subject: [PATCH 17/18] Optimize .htaccess FilesMatch: Block access to *.md/json/dist/sql --- .htaccess.dist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.htaccess.dist b/.htaccess.dist index 1c837a33..036241dc 100644 --- a/.htaccess.dist +++ b/.htaccess.dist @@ -6,7 +6,7 @@ Options -MultiViews - + Require all denied From 0fbd4bf1be98775da308bd1629de77d4103b5396 Mon Sep 17 00:00:00 2001 From: slawkens Date: Thu, 24 Apr 2025 13:44:38 +0200 Subject: [PATCH 18/18] nginx: block additionally *.sql --- nginx-sample.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nginx-sample.conf b/nginx-sample.conf index bb107f02..c0cfa367 100644 --- a/nginx-sample.conf +++ b/nginx-sample.conf @@ -14,7 +14,7 @@ server { # block .htaccess, CHANGELOG.md, composer.json etc. # this is to prevent finding software versions - location ~\.(ht|md|json|dist)$ { + location ~\.(ht|md|json|dist|sql)$ { deny all; }