ChangeLanguageFilter   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 12
c 1
b 0
f 0
dl 0
loc 37
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A preFilter() 0 19 4
A getCurrentUserLanguage() 0 6 1
1
<?php
2
3
/**
4
 * Pre-filter which checks if the user form has been submitted 
5
 * and changes the application language accordingly
6
 *
7
 * @author Sam Stenvall <[email protected]>
8
 * @copyright Copyright &copy; Sam Stenvall 2014-
9
 * @license https://www.gnu.org/licenses/gpl.html The GNU General Public License v3.0
10
 */
11
class ChangeLanguageFilter extends CFilter
12
{
13
14
	/**
15
	 * @inheritdoc
16
	 */
17
	protected function preFilter($filterChain)
18
	{
19
		if (isset($_POST['User']))
20
		{
21
			$previousLanguage = $this->getCurrentUserLanguage();
22
			$userId = $_POST['User']['id'];
23
			$newLanguage = $_POST['User']['language'];
24
			
25
			if ($previousLanguage !== $newLanguage && Yii::app()->user->id === $userId)
26
			{
27
				// Get the display name of the new language
28
				$languages = LanguageManager::getAvailableLanguages();
29
30
				Yii::app()->languageManager->setCurrent($newLanguage);
31
				Yii::app()->user->setFlash('info', Yii::t('Language', 'Language changed to {newLanguage}', array('{newLanguage}'=>$languages[$newLanguage])));
32
			}
33
		}
34
35
		return true;
36
	}
37
38
39
	/**
40
	 * @return string the user's current language
41
	 */
42
	private function getCurrentUserLanguage()
43
	{
44
		/* @var User $user */
45
		$user = User::model()->findByPk(Yii::app()->user->id);
46
		
47
		return $user->language;
48
	}
49
50
}
51