/**
  * @param string $servername hostname
  * @param string $pathname URL base path
  * @param string $wildcard hostname suffix to match wildcard config
  */
 static function setupSite($servername, $pathname, $wildcard)
 {
     global $config;
     $sn = null;
     // XXX I18N, probably not crucial for hostnames
     // XXX This probably needs a tune up
     $sn = self::getFromHostname($servername, $wildcard);
     if (!empty($sn)) {
         // Redirect to the right URL
         if (!empty($sn->hostname) && empty($_SERVER['HTTPS']) && 0 != strcasecmp($sn->hostname, $servername)) {
             $sn->redirectTo('http://' . $sn->hostname . $_SERVER['REQUEST_URI']);
         } else {
             if (!empty($_SERVER['HTTPS']) && 0 != strcasecmp($sn->hostname, $servername) && 0 != strcasecmp($sn->nickname . '.' . $wildcard, $servername)) {
                 $sn->redirectTo('https://' . $sn->nickname . '.' . $wildcard . $_SERVER['REQUEST_URI']);
             }
         }
         $dbhost = empty($sn->dbhost) ? 'localhost' : $sn->dbhost;
         $dbuser = empty($sn->dbuser) ? $sn->nickname : $sn->dbuser;
         $dbpass = $sn->dbpass;
         $dbname = empty($sn->dbname) ? $sn->nickname : $sn->dbname;
         $config['db']['database'] = "mysqli://{$dbuser}:{$dbpass}@{$dbhost}/{$dbname}";
         $config['site']['name'] = $sn->sitename;
         $config['site']['nickname'] = $sn->nickname;
         self::$wildcard = $wildcard;
         $config['site']['wildcard'] =& self::$wildcard;
         if (!empty($sn->hostname)) {
             $config['site']['server'] = $sn->hostname;
         }
         if (!empty($sn->theme)) {
             $config['site']['theme'] = $sn->theme;
         }
         if (!empty($sn->logo)) {
             $config['site']['logo'] = $sn->logo;
         }
         return $sn;
     } else {
         return null;
     }
 }
 static function registerEmail($email)
 {
     $domain = self::toDomain($email);
     if (FreeEmail::isFree($domain)) {
         throw new ClientException(_("Use your work email."));
     }
     $sn = self::siteForDomain($domain);
     if (empty($sn)) {
         $installer = new DomainStatusNetworkInstaller($domain);
         // Do the thing
         $installer->main();
         $sn = $installer->getStatusNetwork();
         $config = $installer->getConfig();
         Status_network::$wildcard = $config['WILDCARD'];
     }
     StatusNet::switchSite($sn->nickname);
     $confirm = EmailRegistrationPlugin::registerEmail($email);
     return $confirm;
 }
示例#3
0
 /**
  * @param string $servername hostname
  * @param string $pathname URL base path
  * @param string $wildcard hostname suffix to match wildcard config
  */
 static function setupSite($servername, $pathname, $wildcard)
 {
     global $config;
     $sn = null;
     // XXX I18N, probably not crucial for hostnames
     // XXX This probably needs a tune up
     if (0 == strncasecmp(strrev($wildcard), strrev($servername), strlen($wildcard))) {
         // special case for exact match
         if (0 == strcasecmp($servername, $wildcard)) {
             $sn = self::memGet('nickname', '');
         } else {
             $parts = explode('.', $servername);
             $sn = self::memGet('nickname', strtolower($parts[0]));
         }
     } else {
         $sn = self::memGet('hostname', strtolower($servername));
         if (empty($sn)) {
             // Try for a no-www address
             if (0 == strncasecmp($servername, 'www.', 4)) {
                 $sn = self::memGet('hostname', strtolower(substr($servername, 4)));
             }
         }
     }
     if (!empty($sn)) {
         // Redirect to the right URL
         if (!empty($sn->hostname) && empty($_SERVER['HTTPS']) && 0 != strcasecmp($sn->hostname, $servername)) {
             $sn->redirectTo('http://' . $sn->hostname . $_SERVER['REQUEST_URI']);
         } else {
             if (!empty($_SERVER['HTTPS']) && 0 != strcasecmp($sn->hostname, $servername) && 0 != strcasecmp($sn->nickname . '.' . $wildcard, $servername)) {
                 $sn->redirectTo('https://' . $sn->nickname . '.' . $wildcard . $_SERVER['REQUEST_URI']);
             }
         }
         $dbhost = empty($sn->dbhost) ? 'localhost' : $sn->dbhost;
         $dbuser = empty($sn->dbuser) ? $sn->nickname : $sn->dbuser;
         $dbpass = $sn->dbpass;
         $dbname = empty($sn->dbname) ? $sn->nickname : $sn->dbname;
         $config['db']['database'] = "mysqli://{$dbuser}:{$dbpass}@{$dbhost}/{$dbname}";
         $config['site']['name'] = $sn->sitename;
         $config['site']['nickname'] = $sn->nickname;
         self::$wildcard = $wildcard;
         $config['site']['wildcard'] =& self::$wildcard;
         if (!empty($sn->hostname)) {
             $config['site']['server'] = $sn->hostname;
         }
         if (!empty($sn->theme)) {
             $config['site']['theme'] = $sn->theme;
         }
         if (!empty($sn->logo)) {
             $config['site']['logo'] = $sn->logo;
         }
         return $sn;
     } else {
         return null;
     }
 }
 function checkSchema()
 {
     $config = $this->getConfig();
     Status_network::$wildcard = $config['WILDCARD'];
     StatusNet::switchSite($this->nickname);
     // We need to initialize the schema_version stuff to make later setup easier
     $schema = array();
     require INSTALLDIR . '/db/core.php';
     $tableDefs = $schema;
     $schema = Schema::get();
     $schemaUpdater = new SchemaUpdater($schema);
     foreach ($tableDefs as $table => $def) {
         $schemaUpdater->register($table, $def);
     }
     $schemaUpdater->checkSchema();
     Event::handle('CheckSchema');
 }