. */ /** * Doctrine_Resource_Request * * @author Konsta Vesterinen * @author Jonathan H. Wage * @package Doctrine * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @version $Revision$ * @category Object Relational Mapping * @link www.phpdoctrine.com * @since 1.0 */ class Doctrine_Resource_Request extends Doctrine_Resource_Params { protected $_params = null; public function getConfig($key = null) { return Doctrine_Resource_Client::getInstance()->getConfig($key); } public function execute() { $url = $this->getConfig()->get('url'); $data = array('type' => $this->get('type'), 'format' => $this->getConfig()->get('format'), 'data' => Doctrine_Parser::dump($this->getAll(), $this->getConfig()->get('format'))); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $response = curl_exec($ch); if (curl_errno($ch)) { throw new Doctrine_Resource_Exception('Request failed'); } curl_close($ch); return $response; } public function hydrate(array $array, $model, $passedKey = null) { if (empty($array)) { return false; } $collection = new Doctrine_Resource_Collection($model); foreach ($array as $record) { $r = new $model(); foreach ($record as $key => $value) { if ($r->getTable()->hasRelation($key) && !empty($value)) { $relation = $r->getTable()->getRelation($key); if ($relation['type'] === Doctrine_Relation::MANY) { $r->set($key, $this->hydrate($value, $relation['class'], $key)); } else { $r->set($key, $this->hydrate(array($value), $relation['class'], $key)->getFirst()); } } else if($r->getTable()->hasColumn($key)) { $r->set($key, $value); } $r->clearChanges(); } $collection[] = $r; } return $collection; } }