Exemple #1
0
 public function create()
 {
     $url = $this->request('url');
     if (!is_object($url)) {
         $result = $this->result();
         return $result;
     }
     $url = $url->value;
     $request = clone $this->request();
     $data = $this->request('data');
     $main = $request->data;
     unset($request->function);
     unset($request->controller);
     unset($request->route);
     unset($request->parameter);
     unset($request->data);
     $request->data = array();
     if (!empty($main)) {
         foreach ($main as $key => $node) {
             if ($node->name == 'data') {
                 continue;
                 //the createRequestData putted it in $request->data...
             }
             $request->data[] = $node;
         }
     }
     $data = $this->createRequestData($data);
     foreach ($data as $nr => $node) {
         $request->data[] = $node;
     }
     $request->parameter = '';
     $web = $this->json('Priya\\Url.web');
     $parameter = str_replace($web, '/', $url);
     if ($parameter == $url) {
         $web_application = $this->json('Priya\\Url.web_application');
         $parameter = str_replace($web_application, '/', $url);
     }
     $request->parameter = $parameter;
     $request->url = $url;
     $route = new Route($this->json());
     $item = $route->find($request);
     if (empty($item->controller)) {
         $file = basename($item->url);
         $tmp = explode('.', $file);
         $extension = '';
         if (count($tmp) > 1) {
             $extension = array_pop($tmp);
         }
         if (empty($extension)) {
             throw new Route\Exception\Error('Route not found for request: ' . $item->url);
         }
     }
     $result = false;
     if (!empty($item->function)) {
         try {
             $controller = new $item->controller($this->json());
             if (method_exists($controller, $item->function) === false) {
                 $message = 'method (' . $item->function . ') not exists in class: (' . get_class($controller) . ')';
                 throw new Priya\Module\Exception\Error($message);
                 die;
                 //to remove this die we need to fix application to handle errors in the result...
             }
             $result = $controller->{$item->function}();
         } catch (Priya\Module\Exception\Error $error) {
             echo $error;
             die;
         } catch (Exception $exception) {
             $obj = new Priya\Module\Exception\Error($exception->getMessage(), 0);
             $obj->file($exception->getFile());
             $obj->line($exception->getLine());
             $obj->previous($exception->getPrevious());
             $obj->trace($exception->getTrace());
             throw $obj;
             die;
         }
     }
     if (!empty($result)) {
         if (!empty($result->link)) {
             $link = $this->json('link');
             foreach ($result->link as $nr => $record) {
                 $link[] = $record;
             }
             unset($result->link);
             $this->json('link', $link);
         }
         if (!empty($result->script)) {
             $script = $this->json('script');
             foreach ($result->script as $nr => $record) {
                 $script[] = $record;
             }
             unset($result->script);
             $this->json('script', $script);
         }
         $this->json('content', $result);
     } else {
         //throw new Dialog\Exception\Error('Content failed');
     }
     $result = $this->result();
     $this->debug($result, true);
     return $result;
 }
 public function run()
 {
     $route = $this->route();
     $request = $this->request();
     if ($this->isObject($route, 'Priya\\Module\\Route') === false) {
         return false;
     }
     if ($this->isObject($request, 'Priya\\Module\\Request') === false) {
         return false;
     }
     $route->run();
     $data = $request->data();
     $result = array();
     foreach ($data as $nr => $item) {
         if (empty($item->controller)) {
             $file = basename($item->url);
             $tmp = explode('.', $file);
             $extension = '';
             if (count($tmp) > 1) {
                 $extension = array_pop($tmp);
             }
             if (empty($extension)) {
                 throw new Module\Route\Exception\Error('Route not found for request: ' . $item->url);
             }
             continue;
         }
         if (empty($item->function)) {
             continue;
         }
         try {
             $controller = new $item->controller($this->json());
             if (method_exists($controller, $item->function) === false) {
                 $message = 'method (' . $item->function . ') not exists in class: (' . get_class($controller) . ')';
                 throw new Module\Exception\Error($message);
                 continue;
             }
             $result[$nr] = $controller->{$item->function}();
         } catch (Module\Exception\Error $error) {
             echo $error;
         } catch (Exception $exception) {
             $obj = new Module\Exception\Error($exception->getMessage(), 0);
             $obj->file($exception->getFile());
             $obj->line($exception->getLine());
             $obj->previous($exception->getPrevious());
             $obj->trace($exception->getTrace());
             throw $obj;
         }
     }
     if (empty($result)) {
         // 			$this->debug($data,true);
     } else {
         foreach ($result as $nr => $item) {
             if (isset($data[$nr])) {
                 if (empty($item)) {
                     $item = new stdClass();
                 }
                 $item->request = $data[$nr];
             }
             if (isset($item->request) && isset($item->request->contentType)) {
                 if (stristr($item->request->contentType, 'json') !== false) {
                     echo $this->object($item, 'json');
                 } else {
                     echo $item->html;
                 }
             } else {
                 echo $item->html;
             }
         }
     }
 }