Example #1
0
 /**
  *
  * @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;
 }
Example #2
0
 public function isFrozen($document, ClassMetadata $metadata)
 {
     return $metadata->getFieldValue($document, $metadata->getFreeze()['flag']);
 }
Example #3
0
 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();
         }
     }
 }