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; }
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'))); }