74 lines
2.5 KiB
PHP
74 lines
2.5 KiB
PHP
|
|
<?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: API.php 2147 2010-05-06 18:50:38Z vipsoft $
|
||
|
|
*
|
||
|
|
* @category Piwik_Plugins
|
||
|
|
* @package Piwik_UserCountry
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @see core/DataFiles/Countries.php
|
||
|
|
* @see plugins/UserCountry/functions.php
|
||
|
|
*/
|
||
|
|
require_once PIWIK_INCLUDE_PATH . '/core/DataFiles/Countries.php';
|
||
|
|
require_once PIWIK_INCLUDE_PATH . '/plugins/UserCountry/functions.php';
|
||
|
|
|
||
|
|
/**
|
||
|
|
*
|
||
|
|
* @package Piwik_UserCountry
|
||
|
|
*/
|
||
|
|
class Piwik_UserCountry_API
|
||
|
|
{
|
||
|
|
static private $instance = null;
|
||
|
|
static public function getInstance()
|
||
|
|
{
|
||
|
|
if (self::$instance == null)
|
||
|
|
{
|
||
|
|
$c = __CLASS__;
|
||
|
|
self::$instance = new $c();
|
||
|
|
}
|
||
|
|
return self::$instance;
|
||
|
|
}
|
||
|
|
|
||
|
|
public function getCountry( $idSite, $period, $date )
|
||
|
|
{
|
||
|
|
$dataTable = $this->getDataTable('UserCountry_country', $idSite, $period, $date);
|
||
|
|
// apply filter on the whole datatable in order the inline search to work (searches are done on "beautiful" label)
|
||
|
|
$dataTable->filter('ColumnCallbackAddMetadata', array('label', 'code', create_function('$label', 'return $label;')));
|
||
|
|
$dataTable->filter('ColumnCallbackAddMetadata', array('label', 'logo', 'Piwik_getFlagFromCode'));
|
||
|
|
$dataTable->filter('ColumnCallbackReplace', array('label', 'Piwik_CountryTranslate'));
|
||
|
|
$dataTable->queueFilter('AddConstantMetadata', array('logoWidth', 18));
|
||
|
|
$dataTable->queueFilter('AddConstantMetadata', array('logoHeight', 12));
|
||
|
|
return $dataTable;
|
||
|
|
}
|
||
|
|
|
||
|
|
public function getContinent( $idSite, $period, $date )
|
||
|
|
{
|
||
|
|
$dataTable = $this->getDataTable('UserCountry_continent', $idSite, $period, $date);
|
||
|
|
$dataTable->filter('ColumnCallbackReplace', array('label', 'Piwik_ContinentTranslate'));
|
||
|
|
$dataTable->queueFilter('ColumnCallbackAddMetadata', array('label', 'code', create_function('$label', 'return $label;')));
|
||
|
|
return $dataTable;
|
||
|
|
}
|
||
|
|
|
||
|
|
protected function getDataTable($name, $idSite, $period, $date)
|
||
|
|
{
|
||
|
|
Piwik::checkUserHasViewAccess( $idSite );
|
||
|
|
$archive = Piwik_Archive::build($idSite, $period, $date );
|
||
|
|
$dataTable = $archive->getDataTable($name);
|
||
|
|
$dataTable->filter('Sort', array(Piwik_Archive::INDEX_NB_VISITS));
|
||
|
|
$dataTable->queueFilter('ReplaceColumnNames');
|
||
|
|
return $dataTable;
|
||
|
|
}
|
||
|
|
|
||
|
|
public function getNumberOfDistinctCountries($idSite, $period, $date)
|
||
|
|
{
|
||
|
|
Piwik::checkUserHasViewAccess( $idSite );
|
||
|
|
$archive = Piwik_Archive::build($idSite, $period, $date );
|
||
|
|
return $archive->getDataTableFromNumeric('UserCountry_distinctCountries');
|
||
|
|
}
|
||
|
|
}
|