public function hydrate($document, $data, array $hints = array())
 {
     $hydratedData = array();
     /** @Field(type="id") */
     if (isset($data['_id'])) {
         $value = $data['_id'];
         $return = $value instanceof \MongoId ? (string) $value : $value;
         $this->class->reflFields['id']->setValue($document, $return);
         $hydratedData['id'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['created_at'])) {
         $value = $data['created_at'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['created_at']->setValue($document, clone $return);
         $hydratedData['created_at'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['path'])) {
         $value = $data['path'];
         $return = (string) $value;
         $this->class->reflFields['path']->setValue($document, $return);
         $hydratedData['path'] = $return;
     }
     return $hydratedData;
 }
 public function hydrate($document, $data, array $hints = array())
 {
     $hydratedData = array();
     /** @Field(type="id") */
     if (isset($data['_id'])) {
         $value = $data['_id'];
         $return = $value instanceof \MongoId ? (string) $value : $value;
         $this->class->reflFields['id']->setValue($document, $return);
         $hydratedData['id'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['since'])) {
         $value = $data['since'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['since']->setValue($document, clone $return);
         $hydratedData['since'] = $return;
     }
     /** @Many */
     $mongoData = isset($data['users']) ? $data['users'] : null;
     $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork);
     $return->setHints($hints);
     $return->setOwner($document, $this->class->fieldMappings['users']);
     $return->setInitialized(false);
     if ($mongoData) {
         $return->setMongoData($mongoData);
     }
     $this->class->reflFields['users']->setValue($document, $return);
     $hydratedData['users'] = $return;
     /** @Field(type="boolean") */
     if (isset($data['verified'])) {
         $value = $data['verified'];
         $return = (bool) $value;
         $this->class->reflFields['verified']->setValue($document, $return);
         $hydratedData['verified'] = $return;
     }
     /** @Field(type="boolean") */
     if (isset($data['sent'])) {
         $value = $data['sent'];
         $return = (bool) $value;
         $this->class->reflFields['sent']->setValue($document, $return);
         $hydratedData['sent'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['lastContact'])) {
         $value = $data['lastContact'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['lastContact']->setValue($document, clone $return);
         $hydratedData['lastContact'] = $return;
     }
     return $hydratedData;
 }
 public function hydrate($document, $data, array $hints = array())
 {
     $hydratedData = array();
     /** @Field(type="id") */
     if (isset($data['_id'])) {
         $value = $data['_id'];
         $return = $value instanceof \MongoId ? (string) $value : $value;
         $this->class->reflFields['id']->setValue($document, $return);
         $hydratedData['id'] = $return;
     }
     /** @ReferenceOne */
     if (isset($data['author'])) {
         $reference = $data['author'];
         if (isset($this->class->fieldMappings['author']['simple']) && $this->class->fieldMappings['author']['simple']) {
             $className = $this->class->fieldMappings['author']['targetDocument'];
             $mongoId = $reference;
         } else {
             $className = $this->unitOfWork->getClassNameForAssociation($this->class->fieldMappings['author'], $reference);
             $mongoId = $reference['$id'];
         }
         $targetMetadata = $this->dm->getClassMetadata($className);
         $id = $targetMetadata->getPHPIdentifierValue($mongoId);
         $return = $this->dm->getReference($className, $id);
         $this->class->reflFields['author']->setValue($document, $return);
         $hydratedData['author'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['date'])) {
         $value = $data['date'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['date']->setValue($document, clone $return);
         $hydratedData['date'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['text'])) {
         $value = $data['text'];
         $return = (string) $value;
         $this->class->reflFields['text']->setValue($document, $return);
         $hydratedData['text'] = $return;
     }
     /** @Many */
     $mongoData = isset($data['replies']) ? $data['replies'] : null;
     $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork);
     $return->setHints($hints);
     $return->setOwner($document, $this->class->fieldMappings['replies']);
     $return->setInitialized(false);
     if ($mongoData) {
         $return->setMongoData($mongoData);
     }
     $this->class->reflFields['replies']->setValue($document, $return);
     $hydratedData['replies'] = $return;
     return $hydratedData;
 }
 public function convertToPHPValue($value)
 {
     if (!$value instanceof \MongoDate) {
         return parent::convertToPHPValue($value);
     }
     $date = new \Staffim\TimestampableBundle\DateTime\DateTime($value->sec);
     $date->setMilliseconds($value->usec / 1000);
     return $date;
 }
示例#5
0
 /**
  * Convert PHP value to MongoDb representation
  *
  * @param mixed $value Value to convert
  * @return \MongoDate[]
  */
 public static function convertToDb($value)
 {
     if (!is_array($value)) {
         return [];
     }
     // see DateType::convertToDatabaseValue()
     $convertor = function ($value) {
         if ($value === null || $value instanceof \MongoDate) {
             return $value;
         }
         try {
             $datetime = DateType::getDateTime($value);
             return new \MongoDate($datetime->format('U'), $datetime->format('u'));
         } catch (\InvalidArgumentException $e) {
             return null;
         }
     };
     return array_values(array_filter(array_map($convertor, $value)));
 }
 public function hydrate($document, $data, array $hints = array())
 {
     $hydratedData = array();
     /** @Field(type="id") */
     if (isset($data['_id'])) {
         $value = $data['_id'];
         $return = $value instanceof \MongoId ? (string) $value : $value;
         $this->class->reflFields['id']->setValue($document, $return);
         $hydratedData['id'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['userName'])) {
         $value = $data['userName'];
         $return = (string) $value;
         $this->class->reflFields['userName']->setValue($document, $return);
         $hydratedData['userName'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['email'])) {
         $value = $data['email'];
         $return = (string) $value;
         $this->class->reflFields['email']->setValue($document, $return);
         $hydratedData['email'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['password'])) {
         $value = $data['password'];
         $return = (string) $value;
         $this->class->reflFields['password']->setValue($document, $return);
         $hydratedData['password'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['firstName'])) {
         $value = $data['firstName'];
         $return = (string) $value;
         $this->class->reflFields['firstName']->setValue($document, $return);
         $hydratedData['firstName'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['lastName'])) {
         $value = $data['lastName'];
         $return = (string) $value;
         $this->class->reflFields['lastName']->setValue($document, $return);
         $hydratedData['lastName'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['status'])) {
         $value = $data['status'];
         $return = (string) $value;
         $this->class->reflFields['status']->setValue($document, $return);
         $hydratedData['status'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['created'])) {
         $value = $data['created'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['created']->setValue($document, clone $return);
         $hydratedData['created'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['lastLogin'])) {
         $value = $data['lastLogin'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['lastLogin']->setValue($document, clone $return);
         $hydratedData['lastLogin'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['lastLogout'])) {
         $value = $data['lastLogout'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['lastLogout']->setValue($document, clone $return);
         $hydratedData['lastLogout'] = $return;
     }
     /** @EmbedOne */
     if (isset($data['profile'])) {
         $embeddedDocument = $data['profile'];
         $className = $this->unitOfWork->getClassNameForAssociation($this->class->fieldMappings['profile'], $embeddedDocument);
         $embeddedMetadata = $this->dm->getClassMetadata($className);
         $return = $embeddedMetadata->newInstance();
         $embeddedData = $this->dm->getHydratorFactory()->hydrate($return, $embeddedDocument, $hints);
         $embeddedId = $embeddedMetadata->identifier && isset($embeddedData[$embeddedMetadata->identifier]) ? $embeddedData[$embeddedMetadata->identifier] : null;
         $this->unitOfWork->registerManaged($return, $embeddedId, $embeddedData);
         $this->unitOfWork->setParentAssociation($return, $this->class->fieldMappings['profile'], $document, 'profile');
         $this->class->reflFields['profile']->setValue($document, $return);
         $hydratedData['profile'] = $return;
     }
     /** @Many */
     $mongoData = isset($data['messages']) ? $data['messages'] : null;
     $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork);
     $return->setHints($hints);
     $return->setOwner($document, $this->class->fieldMappings['messages']);
     $return->setInitialized(false);
     if ($mongoData) {
         $return->setMongoData($mongoData);
     }
     $this->class->reflFields['messages']->setValue($document, $return);
     $hydratedData['messages'] = $return;
     /** @Many */
     $mongoData = isset($data['connectedToMe']) ? $data['connectedToMe'] : null;
     $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork);
     $return->setHints($hints);
     $return->setOwner($document, $this->class->fieldMappings['connectedToMe']);
     $return->setInitialized(false);
     if ($mongoData) {
         $return->setMongoData($mongoData);
     }
     $this->class->reflFields['connectedToMe']->setValue($document, $return);
     $hydratedData['connectedToMe'] = $return;
     /** @Many */
     $mongoData = isset($data['myConnections']) ? $data['myConnections'] : null;
     $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork);
     $return->setHints($hints);
     $return->setOwner($document, $this->class->fieldMappings['myConnections']);
     $return->setInitialized(false);
     if ($mongoData) {
         $return->setMongoData($mongoData);
     }
     $this->class->reflFields['myConnections']->setValue($document, $return);
     $hydratedData['myConnections'] = $return;
     /** @Many */
     $mongoData = isset($data['posts']) ? $data['posts'] : null;
     $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork);
     $return->setHints($hints);
     $return->setOwner($document, $this->class->fieldMappings['posts']);
     $return->setInitialized(false);
     if ($mongoData) {
         $return->setMongoData($mongoData);
     }
     $this->class->reflFields['posts']->setValue($document, $return);
     $hydratedData['posts'] = $return;
     /** @Many */
     $mongoData = isset($data['skills']) ? $data['skills'] : null;
     $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork);
     $return->setHints($hints);
     $return->setOwner($document, $this->class->fieldMappings['skills']);
     $return->setInitialized(false);
     if ($mongoData) {
         $return->setMongoData($mongoData);
     }
     $this->class->reflFields['skills']->setValue($document, $return);
     $hydratedData['skills'] = $return;
     return $hydratedData;
 }
 public function hydrate($document, $data, array $hints = array())
 {
     $hydratedData = array();
     /** @Field(type="id") */
     if (isset($data['_id'])) {
         $value = $data['_id'];
         $return = $value instanceof \MongoId ? (string) $value : $value;
         $this->class->reflFields['id']->setValue($document, $return);
         $hydratedData['id'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['name'])) {
         $value = $data['name'];
         $return = (string) $value;
         $this->class->reflFields['name']->setValue($document, $return);
         $hydratedData['name'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['alias'])) {
         $value = $data['alias'];
         $return = (string) $value;
         $this->class->reflFields['alias']->setValue($document, $return);
         $hydratedData['alias'] = $return;
     }
     /** @Field(type="int") */
     if (isset($data['state'])) {
         $value = $data['state'];
         $return = (int) $value;
         $this->class->reflFields['state']->setValue($document, $return);
         $hydratedData['state'] = $return;
     }
     /** @Field(type="boolean") */
     if (isset($data['featured'])) {
         $value = $data['featured'];
         $return = (bool) $value;
         $this->class->reflFields['featured']->setValue($document, $return);
         $hydratedData['featured'] = $return;
     }
     /** @Field(type="boolean") */
     if (isset($data['menu'])) {
         $value = $data['menu'];
         $return = (bool) $value;
         $this->class->reflFields['menu']->setValue($document, $return);
         $hydratedData['menu'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['description'])) {
         $value = $data['description'];
         $return = (string) $value;
         $this->class->reflFields['description']->setValue($document, $return);
         $hydratedData['description'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['content'])) {
         $value = $data['content'];
         $return = (string) $value;
         $this->class->reflFields['content']->setValue($document, $return);
         $hydratedData['content'] = $return;
     }
     /** @ReferenceOne */
     if (isset($data['parent'])) {
         $reference = $data['parent'];
         if (isset($this->class->fieldMappings['parent']['simple']) && $this->class->fieldMappings['parent']['simple']) {
             $className = $this->class->fieldMappings['parent']['targetDocument'];
             $mongoId = $reference;
         } else {
             $className = $this->unitOfWork->getClassNameForAssociation($this->class->fieldMappings['parent'], $reference);
             $mongoId = $reference['$id'];
         }
         $targetMetadata = $this->dm->getClassMetadata($className);
         $id = $targetMetadata->getPHPIdentifierValue($mongoId);
         $return = $this->dm->getReference($className, $id);
         $this->class->reflFields['parent']->setValue($document, $return);
         $hydratedData['parent'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['created'])) {
         $value = $data['created'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['created']->setValue($document, clone $return);
         $hydratedData['created'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['updated'])) {
         $value = $data['updated'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['updated']->setValue($document, clone $return);
         $hydratedData['updated'] = $return;
     }
     /** @ReferenceOne */
     if (isset($data['author'])) {
         $reference = $data['author'];
         if (isset($this->class->fieldMappings['author']['simple']) && $this->class->fieldMappings['author']['simple']) {
             $className = $this->class->fieldMappings['author']['targetDocument'];
             $mongoId = $reference;
         } else {
             $className = $this->unitOfWork->getClassNameForAssociation($this->class->fieldMappings['author'], $reference);
             $mongoId = $reference['$id'];
         }
         $targetMetadata = $this->dm->getClassMetadata($className);
         $id = $targetMetadata->getPHPIdentifierValue($mongoId);
         $return = $this->dm->getReference($className, $id);
         $this->class->reflFields['author']->setValue($document, $return);
         $hydratedData['author'] = $return;
     }
     return $hydratedData;
 }
 public function hydrate($document, $data, array $hints = array())
 {
     $hydratedData = array();
     /** @Field(type="string") */
     if (isset($data['username'])) {
         $value = $data['username'];
         $return = (string) $value;
         $this->class->reflFields['username']->setValue($document, $return);
         $hydratedData['username'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['usernameCanonical'])) {
         $value = $data['usernameCanonical'];
         $return = (string) $value;
         $this->class->reflFields['usernameCanonical']->setValue($document, $return);
         $hydratedData['usernameCanonical'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['email'])) {
         $value = $data['email'];
         $return = (string) $value;
         $this->class->reflFields['email']->setValue($document, $return);
         $hydratedData['email'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['emailCanonical'])) {
         $value = $data['emailCanonical'];
         $return = (string) $value;
         $this->class->reflFields['emailCanonical']->setValue($document, $return);
         $hydratedData['emailCanonical'] = $return;
     }
     /** @Field(type="boolean") */
     if (isset($data['enabled'])) {
         $value = $data['enabled'];
         $return = (bool) $value;
         $this->class->reflFields['enabled']->setValue($document, $return);
         $hydratedData['enabled'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['salt'])) {
         $value = $data['salt'];
         $return = (string) $value;
         $this->class->reflFields['salt']->setValue($document, $return);
         $hydratedData['salt'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['password'])) {
         $value = $data['password'];
         $return = (string) $value;
         $this->class->reflFields['password']->setValue($document, $return);
         $hydratedData['password'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['lastLogin'])) {
         $value = $data['lastLogin'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['lastLogin']->setValue($document, clone $return);
         $hydratedData['lastLogin'] = $return;
     }
     /** @Field(type="boolean") */
     if (isset($data['locked'])) {
         $value = $data['locked'];
         $return = (bool) $value;
         $this->class->reflFields['locked']->setValue($document, $return);
         $hydratedData['locked'] = $return;
     }
     /** @Field(type="boolean") */
     if (isset($data['expired'])) {
         $value = $data['expired'];
         $return = (bool) $value;
         $this->class->reflFields['expired']->setValue($document, $return);
         $hydratedData['expired'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['expiresAt'])) {
         $value = $data['expiresAt'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['expiresAt']->setValue($document, clone $return);
         $hydratedData['expiresAt'] = $return;
     }
     /** @Field(type="string") */
     if (isset($data['confirmationToken'])) {
         $value = $data['confirmationToken'];
         $return = (string) $value;
         $this->class->reflFields['confirmationToken']->setValue($document, $return);
         $hydratedData['confirmationToken'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['passwordRequestedAt'])) {
         $value = $data['passwordRequestedAt'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['passwordRequestedAt']->setValue($document, clone $return);
         $hydratedData['passwordRequestedAt'] = $return;
     }
     /** @Field(type="collection") */
     if (isset($data['roles'])) {
         $value = $data['roles'];
         $return = $value;
         $this->class->reflFields['roles']->setValue($document, $return);
         $hydratedData['roles'] = $return;
     }
     /** @Field(type="boolean") */
     if (isset($data['credentialsExpired'])) {
         $value = $data['credentialsExpired'];
         $return = (bool) $value;
         $this->class->reflFields['credentialsExpired']->setValue($document, $return);
         $hydratedData['credentialsExpired'] = $return;
     }
     /** @Field(type="date") */
     if (isset($data['credentialsExpireAt'])) {
         $value = $data['credentialsExpireAt'];
         if ($value === null) {
             $return = null;
         } else {
             $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value);
         }
         $this->class->reflFields['credentialsExpireAt']->setValue($document, clone $return);
         $hydratedData['credentialsExpireAt'] = $return;
     }
     return $hydratedData;
 }
 /**
  * Converts a value to a DateTimeImmutable.
  *
  * Supports microseconds.
  *
  * @throws InvalidArgumentException if $value is invalid
  * @param \DateTimeInterface|\MongoDate|int|float $value
  * @return DateTimeImmutable
  */
 public static function getDateTime($value)
 {
     $dateTime = parent::getDateTime($value);
     return $dateTime instanceof DateTimeImmutable ? $dateTime : self::createImmutableDateTimeFromMutable($dateTime);
 }