diff --git a/Dockerfile b/Dockerfile index ee1a1ba..8470c15 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,8 @@ # syntax=docker/dockerfile:1 + +ARG BUILDER_CONFIGURATION="release" FROM php:8.4-apache@sha256:51da594c844a97f31b1cd6b1ac6660982f40788f4fe13e75f7fd39e2f9b58651 AS composer-builder +ENV BUILDER_PLATFORM=docker-composer # Install Zip to use composer RUN apt-get update && apt-get install -y \ @@ -15,12 +18,29 @@ RUN composer self-update USER www-data WORKDIR /composer COPY composer.* /composer/ -RUN composer install + +# Consume the build argment +ARG BUILDER_CONFIGURATION +RUN if [ "$BUILDER_CONFIGURATION" = "debug" ]; then \ + # composer install --dev deprecated + COMPOSER_NO_DEV=0 composer install ; \ + else \ + COMPOSER_NO_DEV=1 composer install ; \ + fi # Site FROM php:8.4-apache@sha256:51da594c844a97f31b1cd6b1ac6660982f40788f4fe13e75f7fd39e2f9b58651 +ENV BUILDER_PLATFORM=docker + COPY resources/keyman-site.conf /etc/apache2/conf-available/ -RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini + +ARG BUILDER_CONFIGURATION +RUN if [ "$BUILDER_CONFIGURATION" = "debug" ]; then \ + cp /usr/local/etc/php/php.ini-development /usr/local/etc/php/php.ini ; \ + else \ + cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini ; \ + fi + RUN echo memory_limit = 1024M >> /usr/local/etc/php/php.ini RUN chown -R www-data:www-data /var/www/html/ diff --git a/script/developer/14.0/update/DeveloperUpdateCheck.php b/script/developer/14.0/update/DeveloperUpdateCheck.php index 1af8f17..174c2b9 100644 --- a/script/developer/14.0/update/DeveloperUpdateCheck.php +++ b/script/developer/14.0/update/DeveloperUpdateCheck.php @@ -11,9 +11,12 @@ class DeveloperUpdateCheck { const SETUP_REGEX = '/^keymandeveloper-.+\.exe/'; + private $mssql; private $isManual; private $currentTime; // used mainly for unit testing + public $DownloadVersions; + public function execute($mssql, $tier, $appVersion, $isManual, $currentTime = null) { $this->mssql = $mssql; diff --git a/script/search/1.0/search.php b/script/search/1.0/search.php index 7c423d8..2acc515 100644 --- a/script/search/1.0/search.php +++ b/script/search/1.0/search.php @@ -58,6 +58,7 @@ class KeyboardSearchResult { public $search; // search query has been entered public $rangematch, $isomatch, $allmatch, $regionmatch; public $text, $textparts, $searchtext, $region; + public $legacy; } class KeyboardSearch { diff --git a/script/search/2.0/search.inc.php b/script/search/2.0/search.inc.php index a3eafad..62187c1 100644 --- a/script/search/2.0/search.inc.php +++ b/script/search/2.0/search.inc.php @@ -24,6 +24,8 @@ class KeyboardSearchResult { public $platform; public $keyboards; + + public $rangetext; } class KeyboardSearch { diff --git a/script/windows/14.0/update/WindowsUpdateCheck.php b/script/windows/14.0/update/WindowsUpdateCheck.php index 94faff1..5f9ae69 100644 --- a/script/windows/14.0/update/WindowsUpdateCheck.php +++ b/script/windows/14.0/update/WindowsUpdateCheck.php @@ -14,9 +14,12 @@ class WindowsUpdateCheck { const BOOTSTRAP_REGEX = '/^setup\.exe$/'; const BUNDLE_REGEX = '/^keyman(desktop)?-.+\.exe/'; + private $mssql; private $isManual; private $currentTime; // used mainly for unit testing + public $DownloadVersions = null; + public function execute($mssql, $tier, $appVersion, $packages, $isUpdate, $isManual, $currentTime = null) { $this->mssql = $mssql; @@ -43,7 +46,7 @@ public function execute($mssql, $tier, $appVersion, $packages, $isUpdate, $isMan return json_encode($desktop_update, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); } - // RepairVersionCheck works around an issue where Keyman for Windows 18.0.235-236 + // RepairVersionCheck works around an issue where Keyman for Windows 18.0.235-236 // would not upgrade to a newer version; see the links below for more details. // https://downloads.keyman.com/windows/stable/18.0.240/repair-14586/README.md // https://github.com/keymanapp/keyman/issues/13831 diff --git a/tests/TestDBBuild.inc.php b/tests/TestDBBuild.inc.php index 5d573bc..6d17cb4 100644 --- a/tests/TestDBBuild.inc.php +++ b/tests/TestDBBuild.inc.php @@ -24,7 +24,9 @@ final class TestDBDataSources extends \DBDataSources function __construct() { foreach($this as $field => $value) { - $this->$field = $this->fileFromTestDataDir($this->$field); + if(!empty($this->$field)) { + $this->$field = $this->fileFromTestDataDir($this->$field); + } } $this->mockAnalyticsSqlFile = $this->fileFromTestDataDir("analytics.sql"); } diff --git a/tools/2020/ReleaseSchedule.php b/tools/2020/ReleaseSchedule.php index 309e531..b8f610e 100644 --- a/tools/2020/ReleaseSchedule.php +++ b/tools/2020/ReleaseSchedule.php @@ -15,7 +15,7 @@ class ReleaseSchedule { * @param int currentTime Unix timestamp of current time * @return bool true if the request should be presented with the upgrade */ - public static function DoesRequestMeetSchedule(string $releaseDate, int $currentTime = null): bool { + public static function DoesRequestMeetSchedule(string $releaseDate, ?int $currentTime = null): bool { // This is an arbitrary schedule; see for example Chrome's release schedule: // https://chromium.googlesource.com/chromium/src/+/master/docs/process/release_cycle.md $schedule = [ diff --git a/tools/db/build/build.inc.php b/tools/db/build/build.inc.php index 7c93a33..4b5973b 100644 --- a/tools/db/build/build.inc.php +++ b/tools/db/build/build.inc.php @@ -58,15 +58,15 @@ function BuildDatabase($DBDataSources, $schema, $do_force) { $this->sqlrun(dirname(__FILE__)."/search.sql"); $this->sqlrun(dirname(__FILE__)."/langtags.sql"); - $this->sqlrun("${data_path}langtags.json.sql"); - $this->sqlrun("${data_path}language-subtag-registry.sql"); - $this->sqlrun("${data_path}iso639-3.sql"); - $this->sqlrun("${data_path}iso639-3-name-index.sql"); - $this->sqlrun("${data_path}ethnologue_language_codes.sql"); - $this->sqlrun("${data_path}ethnologue_country_codes.sql"); - $this->sqlrun("${data_path}ethnologue_language_index.sql"); - $this->sqlrun("${data_path}keyboards.sql"); - $this->sqlrun("${data_path}models.sql"); + $this->sqlrun("{$data_path}langtags.json.sql"); + $this->sqlrun("{$data_path}language-subtag-registry.sql"); + $this->sqlrun("{$data_path}iso639-3.sql"); + $this->sqlrun("{$data_path}iso639-3-name-index.sql"); + $this->sqlrun("{$data_path}ethnologue_language_codes.sql"); + $this->sqlrun("{$data_path}ethnologue_country_codes.sql"); + $this->sqlrun("{$data_path}ethnologue_language_index.sql"); + $this->sqlrun("{$data_path}keyboards.sql"); + $this->sqlrun("{$data_path}models.sql"); $this->sqlrun(dirname(__FILE__)."/search-prepare-data-1.sql"); $this->sqlrun(dirname(__FILE__)."/search-prepare-data-2.sql"); @@ -105,7 +105,7 @@ function BuildDatabase($DBDataSources, $schema, $do_force) { if(file_exists($DBDataSources->mockAnalyticsSqlFile)) $this->sqlrun($DBDataSources->mockAnalyticsSqlFile); - $this->sqlrun("${data_path}dbdatasources.sql"); + $this->sqlrun("{$data_path}dbdatasources.sql"); return true; } @@ -151,7 +151,7 @@ function buildDBDataSources($data_path, DBDataSources $DBDataSources) { $sql .= "\nINSERT t_dbdatasources SELECT ".sqlv($DBDataSources, $field).", ".sqlv(null, basename($DBDataSources->$field)). ", " . $DBDataSources->downloadDate($value) ."\n"; } - file_put_contents("${data_path}dbdatasources.sql", $sql); + file_put_contents("{$data_path}dbdatasources.sql", $sql); } function download($url) { diff --git a/tools/db/build/cjk/build.inc.php b/tools/db/build/cjk/build.inc.php index 68cca33..b722deb 100644 --- a/tools/db/build/cjk/build.inc.php +++ b/tools/db/build/cjk/build.inc.php @@ -9,13 +9,13 @@ function BuildCJKTables($DBDataSources, $schema, $do_force) { $this->schema = $schema; - $this->sqlrun("${data_path}cjk_database.sql"); + $this->sqlrun("{$data_path}cjk_database.sql"); $builder = new build_cjk_data($DBDataSources, $schema); $builder->execute($data_path, $do_force) || fail("Unable to build cjk data"); - $this->sqlrun("${data_path}chinese_pinyin_import.sql"); - $this->sqlrun("${data_path}japanese_import.sql"); + $this->sqlrun("{$data_path}chinese_pinyin_import.sql"); + $this->sqlrun("{$data_path}japanese_import.sql"); return true; }