Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Default.php « LocationProvider « UserCountry « plugins - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 85f2a5dc89f9bf12c58a8c107acd0afaf8ac806c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
/**
 * Piwik - Open source web analytics
 * 
 * @link http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 * @version $Id$
 * 
 * @category Piwik_Plugins
 * @package Piwik_UserCountry
 */

/**
 * The default LocationProvider, this LocationProvider guesses a visitor's country
 * using the language they use. This provider is not very accurate.
 * 
 * @package Piwik_UserCountry
 */
class Piwik_UserCountry_LocationProvider_Default extends Piwik_UserCountry_LocationProvider
{
	const ID = 'default';
	const TITLE = 'General_Default';
	
	/**
	 * Guesses a visitor's location using a visitor's browser language.
	 * 
	 * @param array $info Contains 'ip' & 'lang' keys.
	 * @return array Contains the guessed country code mapped to LocationProvider::COUNTRY_CODE_KEY.
	 */
	public function getLocation( $info )
	{
		$enableLanguageToCountryGuess = Piwik_Config::getInstance()->Tracker['enable_language_to_country_guess'];

		if(empty($info['lang'])) {
			$info['lang'] = Piwik_Common::getBrowserLanguage();
		}
		$country = Piwik_Common::getCountry($info['lang'], $enableLanguageToCountryGuess, $info['ip']);
		
		$location = array(parent::COUNTRY_CODE_KEY => $country);
		$this->completeLocationResult($location);
		
		return $location;
	}
	
	/**
	 * Returns whether this location provider is available.
	 * 
	 * This implementation is always available.
	 * 
	 * @return true
	 */
	public function isAvailable()
	{
		return true;
	}
	
	/**
	 * Returns whether this location provider is working correctly.
	 * 
	 * This implementation is always working correctly.
	 * 
	 * @return true
	 */
	public function isWorking()
	{
		return true;
	}
	
	/**
	 * Returns an array describing the types of location information this provider will
	 * return.
	 * 
	 * This provider supports the following types of location info:
	 * - continent code
	 * - continent name
	 * - country code
	 * - country name
	 * 
	 * @return array
	 */
	public function getSupportedLocationInfo()
	{
		return array(self::CONTINENT_CODE_KEY => true,
					  self::CONTINENT_NAME_KEY => true,
					  self::COUNTRY_CODE_KEY => true,
					  self::COUNTRY_NAME_KEY => true);
	}
	
	/**
	 * Returns information about this location provider. Contains an id, title & description:
	 * 
	 * array(
	 *     'id' => 'default',
	 *     'title' => '...',
	 *     'description' => '...'
	 * );
	 * 
	 * @return array
	 */
	public function getInfo()
	{
		$desc = Piwik_Translate('UserCountry_DefaultLocationProviderDesc1') . ' '
			  . Piwik_Translate('UserCountry_DefaultLocationProviderDesc2',
			  		array('<strong>', '<em>', '</em>', '</strong>'))
	  		  . '<p><em><a href="http://piwik.org/faq/how-to/#faq_163" target="_blank">'
	  		  . Piwik_Translate('UserCountry_HowToInstallGeoIPDatabases')
	  		  . '</em></a></p>';
		return array('id' => self::ID, 'title' => self::TITLE, 'description' => $desc, 'order' => 1);
	}
}