diff --git a/setup/compiler.class.inc.php b/setup/compiler.class.inc.php index 61c883c68..574d15ab0 100644 --- a/setup/compiler.class.inc.php +++ b/setup/compiler.class.inc.php @@ -617,7 +617,21 @@ EOF; // files to include (PHP datamodels) foreach($oModule->GetFilesToInclude('business') as $sRelFileName) { - $aDataModelFiles[] = "MetaModel::IncludeModule(MODULESROOT.'/$sRelativeDir/$sRelFileName');"; + if (file_exists("{$sTempTargetDir}/{$sRelativeDir}/{$sRelFileName}")) { + $aDataModelFiles[] = "MetaModel::IncludeModule(MODULESROOT.'/$sRelativeDir/$sRelFileName');"; + } else { + /** @noinspection NestedPositiveIfStatementsInspection */ + if (utils::IsDevelopmentEnvironment()) { + $sMissingBusinessFileMessage = 'A module embeds a non existing file : check the module.php "datamodel" key !'; + $aContext = [ + 'moduleId' => $oModule->GetId(), + 'moduleLocation' => $oModule->GetRootDir(), + 'includedFile' => $sRelFileName, + ]; + SetupLog::Error($sMissingBusinessFileMessage, null, $aContext); + throw new CoreException($sMissingBusinessFileMessage, $aContext); + } + } } // files to include (PHP webservices providers) foreach($oModule->GetFilesToInclude('webservices') as $sRelFileName) diff --git a/setup/modelfactory.class.inc.php b/setup/modelfactory.class.inc.php index 603e337f2..9d5eb6787 100644 --- a/setup/modelfactory.class.inc.php +++ b/setup/modelfactory.class.inc.php @@ -139,7 +139,15 @@ class MFModule */ protected $sAutoSelect; /** - * @var array + * @see ModelFactory::FindModules init of this structure from the module.*.php files + * @var array{ + * business: string[], + * webservices: string[], + * addons: string[], + * } + * Warning, there are naming mismatches between this structure and the module.*.php : + * - `business` here correspond to `datamodel` in module.*.php + * - `webservices` here correspond to `webservice` in module.*.php */ protected $aFilesToInclude;