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']); } }
/** * 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); }