Fix CI

This commit is contained in:
Eric Espie
2026-01-28 15:59:56 +01:00
parent bb1c4f865a
commit d7451fe2ea
13 changed files with 64 additions and 41 deletions

View File

@@ -515,6 +515,7 @@ return array(
'Combodo\\iTop\\Forms\\Block\\Base\\CollectionBlock' => $baseDir . '/sources/Forms/Block/Base/CollectionBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\DateFormBlock' => $baseDir . '/sources/Forms/Block/Base/DateFormBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\DateTimeFormBlock' => $baseDir . '/sources/Forms/Block/Base/DateTimeFormBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\FileFormBlock' => $baseDir . '/sources/Forms/Block/Base/FileFormBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\FormBlock' => $baseDir . '/sources/Forms/Block/Base/FormBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\HiddenFormBlock' => $baseDir . '/sources/Forms/Block/Base/HiddenFormBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\IntegerFormBlock' => $baseDir . '/sources/Forms/Block/Base/IntegerFormBlock.php',

View File

@@ -901,6 +901,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Combodo\\iTop\\Forms\\Block\\Base\\CollectionBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/CollectionBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\DateFormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/DateFormBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\DateTimeFormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/DateTimeFormBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\FileFormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/FileFormBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\FormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/FormBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\HiddenFormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/HiddenFormBlock.php',
'Combodo\\iTop\\Forms\\Block\\Base\\IntegerFormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/IntegerFormBlock.php',

View File

@@ -39,11 +39,13 @@ class DashboardController extends Controller
public const ROUTE_NAMESPACE = 'dashboard';
private FormBlockService $oFormBlockService;
private XMLSerializer $oXMLSerializer;
public function __construct($sViewPath = '', $sModuleName = 'core', $aAdditionalPaths = [], array $aThemes = ['application/forms/itop_console_layout.html.twig', 'application/forms/wip_form_demonstrator.html.twig'])
{
parent::__construct($sViewPath, $sModuleName, $aAdditionalPaths, $aThemes);
$this->oFormBlockService = MetaModel::GetService('FormBlockService');
$this->oXMLSerializer = MetaModel::GetService('XMLSerializer');
}
public function OperationGetDashlet()
@@ -124,7 +126,7 @@ class DashboardController extends Controller
$aModelData = $oForm->getData();
$oDashboard = new RuntimeDashboard($aModelData['id']);
$oDomNode = $oDashboard->CreateEmptyDashboard();
XMLSerializer::GetInstance()->Serialize($aModelData, $oDomNode, 'DashboardGrid', 'Dashboard');
$this->oXMLSerializer->Serialize($aModelData, $oDomNode, 'DashboardGrid', 'Dashboard');
$sXml = $oDomNode->ownerDocument->saveXML();
$oDashboard->PersistDashboard($sXml);
$sStatus = 'ok';

View File

@@ -56,6 +56,8 @@ abstract class Dashboard
protected $oDashletFactory;
private XMLSerializer $oXMLSerializer;
/**
* Dashboard constructor.
*
@@ -71,6 +73,7 @@ abstract class Dashboard
$this->oDOMNode = null;
$this->sId = $sId;
$this->oDashletFactory = DashletFactory::GetInstance();
$this->oXMLSerializer = MetaModel::GetService('XMLSerializer');
}
/**
@@ -170,7 +173,7 @@ abstract class Dashboard
*/
public function FromDOMDocumentV2(DesignElement $oDOMNode)
{
$aDashboardValues = XMLSerializer::GetInstance()->Deserialize($oDOMNode, 'DashboardGrid', 'Dashboard');
$aDashboardValues = $this->oXMLSerializer->Deserialize($oDOMNode, 'DashboardGrid', 'Dashboard');
$this->FromModelData($aDashboardValues);
}

View File

@@ -14,8 +14,8 @@ class DashletFormBlock extends FormBlock
public function __construct(string $sName, array $aOptions = [])
{
parent::__construct($sName, $aOptions);
$this->oPropertyTypeService = MetaModel::GetService('PropertyTypeService');
parent::__construct($sName, $aOptions);
}
protected function BuildForm(): void

View File

@@ -0,0 +1,22 @@
<?php
/*
* @copyright Copyright (C) 2010-2026 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*/
namespace Combodo\iTop\Forms\Block\Base;
use Combodo\iTop\Forms\Block\AbstractTypeFormBlock;
use Symfony\Component\Form\Extension\Core\Type\FileType;
class FileFormBlock extends AbstractTypeFormBlock
{
/**
* @inheritDoc
*/
public function GetFormType(): string
{
return FileType::class;
}
}

View File

@@ -20,21 +20,10 @@ use utils;
*/
class PropertyTypeCompiler
{
private static PropertyTypeCompiler $oInstance;
protected function __construct()
public function __construct()
{
}
final public static function GetInstance(): PropertyTypeCompiler
{
if (!isset(static::$oInstance)) {
static::$oInstance = new PropertyTypeCompiler();
}
return static::$oInstance;
}
/**
* @param string $sXMLContent
*

View File

@@ -21,10 +21,12 @@ class PropertyTypeService
public const FORM_CACHE_POOL = 'Forms';
private DataModelDependantCache $oCacheService;
private PropertyTypeCompiler $oCompiler;
public function __construct()
{
$this->oCacheService = MetaModel::GetService('DataModelDependantCache');
$this->oCompiler = MetaModel::GetService('PropertyTypeCompiler');
}
/**
@@ -44,7 +46,7 @@ class PropertyTypeService
if (!$this->oCacheService->HasEntry(self::FORM_CACHE_POOL, $sCacheKey) || utils::IsDevelopmentEnvironment()) {
// Cache not found, compile the form
$sPHPContent = PropertyTypeCompiler::GetInstance()->CompileForm($sFilteredId, $sType);
$sPHPContent = $this->oCompiler->CompileForm($sFilteredId, $sType);
$this->oCacheService->StorePhpContent(self::FORM_CACHE_POOL, $sCacheKey, "<?php\n\n$sPHPContent");
}
$this->oCacheService->FetchPHP(self::FORM_CACHE_POOL, $sCacheKey);
@@ -63,14 +65,14 @@ class PropertyTypeService
*/
public function ListPropertyTypesByType(string $sType): array
{
return PropertyTypeCompiler::GetInstance()->ListPropertyTypesByType($sType);
return $this->oCompiler->ListPropertyTypesByType($sType);
}
public function GetPropertyType(string $sId, string $sType = 'Dashlet'): PropertyType
{
$sXML = PropertyTypeCompiler::GetInstance()->GetXMLContent($sId, $sType);
$sXML = $this->oCompiler->GetXMLContent($sId, $sType);
return PropertyTypeCompiler::GetInstance()->CompilePropertyTypeFromXML($sXML);
return $this->oCompiler->CompilePropertyTypeFromXML($sXML);
}
/**

View File

@@ -14,45 +14,37 @@ use Combodo\iTop\PropertyType\ValueType\AbstractValueType;
class XMLSerializer
{
private static XMLSerializer $oInstance;
private PropertyTypeCompiler $oCompiler;
protected function __construct()
public function __construct()
{
}
final public static function GetInstance(): XMLSerializer
{
if (!isset(static::$oInstance)) {
static::$oInstance = new XMLSerializer();
}
return static::$oInstance;
$this->oCompiler = \MetaModel::GetService('PropertyTypeCompiler');
}
public function Serialize(mixed $value, DesignElement $oParentNode, string $sId, string $sType): void
{
$sPropertyTypeXML = PropertyTypeCompiler::GetInstance()->GetXMLContent($sId, $sType);
$sPropertyTypeXML = $this->oCompiler->GetXMLContent($sId, $sType);
$this->SerializeForPropertyType($value, $oParentNode, $sPropertyTypeXML);
}
public function Deserialize(DesignElement $oDOMNode, string $sId, string $sType): mixed
{
$sPropertyTypeXML = PropertyTypeCompiler::GetInstance()->GetXMLContent($sId, $sType);
$sPropertyTypeXML = $this->oCompiler->GetXMLContent($sId, $sType);
return $this->DeserializeForPropertyType($oDOMNode, $sPropertyTypeXML);
}
public function SerializeForPropertyType(mixed $value, DesignElement $oParentNode, string $sPropertyTypeXML): void
{
$oPropertyType = PropertyTypeCompiler::GetInstance()->CompilePropertyTypeFromXML($sPropertyTypeXML);
$oPropertyType = $this->oCompiler->CompilePropertyTypeFromXML($sPropertyTypeXML);
$oPropertyType->SerializeToDOMNode($value, $oParentNode);
}
public function DeserializeForPropertyType(DesignElement $oParentNode, string $sPropertyTypeXML): mixed
{
$oPropertyType = PropertyTypeCompiler::GetInstance()->CompilePropertyTypeFromXML($sPropertyTypeXML);
$oPropertyType = $this->oCompiler->CompilePropertyTypeFromXML($sPropertyTypeXML);
return $oPropertyType->DeserializeFromDOMNode($oParentNode);
}

View File

@@ -8,14 +8,18 @@
use Combodo\iTop\Application\Dashlet\Service\DashletService;
use Combodo\iTop\Forms\Block\FormBlockService;
use Combodo\iTop\Forms\FormBuilder\FormFactoryBuilderService;
use Combodo\iTop\PropertyType\Compiler\PropertyTypeCompiler;
use Combodo\iTop\PropertyType\PropertyTypeService;
use Combodo\iTop\PropertyType\Serializer\XMLSerializer;
use Combodo\iTop\Service\Cache\DataModelDependantCache;
use Symfony\Component\Security\Csrf\CsrfTokenManager;
return [
'ModelReflection' => ModelReflectionRuntime::class,
'DashletService' => DashletService::class,
'PropertyTypeCompiler' => PropertyTypeCompiler::class,
'PropertyTypeService' => PropertyTypeService::class,
'XMLSerializer' => XMLSerializer::class,
'DataModelDependantCache' => DataModelDependantCache::class,
'FormBlockService' => FormBlockService::class,
'CsrfTokenManager' => CsrfTokenManager::class,

View File

@@ -37,7 +37,8 @@ class DashboardSerializerTest extends ItopDataTestCase
$oRootNode->setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
$oDOMDocument->appendChild($oRootNode);
Combodo\iTop\PropertyType\Serializer\XMLSerializer::GetInstance()->Serialize($normalizedValue, $oRootNode, 'DashboardGrid', 'Dashboard');
$oXMLSerializer = MetaModel::GetService('XMLSerializer');
$oXMLSerializer->Serialize($normalizedValue, $oRootNode, 'DashboardGrid', 'Dashboard');
$sActualXML = $oDOMDocument->saveXML();

View File

@@ -24,7 +24,8 @@ class FormsCompilerTest extends ItopDataTestCase
*/
public function testCompileFormFromXML(string $sXMLContent, string $sExpectedPHP)
{
$sProducedPHP = PropertyTypeCompiler::GetInstance()->CompileFormFromXML($sXMLContent);
$oCompiler = MetaModel::GetService('PropertyTypeCompiler');
$sProducedPHP = $oCompiler->CompileFormFromXML($sXMLContent);
$this->AssertPHPCodeIsValid($sProducedPHP);
$sMessage = $this->dataName();
@@ -669,7 +670,8 @@ PHP,
{
$this->expectException($sExpectedClass);
$this->expectExceptionMessage($sExpectedMessage);
PropertyTypeCompiler::GetInstance()->CompileFormFromXML($sXMLContent);
$oCompiler = MetaModel::GetService('PropertyTypeCompiler');
$oCompiler->CompileFormFromXML($sXMLContent);
}
public function CompileFormFromInvalidXMLProvider()
@@ -885,7 +887,8 @@ class FormFor__basic_test_for_icon extends Combodo\iTop\Forms\Block\Base\FormBlo
PHP;
$sProducedPHP = PropertyTypeCompiler::GetInstance()->CompileFormFromXML($sXMLContent);
$oCompiler = MetaModel::GetService('PropertyTypeCompiler');
$sProducedPHP = $oCompiler->CompileFormFromXML($sXMLContent);
$this->AssertPHPCodeIsValid($sProducedPHP);
$this->assertStringStartsWith($sExpectedStart, $sProducedPHP);
@@ -920,7 +923,8 @@ class FormFor__basic_test_for_class extends Combodo\iTop\Forms\Block\Base\FormBl
PHP;
$sProducedPHP = PropertyTypeCompiler::GetInstance()->CompileFormFromXML($sXMLContent);
$oCompiler = MetaModel::GetService('PropertyTypeCompiler');
$sProducedPHP = $oCompiler->CompileFormFromXML($sXMLContent);
$this->AssertPHPCodeIsValid($sProducedPHP);
$this->assertStringStartsWith($sExpectedStart, $sProducedPHP);

View File

@@ -34,7 +34,8 @@ class XMLSerializerTest extends ItopDataTestCase
$oDOMDocument->appendChild($oRootNode);
Combodo\iTop\PropertyType\Serializer\XMLSerializer::GetInstance()->SerializeForPropertyType($normalizedValue, $oRootNode, $sPropertyTypeXML);
$oXMLSerializer = MetaModel::GetService('XMLSerializer');
$oXMLSerializer->SerializeForPropertyType($normalizedValue, $oRootNode, $sPropertyTypeXML);
$sActualXML = $oDOMDocument->saveXML();
@@ -372,7 +373,8 @@ XML,
/** @var \Combodo\iTop\DesignElement $oRoot */
$oRoot = $oDoc->firstChild;
$aActualValue = Combodo\iTop\PropertyType\Serializer\XMLSerializer::GetInstance()->DeserializeForPropertyType($oRoot, $sPropertyTypeXML);
$oXMLSerializer = MetaModel::GetService('XMLSerializer');
$aActualValue = $oXMLSerializer->DeserializeForPropertyType($oRoot, $sPropertyTypeXML);
$this->assertEquals($normalizedValue, $aActualValue);
}