/**
  * 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);
     }
 }