Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Base actions for the nmcLanguageSwitcherPlugin language module.
- *
- * @package nmcLanguageSwitcherPlugin
- * @subpackage language
- * @author NiMo Consulting LLC
- * @version 1.0.0.
- */
- abstract class BaselanguageActions extends sfActions
- {
- public function executeChangeLanguage(sfWebRequest $request)
- {
- $new_lang = $request->getParameter('lang',false);
- $old_lang = $this->getUser()->getCulture();
- $this->forward404unless($new_lang);
- $all_lang = sfConfig::get('app_available_languages',array('en'=>array('en', 'English')));
- foreach($all_lang as $lang):
- if($new_lang === $lang[0]) {
- $this->getUser()->setCulture($new_lang);
- }
- endforeach;
- $prev = $request->getReferer();
- /* 2011 July 25 bug fix. Now work with ':sf_culture' in routing.*/
- /* case: domain/foo/sf_culture/bar */
- $pos = strpos($prev,'/'.$old_lang.'/');
- if($pos !== false){$prev = str_replace('/'.$old_lang.'/','/'.$new_lang.'/',$prev);}
- /* case: domain/foo/sf_culture */
- $pos = strpos($prev,'/'.$old_lang);
- if($pos !== false && strlen($prev) === ($pos + strlen('/'.$old_lang))) {
- $prev = str_replace('/'.$old_lang, '/'.$new_lang, $prev);
- }
- /* Still have bug if route contains same string as '/sf_culture/'. example: 'domain/sf_culture/module/action/param' if (param == sf_culture) there will be bug. */
- /* end of 2011 July 25 bug fix */
- $this->redirect(($prev)?$prev:sfConfig::get('app_homepage'));
- return sfView::HEADER_ONLY;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement