diff options
author | matt <matt@59fd770c-687e-43c8-a1e3-f5a4ff64c105> | 2008-05-18 21:22:35 +0400 |
---|---|---|
committer | matt <matt@59fd770c-687e-43c8-a1e3-f5a4ff64c105> | 2008-05-18 21:22:35 +0400 |
commit | 8787eb7594388ee4b4577d7648137c8b4e757a60 (patch) | |
tree | 882d420a253e89c432470e90f5c2d0deb0811939 /plugins/Referers/API.php | |
parent | 21e89891f990639144358109c8e14cf3ca6af717 (diff) |
- remove useless __construct()
- renamed empty filter to Null filter
- columns are now renamed recursively, fixing bug in not valid XML code when the columns still had a numeric name
- added a new parameter in API for Referers module: expanded. If set to true, it will load the data recursively (eg. all keywords + the search engines for each keyword).
Diffstat (limited to 'plugins/Referers/API.php')
-rw-r--r-- | plugins/Referers/API.php | 137 |
1 files changed, 73 insertions, 64 deletions
diff --git a/plugins/Referers/API.php b/plugins/Referers/API.php index 19196cb23a..a4e898c9b2 100644 --- a/plugins/Referers/API.php +++ b/plugins/Referers/API.php @@ -1,157 +1,166 @@ <?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$ - * + * * @package Piwik_Referers */ - + /** - * + * * @package Piwik_Referers */ class Piwik_Referers_API extends Piwik_Apiable { static private $instance = null; - protected function __construct() - { - parent::__construct(); - } - static public function getInstance() { if (self::$instance == null) - { + { $c = __CLASS__; self::$instance = new $c(); } return self::$instance; } - - private function getDataTable($name, $idSite, $period, $date, $idSubtable = null) + + private function getDataTable($name, $idSite, $period, $date, $expanded, $idSubtable = null) { Piwik::checkUserHasViewAccess( $idSite ); $archive = Piwik_Archive::build($idSite, $period, $date ); - - $dataTable = $archive->getDataTable($name, $idSubtable); + + if($expanded) + { + $dataTable = $archive->getDataTableExpanded($name, $idSubtable); + $dataTable->enableRecursiveSort(); + } + else + { + $dataTable = $archive->getDataTable($name, $idSubtable); + } $dataTable->queueFilter('Piwik_DataTable_Filter_ReplaceColumnNames'); return $dataTable; } + function getRefererType($idSite, $period, $date) { - $dataTable = $this->getDataTable('Referers_type',$idSite, $period, $date); + $dataTable = $this->getDataTable('Referers_type',$idSite, $period, $date, $expanded = false); $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackReplace', array('label', 'Piwik_getRefererTypeLabel')); return $dataTable; } - - function getKeywords($idSite, $period, $date) + + function getKeywords($idSite, $period, $date, $expanded = false) { - $dataTable = $this->getDataTable('Referers_searchEngineByKeyword',$idSite, $period, $date); + $dataTable = $this->getDataTable('Referers_searchEngineByKeyword',$idSite, $period, $date, $expanded); return $dataTable; } - + function getSearchEnginesFromKeywordId($idSite, $period, $date, $idSubtable) { - $dataTable = $this->getDataTable('Referers_searchEngineByKeyword',$idSite, $period, $date, $idSubtable); + $dataTable = $this->getDataTable('Referers_searchEngineByKeyword',$idSite, $period, $date, $expanded = false, $idSubtable); $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackAddDetail', array( 'label', 'url', 'Piwik_getSearchEngineUrlFromName') ); $dataTable->queueFilter('Piwik_DataTable_Filter_DetailCallbackAddDetail', array( 'url', 'logo', 'Piwik_getSearchEngineLogoFromName') ); - return $dataTable; + return $dataTable; } - - function getSearchEngines($idSite, $period, $date) + + function getSearchEngines($idSite, $period, $date, $expanded = false) { - $dataTable = $this->getDataTable('Referers_keywordBySearchEngine',$idSite, $period, $date); + $dataTable = $this->getDataTable('Referers_keywordBySearchEngine',$idSite, $period, $date, $expanded); $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackAddDetail', array( 'label', 'url', 'Piwik_getSearchEngineUrlFromName') ); $dataTable->queueFilter('Piwik_DataTable_Filter_DetailCallbackAddDetail', array( 'url', 'logo', 'Piwik_getSearchEngineLogoFromName') ); return $dataTable; } - + function getKeywordsFromSearchEngineId($idSite, $period, $date, $idSubtable) { - $dataTable = $this->getDataTable('Referers_keywordBySearchEngine',$idSite, $period, $date, $idSubtable); - return $dataTable; + $dataTable = $this->getDataTable('Referers_keywordBySearchEngine',$idSite, $period, $date, $expanded = false, $idSubtable); + return $dataTable; } - - function getCampaigns($idSite, $period, $date) + + function getCampaigns($idSite, $period, $date, $expanded = false) { - $dataTable = $this->getDataTable('Referers_keywordByCampaign',$idSite, $period, $date); + $dataTable = $this->getDataTable('Referers_keywordByCampaign',$idSite, $period, $date, $expanded); return $dataTable; } - + function getKeywordsFromCampaignId($idSite, $period, $date, $idSubtable) { - $dataTable = $this->getDataTable('Referers_keywordByCampaign',$idSite, $period, $date, $idSubtable); - return $dataTable; + $dataTable = $this->getDataTable('Referers_keywordByCampaign',$idSite, $period, $date, $expanded = false, $idSubtable); + return $dataTable; } - - function getWebsites($idSite, $period, $date) + + function getWebsites($idSite, $period, $date, $expanded = false) { - $dataTable = $this->getDataTable('Referers_urlByWebsite',$idSite, $period, $date); + $dataTable = $this->getDataTable('Referers_urlByWebsite',$idSite, $period, $date, $expanded); return $dataTable; } function getUrlsFromWebsiteId($idSite, $period, $date, $idSubtable) - { - $dataTable = $this->getDataTable('Referers_urlByWebsite',$idSite, $period, $date, $idSubtable); + { + $dataTable = $this->getDataTable('Referers_urlByWebsite',$idSite, $period, $date, $expanded = false, $idSubtable); $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackAddDetail', array( 'label', 'url', create_function('$label', 'return $label;')) ); $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackReplace', array('label', 'Piwik_getPathFromUrl')); $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackReplace', array('label', 'Piwik_truncatePath')); - return $dataTable; + return $dataTable; } - - function getPartners($idSite, $period, $date) + + function getPartners($idSite, $period, $date, $expanded = false) { - $dataTable = $this->getDataTable('Referers_urlByPartner',$idSite, $period, $date); + $dataTable = $this->getDataTable('Referers_urlByPartner',$idSite, $period, $date, $expanded); return $dataTable; } - + function getUrlsFromPartnerId($idSite, $period, $date, $idSubtable) - { - $dataTable = $this->getDataTable('Referers_urlByPartner',$idSite, $period, $date, $idSubtable); + { + $dataTable = $this->getDataTable('Referers_urlByPartner',$idSite, $period, $date, $expanded = false, $idSubtable); $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackAddDetail', array( 'label', 'url', create_function('$label', 'return $label;')) ); $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackReplace', array('label', 'Piwik_getPathFromUrl')); - return $dataTable; - } - - private function getNumeric($name, $idSite, $period, $date) - { - Piwik::checkUserHasViewAccess( $idSite ); - $archive = Piwik_Archive::build($idSite, $period, $date ); - return $archive->getDataTableFromNumeric($name); + return $dataTable; } - + function getNumberOfDistinctSearchEngines($idSite, $period, $date) { return $this->getNumeric('Referers_distinctSearchEngines', $idSite, $period, $date); } - + function getNumberOfDistinctKeywords($idSite, $period, $date) { return $this->getNumeric('Referers_distinctKeywords', $idSite, $period, $date); } + function getNumberOfDistinctCampaigns($idSite, $period, $date) { return $this->getNumeric('Referers_distinctCampaigns', $idSite, $period, $date); } + function getNumberOfDistinctWebsites($idSite, $period, $date) { return $this->getNumeric('Referers_distinctWebsites', $idSite, $period, $date); } + function getNumberOfDistinctWebsitesUrls($idSite, $period, $date) { return $this->getNumeric('Referers_distinctWebsitesUrls', $idSite, $period, $date); } + function getNumberOfDistinctPartners($idSite, $period, $date) { return $this->getNumeric('Referers_distinctPartners', $idSite, $period, $date); } + function getNumberOfDistinctPartnersUrls($idSite, $period, $date) { return $this->getNumeric('Referers_distinctPartnersUrls', $idSite, $period, $date); } + + private function getNumeric($name, $idSite, $period, $date) + { + Piwik::checkUserHasViewAccess( $idSite ); + $archive = Piwik_Archive::build($idSite, $period, $date ); + return $archive->getDataTableFromNumeric($name); + } } function Piwik_getPathFromUrl($url) @@ -197,39 +206,39 @@ function Piwik_getSearchEngineLogoFromName($url) $path = 'plugins/Referers/images/searchEngines/%s.png'; $beginningUrl = strpos($url,'//') + 2; $normalPath = sprintf($path, substr($url,$beginningUrl)); - + // flags not in the package ! if(!file_exists($normalPath)) { - return sprintf($path, 'xx'); + return sprintf($path, 'xx'); } return $normalPath; } function Piwik_getRefererTypeLabel($label) -{ +{ $indexTranslation = ''; switch($label) { case Piwik_Common::REFERER_TYPE_DIRECT_ENTRY: $indexTranslation = 'Referers_DirectEntry'; - break; + break; case Piwik_Common::REFERER_TYPE_SEARCH_ENGINE: $indexTranslation = 'Referers_SearchEngines'; - break; + break; case Piwik_Common::REFERER_TYPE_WEBSITE: $indexTranslation = 'Referers_Websites'; - break; + break; case Piwik_Common::REFERER_TYPE_PARTNER: $indexTranslation = 'Referers_Partners'; - break; + break; case Piwik_Common::REFERER_TYPE_NEWSLETTER: $indexTranslation = 'Referers_Newsletters'; - break; + break; case Piwik_Common::REFERER_TYPE_CAMPAIGN: $indexTranslation = 'Referers_Campaigns'; - break; + break; } return Piwik_Translate($indexTranslation); } |