diff --git a/Admin/Install/db.json b/Admin/Install/db.json index dd429cc..fbacfc2 100644 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -18,6 +18,21 @@ "name": "language_native", "type": "VARCHAR(100)", "null": false + }, + "language_639_2T": { + "name": "language_639_2T", + "type": "VARCHAR(2)", + "null": false + }, + "language_639_2B": { + "name": "language_639_2B", + "type": "VARCHAR(3)", + "null": false + }, + "language_639_3": { + "name": "language_639_3", + "type": "VARCHAR(3)", + "null": false } } }, @@ -325,6 +340,43 @@ } } }, + "country": { + "name": "country", + "fields": { + "country_id": { + "name": "country_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "country_name": { + "name": "country_name", + "type": "VARCHAR(100)", + "null": false + }, + "country_native": { + "name": "country_native", + "type": "VARCHAR(100)", + "null": false + }, + "country_code2": { + "name": "country_code2", + "type": "VARCHAR(2)", + "null": false + }, + "country_code3": { + "name": "country_code3", + "type": "VARCHAR(3)", + "null": false + }, + "country_codenum": { + "name": "country_codenum", + "type": "INT(11)", + "null": false + } + } + }, "account": { "name": "account", "fields": { diff --git a/Admin/Installer.php b/Admin/Installer.php index f1614ee..353dc38 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -14,6 +14,8 @@ declare(strict_types=1); namespace Modules\Admin\Admin; +use phpOMS\DataStorage\Database\Connection\SQLiteConnection; +use phpOMS\DataStorage\Database\Query\Builder; use phpOMS\Module\InstallerAbstract; /** @@ -26,4 +28,62 @@ use phpOMS\Module\InstallerAbstract; */ class Installer extends InstallerAbstract { + /** + * {@inheritdoc} + */ + public static function install(DatabasePool $dbPool, InfoManager $info) : void + { + $sqlite = new SQLiteConnection([ + 'db' => 'sqlite', + 'prefix' => '', + 'database' => __DIR__ . '/../../../phpOMS/Localization/Defaults/localization.sqlite' + ]); + + self::installCountries($sqlite, $dbPool); + self::installLanguages($sqlite, $dbPool); + + $sqlite->close(); + } + + private static function installCountries(SQLiteConnection $sqlite, DatabasePool $dbPool) + { + $con = $dbPool->get(); + + $query = new Builder($con); + $query->insert('country_name', 'country_native', 'country_code2', 'country_code3', 'country_codenum')->into('country'); + + $countries = $sqlite->select('*')->from('country')->execute(); + foreach ($countries as $country) { + $query->values( + $country['country_name'], + $country['country_name'], + $country['country_code2'], + $country['country_code3'], + $country['country_numeric'] + ); + } + + $con->execute($query->toSql()); + } + + private static function installLanguages(SQLiteConnection $sqlite, DatabasePool $dbPool) + { + $con = $dbPool->get(); + + $query = new Builder($con); + $query->insert('language_name', 'language_native', 'language_639_2T', 'language_639_2B', 'language_639_3')->into('language'); + + $languages = $sqlite->select('*')->from('language')->execute(); + foreach ($languages as $language) { + $query->values( + $language['language_name'], + $language['language_native'], + $language['language_639_2T'], + $language['language_639_2B'], + $language['language_639_3'] + ); + } + + $con->execute($query->toSql()); + } }