Пример #1
0
 public function put(&$transport, &$object, $attributes = array())
 {
     parent::put($transport, $object, $attributes);
     if (isset($this->payload['package'])) {
         $this->payload['package'] = strtolower($this->payload['package']);
     }
     if (isset($this->payload['object']) && isset($this->payload['object']['package'])) {
         $this->payload['object']['package'] = strtolower($this->payload['object']['package']);
     }
 }
Пример #2
0
 /**
  * Put a representation of an xPDOObject collection into this vehicle.
  *
  * @param \xPDOTransport $transport The transport package hosting the vehicle.
  * @param mixed          &$object A reference to the artifact this vehicle will represent.
  * @param array          $attributes Additional attributes represented in the vehicle.
  */
 public function put(&$transport, &$object, $attributes = array())
 {
     $this->payload['guid'] = md5(uniqid(rand(), true));
     if (is_array($object)) {
         if (!isset($this->payload['object']) || !is_array($this->payload['object'])) {
             $this->payload['object'] = array();
         }
         $obj = reset($object);
         if (!isset($this->payload['package'])) {
             if ($obj instanceof \xPDOObject) {
                 $packageName = $obj->_package;
             } else {
                 $packageName = '';
             }
             $this->payload['package'] = $packageName;
         }
         if (!isset($this->payload['class']) && $obj instanceof \xPDOObject) {
             $this->payload['class'] = $obj->_class;
         }
         while ($obj) {
             $payload = array_merge($attributes, array('package' => $this->payload['package'], 'class' => $this->payload['class']));
             if ($obj instanceof \xPDOObject) {
                 $nativeKey = $obj->getPrimaryKey();
                 $payload['object'] = $obj->toJSON('', true);
                 $payload['guid'] = md5(uniqid(rand(), true));
                 $payload['native_key'] = $nativeKey;
                 $payload['signature'] = md5($payload['class'] . '_' . $payload['guid']);
                 if (isset($payload[\xPDOTransport::RELATED_OBJECTS]) && !empty($payload[\xPDOTransport::RELATED_OBJECTS])) {
                     $relatedObjects = array();
                     foreach ($obj->_relatedObjects as $rAlias => $related) {
                         if (is_array($related)) {
                             foreach ($related as $rKey => $rObj) {
                                 if (!isset($relatedObjects[$rAlias])) {
                                     $relatedObjects[$rAlias] = array();
                                 }
                                 $guid = md5(uniqid(rand(), true));
                                 $relatedObjects[$rAlias][$guid] = array();
                                 $this->_putRelated($transport, $rAlias, $rObj, $relatedObjects[$rAlias][$guid]);
                             }
                         } elseif (is_object($related)) {
                             if (!isset($relatedObjects[$rAlias])) {
                                 $relatedObjects[$rAlias] = array();
                             }
                             $guid = md5(uniqid(rand(), true));
                             $relatedObjects[$rAlias][$guid] = array();
                             $this->_putRelated($transport, $rAlias, $related, $relatedObjects[$rAlias][$guid]);
                         }
                     }
                     if (!empty($relatedObjects)) {
                         $payload['related_objects'] = $relatedObjects;
                     }
                 }
             } elseif (is_object($obj)) {
                 $payload['object'] = $transport->xpdo->toJSON(get_object_vars($obj));
                 $payload['native_key'] = $payload['guid'];
                 $payload['signature'] = md5($payload['class'] . '_' . $payload['guid']);
             }
             $this->payload['object'][] = $payload;
             $obj = next($object);
         }
     }
     parent::put($transport, $object, $attributes);
 }