Пример #1
0
 public static function getDomains($full = false)
 {
     if (!self::$domains) {
         $domain_model = new siteDomainModel();
         $q = $domain_model->select('*');
         if (!wa()->getUser()->isAdmin('site')) {
             $domain_ids = wa()->getUser()->getRights('site', 'domain.%', false);
             if ($domain_ids) {
                 $q->where("id IN ('" . implode("','", $domain_ids) . "')");
             } else {
                 $q->where('0');
             }
         }
         self::$domains = $q->fetchAll('id');
         if (wa()->getUser()->isAdmin('site')) {
             $routes = wa('wa-system')->getConfig()->getRouting();
             // hide default routing (for all domains)
             if (isset($routes['default'])) {
                 unset($routes['default']);
             }
             $ds = array();
             foreach (self::$domains as $d) {
                 $ds[] = $d['name'];
             }
             foreach ($routes as $r_id => $r) {
                 if (!is_array($r)) {
                     unset($routes[$r_id]);
                 }
             }
             $new_domains = array_diff(array_keys($routes), $ds);
             if ($new_domains) {
                 foreach ($new_domains as $d) {
                     $domain_model->insert(array('name' => $d));
                 }
                 self::$domains = $domain_model->select('*')->fetchAll('id');
             }
             if (!self::$domains) {
                 $domain_model->insert(array('name' => wa()->getConfig()->getDomain()));
                 self::$domains = $domain_model->select('*')->fetchAll('id');
             }
         }
         // hide default routing (for all domains)
         if (isset(self::$domains['default'])) {
             unset(self::$domains['default']);
         }
     }
     $result = array();
     foreach (self::$domains as $id => $d) {
         $result[$id] = $d['title'] ? $d['title'] : $d['name'];
         if ($full) {
             $result[$id] = array('name' => $d['name'], 'title' => $result[$id], 'style' => $d['style']);
         }
     }
     return $result;
 }
 protected function getThemesRoutes(&$themes, $routes)
 {
     $hash = $this->getThemeHash();
     $themes_routes = array();
     $preview_url = '';
     if (wa()->appExists('site')) {
         wa('site');
         $model = new siteDomainModel();
         $domains = $model->select('id,name')->fetchAll('name', true);
         $routing_url = wa()->getAppUrl('site');
     } else {
         $domains = array();
     }
     $domain = wa()->getRouting()->getDomain();
     foreach ($routes as $r) {
         $t_id = isset($r['theme']) ? $r['theme'] : 'default';
         if (!isset($themes[$t_id])) {
             $t_id = 'default';
         }
         $r['theme'] = $t_id;
         $themes[$t_id]['is_used'] = true;
         if (isset($r['theme_mobile'])) {
             $themes[$r['theme_mobile']]['is_used'] = true;
         }
         $url = $r['_url'];
         if (!$preview_url && $r['_domain'] == $domain) {
             $preview_url = $url;
         }
         $r['_preview_url'] = $url;
         if (isset($domains[$r['_domain']]) && $this->getUser()->getRights('site', 'domain.' . $domains[$r['_domain']])) {
             $r['_routing_url'] = $routing_url . '?module=routing&action=edit&domain_id=' . $domains[$r['_domain']] . '&route=' . $r['_id'];
         }
         $themes_routes[] = $r;
     }
     $preview_params = strpos($preview_url, '?') === false ? '?' : '&';
     $preview_params .= 'theme_hash=' . $hash . '&set_force_theme=';
     foreach ($themes as $t_id => $theme) {
         if (!isset($theme['preview_url'])) {
             $themes[$t_id]['preview_url'] = $preview_url ? $preview_url . $preview_params . $t_id : '';
         }
         $themes[$t_id]['preview_name'] = preg_replace('/^.*?\\/\\/(.*?)\\?.*$/', '$1', $themes[$t_id]['preview_url']);
         if (!$theme['is_used']) {
             $themes_routes[] = $t_id;
         }
     }
     return $themes_routes;
 }
Пример #3
0
 public function init()
 {
     $model = new siteDomainModel();
     $items = $model->select('id, name')->fetchAll('id', true);
     $this->addItem('domain', _w('Available sites'), 'list', array('items' => $items, 'value' => bindec('11111111')));
 }