public function onSerializerPreDeserialize(PreDeserializeEvent $e) { $className = $e->getType(); $className = $className['name']; /** Handle ArrayCollection or array JMS type. */ if ($className == "ArrayCollection" || $className == "array") { $className = $e->getType(); $className = $className['params'][0]['name']; } $classMetadata = $e->getContext()->getMetadataFactory()->getMetadataForClass($className); /** @var PropertyMetadata $propertyMetadata */ foreach ($classMetadata->propertyMetadata as $propertyMetadata) { if ($propertyMetadata->reflection === null) { continue; } /** @var JoinColumn $joinColumnAnnotation */ $joinColumnAnnotation = $this->reader->getPropertyAnnotation($propertyMetadata->reflection, 'Doctrine\\ORM\\Mapping\\JoinColumn'); if ($joinColumnAnnotation !== null) { if (array_key_exists($joinColumnAnnotation->name, $e->getData())) { $idValue = $e->getData(); $idValue = $idValue[$joinColumnAnnotation->name]; if ($idValue !== null) { $e->setData($e->getData() + array($propertyMetadata->name => array('id' => $idValue))); } else { $e->setData($e->getData() + array($propertyMetadata->name => null)); } } } } }
public function onPreDeserialize(PreDeserializeEvent $event) { $type = $event->getType(); if ($type['name'] === 'DateTime' && $event->getData() === '') { $event->setData(null); } }
/** * remove translateable strings from object * * @param PreDeserializeEvent $event event * * @return void */ public function onPreDeserialize(PreDeserializeEvent $event) { $eventClass = $event->getType()['name']; if (!class_exists($eventClass)) { throw new DeserializationException(sprintf('Can\' find class %s to deserialize', $eventClass)); } $object = new $eventClass(); if ($object instanceof TranslatableDocumentInterface) { $data = $event->getData(); foreach ($object->getTranslatableFields() as $field) { $isArray = substr($field, -2, 2) === '[]'; if ($isArray) { $field = substr($field, 0, -2); } if (!isset($data[$field])) { continue; } if ($isArray) { $this->localizedFields = array_merge($this->localizedFields, array_values($data[$field])); $data[$field] = array_map([$this, 'getDefaultTranslation'], array_values($data[$field])); } else { $this->localizedFields[] = $data[$field]; $data[$field] = $this->getDefaultTranslation($data[$field]); } } $event->setData($data); } }
/** * @param PreDeserializeEvent $event */ public function onPreDeserialize(PreDeserializeEvent $event) { $data = $event->getData(); $type = $event->getType(); if (is_array($data) && array_key_exists('queries', $data)) { $event->setData($data['queries']); } }
public function wrapData(PreDeserializeEvent $event) { $type = $event->getType(); if (is_subclass_of($type['name'], 'XApi\\Model\\DocumentInterface')) { $data = $event->getData(); $event->setData(array('data' => $data)); } }
public function wrapData(PreDeserializeEvent $event) { $type = $event->getType(); $handledClass = 'Xabbuh\\XApi\\Model\\DocumentData'; if ($handledClass == $type['name'] || is_subclass_of($type['name'], $handledClass)) { $data = $event->getData(); $event->setData(array('data' => $data)); } }
public function preDeserialize(PreDeserializeEvent $event) { $postData = $event->getData(); $request = $this->requestStack->getCurrentRequest(); $id = $request->get('id'); if ($id !== null) { $postData['id'] = $id; $event->setData($postData); } }
/** * @param PreDeserializeEvent $event */ public function __invoke(PreDeserializeEvent $event) { if ($event->getType()['name'] !== Video::class) { return; } $data = $event->getData(); $this->formatTimestamp($data, 'createdDate'); $this->formatTimestamp($data, 'uploadDate'); $event->setData($data); }
public function onPreDeserialize(PreDeserializeEvent $event) { $type = $event->getType(); if ($this->supportsClass($type['name'])) { $data = $event->getData(); if ($this->isDataModificationNeeded($data)) { $data = array_merge($data, $this->getAdditionalData()); } $event->setData($data); } }
/** * Appends an array element to the parameters of a job that provides information about the job type. * * @param PreDeserializeEvent $event */ public function onPreDeserialize(PreDeserializeEvent $event) { $type = $event->getType(); if (isset($type['name']) && ($type['name'] == Job::class || is_subclass_of($type['name'], Job::class))) { $data = $event->getData(); if (isset($data['type']) && isset($data['parameters']) && is_array($data['parameters']) && count($data['parameters']) > 0) { array_push($data['parameters'], ['abc.job.type' => $data['type']]); $event->setData($data); } } }
/** * Bad dates cause fatal errors, and this is the best remedy I've found so far. * The date time handler is brought in so that I can trap the exception that * happens when feeds have dates like NaN/NaN/NaN NaN:NaN:NaN. * * @param PreDeserializeEvent $event */ public function onPreDeserialize(PreDeserializeEvent $event) { $type = $event->getType(); if ($type['name'] == 'DateTime') { /** @var VisitorInterface $visitor */ $visitor = $event->getVisitor(); /** @var \SimpleXMLElement $data */ $data = $event->getData(); try { $this->handler->deserializeDateTimeFromXml($visitor, $data, $type); } catch (RuntimeException $e) { $attributes = $data->attributes('xsi', true); if (!isset($attributes['nil'][0]) || (string) $attributes['nil'][0] == !'true') { $data->addAttribute('xsi:nil', 'true', 'http://www.w3.org/2001/XMLSchema-instance'); } $event->setData($data); } } }
/** * remove translateable strings from object * * @param PreDeserializeEvent $event event * * @return void */ public function onPreDeserialize(PreDeserializeEvent $event) { $eventClass = $event->getType()['name']; if (!class_exists($eventClass)) { throw new DeserializationException(sprintf('Can\' find class %s to deserialize', $eventClass)); } $object = new $eventClass(); if ($object instanceof TranslatableDocumentInterface) { $defaultLanguage = $this->utils->getDefaultLanguage(); $data = $event->getData(); foreach ($object->getTranslatableFields() as $field) { if (isset($data[$field])) { $this->localizedFields[$field] = $data[$field]; $defaultValue = \reset($data[$field]); if (array_key_exists($defaultLanguage, $data[$field])) { $defaultValue = $data[$field][$defaultLanguage]; } $data[$field] = $defaultValue; } } $event->setData($data); } }