public function execute()
 {
     $domain_model = new siteDomainModel();
     $domain = $domain_model->getByName($this->domain);
     if (!$domain) {
         return;
     }
     // get all routes of the app site
     $routes = $this->getRoutes();
     $page_model = new sitePageModel();
     foreach ($routes as $r) {
         $exclude_ids = isset($r['_exclude']) ? $r['_exclude'] : array();
         $sql = "SELECT id, name, title, url, create_datetime, update_datetime FROM " . $page_model->getTableName() . '
             WHERE domain_id = i:domain_id AND status = 1' . ($exclude_ids ? " AND id NOT IN (:ids)" : '') . ' ORDER BY sort';
         $pages = $page_model->query($sql, array('domain_id' => $domain['id'], 'ids' => $exclude_ids))->fetchAll('id');
         // get part of url by route
         $u = $this->getUrlByRoute($r);
         foreach ($pages as $p) {
             if (!$p['url']) {
                 $priority = 1;
                 $change = self::CHANGE_WEEKLY;
             } else {
                 $priority = 0.2;
                 $change = self::CHANGE_MONTHLY;
             }
             $p['url'] = $u . $p['url'];
             if (strpos($p['url'], '<') === false) {
                 $this->addUrl($p['url'], $p['update_datetime'], $change, $priority);
             }
         }
     }
 }
 public function execute()
 {
     $domain_model = new siteDomainModel();
     $domain = $domain_model->getByName($this->domain);
     if (!$domain) {
         return;
     }
     // get all routes of the app site
     $routes = $this->getRoutes();
     $page_model = new sitePageModel();
     foreach ($routes as $r) {
         $sql = "SELECT id, parent_id, name, title, full_url as url, create_datetime, update_datetime\n            FROM " . $page_model->getTableName() . '
         WHERE domain_id = i:domain_id AND route = s:route AND status = 1
         ORDER BY sort';
         $pages = $page_model->query($sql, array('domain_id' => $domain['id'], 'route' => $r['url']))->fetchAll('id');
         // get part of url by route
         $u = $this->getUrlByRoute($r);
         foreach ($pages as $p) {
             if (!$p['url']) {
                 $priority = 1;
                 $change = self::CHANGE_WEEKLY;
             } else {
                 $priority = $p['parent_id'] ? 0.2 : 0.6;
                 $change = self::CHANGE_MONTHLY;
             }
             $p['url'] = $u . $p['url'];
             if (strpos($p['url'], '<') === false) {
                 $this->addUrl($p['url'], $p['update_datetime'], $change, $priority);
             }
         }
     }
 }
 public function pages($parent_id = 0, $with_params = true)
 {
     if (is_bool($parent_id)) {
         $with_params = $parent_id;
         $parent_id = 0;
     }
     try {
         $domain_model = new siteDomainModel();
         $domain = $domain_model->getByName(waSystem::getInstance()->getRouting()->getDomain(null, true));
         $page_model = new sitePageModel();
         $exclude_ids = waRequest::param('_exclude');
         $sql = "SELECT id, parent_id, name, title, full_url, url, create_datetime, update_datetime FROM " . $page_model->getTableName() . '
                 WHERE domain_id = i:domain_id AND route = s:route AND status = 1' . ($exclude_ids ? " AND id NOT IN (:ids)" : '') . ' ORDER BY sort';
         $pages = $page_model->query($sql, array('domain_id' => $domain['id'], 'ids' => $exclude_ids, 'route' => wa()->getRouting()->getRoute('url')))->fetchAll('id');
         if ($with_params) {
             $page_params_model = new sitePageParamsModel();
             $data = $page_params_model->getByField('page_id', array_keys($pages), true);
             foreach ($data as $row) {
                 $pages[$row['page_id']][$row['name']] = $row['value'];
             }
         }
         // get current rool url
         $url = $this->wa->getAppUrl(null, true);
         foreach ($pages as &$page) {
             $page['url'] = $url . $page['full_url'];
             if (!isset($page['title']) || !$page['title']) {
                 $page['title'] = $page['name'];
             }
             foreach ($page as $k => $v) {
                 if ($k != 'content') {
                     $page[$k] = htmlspecialchars($v);
                 }
             }
         }
         unset($page);
         // make 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]);
             }
         }
         return $pages;
     } catch (Exception $e) {
         return array();
     }
 }
示例#4
0
 public function pages($parent_id = 0, $with_params = true)
 {
     if (is_bool($parent_id)) {
         $with_params = $parent_id;
         $parent_id = 0;
     }
     try {
         $domain_model = new siteDomainModel();
         $domain = $domain_model->getByName(waSystem::getInstance()->getRouting()->getDomain(null, true));
         $page_model = new sitePageModel();
         $sql = "SELECT id, parent_id, name, title, full_url, url, create_datetime, update_datetime FROM " . $page_model->getTableName() . '
                 WHERE domain_id = i:domain_id AND route = s:route AND status = 1 ORDER BY sort';
         if (wa()->getApp() == 'site') {
             $route = wa()->getRouting()->getRoute('url');
             $url = $this->wa->getAppUrl(null, true);
         } else {
             $routes = wa()->getRouting()->getByApp('site', $domain['name']);
             if ($routes) {
                 $route = current($routes);
                 $route = $route['url'];
                 $url = wa()->getRootUrl(false, true) . waRouting::clearUrl($route);
             } else {
                 return array();
             }
         }
         $pages = $page_model->query($sql, array('domain_id' => $domain['id'], 'route' => $route))->fetchAll('id');
         if ($with_params) {
             $page_params_model = new sitePageParamsModel();
             $data = $page_params_model->getByField('page_id', array_keys($pages), true);
             foreach ($data as $row) {
                 $pages[$row['page_id']][$row['name']] = $row['value'];
             }
         }
         foreach ($pages as &$page) {
             $page['url'] = $url . $page['full_url'];
             if (!isset($page['title']) || !$page['title']) {
                 $page['title'] = $page['name'];
             }
             foreach ($page as $k => $v) {
                 if ($k != 'content') {
                     $page[$k] = htmlspecialchars($v);
                 }
             }
         }
         unset($page);
         // make tree
         foreach ($pages as $page_id => $page) {
             if ($page['parent_id'] && isset($pages[$page['parent_id']])) {
                 $pages[$page['parent_id']]['childs'][] =& $pages[$page_id];
             }
         }
         if ($parent_id) {
             return isset($pages[$parent_id]['childs']) ? $pages[$parent_id]['childs'] : array();
         }
         foreach ($pages as $page_id => $page) {
             if ($page['parent_id'] && $page_id != $parent_id) {
                 unset($pages[$page_id]);
             }
         }
         return $pages;
     } catch (Exception $e) {
         return array();
     }
 }