Alle Systemfelder mit ID < 1000 werden beim Setup gelöscht
Problem
Der interne ID-Bereich für Felder, die mit fester ID von Plugins kommen, liegt bei 1 bis 1000. Ich habe z.B. ein Modul, welche die IDs 2xx
festlegt.
Beim Setup von quiqqer/products
werden jedoch immer alle Systemfelder mit ID < 1000 gelöscht, was ich nicht ganz nachvollziehen kann.
Es geht um folgende Code-Stelle (packages/quiqqer/products/src/QUI/ERP/Products/EventHandling.php::onPackageSetup
):
<?php
// ...
// prüfen welche system felder nicht mehr existieren
$systemFields = Fields::getFieldIds([
'where' => [
'systemField' => 1
]
]);
$fieldInStandardFields = function ($fieldId) use ($standardFields) {
foreach ($standardFields as $fieldData) {
if ($fieldId == $fieldData['id']) {
return true;
}
}
return false;
};
foreach ($systemFields as $systemFieldsId) {
$fieldId = (int)$systemFieldsId['id'];
if ($fieldId >= 1000 || $fieldInStandardFields($fieldId)) {
continue;
}
try {
$Field = Fields::getField($fieldId);
$Field->deleteSystemField();
} catch (QUI\Exception $Exception) {
QUI\System\Log::writeException($Exception, QUI\System\Log::LEVEL_WARNING);
}
}
// ...
Frage
- Warum werden alle Systemfelder gelöscht? Laut Code werden nur die Systemfelder nicht gelöscht, die entweder eine ID > 1000 haben (also händisch angelegt wurden) oder die zu den Standarfeldern ("Standard" => Automatisch per Setup angelegt) gehören.
- Kann man dieses Löschen nicht weglassen bzw. nur für IDs < 100?