示例#1
0
 function ApplyConfigOverrides()
 {
     if (!empty($this->request["args"]["sitecfg"])) {
         $tmpcfg = array();
         array_set_multi($tmpcfg, $this->request["args"]["sitecfg"]);
         // FIXME - can't we just array_set_multi() on $this->sitecfg directly?
         ConfigManager::merge($tmpcfg);
     }
     if (!empty($this->request["args"]["cobrandoverride"])) {
         $included_config =& $this->cfg->GetConfig($this->request["args"]["cobrandoverride"], false, $this->cfg->role);
         if (!empty($included_config)) {
             ConfigManager::merge($included_config);
         }
     }
     $rolename = any($this->request["args"]["_role"], $this->cfg->role);
     $rolecfg = ConfigManager::get("roles.{$rolename}.options");
     if (!empty($rolecfg)) {
         Logger::Info("Using overridden role cfg 'roles.{$rolename}'");
         ConfigManager::merge($rolecfg);
     }
     if ($this->request["ssl"]) {
         $included_config = $this->cfg->GetConfig("classes.secure", false, $this->cfg->role);
         if (!empty($included_config)) {
             ConfigManager::merge($included_config);
         }
     }
     $browseroverride = any($this->request["args"]["sess"]["browser.override"], $_SESSION["temporary"]["user"]["preferences"]["browser"]["override"], NULL);
     if ($browseroverride !== NULL) {
         $this->request["browser"] = $browseroverride;
     }
     if (!empty($this->request["browser"])) {
         $included_config =& ConfigManager::get("browsers.{$this->request['browser']}.options");
         if (!empty($included_config["include"])) {
             // These includes sure do get hairy.  This allows for browsers.*.options.include to call in different classes
             $includes = explode(",", $included_config["include"]);
             foreach ($includes as $include) {
                 $subincluded_config =& $this->cfg->GetConfig($include, false, $this->cfg->role);
                 if (!empty($subincluded_config)) {
                     ConfigManager::merge($subincluded_config);
                 }
             }
             unset($included_config["include"]);
         }
         if (!empty($included_config)) {
             ConfigManager::merge($included_config);
         }
     }
     if ($this->debug) {
         $subincluded_config =& $this->cfg->GetConfig("classes.debug", false, $this->cfg->role);
         if (!empty($subincluded_config)) {
             ConfigManager::merge($subincluded_config);
         }
     }
 }