/** * Startup callback, called after Controller::beforeFilter(). * * @param Controller $controller Controller with components to beforeRender. * @return void */ public function startup(Controller $controller) { $this->_controller = $controller; if (!empty($this->listen) && (is_string($this->listen) && $this->listen == $controller->action || is_array($this->listen) && in_array($controller->action, $this->listen))) { if ($controller->request->is('post')) { $controller->response->statusCode(200); $requests = $this->_processJsonRequest(); if (is_object($requests)) { $controller->response->body(json_encode($this->_parseJsonRequest($requests))); } else { if (is_array($requests)) { $responses = array(); for ($i = 0; $i < count($requests); $i++) { $responses[] = $this->_parseJsonRequest($requests[$i]); } $controller->response->body(json_encode($responses)); } else { $controller->response->body(json_encode($this->_parseJsonRequest($requests))); } } } else { $controller->response->statusCode(405); } $controller->response->send(); $controller->_stop(); } }
/** * Overrides _stop() method so it no longer halts script execution. */ public function _stop($status = 0) { if (defined('TESTS_RUNNING') && TESTS_RUNNING) { return $this->stopped = $status; } else { return parent::_stop($status = 0); } }