Example #1
0
 /**
  * {@inheritdoc}
  */
 public function execute(\Exception $exception)
 {
     if (!$this->dependencyInjection->get('environment')->isSilent()) {
         error_log($exception->getMessage() . " " . $exception->getFile() . "(" . $exception->getLine() . ")");
     }
     $presenter = $this->getPresenter($this->request->getUrl());
     $response = new Response();
     $response->setStatusCode(500);
     $response->setContent($exception);
     if ($exception instanceof HTTPException) {
         $response->setStatusCode($exception->getStatusCode());
     }
     $event = new ExecutePresenterEvent($this->request, $response);
     $this->dependencyInjection->get('eventManager')->fire('executePresenter', $event);
     $presenter->render($this->request, $response);
 }
Example #2
0
 /**
  * Generate html grid string
  *
  * @return string with html form
  */
 public function render()
 {
     $sort = 0;
     $query = $this->request->getQuery();
     if (isset($query['sort']) && isset($this->columns[$query['sort']])) {
         $sort = $query['sort'];
     }
     return $this->formatter->render($this->columns, $this->getRecords(), $this->dataManager->getTotalCount(), $this->limit, $this->page, $sort);
 }
Example #3
0
 /**
  * @return Response
  * @throws ActionNotFoundException
  */
 private function invokeController()
 {
     $eventManager = $this->container->getEventManager();
     $controller = new $this->className($this->request, $this->container);
     if (!is_callable([$controller, $this->methodName])) {
         throw new ActionNotFoundException($this->className, $this->methodName);
     }
     $response = null;
     $controllerData = call_user_func_array([$controller, $this->methodName], $this->request->getArguments());
     if ($controllerData instanceof Response) {
         $response = $controllerData;
     } else {
         $response = new Response();
         $response->setContent($controllerData);
     }
     if (!$response->getPresenter()) {
         $response->setPresenter($this->getPresenter());
     }
     $event = new ExecutedActionEvent($this->request, $response);
     $eventManager->fire('executedAction', $event);
     return $response;
 }
Example #4
0
 /**
  * Support status code 2XX.
  *
  * @param Request $request
  * @param Response $response
  */
 private function displaySuccess(Request $request, Response $response)
 {
     $data = $response->getContent();
     if ($data == null) {
         $data = array();
     }
     $controllerName = str_replace('\\', '/', $request->getConfig()->getAttribute('class'));
     $methodName = $request->getConfig()->getAttribute('method');
     echo $this->twig->render($controllerName . '/' . $methodName . '.twig', $data);
 }
Example #5
0
 /**
  * Check authenticate.
  *
  * @param string $redirect
  * @param Request $request
  * @return Response
  */
 private function createResponseRedirect($redirect, Request $request)
 {
     $response = new Response();
     if ($request->isAjax()) {
         $response->setStatusCode(401);
         $response->setHeader('X-Location', $redirect);
     } else {
         $response->redirect($redirect);
     }
     return $response;
 }
Example #6
0
 /**
  * Submit form. Check http confirm and validate fields
  *
  * @param Request $request
  * @throws \Exception
  */
 public function submit(Request $request)
 {
     $this->isConfirmed = false;
     if ($this->formTags['method'] == 'post' && $request->getType() == 'POST') {
         $this->isConfirmed = true;
     }
     $query = $request->getQuery();
     if (count($this->fields) > 0 && $this->formTags['method'] == 'get' && isset($query[$this->fields[0]->getName()])) {
         $this->isConfirmed = true;
     }
     if (!$this->isConfirmed) {
         return;
     }
     if ($this->formTags['method'] == 'post') {
         $storage = $request->getData();
     } else {
         $storage = $request->getQuery();
     }
     //set field data
     $result = [];
     foreach ($this->fields as $field) {
         if (isset($storage[$field->getName()])) {
             $field->setData($storage[$field->getName()]);
         } else {
             if ($field instanceof FileField) {
                 try {
                     $field->setData($request->getFile($field->getName()));
                 } catch (FileNotUploadedException $e) {
                     $field->setData('');
                 }
             } else {
                 if (preg_match('/^(.*?)(\\[.*\\])$/', $field->getName(), $result) && isset($storage[$result[1]])) {
                     //array
                     if (!preg_match_all("/\\[(.*?)\\]/", $result[2], $resultDeep)) {
                         throw new \Exception('Invalid field name.');
                         //FIXME dedicate exception
                     }
                     $value = $storage[$result[1]];
                     foreach ($resultDeep[1] as $deep) {
                         if (!isset($value[$deep])) {
                             $value = null;
                             break;
                         }
                         $value = $value[$deep];
                     }
                     if ($result[2] == '') {
                         //FIXME autoincrement field
                     } else {
                         $field->setData($value);
                     }
                 } else {
                     //for checkbox or disabled field
                     $field->setData(null);
                 }
             }
         }
     }
     //validate
     if ($request->isFullUploadedData()) {
         foreach ($this->fields as $field) {
             if ($field->getValidator()) {
                 if ($error = $field->getValidator()->validate($field->getData())) {
                     $field->setError($error);
                 }
             }
         }
     } else {
         foreach ($this->fields as $field) {
             $field->setError('Request data is too large.');
         }
     }
 }
Example #7
0
 /**
  * Validate url.
  *
  * @param Request $request
  * @param Config $config argument
  * @param int $position
  * @return string
  * @throws RequiredArgumentException
  */
 private function validateUrl(Request $request, $config, $position)
 {
     $url = $request->getUrl();
     $default = $config->getAttribute('default');
     if (preg_match('/^' . $config->getAttribute('pattern') . '$/', $url, $matches) && isset($matches[1])) {
         return $matches[1];
     } else {
         if ($default !== false) {
             return $config->getAttribute('default');
         } else {
             throw new RequiredArgumentException($position, $config->getAttribute('name'));
         }
     }
 }