/**
  * Returns true if the domain is currently in the HTTP_HOST
  * @return boolean
  */
 public function isActive()
 {
     if ($this->isAllowedPath($_SERVER['REQUEST_URI'])) {
         return false;
     }
     $current_host = $_SERVER['HTTP_HOST'];
     $allow_subdomains = MultiDomain::config()->allow_subdomains;
     $hostname = $this->getHostname();
     return $allow_subdomains ? preg_match('/(\\.|^)' . $hostname . '$/', $current_host) : $current_host == $hostname;
 }
 /**
  * Returns true if the domain is currently in the HTTP_HOST
  * @return boolean
  */
 public function isActive()
 {
     if ($this->isAllowedPath($_SERVER['REQUEST_URI'])) {
         return false;
     }
     $currentHost = $_SERVER['HTTP_HOST'];
     if (strpos(':', $currentHost) !== false) {
         list($currentHost, $currentPort) = explode(':', $currentHost, 2);
     }
     $allow_subdomains = MultiDomain::config()->allow_subdomains;
     $hostname = $this->getHostname();
     return $allow_subdomains ? preg_match('/(\\.|^)' . $hostname . '$/', $currentHost) : $currentHost == $hostname;
 }
 /**
  * Gets the active domain, and sets its URL to the native one, with a vanity
  * URL in the request
  * 
  * @param  SS_HTTPRequest $request 
  * @param  Session        $session 
  * @param  DataModel      $model 
  */
 public function preRequest(SS_HTTPRequest $request, Session $session, DataModel $model)
 {
     if (Director::is_cli()) {
         return;
     }
     // Not the best place for validation, but _config.php is too early.
     if (!MultiDomain::get_primary_domain()) {
         throw new Exception('MultiDomain must define a "' . MultiDomain::KEY_PRIMARY . '" domain in the config, under "domains"');
     }
     foreach (MultiDomain::get_all_domains() as $domain) {
         if (!$domain->isActive()) {
             continue;
         }
         $url = $this->createNativeURLForDomain($domain);
         $parts = explode('?', $url);
         $request->setURL($parts[0]);
     }
 }
 function __construct($config)
 {
     self::$instance = $this;
     $this->domains = $config;
     $this->get_domain();
     // Register Filters
     if ($this->domain) {
         $properties = array('blogname', 'siteurl', 'home', 'blogdescription', 'template');
         foreach ($properties as $property) {
             if ($this->domain[$property]) {
                 add_filter("option_{$property}", array($this, $property), 1);
                 if ($property == 'template') {
                     add_filter("template", array($this, "template"), 1);
                     add_filter("option_stylesheet", array($this, "template"), 1);
                 }
             }
         }
     }
     // Register Shortcodes
     add_shortcode('MultiDomain_if', array($this, 'if_domain'));
     add_shortcode('MultiDomain_else', array($this, 'else_domain'));
     add_shortcode('MultiDomain_default', array($this, 'else_domain'));
 }