Example #1
0
 /**
  * Populate the given data object
  *  
  * @param t41\ObjectModel\DataObject $do data object instance
  * @return boolean
  */
 public function read(ObjectModel\DataObject $do, $data = null)
 {
     if (!$do->getUri() instanceof ObjectUri) {
         throw new Exception('MISSING_URI_IN_DATAOBJECT');
     }
     if (is_array($data) && count($data) > 0) {
         /* populate data object */
         $do->populate($data, $this->_mapper);
         $do->resetChangedState();
         return true;
     }
     // get table to use
     $table = $this->_getTableFromUri($do->getUri());
     if (!$table) {
         \Zend_Debug::dump($do->getUri());
         throw new Exception('MISSING_DBTABLE_PARAM');
     }
     // primary key is either part of the mapper configuration or 'id'
     $pkey = $this->_mapper ? $this->_mapper->getPrimaryKey($do->getUri()->getClass()) : Backend::DEFAULT_PKEY;
     $this->_connect();
     // get data from backend
     $select = $this->_ressource->select()->from($table, $this->_getColumns($do))->limit(1);
     /* add clause for primary key(s) */
     foreach ($this->_preparePrimaryKeyClauses($do) as $key => $val) {
         $select->where("{$key} = ?", $val);
     }
     try {
         $data = $this->_ressource->fetchRow($select);
     } catch (\Exception $e) {
         echo $e->getMessage();
         \Zend_Debug::dump($e->getTrace());
         die;
     }
     if (empty($data)) {
         $do->resetUri();
         return false;
     }
     /* complete url part of the object uri */
     $do->getUri()->setUrl($table . '/' . $do->getUri()->getIdentifier());
     /* populate data object */
     $do->populate($data, $this->_mapper);
     $do->resetChangedState();
     return true;
 }