diff --git a/setup/modulediscovery.class.inc.php b/setup/modulediscovery.class.inc.php
index a77db0ecd..aaffe7c49 100644
--- a/setup/modulediscovery.class.inc.php
+++ b/setup/modulediscovery.class.inc.php
@@ -19,9 +19,46 @@
*
*/
-class MissingDependencyException extends Exception
+class MissingDependencyException extends CoreException
{
+ /**
+ * @see \ModuleDiscovery::OrderModulesByDependencies property init
+ * @var array module id as key
+ * another array as value, containing : 'module' with module info, 'dependencies' with missing dependencies
+ */
public $aModulesInfo;
+
+ /**
+ * @return string HTML to print to the user the modules impacted
+ * @since 2.7.7 3.0.2 3.1.0 PR #280
+ */
+ public function getHtmlDesc($sHighlightHtmlBegin = null, $sHighlightHtmlEnd = null)
+ {
+ $sErrorMessage = <<The following modules have unmet dependencies:
+
+HTML;
+ foreach ($this->aModulesInfo as $sModuleId => $aModuleErrors) {
+ $sModuleLabel = $aModuleErrors['module']['label'];
+ $aModuleMissingDependencies = $aModuleErrors['dependencies'];
+ $sErrorMessage .= <<{$sModuleLabel} ({$sModuleId}):
+
+HTML;
+
+ foreach ($aModuleMissingDependencies as $sMissingModule) {
+ $sErrorMessage .= "- {$sMissingModule}
";
+ }
+ $sErrorMessage .= <<
+
+HTML;
+
+ }
+ $sErrorMessage .= '
';
+
+ return $sErrorMessage;
+ }
}
class ModuleDiscovery
diff --git a/setup/wizardsteps.class.inc.php b/setup/wizardsteps.class.inc.php
index cb412885e..d7db579ea 100644
--- a/setup/wizardsteps.class.inc.php
+++ b/setup/wizardsteps.class.inc.php
@@ -1351,7 +1351,7 @@ class WizStepModulesChoice extends WizardStep
}
catch(MissingDependencyException $e)
{
- $oPage->warning($e->getMessage());
+ $oPage->warning($e->getHtmlDesc());
}
$this->bUpgrade = ($this->oWizard->GetParameter('install_mode') != 'install');
@@ -2092,7 +2092,7 @@ class WizStepSummary extends WizardStep
catch(MissingDependencyException $e)
{
$this->bDependencyCheck = false;
- $this->sDependencyIssue = $e->getMessage();
+ $this->sDependencyIssue = $e->getHtmlDesc();
}
}
return $this->bDependencyCheck;