rebase on develop + split new sort computation apart from modulediscovery

This commit is contained in:
odain
2025-09-09 23:12:18 +02:00
parent b194a0b17c
commit 6ed0f8ef3a
5 changed files with 187 additions and 41 deletions

View File

@@ -1,9 +1,13 @@
<?php
use Combodo\iTop\PhpParser\Evaluation\PhpExpressionEvaluator;
/**
* Class that handles a module dependency
*/
class iTopCoreModuleDependency {
private static PhpExpressionEvaluator $oPhpExpressionEvaluator;
private array $aPotentialPrerequisites;
private array $aParamsPerModuleId;
private string $sDepString;
@@ -43,6 +47,15 @@ class iTopCoreModuleDependency {
}
}
private static function GetPhpExpressionEvaluator(): PhpExpressionEvaluator
{
if (!isset(static::$oPhpExpressionEvaluator)) {
static::$oPhpExpressionEvaluator = new PhpExpressionEvaluator([], RunTimeEnvironment::STATIC_CALL_AUTOSELECT_WHITELIST);
}
return static::$oPhpExpressionEvaluator;
}
/**
* Return module names potentially required by current dependency
* @return array
@@ -107,10 +120,10 @@ class iTopCoreModuleDependency {
$bResult=false;
$sBooleanExpr = str_replace(array_keys($aReplacements), array_values($aReplacements), $this->sDepString);
$bOk = @eval('$bResult = '.$sBooleanExpr.'; return true;');
if ($bOk == false)
{
SetupLog::Warning("Eval of '$sBooleanExpr' returned false");
try{
$bResult = self::GetPhpExpressionEvaluator()->ParseAndEvaluateBooleanExpression($sBooleanExpr);
} catch(ModuleFileReaderException $e){
//logged already
echo "Failed to parse the boolean Expression = '$sBooleanExpr'<br/>";
}
return $bResult;