public function execute()
 {
     $domain_id = $this->get('domain_id', true);
     $route = $this->get('route');
     if ($route) {
         $route = urldecode($route);
     }
     $content = $this->get('content');
     $page_model = new sitePageModel();
     $pages = $page_model->getByDomain($domain_id, $route, $content);
     if ($this->get('params') && $pages) {
         $params_model = new sitePageParamsModel();
         $rows = $params_model->getByField('page_id', array_keys($pages), true);
         foreach ($rows as $row) {
             $pages[$row['page_id']]['params'][$row['name']] = $row['value'];
         }
     }
     $tree = $this->get('tree');
     if ($tree == null || $tree) {
         foreach ($pages as $page_id => $page) {
             if ($page['parent_id'] && isset($pages[$page['parent_id']])) {
                 $pages[$page['parent_id']]['childs'][] =& $pages[$page_id];
             }
         }
         foreach ($pages as $page_id => $page) {
             if ($page['parent_id']) {
                 unset($pages[$page_id]);
             }
         }
     }
     $this->response['pages'] = array_values($pages);
 }
 public function page($id)
 {
     $page_model = new sitePageModel();
     $page = $page_model->getById($id);
     $page['content'] = $this->wa->getView()->fetch('string:' . $page['content']);
     $page_params_model = new sitePageParamsModel();
     $page += $page_params_model->getById($id);
     return $page;
 }
 public function getPage($url = null)
 {
     if ($url === null) {
         $url = wa()->getRouting()->getCurrentUrl();
     }
     $route = wa()->getRouting()->getRoute('url');
     $page_model = new sitePageModel();
     if (substr($url, -1) !== '/' && strpos(substr($url, -5), '.') === false) {
         if ($page = $page_model->getByUrl($this->getDomainId(), $route, $url . '/')) {
             $url = waSystem::getInstance()->getConfig()->getRequestUrl(false);
             if (($i = strpos($url, '?')) === false) {
                 wa()->getResponse()->redirect($url . '/');
             } else {
                 wa()->getResponse()->redirect(substr($url, 0, $i) . '/' . substr($url, $i));
             }
         }
     }
     $page = $page_model->getByUrl($this->getDomainId(), $route, $url);
     if (!$page) {
         return array();
     }
     if (!$page['status']) {
         $app_settings_model = new waAppSettingsModel();
         $hash = $app_settings_model->get('site', 'preview_hash');
         if (!$hash || md5($hash) != waRequest::get('preview')) {
             return array();
         }
     }
     $params_model = new sitePageParamsModel();
     if ($params = $params_model->getById($page['id'])) {
         $page += $params;
     }
     if (!$page['title']) {
         $page['title'] = $page['name'];
     }
     //$page['url'] = wa()->getAppUrl().$page['url'];
     foreach ($page as $k => $v) {
         if ($k != 'content') {
             $page[$k] = htmlspecialchars($v);
         }
     }
     return $page;
 }