/** * Save new set of data from a t41_Data_Object object using INSERT * * @param t41_Data_Object $do * @return boolean * @throws t41_Backend_Exception */ public function create(ObjectModel\DataObject $do) { // set database to use $this->_selectDatabase($do->getUri()); // get collection to use, from mapper if available, else from data object $collection = $this->_mapper instanceof Backend\Mapper ? $this->_mapper->getDatastore($do->getClass()) : $do->getClass(); $collec = $this->_db->selectCollection($collection); // get a valid data array passing mapper if any if ($this->_mapper) { $recordSet = $do->map($this->_mapper, 'backend', $this->_uri->getAlias()); } else { $recordSet = $do->toArray($this->_uri->getAlias()); } /* @todo check wether... */ try { $collec->insert($recordSet); } catch (\Exception $e) { // @todo decide whether to throw an exception or just save last message in a property die($e->getMessage()); return false; } // inject new t41_Object_Uri object in data object $uri = Backend::PREFIX . $this->_uri->getAlias() . '/' . $this->_database . '/' . $collection . '/' . $recordSet['_id']->__toString(); $uri = new ObjectModel\ObjectUri($uri, $this->_uri); $do->setUri($uri); return true; }
/** * Save new set of data from a t41_Data_Object object using INSERT * * @param t41_Data_Object $do * @return boolean * @throws t41_Backend_Exception */ public function create(ObjectModel\DataObject $do) { if (!$this->_setRessource($do->getClass())) { die('BACKEND_RESSOURCE_ERROR'); } // get a valid data array passing mapper if any if ($this->_mapper) { $recordSet = $do->map($this->_mapper); } else { $recordSet = $do->toArray(); } $id = md5(microtime() . get_class($this)); try { $root = $this->_ressource->getElementsByTagName($this->_rootName); $root = $root->item(0); if (!$root instanceof \DOMElement) { $root = $this->_ressource->createElement($this->_rootName); $this->_ressource->appendChild($root); } $node = $this->_ressource->createElement($this->_itemName); $node->setAttribute($this->_pkey, $id); foreach ($recordSet as $key => $value) { $tag = $this->_ressource->createElement($key, $value); $node->appendChild($tag); } $root->appendChild($node); $this->_saveRessource(); } catch (Exception $e) { // @todo decide wether throw an exception or just save last message in a property return false; } $uri = $id; if (!$this->_mapper instanceof Backend\Mapper) { $uri = $this->_path . $this->_file . '/' . $id; } $uri = new ObjectModel\ObjectUri($uri); $do->setUri($uri); return true; }
/** * Update record data in the backend with passed data object properties values * * @param t41_Data_Object $do * @return boolean */ public function update(ObjectModel\DataObject $do) { // Properties mapping (to array) if ($this->_mapper) { $data = $do->map($this->_mapper, $do->getClass()); } else { $data = $do->toArray(); } $data = $this->_unflattenArray($data); return (bool) $this->_ressource->update($do->getUri()->getIdentifier(), $data); }
/** * Save new set of data from a t41_Data_Object object using INSERT * * @param \t41\ObjectModel\DataObject $do * @return boolean * @throws \t41\Backend\Adapter\Exception */ public function create(ObjectModel\DataObject $do) { $table = $this->_getTableFromClass($do->getClass()); if (!$table) { throw new Exception('BACKEND_MISSING_DBTABLE_PARAM'); } // get a valid data array passing mapper if any if ($this->_mapper) { $recordSet = $do->map($this->_mapper, $this); } else { $recordSet = $do->toArray($this); } // Zend_Debug::dump($recordSet); $this->_setLastQuery('insert', $recordSet); try { $this->_connect(); $this->_ressource->insert(isset($table) ? $table : $do->getClass(), $recordSet['data']); } catch (Exception $e) { if (true) { throw new Exception("Error Creating Record: " . $e->getMessage); } else { return false; } } // inject new t41_Object_Uri object in data object // @todo provide support for primary keys that are not generated by DB (not AUTO INCREMENTED INTEGER) $id = $this->_ressource->lastInsertId(); $uri = $id; if (!$this->_mapper instanceof Backend\Mapper) { $uri = $table . '/' . $uri; } $uri = new ObjectModel\ObjectUri($uri); $do->setUri($uri); /* get collection handling properties (if any) and process them */ foreach ($do->getProperties() as $property) { if (!$property instanceof Property\CollectionProperty) { continue; } $collection = $property->getValue(); //var_dump($collection->getMembers()); /* @var $member t41_Object_Model */ foreach ($collection->getMembers() as $member) { $member->setProperty($property->getParameter('keyprop'), $uri); $member->save(); } } return true; }