/**
  * TODO: Good candidate for traits method in PHP 5.4 with PostRedirectGet plugin
  *
  * @param  string  $redirect
  * @param  bool    $redirectToUrl
  * @return Response
  * @throws \Zend\Mvc\Exception\RuntimeException
  */
 protected function redirect($redirect, $redirectToUrl)
 {
     $controller = $this->getController();
     $params = [];
     $options = [];
     $reuseMatchedParams = false;
     if (null === $redirect) {
         $routeMatch = $controller->getEvent()->getRouteMatch();
         $redirect = $routeMatch->getMatchedRouteName();
         //null indicates to redirect for self.
         $reuseMatchedParams = true;
     }
     if (method_exists($controller, 'getPluginManager')) {
         // get the redirect plugin from the plugin manager
         $redirector = $controller->getPluginManager()->get('Redirect');
     } else {
         /*
          * If the user wants to redirect to a route, the redirector has to come
          * from the plugin manager -- otherwise no router will be injected
          */
         if ($redirectToUrl === false) {
             throw new RuntimeException('Could not redirect to a route without a router');
         }
         $redirector = new Redirect();
     }
     if ($redirectToUrl === false) {
         $response = $redirector->toRoute($redirect, $params, $options, $reuseMatchedParams);
         $response->setStatusCode(303);
         return $response;
     }
     $response = $redirector->toUrl($redirect);
     $response->setStatusCode(303);
     return $response;
 }