Changelog and some small changes for #639

This commit is contained in:
Bernd Bestel 2020-03-22 18:02:19 +01:00
parent 3fc14db5d5
commit 375865d80e
No known key found for this signature in database
GPG Key ID: 71BD34C0D4891300
3 changed files with 43 additions and 29 deletions

View File

@ -2,4 +2,5 @@
- Fixed a PHP notice on the recipes page when there are no recipes (thanks @mrunkel) - Fixed a PHP notice on the recipes page when there are no recipes (thanks @mrunkel)
### General & other improvements ### General & other improvements
- Prerequisites (PHP extensions, critical files/folders) will now be checked and properly reported if there are problems (thanks @Forceu)
- Improved the the overview pages on mobile devices (main column was hidden) (thanks @Mik-) - Improved the the overview pages on mobile devices (main column was hidden) (thanks @Mik-)

View File

@ -1,14 +1,13 @@
<?php <?php
class ERequirementNotMet extends Exception { class ERequirementNotMet extends Exception { }
}
const REQUIRED_PHP_EXTENSIONS = array('fileinfo', 'pdo_sqlite', 'gd');
const REQUIRED_PHP_EXTENSIONS = array("fileinfo", "pdo_sqlite", "gd"); class PrerequisiteChecker
{
class PrerequisiteChecker { public function checkRequirements()
{
public function checkRequirements() {
self::checkForConfigFile(); self::checkForConfigFile();
self::checkForConfigDistFile(); self::checkForConfigDistFile();
self::checkForComposer(); self::checkForComposer();
@ -17,34 +16,47 @@ class PrerequisiteChecker {
} }
private function checkForConfigFile() { private function checkForConfigFile()
if (!file_exists(__DIR__ . "/../data/config.php")) {
throw new ERequirementNotMet("/data/config.php not found. Have you copied config-dist.php to the data directory and renamed it to config.php?"); if (!file_exists(__DIR__ . '/../data/config.php'))
{
throw new ERequirementNotMet('/data/config.php not found. Have you copied config-dist.php to the data directory and renamed it to config.php?');
}
} }
private function checkForConfigDistFile() { private function checkForConfigDistFile()
if (!file_exists(__DIR__ . "/../config-dist.php")) {
throw new ERequirementNotMet("config-dist.php not found. Please do not remove this file."); if (!file_exists(__DIR__ . '/../config-dist.php'))
{
throw new ERequirementNotMet('config-dist.php not found. Please do not remove this file.');
}
} }
private function checkForComposer() { private function checkForComposer()
if (!file_exists(__DIR__ . "/../vendor/autoload.php")) {
throw new ERequirementNotMet("/vendor/autoload.php not found. Have you run Composer?"); if (!file_exists(__DIR__ . '/../vendor/autoload.php'))
{
throw new ERequirementNotMet('/vendor/autoload.php not found. Have you run Composer?');
}
} }
private function checkForYarn() { private function checkForYarn()
if (!file_exists(__DIR__ . "/../public/node_modules")) {
throw new ERequirementNotMet("/public/node_modules not found. Have you run Yarn?"); if (!file_exists(__DIR__ . '/../public/node_modules'))
{
throw new ERequirementNotMet('/public/node_modules not found. Have you run Yarn?');
}
} }
private function checkForPhpExtensions() { private function checkForPhpExtensions()
{
$loadedExtensions = get_loaded_extensions(); $loadedExtensions = get_loaded_extensions();
foreach (REQUIRED_PHP_EXTENSIONS as $extension) { foreach (REQUIRED_PHP_EXTENSIONS as $extension)
{
if (!in_array($extension, $loadedExtensions)) if (!in_array($extension, $loadedExtensions))
{
throw new ERequirementNotMet("PHP module '{$extension}' not installed, but required."); throw new ERequirementNotMet("PHP module '{$extension}' not installed, but required.");
}
} }
} }
} }
?>

View File

@ -2,12 +2,13 @@
require_once __DIR__ . '/../helpers/PrerequisiteChecker.php'; require_once __DIR__ . '/../helpers/PrerequisiteChecker.php';
try { try
{
(new PrerequisiteChecker)->checkRequirements(); (new PrerequisiteChecker)->checkRequirements();
} catch (ERequirementNotMet $e) { }
die("Unable to run grocy: " . $e->getMessage()); catch (ERequirementNotMet $ex)
{
die('Unable to run grocy: ' . $ex->getMessage());
} }
require_once __DIR__ . '/../app.php'; require_once __DIR__ . '/../app.php';
?>