jsClass = "SegmentSelectorControl"; $this->cssIdentifier = "segmentEditorPanel"; $this->cssClass = "piwikTopControl borderedControl piwikSelector"; $this->idSite = $idSite ?: Common::getRequestVar('idSite', false, 'int'); $this->selectedSegment = Common::getRequestVar('segment', false, 'string'); $formatter = StaticContainer::get('Piwik\Plugins\SegmentEditor\SegmentFormatter'); $this->segmentDescription = $formatter->getHumanReadable(Request::getRawSegmentFromRequest(), $this->idSite); $this->isAddingSegmentsForAllWebsitesEnabled = SegmentEditor::isAddingSegmentsForAllWebsitesEnabled(); $segments = APIMetadata::getInstance()->getSegmentsMetadata($this->idSite); $visitTitle = Piwik::translate('General_Visit'); $segmentsByCategory = array(); foreach ($segments as $segment) { if ($segment['category'] == $visitTitle && ($segment['type'] == 'metric' && $segment['segment'] != 'visitIp') ) { $metricsLabel = Common::mb_strtolower(Piwik::translate('General_Metrics')); $segment['category'] .= ' (' . $metricsLabel . ')'; } $segmentsByCategory[$segment['category']][] = $segment; } $this->createRealTimeSegmentsIsEnabled = $this->isCreatingRealTimeSegmentsEnabled(); $this->segmentsByCategory = $segmentsByCategory; $this->nameOfCurrentSegment = ''; $this->isSegmentNotAppliedBecauseBrowserArchivingIsDisabled = 0; $this->availableSegments = Request::processRequest("SegmentEditor.getAll", ['idSite' => $this->idSite], $defaultRequest = []); foreach ($this->availableSegments as &$savedSegment) { $savedSegment['name'] = Common::sanitizeInputValue($savedSegment['name']); if (!empty($this->selectedSegment) && $this->selectedSegment == $savedSegment['definition']) { $this->nameOfCurrentSegment = $savedSegment['name']; $this->isSegmentNotAppliedBecauseBrowserArchivingIsDisabled = $this->wouldApplySegment($savedSegment) ? 0 : 1; } } $this->authorizedToCreateSegments = SegmentEditorAPI::getInstance()->isUserCanAddNewSegment($this->idSite); $this->isUserAnonymous = Piwik::isUserIsAnonymous(); $this->segmentTranslations = $this->getTranslations(); $this->segmentProcessedOnRequest = Rules::isBrowserArchivingAvailableForSegments(); $this->hideSegmentDefinitionChangeMessage = UsersManagerAPI::getInstance()->getUserPreference(Piwik::getCurrentUserLogin(), 'hideSegmentDefinitionChangeMessage'); } public function getClientSideProperties() { return array('availableSegments', 'segmentTranslations', 'isSegmentNotAppliedBecauseBrowserArchivingIsDisabled', 'selectedSegment', 'authorizedToCreateSegments'); } private function wouldApplySegment($savedSegment) { if (Rules::isBrowserArchivingAvailableForSegments()) { return true; } return (bool) $savedSegment['auto_archive']; } private function getTranslations() { $translationKeys = array( 'General_OperationEquals', 'General_OperationNotEquals', 'General_OperationAtMost', 'General_OperationAtLeast', 'General_OperationLessThan', 'General_OperationGreaterThan', 'General_OperationContains', 'General_OperationDoesNotContain', 'General_OperationStartsWith', 'General_OperationEndsWith', 'General_OperationIs', 'General_OperationIsNot', 'General_OperationContains', 'General_OperationDoesNotContain', 'SegmentEditor_DefaultAllVisits', 'General_DefaultAppended', 'SegmentEditor_AddNewSegment', 'General_Edit', 'General_Search', 'General_SearchNoResults', ); $translations = array(); foreach ($translationKeys as $key) { $translations[$key] = Piwik::translate($key); } return $translations; } protected function isCreatingRealTimeSegmentsEnabled() { // when browser archiving is disabled for segments, we force new segments to be created as pre-processed if(!Rules::isBrowserArchivingAvailableForSegments()) { return false; } return (bool) Config::getInstance()->General['enable_create_realtime_segments']; } }