protected function getAppRouting($application) { if (isset($this->appRoutings[$application])) { return $this->appRoutings[$application]; } $context = sfContext::getInstance(); $configuration = $context->getConfiguration(); $config = new opRoutingConfigHandler(); $currentApp = sfConfig::get('sf_app'); sfConfig::set('sf_app', $application); $configuration->setAppDir(sfConfig::get('sf_apps_dir') . DIRECTORY_SEPARATOR . $application); $settings = sfDefineEnvironmentConfigHandler::getConfiguration($configuration->getConfigPaths('config/settings.yml')); $isNoScriptName = !empty($settings['.settings']['no_script_name']); $options = $context->getRouting()->getOptions(); $url = sfConfig::get('op_base_url'); if ('http://example.com' !== $url) { $parts = parse_url($url); $parts['path'] = isset($parts['path']) ? $parts['path'] : '/'; $parts['host'] = isset($parts['host']) ? $parts['host'] : ''; $options['context'] = array('prefix' => $this->getAppScriptName($application, sfConfig::get('sf_environment'), $parts['path'], $isNoScriptName), 'host' => $parts['host']); } $routing = new sfPatternRouting($context->getEventDispatcher(), null, $options); $routing->setRoutes($config->evaluate($configuration->getConfigPaths('config/routing.yml'))); $context->getEventDispatcher()->notify(new sfEvent($routing, 'routing.load_configuration')); sfConfig::set('sf_app', $currentApp); $configuration->setAppDir(sfConfig::get('sf_apps_dir') . DIRECTORY_SEPARATOR . $currentApp); $this->appRoutings[$application] = $routing; return $this->appRoutings[$application]; }
protected function getAppRouting($application) { if (isset($this->appRoutings[$application])) { return $this->appRoutings[$application]; } $context = sfContext::getInstance(); $configuration = $context->getConfiguration(); $config = new opRoutingConfigHandler(); $currentApp = sfConfig::get('sf_app'); sfConfig::set('sf_app', $application); $configuration->setAppDir(sfConfig::get('sf_apps_dir') . DIRECTORY_SEPARATOR . $application); $settings = sfDefineEnvironmentConfigHandler::getConfiguration($configuration->getConfigPaths('config/settings.yml')); $isNoScriptName = !empty($settings['.settings']['no_script_name']); $options = $context->getRouting()->getOptions(); if ($options['context']['is_secure']) { $sslBaseUrls = sfConfig::get('op_ssl_base_url'); $url = $sslBaseUrls[$application]; $isDefault = 'https://example.com' === $url; } else { $url = sfConfig::get('op_base_url'); $isDefault = 'http://example.com' === $url; } if (!$isDefault) { $parts = parse_url($url); $parts['path'] = isset($parts['path']) ? $parts['path'] : ''; $options['context']['prefix'] = $this->getAppScriptName($application, sfConfig::get('sf_environment'), $parts['path'], $isNoScriptName); if (isset($parts['host'])) { $options['context']['host'] = $parts['host']; if (isset($parts['port'])) { $options['context']['host'] .= ':' . $parts['port']; } } } else { $path = preg_replace('#/[^/]+\\.php$#', '', $options['context']['prefix']); $options['context']['prefix'] = $this->getAppScriptName($application, sfConfig::get('sf_environment'), $path, $isNoScriptName); } $routing = new sfPatternRouting($context->getEventDispatcher(), null, $options); $routing->setRoutes($config->evaluate($configuration->getConfigPaths('config/routing.yml'))); $context->getEventDispatcher()->notify(new sfEvent($routing, 'routing.load_configuration')); sfConfig::set('sf_app', $currentApp); $configuration->setAppDir(sfConfig::get('sf_apps_dir') . DIRECTORY_SEPARATOR . $currentApp); $this->appRoutings[$application] = $routing; return $this->appRoutings[$application]; }