From 1c35fecc85831ea1f4821dfe3b0b44e6d97eba9d Mon Sep 17 00:00:00 2001 From: Bernd Bestel Date: Wed, 2 Aug 2023 21:10:03 +0200 Subject: [PATCH] Added the possibility to skip demo data generation in dev/demo/prerelease mode --- README.md | 2 +- config-dist.php | 5 +++-- controllers/SystemController.php | 2 +- services/DemoDataGeneratorService.php | 8 +++++++- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ef1fea44..d4842245 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ If you don't use certain feature sets of Grocy (for example if you don't need "C ### Demo mode -When the `MODE` setting is set to `dev`, `demo` or `prerelease`, the application will work in a demo mode which means authentication is disabled and some demo data will be generated during the database schema migration. +When the `MODE` setting is set to `dev`, `demo` or `prerelease`, the application will work in a demo mode which means authentication is disabled and some demo data will be generated during the database schema migration (pass the query parameter `nodemodata`, e.g. `https://grocy.example.com/?nodemodata` to skip that). ### Embedded mode diff --git a/config-dist.php b/config-dist.php index c7258f24..a1795624 100644 --- a/config-dist.php +++ b/config-dist.php @@ -14,8 +14,9 @@ // The settings defined here below // Either "production", "dev", "demo" or "prerelease" -// When not "production", authentication will be disabled and -// demo data will be populated during database migrations +// When not "production", the application will work in a demo mode which means +// authentication is disabled and some demo data will be generated during the database schema migration +// (pass the query parameter "nodemodata", e.g. https://grocy.example.com/?nodemodata to skip that) Setting('MODE', 'production'); // The directory name of one of the available localization folders diff --git a/controllers/SystemController.php b/controllers/SystemController.php index a609a688..3365b05e 100644 --- a/controllers/SystemController.php +++ b/controllers/SystemController.php @@ -32,7 +32,7 @@ class SystemController extends BaseController if (GROCY_MODE === 'dev' || GROCY_MODE === 'demo' || GROCY_MODE === 'prerelease') { $demoDataGeneratorService = DemoDataGeneratorService::getInstance(); - $demoDataGeneratorService->PopulateDemoData(); + $demoDataGeneratorService->PopulateDemoData(isset($request->getQueryParams()['nodemodata'])); } return $response->withRedirect($this->AppContainer->get('UrlManager')->ConstructUrl($this->GetEntryPageRelative())); diff --git a/services/DemoDataGeneratorService.php b/services/DemoDataGeneratorService.php index 129c0fbb..55dc546e 100644 --- a/services/DemoDataGeneratorService.php +++ b/services/DemoDataGeneratorService.php @@ -12,11 +12,17 @@ class DemoDataGeneratorService extends BaseService protected $LocalizationService; private $LastSupermarketId = 1; - public function PopulateDemoData() + public function PopulateDemoData($skip = false) { $rowCount = $this->getDatabaseService()->ExecuteDbQuery('SELECT COUNT(*) FROM migrations WHERE migration = -1')->fetchColumn(); if ($rowCount == 0) { + if ($skip) + { + $this->getDatabaseService()->ExecuteDbStatement('INSERT INTO migrations (migration) VALUES (-1);'); + return; + } + $loremIpsum = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.'; $loremIpsumWithHtmlFormattings = "

Lorem ipsum

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

Lorem ipsum

Lorem ipsum dolor sit amet, consetetur \r\nsadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et \r\ndolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et\r\n justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea \r\ntakimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit \r\namet, consetetur sadipscing elitr,\r\n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna \r\naliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo \r\ndolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus \r\nest Lorem ipsum dolor sit amet.

";