Example #1
0
 /**
  * @param ReflectionClass $reflClass
  * @param object          $object
  * @param string          $propertyName
  * @param Metadata        $metadata
  * @param array           $originalData
  * @param MultiExec       $transaction
  */
 protected function handleIndex(ReflectionClass $reflClass, $object, $propertyName, $keyName, Metadata $metadata, array $originalData, $transaction)
 {
     $property = $reflClass->getProperty($propertyName);
     $property->setAccessible(true);
     $value = $property->getValue($object);
     $mapping = $metadata->getPropertyMapping($propertyName);
     // Grab the intval here to prevent boolean false from being string cast to "" instead of "0"
     if (DataTypes::BOOLEAN === $mapping['type']) {
         $value = intval($value);
     } elseif (DataTypes::HASH == $mapping['type']) {
         foreach ($value as $key => $val) {
             if (null === $val && isset($originalData[$mapping['name'] . ':' . $key]) || isset($originalData[$mapping['name'] . ':' . $key]) && $originalData[$mapping['name'] . ':' . $key] != $val) {
                 $transaction->srem($this->keyNamingStrategy->getKeyName(array($key, $originalData[$mapping['name'] . ':' . $key])), $this->getIdForClass($object, $metadata));
             }
             $transaction->sadd($this->keyNamingStrategy->getKeyName(array($key, $val)), $this->getIdForClass($object, $metadata));
         }
         return;
     }
     if (null === $value && isset($originalData[$keyName]) || isset($originalData[$keyName]) && $value !== $originalData[$keyName]) {
         $key = $this->keyNamingStrategy->getKeyName(array($keyName, $originalData[$keyName]));
         $transaction->srem($key, $this->getIdForClass($object, $metadata));
     }
     $key = $this->keyNamingStrategy->getKeyName(array($keyName, $value));
     $transaction->sadd($key, $this->getIdForClass($object, $metadata));
 }
 /**
  * @param ReflectionClass $reflClass
  * @param object          $object
  * @param string          $propertyName
  * @param Metadata        $metadata
  * @param array           $originalData
  * @param MultiExec       $transaction
  */
 protected function handleIndex(ReflectionClass $reflClass, $object, $propertyName, $keyName, Metadata $metadata, array $originalData, $transaction)
 {
     $property = $reflClass->getProperty($propertyName);
     $property->setAccessible(true);
     $value = $property->getValue($object);
     $mapping = $metadata->getPropertyMapping($propertyName);
     if (DataTypes::HASH == $mapping['type']) {
         foreach ($value as $key => $val) {
             if (null === $val && isset($originalData[$mapping['name'] . ':' . $key]) || isset($originalData[$mapping['name'] . ':' . $key]) && $originalData[$mapping['name'] . ':' . $key] != $val) {
                 $transaction->srem($this->keyNamingStrategy->getKeyName(array($key, $originalData[$mapping['name'] . ':' . $key])), $this->getIdForClass($object, $metadata));
             }
             $transaction->sadd($this->keyNamingStrategy->getKeyName(array($key, $val)), $this->getIdForClass($object, $metadata));
         }
         return;
     }
     if (null === $value && isset($originalData[$keyName]) || isset($originalData[$keyName]) && $value !== $originalData[$keyName]) {
         $key = $this->keyNamingStrategy->getKeyName(array($keyName, $originalData[$keyName]));
         $transaction->srem($key, $this->getIdForClass($object, $metadata));
     }
     $key = $this->keyNamingStrategy->getKeyName(array($keyName, $value));
     $transaction->sadd($key, $this->getIdForClass($object, $metadata));
 }