From d1c37fc2936a6a00bb9a8a7a0516448bc4c082cd Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Sun, 4 Mar 2018 16:15:21 +0700 Subject: [PATCH] Refactored Controller. --- src/B8Framework/Application.php | 1 + src/B8Framework/Controller.php | 128 ------------------ src/PHPCensor/Controller.php | 93 ++++++++++++- .../Controller/WebhookController.php | 18 ++- 4 files changed, 104 insertions(+), 136 deletions(-) delete mode 100644 src/B8Framework/Controller.php diff --git a/src/B8Framework/Application.php b/src/B8Framework/Application.php index cf206023..9094eac4 100644 --- a/src/B8Framework/Application.php +++ b/src/B8Framework/Application.php @@ -7,6 +7,7 @@ use b8\Http\Response; use b8\Http\Request; use b8\Http\Router; use PHPCensor\Config; +use PHPCensor\Controller; class Application { diff --git a/src/B8Framework/Controller.php b/src/B8Framework/Controller.php deleted file mode 100644 index 007a38d4..00000000 --- a/src/B8Framework/Controller.php +++ /dev/null @@ -1,128 +0,0 @@ -config = $config; - $this->request = $request; - $this->response = $response; - } - - /** - * @param string $name - * - * @return boolean - */ - public function hasAction($name) - { - if (method_exists($this, $name)) { - return true; - } - - if (method_exists($this, '__call')) { - return true; - } - - return false; - } - - /** - * Handles an action on this controller and returns a Response object. - * - * @param string $action - * @param array $actionParams - * - * @return Response - */ - public function handleAction($action, $actionParams) - { - return call_user_func_array([$this, $action], $actionParams); - } - - /** - * Initialise the controller. - */ - abstract public function init(); - - /** - * Get a hash of incoming request parameters ($_GET, $_POST) - * - * @return array - */ - public function getParams() - { - return $this->request->getParams(); - } - - /** - * Get a specific incoming request parameter. - * - * @param string $key - * @param mixed $default Default return value (if key does not exist) - * - * @return mixed - */ - public function getParam($key, $default = null) - { - return $this->request->getParam($key, $default); - } - - /** - * Change the value of an incoming request parameter. - * - * @param string $key - * @param mixed $value - */ - public function setParam($key, $value) - { - $this->request->setParam($key, $value); - } - - /** - * Remove an incoming request parameter. - * - * @param string $key - */ - public function unsetParam($key) - { - $this->request->unsetParam($key); - } -} diff --git a/src/PHPCensor/Controller.php b/src/PHPCensor/Controller.php index 9df17521..c2905ba9 100644 --- a/src/PHPCensor/Controller.php +++ b/src/PHPCensor/Controller.php @@ -9,11 +9,26 @@ use PHPCensor\Store\Factory; use PHPCensor\Model\User; use PHPCensor\Store\UserStore; -class Controller extends \b8\Controller +class Controller { /** - * @var View - */ + * @var Request + */ + protected $request; + + /** + * @var Response + */ + protected $response; + + /** + * @var Config + */ + protected $config; + + /** + * @var View + */ protected $controllerView; /** @@ -46,13 +61,17 @@ class Controller extends \b8\Controller */ public function __construct(Config $config, Request $request, Response $response) { - parent::__construct($config, $request, $response); + $this->config = $config; + $this->request = $request; + $this->response = $response; $class = explode('\\', get_class($this)); $this->className = substr(array_pop($class), 0, -10); $this->setControllerView(); - unset($_SESSION['php-censor-user']); + if (!empty($_SESSION['php-censor-user'])) { + unset($_SESSION['php-censor-user']); + } } /** @@ -90,7 +109,7 @@ class Controller extends \b8\Controller public function handleAction($action, $actionParams) { $this->setView($action); - $response = parent::handleAction($action, $actionParams); + $response = call_user_func_array([$this, $action], $actionParams); if ($response instanceof Response) { return $response; @@ -148,4 +167,66 @@ class Controller extends \b8\Controller return $userStore->getById($_SESSION['php-censor-user-id']); } + + /** + * @param string $name + * + * @return boolean + */ + public function hasAction($name) + { + if (method_exists($this, $name)) { + return true; + } + + if (method_exists($this, '__call')) { + return true; + } + + return false; + } + + /** + * Get a hash of incoming request parameters ($_GET, $_POST) + * + * @return array + */ + public function getParams() + { + return $this->request->getParams(); + } + + /** + * Get a specific incoming request parameter. + * + * @param string $key + * @param mixed $default Default return value (if key does not exist) + * + * @return mixed + */ + public function getParam($key, $default = null) + { + return $this->request->getParam($key, $default); + } + + /** + * Change the value of an incoming request parameter. + * + * @param string $key + * @param mixed $value + */ + public function setParam($key, $value) + { + $this->request->setParam($key, $value); + } + + /** + * Remove an incoming request parameter. + * + * @param string $key + */ + public function unsetParam($key) + { + $this->request->unsetParam($key); + } } diff --git a/src/PHPCensor/Controller/WebhookController.php b/src/PHPCensor/Controller/WebhookController.php index 4102ce3b..abaae725 100644 --- a/src/PHPCensor/Controller/WebhookController.php +++ b/src/PHPCensor/Controller/WebhookController.php @@ -11,10 +11,12 @@ use PHPCensor\Model\Project; use PHPCensor\Service\BuildService; use PHPCensor\Store\BuildStore; use PHPCensor\Store\ProjectStore; -use b8\Controller; +use PHPCensor\Controller; use PHPCensor\Config; use b8\Exception\HttpException\NotFoundException; use PHPCensor\Store\Factory; +use b8\Http\Request; +use b8\Http\Response; /** * Webhook Controller - Processes webhook pings from BitBucket, Github, Gitlab, Gogs, etc. @@ -42,6 +44,18 @@ class WebhookController extends Controller */ protected $buildService; + /** + * @param Config $config + * @param Request $request + * @param Response $response + */ + public function __construct(Config $config, Request $request, Response $response) + { + $this->config = $config; + $this->request = $request; + $this->response = $response; + } + /** * Initialise the controller, set up stores and services. */ @@ -63,7 +77,7 @@ class WebhookController extends Controller { $response = new b8\Http\Response\JsonResponse(); try { - $data = parent::handleAction($action, $actionParams); + $data = call_user_func_array([$this, $action], $actionParams); if (isset($data['responseCode'])) { $response->setResponseCode($data['responseCode']); unset($data['responseCode']);