function Error($msg, $errorcode = 505)
{
    if ($_GET['output'] == "xml" || $_POST['output'] == "xml") {
        \CADB\Respond::ResultPage(array(1, $msg));
    } else {
        \CADB\Respond::MessagePage($errcode, $msg);
    }
}
 private function __URIParser()
 {
     if (!isset($this->uri)) {
         $this->__URIinterpreter();
     }
     if (!$this->uri['appPath'] || !$this->uri['appFile']) {
         \CADB\Respond::NotFoundPage();
     }
     $this->params = array_merge($_GET, $_POST);
     $fp = fopen("/tmp/cadb2.txt", "w");
     fputs($fp, serialize($this->params));
     fclose($fp);
     foreach ($this->params as $k => $v) {
         if (!is_array($v) && $this->isJson($v)) {
             $this->params[$k] = json_decode($v, true);
         }
     }
     $this->params['appType'] = $this->uri['appType'];
     $this->params['path'] = substr($this->uri['appPath'], strlen(CADB_PATH) + 1);
     $this->params['browserType'] = $this->uri['browserType'];
     $this->params['controller']['path'] = $this->uri['appPath'];
     $this->params['controller']['uri'] = rtrim($this->uri['root'] . substr($this->uri['appPath'], strlen(CADB_PATH) + 1), "/");
     $this->params['controller']['file'] = $this->uri['appFile'];
     $this->params['controller']['class'] = $this->uri['appClass'];
     $this->params['controller']['process'] = $this->uri['appProcessor'];
 }
 public function render()
 {
     global $uri, $browser;
     $context = \CADB\Model\Context::instance();
     /**
      * @brief settting gloabl variables to be used in themes
      **/
     global $user;
     $this->breadcrumbs = ltrim(substr($uri->uri['appPath'], strlen(CADB_PATH)), '/');
     if ($uri->uri['appFile'] != 'index') {
         $this->breadcrumbs .= "/" . $uri->uri['appFile'];
     }
     $this->MyAppClass();
     if (isset($this->owner) && !$this->owner) {
         $this->owner = Acl::imMaster();
     }
     if (!$this->user) {
         if ($_SESSION['user']) {
             $user = array_merge($user, $_SESSION['user']);
         }
     } else {
         $user = $this->user;
     }
     if ($this->total_cnt) {
         $this->PageNavigation();
     }
     if ($this->contentType == "redirect") {
         header("Location: {$this->redirectURI}");
     } else {
         if ($this->params['output'] == "xml" || $this->contentType == "xml") {
             extract((array) $this);
             if (file_exists($this->params['controller']['path'] . "/" . $this->params['controller']['file'] . ".xml.php")) {
                 include $this->params['controller']['path'] . "/" . $this->params['controller']['file'] . ".xml.php";
             } else {
                 if (file_exists($this->params['controller']['path'] . "/" . $this->params['controller']['process'] . ".xml.php")) {
                     include $this->params['controller']['path'] . "/" . $this->params['controller']['process'] . ".xml.php";
                 } else {
                     \CADB\Respond::NotFoundPage(true);
                 }
             }
         } else {
             if ($this->params['browserType'] == 'api' || $this->params['output'] == 'json' || $this->contentType == "json") {
                 extract((array) $this);
                 header("Content-Type: application/json; charset=utf-8");
                 if (file_exists($this->params['controller']['path'] . "/" . $this->params['controller']['file'] . ".json.php")) {
                     include $this->params['controller']['path'] . "/" . $this->params['controller']['file'] . ".json.php";
                 } else {
                     if (file_exists($this->params['controller']['path'] . "/" . $this->params['controller']['process'] . ".json.php")) {
                         include $this->params['controller']['path'] . "/" . $this->params['controller']['process'] . ".json.php";
                     } else {
                         print json_encode(array());
                     }
                 }
             } else {
                 if (!$this->themes) {
                     $this->themes = $context->getProperty('service.themes');
                 }
                 if ($this->params['output'] != "nolayout") {
                     /**
                      * @brief default javascript 를 호출. ex jquery
                      **/
                     //				\CADB\View\Resource::addScript("jquery.min.js");
                     $this->initJs($this->initscript);
                     //				\CADB\View\Resource::addScript("defaults.js",-100,array('compress'=>true));
                     //				\CADB\View\Resource::addCss("defaults.css",-100,array('compress'=>true));
                     /**
                      * @brief resource/css에서 불러오도록 지정된 css들의 경로를 잡아준다.
                      **/
                     if (@count($this->css)) {
                         foreach ($this->css as $css) {
                             \CADB\View\Resource::addCss($css, 0, array('compress' => true));
                         }
                     }
                     /**
                      * @brief 해당 controller 경로에 style.css가 있으면 이 경로 밑에 있는 모는 페이지는 이 style.css를 포함한다.
                      **/
                     if (file_exists($this->params['controller']['path'] . "/style.css")) {
                         \CADB\View\Resource::addCssURI($this->params['controller']['uri'] . "/style.css", 0, array('compress' => true));
                     }
                     /**
                      * @brief 해당 controller에 매치되는 controller.css가 있으면 포함한다.
                      **/
                     if (file_exists($this->params['controller']['path'] . "/" . $this->params['controller']['file'] . ".css")) {
                         \CADB\View\Resource::addCssURI($this->params['controller']['uri'] . "/" . $this->params['controller']['file'] . ".css", 0, array('compress' => true));
                     }
                     /**
                      * @brief resource/script에서 불러오도록 지정된 script들의 경로를 잡아준다.
                      **/
                     if (@count($this->js)) {
                         foreach ($this->js as $js) {
                             \CADB\View\Resource::addJs($js, 0, array('compress' => true));
                         }
                     }
                     if (@count($this->react)) {
                         foreach ($this->react as $script) {
                             \CADB\View\Resource::addReact($script, 0, array('compress' => false, 'position' => 'footer'));
                         }
                     }
                     if (@count($this->babel)) {
                         \CADB\Lib\importResource('babel');
                         foreach ($this->babel as $script) {
                             \CADB\View\Resource::addScript($script, 0, array('compress' => true, 'type' => 'babel'));
                         }
                     }
                     if (@count($this->script)) {
                         foreach ($this->script as $script) {
                             \CADB\View\Resource::addScript($script, 0, array('compress' => true));
                         }
                     }
                     /**
                      * @brief 해당 controller 경로에 script.js가 있으면 이 경로 밑에 있는 모는 페이지는 이 script.js를 포함한다.
                      **/
                     if (file_exists($this->params['controller']['path'] . "/script.js")) {
                         \CADB\View\Resource::addJsURI($this->params['controller']['uri'] . "/script.js", 0, array('compress' => true));
                     }
                     /**
                      * @brief 해당 controller에 매치되는 controller.js가 있으면 포함한다.
                      **/
                     if (file_exists($this->params['controller']['path'] . "/" . $this->params['controller']['file'] . ".js")) {
                         \CADB\View\Resource::addJsURI($this->params['controller']['uri'] . "/" . $this->params['controller']['file'] . ".js", 0, array('compress' => true));
                     }
                     /**
                      * @brief themes에 있는 기본 css와 script 들을 가장 먼저 포함한다.
                      **/
                     $this->initTheme();
                     if ($this->layout == "admin") {
                         \CADB\Lib\importResource('app-admin');
                     }
                     if ($html_file = $this->appPath()) {
                         $this->themeCssJs($html_file);
                     }
                     /* FaceBook plugin */
                     $this->body_start = '';
                 }
                 extract((array) $this);
                 if ($html_file = $this->appPath()) {
                     ob_start();
                     include $this->renderPath($html_file);
                     $content = ob_get_contents();
                     ob_end_clean();
                     $layout_file = $this->LayoutFile();
                 } else {
                     \CADB\Respond::NotFoundPage();
                 }
                 if ($this->params['output'] == "nolayout") {
                     header("Content-Type:text/html; charset=utf-8");
                     echo $content;
                 } else {
                     /**
                      * @brief make admin theme
                      **/
                     if ($this->layout == 'admin' && file_exists(CADB_APP_PATH . "/admin/layout.html.php")) {
                         ob_start();
                         include CADB_APP_PATH . "/admin/layout.html.php";
                         $content = ob_get_contents();
                         ob_end_clean();
                     }
                     /**
                      * @brief make html result using theme layout
                      **/
                     if ($layout_file) {
                         ob_start();
                         include $layout_file;
                         $html = ob_get_contents();
                         ob_end_clean();
                         print $html;
                     }
                 }
             }
         }
     }
 }