diff --git a/.gitignore b/.gitignore index 0b45d20..08d8233 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ [Dd]esktop.ini /.debug /.migrating +/makai.cfg /config/*.ini /vendor /node_modules diff --git a/composer.json b/composer.json index 5a5e05d..041fe72 100644 --- a/composer.json +++ b/composer.json @@ -4,6 +4,7 @@ "require": { "flashwave/index": "dev-master", "flashwave/sasae": "dev-master", + "flashwave/syokuhou": "dev-master", "erusev/parsedown": "~1.6" }, "autoload": { diff --git a/composer.lock b/composer.lock index 44d827e..5c8bd39 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6c0d442a01899edbfc60a28c35e7f945", + "content-hash": "783f9604312991e2ccea8a65f381c9a4", "packages": [ { "name": "erusev/parsedown", @@ -144,89 +144,60 @@ "time": "2023-11-20T19:09:35+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "name": "flashwave/syokuhou", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", - "shasum": "" + "url": "https://patchii.net/flash/syokuhou.git", + "reference": "fdf3c38cc216bf7024af331cbe1758532355c22f" }, "require": { - "php": ">=8.1" + "flashwave/index": "dev-master", + "php": ">=8.2" }, + "require-dev": { + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.4" + }, + "default-branch": true, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { - "files": [ - "function.php" - ] + "psr-4": { + "Syokuhou\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "bsd-3-clause-clear" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "flashwave", + "email": "packagist@flash.moe", + "homepage": "https://flash.moe", + "role": "mom" } ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-05-23T14:45:45+00:00" + "description": "Configuration library for PHP.", + "homepage": "https://railgun.sh/syokuhou", + "time": "2023-11-20T19:10:04+00:00" }, { "name": "symfony/mime", - "version": "v6.3.5", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" + "reference": "0a2fff95c1a10df97f571d67e76c7ae0f0d4f535" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", - "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "url": "https://api.github.com/repos/symfony/mime/zipball/0a2fff95c1a10df97f571d67e76c7ae0f0d4f535", + "reference": "0a2fff95c1a10df97f571d67e76c7ae0f0d4f535", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -234,17 +205,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "~6.2.13|^6.3.2" + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -276,7 +247,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.5" + "source": "https://github.com/symfony/mime/tree/v7.0.0" }, "funding": [ { @@ -292,7 +263,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T06:59:36+00:00" + "time": "2023-10-19T14:20:43+00:00" }, { "name": "symfony/polyfill-ctype", @@ -707,26 +678,109 @@ "time": "2023-01-26T09:26:14+00:00" }, { - "name": "twig/html-extra", - "version": "v3.7.1", + "name": "symfony/polyfill-php80", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/twigphp/html-extra.git", - "reference": "95ceb36e70fa8d07af08cf5135ecbf5e0bd8f386" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/html-extra/zipball/95ceb36e70fa8d07af08cf5135ecbf5e0bd8f386", - "reference": "95ceb36e70fa8d07af08cf5135ecbf5e0bd8f386", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^5.4|^6.0", - "twig/twig": "^2.7|^3.0" + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "twig/html-extra", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/html-extra.git", + "reference": "c04603bb3b71d8d2ece9e583dbf7bd77811df1f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/html-extra/zipball/c04603bb3b71d8d2ece9e583dbf7bd77811df1f2", + "reference": "c04603bb3b71d8d2ece9e583dbf7bd77811df1f2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/mime": "^5.4|^6.0|^7.0", + "twig/twig": "^3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^5.4|^6.3" + "symfony/phpunit-bridge": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -756,7 +810,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/html-extra/tree/v3.7.1" + "source": "https://github.com/twigphp/html-extra/tree/v3.8.0" }, "funding": [ { @@ -768,30 +822,31 @@ "type": "tidelift" } ], - "time": "2023-07-29T15:34:56+00:00" + "time": "2023-11-21T14:02:01+00:00" }, { "name": "twig/twig", - "version": "v3.7.1", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554" + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", - "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" }, "require-dev": { "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4.9|^6.3" + "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" }, "type": "library", "autoload": { @@ -827,7 +882,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.7.1" + "source": "https://github.com/twigphp/Twig/tree/v3.8.0" }, "funding": [ { @@ -839,22 +894,22 @@ "type": "tidelift" } ], - "time": "2023-08-28T11:09:02+00:00" + "time": "2023-11-21T18:54:41+00:00" } ], "packages-dev": [ { "name": "phpstan/phpstan", - "version": "1.10.43", + "version": "1.10.50", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "2c4129f6ca8c7cfa870098884b8869b410a5a361" + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/2c4129f6ca8c7cfa870098884b8869b410a5a361", - "reference": "2c4129f6ca8c7cfa870098884b8869b410a5a361", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4", + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4", "shasum": "" }, "require": { @@ -903,14 +958,15 @@ "type": "tidelift" } ], - "time": "2023-11-19T19:55:25+00:00" + "time": "2023-12-13T10:59:42+00:00" } ], "aliases": [], "minimum-stability": "dev", "stability-flags": { "flashwave/index": 20, - "flashwave/sasae": 20 + "flashwave/sasae": 20, + "flashwave/syokuhou": 20 }, "prefer-stable": true, "prefer-lowest": false, diff --git a/makai.php b/makai.php index 3c759cf..393fa0a 100644 --- a/makai.php +++ b/makai.php @@ -3,13 +3,13 @@ namespace Makai; use Index\Environment; use Index\Data\DbTools; +use Syokuhou\SharpConfig; define('MKI_STARTUP', microtime(true)); define('MKI_ROOT', __DIR__); define('MKI_DEBUG', is_file(MKI_ROOT . '/.debug')); define('MKI_DIR_SRC', MKI_ROOT . '/src'); define('MKI_DIR_PUBLIC', MKI_ROOT . '/public'); -define('MKI_DIR_CONFIG', MKI_ROOT . '/config'); define('MKI_DIR_TEMPLATES', MKI_ROOT . '/templates'); define('MKI_DIR_ASSETS', MKI_ROOT . '/assets'); define('MKI_DIR_MIGRATIONS', MKI_ROOT . '/database'); @@ -18,18 +18,9 @@ require_once MKI_ROOT . '/vendor/autoload.php'; Environment::setDebug(MKI_DEBUG); -try { - $cfg = parse_ini_file(MKI_DIR_CONFIG . DIRECTORY_SEPARATOR . 'database.ini'); -} catch(\ErrorException $ex) { - $cfg = null; -} - -try { - $db = DbTools::create($cfg['dsn'] ?? 'null:'); -} catch(\Index\Data\ConnectionFailedException $ex) { - $db = DbTools::create('null:'); -} +$cfg = SharpConfig::fromFile(MKI_ROOT . '/makai.cfg'); +$db = DbTools::create($cfg->getString('database:dsn', 'null:')); $db->execute('SET SESSION time_zone = \'+00:00\', sql_mode = \'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\''); $makai = new MakaiContext($db); diff --git a/public/index.php b/public/index.php index b02f4d5..700958c 100644 --- a/public/index.php +++ b/public/index.php @@ -25,7 +25,7 @@ if(file_exists(MKI_ROOT . '/.migrating')) { } $makai->getCSRFP()->setInfo( - $cfg['csrfp'] ?? 'meow', + $cfg->getString('csrfp:secret', 'meow'), (string)filter_input(INPUT_SERVER, 'REMOTE_ADDR') );