public function checkValidity($data, $omitMandatoryCheck = false)
{
$activeGroups = $data->getActiveGroups();
if (!$activeGroups) {
return;
}
$items = $data->getItems();
$validLanguages = $this->getValidLanguages();
$errors = [];
if (!$omitMandatoryCheck) {
foreach ($activeGroups as $activeGroupId => $enabled) {
if ($enabled) {
$groupDefinition = Object\Classificationstore\GroupConfig::getById($activeGroupId);
if (!$groupDefinition) {
continue;
}
/** @var $keyGroupRelation Object\Classificationstore\KeyGroupRelation */
$keyGroupRelations = $groupDefinition->getRelations();
foreach ($keyGroupRelations as $keyGroupRelation) {
foreach ($validLanguages as $validLanguage) {
$keyId = $keyGroupRelation->getKeyId();
$value = $items[$activeGroupId][$keyId][$validLanguage];
$keyDef = Object\Classificationstore\Service::getFieldDefinitionFromJson(json_decode($keyGroupRelation->getDefinition()), $keyGroupRelation->getType());
if ($keyGroupRelation->isMandatory()) {
$keyDef->setMandatory(1);
}
try {
$keyDef->checkValidity($value);
} catch (\Exception $e) {
$errors[] = $e;
}
}
}
}
}
}
if ($errors) {
$messages = [];
foreach ($errors as $e) {
$messages[] = $e->getMessage() . " (" . $validLanguage . ")";
}
$validationException = new Model\Element\ValidationException(implode(", ", $messages));
$validationException->setSubItems($errors);
throw $validationException;
}
}