Exemple #1
0
 /**
  * Выполняет обработку запроса
  *
  * @param WS_Environment $env
  *
  * @return mixed
  */
 public function run(WS_Environment $env)
 {
     $m = false;
     foreach ($this->patterns as $p => $r) {
         $pattern_match = preg_match($p, $env->request->urn);
         if ($pattern_match) {
             $m = true;
             if ($this->clear_url) {
                 $env->request->uri(preg_replace($p, $r, $env->request->urn));
             }
         }
     }
     $env->pdf = (object) array('active' => $m);
     $r = $this->application->run($env);
     if ($env->pdf->active) {
         $response = Net_HTTP::merge_response($r, $env->{$response});
         if (!$response->status->is_success) {
             return $r;
         }
         if (isset($env->config) && isset($env->config->pdf)) {
             foreach ($env->config->pdf as $option => $v) {
                 if (isset($this->{$option})) {
                     $this->{$option} = $v;
                 }
             }
         }
         if (!class_exists('mPDF')) {
             include $this->mpdf_dir;
         }
         $mpdf = new mPDF();
         foreach ($this->options as $name => $v) {
             $mpdf->{$name} = $v;
         }
         if (is_callable($env->pdf->callback)) {
             $env->response = $response;
             return call_user_func($env->pdf->callback, $mpdf, $env);
         } else {
             $mpdf->WriteHTML((string) $response->body);
             $mpdf->Output(!empty($env->pdf->title) ? $env->pdf->title : $this->title, 'D');
         }
     } else {
         return $r;
     }
 }
Exemple #2
0
 /**
  * @param WS_Environment $env
  *
  * @return Net_HTTP_Response
  */
 public function run(WS_Environment $env)
 {
     //if ($this->disabled) return $this->application->run($env);
     $error = null;
     try {
         $body = $this->application->run($env);
         $response = Net_HTTP::merge_response($body, $env->response);
     } catch (Exception $e) {
         $error = $e;
         if ($this->disabled) {
             throw $e;
         }
         $response = Net_HTTP::Response(Net_HTTP::INTERNAL_SERVER_ERROR);
     }
     if (!$response->body && ($template = $this->find_template_name_for($response->status))) {
         if (isset($env->not_found->static_file)) {
             $response->body(IO_FS::File($env->not_found->static_file));
         } else {
             $layout = isset($env->not_found->layout) ? $env->not_found->layout : 'work';
             $view = Templates::HTML($template);
             if ($layout) {
                 $view->within_layout($layout);
             }
             $view->root->with(array('env' => $env, 'response' => $response, 'error' => $error));
             if ($view->exists()) {
                 $response->body($view);
             } else {
                 if (IO_FS::exists($static_name = $template . '.html')) {
                     $response->body(IO_FS::File($static_name));
                 }
             }
         }
     }
     Events::call('ws.status', $response);
     return $response;
 }
Exemple #3
0
 /**
  * Запускает приложение
  *
  * @param WS_ServiceInterface $app
  *
  * @return WS_Runner
  */
 public function run(WS_ServiceInterface $app)
 {
     $environment = WS::env();
     $environment->request = $this->adapter->make_request();
     $rc = Events::call('ws.run');
     if (!is_null($rc)) {
         return $rc;
     }
     $environment->response = Net_HTTP::Response();
     $body = $app->run($environment);
     $response = Net_HTTP::merge_response($body, $environment->response);
     return $this->adapter->process_response($response);
 }