Pimcore\Model\Object\ClassDefinition\Data\Classificationstore::checkValidity PHP Method

checkValidity() public method

Checks if data is valid for current data field
public checkValidity ( mixed $data, boolean $omitMandatoryCheck = false )
$data mixed
$omitMandatoryCheck boolean
    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;
        }
    }