Questtype ?Textinput?: add support for field sizes (Issue #252) and general improvements
This commit is contained in:
commit
8d903135a5
3476 changed files with 599099 additions and 0 deletions
169
www/analytics/plugins/UserCountry/functions.php
Normal file
169
www/analytics/plugins/UserCountry/functions.php
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugins\UserCountry;
|
||||
|
||||
use Piwik\DataTable;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
|
||||
use Piwik\Tracker\Visit;
|
||||
|
||||
/**
|
||||
* Return the flag image path for a given country
|
||||
*
|
||||
* @param string $code ISO country code
|
||||
* @return string Flag image path
|
||||
*/
|
||||
function getFlagFromCode($code)
|
||||
{
|
||||
$pathInPiwik = 'plugins/UserCountry/images/flags/%s.png';
|
||||
$pathWithCode = sprintf($pathInPiwik, $code);
|
||||
$absolutePath = PIWIK_INCLUDE_PATH . '/' . $pathWithCode;
|
||||
if (file_exists($absolutePath)) {
|
||||
return $pathWithCode;
|
||||
}
|
||||
return sprintf($pathInPiwik, Visit::UNKNOWN_CODE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the translated continent name for a given continent code
|
||||
*
|
||||
* @param string $label Continent code
|
||||
* @return string Continent name
|
||||
*/
|
||||
function continentTranslate($label)
|
||||
{
|
||||
if ($label == 'unk' || $label == '') {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
return Piwik::translate('UserCountry_continent_' . $label);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the translated country name for a given country code
|
||||
*
|
||||
* @param string $label country code
|
||||
* @return string Country name
|
||||
*/
|
||||
function countryTranslate($label)
|
||||
{
|
||||
if ($label == Visit::UNKNOWN_CODE || $label == '') {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
return Piwik::translate('UserCountry_country_' . $label);
|
||||
}
|
||||
|
||||
/**
|
||||
* Splits a label by a certain separator and returns the N-th element.
|
||||
*
|
||||
* @param string $label
|
||||
* @param string $separator eg. ',' or '|'
|
||||
* @param int $index The element index to extract.
|
||||
* @param mixed $emptyValue The value to remove if the element is absent. Defaults to false,
|
||||
* so no new metadata/column is added.
|
||||
* @return string|false Returns false if $label == DataTable::LABEL_SUMMARY_ROW, otherwise
|
||||
* explode($separator, $label)[$index].
|
||||
*/
|
||||
function getElementFromStringArray($label, $separator, $index, $emptyValue = false)
|
||||
{
|
||||
if ($label == DataTable::LABEL_SUMMARY_ROW) {
|
||||
return false; // so no metadata/column is added
|
||||
}
|
||||
|
||||
$segments = explode($separator, $label);
|
||||
return empty($segments[$index]) ? $emptyValue : $segments[$index];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the region name using the label of a Visits by Region report.
|
||||
*
|
||||
* @param string $label A label containing a region code followed by '|' and a country code, eg,
|
||||
* 'P3|GB'.
|
||||
* @return string|false The region name or false if $label == DataTable::LABEL_SUMMARY_ROW.
|
||||
*/
|
||||
function getRegionName($label)
|
||||
{
|
||||
if ($label == DataTable::LABEL_SUMMARY_ROW) {
|
||||
return false; // so no metadata/column is added
|
||||
}
|
||||
|
||||
if ($label == '') {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
list($regionCode, $countryCode) = explode(Archiver::LOCATION_SEPARATOR, $label);
|
||||
return GeoIp::getRegionNameFromCodes($countryCode, $regionCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of a region + the name of the region's country using the label of
|
||||
* a Visits by Region report.
|
||||
*
|
||||
* @param string $label A label containing a region code followed by '|' and a country code, eg,
|
||||
* 'P3|GB'.
|
||||
* @return string|false eg. 'Ile de France, France' or false if $label == DataTable::LABEL_SUMMARY_ROW.
|
||||
*/
|
||||
function getPrettyRegionName($label)
|
||||
{
|
||||
if ($label == DataTable::LABEL_SUMMARY_ROW) {
|
||||
return $label;
|
||||
}
|
||||
|
||||
if ($label == '') {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
list($regionCode, $countryCode) = explode(Archiver::LOCATION_SEPARATOR, $label);
|
||||
|
||||
$result = GeoIp::getRegionNameFromCodes($countryCode, $regionCode);
|
||||
if ($countryCode != Visit::UNKNOWN_CODE && $countryCode != '') {
|
||||
$result .= ', ' . countryTranslate($countryCode);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of a city + the name of its region + the name of its country using
|
||||
* the label of a Visits by City report.
|
||||
*
|
||||
* @param string $label A label containing a city name, region code + country code,
|
||||
* separated by two '|' chars: 'Paris|A8|FR'
|
||||
* @return string|false eg. 'Paris, Ile de France, France' or false if $label ==
|
||||
* DataTable::LABEL_SUMMARY_ROW.
|
||||
*/
|
||||
function getPrettyCityName($label)
|
||||
{
|
||||
if ($label == DataTable::LABEL_SUMMARY_ROW) {
|
||||
return $label;
|
||||
}
|
||||
|
||||
if ($label == '') {
|
||||
return Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
// get city name, region code & country code
|
||||
$parts = explode(Archiver::LOCATION_SEPARATOR, $label);
|
||||
$cityName = $parts[0];
|
||||
$regionCode = $parts[1];
|
||||
$countryCode = @$parts[2];
|
||||
|
||||
if ($cityName == Visit::UNKNOWN_CODE || $cityName == '') {
|
||||
$cityName = Piwik::translate('General_Unknown');
|
||||
}
|
||||
|
||||
$result = $cityName;
|
||||
if ($countryCode != Visit::UNKNOWN_CODE && $countryCode != '') {
|
||||
if ($regionCode != '' && $regionCode != Visit::UNKNOWN_CODE) {
|
||||
$regionName = GeoIp::getRegionNameFromCodes($countryCode, $regionCode);
|
||||
$result .= ', ' . $regionName;
|
||||
}
|
||||
$result .= ', ' . countryTranslate($countryCode);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue