root/trunk/apps/main/lib/i18nSubdomainFilter.class.php

Revision 48, 1.3 kB (checked in by nperriault, 8 months ago)

Upgraded scripts to use symfony 1.1, everything is broken, use with caution.

Line 
1 <?php
2 class i18nSubdomainFilter extends sfFilter
3 {
4
5   /**
6    * Log filter activity
7    *
8    * @param string  $message
9    * @param int     $level
10    */
11   public function log($message, $level = sfLogger::DEBUG)
12   {
13     sfContext::getInstance()->getLogger()->log('{i18nSubdomainFilter} '.$message, $level);
14   }
15
16   /**
17    * Executes filter chain
18    *
19    * @param sfFilterChain $filterChain
20    */
21   public function execute($filterChain)
22   {
23     if ($this->isFirstCall())
24     {
25       $context = $this->getContext();
26       $request = $context->getRequest();
27       $user    = $context->getUser();
28       $host_parts = explode('.', $request->getHost());
29
30       if (count($host_parts) > 2) // We have at least a subdomain
31       {
32         $lang = strtolower($host_parts[0]);
33       }
34       else
35       {
36         $lang = sfConfig::get('sf_default_culture', 'en');
37       }
38
39       $this->log(sprintf('Desired lang extracted from host: %s', $lang));
40
41       $enabled_cultures = sfConfig::get('app_cultures_enabled', array());
42       if (in_array($lang, $enabled_cultures))
43       {
44         $this->log(sprintf('Applying detected requested lang to session: %s', $lang));
45         $user->setCulture($lang);
46         sfConfig::set('sf_current_culture', $lang);
47         $context->getResponse()->addMeta('language', $lang, true);
48       }
49     }
50     $filterChain->execute();
51   }
52
53 }
54
Note: See TracBrowser for help on using the browser.