public function dispatch($request) { $this->request = $request; $this->id = $request->id; $this->params = $request->params; $res = new REST_Response(); switch ($this->request->action) { case 'view': if (isset($this->id)) { $this->model->get($this->id); $res->data = $this->model; $res->message = "view"; $res->success = true; return $res->to_json(); } else { $res->data = $this->model->fetchArray(); $res->success = true; return $res->to_json(); } break; case 'create': $this->model->sName = $this->params['sName']; $this->model->sValue = $this->params['sValue']; $this->model->update(); $res->data = $this->model; $res->message = "create"; $res->success = true; return $res->to_json(); break; case 'update': $this->model->iID = $this->params['iID']; $this->model->sName = $this->params['sName']; $this->model->sValue = $this->params['sValue']; $this->model->update(); $res->message = "update"; $res->data = $this->model; $res->success = true; return $res->to_json(); break; case 'destroy': $id = stripslashes($_REQUEST['data']); $res->message = $id; $res->success = true; $this->model->get($id); $res->success = false; if (isset($this->model)) { $this->model->delete(); $res->success = true; } $res->data = null; return $res->to_json(); break; } }
/** * Launch a synchrone request * returns the request identifier or false if fire is aborted * @param array * @return integer or false */ public function fire(REST_Request $request) { if ($this->loads === 0) { $this->time = microtime(true); } ++$this->loads; self::$handles++; // create a fresh request identifier $request->setCurlOption(CURLOPT_USERAGENT, 'REST_Client/' . self::$version); // launch the fire hooks foreach ($this->fire_hook as $hook) { $ret = call_user_func($hook, $request, self::$handles, $this); // this hook want to stop the fire ? if ($ret === false) { ++$this->loads_null; self::$handles--; return false; } } // configure curl client curl_setopt_array($this->handle, $request->toCurl()); if (!is_resource($this->handle)) { ++$this->loads_null; return trigger_error(sprintf('%s::%s() cURL session was lost', __CLASS__, $method), E_USER_ERROR); } // send the request and create the response object ++$this->requests; $response = new REST_Response(curl_exec($this->handle), curl_errno($this->handle), curl_error($this->handle)); if (!$response->isError()) { foreach (REST_Response::$properties as $name => $const) { $response->{$name} = curl_getinfo($this->handle, $const); } } $response->id = self::$handles; $this->responses[] = $response; // append the response to the stack return self::$handles; // return a unique identifier for the request }