diff --git a/src/mibew/libs/classes/Mibew/Controller/Chat/ThreadController.php b/src/mibew/libs/classes/Mibew/Controller/Chat/ThreadController.php index f9311937..6aa1289d 100644 --- a/src/mibew/libs/classes/Mibew/Controller/Chat/ThreadController.php +++ b/src/mibew/libs/classes/Mibew/Controller/Chat/ThreadController.php @@ -37,12 +37,7 @@ class ThreadController extends AbstractController public function updateAction(Request $request) { $processor = ThreadProcessor::getInstance(); - // TODO: Remove bufferization after *Processor classes will be rewritten - // to play nice with symfony request/response objects - ob_start(); - $processor->handleRequest($request); - $content = ob_get_clean(); - return $content; + return $processor->handleRequest($request); } } diff --git a/src/mibew/libs/classes/Mibew/Controller/UsersController.php b/src/mibew/libs/classes/Mibew/Controller/UsersController.php index 7fed5052..e975534f 100644 --- a/src/mibew/libs/classes/Mibew/Controller/UsersController.php +++ b/src/mibew/libs/classes/Mibew/Controller/UsersController.php @@ -91,12 +91,6 @@ class UsersController extends AbstractController $processor = UsersProcessor::getInstance(); $processor->setAuthenticationManager($this->getAuthenticationManager()); - // TODO: Remove bufferization after *Processor classes will be rewritten - // to play nice with symfony request/response objects - ob_start(); - $processor->handleRequest($request); - $content = ob_get_clean(); - - return $content; + return $processor->handleRequest($request); } } diff --git a/src/mibew/libs/classes/Mibew/RequestProcessor/AbstractProcessor.php b/src/mibew/libs/classes/Mibew/RequestProcessor/AbstractProcessor.php index 75cb2ba5..4171c4a8 100644 --- a/src/mibew/libs/classes/Mibew/RequestProcessor/AbstractProcessor.php +++ b/src/mibew/libs/classes/Mibew/RequestProcessor/AbstractProcessor.php @@ -24,6 +24,7 @@ use Mibew\Database; use Mibew\EventDispatcher; use Mibew\RequestProcessor\Exception\AbstractProcessorException; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; /** * Implements abstract class for request processing @@ -155,8 +156,8 @@ abstract class AbstractProcessor * listener to the "RequestError" event. * * @param Request $request The request to handle. - * @return boolean true if request processed succussfully or false on - * failure + * @return Response|boolean A response object if request processed + * succussfully or boolean false on failure */ public function handleRequest($request) { @@ -229,9 +230,9 @@ abstract class AbstractProcessor if (count($this->responses) != 0) { // Send responses if ($request_package['async']) { - $this->sendAsyncResponses($this->responses); + return $this->buildAsyncResponses($this->responses); } else { - $this->sendSyncResponses($this->responses); + return $this->buildSyncResponses($this->responses); } } @@ -244,7 +245,8 @@ abstract class AbstractProcessor return false; } - return true; + // Return an empty response + return new Response(); } /** @@ -542,7 +544,7 @@ abstract class AbstractProcessor */ protected function sendSyncRequest($request) { - trigger_error('Method sendSyncRequest does not implement!', E_USER_WARNING); + trigger_error('Method sendSyncRequest is not implemented!', E_USER_WARNING); } /** @@ -553,29 +555,31 @@ abstract class AbstractProcessor */ protected function sendAsyncRequest($request) { - trigger_error('Method sendAsyncRequest does not implement!', E_USER_WARNING); + trigger_error('Method sendAsyncRequest is not implemented!', E_USER_WARNING); } /** - * Sends synchronous responses + * Builds synchronous responses * * @param array $responses An array of the 'Request' arrays. See Mibew API * for details + * @return Response A response object that is ready for sending to client. */ - protected function sendSyncResponses($responses) + protected function buildSyncResponses($responses) { - trigger_error('Method sendSyncResponses does not implement!', E_USER_WARNING); + trigger_error('Method buildSyncResponses is not implemented!', E_USER_WARNING); } /** - * Sends asynchronous responses + * Builds asynchronous responses * * @param array $responses An array of the 'Request' arrays. See Mibew API * for details + * @return Response A response object that is ready for sending to client. */ - protected function sendAsyncResponses($responses) + protected function buildAsyncResponses($responses) { - trigger_error('Method sendAsyncResponses does not implement!', E_USER_WARNING); + trigger_error('Method buildAsyncResponses is not implemented!', E_USER_WARNING); } /** diff --git a/src/mibew/libs/classes/Mibew/RequestProcessor/ClientSideProcessor.php b/src/mibew/libs/classes/Mibew/RequestProcessor/ClientSideProcessor.php index 618010d0..54894db6 100644 --- a/src/mibew/libs/classes/Mibew/RequestProcessor/ClientSideProcessor.php +++ b/src/mibew/libs/classes/Mibew/RequestProcessor/ClientSideProcessor.php @@ -21,6 +21,7 @@ namespace Mibew\RequestProcessor; use Mibew\Database; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; /** * Base class for all request processors that interact with JavaScript @@ -57,19 +58,24 @@ abstract class ClientSideProcessor extends AbstractProcessor } /** - * Sends asynchronous responses + * Builds asynchronous responses * * @param array $responses An array of the 'Request' arrays. See Mibew API - * for details + * for details + * @return Response A response object that is ready for sending to client. */ - protected function sendAsyncResponses($responses) + protected function buildAsyncResponses($responses) { - header("Content-type: text/plain; charset=UTF-8"); - echo($this->mibewAPI->encodePackage( + $resp = new Response($this->mibewAPI->encodePackage( $responses, $this->config['signature'], true )); + + $resp->headers->set('Content-type', 'text/plain'); + $resp->setCharset('UTF-8'); + + return $resp; } /**