/** * * @param object $document * @return boolean */ public function isValid($document, ClassMetadata $metadata, ChangeSet $changeSet = null) { $result = new DocumentValidatorResult(['value' => true]); if (!($validatorMetadata = $metadata->getValidator())) { return $result; } // Field level validators if (isset($validatorMetadata['fields'])) { foreach ($validatorMetadata['fields'] as $field => $validatorDefinition) { //if a change set is provided, only validate fields that have changed if (isset($changeSet) && !$changeSet->hasField($field)) { continue; } $result->addFieldResult($field, $this->getValidator($validatorDefinition)->isValid($metadata->getFieldValue($document, $field))); } } // Document level validators if (isset($validatorMetadata['document'])) { $result->addClassResult($this->getValidator($validatorMetadata['document'])->isValid($document)); } return $result; }
public function isFrozen($document, ClassMetadata $metadata) { return $metadata->getFieldValue($document, $metadata->getFreeze()['flag']); }
public function isSoftDeleted($document, ClassMetadata $metadata) { return $metadata->getFieldValue($document, $metadata->getSoftDelete()['flag']); }
/** * Find translation entity by specified language using filter method from ArrayCollection class * * @param \Doctrine\Common\Collections\ArrayCollection $translates * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $translationMeta * @param string $translationLocaleField * @param mixed $locale * * @return ArrayCollection */ private function findTranslation(Collection $translations, ClassMetadata $translationMeta, $translationLocaleField, $locale) { $translations = $translations->filter(function ($translation) use($locale, $translationMeta, $translationLocaleField) { $translationLocale = $translationMeta->getFieldValue($translation, $translationLocaleField); if ($translationLocale === $locale) { return true; } else { return false; } }); if (!$translations->count()) { return null; } else { if ($translations->count() > 1) { throw new Exception\RuntimeException('Multiple translations found for one locale'); } else { return $translations->first(); } } }