'sqlite', 'database' => __DIR__ . '/../../../phpOMS/Localization/Defaults/localization.sqlite', ]); self::installCountries($sqlite, $dbPool); self::installLanguages($sqlite, $dbPool); self::installCurrencies($sqlite, $dbPool); $sqlite->close(); } /** * Install countries * * @param SQLiteConnection $sqlite SQLLite database connection of the source data * @param DatabasePool $dbPool Database pool to save data to * * @return void * * @since 1.0.0 */ private static function installCountries(SQLiteConnection $sqlite, DatabasePool $dbPool) : void { $con = $dbPool->get(); $query = new Builder($con); $query->insert('country_name', 'country_code2', 'country_code3', 'country_numeric', 'country_region', 'country_developed') ->into('country'); $querySqlite = new Builder($sqlite); $countries = $querySqlite->select('*')->from('country')->execute(); foreach ($countries as $country) { $query->values( $country['country_name'] === null ? null : \trim($country['country_name']), $country['country_code2'] === null ? null : \trim($country['country_code2']), $country['country_code3'] === null ? null : \trim($country['country_code3']), $country['country_numeric'], $country['country_region'], (int) $country['country_developed'] ); } $query->execute(); } /** * Install languages * * @param SQLiteConnection $sqlite SQLLite database connection of the source data * @param DatabasePool $dbPool Database pool to save data to * * @return void * * @since 1.0.0 */ private static function installLanguages(SQLiteConnection $sqlite, DatabasePool $dbPool) : void { $con = $dbPool->get(); $query = new Builder($con); $query->insert('language_name', 'language_native', 'language_639_1', 'language_639_2T', 'language_639_2B', 'language_639_3') ->into('language'); $querySqlite = new Builder($sqlite); $languages = $querySqlite->select('*')->from('language')->execute(); foreach ($languages as $language) { $query->values( $language['language_name'] === null ? null : \trim($language['language_name']), $language['language_native'] === null ? null : \trim($language['language_native']), $language['language_639_1'] === null ? null : \trim($language['language_639_1']), $language['language_639_2T'] === null ? null : \trim($language['language_639_2T']), $language['language_639_2B'] === null ? null : \trim($language['language_639_2B']), $language['language_639_3'] === null ? null : \trim($language['language_639_3']) ); } $query->execute(); } /** * Install currencies * * @param SQLiteConnection $sqlite SQLLite database connection of the source data * @param DatabasePool $dbPool Database pool to save data to * * @return void * * @since 1.0.0 */ private static function installCurrencies(SQLiteConnection $sqlite, DatabasePool $dbPool) : void { $con = $dbPool->get(); $query = new Builder($con); $query->insert('currency_id', 'currency_name', 'currency_code', 'currency_number', 'currency_symbol', 'currency_subunits', 'currency_decimal', 'currency_countries') ->into('currency'); $querySqlite = new Builder($sqlite); $currencies = $querySqlite->select('*')->from('currency')->execute(); foreach ($currencies as $currency) { $query->values( $currency['currency_id'], $currency['currency_name'] === null ? null : \trim($currency['currency_name']), $currency['currency_code'] === null ? null : \trim($currency['currency_code']), $currency['currency_number'] === null ? null : \trim($currency['currency_number']), $currency['currency_symbol'] === null ? null : \trim($currency['currency_symbol']), $currency['currency_subunits'], $currency['currency_decimal'] === null ? null : \trim($currency['currency_decimal']), $currency['currency_countries'] === null ? null : \trim($currency['currency_countries']) ); } $query->execute(); } /** * Install data from providing modules. * * @param ApplicationAbstract $app Application * @param array $data Additional data * * @return array * * @throws PathException * @throws \Exception * * @since 1.0.0 */ public static function installExternal(ApplicationAbstract $app, array $data) : array { if (!\is_file($data['path'] ?? '')) { throw new PathException($data['path'] ?? ''); } $adminFile = \file_get_contents($data['path'] ?? ''); if ($adminFile === false) { throw new PathException($data['path'] ?? ''); // @codeCoverageIgnore } $adminData = \json_decode($adminFile, true) ?? []; if ($adminData === false) { throw new \Exception(); // @codeCoverageIgnore } $result = [ 'settings' => [], ]; foreach ($adminData as $admin) { switch ($admin['type']) { case 'setting': $result['settings'][] = self::createSettings($app, $admin); break; default: } } return $result; } /** * Create settings. * * @param ApplicationAbstract $app Database instance * @param array $settings Media info * * @return array * * @since 1.0.0 */ private static function createSettings(ApplicationAbstract $app, array $setting) : array { unset($setting['type']); $app->appSettings->create($setting); return $setting; } }