From 1fe0a1fcaa7685004b0d272d9e558fae0008c241 Mon Sep 17 00:00:00 2001 From: Thomas Steur Date: Thu, 12 Jun 2014 02:24:56 +0200 Subject: defined segments in dimensions --- core/Plugin/ActionDimension.php | 5 +- core/Plugin/Segment.php | 11 ++ core/Plugin/VisitDimension.php | 5 +- plugins/CustomVariables/Segment.php | 21 ---- plugins/DevicesDetection/Columns/DeviceType.php | 22 ++++ plugins/DevicesDetection/DevicesDetection.php | 142 ---------------------- plugins/Events/Columns/EventAction.php | 3 +- plugins/Events/Columns/EventCategory.php | 2 - plugins/Events/Columns/EventName.php | 3 +- plugins/Events/Columns/TotalEvents.php | 35 ++++++ plugins/Events/Events.php | 23 +--- plugins/Events/Segment.php | 1 + plugins/Provider/Columns/Provider.php | 4 +- plugins/Provider/Provider.php | 18 +-- plugins/Referrers/Columns/Keyword.php | 10 ++ plugins/Referrers/Columns/ReferrerName.php | 10 ++ plugins/Referrers/Columns/ReferrerType.php | 11 ++ plugins/Referrers/Columns/ReferrerUrl.php | 10 ++ plugins/Referrers/Referrers.php | 38 ------ plugins/UserCountry/Columns/City.php | 5 +- plugins/UserCountry/Columns/Continent.php | 14 +-- plugins/UserCountry/Columns/Country.php | 11 +- plugins/UserCountry/Columns/Latitude.php | 32 +++++ plugins/UserCountry/Columns/Longitude.php | 32 +++++ plugins/UserCountry/Columns/Region.php | 5 +- plugins/UserCountry/Segment.php | 2 +- plugins/UserCountry/UserCountry.php | 54 --------- plugins/UserSettings/Columns/Browser.php | 3 +- plugins/UserSettings/Columns/Browserversion.php | 3 +- plugins/UserSettings/Columns/Operatingsystem.php | 3 +- plugins/UserSettings/Columns/Resolution.php | 2 +- plugins/UserSettings/UserSettings.php | 145 ----------------------- plugins/VisitFrequency/VisitFrequency.php | 2 +- plugins/VisitTime/Columns/Localtime.php | 5 +- plugins/VisitTime/Columns/Servertime.php | 6 +- plugins/VisitTime/VisitTime.php | 26 +--- 36 files changed, 222 insertions(+), 502 deletions(-) delete mode 100644 plugins/CustomVariables/Segment.php create mode 100644 plugins/Events/Columns/TotalEvents.php create mode 100644 plugins/UserCountry/Columns/Latitude.php create mode 100644 plugins/UserCountry/Columns/Longitude.php diff --git a/core/Plugin/ActionDimension.php b/core/Plugin/ActionDimension.php index 1380fae6bc..5fc4ed3824 100644 --- a/core/Plugin/ActionDimension.php +++ b/core/Plugin/ActionDimension.php @@ -59,11 +59,12 @@ abstract class ActionDimension protected function addSegment(Segment $segment) { - if (!empty($this->fieldName)) { + $sqlSegment = $segment->getSqlSegment(); + if (!empty($this->fieldName) && !empty($sqlSegment)) { $segment->setSqlSegment('log_link_visit_action.' . $this->fieldName); } - $segment->setType('dimension'); + $segment->setType(Segment::TYPE_DIMENSION); $this->segments[] = $segment; } diff --git a/core/Plugin/Segment.php b/core/Plugin/Segment.php index 41933a142b..520fa26c0f 100644 --- a/core/Plugin/Segment.php +++ b/core/Plugin/Segment.php @@ -13,6 +13,9 @@ namespace Piwik\Plugin; */ class Segment { + const TYPE_DIMENSION = 'dimension'; + const TYPE_METRIC = 'metric'; + private $type; private $category; private $name; @@ -88,6 +91,14 @@ class Segment $this->sqlSegment = $sqlSegment; } + /** + * @return string + */ + public function getSqlSegment() + { + return $this->sqlSegment; + } + /** * @param mixed $type */ diff --git a/core/Plugin/VisitDimension.php b/core/Plugin/VisitDimension.php index b24420daad..af40274d74 100644 --- a/core/Plugin/VisitDimension.php +++ b/core/Plugin/VisitDimension.php @@ -54,11 +54,12 @@ abstract class VisitDimension protected function addSegment(Segment $segment) { - if (!empty($this->fieldName)) { + $sqlSegment = $segment->getSqlSegment(); + if (!empty($this->fieldName) && !empty($sqlSegment)) { $segment->setSqlSegment('log_visit.' . $this->fieldName); } - $segment->setType('dimension'); + $segment->setType(Segment::TYPE_DIMENSION); $this->segments[] = $segment; } diff --git a/plugins/CustomVariables/Segment.php b/plugins/CustomVariables/Segment.php deleted file mode 100644 index b4e08fc242..0000000000 --- a/plugins/CustomVariables/Segment.php +++ /dev/null @@ -1,21 +0,0 @@ -setCategory('CustomVariables_CustomVariables'); - } -} diff --git a/plugins/DevicesDetection/Columns/DeviceType.php b/plugins/DevicesDetection/Columns/DeviceType.php index e566a1a25c..5c8369f46a 100644 --- a/plugins/DevicesDetection/Columns/DeviceType.php +++ b/plugins/DevicesDetection/Columns/DeviceType.php @@ -9,13 +9,35 @@ namespace Piwik\Plugins\DevicesDetection\Columns; use Piwik\Piwik; +use Piwik\Plugin\Segment; use Piwik\Tracker\Request; +use DeviceDetector; +use Exception; class DeviceType extends Base { protected $fieldName = 'config_device_type'; protected $fieldType = 'TINYINT( 100 ) NULL DEFAULT NULL'; + protected function init() + { + $deviceTypeList = implode(", ", DeviceDetector::$deviceTypes); + + $segment = new Segment(); + $segment->setSegment('deviceType'); + $segment->setName('DevicesDetection_DeviceType'); + $segment->setAcceptValues($deviceTypeList); + $segment->setSqlFilter(function ($type) use ($deviceTypeList) { + $index = array_search(strtolower(trim(urldecode($type))), DeviceDetector::$deviceTypes); + if ($index === false) { + throw new Exception("deviceType segment must be one of: $deviceTypeList"); + } + return $index; + }); + + $this->addSegment($segment); + } + public function getName() { return Piwik::translate('DevicesDetection_DeviceType'); diff --git a/plugins/DevicesDetection/DevicesDetection.php b/plugins/DevicesDetection/DevicesDetection.php index 30fa62bda1..e730e96aaa 100644 --- a/plugins/DevicesDetection/DevicesDetection.php +++ b/plugins/DevicesDetection/DevicesDetection.php @@ -36,146 +36,4 @@ class DevicesDetection extends \Piwik\Plugin ); } - /** The set of related reports displayed under the 'Operating Systems' header. */ - private $osRelatedReports = null; - private $browserRelatedReports = null; - - public function __construct() - { - parent::__construct(); - $this->osRelatedReports = array( - 'DevicesDetection.getOsFamilies' => Piwik::translate('DevicesDetection_OperatingSystemFamilies'), - 'DevicesDetection.getOsVersions' => Piwik::translate('DevicesDetection_OperatingSystemVersions') - ); - $this->browserRelatedReports = array( - 'DevicesDetection.getBrowserFamilies' => Piwik::translate('UserSettings_BrowserFamilies'), - 'DevicesDetection.getBrowserVersions' => Piwik::translate('DevicesDetection_BrowserVersions') - ); - } - - protected function getRawMetadataDeviceType() - { - $deviceTypeList = implode(", ", DeviceDetector::$deviceTypes); - - $deviceTypeLabelToCode = function ($type) use ($deviceTypeList) { - $index = array_search(strtolower(trim(urldecode($type))), DeviceDetector::$deviceTypes); - if ($index === false) { - throw new Exception("deviceType segment must be one of: $deviceTypeList"); - } - return $index; - }; - - return array( - 'DevicesDetection_DevicesDetection', - 'DevicesDetection_DeviceType', - 'DevicesDetection', - 'getType', - 'DevicesDetection_DeviceType', - - // Segment - 'deviceType', - 'log_visit.config_device_type', - $deviceTypeList, - $deviceTypeLabelToCode - ); - } - - /** - * @see Piwik\Plugin::getListHooksRegistered - */ - public function getListHooksRegistered() - { - return array( - 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', - ); - } - - /** - * Defines API reports. - * Also used to define Widgets, and Segment(s) - * - * @return array Category, Report Name, API Module, API action, Translated column name, & optional segment info - */ - public function getRawMetadataReports() - { - - $report = array( - // device type report (tablet, desktop, mobile...) - $this->getRawMetadataDeviceType(), - - // device brands report - array( - 'DevicesDetection_DevicesDetection', - 'DevicesDetection_DeviceBrand', - 'DevicesDetection', - 'getBrand', - 'DevicesDetection_DeviceBrand', - ), - // device model report - array( - 'DevicesDetection_DevicesDetection', - 'DevicesDetection_DeviceModel', - 'DevicesDetection', - 'getModel', - 'DevicesDetection_DeviceModel', - ), - // device OS family report - array( - 'DevicesDetection_DevicesDetection', - 'DevicesDetection_OperatingSystemFamilies', - 'DevicesDetection', - 'getOsFamilies', - 'DevicesDetection_OperatingSystemFamilies', - ), - // device OS version report - array( - 'DevicesDetection_DevicesDetection', - 'DevicesDetection_OperatingSystemVersions', - 'DevicesDetection', - 'getOsVersions', - 'DevicesDetection_OperatingSystemVersions', - ), - // Browser family report - array( - 'DevicesDetection_DevicesDetection', - 'UserSettings_BrowserFamilies', - 'DevicesDetection', - 'getBrowserFamilies', - 'UserSettings_BrowserFamilies', - ), - // Browser versions report - array( - 'DevicesDetection_DevicesDetection', - 'DevicesDetection_BrowserVersions', - 'DevicesDetection', - 'getBrowserVersions', - 'DevicesDetection_BrowserVersions', - ), - ); - return $report; - } - - /** - * Get segments meta data - */ - public function getSegmentsMetadata(&$segments) - { - // Note: only one field segmented so far: deviceType - foreach ($this->getRawMetadataReports() as $report) { - @list($category, $name, $apiModule, $apiAction, $columnName, $segment, $sqlSegment, $acceptedValues, $sqlFilter) = $report; - - if (empty($segment)) continue; - - $segments[] = array( - 'type' => 'dimension', - 'category' => Piwik::translate('General_Visit'), - 'name' => $columnName, - 'segment' => $segment, - 'acceptedValues' => $acceptedValues, - 'sqlSegment' => $sqlSegment, - 'sqlFilter' => isset($sqlFilter) ? $sqlFilter : false - ); - } - } - } diff --git a/plugins/Events/Columns/EventAction.php b/plugins/Events/Columns/EventAction.php index 9650099b9f..ef831bb561 100644 --- a/plugins/Events/Columns/EventAction.php +++ b/plugins/Events/Columns/EventAction.php @@ -10,7 +10,7 @@ namespace Piwik\Plugins\Events\Columns; use Piwik\Piwik; use Piwik\Plugin\ActionDimension; -use Piwik\Plugin\Segment; +use Piwik\Plugins\Events\Segment; class EventAction extends ActionDimension { @@ -21,7 +21,6 @@ class EventAction extends ActionDimension $segment = new Segment(); $segment->setSegment('eventAction'); $segment->setName('Events_EventAction'); - $segment->setSqlFilter('\Piwik\Tracker\TableLogAction::getIdActionFromSegment'); $this->addSegment($segment); } diff --git a/plugins/Events/Columns/EventCategory.php b/plugins/Events/Columns/EventCategory.php index cf212a57c6..c9434a5a20 100644 --- a/plugins/Events/Columns/EventCategory.php +++ b/plugins/Events/Columns/EventCategory.php @@ -21,8 +21,6 @@ class EventCategory extends ActionDimension $segment = new Segment(); $segment->setSegment('eventCategory'); $segment->setName('Events_EventCategory'); - $segment->setCategory('Events_Events'); - $segment->setSqlFilter('\Piwik\Tracker\TableLogAction::getIdActionFromSegment'); $this->addSegment($segment); } diff --git a/plugins/Events/Columns/EventName.php b/plugins/Events/Columns/EventName.php index 4be53ff338..d3415391a1 100644 --- a/plugins/Events/Columns/EventName.php +++ b/plugins/Events/Columns/EventName.php @@ -10,7 +10,7 @@ namespace Piwik\Plugins\Events\Columns; use Piwik\Piwik; use Piwik\Plugin\ActionDimension; -use Piwik\Plugin\Segment; +use Piwik\Plugins\Events\Segment; class EventName extends ActionDimension { @@ -21,7 +21,6 @@ class EventName extends ActionDimension $segment = new Segment(); $segment->setSegment('eventName'); $segment->setName('Events_EventName'); - $segment->setSqlFilter('\Piwik\Tracker\TableLogAction::getIdActionFromSegment'); $this->addSegment($segment); } diff --git a/plugins/Events/Columns/TotalEvents.php b/plugins/Events/Columns/TotalEvents.php new file mode 100644 index 0000000000..f869df00f2 --- /dev/null +++ b/plugins/Events/Columns/TotalEvents.php @@ -0,0 +1,35 @@ +setSegment('events'); + $segment->setName('Events_TotalEvents'); + $segment->setAcceptValues('To select all visits who triggered an Event, use: &segment=events>0'); + $segment->setCategory(Piwik::translate('General_Visit')); + $segment->setType(Segment::TYPE_METRIC); + $this->addSegment($segment); + } + + public function getName() + { + return Piwik::translate('Events_EventName'); + } +} \ No newline at end of file diff --git a/plugins/Events/Events.php b/plugins/Events/Events.php index c50b1f15db..32012c57da 100644 --- a/plugins/Events/Events.php +++ b/plugins/Events/Events.php @@ -19,8 +19,7 @@ class Events extends \Piwik\Plugin public function getListHooksRegistered() { return array( - 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', - 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations' + 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations' ); } @@ -81,26 +80,6 @@ class Events extends \Piwik\Plugin public function getSegmentsMetadata(&$segments) { - $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment'; - - foreach($this->metadataDimensions as $dimension => $metadata) { - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Events_Events', - 'name' => $metadata[0], - 'segment' => $dimension, - 'sqlSegment' => $metadata[1], - 'sqlFilter' => $sqlFilter, - ); - } - $segments[] = array( - 'type' => 'metric', - 'category' => Piwik::translate('General_Visit'), - 'name' => 'Events_TotalEvents', - 'segment' => 'events', - 'sqlSegment' => 'log_visit.visit_total_events', - 'acceptedValues' => 'To select all visits who triggered an Event, use: &segment=events>0', - ); // $segments[] = array( // 'type' => 'metric', // 'category' => 'Events_Events', diff --git a/plugins/Events/Segment.php b/plugins/Events/Segment.php index 83509c5fde..9c2d738bee 100644 --- a/plugins/Events/Segment.php +++ b/plugins/Events/Segment.php @@ -17,5 +17,6 @@ class Segment extends \Piwik\Plugin\Segment protected function init() { $this->setCategory('Events_Events'); + $this->setSqlFilter('\Piwik\Tracker\TableLogAction::getIdActionFromSegment'); } } diff --git a/plugins/Provider/Columns/Provider.php b/plugins/Provider/Columns/Provider.php index 576e2aa083..ae07639dad 100644 --- a/plugins/Provider/Columns/Provider.php +++ b/plugins/Provider/Columns/Provider.php @@ -20,7 +20,9 @@ class Provider extends VisitDimension { $segment = new Segment(); $segment->setSegment('provider'); - $segment->setName('Provider'); + $segment->setCategory('Visit Location'); + $segment->setName('Provider_ColumnProvider'); + $segment->setAcceptValues('comcast.net, proxad.net, etc.'); $this->addSegment($segment); } diff --git a/plugins/Provider/Provider.php b/plugins/Provider/Provider.php index 33096d2ae1..75c7d8686d 100644 --- a/plugins/Provider/Provider.php +++ b/plugins/Provider/Provider.php @@ -27,22 +27,8 @@ class Provider extends \Piwik\Plugin */ public function getListHooksRegistered() { - $hooks = array( - 'Tracker.newVisitorInformation' => 'enrichVisitWithProviderInfo', - 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', - ); - return $hooks; - } - - public function getSegmentsMetadata(&$segments) - { - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Visit Location', - 'name' => Piwik::translate('Provider_ColumnProvider'), - 'segment' => 'provider', - 'acceptedValues' => 'comcast.net, proxad.net, etc.', - 'sqlSegment' => 'log_visit.location_provider' + return array( + 'Tracker.newVisitorInformation' => 'enrichVisitWithProviderInfo', ); } diff --git a/plugins/Referrers/Columns/Keyword.php b/plugins/Referrers/Columns/Keyword.php index 113faa49e8..4b5468e49b 100644 --- a/plugins/Referrers/Columns/Keyword.php +++ b/plugins/Referrers/Columns/Keyword.php @@ -9,6 +9,7 @@ namespace Piwik\Plugins\Referrers\Columns; use Piwik\Piwik; +use Piwik\Plugins\Referrers\Segment; use Piwik\Tracker\Request; class Keyword extends Base @@ -16,6 +17,15 @@ class Keyword extends Base protected $fieldName = 'referer_keyword'; protected $fieldType = 'VARCHAR(255) NULL'; + protected function init() + { + $segment = new Segment(); + $segment->setSegment('referrerKeyword'); + $segment->setName('General_ColumnKeyword'); + $segment->setAcceptValues('Encoded%20Keyword, keyword'); + $this->addSegment($segment); + } + public function getName() { return Piwik::translate('General_ColumnKeyword'); diff --git a/plugins/Referrers/Columns/ReferrerName.php b/plugins/Referrers/Columns/ReferrerName.php index 288957f436..fbc585fc8f 100644 --- a/plugins/Referrers/Columns/ReferrerName.php +++ b/plugins/Referrers/Columns/ReferrerName.php @@ -8,6 +8,7 @@ */ namespace Piwik\Plugins\Referrers\Columns; +use Piwik\Plugins\Referrers\Segment; use Piwik\Tracker\Request; class ReferrerName extends Base @@ -15,6 +16,15 @@ class ReferrerName extends Base protected $fieldName = 'referer_name'; protected $fieldType = 'VARCHAR(70) NULL'; + protected function init() + { + $segment = new Segment(); + $segment->setSegment('referrerName'); + $segment->setName('Referrers_ReferrerName'); + $segment->setAcceptValues('twitter.com, www.facebook.com, Bing, Google, Yahoo, CampaignName'); + $this->addSegment($segment); + } + public function getName() { return ''; diff --git a/plugins/Referrers/Columns/ReferrerType.php b/plugins/Referrers/Columns/ReferrerType.php index 25f84a8fc7..2709f609de 100644 --- a/plugins/Referrers/Columns/ReferrerType.php +++ b/plugins/Referrers/Columns/ReferrerType.php @@ -9,6 +9,7 @@ namespace Piwik\Plugins\Referrers\Columns; use Piwik\Piwik; +use Piwik\Plugins\Referrers\Segment; use Piwik\Tracker\Request; class ReferrerType extends Base @@ -16,6 +17,16 @@ class ReferrerType extends Base protected $fieldName = 'referer_type'; protected $fieldType = 'TINYINT(1) UNSIGNED NULL'; + protected function init() + { + $segment = new Segment(); + $segment->setSegment('referrerType'); + $segment->setName('Referrers_Type'); + $segment->setSqlFilterValue('Piwik\Plugins\Referrers\getReferrerTypeFromShortName'); + $segment->setAcceptValues('direct, search, website, campaign'); + $this->addSegment($segment); + } + public function getName() { return Piwik::translate('Referrers_Type'); diff --git a/plugins/Referrers/Columns/ReferrerUrl.php b/plugins/Referrers/Columns/ReferrerUrl.php index c11586b363..849a952975 100644 --- a/plugins/Referrers/Columns/ReferrerUrl.php +++ b/plugins/Referrers/Columns/ReferrerUrl.php @@ -8,6 +8,7 @@ */ namespace Piwik\Plugins\Referrers\Columns; +use Piwik\Plugins\Referrers\Segment; use Piwik\Tracker\Request; class ReferrerUrl extends Base @@ -15,6 +16,15 @@ class ReferrerUrl extends Base protected $fieldName = 'referer_url'; protected $fieldType = 'TEXT NOT NULL'; + protected function init() + { + $segment = new Segment(); + $segment->setSegment('referrerUrl'); + $segment->setName('Live_Referrer_URL'); + $segment->setAcceptValues('http%3A%2F%2Fwww.example.org%2Freferer-page.htm'); + $this->addSegment($segment); + } + public function getName() { return ''; diff --git a/plugins/Referrers/Referrers.php b/plugins/Referrers/Referrers.php index a88df8c563..dcc9133da6 100644 --- a/plugins/Referrers/Referrers.php +++ b/plugins/Referrers/Referrers.php @@ -29,7 +29,6 @@ class Referrers extends \Piwik\Plugin { $hooks = array( 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', - 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'Insights.addReportToOverview' => 'addReportToInsightsOverview' ); return $hooks; @@ -43,43 +42,6 @@ class Referrers extends \Piwik\Plugin $reports['Referrers_getSearchEngines'] = array(); } - public function getSegmentsMetadata(&$segments) - { - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Referrers_Referrers', - 'name' => 'Referrers_Type', - 'segment' => 'referrerType', - 'acceptedValues' => 'direct, search, website, campaign', - 'sqlSegment' => 'log_visit.referer_type', - 'sqlFilterValue' => __NAMESPACE__ . '\getReferrerTypeFromShortName', - ); - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Referrers_Referrers', - 'name' => 'General_ColumnKeyword', - 'segment' => 'referrerKeyword', - 'acceptedValues' => 'Encoded%20Keyword, keyword', - 'sqlSegment' => 'log_visit.referer_keyword', - ); - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Referrers_Referrers', - 'name' => 'Referrers_ReferrerName', - 'segment' => 'referrerName', - 'acceptedValues' => 'twitter.com, www.facebook.com, Bing, Google, Yahoo, CampaignName', - 'sqlSegment' => 'log_visit.referer_name', - ); - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Referrers_Referrers', - 'name' => 'Live_Referrer_URL', - 'acceptedValues' => 'http%3A%2F%2Fwww.example.org%2Freferer-page.htm', - 'segment' => 'referrerUrl', - 'sqlSegment' => 'log_visit.referer_url', - ); - } - /** * Adds Goal dimensions, so that the dimensions are displayed in the UI Goal Overview page */ diff --git a/plugins/UserCountry/Columns/City.php b/plugins/UserCountry/Columns/City.php index 899ac40589..400c313db4 100644 --- a/plugins/UserCountry/Columns/City.php +++ b/plugins/UserCountry/Columns/City.php @@ -10,7 +10,7 @@ namespace Piwik\Plugins\UserCountry\Columns; use Piwik\Piwik; use Piwik\Plugin\VisitDimension; -use Piwik\Plugin\Segment; +use Piwik\Plugins\UserCountry\Segment; class City extends VisitDimension { @@ -20,7 +20,8 @@ class City extends VisitDimension { $segment = new Segment(); $segment->setSegment('city'); - $segment->setName('City'); + $segment->setName('UserCountry_City'); + $segment->setAcceptValues('Sydney, Sao Paolo, Rome, etc.'); $this->addSegment($segment); } diff --git a/plugins/UserCountry/Columns/Continent.php b/plugins/UserCountry/Columns/Continent.php index f7aefb0951..ca3438e745 100644 --- a/plugins/UserCountry/Columns/Continent.php +++ b/plugins/UserCountry/Columns/Continent.php @@ -10,21 +10,9 @@ namespace Piwik\Plugins\UserCountry\Columns; use Piwik\Piwik; use Piwik\Plugin\VisitDimension; -use Piwik\Plugin\Segment; class Continent extends VisitDimension -{ - protected $fieldName = 'location_country'; - - protected function init() - { - $segment = new Segment(); - $segment->setSegment('continentCode'); - $segment->setName('Continent'); - $segment->setSqlFilter('Piwik\Plugins\UserCountry\UserCountry::getCountriesForContinent'); - $this->addSegment($segment); - } - +{ public function getName() { return Piwik::translate('UserCountry_Continent'); diff --git a/plugins/UserCountry/Columns/Country.php b/plugins/UserCountry/Columns/Country.php index 6817ba821e..a84106ecd6 100644 --- a/plugins/UserCountry/Columns/Country.php +++ b/plugins/UserCountry/Columns/Country.php @@ -20,8 +20,15 @@ class Country extends VisitDimension { $segment = new Segment(); $segment->setSegment('countryCode'); - $segment->setName('Country'); - $segment->setCategory('Visit Location'); + $segment->setName('UserCountry_Country'); + $segment->setAcceptValues('de, us, fr, in, es, etc.'); + $this->addSegment($segment); + + $segment = new Segment(); + $segment->setSegment('continentCode'); + $segment->setName('UserCountry_Continent'); + $segment->setSqlFilter('Piwik\Plugins\UserCountry\UserCountry::getCountriesForContinent'); + $segment->setAcceptValues('eur, asi, amc, amn, ams, afr, ant, oce'); $this->addSegment($segment); } diff --git a/plugins/UserCountry/Columns/Latitude.php b/plugins/UserCountry/Columns/Latitude.php new file mode 100644 index 0000000000..64713c70f1 --- /dev/null +++ b/plugins/UserCountry/Columns/Latitude.php @@ -0,0 +1,32 @@ +setSegment('latitude'); + $segment->setName('UserCountry_Latitude'); + $segment->setAcceptValues('-33.578, 40.830, etc.
You can select visitors within a lat/long range using &segment=lat>X;lat<Y;long>M;long<N.'); + $this->addSegment($segment); + } + + public function getName() + { + return Piwik::translate('UserCountry_Latitude'); + } +} \ No newline at end of file diff --git a/plugins/UserCountry/Columns/Longitude.php b/plugins/UserCountry/Columns/Longitude.php new file mode 100644 index 0000000000..bf4f63869b --- /dev/null +++ b/plugins/UserCountry/Columns/Longitude.php @@ -0,0 +1,32 @@ +setSegment('longitude'); + $segment->setName('UserCountry_Longitude'); + $segment->setAcceptValues('-70.664, 14.326, etc.'); + $this->addSegment($segment); + } + + public function getName() + { + return Piwik::translate('UserCountry_Latitude'); + } +} \ No newline at end of file diff --git a/plugins/UserCountry/Columns/Region.php b/plugins/UserCountry/Columns/Region.php index cd0019b916..fd8ffc19a2 100644 --- a/plugins/UserCountry/Columns/Region.php +++ b/plugins/UserCountry/Columns/Region.php @@ -10,7 +10,7 @@ namespace Piwik\Plugins\UserCountry\Columns; use Piwik\Piwik; use Piwik\Plugin\VisitDimension; -use Piwik\Plugin\Segment; +use Piwik\Plugins\UserCountry\Segment; class Region extends VisitDimension { @@ -20,7 +20,8 @@ class Region extends VisitDimension { $segment = new Segment(); $segment->setSegment('regionCode'); - $segment->setName('Region'); + $segment->setName('UserCountry_Region'); + $segment->setAcceptValues('01 02, OR, P8, etc.
eg. region=A1;country=fr'); $this->addSegment($segment); } diff --git a/plugins/UserCountry/Segment.php b/plugins/UserCountry/Segment.php index 1321b691bb..8f6b77559e 100644 --- a/plugins/UserCountry/Segment.php +++ b/plugins/UserCountry/Segment.php @@ -14,7 +14,7 @@ namespace Piwik\Plugins\UserCountry; */ class Segment extends \Piwik\Plugin\Segment { - protected function init() + protected function init() { $this->setCategory('Visit Location'); } diff --git a/plugins/UserCountry/UserCountry.php b/plugins/UserCountry/UserCountry.php index 2517290158..8b75e579e1 100644 --- a/plugins/UserCountry/UserCountry.php +++ b/plugins/UserCountry/UserCountry.php @@ -37,7 +37,6 @@ class UserCountry extends \Piwik\Plugin { $hooks = array( 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', - 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', 'AssetManager.getJavaScriptFiles' => 'getJsFiles', 'Tracker.newVisitorInformation' => 'enrichVisitWithLocation', @@ -159,59 +158,6 @@ class UserCountry extends \Piwik\Plugin } } - public function getSegmentsMetadata(&$segments) - { - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Visit Location', - 'name' => Piwik::translate('UserCountry_Country'), - 'segment' => 'countryCode', - 'sqlSegment' => 'log_visit.location_country', - 'acceptedValues' => 'de, us, fr, in, es, etc.', - ); - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Visit Location', - 'name' => Piwik::translate('UserCountry_Continent'), - 'segment' => 'continentCode', - 'sqlSegment' => 'log_visit.location_country', - 'acceptedValues' => 'eur, asi, amc, amn, ams, afr, ant, oce', - 'sqlFilter' => __NAMESPACE__ . '\UserCountry::getCountriesForContinent', - ); - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Visit Location', - 'name' => Piwik::translate('UserCountry_Region'), - 'segment' => 'regionCode', - 'sqlSegment' => 'log_visit.location_region', - 'acceptedValues' => '01 02, OR, P8, etc.
eg. region=A1;country=fr', - ); - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Visit Location', - 'name' => Piwik::translate('UserCountry_City'), - 'segment' => 'city', - 'sqlSegment' => 'log_visit.location_city', - 'acceptedValues' => 'Sydney, Sao Paolo, Rome, etc.', - ); - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Visit Location', - 'name' => Piwik::translate('UserCountry_Latitude'), - 'segment' => 'latitude', - 'sqlSegment' => 'log_visit.location_latitude', - 'acceptedValues' => '-33.578, 40.830, etc.
You can select visitors within a lat/long range using &segment=lat>X;lat<Y;long>M;long<N.', - ); - $segments[] = array( - 'type' => 'dimension', - 'category' => 'Visit Location', - 'name' => Piwik::translate('UserCountry_Longitude'), - 'segment' => 'longitude', - 'sqlSegment' => 'log_visit.location_longitude', - 'acceptedValues' => '-70.664, 14.326, etc.', - ); - } - public function getReportsWithGoalMetrics(&$dimensions) { $dimensions = array_merge($dimensions, array( diff --git a/plugins/UserSettings/Columns/Browser.php b/plugins/UserSettings/Columns/Browser.php index 8b6baddbb0..9f69cd4e8a 100644 --- a/plugins/UserSettings/Columns/Browser.php +++ b/plugins/UserSettings/Columns/Browser.php @@ -10,7 +10,7 @@ namespace Piwik\Plugins\UserSettings\Columns; use Piwik\Piwik; use Piwik\Plugin\VisitDimension; -use Piwik\Plugin\Segment; +use Piwik\Plugins\UserSettings\Segment; class Browser extends VisitDimension { @@ -21,6 +21,7 @@ class Browser extends VisitDimension $segment = new Segment(); $segment->setSegment('browserCode'); $segment->setName('UserSettings_ColumnBrowser'); + $segment->setAcceptValues('FF, IE, CH, SF, OP, etc.'); $this->addSegment($segment); } diff --git a/plugins/UserSettings/Columns/Browserversion.php b/plugins/UserSettings/Columns/Browserversion.php index 76b6bb3cfb..4b9c40d880 100644 --- a/plugins/UserSettings/Columns/Browserversion.php +++ b/plugins/UserSettings/Columns/Browserversion.php @@ -10,7 +10,7 @@ namespace Piwik\Plugins\UserSettings\Columns; use Piwik\Piwik; use Piwik\Plugin\VisitDimension; -use Piwik\Plugin\Segment; +use Piwik\Plugins\UserSettings\Segment; class Browserversion extends VisitDimension { @@ -21,6 +21,7 @@ class Browserversion extends VisitDimension $segment = new Segment(); $segment->setSegment('browserVersion'); $segment->setName('UserSettings_ColumnBrowserVersion'); + $segment->setAcceptValues('1.0, 8.0, etc.'); $this->addSegment($segment); } diff --git a/plugins/UserSettings/Columns/Operatingsystem.php b/plugins/UserSettings/Columns/Operatingsystem.php index b4f38f8379..b3bffc3af7 100644 --- a/plugins/UserSettings/Columns/Operatingsystem.php +++ b/plugins/UserSettings/Columns/Operatingsystem.php @@ -10,7 +10,7 @@ namespace Piwik\Plugins\UserSettings\Columns; use Piwik\Piwik; use Piwik\Plugin\VisitDimension; -use Piwik\Plugin\Segment; +use Piwik\Plugins\UserSettings\Segment; class Operatingsystem extends VisitDimension { @@ -21,6 +21,7 @@ class Operatingsystem extends VisitDimension $segment = new Segment(); $segment->setSegment('operatingSystemCode'); $segment->setName('UserSettings_ColumnOperatingSystem'); + $segment->setAcceptValues('WXP, WI7, MAC, LIN, AND, IPD, etc.'); $this->addSegment($segment); } diff --git a/plugins/UserSettings/Columns/Resolution.php b/plugins/UserSettings/Columns/Resolution.php index 09e97b499d..f9a5e1ee62 100644 --- a/plugins/UserSettings/Columns/Resolution.php +++ b/plugins/UserSettings/Columns/Resolution.php @@ -21,7 +21,7 @@ class Resolution extends VisitDimension $segment = new Segment(); $segment->setSegment('resolution'); $segment->setName('UserSettings_ColumnResolution'); - $segment->setCategory('Visit'); + $segment->setAcceptValues('1280x1024, 800x600, etc.'); $this->addSegment($segment); } diff --git a/plugins/UserSettings/UserSettings.php b/plugins/UserSettings/UserSettings.php index 205d407790..f4cf88b8df 100644 --- a/plugins/UserSettings/UserSettings.php +++ b/plugins/UserSettings/UserSettings.php @@ -30,138 +30,12 @@ class UserSettings extends \Piwik\Plugin 'opera' => 'Presto (Opera)', ); - /** - * Defines API reports. - * Also used to define Widgets. - * - * @type array - * - * Category, Report Name, API Module, API action, Translated column name, - * $segment, $sqlSegment, $acceptedValues, $sqlFilter - */ - protected $reportMetadata = array( - array('UserSettings_VisitorSettings', - 'UserSettings_WidgetResolutions', - 'UserSettings', - 'getResolution', - 'UserSettings_ColumnResolution', - 'resolution', - 'log_visit.config_resolution', - '1280x1024, 800x600, etc.', - null), - - array('UserSettings_VisitorSettings', - 'UserSettings_WidgetBrowsers', - 'UserSettings', - 'getBrowser', - 'UserSettings_ColumnBrowser', - 'browserCode', - 'log_visit.config_browser_name', - 'FF, IE, CH, SF, OP, etc.', - null), - - // browser version - array('UserSettings_VisitorSettings', - 'UserSettings_WidgetBrowserVersion', - 'UserSettings', - 'getBrowserVersion', - 'UserSettings_ColumnBrowserVersion', - 'browserVersion', - 'log_visit.config_browser_version', - '1.0, 8.0, etc.', - null), - - array('UserSettings_VisitorSettings', - 'UserSettings_WidgetBrowserFamilies', - 'UserSettings', - 'getBrowserType', - 'UserSettings_ColumnBrowserFamily', - null, - null, - null, - null), - - array('UserSettings_VisitorSettings', - 'UserSettings_WidgetPlugins', - 'UserSettings', - 'getPlugin', - 'General_Plugin', - null, - null, - null, - null), - - array('UserSettings_VisitorSettings', - 'UserSettings_WidgetWidescreen', - 'UserSettings', - 'getWideScreen', - 'UserSettings_ColumnTypeOfScreen', - null, - null, - null, - null), - - array('UserSettings_VisitorSettings', - 'UserSettings_WidgetOperatingSystems', - 'UserSettings', - 'getOS', - 'UserSettings_ColumnOperatingSystem', - 'operatingSystemCode', - 'log_visit.config_os', - 'WXP, WI7, MAC, LIN, AND, IPD, etc.', - null), - - array('UserSettings_VisitorSettings', - 'UserSettings_WidgetGlobalVisitors', - 'UserSettings', - 'getConfiguration', - 'UserSettings_ColumnConfiguration', - null, - null, - null, - null), - - // operating system family - array('UserSettings_VisitorSettings', - 'UserSettings_OperatingSystemFamily', - 'UserSettings', - 'getOSFamily', - 'UserSettings_OperatingSystemFamily', - null, - null, - null, - null), - - // device type - array('UserSettings_VisitorSettings', - 'UserSettings_MobileVsDesktop', - 'UserSettings', - 'getMobileVsDesktop', - 'UserSettings_MobileVsDesktop', - null, - null, - null, - null), - - // Browser language - array('UserSettings_VisitorSettings', - 'UserSettings_BrowserLanguage', - 'UserSettings', - 'getLanguage', - 'General_Language', - null, - null, - null, - null), - ); - /** * @see Piwik\Plugin::getListHooksRegistered */ public function getListHooksRegistered() { return array( - 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations' ); } @@ -175,23 +49,4 @@ class UserSettings extends \Piwik\Plugin $translations = array_merge($translations, $metrics); } - /** - * Get segments meta data - */ - public function getSegmentsMetadata(&$segments) - { - foreach ($this->reportMetadata as $report) { - @list($category, $name, $apiModule, $apiAction, $columnName, $segment, $sqlSegment, $acceptedValues) = $report; - if (empty($segment)) continue; - $segments[] = array( - 'type' => 'dimension', - 'category' => Piwik::translate('General_Visit'), - 'name' => $columnName, - 'segment' => $segment, - 'acceptedValues' => $acceptedValues, - 'sqlSegment' => $sqlSegment - ); - } - } - } diff --git a/plugins/VisitFrequency/VisitFrequency.php b/plugins/VisitFrequency/VisitFrequency.php index 40e12c23a9..a2bb056772 100644 --- a/plugins/VisitFrequency/VisitFrequency.php +++ b/plugins/VisitFrequency/VisitFrequency.php @@ -20,7 +20,7 @@ class VisitFrequency extends \Piwik\Plugin public function getListHooksRegistered() { return array( - 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations' + 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations' ); } diff --git a/plugins/VisitTime/Columns/Localtime.php b/plugins/VisitTime/Columns/Localtime.php index 6c932d919f..aa5d966142 100644 --- a/plugins/VisitTime/Columns/Localtime.php +++ b/plugins/VisitTime/Columns/Localtime.php @@ -20,8 +20,9 @@ class Localtime extends VisitDimension { $segment = new Segment(); $segment->setSegment('visitLocalHour'); - $segment->setName('Local time'); - $segment->setCategory('Visit'); + $segment->setName('VisitTime_ColumnLocalTime'); + $segment->setSqlSegment('HOUR(log_visit.visitor_localtime)'); + $segment->setAcceptValues('0, 1, 2, 3, ..., 20, 21, 22, 23'); $this->addSegment($segment); } diff --git a/plugins/VisitTime/Columns/Servertime.php b/plugins/VisitTime/Columns/Servertime.php index 3d48f0f48b..9861962fb9 100644 --- a/plugins/VisitTime/Columns/Servertime.php +++ b/plugins/VisitTime/Columns/Servertime.php @@ -10,7 +10,7 @@ namespace Piwik\Plugins\VisitTime\Columns; use Piwik\Piwik; use Piwik\Plugin\VisitDimension; -use Piwik\Plugin\Segment; +use Piwik\Plugins\VisitTime\Segment; class Servertime extends VisitDimension { @@ -20,7 +20,9 @@ class Servertime extends VisitDimension { $segment = new Segment(); $segment->setSegment('visitServerHour'); - $segment->setName('Server time'); + $segment->setName('VisitTime_ColumnServerTime'); + $segment->setSqlSegment('HOUR(log_visit.visit_last_action_time)'); + $segment->setAcceptValues('0, 1, 2, 3, ..., 20, 21, 22, 23'); $this->addSegment($segment); } diff --git a/plugins/VisitTime/VisitTime.php b/plugins/VisitTime/VisitTime.php index e848170ba8..3a4d3b7685 100644 --- a/plugins/VisitTime/VisitTime.php +++ b/plugins/VisitTime/VisitTime.php @@ -28,11 +28,9 @@ class VisitTime extends \Piwik\Plugin */ public function getListHooksRegistered() { - $hooks = array( - 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', - 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata' + return array( + 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics' ); - return $hooks; } public function getReportsWithGoalMetrics(&$dimensions) @@ -44,25 +42,5 @@ class VisitTime extends \Piwik\Plugin ); } - public function getSegmentsMetadata(&$segments) - { - $acceptedValues = "0, 1, 2, 3, ..., 20, 21, 22, 23"; - $segments[] = array( - 'type' => 'dimension', - 'category' => Piwik::translate('General_Visit'), - 'name' => Piwik::translate('VisitTime_ColumnServerTime'), - 'segment' => 'visitServerHour', - 'sqlSegment' => 'HOUR(log_visit.visit_last_action_time)', - 'acceptedValues' => $acceptedValues - ); - $segments[] = array( - 'type' => 'dimension', - 'category' => Piwik::translate('General_Visit'), - 'name' => Piwik::translate('VisitTime_ColumnLocalTime'), - 'segment' => 'visitLocalHour', - 'sqlSegment' => 'HOUR(log_visit.visitor_localtime)', - 'acceptedValues' => $acceptedValues - ); - } } -- cgit v1.2.3