protected function configureSegments() { $idSite = Common::getRequestVar('idSite', 0, 'int'); if (empty($idSite)) { return array(); } $configuration = StaticContainer::get('Piwik\\Plugins\\CustomDimensions\\Dao\\Configuration'); $dimensions = $configuration->getCustomDimensionsForSite($idSite); foreach ($dimensions as $dimension) { if (!$dimension['active']) { continue; } $segment = new Segment(); $segment->setSegment(CustomDimensionsRequestProcessor::buildCustomDimensionTrackingApiName($dimension)); $segment->setType(Segment::TYPE_DIMENSION); $segment->setName($dimension['name']); $columnName = LogTable::buildCustomDimensionColumnName($dimension); if ($dimension['scope'] === CustomDimensions::SCOPE_ACTION) { $segment->setSqlSegment('log_link_visit_action. ' . $columnName); $segment->setCategory('General_Actions'); $segment->setSuggestedValuesCallback(function ($idSite, $maxValuesToReturn) use($dimension) { $autoSuggest = new AutoSuggest(); return $autoSuggest->getMostUsedActionDimensionValues($dimension, $idSite, $maxValuesToReturn); }); } elseif ($dimension['scope'] === CustomDimensions::SCOPE_VISIT) { $segment->setSqlSegment('log_visit. ' . $columnName); $segment->setCategory('General_Visit'); } else { continue; } $this->addSegment($segment); } }
public function getSegmentsMetadata(&$segments, $idSites) { if (empty($idSites) || is_array($idSites) && count($idSites) !== 1) { return array(); } if (is_array($idSites)) { $idSite = array_shift($idSites); } else { $idSite = $idSites; } $idSite = (int) $idSite; $dimensions = $this->configuration->getCustomDimensionsForSite($idSite); foreach ($dimensions as $dimension) { if (!$dimension['active']) { continue; } $segment = new Plugin\Segment(); $segment->setSegment(CustomDimensionsRequestProcessor::buildCustomDimensionTrackingApiName($dimension)); $segment->setType(Plugin\Segment::TYPE_DIMENSION); $segment->setName($dimension['name']); $columnName = LogTable::buildCustomDimensionColumnName($dimension); if ($dimension['scope'] === CustomDimensions::SCOPE_ACTION) { $segment->setSqlSegment('log_link_visit_action. ' . $columnName); $segment->setCategory('General_Actions'); $segment->setSuggestedValuesCallback(function ($idSite, $maxValuesToReturn) use($dimension) { $autoSuggest = new AutoSuggest(); return $autoSuggest->getMostUsedActionDimensionValues($dimension, $idSite, $maxValuesToReturn); }); } elseif ($dimension['scope'] === CustomDimensions::SCOPE_VISIT) { $segment->setSqlSegment('log_visit. ' . $columnName); $segment->setCategory('General_Visit'); } else { continue; } $segments[] = $segment->toArray(); } }
public function test_getMostUsedActionDimensionValues_shouldApplyIndex() { $autoSuggest = new AutoSuggest(); $values = $autoSuggest->getMostUsedActionDimensionValues(array('index' => 3), $idSite = 1, $limit = 10); $this->assertEquals(array('343', 'value5', 'en_US'), $values); }