diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..b978e604f8a52b6c8cae411ea0813084dad8125e --- /dev/null +++ b/.gitattributes @@ -0,0 +1,36 @@ +# Auto detect text files and perform LF normalization +* text eol=lf + +# Custom for Visual Studio +*.cs diff=csharp + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain + +# BS3 +*.eot diff=astextplain +*.EOT diff=astextplain +*.svg diff=astextplain +*.SVG diff=astextplain +*.ttf diff=astextplain +*.TTF diff=astextplain +*.woff diff=astextplain +*.WOFF diff=astextplain +*.woff2 diff=astextplain +*.WOFF2 diff=astextplain + +*.z binary +*.xls binary +*.xlsx binary +*.png binary +*.jpg binary +*.gif binary diff --git a/.gitmodules b/.gitmodules index f1a6686460d5d7c2f4e1fecbbb041079e64fde4b..aedc0c3a15443a8096004946ac3e30b6e7258c42 100644 --- a/.gitmodules +++ b/.gitmodules @@ -29,6 +29,10 @@ [submodule "tests/UI/expected-ui-screenshots"] path = tests/UI/expected-ui-screenshots url = https://github.com/piwik/piwik-ui-tests.git +[submodule "tests/travis"] + path = tests/travis + url = https://github.com/piwik/travis-scripts + branch = master # Note: when you add a submodule that SHOULD be left in the packaged release such as the few submodules below, # then you MUST add these submodules names in the SUBMODULES_PACKAGED_WITH_CORE variable in: @@ -43,7 +47,3 @@ path = misc/log-analytics url = https://github.com/piwik/piwik-log-analytics.git branch = master - -[submodule "tests/travis"] - path = tests/travis - url = https://github.com/piwik/travis-scripts diff --git a/.travis.yml b/.travis.yml index 37a01b154749161a37938205ac9495466003b5b7..eef27e1d5ed13de69a40a3c81dfdb43a98166f46 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,7 +30,8 @@ env: # All tests after another - TEST_SUITE=AllTests MYSQL_ADAPTER=PDO_MYSQL - TEST_SUITE=AllTests MYSQL_ADAPTER=MYSQLI - - TEST_SUITE=UITests MYSQL_ADAPTER=PDO_MYSQL + - TEST_SUITE=UITests MYSQL_ADAPTER=PDO_MYSQL UITEST_EXTRA_OPTIONS="--run-first-half-only" + - TEST_SUITE=UITests MYSQL_ADAPTER=PDO_MYSQL UITEST_EXTRA_OPTIONS="--run-second-half-only" global: - PIWIK_ROOT_DIR=$TRAVIS_BUILD_DIR - SKIP_INSTALL_MYSQL_56=1 @@ -60,7 +61,9 @@ matrix: env: TEST_SUITE=UnitTests MYSQL_ADAPTER=PDO_MYSQL # run UI tests on PHP 5.3.3 only - php: 5.6 - env: TEST_SUITE=UITests MYSQL_ADAPTER=PDO_MYSQL + env: TEST_SUITE=UITests MYSQL_ADAPTER=PDO_MYSQL UITEST_EXTRA_OPTIONS="--run-first-half-only" + - php: 5.6 + env: TEST_SUITE=UITests MYSQL_ADAPTER=PDO_MYSQL UITEST_EXTRA_OPTIONS="--run-second-half-only" # run all tests not on PHP 5.6 and run MySQLI tests only on 5.6 - php: 5.6 env: TEST_SUITE=AllTests MYSQL_ADAPTER=PDO_MYSQL diff --git a/CHANGELOG.md b/CHANGELOG.md index e22b56d36ee976990d3ad0be3f335ceaf8e45d32..5218540d6c6fe3668092290624c3da9a154e7230 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,8 @@ This is a changelog for Piwik platform developers. All changes for our HTTP API' * We fixed a bug where the API method `Sites.getPatternMatchSites` only returned a very limited number of websites by default. We now return all websites by default unless a limit is specified specifically. ### Deprecations - +* The API method `SitesManager.getSitesIdWithVisits` has been deprecated and will be removed in Piwik 3.0 +* The API method `\Piwik\Plugin::getListHooksRegistered()` has been deprecated and will be removed in Piwik 3.0. Use `\Piwik\Plugin::registerEvents()` instead. * The following events have been deprecated and will be removed in Piwik 3.0. Use [dimensions](http://developer.piwik.org/guides/dimensions) instead. * `Tracker.existingVisitInformation` * `Tracker.getVisitFieldsToPersist` @@ -19,9 +20,18 @@ This is a changelog for Piwik platform developers. All changes for our HTTP API' * `Tracker.recordEcommerceGoal` * `Tracker.recordStandardGoals` + +### New APIs + +* The JavaScript Tracker `piwik.js` got a new method `logAllContentBlocksOnPage` to log all found content blocks within a page to the console. This is useful to debug / test content tracking. It can be triggered via `_paq.push(['logAllContentBlocksOnPage'])` +* The Class `Piwik\Plugins\Login\Controller` is now considered a public API. + ### Internal Change * The option `branch` of the console command `development:sync-system-test-processed` was removed as it is no longer needed. +### APIs +* There is a new event `CronArchive.getIdSitesNotUsingTracker` that allows you to set a list of idSites that do not use the Tracker API to make sure we archive these sites if needed. + ## Piwik 2.14.0 ### Breaking Changes diff --git a/composer.lock b/composer.lock index 45dd480da0bc57bd76145be673038de7399f6a3f..7879657d88e01a365b2ddd9d351fe0bf51f0a65e 100644 --- a/composer.lock +++ b/composer.lock @@ -816,16 +816,16 @@ }, { "name": "piwik/device-detector", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/piwik/device-detector.git", - "reference": "afa85c4a1ebada71cec1e5422b02408b9b9952be" + "reference": "fcb61cc9e669653febdce2cd1a1f0833b569fbb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/piwik/device-detector/zipball/afa85c4a1ebada71cec1e5422b02408b9b9952be", - "reference": "afa85c4a1ebada71cec1e5422b02408b9b9952be", + "url": "https://api.github.com/repos/piwik/device-detector/zipball/fcb61cc9e669653febdce2cd1a1f0833b569fbb6", + "reference": "fcb61cc9e669653febdce2cd1a1f0833b569fbb6", "shasum": "" }, "require": { @@ -863,7 +863,7 @@ "parser", "useragent" ], - "time": "2015-08-23 20:35:24" + "time": "2015-09-09 20:28:18" }, { "name": "piwik/ini", diff --git a/core/Common.php b/core/Common.php index c578dce6c688de88e06f988b6808800f45369a34..7e3296bee15a0e7ace4c6991e032031d069e46ad 100644 --- a/core/Common.php +++ b/core/Common.php @@ -130,9 +130,15 @@ class Common return self::$isCliMode; } - $remoteAddr = @$_SERVER['REMOTE_ADDR']; - return PHP_SAPI == 'cli' || - (self::isPhpCgiType() && empty($remoteAddr)); + if(PHP_SAPI == 'cli'){ + return true; + } + + if(self::isPhpCgiType() && (!isset($_SERVER['REMOTE_ADDR']) || empty($_SERVER['REMOTE_ADDR']))){ + return true; + } + + return false; } /** diff --git a/core/Config.php b/core/Config.php index 7971c5d47ca2ba80a87a6c7d534b5692fa9db849..a1bbabc3496d28507ced807772e4195b92e905c0 100644 --- a/core/Config.php +++ b/core/Config.php @@ -287,7 +287,10 @@ class Config public function deleteLocalConfig() { $configLocal = $this->getLocalPath(); - unlink($configLocal); + + if(file_exists($configLocal)){ + @unlink($configLocal); + } } /** diff --git a/core/Config/IniFileChain.php b/core/Config/IniFileChain.php index e8384a4f3a206765f4699a48bb311401b60fde53..d8b4e4e28bd6adce4a6f6beafa50b1236703e764 100644 --- a/core/Config/IniFileChain.php +++ b/core/Config/IniFileChain.php @@ -141,7 +141,11 @@ class IniFileChain $configToWrite = array(); foreach ($this->mergedSettings as $sectionName => $changedSection) { - $existingMutableSection = @$existingMutableSettings[$sectionName] ?: array(); + if(isset($existingMutableSettings[$sectionName])){ + $existingMutableSection = $existingMutableSettings[$sectionName]; + } else{ + $existingMutableSection = array(); + } // remove default values from both (they should not get written to local) if (isset($defaultSettings[$sectionName])) { diff --git a/core/CronArchive.php b/core/CronArchive.php index ba0b1632203843223ce342a8f305b505b890ffd8..69f7a032986c69d9fab418679564f116d208e920 100644 --- a/core/CronArchive.php +++ b/core/CronArchive.php @@ -15,6 +15,7 @@ use Piwik\Container\StaticContainer; use Piwik\CronArchive\FixedSiteIds; use Piwik\CronArchive\SharedSiteIds; use Piwik\Archive\ArchiveInvalidator; +use Piwik\DataAccess\RawLogDao; use Piwik\Exception\UnexpectedWebsiteFoundException; use Piwik\Metrics\Formatter; use Piwik\Period\Factory as PeriodFactory; @@ -75,6 +76,8 @@ class CronArchive private $websiteDayHasFinishedSinceLastRun = array(); private $idSitesInvalidatedOldReports = array(); private $shouldArchiveOnlySpecificPeriods = array(); + private $idSitesNotUsingTracker; + /** * @var SharedSiteIds|FixedSiteIds */ @@ -210,6 +213,8 @@ class CronArchive private $processed = 0; private $archivedPeriodsArchivesWebsite = 0; + private $archivingStartingTime; + private $formatter; /** @@ -272,6 +277,17 @@ class CronArchive public function init() { + /** + * This event is triggered during initializing archiving. + * + * @param CronArchive $this + */ + Piwik::postEvent('CoreArchive.run.start', array($this)); + + SettingsServer::setMaxExecutionTime(0); + + $this->archivingStartingTime = time(); + // Note: the order of methods call matters here. $this->initStateFromParameters(); @@ -341,6 +357,29 @@ class CronArchive continue; } + $shouldCheckIfArchivingIsNeeded = !$this->shouldArchiveSpecifiedSites && !$this->shouldArchiveAllSites; + $hasWebsiteDayFinishedSinceLastRun = in_array($idSite, $this->websiteDayHasFinishedSinceLastRun); + $isOldReportInvalidatedForWebsite = $this->isOldReportInvalidatedForWebsite($idSite); + + if ($shouldCheckIfArchivingIsNeeded) { + // if not specific sites and not all websites should be archived, we check whether we actually have + // to process the archives for this website (only if there were visits since midnight) + if (!$hasWebsiteDayFinishedSinceLastRun && !$isOldReportInvalidatedForWebsite) { + + if ($this->isWebsiteUsingTheTracker($idSite) && + !$this->hadWebsiteTrafficSinceMidnightInTimezone($idSite)) { + $this->logger->info("Will skip website $idSite as archiving is not needed"); + $this->skipped++; + continue; + } + + } elseif ($hasWebsiteDayFinishedSinceLastRun) { + $this->logger->info("Day has finished for website $idSite since last run"); + } elseif ($isOldReportInvalidatedForWebsite) { + $this->logger->info("Old report was invalidated for website $idSite"); + } + } + /** * This event is triggered before the cron archiving process starts archiving data for a single * site. @@ -386,6 +425,7 @@ class CronArchive ? self::NO_ERROR : (count($this->errors) . " errors.")) ); + $this->logger->info($timer->__toString()); } @@ -408,6 +448,13 @@ class CronArchive $summary = count($this->errors) . " total errors during this script execution, please investigate and try and fix these errors."; $this->logFatalError($summary); + + /** + * This event is triggered after archiving. + * + * @param CronArchive $this + */ + Piwik::postEvent('CoreArchive.run.finish', array($this)); } public function logFatalError($m) @@ -607,18 +654,24 @@ class CronArchive continue; } + $timer = new Timer(); + $date = $this->getApiDateParameter($idSite, $period, $lastTimestampWebsiteProcessedPeriods); - $periodArchiveWasSuccessful = $this->archiveReportsFor($idSite, $period, $date, $archiveSegments = true); + $periodArchiveWasSuccessful = $this->archiveReportsFor($idSite, $period, $date, $archiveSegments = true, $timer); $success = $periodArchiveWasSuccessful && $success; } - // period=range - $customDateRangesToPreProcessForSite = $this->getCustomDateRangeToPreProcess($idSite); - foreach ($customDateRangesToPreProcessForSite as $dateRange) { - $archiveSegments = false; // do not pre-process segments for period=range #7611 - $periodArchiveWasSuccessful = $this->archiveReportsFor($idSite, 'range', $dateRange, $archiveSegments); - $success = $periodArchiveWasSuccessful && $success; + if ($this->shouldProcessPeriod('range')) { + // period=range + $customDateRangesToPreProcessForSite = $this->getCustomDateRangeToPreProcess($idSite); + foreach ($customDateRangesToPreProcessForSite as $dateRange) { + $timer = new Timer(); + $archiveSegments = false; // do not pre-process segments for period=range #7611 + $periodArchiveWasSuccessful = $this->archiveReportsFor($idSite, 'range', $dateRange, $archiveSegments, $timer); + $success = $periodArchiveWasSuccessful && $success; + } } + return $success; } @@ -661,6 +714,8 @@ class CronArchive return true; } + $timer = new Timer(); + // Fake that the request is already done, so that other core:archive commands // running do not grab the same website from the queue Option::set($this->lastRunKey($idSite, "day"), time()); @@ -730,7 +785,8 @@ class CronArchive && !$shouldArchivePeriods && $this->shouldArchiveAllSites ) { - $this->logger->info("Skipped website id $idSite, no visits in the last " . $date . " days, " . $timerWebsite->__toString()); + $humanReadableDate = $this->formatReadableDateRange($date); + $this->logger->info("Skipped website id $idSite, no visits in the $humanReadableDate days, " . $timerWebsite->__toString()); $this->skipped++; return false; } @@ -738,7 +794,7 @@ class CronArchive $this->visitsToday += $visitsToday; $this->websitesWithVisitsSinceLastRun++; - $this->archiveReportsFor($idSite, "day", $this->getApiDateParameter($idSite, "day", $processDaysSince), $archiveSegments = true); + $this->archiveReportsFor($idSite, "day", $this->getApiDateParameter($idSite, "day", $processDaysSince), $archiveSegments = true, $timer); return true; } @@ -751,6 +807,19 @@ class CronArchive return $segments; } + private function formatReadableDateRange($date) + { + if (0 === strpos($date, 'last')) { + $readable = 'last ' . str_replace('last', '', $date); + } elseif (0 === strpos($date, 'previous')) { + $readable = 'previous ' . str_replace('previous', '', $date); + } else { + $readable = 'last ' . $date; + } + + return $readable; + } + /** * Will trigger API requests for the specified Website $idSite, * for the specified $period, for all segments that are pre-processed for this website. @@ -760,12 +829,11 @@ class CronArchive * @param $period string * @param $date string * @param $archiveSegments bool Whether to pre-process all custom segments + * @param Timer $periodTimer * @return bool True on success, false if some request failed */ - private function archiveReportsFor($idSite, $period, $date, $archiveSegments) + private function archiveReportsFor($idSite, $period, $date, $archiveSegments, Timer $periodTimer) { - $timer = new Timer(); - $url = $this->getVisitsRequestUrl($idSite, $period, $date, $segment = false); $url = $this->makeRequestUrl($url); @@ -820,7 +888,7 @@ class CronArchive } } - $this->logArchivedWebsite($idSite, $period, $date, $segmentRequestsCount, $visitsInLastPeriods, $visitsLastPeriod, $timer); + $this->logArchivedWebsite($idSite, $period, $date, $segmentRequestsCount, $visitsInLastPeriods, $visitsLastPeriod, $periodTimer); return $success; } @@ -913,24 +981,29 @@ class CronArchive $this->shouldArchiveOnlySitesWithTrafficSince = $this->isShouldArchiveAllSitesWithTrafficSince(); $this->shouldArchiveOnlySpecificPeriods = $this->getPeriodsToProcess(); - if ($this->shouldArchiveOnlySitesWithTrafficSince === false) { - // force-all-periods is not set here - if (empty($this->lastSuccessRunTimestamp)) { - // First time we run the script - $this->shouldArchiveOnlySitesWithTrafficSince = self::ARCHIVE_SITES_WITH_TRAFFIC_SINCE; - } else { - // there was a previous successful run - $this->shouldArchiveOnlySitesWithTrafficSince = time() - $this->lastSuccessRunTimestamp; - } - } else { + if ($this->shouldArchiveOnlySitesWithTrafficSince !== false) { // force-all-periods is set here $this->archiveAndRespectTTL = false; + } + } - if ($this->shouldArchiveOnlySitesWithTrafficSince === true) { - // force-all-periods without value - $this->shouldArchiveOnlySitesWithTrafficSince = self::ARCHIVE_SITES_WITH_TRAFFIC_SINCE; - } + private function getSecondsSinceLastArchive() + { + $wasNotCustomTimeRequested = $this->shouldArchiveOnlySitesWithTrafficSince === false; + + if ($wasNotCustomTimeRequested && !empty($this->lastSuccessRunTimestamp)) { + // there was a previous successful run + + return time() - $this->lastSuccessRunTimestamp; + + } elseif (is_numeric($this->shouldArchiveOnlySitesWithTrafficSince)) { + // $shouldArchiveAllPeriodsSince was specified + $secondsSinceStart = time() - $this->archivingStartingTime; + return $this->shouldArchiveOnlySitesWithTrafficSince + $secondsSinceStart; } + + // force-all-periods without value + return self::ARCHIVE_SITES_WITH_TRAFFIC_SINCE; } public function filterWebsiteIds(&$websiteIds) @@ -966,7 +1039,7 @@ class CronArchive return CoreAdminHomeAPI::getInstance(); } - + public function invalidateArchivedReportsForSitesThatNeedToBeArchivedAgain() { $invalidator = new ArchiveInvalidator(); @@ -976,7 +1049,7 @@ class CronArchive $listSiteIds = implode(',', $siteIds); try { - $this->logger->info('Will invalidate archived reports for ' . $date . ' for following siteIds: ' . $listSiteIds); + $this->logger->info('Will invalidate archived reports for ' . $date . ' for following websites ids: ' . $listSiteIds); $this->getApiToInvalidateArchivedReport()->invalidateArchivedReports($siteIds, $date); } catch (Exception $e) { $this->logger->info('Failed to invalidate archived reports: ' . $e->getMessage()); @@ -995,17 +1068,15 @@ class CronArchive return $this->shouldArchiveSpecifiedSites; } + + $this->findWebsiteIdsInTimezoneWithNewDay($this->allWebsites); + $this->findInvalidatedSitesToReprocess(); + if ($this->shouldArchiveAllSites) { $this->logger->info("- Will process all " . count($this->allWebsites) . " websites"); - return $this->allWebsites; } - $websiteIds = array_merge( - $this->addWebsiteIdsWithVisitsSinceLastRun(), - $this->getInvalidatedSitesToReprocess() - ); - $websiteIds = array_merge($websiteIds, $this->addWebsiteIdsInTimezoneWithNewDay($websiteIds)); - return array_unique($websiteIds); + return $this->allWebsites; } private function updateIdSitesInvalidatedOldReports() @@ -1021,7 +1092,7 @@ class CronArchive * * @return array */ - private function getInvalidatedSitesToReprocess() + private function findInvalidatedSitesToReprocess() { $this->updateIdSitesInvalidatedOldReports(); @@ -1036,20 +1107,37 @@ class CronArchive } /** - * Returns all sites that had visits since specified time + * Detects whether a site had visits since midnight in the websites timezone * - * @return string + * @return bool */ - private function addWebsiteIdsWithVisitsSinceLastRun() + private function hadWebsiteTrafficSinceMidnightInTimezone($idSite) { - $sitesIdWithVisits = APISitesManager::getInstance()->getSitesIdWithVisits(time() - $this->shouldArchiveOnlySitesWithTrafficSince); - $websiteIds = !empty($sitesIdWithVisits) ? ", IDs: " . implode(", ", $sitesIdWithVisits) : ""; - $prettySeconds = $this->formatter->getPrettyTimeFromSeconds($this->shouldArchiveOnlySitesWithTrafficSince, true); - $this->logger->info("- Will process " . count($sitesIdWithVisits) . " websites with new visits since " - . $prettySeconds - . " " - . $websiteIds); - return $sitesIdWithVisits; + $timezone = Site::getTimezoneFor($idSite); + + $nowInTimezone = Date::factory('now', $timezone); + $midnightInTimezone = $nowInTimezone->setTime('00:00:00'); + + $secondsSinceMidnight = $nowInTimezone->getTimestamp() - $midnightInTimezone->getTimestamp(); + + $secondsSinceLastArchive = $this->getSecondsSinceLastArchive(); + if ($secondsSinceLastArchive < $secondsSinceMidnight) { + $secondsSinceMidnight = $secondsSinceLastArchive; + } + + $from = Date::now()->subSeconds($secondsSinceMidnight)->getDatetime(); + $to = Date::now()->addHour(1)->getDatetime(); + + $dao = new RawLogDao(); + $hasVisits = $dao->hasSiteVisitsBetweenTimeframe($from, $to, $idSite); + + if ($hasVisits) { + $this->logger->info("$idSite has visits between $from and $to"); + } else { + $this->logger->info("$idSite has no visits between $from and $to"); + } + + return $hasVisits; } /** @@ -1097,7 +1185,7 @@ class CronArchive * @param $websiteIds * @return array Website IDs */ - private function addWebsiteIdsInTimezoneWithNewDay($websiteIds) + private function findWebsiteIdsInTimezoneWithNewDay($websiteIds) { $timezones = $this->getTimezonesHavingNewDay(); $websiteDayHasFinishedSinceLastRun = APISitesManager::getInstance()->getSitesIdFromTimezones($timezones); @@ -1242,7 +1330,8 @@ class CronArchive private function logArchivedWebsite($idSite, $period, $date, $segmentsCount, $visitsInLastPeriods, $visitsToday, Timer $timer) { if (strpos($date, 'last') === 0 || strpos($date, 'previous') === 0) { - $visitsInLastPeriods = (int)$visitsInLastPeriods . " visits in last " . $date . " " . $period . "s, "; + $humanReadable = $this->formatReadableDateRange($date); + $visitsInLastPeriods = (int)$visitsInLastPeriods . " visits in $humanReadable " . $period . "s, "; $thisPeriod = $period == "day" ? "today" : "this " . $period; $visitsInLastPeriod = (int)$visitsToday . " visits " . $thisPeriod . ", "; } else { @@ -1285,7 +1374,7 @@ class CronArchive */ private function getDefaultPeriodsToProcess() { - return array('day', 'week', 'month', 'year'); + return array('day', 'week', 'month', 'year', 'range'); } /** @@ -1297,6 +1386,39 @@ class CronArchive return in_array($idSite, $this->idSitesInvalidatedOldReports); } + private function isWebsiteUsingTheTracker($idSite) + { + if (!isset($this->idSitesNotUsingTracker)) { + // we want to trigger event only once + $this->idSitesNotUsingTracker = array(); + + /** + * This event is triggered when detecting whether there are sites that do not use the tracker. + * + * By default we only archive a site when there was actually any visit since the last archiving. + * However, some plugins do import data from another source instead of using the tracker and therefore + * will never have any visits for this site. To make sure we still archive data for such a site when + * archiving for this site is requested, you can listen to this event and add the idSite to the list of + * sites that do not use the tracker. + * + * @param bool $idSitesNotUsingTracker The list of idSites that rather import data instead of using the tracker + */ + Piwik::postEvent('CronArchive.getIdSitesNotUsingTracker', array(&$this->idSitesNotUsingTracker)); + + if (!empty($this->idSitesNotUsingTracker)) { + $this->logger->info("The following websites do not use the tracker: " . implode(',', $this->idSitesNotUsingTracker)); + } + } + + $isUsingTracker = !in_array($idSite, $this->idSitesNotUsingTracker); + + if (!$isUsingTracker) { + $this->logger->info("The website $idSite is not using the tracker"); + } + + return $isUsingTracker; + } + private function shouldProcessPeriod($period) { if (empty($this->shouldArchiveOnlySpecificPeriods)) { diff --git a/core/DataAccess/ArchiveTableCreator.php b/core/DataAccess/ArchiveTableCreator.php index c6b958449b95154ad1e7b4f9404908eb49e93d4a..ca94b7239997b0b19a027fd0d1901119e66bf188 100644 --- a/core/DataAccess/ArchiveTableCreator.php +++ b/core/DataAccess/ArchiveTableCreator.php @@ -33,7 +33,7 @@ class ArchiveTableCreator protected static function getTable(Date $date, $type) { $tableNamePrefix = "archive_" . $type; - $tableName = $tableNamePrefix . "_" . $date->toString('Y_m'); + $tableName = $tableNamePrefix . "_" . self::getTableMonthFromDate($date); $tableName = Common::prefixTable($tableName); self::createArchiveTablesIfAbsent($tableName, $tableNamePrefix); @@ -100,6 +100,11 @@ class ArchiveTableCreator return $date; } + public static function getTableMonthFromDate(Date $date) + { + return $date->toString('Y_m'); + } + public static function getTypeFromTableName($tableName) { if (strpos($tableName, 'archive_numeric_') !== false) { diff --git a/core/DataAccess/RawLogDao.php b/core/DataAccess/RawLogDao.php index 184b33909f1d4aec70eb0632e233e87e4457daad..7310267b4436ed9d8a2c2ef1b52c173415539aeb 100644 --- a/core/DataAccess/RawLogDao.php +++ b/core/DataAccess/RawLogDao.php @@ -11,7 +11,6 @@ namespace Piwik\DataAccess; use Piwik\Common; use Piwik\Container\StaticContainer; use Piwik\Db; -use Piwik\Piwik; use Piwik\Plugin\Dimension\DimensionMetadataProvider; /** @@ -208,6 +207,26 @@ class RawLogDao Db::unlockAllTables(); } + + /** + * Returns the list of the website IDs that received some visits between the specified timestamp. + * + * @param string $fromDateTime + * @param string $toDateTime + * @return bool true if there are visits for this site between the given timeframe, false if not + */ + public function hasSiteVisitsBetweenTimeframe($fromDateTime, $toDateTime, $idSite) + { + $sites = Db::fetchOne("SELECT 1 + FROM " . Common::prefixTable('log_visit') . " + WHERE idsite = ? + AND visit_last_action_time > ? + AND visit_last_action_time < ? + LIMIT 1", array($idSite, $fromDateTime, $toDateTime)); + + return (bool) $sites; + } + /** * @param array $columnsToSet * @return string diff --git a/core/Date.php b/core/Date.php index 4f792200e202aa99b38ea20faba15d56400b745f..1448c238260ab090746b030bdcecdf7768989545 100644 --- a/core/Date.php +++ b/core/Date.php @@ -709,6 +709,17 @@ class Date return $this->addHour(-$n); } + /** + * Subtracts `$n` seconds from `$this` date and returns the result in a new Date. + * + * @param int $n Number of seconds to subtract. Can be less than 0. + * @return \Piwik\Date + */ + public function subSeconds($n) + { + return new Date($this->timestamp - $n, $this->timezone); + } + /** * Adds a period to `$this` date and returns the result in a new Date instance. * diff --git a/core/Db/BatchInsert.php b/core/Db/BatchInsert.php index 160412418207b799c11678b725be300fe4330846..8d54c163b2951dd0bcdc3ce8ad2b9fe26e064a83 100644 --- a/core/Db/BatchInsert.php +++ b/core/Db/BatchInsert.php @@ -98,7 +98,10 @@ class BatchInsert } // if all else fails, fallback to a series of INSERTs - @unlink($filePath); + if(file_exists($filePath)){ + @unlink($filePath); + } + self::tableInsertBatchIterate($tableName, $fields, $values); return false; } diff --git a/core/ExceptionHandler.php b/core/ExceptionHandler.php index 12552b85e449504b998b286dd7063475c420347f..aa20344dd1d892c59152a290061d823f203c3393 100644 --- a/core/ExceptionHandler.php +++ b/core/ExceptionHandler.php @@ -56,7 +56,7 @@ class ExceptionHandler public static function dieWithHtmlErrorPage(Exception $exception) { - Common::sendHeader('Content-Type: text/html; char1set=utf-8'); + Common::sendHeader('Content-Type: text/html; charset=utf-8'); echo self::getErrorResponse($exception); diff --git a/core/Filesystem.php b/core/Filesystem.php index 73a07a54bb541ebf58fbf288563784505bd304df..7549192a2c567826afe1f8b2a5c49885e64d8da3 100644 --- a/core/Filesystem.php +++ b/core/Filesystem.php @@ -135,7 +135,7 @@ class Filesystem $output = @shell_exec($command); if ($output) { - $output = explode("\n", $output); + $output = explode("\n", trim($output)); $commandFailed = (false !== strpos($output, "no file systems processed")); if (!$commandFailed diff --git a/core/Http.php b/core/Http.php index df9df3e5aa417ee0780778092238f86303bdda09..b5533262e4a156b76fc75925bacbe7dcf309c5f1 100644 --- a/core/Http.php +++ b/core/Http.php @@ -426,7 +426,9 @@ class Http // save to file if (is_resource($file)) { - $handle = fopen($aUrl, 'rb', false, $ctx); + if (!($handle = fopen($aUrl, 'rb', false, $ctx))) { + throw new Exception("Unable to open $aUrl"); + } while (!feof($handle)) { $response = fread($handle, 8192); $fileLength += strlen($response); diff --git a/core/Intl/Locale.php b/core/Intl/Locale.php index 5b284d5a9731bb35e922bfcf58e0ec3a6abfd626..0c7676569af4e306c2649bbfe8bbd34bd93bda33 100644 --- a/core/Intl/Locale.php +++ b/core/Intl/Locale.php @@ -10,16 +10,31 @@ namespace Piwik\Intl; class Locale { + /** + * @param string|array $locale + */ public static function setLocale($locale) { - $localeVariant = str_replace('UTF-8', 'UTF8', $locale); - - setlocale(LC_ALL, $locale, $localeVariant); + if(!is_array($locale)){ + $locale = array($locale); + } + + $newLocale = array(); + foreach($locale as $localePart){ + $newLocale[] = $localePart; + + $localeVariant = str_replace('UTF-8', 'UTF8', $localePart); + if($localeVariant != $localePart){ + $newLocale[] = $localeVariant; + } + } + + setlocale(LC_ALL, $newLocale); setlocale(LC_CTYPE, ''); } public static function setDefaultLocale() { - self::setLocale('en_US.UTF-8'); + self::setLocale(array('en_US.UTF-8', 'en-US')); } } diff --git a/core/Plugin.php b/core/Plugin.php index 560e7581b1525e7ac626d1b2f3a38e833dc36b15..ff938a659f7921e1748d8604983d019a8679b773 100644 --- a/core/Plugin.php +++ b/core/Plugin.php @@ -56,7 +56,7 @@ require_once PIWIK_INCLUDE_PATH . '/core/Plugin/MetadataLoader.php'; * * class MyPlugin extends Plugin * { - * public function getListHooksRegistered() + * public function registerEvents() * { * return array( * 'API.getReportMetadata' => 'getReportMetadata', @@ -192,7 +192,7 @@ class Plugin } /** - * Returns a list of hooks with associated event observers. + * Returns a list of events with associated event observers. * * Derived classes should use this method to associate callbacks with events. * @@ -209,12 +209,22 @@ class Plugin * 'before' => true // execute before callbacks w/o ordering * ) * ) + * @since 2.15.0 */ - public function getListHooksRegistered() + public function registerEvents() { return array(); } + /** + * @deprecated since 2.15.0 use {@link registerEvents()} instead. + * @return array + */ + public function getListHooksRegistered() + { + return $this->registerEvents(); + } + /** * This method is executed after a plugin is loaded and translations are registered. * Useful for initialization code that uses translated strings. diff --git a/core/Plugin/ControllerAdmin.php b/core/Plugin/ControllerAdmin.php index c82fcaf92bfd9aad59bebaf7cb307bb621dd604c..3431d701566663ff2bc82b92b9448866fb6a5f9d 100644 --- a/core/Plugin/ControllerAdmin.php +++ b/core/Plugin/ControllerAdmin.php @@ -11,12 +11,14 @@ namespace Piwik\Plugin; use Piwik\Config as PiwikConfig; use Piwik\Config; use Piwik\Date; +use Piwik\Development; use Piwik\Menu\MenuAdmin; use Piwik\Menu\MenuTop; use Piwik\Menu\MenuUser; use Piwik\Notification; use Piwik\Notification\Manager as NotificationManager; use Piwik\Piwik; +use Piwik\Tracker\TrackerConfig; use Piwik\Url; use Piwik\Version; use Piwik\View; @@ -140,6 +142,25 @@ abstract class ControllerAdmin extends Controller NotificationManager::notify('PHP53VersionCheck', $notification); } + private static function notifyWhenDebugOnDemandIsEnabled($trackerSetting) + { + if (!Development::isEnabled() + && Piwik::hasUserSuperUserAccess() && + TrackerConfig::getConfigValue($trackerSetting)) { + + $message = Piwik::translate('General_WarningDebugOnDemandEnabled'); + $message = sprintf($message, '"' . $trackerSetting . '"', '"[Tracker] ' . $trackerSetting . '"', '"0"', + '"config/config.ini.php"'); + $notification = new Notification($message); + $notification->title = Piwik::translate('General_Warning'); + $notification->priority = Notification::PRIORITY_LOW; + $notification->context = Notification::CONTEXT_WARNING; + $notification->type = Notification::TYPE_TRANSIENT; + $notification->flags = Notification::FLAG_NO_CLEAR; + NotificationManager::notify('Tracker' . $trackerSetting, $notification); + } + } + /** * Assigns view properties that would be useful to views that render admin pages. * @@ -185,6 +206,8 @@ abstract class ControllerAdmin extends Controller self::checkPhpVersion($view); self::notifyWhenPhpVersionIsEOL(); + self::notifyWhenDebugOnDemandIsEnabled('debug'); + self::notifyWhenDebugOnDemandIsEnabled('debug_on_demand'); $adminMenu = MenuAdmin::getInstance()->getMenu(); $view->adminMenu = $adminMenu; diff --git a/core/Plugin/Segment.php b/core/Plugin/Segment.php index b9164898a8b44e22429956412dc415a58033c70b..8a9688fb0b0ae7ca356c5ea3ba39f23c7918609e 100644 --- a/core/Plugin/Segment.php +++ b/core/Plugin/Segment.php @@ -52,6 +52,14 @@ class Segment private $permission; private $suggestedValuesCallback; + /** + * If true, this segment will only be visible to the user if the user has view access + * to one of the requested sites (see API.getSegmentsMetadata). + * + * @var bool + */ + private $requiresAtLeastViewAccess = false; + /** * @ignore */ @@ -255,4 +263,29 @@ class Segment return $segment; } + + /** + * Returns true if this segment should only be visible to the user if the user has view access + * to one of the requested sites (see API.getSegmentsMetadata), false if it should always be + * visible to the user (even the anonymous user). + * + * @return boolean + * @ignore + */ + public function isRequiresAtLeastViewAccess() + { + return $this->requiresAtLeastViewAccess; + } + + /** + * Sets whether the segment should only be visible if the user requesting it has view access + * to one of the requested sites and if the user is not the anonymous user. + * + * @param boolean $requiresAtLeastViewAccess + * @ignore + */ + public function setRequiresAtLeastViewAccess($requiresAtLeastViewAccess) + { + $this->requiresAtLeastViewAccess = $requiresAtLeastViewAccess; + } } diff --git a/core/ReportRenderer.php b/core/ReportRenderer.php index a693d1b7f33e6514896f892812e78b49da3fd236..6b809f5b1697a893ee114f1225b1d6f7ed427040 100644 --- a/core/ReportRenderer.php +++ b/core/ReportRenderer.php @@ -151,7 +151,11 @@ abstract class ReportRenderer extends BaseFactory $outputFilename = StaticContainer::get('path.tmp') . '/assets/' . $filename; @chmod($outputFilename, 0600); - @unlink($outputFilename); + + if(file_exists($outputFilename)){ + @unlink($outputFilename); + } + return $outputFilename; } diff --git a/core/Tracker/GoalManager.php b/core/Tracker/GoalManager.php index 7bd5e97f1e588af67de0ec7eac947f07e34f13f8..89c55b2d67043f18a665881c103c3b580986405f 100644 --- a/core/Tracker/GoalManager.php +++ b/core/Tracker/GoalManager.php @@ -125,53 +125,71 @@ class GoalManager return array(); } - $actionType = $action->getActionType(); $goals = $this->getGoalDefinitions($idSite); $convertedGoals = array(); foreach ($goals as $goal) { - $attribute = $goal['match_attribute']; - // if the attribute to match is not the type of the current action - if ((($attribute == 'url' || $attribute == 'title') && $actionType != Action::TYPE_PAGE_URL) - || ($attribute == 'file' && $actionType != Action::TYPE_DOWNLOAD) - || ($attribute == 'external_website' && $actionType != Action::TYPE_OUTLINK) - || ($attribute == 'manually') - || in_array($attribute, array('event_action', 'event_name', 'event_category')) && $actionType != Action::TYPE_EVENT - ) { - continue; + $convertedUrl = $this->detectGoalMatch($goal, $action); + if (!empty($convertedUrl)) { + $convertedGoals[] = array('url' => $convertedUrl) + $goal; } + } + return $convertedGoals; + } + /** + * Detects if an Action matches a given goal. If it does, the URL that triggered the goal + * is returned. Otherwise null is returned. + * + * @param array $goal + * @param Action $action + * @return string|null + */ + public function detectGoalMatch($goal, Action $action) + { + $actionType = $action->getActionType(); - switch ($attribute) { - case 'title': - // Matching on Page Title - $url = $action->getActionName(); - break; - case 'event_action': - $url = $action->getEventAction(); - break; - case 'event_name': - $url = $action->getEventName(); - break; - case 'event_category': - $url = $action->getEventCategory(); - break; - // url, external_website, file, manually... - default: - $url = $action->getActionUrlRaw(); - break; - } + $attribute = $goal['match_attribute']; + + // if the attribute to match is not the type of the current action + if ((($attribute == 'url' || $attribute == 'title') && $actionType != Action::TYPE_PAGE_URL) + || ($attribute == 'file' && $actionType != Action::TYPE_DOWNLOAD) + || ($attribute == 'external_website' && $actionType != Action::TYPE_OUTLINK) + || ($attribute == 'manually') + || in_array($attribute, array('event_action', 'event_name', 'event_category')) && $actionType != Action::TYPE_EVENT + ) { + return null; + } - $pattern_type = $goal['pattern_type']; - $match = $this->isUrlMatchingGoal($goal, $pattern_type, $url); - if ($match) { - $goal['url'] = $action->getActionUrl(); - $convertedGoals[] = $goal; - } + switch ($attribute) { + case 'title': + // Matching on Page Title + $url = $action->getActionName(); + break; + case 'event_action': + $url = $action->getEventAction(); + break; + case 'event_name': + $url = $action->getEventName(); + break; + case 'event_category': + $url = $action->getEventCategory(); + break; + // url, external_website, file, manually... + default: + $url = $action->getActionUrlRaw(); + break; } - return $convertedGoals; + $pattern_type = $goal['pattern_type']; + + $match = $this->isUrlMatchingGoal($goal, $pattern_type, $url); + if (!$match) { + return null; + } + + return $action->getActionUrl(); } public function detectGoalId($idSite, Request $request) @@ -216,7 +234,7 @@ class GoalManager // Copy Custom Variables from Visit row to the Goal conversion // Otherwise, set the Custom Variables found in the cookie sent with this request $goal += $visitCustomVariables; - $maxCustomVariables = CustomVariables::getMaxCustomVariables(); + $maxCustomVariables = CustomVariables::getNumUsableCustomVariables(); for ($i = 1; $i <= $maxCustomVariables; $i++) { if (isset($visitorInformation['custom_var_k' . $i]) diff --git a/core/Tracker/Request.php b/core/Tracker/Request.php index b5d358f25dc8ebbc05149344e6688c916795739d..489ee313e7db80cb83e12a159198b79bb735d7ae 100644 --- a/core/Tracker/Request.php +++ b/core/Tracker/Request.php @@ -540,7 +540,7 @@ class Request } $customVariables = array(); - $maxCustomVars = CustomVariables::getMaxCustomVariables(); + $maxCustomVars = CustomVariables::getNumUsableCustomVariables(); foreach ($customVar as $id => $keyValue) { $id = (int)$id; diff --git a/core/Tracker/TrackerCodeGenerator.php b/core/Tracker/TrackerCodeGenerator.php index 7a0204dbda9b3ce042f101ba247415b2cae41150..ceca8a3e7103e82f5e45aa2726c6bd3b64f055aa 100644 --- a/core/Tracker/TrackerCodeGenerator.php +++ b/core/Tracker/TrackerCodeGenerator.php @@ -63,7 +63,7 @@ class TrackerCodeGenerator if ($mergeSubdomains || $mergeAliasUrls) { $options .= $this->getJavascriptTagOptions($idSite, $mergeSubdomains, $mergeAliasUrls); } - $maxCustomVars = CustomVariables::getMaxCustomVariables(); + $maxCustomVars = CustomVariables::getNumUsableCustomVariables(); if ($visitorCustomVariables && count($visitorCustomVariables) > 0) { $options .= ' // you can set up to ' . $maxCustomVars . ' custom variables for each visitor' . PHP_EOL; diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php index da0959b8b08e1443362a5cae09b22bb6f4b8ae1f..fc11d0cc3f80c62ea858e88e2ae6b4ca8a88c667 100644 --- a/core/Tracker/Visit.php +++ b/core/Tracker/Visit.php @@ -264,6 +264,8 @@ class Visit implements VisitInterface $this->triggerHookOnDimensions($dimensions, 'onConvertedVisit'); } + $properties = &$this->visitProperties->getProperties(); + /** * Triggered before a new [visit entity](/guides/persistence-and-the-mysql-backend#visits) is persisted. * @@ -278,7 +280,7 @@ class Visit implements VisitInterface * * @deprecated */ - Piwik::postEvent('Tracker.newVisitorInformation', array($this->visitProperties->getProperties(), $this->request)); + Piwik::postEvent('Tracker.newVisitorInformation', array(&$properties, $this->request)); foreach ($this->requestProcessors as $processor) { $processor->onNewVisit($this->visitProperties, $this->request); diff --git a/core/Tracker/VisitorRecognizer.php b/core/Tracker/VisitorRecognizer.php index ff91f57d7ec00d5738d5fde26fce6a5f6a5ef675..d5f5e3c502268b1b7bc59998c7c05a60b8995a15 100644 --- a/core/Tracker/VisitorRecognizer.php +++ b/core/Tracker/VisitorRecognizer.php @@ -256,7 +256,7 @@ class VisitorRecognizer array_unshift($fields, 'visit_first_action_time'); array_unshift($fields, 'visit_last_action_time'); - for ($index = 1; $index <= CustomVariables::getMaxCustomVariables(); $index++) { + for ($index = 1; $index <= CustomVariables::getNumUsableCustomVariables(); $index++) { $fields[] = 'custom_var_k' . $index; $fields[] = 'custom_var_v' . $index; } diff --git a/core/Updates/2.15.0-b4.php b/core/Updates/2.15.0-b4.php new file mode 100644 index 0000000000000000000000000000000000000000..132c3319817d220e53c90556eec661654fc10b1d --- /dev/null +++ b/core/Updates/2.15.0-b4.php @@ -0,0 +1,25 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Updates; + +use Piwik\Plugins\Installation\ServerFilesGenerator; +use Piwik\Updates; +use Piwik\Updater; + +/** + */ +class Updates_2_15_0_b4 extends Updates +{ + public function doUpdate(Updater $updater) + { + // added .ttf whitelisted file for apache webserver + ServerFilesGenerator::deleteHtAccessFiles(); + ServerFilesGenerator::createHtAccessFiles(); + } +} diff --git a/core/Version.php b/core/Version.php index 36a823aef3c4911b3fb7ba6b579c9a57318168c4..6ab960b7e25d6b71bdb528d0ffe8a89d6ca4f36a 100644 --- a/core/Version.php +++ b/core/Version.php @@ -20,7 +20,7 @@ final class Version * The current Piwik version. * @var string */ - const VERSION = '2.15.0-b3'; + const VERSION = '2.15.0-b6'; public function isStableVersion($version) { diff --git a/core/ViewDataTable/Factory.php b/core/ViewDataTable/Factory.php index 8822fd04b649cdddef64cc072f4549e41d6f6ede..43db3161e98a027b2e99c57bc316ba8321d40d1d 100644 --- a/core/ViewDataTable/Factory.php +++ b/core/ViewDataTable/Factory.php @@ -146,10 +146,6 @@ class Factory return self::createViewDataTableInstance($visualizations[$type], $controllerAction, $apiAction, $params); } - if (class_exists($type)) { - return self::createViewDataTableInstance($type, $controllerAction, $apiAction, $params); - } - if (array_key_exists($defaultType, $visualizations)) { return self::createViewDataTableInstance($visualizations[$defaultType], $controllerAction, $apiAction, $params); } diff --git a/js/piwik.js b/js/piwik.js index b568d541a02bbc057f89e6e1c1c76b66a2b7d66a..9d012d6941b1f7f65e8154c6d546710bfee83550 100644 --- a/js/piwik.js +++ b/js/piwik.js @@ -455,7 +455,7 @@ if (typeof JSON2 !== 'object') { getTrackedContentImpressions, getCurrentlyVisibleContentImpressionsRequestsIfNotTrackedYet, contentInteractionTrackingSetupDone, contains, match, pathname, piece, trackContentInteractionNode, trackContentInteractionNode, trackContentImpressionsWithinNode, trackContentImpression, - enableTrackOnlyVisibleContent, trackContentInteraction, clearEnableTrackOnlyVisibleContent, + enableTrackOnlyVisibleContent, trackContentInteraction, clearEnableTrackOnlyVisibleContent, logAllContentBlocksOnPage, trackVisibleContentImpressions, isTrackOnlyVisibleContentEnabled, port, isUrlToCurrentDomain, isNodeAuthorizedToTriggerInteraction, replaceHrefIfInternalLink, getConfigDownloadExtensions, disableLinkTracking, substr, setAnyAttribute, wasContentTargetAttrReplaced, max, abs, childNodes, compareDocumentPosition, body, @@ -474,6 +474,7 @@ if (typeof JSON2 !== 'object') { /*members amd */ /*global console:true */ /*members error */ +/*members log */ // asynchronous tracker (or proxy) if (typeof _paq !== 'object') { @@ -5318,6 +5319,20 @@ if (typeof Piwik !== 'object') { }); }, + /** + * Useful to debug content tracking. This method will log all detected content blocks to console + * (if the browser supports the console). It will list the detected name, piece, and target of each + * content block. + */ + logAllContentBlocksOnPage: function () { + var contentNodes = content.findContentNodes(); + var contents = content.collectContent(contentNodes); + + if (console !== undefined && console && console.log) { + console.log(contents); + } + }, + /** * Records an event * diff --git a/lang/am.json b/lang/am.json index 1eddffc184834ee80741320c3807c3f080d48e29..3635057355eeae1a9eaad34da0517cc99f058967 100644 --- a/lang/am.json +++ b/lang/am.json @@ -61,7 +61,6 @@ "Settings": "ቅንብሮች", "Table": "ሰንጠረዥ", "TagCloud": "መለያ Cloud", - "TranslatorEmail": "info@addismap.com", "TranslatorName": "Alazar Tekle of <a href=\"http:\/\/www.addismap.com\">Addis Map<\/a> \/ <a href=\"http:\/\/www.map.et\">Ethiopia Map<\/a>", "Unknown": "á‹«áˆá‰³á‹ˆá‰€", "VBarGraph": "አቀባዊ አሞሌ áŒáˆ«á", diff --git a/lang/ar.json b/lang/ar.json index c5991d763e60156fe502750e8b1526fd8a17bc62..c15a8b69e30728bea3afaa63ed6ef619b53aac65 100644 --- a/lang/ar.json +++ b/lang/ar.json @@ -215,7 +215,6 @@ "TagCloud": "Ø³ØØ§Ø¨Ø© وسوم", "Total": "مجموع", "TotalRevenue": "إجمالي الإيرادات", - "TranslatorEmail": "mustafa@i-translate.info, benkheil.abdelouali@gmail.com", "TranslatorName": "Mustafa Rawi, Benkheil Abdelouali", "Unknown": "غير معروÙ", "Upload": "Ø±ÙØ¹", diff --git a/lang/be.json b/lang/be.json index b9fc7dca13abe70c7a0e4b8e5cdaa6745d7c1bd3..4a439c13cb65066bea4784d6befee24d871bcad2 100644 --- a/lang/be.json +++ b/lang/be.json @@ -231,7 +231,6 @@ "Tax": "Падатак", "Total": "Ðгульна", "TotalRevenue": "Ðгульны прыбытак", - "TranslatorEmail": "by.marcis@gmail.com, albanardua@gmail.com, iflexion.1@gmail.com", "TranslatorName": "Marcis G, <a href=\"http:\/\/finfact.org\">Alban 'r4bble' Ardua<\/a>, Iflexion design", "UniquePurchases": "Ð£Ð½Ñ–ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð¿Ð°ÐºÑƒÐ¿ÐºÑ–", "Unknown": "ÐевÑдома", diff --git a/lang/bg.json b/lang/bg.json index 0d9ad4ad02521b58f0734b042e45c145f224b772..985f187b43fa8c09fd3f0594f87b80be98ad8922 100644 --- a/lang/bg.json +++ b/lang/bg.json @@ -345,7 +345,6 @@ "TotalRatioTooltip": "Това е %1$s от вÑички %2$s %3$s.", "TotalRevenue": "Общо приход", "TransitionsRowActionTooltip": "Вижте какво поÑетителите Ñа правили преди и Ñлед поÑещаването на тази Ñтраница", - "TranslatorEmail": "kristalin[at]kividesign[dot]com, Virosss[at]abv[dot]bg, tomivr[at]abv[dot]bg, pak69[at]abv[dot]bg, pamir[at]abv[dot]bg", "TranslatorName": "Kristalin Chavdarov, <a href=\"http:\/\/coffebreak.info\">Ðндон Иванов<\/a>, Tom Atanasov, Dimitar Stamenov, ÐŸÐ°Ð½Ð°Ð¹Ð¾Ñ‚Ð¸Ñ ÐšÐ¾Ð½Ð´Ð¾ÑниÑ", "UniquePurchases": "Уникални поръчки", "Unknown": "ÐеизвеÑтен", diff --git a/lang/bn.json b/lang/bn.json index ebcb8de19fa56e03292088f0f5aefca6fe8c6087..e70de759112a7f95912e54f706e01fa6e519da0e 100644 --- a/lang/bn.json +++ b/lang/bn.json @@ -52,7 +52,6 @@ "SmtpUsername": "SMTP বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•ারীর নাম", "Table": "সারণি", "Total": "সরà§à¦¬à¦®à§‹à¦Ÿ", - "TranslatorEmail": "-", "TranslatorName": "Anjan Dutta, Rezaul Hasan", "Upload": "আপলোড", "Username": "বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•ারীর নাম", diff --git a/lang/bs.json b/lang/bs.json index a23eb6596d43d0fa6e895b3c43e1e4d7aeb019b7..cd7a6521420eb889480354e4a805fd97f4d0ce6f 100644 --- a/lang/bs.json +++ b/lang/bs.json @@ -273,7 +273,6 @@ "TimeOnPage": "Vrijeme na stranici", "Total": "Ukupno", "TotalRevenue": "Ukupna zarada", - "TranslatorEmail": "translations@piwik.org", "TranslatorName": "Piwik", "UniquePurchases": "Jedinstvene narudžbe", "Unknown": "Nepoznato", diff --git a/lang/ca.json b/lang/ca.json index 4d8902fa17e235272ce59312ebc1215236311c89..da54b06a0b7ab318f1cba3eb0036a97dc0150806 100644 --- a/lang/ca.json +++ b/lang/ca.json @@ -310,7 +310,6 @@ "TotalRevenue": "Total Ingressos", "TransitionsRowActionTooltip": "Observar que van fer els visitants abans i desprès de veure aquesta pà gina", "TransitionsRowActionTooltipTitle": "Obre les transicions", - "TranslatorEmail": "isb1009 [at] [don't write this] astronomipedia [dot] es,jjuvan@grn.cat", "TranslatorName": "Isaac Sánchez Barrera, Joan Juvanteny", "UniquePurchases": "Compres úniques", "Unknown": "Desconegut", diff --git a/lang/cs.json b/lang/cs.json index e0ae8910df504fffc434f667f644b46ef57ffb25..a98e31ccca3bbbdd68da59b7774773dafd425e83 100644 --- a/lang/cs.json +++ b/lang/cs.json @@ -138,6 +138,7 @@ "ExceptionContactSupportGeneric": "Pokud problém pÅ™etrvá, %skontaktujte pro pomoc vaÅ¡eho Piwik administrátora%s.", "ExceptionCheckUserHasSuperUserAccessOrIsTheUser": "Uživatel musà být super uživatel nebo uživatel %s.", "ExceptionConfigurationFileNotFound": "KonfiguraÄnà soubor {%s} nebyl nalezen", + "ExceptionConfigurationFileNotFound2": "Pokud soubor existuje, ověřte, že %s může ÄÃst uživatel '%s'.", "ExceptionDatabaseVersion": "VaÅ¡e %1$s verze je %2$s ale Piwik vyžaduje minimálnÄ› %3$s.", "ExceptionDatabaseVersionNewerThanCodebase": "Kód Piwiku je z verze %1$s, ale bylo zjiÅ¡tÄ›no, že databáze byla již aktualizována na verzi %2$s.", "ExceptionDatabaseVersionNewerThanCodebaseWait": "VaÅ¡i administrátoÅ™i možná pracujà na aktualizaci. Zkuste to, prosÃm, za pár minut.", @@ -292,6 +293,8 @@ "Price": "Cena", "ProductConversionRate": "Konverznà pomÄ›r", "ProductRevenue": "Hodnota produktu", + "Measurable": "Měřitelné", + "Measurables": "Měřitelná", "PurchasedProducts": "Zakoupené produkty", "Quantity": "MnožstvÃ", "RangeReports": "Vlastnà rozsahy dat", @@ -308,6 +311,7 @@ "ReportRatioTooltip": "'%1$s' reprezentuje %2$s z %3$s %4$s s %5$s.", "Reports": "HlášenÃ", "ReportsContainingTodayWillBeProcessedAtMostEvery": "Archivovat hlášenà nejvýše každých X sekund", + "RearchiveTimeIntervalOnlyForTodayReports": "Toto ovlivnà pouze hlášenà zahrnujÃcà dneÅ¡ek nebo obdobÃ, která dneÅ¡ek obsahujÃ.", "ReportsWillBeProcessedAtMostEveryHour": "Proto budou hlášenà zpracovávaná každou hodinu", "RequestTimedOut": "Datový požadavek na %s vyprÅ¡el. ProsÃm vyzkouÅ¡ejte jej znovu", "Required": "%s požadováno", @@ -349,9 +353,9 @@ "Total": "Celkem", "TotalRatioTooltip": "Toto je %1$s ze vÅ¡ech %2$s %3$s.", "TotalRevenue": "Celková hodnota", + "TotalVisitsPageviewsActionsRevenue": "(Celkem: %s návÅ¡tÄ›v, %s zobrazenÃ, %s akcÃ, %s pÅ™Ãjem)", "TransitionsRowActionTooltip": "PodÃvejte se, co dÄ›lali návÅ¡tÄ›vnÃci pÅ™ed a po návÅ¡tÄ›vÄ› této stránky", "TransitionsRowActionTooltipTitle": "OtevÅ™Ãt pÅ™echody", - "TranslatorEmail": "info@joomladev.eu, salab@email.cz, michal@cihar.com", "TranslatorName": "Filip Bartmann, Jakub Baláš, Michal ÄŒihaÅ™", "UniquePurchases": "JedineÄnà nakupujÃcÃ", "Unknown": "Neznámý", @@ -384,6 +388,7 @@ "WarningFileIntegrityNoManifestDeployingFromGit": "Pokud nasazujete Piwik z Gitu, pak je tato zpráva normálnÃ.", "WarningFileIntegrityNoMd5file": "Test integrity nemůže být dokonÄen z důvodů chybÄ›jÃcà funkce md5_file().", "WarningPasswordStored": "%sUpozornÄ›nÃ:%s Toto heslo bude uloženo v konfiguraÄnÃm souboru viditelné pro vÅ¡echny s pÅ™Ãstupem k nÄ›mu.", + "WarningDebugOnDemandEnabled": "Režim sledovánà %s povolen. Z bezpeÄnostnÃch důvodů je doporuÄováno ponechat toto nastavenà pouze po krátkou dobu. Pokud ho chcete zakázat, nastavte %s v %s na %s.", "Website": "Web stránky", "Weekly": "TýdnÄ›", "WeeklyReport": "TýdnÄ›", diff --git a/lang/cy.json b/lang/cy.json index 8a2f3b921802ccac6b96acddae6afce0ad69df2c..71bf2b10dadec122266a6d8168c89da56a4cf958 100644 --- a/lang/cy.json +++ b/lang/cy.json @@ -199,7 +199,6 @@ "Tax": "Treth", "Total": "Cyfanswm", "TotalRevenue": "Cyfanswm Refeniw", - "TranslatorEmail": "hefinw@deudraeth.net", "TranslatorName": "Hefin Williams", "UniquePurchases": "Pryniant Unigol", "Unknown": "Anadnabyddus", diff --git a/lang/da.json b/lang/da.json index 8903add47f4bf57d8a29ea493a678d52f00d09d6..b5035993533f0daa89d02b2cc5e002c827f4ab2d 100644 --- a/lang/da.json +++ b/lang/da.json @@ -345,7 +345,6 @@ "TotalRevenue": "Indtægter i alt", "TransitionsRowActionTooltip": "See hvad besøgende gjorde før og efter de sÃ¥ denne side", "TransitionsRowActionTooltipTitle": "Ã…ben overgange", - "TranslatorEmail": "danieljuhl@gmail.com, jsm@janz.dk", "TranslatorName": "<a href=\"http:\/\/danieljuhl.dk\/\">Daniel Juhl<\/a>, jan madsen", "UniquePurchases": "Unikke køb", "Unknown": "Ukendt", diff --git a/lang/de.json b/lang/de.json index 25bd4b8b4f00c087cd93b7861e42569faca0b84c..058a0248cf339e15e1ed6642891497b057d9e3a4 100644 --- a/lang/de.json +++ b/lang/de.json @@ -30,7 +30,7 @@ "ChoosePeriod": "Zeitraum wählen", "ChooseWebsite": "Website wählen", "ClickHere": "Klicken Sie hier für mehr Informationen.", - "ClickToChangePeriod": "Klicke erneut, um den Zeitraum zu ändern.", + "ClickToChangePeriod": "Klicken Sie erneut, um den Zeitraum zu ändern.", "Close": "Schließen", "ClickToSearch": "Zum Suchen klicken", "ColumnActionsPerVisit": "Aktionen pro Besuch", @@ -60,7 +60,7 @@ "ColumnLabel": "Bezeichnung", "ColumnMaxActions": "Maximale Aktionen pro Besuch", "ColumnNbActions": "Aktionen", - "ColumnNbActionsDocumentation": "Die Anzahl der Aktionen, die ein Besucher durchgeführt hat. Aktionen sind Seitenansichten, Downloads und der Aufruf von ausgehenden Verweisen und interne Suchen.", + "ColumnNbActionsDocumentation": "Die Anzahl der Aktionen, die ihre Besucher durchgeführt hat. Aktionen sind Seitenansichten, Downloads, der Aufruf von ausgehenden Verweisen und interne Suchen.", "ColumnNbUniqVisitors": "Eindeutige Besucher", "ColumnNbUniqVisitorsDocumentation": "Die Anzahl der eindeutigen Besucher auf der Website. Jeder Benutzer wird nur einmal gezählt, auch wenn er die Website mehrmals täglich besucht hat.", "ColumnNbUsers": "Benutzer", @@ -149,7 +149,7 @@ "ExceptionInvalidArchiveTimeToLive": "Die Archivierungszeit von Live-Berichten muss eine Zahl in Sekunden (größer als Null) sein.", "ExceptionInvalidDateFormat": "Das Datumsformat muss %s oder eine andere, von der Funktion %s unterstützte Zeichenkette sein. (Besuchen Sie %s für nähere Informationen)", "ExceptionInvalidDateRange": "Das Datum '%s' ist keine korrekte Zeitspanne. Es sollte das folgende Format haben: %s", - "ExceptionInvalidPeriod": "Die Periode '%s' wird nicht unterstützt. Versuchen Sie es stattdessen mit einem der folgenden: %s", + "ExceptionInvalidPeriod": "Der Zeitraum '%s' wird nicht unterstützt. Versuchen Sie es stattdessen mit einem der folgenden: %s", "ExceptionInvalidRendererFormat": "Das Renderer-Format '%s' ist ungültig. Versuchen Sie stattdessen eines der folgenden Formate: %s.", "ExceptionInvalidReportRendererFormat": "Berichtsformat '%s' ist ungültig. Versuchen Sie stattdessen eines der folgenden: %s.", "ExceptionInvalidStaticGraphType": "Typ des statischen Graphs '%s' ist ungültig. Versuchen Sie stattdessen einen der folgenden Typen: %s", @@ -162,7 +162,7 @@ "ExceptionPrivilegeAccessWebsite": "Sie können auf diese Ressource nicht zugreifen, da es mindestens %s-Rechte für die Website-ID %d benötigt.", "ExceptionPrivilegeAtLeastOneWebsite": "Sie können auf diese Ressource nicht zugreifen, da eine %s Berechtigung für mindestens eine Website benötigt wird.", "ExceptionUnableToStartSession": "Starten einer Session nicht möglich.", - "ExceptionUndeletableFile": "Kann %s nicht löschen.", + "ExceptionUndeletableFile": "Löschen von %s nicht möglich", "ExceptionUnreadableFileDisabledMethod": "Die Konfigurationsdatei {%s} konnte nicht gelesen werden. Ihr Host hat möglicherweise %s deaktiviert.", "ExceptionReportNotFound": "Der gesuchte Bericht existiert nicht.", "ExceptionWidgetNotFound": "Das gesuchte Widget existiert nicht.", @@ -356,8 +356,7 @@ "TotalVisitsPageviewsActionsRevenue": "(Gesamt: %s Besuche, %s Seitenansichten, %s Aktionen, %s Einnahmen)", "TransitionsRowActionTooltip": "Die Aktionen vor und nach dieser Seite auswerten", "TransitionsRowActionTooltipTitle": "Transitions öffnen", - "TranslatorEmail": "frank@bueltge.de, piwik@thorstentaube.de, arthur.borens@gmx.de, mail@marco-ziesing.de, andreas.just@cmsmadesimple.de, halfdan@xnorfz.de, ich@pascal90.de, christian@conlabz.de, michael.stenz@email.de, djsoldier1988@gmail.com, de@piwik.org,sebastian.gumprich@38.de", - "TranslatorName": "Frank Bueltge, Thorsten Taube, Arthur W. Borens, Marco Ziesing, Andreas Just, Fabian Becker, Henry Müller, Pascal Herbert, Christian W. Schneider, Michael Stenz, Itransition, Timo Besenreuther", + "TranslatorName": "Frank Bueltge, Thorsten Taube, Arthur W. Borens, Marco Ziesing, Andreas Just, Fabian Becker, Henry Müller, Pascal Herbert, Christian W. Schneider, Michael Stenz, Itransition, Timo Besenreuther, Stefan Giehl", "UniquePurchases": "Eindeutige Käufe", "Unknown": "unbekannt", "Upload": "Upload", @@ -389,6 +388,7 @@ "WarningFileIntegrityNoManifestDeployingFromGit": "Wenn Sie Piwik von Git deployen ist diese Nachricht normal.", "WarningFileIntegrityNoMd5file": "Durch die fehlende md5_file() Funktion konnte die Integritätsprüfung nicht durchgeführt werden.", "WarningPasswordStored": "%sWarnung:%s Dieses Passwort wird in der Konfigurationsdatei gespeichert und ist so für jeden sichtbar, der auf diese Datei Zugriff hat.", + "WarningDebugOnDemandEnabled": "Der Tracker befindet sich im %s Modus. Aus Sicherheitsgründen sollte dieser nur für einen kurzen Zeitraum aktiv sein. Um Ihn zu deaktivieren setzen Sie %s auf %s in %s", "Website": "Website", "Weekly": "Wöchentlich", "WeeklyReport": "wöchentlich", diff --git a/lang/el.json b/lang/el.json index 6a637c5780c15031c3d69f5702e93c67def3a418..193114dbf46b1cd3d8067645971ea202c9fab8b6 100644 --- a/lang/el.json +++ b/lang/el.json @@ -356,7 +356,6 @@ "TotalVisitsPageviewsActionsRevenue": "(ΣÏνολα: %s επισκÎψεις, %s Ï€ÏοβολÎÏ‚ σελίδων, %s ενÎÏγειες, %s κÎÏδος)", "TransitionsRowActionTooltip": "Δείτε τι Îκαναν οι επισκÎπτες Ï€Ïιν και μετά την Ï€Ïοβολή αυτής της σελίδας", "TransitionsRowActionTooltipTitle": "Άνοιγμα Μεταβάσεων", - "TranslatorEmail": "jimaek@hotmail.com, info@onsite.net.gr, papaz_p@yahoo.com", "TranslatorName": "Jim Black www.jblack.info, ΓεώÏγιος ΤÎλλος OnSite.Net VoIP & IT Solutions, Παναγιώτης Παπάζογλου ΔÏ. Δασολόγος-ΠεÏιβαλλοντολόγος, <a href=\"http:\/\/www.lourdas.name\">ΛοÏÏδας Βασίλειος<\/a>", "UniquePurchases": "ΜοναδικÎÏ‚ ΠαÏαγγελίες", "Unknown": "Άγνωστο", @@ -389,6 +388,7 @@ "WarningFileIntegrityNoManifestDeployingFromGit": "Αν παίÏνετε το Piwik από το Git, το μήνυμα αυτό είναι φυσιολογικό.", "WarningFileIntegrityNoMd5file": "Ο Îλεγχος ακεÏαιότητας αÏχείου δεν μποÏεί να ολοκληÏωθεί γιατί είναι ανενεÏγή η συνάÏτηση md5_file().", "WarningPasswordStored": "%sÎ Ïοειδοποίηση:%s Αυτός ο κωδικός Ï€Ïόσβασης θα αποθηκευτεί στο αÏχείο Ïυθμίσεων και θα είναι οÏατός από οποιονδήποτε Îχει Ï€Ïόσβαση σε αυτό.", + "WarningDebugOnDemandEnabled": "Η κατάσταση ΠαÏακολοÏθησης %s είναι ενεÏγή. Για λόγους ασφαλείας, θα Ï€ÏÎπει να ενεÏγοποιείται μόνο για συγκεκÏιμÎνο χÏονικό διάστημα. Για να την απενεÏγοποιήσετε, οÏίστε το %s σε %s στο %s", "Website": "Ιστοσελίδα", "Weekly": "Εβδομαδιαίως", "WeeklyReport": "εβδομαδιαία", diff --git a/lang/en.json b/lang/en.json index 46bc9744caa02c4667aec3a3ee6c053e49716e72..8a3b9df0fc61b0637994c10a741e8d927d3770fa 100644 --- a/lang/en.json +++ b/lang/en.json @@ -356,7 +356,6 @@ "TotalVisitsPageviewsActionsRevenue": "(Total: %s visits, %s pageviews, %s actions, %s revenue)", "TransitionsRowActionTooltip": "See what visitors did before and after viewing this page", "TransitionsRowActionTooltipTitle": "Open Transitions", - "TranslatorEmail": "hello@piwik.org", "TranslatorName": "-", "UniquePurchases": "Unique Purchases", "Unknown": "Unknown", @@ -389,6 +388,7 @@ "WarningFileIntegrityNoManifestDeployingFromGit": "If you are deploying Piwik from Git, this message is normal.", "WarningFileIntegrityNoMd5file": "File integrity check could not be completed due to missing md5_file() function.", "WarningPasswordStored": "%sWarning:%s This password will be stored in the config file visible to everybody who can access it.", + "WarningDebugOnDemandEnabled": "Tracker %s mode is enabled. For security reasons this should be enabled only for a short time frame. To disable it set %s to %s in %s", "Website": "Website", "Weekly": "Weekly", "WeeklyReport": "weekly", diff --git a/lang/es.json b/lang/es.json index 0dc8f86cc6a2f516bd81c458dc1c7908c95c8cb7..d631e1f1f2eeef40b9c2b48cec411150e78c3f96 100644 --- a/lang/es.json +++ b/lang/es.json @@ -355,7 +355,6 @@ "TotalRevenue": "Ingresos totales", "TransitionsRowActionTooltip": "Vea que hicieron los visitantes antes y después de observar esta página", "TransitionsRowActionTooltipTitle": "Transiciones abiertas", - "TranslatorEmail": "ahriman89@gmail.com, ddiods@hotmail.com, fersfeir@niux.com.ar, magallania@gmail.com, dave96@dtecno.com, hnicolas.suero@gmail.com, paolo@psdmedia.se,", "TranslatorName": "Marcos Alberto SanmartÃn Pereira, David Ernesto Soto Vásquez, Fernando SFEIR, DarÃo Hereñu, David Ãlvarez Robert, Adrián Seldes, Héctor Nicolás Suero", "UniquePurchases": "Compras únicas", "Unknown": "Desconocido", diff --git a/lang/et.json b/lang/et.json index befd5a91d6ef9280d33f7b2184bd830bf4807bec..90c87fbd6008976667ef3564628074130b6c5144 100644 --- a/lang/et.json +++ b/lang/et.json @@ -262,7 +262,6 @@ "TotalRevenue": "Kogutulu", "TransitionsRowActionTooltip": "Vaata mida külastajad tegid enne ja peale selle lehe vaatamist", "TransitionsRowActionTooltipTitle": "Ava üleminekud", - "TranslatorEmail": "aivo.koger@gmail.com, toomingas.k@gmail.com", "TranslatorName": "<a href=\"http:\/\/ee.linkedin.com\/in\/aivokoger\/\">Aivo Koger<\/a>, Kaido Toomingas", "UniquePurchases": "Unikaalseid oste", "Unknown": "Tundmatu", diff --git a/lang/eu.json b/lang/eu.json index e0b76075db720b36a5e1b9d3f80ae8a6fb1ddc01..462bc4c60c01a954c6ffc05c0d46e487ab59860c 100644 --- a/lang/eu.json +++ b/lang/eu.json @@ -127,7 +127,6 @@ "SmtpUsername": "SMTP erabiltzaile-izena", "Table": "Taula", "TagCloud": "Etiketa-hodeia", - "TranslatorEmail": "librezale@librezale.org", "TranslatorName": "Librezale.org", "Unknown": "Ezezaguna", "Username": "Erabiltzaile-izena", diff --git a/lang/fa.json b/lang/fa.json index 6377fe1d5a2743d570da7f149237f300b0f6c4a7..bb414924992c75a59bfbc9d05dbd4b0e47979533 100644 --- a/lang/fa.json +++ b/lang/fa.json @@ -315,7 +315,6 @@ "TotalRevenue": "درآمد Ú©Ù„", "TransitionsRowActionTooltip": "کارهایی Ú©Ù‡ بازدیدکنندگان قبل Ùˆ بعد از دیدن این ØµÙØÙ‡ انجام داده اند را ببینید", "TransitionsRowActionTooltipTitle": "انتقال های باز", - "TranslatorEmail": "rasez_secure@yahoo.com, info[at]sweddata[.]com , info[at]parsigate[.]com , Hojat.ghanad@gmail.com", "TranslatorName": "reza abbasi, <a href=\"http:\/\/parsigate.com\">ParsiGate and Sweddata<\/a>, Hojat Ghanad", "UniquePurchases": "خرید های Ù…ØªÙØ§ÙˆØª", "Unknown": "ناشناس", diff --git a/lang/fi.json b/lang/fi.json index 1ea3851712f84226c4baa0a5d084b8d88ee6f554..238a36763c83c1e3de79ba0fa23d579455fcd310 100644 --- a/lang/fi.json +++ b/lang/fi.json @@ -346,7 +346,6 @@ "TotalRevenue": "Tulot yhteensä", "TransitionsRowActionTooltip": "Näe mitä kävijät tekivät ennen ja jälkeen tällä sivulla käymistä", "TransitionsRowActionTooltipTitle": "Avaa muutokset", - "TranslatorEmail": "olli@jarva.fi, sara@alennuskoodia.fi", "TranslatorName": "<a href=\"http:\/\/olli.jarva.fi\/\">Olli Jarva<\/a>, <a href=\"http:\/\/www.alennuskoodia.fi\/\">Alennuskoodia.fi<\/a>", "UniquePurchases": "Uniikit ostot", "Unknown": "Tuntematon", diff --git a/lang/fr.json b/lang/fr.json index 4fe78f86d3a4a7577a2d93014453db225d6ad8e1..3065d7f498b23acae5527ed230355be094c9ada9 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -356,7 +356,6 @@ "TotalVisitsPageviewsActionsRevenue": "(Total : %s visites, %s pages vues, %s actions, %s revenu)", "TransitionsRowActionTooltip": "Visualisez ce que les visiteurs ont fait après avoir visité cette page", "TransitionsRowActionTooltipTitle": "Ouvrir les transitions", - "TranslatorEmail": "admin@get-surf.com, piwik@ludovicevrard.be, daniel@castronovo.fr,", "TranslatorName": "<a href=\"http:\/\/microsofttouch.fr\/default\/b\/vincent\/default.aspx\">Vincent BIRET<\/a>, <a href=\"http:\/\/www.ludovicevrard.com\">Ludovic Evrard<\/a>, Daniel Castronovo", "UniquePurchases": "Achats uniques", "Unknown": "Inconnu", @@ -389,6 +388,7 @@ "WarningFileIntegrityNoManifestDeployingFromGit": "Si vous déployez Piwik depuis Git, ce message est normal.", "WarningFileIntegrityNoMd5file": "Le contrôle d'intégrité n'a pu être effectué car la fonction md5_file() est manquante.", "WarningPasswordStored": "%sAttention :%s Ce mot de passe sera stocké dans le fichier de configuration et sera visible pour n'importe qui y ayant accès.", + "WarningDebugOnDemandEnabled": "Le mode %s du suivit est activé. Pour des raisons de sécurité ceci ne devrait être activité que pour une courte période de temps. Pour le désactivé définir %s à %s dans %s", "Website": "Site", "Weekly": "Hebdomadaire", "WeeklyReport": "hebdomadaire", diff --git a/lang/gl.json b/lang/gl.json index c1e978ffedc52af9aea0f96cf2b0e3b48d1de273..f8a1527c35648a4ca7cd03a1c82db9a0289c7470 100644 --- a/lang/gl.json +++ b/lang/gl.json @@ -114,7 +114,6 @@ "Settings": "Configuración", "Table": "Táboa", "TagCloud": "Nube de etiquetas", - "TranslatorEmail": "info@ousli.org", "TranslatorName": "OUSLI - Ourense Software Libre, Antonio Andina", "Unknown": "Descoñecido", "Username": "Usuario", diff --git a/lang/he.json b/lang/he.json index ab5862be9556d76ab25685be3760c5b26c798e4a..afed55b473e6062dc19f52519de6420f79ab1df0 100644 --- a/lang/he.json +++ b/lang/he.json @@ -190,7 +190,6 @@ "Table": "טבלה", "TagCloud": "×¢× ×Ÿ תגי×", "Total": "סך הכל", - "TranslatorEmail": "nirlah@gmail.com", "TranslatorName": "<a href=\"http:\/\/www.nirlah.com\">Nirlah - Nir Lahad<\/a>", "Unknown": "×œ× ×™×“×•×¢", "Upload": "העל××”", diff --git a/lang/hi.json b/lang/hi.json index 65cfc293fb188bf2e431b19d3ff18cee8490d3f8..6d79821f25f12bd3d2d45ec2ba81d4775ee5e3d0 100644 --- a/lang/hi.json +++ b/lang/hi.json @@ -341,8 +341,7 @@ "TotalRevenue": "कà¥à¤² राजसà¥à¤µ", "TransitionsRowActionTooltip": "पहले और इस पृषà¥à¤ को देखने के बाद दरà¥à¤¶à¤•ों ने कà¥à¤¯à¤¾ किया देखें", "TransitionsRowActionTooltipTitle": "ओपन बदलाव", - "TranslatorEmail": "ashish@ajoft.com", - "TranslatorName": "<a href=\"http:\/\/www.ajoft.com\/\">Ajoft Softwares<\/a> , <a href=http:\/\/search-sos.org>Ritesh Kumar<\/a> , <a href=http:\/\/www.best-whiteningstrips.com\/>Rahul Patil<\/a>", + "TranslatorName": "<a href=\"http:\/\/www.ajoft.com\/\">Ajoft Softwares<\/a> , <a href=\"http:\/\/search-sos.org\">Ritesh Kumar<\/a> , <a href=\"http:\/\/www.best-whiteningstrips.com\/\">Rahul Patil<\/a>", "UniquePurchases": "अदà¥à¤µà¤¿à¤¤à¥€à¤¯ खरीद", "Unknown": "अजà¥à¤žà¤¾à¤¤", "Upload": "अपलोड करें", diff --git a/lang/hr.json b/lang/hr.json index 8aa3a82433d665fbc76850ab7d3d4f7e0fe0c210..bf4c101275988366b2cc165995e58485c017b5be 100644 --- a/lang/hr.json +++ b/lang/hr.json @@ -260,7 +260,6 @@ "Tax": "Porez", "Total": "Ukupno", "TotalRevenue": "Ukupan prihod", - "TranslatorEmail": "riba@ml1.net, mirko@domidona.com", "TranslatorName": "Tomislav RibiÄić, Mirko Lednicki", "UniquePurchases": "Jedinstvene kupovine", "Unknown": "Nepoznato", diff --git a/lang/hu.json b/lang/hu.json index f1f58537b3c5b935e6d9cc7f50f38ea415c86eb1..84fee7907dbfc68c9078b09c8db9bc89aa39ac52 100644 --- a/lang/hu.json +++ b/lang/hu.json @@ -219,7 +219,6 @@ "Tax": "Adó", "Total": "ÖsszesÃtve", "TotalRevenue": "Teljes bevétel", - "TranslatorEmail": "en@innen.hu, fityazz@yahoo.co.uk, kw@kardiweb.org", "TranslatorName": "József Jároli, Viktor Horvath & Mr. Balu, KardiWeb", "UniquePurchases": "Egyedi vásárlások", "Unknown": "Ismeretlen", diff --git a/lang/id.json b/lang/id.json index 1e4da1caf627a8480021dd009f54988c1b2aa949..10d1b8830a943f71bd087b2f3ad26f68f4c38a1b 100644 --- a/lang/id.json +++ b/lang/id.json @@ -312,7 +312,6 @@ "TotalRevenue": "Jumalh Pendapatan", "TransitionsRowActionTooltip": "Lihat apa yang pengujung lakukan sebelum dan sesudah melihat halaman ini", "TransitionsRowActionTooltipTitle": "Buka Peralihan", - "TranslatorEmail": "translationsproject-b@yuah.web.id, jakenenator@gmail.com, hendry.lee@gmail.com", "TranslatorName": "<a href=\"http:\/\/alihbahasa.yuah.web.id\/?asal=piwikfl\">Bayu Aditya H<\/a>, Djaka PM, Hendry Lee", "UniquePurchases": "Pembelian Unik", "Unknown": "TakTahu", diff --git a/lang/is.json b/lang/is.json index 5bd8a8708813924cbd78c603a2967b7f4b37807f..6e741497628efd4eb5a64e3d369014cce3c22fac 100644 --- a/lang/is.json +++ b/lang/is.json @@ -136,7 +136,6 @@ "SmtpUsername": "SMTP notendanafn", "Table": "Tafla", "TagCloud": "Klisjuský", - "TranslatorEmail": "annaj@hi.is, ivarbj@hi.is, johannbg@gmail.com", "TranslatorName": "Anna Jonna Ãrmannsdóttir, Ãvar Björn Hilmarsson, Jóhann B. Guðmundsson", "Unknown": "Óþekkt", "Username": "Notandanafn", diff --git a/lang/it.json b/lang/it.json index 49c562f94e7ba40d0bf9ede52bb0656a9cf1fc46..850a74aea26ce1cd80042c0c6691634d829e434f 100644 --- a/lang/it.json +++ b/lang/it.json @@ -5,6 +5,7 @@ "Action": "Azione", "Actions": "Azioni", "Add": "Aggiungi", + "AfterEntry": "dopo essere entrato qui", "All": "Tutto", "AllowPiwikArchivingToTriggerBrowser": "Archivia i report quando sono stati visti dal browser", "AllWebsitesDashboard": "Le dashboard di tutti i siti", @@ -38,12 +39,12 @@ "ColumnAverageGenerationTimeDocumentation": "Tempo medio per generare la pagina. Questa metrica include il tempo che è stato necessario al server per generare la pagina web, più il tempo che è stato necessario al visitatore per scaricare la rissposta del server. Un 'tempo medio di generazione' più basso vuol dire un sito più veloce per i vostri visitatori!", "ColumnAverageTimeOnPage": "Tempo medio sulla pagina", "ColumnAverageTimeOnPageDocumentation": "Il tempo medio passato dai visitatori su questa pagina (solo su questa pagina, non sul sito intero).", - "ColumnAvgTimeOnSite": "Durata media", - "ColumnAvgTimeOnSiteDocumentation": "La durata media di una visita.", + "ColumnAvgTimeOnSite": "Tempo medio sul sito", + "ColumnAvgTimeOnSiteDocumentation": "Durata media di una visita.", "ColumnBounceRate": "% rimbalzi", "ColumnBounceRateDocumentation": "La percentuale di visite che aveva solo una singola pagina visualizzata. Questo significa che il visitatore ha lasciato il sito web direttamente dalla pagina d'ingresso.", "ColumnBounceRateForPageDocumentation": "Percentuale di visite che sono partite e finite in questa pagina.", - "ColumnBounces": "Rifiuti", + "ColumnBounces": "Rimbalzi", "ColumnBouncesDocumentation": "Il numero delle visite che sono partite e finite in questa pagina. Questo vuol dire che il visitatore ha lasciato il sito vedendo solo questa pagina.", "ColumnConversionRate": "Tasso di conversione", "ColumnConversionRateDocumentation": "La percentuale di visite che ha attivato una conversione di obiettivo.", @@ -74,14 +75,14 @@ "ColumnSumVisitLength": "Durata totale delle visite (in secondi)", "ColumnTotalPageviews": "Pagine viste Totali", "ColumnUniqueEntrances": "Accessi unici", - "ColumnUniqueExits": "Uniche uscite", + "ColumnUniqueExits": "Uscite uniche", "ColumnUniquePageviews": "Visualizzazioni uniche", "ColumnUniquePageviewsDocumentation": "Il numero di visite che includono questa pagina. Se una pagina è stata visitata più volte all'interno di una stessa visita, verrà conteggiata una volta sola.", - "ColumnValuePerVisit": "Valore per visita", + "ColumnValuePerVisit": "Ricavo per visita", "ColumnViewedAfterSearch": "Cliccati nei risultati ricerca", "ColumnViewedAfterSearchDocumentation": "Numero di volte in cui questa Pagina è stata visitata dopo che un visitatore ha fatto una ricerca nel vostro sito e ha cliccato su questa pagina nei risultati della ricerca.", "ColumnVisitDuration": "Durata delle visite (in secondi)", - "ColumnVisitsWithConversions": "Visite per Conversione", + "ColumnVisitsWithConversions": "Visite con Conversioni", "ConfigFileIsNotWritable": "Il file di configurazione di Piwik %s non è scrivibile, alcune delle tue impostazioni potrebbero non essere state salvate. %s Cambia i permessi del file di configurazione per farlo diventare modificabile.", "Continue": "Continua", "ContinueToPiwik": "Vai a Piwik", @@ -89,7 +90,7 @@ "CurrentWeek": "Settimana corrente", "CurrentYear": "Anno corrente", "Daily": "Giornalmente", - "DailyReport": "giornaliero", + "DailyReport": "giornalmente", "DailyReports": "Reports giornalieri", "DailySum": "somma giornaliera", "DashboardForASpecificWebsite": "Dashboard per un sito specifico", @@ -116,7 +117,7 @@ "DisplayTableWithGoalMetrics": "Visualizza una tabella con le metriche dei Goal (Obiettivi)", "DisplayTableWithMoreMetrics": "Visualizza una tabella con più metriche", "Documentation": "Documentazione", - "Donate": "Donate", + "Donate": "Fa' una donazione", "Done": "Fatto", "Download": "Download", "DownloadFail_FileExists": "Il file %s esiste già !", @@ -125,7 +126,7 @@ "DownloadFullVersion": "%1$sScarica%2$s la versione completa! Check out %3$s", "DownloadPleaseRemoveExisting": "Se volete sostituirlo, eliminate il file esistente.", "Downloads": "Download", - "EcommerceOrders": "Ordine Ecommerce", + "EcommerceOrders": "Ordini Ecommerce", "EcommerceVisitStatusDesc": "Visita lo status dell'e-commerce alla fine della visita", "EcommerceVisitStatusEg": "Ad esempio, per selezionare tutte le visite che hanno fatto un ordine di e-commerce, la richiesta di API conterrebbe %s", "Edit": "Modifica", @@ -154,7 +155,7 @@ "ExceptionInvalidStaticGraphType": "Tipo di grafico statico '%s' non è valido. Provare una delle seguenti operazioni: %s.", "ExceptionInvalidToken": "Il token non è valido.", "ExceptionLanguageFileNotFound": "File di lingua '%s' non trovato.", - "ExceptionMethodNotFound": "Il metodo '%s' non esiste o non è disponibile non modulo '%s'.", + "ExceptionMethodNotFound": "Il metodo '%s' non esiste o non è disponibile nel modulo '%s'.", "ExceptionMissingFile": "Manca il file: %s", "ExceptionNonceMismatch": "Non è possibile verificare il token di sicurezza di questo form.", "ExceptionPrivilege": "Non puoi accedere a questa risorsa con un accesso %s.", @@ -352,9 +353,9 @@ "Total": "Totale", "TotalRatioTooltip": "Questo è %1$s di tuttti i %2$s %3$s.", "TotalRevenue": "Totale guadagni", + "TotalVisitsPageviewsActionsRevenue": "(Totale: %s visite, %s pagine, %s azioni, %s ricavi)", "TransitionsRowActionTooltip": "Guarda cosa hanno fatto i visitatori prima e dopo aver visto questa pagina", "TransitionsRowActionTooltipTitle": "Apri Transizioni", - "TranslatorEmail": "php_staff@yahoo.it, francesco@pixelstyle.it, contact@yusefmaali.net, aepic@cilea.it, fabriziorocca.bolzano@gmail.com, tmosbyd@gmail.com, info@alfioemanuele.it, giovanni94m@yahoo.it, blau@anche.no", "TranslatorName": "Alessandro Coscia, Giovdi, Yusef Maali, Andrea Marchitelli (CILEA), Fabrizio Rocca, Ted Mosby, Alfio E. Fresta, Giovanni Matina, Blau", "UniquePurchases": "Acquisti unici", "Unknown": "Sconosciuto", @@ -442,7 +443,7 @@ "NetworkError": "Errore di Rete", "NetworkErrorWithStatusCode": "C'è stato un errore \"%s\". La richiesta ha restituito lo status \"%s\". L'URL era \"%s\". Si prega di controllare l'URL immessa e il log degli errori su questo server per ulteriori informazioni sull'errore e su come risolverlo.", "NetworkErrorWithStatusCodeShort": "Errore di Rete %s", - "NetworkNotReachable": "Impossibile connettersi", + "NetworkNotReachable": "Rete non raggiungibile", "NoAccountIsSelected": "Devi scegliere un account. Aggiungi un nuovo account se non ne hai configurato uno.", "NoDataShort": "Nessun Dato", "NoPiwikAccount": "Non hai un account Piwik?", @@ -464,7 +465,7 @@ "RequestTimedOutShort": "Errore di Timeout Rete", "RestrictedCompatibility": "Compatibilità limitata", "RestrictedCompatibilityExplanation": "La versione %s di Piwik che stai utilizzando non è completamente supportata da Piwik Mobile 2. Potresti riscontrare alcuni bugs. Raccomandiamo di aggiornare Piwik all'ultima versione o di utilizzare Piwik Mobile 1.", - "SaveSuccessError": "Per favore verifica le impostazioni", + "SaveSuccessError": "L'URL di Piwik o la combinazione nome utente e password sono sbagliati,", "SearchWebsite": "Cerca siti", "ShowAll": "Mostra tutto", "ShowLess": "Mostra meno", @@ -484,6 +485,7 @@ "ComparingRecords": "Comparazione di %s righe", "Documentation": "Clicca sulle metriche per visualizzarle in un grafico evoluzione di grandi dimensioni. Usa Shift-click per visualizzare più parametri contemporaneamente.", "MetricBetweenText": "da %s e %s", + "MetricChangeText": "%s cambiamenti nel periodo", "MetricMinMax": "%1$s tra %2$s e %3$s nel periodo", "MetricsFor": "Metriche per %s", "MultiRowEvolutionTitle": "Evoluzione di righe multiple", diff --git a/lang/ja.json b/lang/ja.json index 42b7a75569832123d3fa47ac63cc9352c165cbf9..058718da534e15befc3824272d54bbf27bb3694c 100644 --- a/lang/ja.json +++ b/lang/ja.json @@ -347,7 +347,6 @@ "TotalRevenue": "ç·åŽç›Š", "TransitionsRowActionTooltip": "訪å•者ãŒã€ã“ã®ãƒšãƒ¼ã‚¸ã®è¡¨ç¤ºå‰å¾Œã«ä½•ã‚’ã—ã¦ã„ãŸã‹è¦‹ã¦ãã ã•ã„", "TransitionsRowActionTooltipTitle": "トランジションを開ã", - "TranslatorEmail": "hello@piwik.org", "TranslatorName": "Takafumi\/Drupal Japan - http:\/\/drupal.jp Takeshi Ueda\/Piwik Japan Team - http:\/\/piwikjapan.org", "UniquePurchases": "ユニークãªè³¼å…¥", "Unknown": "䏿˜Ž", diff --git a/lang/ka.json b/lang/ka.json index e0184221bd90bb8d068b739bfdb0f728cbdd0274..fdeca6b3125e7de2e5a68c95f140bdcaf28debed 100644 --- a/lang/ka.json +++ b/lang/ka.json @@ -158,7 +158,6 @@ "SmtpUsername": "SMTP მáƒáƒ›áƒ®áƒ›áƒ ებელი", "Table": "ცხრილი", "TagCloud": "ტეგების ერთáƒáƒ‘ლიáƒáƒ‘áƒ", - "TranslatorEmail": "kasia@pawel.com", "TranslatorName": "Kasia", "Unknown": "უცნáƒáƒ‘ი", "Username": "მáƒáƒ›áƒ®áƒ›áƒáƒ ებლის სáƒáƒ®áƒ”ლი", diff --git a/lang/ko.json b/lang/ko.json index e5851f4819ce2e30b15626b74d75ade9499c36e8..ebb2fb5d455bee8b423a794453aa272055cebea9 100644 --- a/lang/ko.json +++ b/lang/ko.json @@ -291,7 +291,6 @@ "TotalRevenue": "ì´ ìˆ˜ìµ", "TransitionsRowActionTooltip": "ì´ íŽ˜ì´ì§€ë¥¼ 조회하기 ì´ì „ì˜ ë°©ë¬¸ìž í–‰ë™ ì¶”ì ", "TransitionsRowActionTooltipTitle": "íŠ¸ë Œì§€ì…˜ 열기", - "TranslatorEmail": "soulofpure@hotmail.com, to@firejune.com", "TranslatorName": "Jong-In Kim, <a href=\"http:\/\/firejune.com\">Joon Kyoung<\/a>", "UniquePurchases": "ê³ ìœ ì£¼ë¬¸", "Unknown": "알수없ìŒ", diff --git a/lang/lt.json b/lang/lt.json index 3a6b3225357460aa3b9b7dabfa41b1c2eeed2a44..e8baa336c2455ef717d0b5050091ff74ab6f2b7e 100644 --- a/lang/lt.json +++ b/lang/lt.json @@ -215,7 +215,6 @@ "TimeAgo": "prieÅ¡ %s", "Total": "IÅ¡ viso", "TotalRevenue": "Pajamų iÅ¡ viso", - "TranslatorEmail": "info@teraxit.com", "TranslatorName": "Donatas Stonys (Blue Whale SEO)", "UniquePurchases": "UnikalÅ«s pirkimai", "Unknown": "Nežinoma", diff --git a/lang/lv.json b/lang/lv.json index 46b48fd2ad7c09d60929c9b08813ac20b973fb95..fcb71f9ab5047681b10b278f58eb2fa01b0f94af 100644 --- a/lang/lv.json +++ b/lang/lv.json @@ -216,7 +216,6 @@ "Tax": "Nodokļi", "Total": "KopÄ", "TotalRevenue": "KopÄ“jie ienÄkumi", - "TranslatorEmail": "piwik@apps.lv", "TranslatorName": "Ä’riks Remess", "UniquePurchases": "UnikÄli pirkumi", "Unknown": "NezinÄms", diff --git a/lang/nb.json b/lang/nb.json index a75e99823852f381b735266fbe5f41c281001887..a21184a4a375a5dc1612cff889e232624593ae96 100644 --- a/lang/nb.json +++ b/lang/nb.json @@ -331,7 +331,6 @@ "Total": "Totalt", "TotalRatioTooltip": "Dette er %1$s av alle %2$s %3$s.", "TotalVisitsPageviewsActionsRevenue": "(Totalt: %s besøk, %s sidevisninger, %s handlinger, %s inntekter)", - "TranslatorEmail": "hans@nordhaug.priv.no", "TranslatorName": "Hans Fredrik Nordhaug", "UniquePurchases": "Unike kjøp", "Unknown": "Ukjent", diff --git a/lang/nl.json b/lang/nl.json index e93c7b5f7b5d0e0e86bc64d1984c4036990bff39..cfa83b3724427455c953857e26bfe20515b96fb9 100644 --- a/lang/nl.json +++ b/lang/nl.json @@ -353,9 +353,9 @@ "Total": "Totaal", "TotalRatioTooltip": "Dit is %1$s van alle %2$s %3$s.", "TotalRevenue": "Totale Inkomsten", + "TotalVisitsPageviewsActionsRevenue": "(Totaal: %s bezoekers, %s paginaweergaves,%s acties, %s inkomsten)", "TransitionsRowActionTooltip": "Bekijk wat bezoekers voor en na het bekijken van deze pagina deden", "TransitionsRowActionTooltipTitle": "Open transities", - "TranslatorEmail": "martijn@mvanlaar.net, hannes@randomize.be, benkheil.abdelouali@gmail.com, info@depree.nl, richardmastop@gmail.com", "TranslatorName": "Martijn van Laar, Hannes Bossuyt, Sigge Stegeman, Taco Vader, Benkheil Abdelouali, Ko de Pree, Richard Mastop", "UniquePurchases": "Unieke Aankopen", "Unknown": "Onbekend", @@ -388,6 +388,7 @@ "WarningFileIntegrityNoManifestDeployingFromGit": "Als je Piwik vanuit Git deployed, dan is deze melding normaal.", "WarningFileIntegrityNoMd5file": "Bestand integriteit controle kon niet worden voltooid vanwege ontbrekende md5_file() functie.", "WarningPasswordStored": "%sWaarschuwing:%s Dit wachtwoord zal worden bewaard in het configuratie bestand, zichtbaar voor iedereen die toegang heeft.", + "WarningDebugOnDemandEnabled": "Tracker %s modus staat aan. Om beveilingsredenen zou dit maar voor een korte duur aan mogen staan. Om het uit te zetten, zet %s op %s in %s", "Website": "Website", "Weekly": "Wekelijks", "WeeklyReport": "wekelijks", diff --git a/lang/nn.json b/lang/nn.json index 59c149380f294a44a85eab8e8b7a6df783c6241e..401c5ec3ffce41ecf5ddf335f19dd31d53007519 100644 --- a/lang/nn.json +++ b/lang/nn.json @@ -240,7 +240,6 @@ "Tax": "MVA", "Total": "Total", "TotalRevenue": "Totale inntekter", - "TranslatorEmail": "kristoffer.egil@bonarjee.in,simonboba@gmail.com", "TranslatorName": "Kristoffer Egil Bonarjee,Simon Hansen", "UniquePurchases": "Unike sal", "Unknown": "Ukjent", diff --git a/lang/pl.json b/lang/pl.json index 7d441833e89e0d1946d2e3ba8a6f07fcf8a22084..a79d4ae5e2c1f5397b016821455d64c23c22baa5 100644 --- a/lang/pl.json +++ b/lang/pl.json @@ -323,7 +323,6 @@ "TotalRatioTooltip": "To jest %1$s wszystkich %2$s %3$s.", "TotalRevenue": "Przychody ogółem", "TransitionsRowActionTooltipTitle": "Otwarte przejÅ›cia", - "TranslatorEmail": "remigiusz.waszkiewicz@gmail.com, marcin@kowol.pl, maciej@brandnewmedia.pl, kontakt@awarchol.pl, onemac@onemac.pl, t.kornicki@lemonsky.pl", "TranslatorName": "<a href=\"http:\/\/eliteria.pl\">Remigiusz Waszkiewicz<\/a>, Marcin Kowol, Maciej ZawadziÅ„ski, Artur WarchoÅ‚,AETERNUS, Tomasz Kornicki", "UniquePurchases": "Unikalnych zakupów", "Unknown": "Nieznany", diff --git a/lang/pt-br.json b/lang/pt-br.json index 98b699c72fd4588077954eca32ac285a8f922da1..3046cadd927430ae82fbcb443aafbd2c38a97edf 100644 --- a/lang/pt-br.json +++ b/lang/pt-br.json @@ -348,7 +348,6 @@ "TotalRevenue": "Total de Revendas", "TransitionsRowActionTooltip": "Veja o que os visitantes fizeram antes e depois de ver este página", "TransitionsRowActionTooltipTitle": "Transições abertas", - "TranslatorEmail": "marcusbacus@gmail.com, mah_ferraro@yahoo.com.br, ramilani@gmail.com, rodrigues_fernando@hotmail.com", "TranslatorName": "Marcos Napier, Marcela Ferraro, Zob, Raphael Milani, Fernando Fraga Rodrigues", "UniquePurchases": "Pedidos únicos", "Unknown": "Desconhecido", diff --git a/lang/pt.json b/lang/pt.json index 28bc4c7e84da1e4adb41b7e644711961aa66bb53..156a8f63b1bb7b1a0a7b14ba91fdd497359528ee 100644 --- a/lang/pt.json +++ b/lang/pt.json @@ -235,7 +235,6 @@ "Tax": "Imposto", "Total": "Total", "TotalRevenue": "Total de Receitas", - "TranslatorEmail": "epages@epages.com.br, supsuper@gmail.com", "TranslatorName": "Rodrigo \"Acid Rain\" Kroehn, Daniel \"SupSuper\" Albano, Zob, AlexVasques", "UniquePurchases": "Compras Únicas", "Unknown": "Desconhecido", diff --git a/lang/ro.json b/lang/ro.json index 56d7246f1e439e73255d0d37fb494c92d847fe35..9720e8d035ac2d913fcc01158abce8b403886817 100644 --- a/lang/ro.json +++ b/lang/ro.json @@ -332,7 +332,6 @@ "TotalRevenue": "Venit total", "TransitionsRowActionTooltip": "Vezi ce au făcut vizitatorii până la ÅŸi după vizionarea acestei pagini", "TransitionsRowActionTooltipTitle": "Treceri Deschise", - "TranslatorEmail": "astonsoftware@gmail.com, flo[at]inboxtranslation[dot]com", "TranslatorName": "astonsoftware, <a href=\"http:\/\/inboxtranslations.com\">Inbox Translation<\/a>, <a href=\"http:\/\/marcelbejgu.ro\">Marcel Bejgu<\/a>", "UniquePurchases": "Cumparaturi unice", "Unknown": "Necunoscut", diff --git a/lang/ru.json b/lang/ru.json index c24204238597692b555d5e49ef032e629f1ed8e5..887effc9252e166a460e4371217b899296c5c45a 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -347,7 +347,6 @@ "TotalRevenue": "ÐžÐ±Ñ‰Ð°Ñ Ð¿Ñ€Ð¸Ð±Ñ‹Ð»ÑŒ", "TransitionsRowActionTooltip": "ПоÑмотрите, что поÑетители делали до и поÑле проÑмотра Ñтой Ñтраницы", "TransitionsRowActionTooltipTitle": "Открыть переходы", - "TranslatorEmail": "ademaro@ya.ru, i@codax.ru, heyheyftw@gmail.com, onix@onix.name, taktip@gmail.com, djsoldier@mail.ru", "TranslatorName": "Ademaro, <a href=\"http:\/\/jokerintertactive.ru\/\">Joker Interactive<\/a>, <a href=\"http:\/\/codax.ru\/\">Важенин Ð˜Ð»ÑŒÑ (ÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ Codax)<\/a>, Nelde Maxim, Andrey, Vadim Nekhai", "UniquePurchases": "Уникальные покупки", "Unknown": "ÐеизвеÑтно", diff --git a/lang/sk.json b/lang/sk.json index d82d31c747b030ec95b01c4f3d4c82fc043c4226..7d8d2add1352f13555b223d7282c557cba0e3b02 100644 --- a/lang/sk.json +++ b/lang/sk.json @@ -352,8 +352,7 @@ "TotalRevenue": "Celkový prÃjem", "TransitionsRowActionTooltip": "Pozrite si Äo robili návÅ¡tevnÃci pred a po prezretà si tejto stránky.", "TransitionsRowActionTooltipTitle": "Otvorené zmeny", - "TranslatorEmail": "miroslav.habara@gmail.com, zdenop@gmail.com, viktorin@automotopneu.sk", - "TranslatorName": "Miroslav Habara, Zdenko Podobný, Juraj \"Lup0\" ViktorÃn, <a href=\"http:\/\/www.coupofy.com \">Ivanka<\/a>", + "TranslatorName": "Miroslav Habara, Zdenko Podobný, Juraj \"Lup0\" ViktorÃn, Ivanka", "UniquePurchases": "Unikátne nákupy", "Unknown": "Neznáme", "Upload": "NahraÅ¥", diff --git a/lang/sl.json b/lang/sl.json index a438a29d2eb1a853d7dc45b99893c028af4b2407..d2f08eb8b28e85c1966d6e602f751a2a392135cc 100644 --- a/lang/sl.json +++ b/lang/sl.json @@ -347,7 +347,6 @@ "TotalRevenue": "Skupni prihodki", "TransitionsRowActionTooltip": "Poglejte kaj so obiskovalci poÄeli pred in potem, ko so obiskali to stran", "TransitionsRowActionTooltipTitle": "Odpri prehode", - "TranslatorEmail": "alazanski@tuts23.com, tom@hupso.com", "TranslatorName": "Aleksej Lazanski, <a href=\"http:\/\/www.hupso.com\">Tom Merc<\/a>", "UniquePurchases": "Edinstveni nakupi", "Unknown": "Neznano", diff --git a/lang/sq.json b/lang/sq.json index 310ee27f5838e32e27962085b63bf28987c5a75e..b1e3752f48ad56f2a4f1b2375a02170249a2c20f 100644 --- a/lang/sq.json +++ b/lang/sq.json @@ -346,7 +346,6 @@ "TotalRevenue": "Të ardhura Gjithsej", "TransitionsRowActionTooltip": "See what visitors did before and after viewing this page", "TransitionsRowActionTooltipTitle": "Open Transitions", - "TranslatorEmail": "besnik@programeshqip.org", "TranslatorName": "Besnik Bleta", "UniquePurchases": "Blerje Unike", "Unknown": "I panjohur", diff --git a/lang/sr.json b/lang/sr.json index a13b2b0456d984e6725835acabecbbc74ef25954..302b1c169c3c2d0087e1c1768f61e87e00c16659 100644 --- a/lang/sr.json +++ b/lang/sr.json @@ -7,6 +7,7 @@ "Add": "Dodaj", "AfterEntry": "nakon ulaska ovde", "All": "Sve", + "AllowPiwikArchivingToTriggerBrowser": "Arhiviraj izveÅ¡taje svaki put kada se prikažu u brauzeru", "AllWebsitesDashboard": "Svi sajtovi", "And": "i", "API": "API", @@ -240,6 +241,7 @@ "NotDefined": "%s nije definisano", "Note": "BeleÅ¡ka", "NotInstalled": "Nije instaliran", + "NotRecommended": "ne preporuÄuje se", "NotValid": "%s nije validno", "NumberOfVisits": "Broj poseta", "NUsers": "%s korisnici", @@ -291,10 +293,13 @@ "Price": "Cena", "ProductConversionRate": "Stopa konverzije proizvoda", "ProductRevenue": "Prihodi od proizvoda", + "Measurable": "Može da se meri", + "Measurables": "Mogu da se mere", "PurchasedProducts": "NaruÄeni proizvodi", "Quantity": "KoliÄina", "RangeReports": "KorisniÄki definisani vremenski periodi", "ReadThisToLearnMore": "%1$sProÄitajte kako biste viÅ¡e saznali.%2$s", + "Recommended": "PreporuÄeno", "RecordsToPlot": "Zapisi za prikaz", "Refresh": "Osveži prikaz", "RefreshPage": "Osvežite stranu", @@ -305,6 +310,8 @@ "ReportGeneratedFrom": "IzveÅ¡taj je generisan uz pomoć podataka iz %s.", "ReportRatioTooltip": "'%1$s' predstavlja %2$s od %3$s %4$s sa %5$s.", "Reports": "IzveÅ¡taji", + "ReportsContainingTodayWillBeProcessedAtMostEvery": "Arhiviraj izveÅ¡taje na svakih x sekundi", + "RearchiveTimeIntervalOnlyForTodayReports": "Ovo se odnosi samo na danaÅ¡nje izveÅ¡taje (ili izveÅ¡taje koji ukljuÄuju i danaÅ¡nji dan)", "ReportsWillBeProcessedAtMostEveryHour": "IzveÅ¡taji će u tom sluÄaju biti procesirani na svakih sat vremena", "RequestTimedOut": "Vreme za zahtev %s je isteklo. Molimo pokuÅ¡ajte ponovo", "Required": "%s potrebno", @@ -346,9 +353,9 @@ "Total": "Ukupno", "TotalRatioTooltip": "Ovo je %1$s od %2$s %3$s.", "TotalRevenue": "Ukupan prihod", + "TotalVisitsPageviewsActionsRevenue": "(Ukupno poseta %s, prikaza %s, akcija %s, zarada %s)", "TransitionsRowActionTooltip": "Pogledajte Å¡ta su posetioci radili pre i posle posete ovoj stranici", "TransitionsRowActionTooltipTitle": "Otvori tranzicije", - "TranslatorEmail": "petar@benke.co.uk, info@maksin.ms, nikola@codingcat.com", "TranslatorName": "Petar Benke, Branislav Maksin, Nikola Stojković", "UniquePurchases": "Jedinstvene porudžbine", "Unknown": "Nepoznato", @@ -381,6 +388,7 @@ "WarningFileIntegrityNoManifestDeployingFromGit": "Ukoliko podižete Piwik iz Git-a, ova poruka je sasvim prirodna.", "WarningFileIntegrityNoMd5file": "Proveru integriteta datoteka nije moguće okonÄati zato Å¡to nedostaje funkcija md5_file().", "WarningPasswordStored": "%sUpozorenje:%s Ova lozinka će biti upisana u datoteku sa podeÅ¡avanjima i biće vidljiva svakome ko ima pristup.", + "WarningDebugOnDemandEnabled": "UkljuÄen je %s mod za praćenje. Iz bezbednosnih razloga ovo bi trebalo da bude ukljuÄeno samo u kratkom vremenskom periodu. Ukoliko želite da ga iskljuÄite, postavite %s na %s u %s", "Website": "Sajt", "Weekly": "Nedeljno", "WeeklyReport": "nedeljno", diff --git a/lang/sv.json b/lang/sv.json index 6f6c6f0176f57a8fc2c01bb7420afd34106e4e0c..a212e0a9592d472b297544880f564e0018836ab4 100644 --- a/lang/sv.json +++ b/lang/sv.json @@ -355,7 +355,6 @@ "TotalRevenue": "Totala intäkter", "TransitionsRowActionTooltip": "Se vad besökarna gjorde före och efter att ha tittat pÃ¥ den här sidan", "TransitionsRowActionTooltipTitle": "Öppna övergÃ¥ngar", - "TranslatorEmail": "fredrik@lagun.se, tony@d0h.us", "TranslatorName": "<a href=\"http:\/\/xn--skmotoroptimering-zzb.se\/\">Sökmotoroptimering.se<\/a>, <a href=\"http:\/\/www.kampanjjakt.se\/\">Kampanjjakt.se<\/a>, <a href=\"http:\/\/www.lagun.se\/\">Fredrik Astrom<\/a>, <a href=\"http:\/\/www.dumsnal.se\/\">Tony<\/a>", "UniquePurchases": "Unika beställningar", "Unknown": "Okänt", diff --git a/lang/ta.json b/lang/ta.json index 7a178d75da58caf7077d3a05f935dca3a22e9853..111838135b97c423355b11fb3740436a5eb1277e 100644 --- a/lang/ta.json +++ b/lang/ta.json @@ -178,7 +178,6 @@ "Total": "மொதà¯à®¤à®®à¯", "TotalRevenue": "மொதà¯à®¤ வரà¯à®®à®¾à®©à®®à¯", "TransitionsRowActionTooltipTitle": "வெளிபà¯à®ªà®Ÿà¯ˆà®¯à®¾à®© மாறà¯à®±à®™à¯à®•ளà¯", - "TranslatorEmail": "hello@piwik.org", "TranslatorName": "-", "UniquePurchases": "தனிபà¯à®ªà®Ÿà¯à®Ÿ கொளà¯à®®à¯à®¤à®²à¯à®•ளà¯", "Unknown": "தெரியாத", diff --git a/lang/te.json b/lang/te.json index b216306f4f3fe1988522379d79752fd830e9f970..a18c1d9a3ebdb25a5fcdfe5b5c1609bc26e82003 100644 --- a/lang/te.json +++ b/lang/te.json @@ -100,7 +100,6 @@ "TagCloud": "à°Ÿà±à°¯à°¾à°—ౠమేఘం", "Total": "మొతà±à°¤à°‚", "TotalRevenue": "మొతà±à°¤à°‚ ఆదాయం", - "TranslatorEmail": "veeven@gmail.com", "TranslatorName": "వీవెనౠ(Veeven)", "Upload": "à°Žà°•à±à°•à°¿à°‚à°šà±", "Username": "వాడà±à°•à°°à°¿ పేరà±", diff --git a/lang/th.json b/lang/th.json index 6b9bf8e50e35c3cc6c02be92b8e68c554ce432df..4d7bd6f40200e02abccc047ed7f8669dbf068dcd 100644 --- a/lang/th.json +++ b/lang/th.json @@ -259,7 +259,6 @@ "TimeOnPage": "เวลาในหน้า", "Total": "รวม", "TotalRevenue": "รายได้รวม", - "TranslatorEmail": "jaideejung007@gmail.com", "TranslatorName": "coyoty, jaideejung007, ariesanywhere", "UniquePurchases": "Unique Purchases", "Unknown": "ไม่รู้จัà¸", diff --git a/lang/tl.json b/lang/tl.json index 0d398bacf97d937dd775fb6e82f051ca2128c9bd..1ddd6e2e1cf5392c567abe20c7c04fe2b3dfb33e 100644 --- a/lang/tl.json +++ b/lang/tl.json @@ -300,7 +300,6 @@ "Segment": "Bahagi", "SelectYesIfYouWantToSendEmailsViaServer": "Piliin ang \"Oo\" kung gusto mo o magpadala ng e-mail sa pamamagitan ng isang server sa halip na ang mga lokal na mail function.", "Table": "Talahanayan", - "TranslatorEmail": "hello@piwik.org", "TranslatorName": "<a href=\"http:\/\/intripid.com\/\">Intripid<\/a>", "View": "Tingnan", "Visitors": "Mga Bisita", diff --git a/lang/tr.json b/lang/tr.json index dd3661c316ff191c27a0baacfad1aec3b9776528..136c888bcb9e96d276165db7b6d7dddfe83722db 100644 --- a/lang/tr.json +++ b/lang/tr.json @@ -264,8 +264,7 @@ "Total": "Toplam", "TotalRevenue": "Toplam Kazanç", "TransitionsRowActionTooltipTitle": "Açık GeçiÅŸler", - "TranslatorEmail": "halfdan@xnorfz.de, dev@yazici.info, hello@emresaracoglu.com", - "TranslatorName": "Fabian Becker, Emre Yazici, Emre SaraçoÄŸlu, <a href=\"http:\/\/www.ugureskici.com\" target=\"_blank\">UÄŸur Eskici<\/a>", + "TranslatorName": "Fabian Becker, Emre Yazici, Emre SaraçoÄŸlu, <a href=\"http:\/\/www.ugureskici.com\">UÄŸur Eskici<\/a>", "UniquePurchases": "Tekil Satın Alımlar", "Unknown": "Bilinmeyen", "Upload": "Yükle", diff --git a/lang/uk.json b/lang/uk.json index b90431003faf0920fe44babfe3b30a13885fafa4..e0c33ff1f3e340a3111f27d3153564389fd4b4e7 100644 --- a/lang/uk.json +++ b/lang/uk.json @@ -156,7 +156,6 @@ "SmtpUsername": "SMTP логін", "Table": "ТаблицÑ", "TagCloud": "Хмара тегів", - "TranslatorEmail": "joseph.chereshnovsky@gmail.com, x.meglio@gmail.com", "TranslatorName": "<a href=\"http:\/\/webdevbyjoss.blogspot.com\/\">Joseph Chereshnovsky<\/a>, Anton Andriyevskyy", "Unknown": "Ðевідомо", "Username": "Логін", diff --git a/lang/vi.json b/lang/vi.json index 533ce6955dd03cf26b05a0330592b61c44a0ea34..3eb3822f505430419f759f807a3fd8045ee0cd2e 100644 --- a/lang/vi.json +++ b/lang/vi.json @@ -321,7 +321,6 @@ "TotalRevenue": "Tổng doanh thu", "TransitionsRowActionTooltip": "Xem những gì khách truy cáºp đã là m trước và sau khi xem trang nà y.", "TransitionsRowActionTooltipTitle": "mở quá trình chuyển đổi", - "TranslatorEmail": "canhrgv@gmail.com", "TranslatorName": "Do Cong Anh", "UniquePurchases": "Mua sắm duy nhất", "Unknown": "Chưa rõ", diff --git a/lang/zh-cn.json b/lang/zh-cn.json index 0c9cb40f5772ff68cc03a157090ad0a84eda6230..0e4f37d9aed71a1d97233802ecad233c02368432 100644 --- a/lang/zh-cn.json +++ b/lang/zh-cn.json @@ -7,6 +7,7 @@ "Add": "å¢žåŠ ", "AfterEntry": "进入这里之åŽ", "All": "所有", + "AllowPiwikArchivingToTriggerBrowser": "归档在æµè§ˆå™¨ä¸æŸ¥çœ‹æ—¶æŠ¥å‘Š", "AllWebsitesDashboard": "所有网站报表", "And": "å’Œ", "API": "API", @@ -323,7 +324,6 @@ "TotalRevenue": "è®¢å•æ€»é¢", "TransitionsRowActionTooltip": "查看访客æµè§ˆè¿™ä¸ªé¡µé¢ä¹‹å‰å’Œä¹‹åŽçš„æ´»åЍ", "TransitionsRowActionTooltipTitle": "显示转æ¢åˆ†æž", - "TranslatorEmail": "admin@piwik.cn", "TranslatorName": "<a href=\"http:\/\/www.piwik.cn\/\">Jack Huang<\/a>, <a href=\"http:\/\/www.binaryoung.com\/\">Young<\/a>, Marine.Ming", "UniquePurchases": "唯一身份è´ä¹°è€…", "Unknown": "未知", diff --git a/lang/zh-tw.json b/lang/zh-tw.json index fad2e58ece5ae7e908223e8a992f5dde6f2b5f29..5bf8aab1bc51a4c91eaec8f1f7c6e68fd6bc0c4b 100644 --- a/lang/zh-tw.json +++ b/lang/zh-tw.json @@ -178,7 +178,6 @@ "SmtpUsername": "SMTP 使用者å稱", "Table": "è¡¨æ ¼", "TagCloud": "標籤雲", - "TranslatorEmail": "pserics@gmail.com, php.twn@gmail.com", "TranslatorName": "<a href=\"http:\/\/www.freegroup.org\/\">Pseric<\/a>, Eros", "Unknown": "未知", "Username": "使用者å稱", diff --git a/misc/cron/archive.php b/misc/cron/archive.php index bbfa1ae39db293a39536c4f04dbd2aeff1365a2a..f719a2d3d427df745f97c857841b8748226055ce 100644 --- a/misc/cron/archive.php +++ b/misc/cron/archive.php @@ -56,6 +56,7 @@ if (Piwik\Common::isPhpCliMode()) { $console->run(); } else { // if running via web request, use CoreAdminHome.runCronArchiving method + Piwik\Common::sendHeader('Content-type: text/plain'); $_GET['module'] = 'API'; $_GET['method'] = 'CoreAdminHome.runCronArchiving'; $_GET['format'] = 'console'; // will use Content-type text/plain diff --git a/misc/log-analytics b/misc/log-analytics index 1111f60437d1a7ed1051ec0415e878099f185fd2..6b191b07d01d2766106f9e04df3c3082e1c025de 160000 --- a/misc/log-analytics +++ b/misc/log-analytics @@ -1 +1 @@ -Subproject commit 1111f60437d1a7ed1051ec0415e878099f185fd2 +Subproject commit 6b191b07d01d2766106f9e04df3c3082e1c025de diff --git a/piwik.js b/piwik.js index a2eb25b12d171fba2c6f9a8632dd3345a3b28238..4ca037a947128b7d000135922e4f5db969d5fa13 100644 --- a/piwik.js +++ b/piwik.js @@ -48,8 +48,8 @@ case 2:return"middle";case 3:return"right"}}function cb(cq){return cq.target||cq if(cs==="visit"||cs===2){aa();ah[cr]=ct}else{if(cs==="page"||cs===3){bq[cr]=ct}else{if(cs==="event"){ac[cr]=ct}}}}},getCustomVariable:function(cr,cs){var cq;if(!x(cs)){cs="visit"}if(cs==="page"||cs===3){cq=bq[cr]}else{if(cs==="event"){cq=ac[cr]}else{if(cs==="visit"||cs===2){aa();cq=ah[cr]}}}if(!x(cq)||(cq&&cq[0]==="")){return false}return cq},deleteCustomVariable:function(cq,cr){if(this.getCustomVariable(cq,cr)){this.setCustomVariable(cq,"","",cr)}},storeCustomVariablesInCookie:function(){bc=true},setLinkTrackingTimer:function(cq){bz=cq},setDownloadExtensions:function(cq){if(o(cq)){cq=cq.split("|")}aZ=cq},addDownloadExtensions:function(cr){var cq;if(o(cr)){cr=cr.split("|")}for(cq=0;cq<cr.length;cq++){aZ.push(cr[cq])}},removeDownloadExtensions:function(cs){var cr,cq=[];if(o(cs)){cs=cs.split("|")}for(cr=0;cr<aZ.length;cr++){if(A(cs,aZ[cr])===-1){cq.push(aZ[cr])}}aZ=cq},setDomains:function(cq){bB=o(cq)?[cq]:cq;bB.push(bY)},setIgnoreClasses:function(cq){aj=o(cq)?[cq]:cq},setRequestMethod:function(cq){bE=cq||bC },setRequestContentType:function(cq){aP=cq||bj},setReferrerUrl:function(cq){bG=cq},setCustomUrl:function(cq){bd=bX(cj,cq)},setDocumentTitle:function(cq){aX=cq},setAPIUrl:function(cq){az=cq},setDownloadClasses:function(cq){bp=o(cq)?[cq]:cq},setLinkClasses:function(cq){aH=o(cq)?[cq]:cq},setCampaignNameKey:function(cq){a3=o(cq)?[cq]:cq},setCampaignKeywordKey:function(cq){aU=o(cq)?[cq]:cq},discardHashTag:function(cq){al=cq},setCookieNamePrefix:function(cq){ch=cq;ah=at()},setCookieDomain:function(cq){var cr=z(cq);if(bn(cr)){ar=cr;bv()}},setCookiePath:function(cq){ci=cq;bv()},setVisitorCookieTimeout:function(cq){ay=cq*1000},setSessionCookieTimeout:function(cq){aE=cq*1000},setReferralCookieTimeout:function(cq){bh=cq*1000},setConversionAttributionFirstReferrer:function(cq){ba=cq},disableCookies:function(){ap=true;b6.cookie="0";if(b5){X()}},deleteCookies:function(){X()},setDoNotTrack:function(cr){var cq=e.doNotTrack||e.msDoNotTrack;b9=cr&&(cq==="yes"||cq==="1");if(b9){this.disableCookies()}},addListener:function(cr,cq){bL(cr,cq) },enableLinkTracking:function(cq){b7=true;if(q){bk(cq)}else{F.push(function(){bk(cq)})}},enableJSErrorTracking:function(){if(cn){return}cn=true;var cq=H.onerror;H.onerror=function(cv,ct,cs,cu,cr){aR(function(){var cw="JavaScript Errors";var cx=ct+":"+cs;if(cu){cx+=":"+cu}am(cw,cx,cv)});if(cq){return cq(cv,ct,cs,cu,cr)}return false}},disablePerformanceTracking:function(){a6=false},setGenerationTimeMs:function(cq){aM=parseInt(cq,10)},enableHeartBeatTimer:function(cq){cq=Math.max(cq,1);b3=(cq||15)*1000;if(bo!==null){bF()}},killFrame:function(){if(H.location!==H.top.location){H.top.location=H.location}},redirectFile:function(cq){if(H.location.protocol==="file:"){H.location=cq}},setCountPreRendered:function(cq){a5=cq},trackGoal:function(cq,cs,cr){aR(function(){bx(cq,cs,cr)})},trackLink:function(cr,cq,ct,cs){aR(function(){b0(cr,cq,ct,cs)})},trackPageView:function(cq,cr){ai=[];if(B(b5)){aR(function(){N(ab,az,b5)})}else{aR(function(){bl(cq,cr)})}},trackAllContentImpressions:function(){if(B(b5)){return -}aR(function(){aF(function(){var cq=n.findContentNodes();var cr=a1(cq);aq(cr,bz)})})},trackVisibleContentImpressions:function(cq,cr){if(B(b5)){return}if(!x(cq)){cq=true}if(!x(cr)){cr=750}bH(cq,cr,this);aR(function(){aV(function(){var cs=n.findContentNodes();var ct=bO(cs);aq(ct,bz)})})},trackContentImpression:function(cs,cq,cr){if(B(b5)){return}if(!cs){return}cq=cq||"Unknown";aR(function(){var ct=bZ(cs,cq,cr);a4(ct,bz)})},trackContentImpressionsWithinNode:function(cq){if(B(b5)||!cq){return}aR(function(){if(aB){aV(function(){var cr=n.findContentNodesWithinNode(cq);var cs=bO(cr);aq(cs,bz)})}else{aF(function(){var cr=n.findContentNodesWithinNode(cq);var cs=a1(cr);aq(cs,bz)})}})},trackContentInteraction:function(cs,ct,cq,cr){if(B(b5)){return}if(!cs||!ct){return}cq=cq||"Unknown";aR(function(){var cu=cl(cs,ct,cq,cr);a4(cu,bz)})},trackContentInteractionNode:function(cr,cq){if(B(b5)||!cr){return}aR(function(){var cs=a0(cr,cq);a4(cs,bz)})},trackEvent:function(cr,ct,cq,cs){aR(function(){am(cr,ct,cq,cs) -})},trackSiteSearch:function(cq,cs,cr){aR(function(){aS(cq,cs,cr)})},setEcommerceView:function(ct,cq,cs,cr){if(!x(cs)||!cs.length){cs=""}else{if(cs instanceof Array){cs=JSON2.stringify(cs)}}bq[5]=["_pkc",cs];if(x(cr)&&String(cr).length){bq[2]=["_pkp",cr]}if((!x(ct)||!ct.length)&&(!x(cq)||!cq.length)){return}if(x(ct)&&ct.length){bq[3]=["_pks",ct]}if(!x(cq)||!cq.length){cq=""}bq[4]=["_pkn",cq]},addEcommerceItem:function(cu,cq,cs,cr,ct){if(cu.length){bR[cu]=[cu,cq,cs,cr,ct]}},trackEcommerceOrder:function(cq,cu,ct,cs,cr,cv){bV(cq,cu,ct,cs,cr,cv)},trackEcommerceCartUpdate:function(cq){cg(cq)}}}function w(){return{push:S}}function b(ac,ab){var ad={};var Z,aa;for(Z=0;Z<ab.length;Z++){var X=ab[Z];ad[X]=1;for(aa=0;aa<ac.length;aa++){if(ac[aa]&&ac[aa][0]){var Y=ac[aa][0];if(X===Y){S(ac[aa]);delete ac[aa];if(ad[Y]>1){if(console!==undefined&&console&&console.error){console.error("The method "+Y+' is registered more than once in "paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers') +}aR(function(){aF(function(){var cq=n.findContentNodes();var cr=a1(cq);aq(cr,bz)})})},trackVisibleContentImpressions:function(cq,cr){if(B(b5)){return}if(!x(cq)){cq=true}if(!x(cr)){cr=750}bH(cq,cr,this);aR(function(){aV(function(){var cs=n.findContentNodes();var ct=bO(cs);aq(ct,bz)})})},trackContentImpression:function(cs,cq,cr){if(B(b5)){return}if(!cs){return}cq=cq||"Unknown";aR(function(){var ct=bZ(cs,cq,cr);a4(ct,bz)})},trackContentImpressionsWithinNode:function(cq){if(B(b5)||!cq){return}aR(function(){if(aB){aV(function(){var cr=n.findContentNodesWithinNode(cq);var cs=bO(cr);aq(cs,bz)})}else{aF(function(){var cr=n.findContentNodesWithinNode(cq);var cs=a1(cr);aq(cs,bz)})}})},trackContentInteraction:function(cs,ct,cq,cr){if(B(b5)){return}if(!cs||!ct){return}cq=cq||"Unknown";aR(function(){var cu=cl(cs,ct,cq,cr);a4(cu,bz)})},trackContentInteractionNode:function(cr,cq){if(B(b5)||!cr){return}aR(function(){var cs=a0(cr,cq);a4(cs,bz)})},logAllContentBlocksOnPage:function(){var cr=n.findContentNodes(); +var cq=n.collectContent(cr);if(console!==undefined&&console&&console.log){console.log(cq)}},trackEvent:function(cr,ct,cq,cs){aR(function(){am(cr,ct,cq,cs)})},trackSiteSearch:function(cq,cs,cr){aR(function(){aS(cq,cs,cr)})},setEcommerceView:function(ct,cq,cs,cr){if(!x(cs)||!cs.length){cs=""}else{if(cs instanceof Array){cs=JSON2.stringify(cs)}}bq[5]=["_pkc",cs];if(x(cr)&&String(cr).length){bq[2]=["_pkp",cr]}if((!x(ct)||!ct.length)&&(!x(cq)||!cq.length)){return}if(x(ct)&&ct.length){bq[3]=["_pks",ct]}if(!x(cq)||!cq.length){cq=""}bq[4]=["_pkn",cq]},addEcommerceItem:function(cu,cq,cs,cr,ct){if(cu.length){bR[cu]=[cu,cq,cs,cr,ct]}},trackEcommerceOrder:function(cq,cu,ct,cs,cr,cv){bV(cq,cu,ct,cs,cr,cv)},trackEcommerceCartUpdate:function(cq){cg(cq)}}}function w(){return{push:S}}function b(ac,ab){var ad={};var Z,aa;for(Z=0;Z<ab.length;Z++){var X=ab[Z];ad[X]=1;for(aa=0;aa<ac.length;aa++){if(ac[aa]&&ac[aa][0]){var Y=ac[aa][0];if(X===Y){S(ac[aa]);delete ac[aa];if(ad[Y]>1){if(console!==undefined&&console&&console.error){console.error("The method "+Y+' is registered more than once in "paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers') }}ad[Y]++}}}}return ac}W(H,"beforeunload",T,false);p();Date.prototype.getTimeAlias=Date.prototype.getTime;M=new E();var s=["disableCookies","setTrackerUrl","setAPIUrl","setCookiePath","setCookieDomain","setUserId","setSiteId","enableLinkTracking"];_paq=b(_paq,s);for(u=0;u<_paq.length;u++){if(_paq[u]){S(_paq[u])}}_paq=new w();d={addPlugin:function(X,Y){a[X]=Y},getTracker:function(X,Y){if(!x(Y)){Y=this.getAsyncTracker().getSiteId()}if(!x(X)){X=this.getAsyncTracker().getTrackerUrl()}return new E(X,Y)},getAsyncTracker:function(){return M}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return d})}return d}())}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}(function(){var a=(typeof AnalyticsTracker);if(a==="undefined"){AnalyticsTracker=Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{return eval("piwik_"+h)}catch(i){}return}var c,e=Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause"); if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}}; /*! @license-end */ diff --git a/plugins/API/API.php b/plugins/API/API.php index 90c7b1f45c24136eb6cbdb17df7916348eef610b..7027756ccde431ba500e55bc0a0a850d77da68d8 100644 --- a/plugins/API/API.php +++ b/plugins/API/API.php @@ -120,10 +120,15 @@ class API extends \Piwik\Plugin\API public function getSegmentsMetadata($idSites = array(), $_hideImplementationData = true) { - $segments = array(); + $isAuthenticatedWithViewAccess = Piwik::isUserHasViewAccess($idSites) && !Piwik::isUserIsAnonymous(); + $segments = array(); foreach (Dimension::getAllDimensions() as $dimension) { foreach ($dimension->getSegments() as $segment) { + if ($segment->isRequiresAtLeastViewAccess()) { + $segment->setPermission($isAuthenticatedWithViewAccess); + } + $segments[] = $segment->toArray(); } } @@ -176,50 +181,6 @@ class API extends \Piwik\Plugin\API */ Piwik::postEvent('API.getSegmentDimensionMetadata', array(&$segments, $idSites)); - $isAuthenticatedWithViewAccess = Piwik::isUserHasViewAccess($idSites) && !Piwik::isUserIsAnonymous(); - - $segments[] = array( - 'type' => 'dimension', - 'category' => Piwik::translate('General_Visit'), - 'name' => 'General_UserId', - 'segment' => 'userId', - 'acceptedValues' => 'any non empty unique string identifying the user (such as an email address or a username).', - 'sqlSegment' => 'log_visit.user_id', - 'permission' => $isAuthenticatedWithViewAccess, - ); - - $segments[] = array( - 'type' => 'dimension', - 'category' => Piwik::translate('General_Visit'), - 'name' => 'General_VisitorID', - 'segment' => 'visitorId', - 'acceptedValues' => '34c31e04394bdc63 - any 16 Hexadecimal chars ID, which can be fetched using the Tracking API function getVisitorId()', - 'sqlSegment' => 'log_visit.idvisitor', - 'sqlFilterValue' => array('Piwik\Common', 'convertVisitorIdToBin'), - 'permission' => $isAuthenticatedWithViewAccess, - ); - - $segments[] = array( - 'type' => 'dimension', - 'category' => Piwik::translate('General_Visit'), - 'name' => Piwik::translate('General_Visit') . " ID", - 'segment' => 'visitId', - 'acceptedValues' => 'Any integer. ', - 'sqlSegment' => 'log_visit.idvisit', - 'permission' => $isAuthenticatedWithViewAccess, - ); - - $segments[] = array( - 'type' => 'metric', - 'category' => Piwik::translate('General_Visit'), - 'name' => 'General_VisitorIP', - 'segment' => 'visitIp', - 'acceptedValues' => '13.54.122.1. </code>Select IP ranges with notation: <code>visitIp>13.54.122.0;visitIp<13.54.122.255', - 'sqlSegment' => 'log_visit.location_ip', - 'sqlFilterValue' => array('Piwik\Network\IPUtils', 'stringToBinaryIP'), - 'permission' => $isAuthenticatedWithViewAccess, - ); - foreach ($segments as &$segment) { $segment['name'] = Piwik::translate($segment['name']); $segment['category'] = Piwik::translate($segment['category']); @@ -628,9 +589,9 @@ class Plugin extends \Piwik\Plugin } /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles' diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php index 8cff52d8d72b488b223f53298476c17cd19e95a3..557e4c77b87cc519d1188799928ce8b7c0628d0b 100644 --- a/plugins/Actions/Actions.php +++ b/plugins/Actions/Actions.php @@ -26,9 +26,9 @@ class Actions extends \Piwik\Plugin const ACTIONS_REPORT_ROWS_DISPLAY = 100; /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'ViewDataTable.configure' => 'configureViewDataTable', diff --git a/plugins/Actions/lang/de.json b/plugins/Actions/lang/de.json index f3434e4ce6c71cfc1fa0b4b02e837079c8f39fe5..f52aaabfbe39ae6a840e982c66268019abfe6543 100644 --- a/plugins/Actions/lang/de.json +++ b/plugins/Actions/lang/de.json @@ -29,13 +29,13 @@ "EntryPagesReportDocumentation": "Dieser Bericht enthält Informationen über die Einstiegsseiten. Die Einstiegsseite ist die erste Seite, die während eines Besuches aufgerufen wird. %s Die URLs werden als Ordnerstruktur angezeigt.", "EntryPageTitles": "Titel der Einstiegsseite", "EntryPageTitlesReportDocumentation": "Dieser Bericht enthält Informationen über die Titel der Einstiegsseiten, die im angeforderten Zeitraum verwendet wurden.", - "ExitPagesReportDocumentation": "Dieser Bericht enthält Informationen über die Ausstiegsseiten. Die Ausstiegsseite ist die letzte Seite, die während eines Besuches aufgerufen wird. %s Die URLs werden als Ordnerstruktur angezeigt.", + "ExitPagesReportDocumentation": "Dieser Bericht enthält Informationen über die Ausstiegsseiten die im gewählten Zeitraum auftraten. Die Ausstiegsseite ist die letzte Seite, die während eines Besuches aufgerufen wird. %s Die URLs der Ausstiegsseiten werden als Ordnerstruktur angezeigt.", "ExitPageTitles": "Titel der Ausstiegsseite", "ExitPageTitlesReportDocumentation": "Dieser Bericht enthält Informationen über die Titel der Ausstiegsseiten, die angeforderten Zeitraum verwendet wurden.", "LearnMoreAboutSiteSearchLink": "Mehr Informationen über das Auswerten der internen Suche.", "OneSearch": "1 Suche", "OutlinkDocumentation": "Ein ausgehender Verweis ist ein Link der einen Besucher auf eine andere Website führt (auf eine andere Domain).", - "OutlinksReportDocumentation": "Dieser Bericht zeigt eine hierarchisch angeordnete Liste von ausgehenden Links, die von den Besuchern angeklickt wurden.", + "OutlinksReportDocumentation": "Dieser Bericht zeigt eine hierarchisch angeordnete Liste von ausgehenden Links, die von ihren Besuchern angeklickt wurden.", "PagesReportDocumentation": "Dieser Bericht enthält Informationen über die URLs der besuchten Seiten. %s Die Tabelle ist hierarchisch strukturiert, die URLs werden als Ordnerstruktur angezeigt.", "PageTitlesReportDocumentation": "Dieser Bericht enthält Informationen über die Seitentitel der besuchten Seiten. %s Der Seitentitel ist der HTML %s Tag, der von den meisten Browsern in ihrer Titelleiste angezeigt wird.", "PageUrls": "Seiten URL", diff --git a/plugins/Actions/lang/zh-cn.json b/plugins/Actions/lang/zh-cn.json index c3d9124725ce595ce3ce4a08ed83f21982df7ab9..45c925bd1eac00fe5dc2407c4d26eee33310b113 100644 --- a/plugins/Actions/lang/zh-cn.json +++ b/plugins/Actions/lang/zh-cn.json @@ -39,6 +39,7 @@ "PagesReportDocumentation": "本报表显示被访问的网页地å€ã€‚%s è¡¨æ ¼åˆ†çº§å½’ç±»ï¼Œç½‘å€æŒ‰ç…§ç›®å½•结构显示。", "PageTitlesReportDocumentation": "本报表显示被访问页é¢çš„æ ‡é¢˜ã€‚%s ç½‘é¡µæ ‡é¢˜ä¸º HTML %s æ ‡ç¾ï¼Œå¤šæ•°æµè§ˆå™¨æ˜¾ç¤ºä¸ºçª—å£çš„æ ‡é¢˜ã€‚", "PageUrls": "页é¢åœ°å€", + "PluginDescription": "有关页é¢è®¿é—®é‡å’Œé¡µé¢æ ‡é¢˜çš„æŠ¥å‘Šã€‚è®©ä½ è¡¡é‡ä½ 的内部网站的æœç´¢å¼•擎。自动跟踪外部链接和文件下载点击。", "SiteSearchCategories1": "本报表显示访客使用站内æœç´¢æ—¶é€‰æ‹©çš„分类。", "SiteSearchCategories2": "例如,è´ç‰©ç½‘站通常有个\"分类\"选项,访客å¯ä»¥é™åˆ¶åœ¨æŸä¸ªåˆ†ç±»ä¸æœç´¢äº§å“。", "SiteSearchFollowingPagesDoc": "当访客在网站上æœç´¢æ—¶ï¼Œä»–们是在寻找特定的页é¢ã€å†…容ã€äº§å“或者æœåŠ¡ï¼Œæœ¬æŠ¥è¡¨æ˜¾ç¤ºç«™å†…æœç´¢åŽç‚¹å‡»æœ€å¤šçš„页é¢ã€‚也就是说,显示了已有访客æœç´¢æœ€å¤šçš„页é¢ã€‚", diff --git a/plugins/Annotations/Annotations.php b/plugins/Annotations/Annotations.php index c560f56b9feb7302f23eeddaf22cdd6f4bf8776b..84fe6134a8ac076296f10d0088739bd5e5b4d8ef 100755 --- a/plugins/Annotations/Annotations.php +++ b/plugins/Annotations/Annotations.php @@ -16,9 +16,9 @@ namespace Piwik\Plugins\Annotations; class Annotations extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/BulkTracking/BulkTracking.php b/plugins/BulkTracking/BulkTracking.php index b55a681030f3dad3b05ca087c83f6c277143c020..c05f5dc5135aaa969fc2caafbb872219e263ae71 100644 --- a/plugins/BulkTracking/BulkTracking.php +++ b/plugins/BulkTracking/BulkTracking.php @@ -19,9 +19,9 @@ class BulkTracking extends \Piwik\Plugin private $requests; /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Tracker.newHandler' => 'setHandlerIfBulkRequest', diff --git a/plugins/BulkTracking/Tracker/Handler.php b/plugins/BulkTracking/Tracker/Handler.php index db368a315e2503c060d0cbc55f5d9bb9e803c47c..0d97a6b5b332a2c3a09c0b5bef9b9dcb0d8ab1ad 100644 --- a/plugins/BulkTracking/Tracker/Handler.php +++ b/plugins/BulkTracking/Tracker/Handler.php @@ -9,7 +9,11 @@ namespace Piwik\Plugins\BulkTracking\Tracker; +use Piwik\Archiver\Request; +use Piwik\AuthResult; +use Piwik\Container\StaticContainer; use Piwik\Exception\UnexpectedWebsiteFoundException; +use Piwik\Piwik; use Piwik\Tracker; use Piwik\Tracker\RequestSet; use Piwik\Tracker\TrackerConfig; @@ -40,18 +44,22 @@ class Handler extends Tracker\Handler public function process(Tracker $tracker, RequestSet $requestSet) { - $invalidRequests = 0; - foreach ($requestSet->getRequests() as $request) { + $isAuthenticated = $this->isBulkTrackingRequestAuthenticated($requestSet); + + /** @var Response $response */ + $response = $this->getResponse(); + $response->setIsAuthenticated($isAuthenticated); + + $invalidRequests = array(); + foreach ($requestSet->getRequests() as $index => $request) { try { $tracker->trackRequest($request); } catch (UnexpectedWebsiteFoundException $ex) { - $invalidRequests += 1; + $invalidRequests[] = $index; } } - /** @var Response $response */ - $response = $this->getResponse(); - $response->setInvalidCount($invalidRequests); + $response->setInvalidRequests($invalidRequests); } public function onException(Tracker $tracker, RequestSet $requestSet, Exception $e) @@ -96,4 +104,23 @@ class Handler extends Tracker\Handler return (bool) TrackerConfig::getConfigValue('bulk_requests_use_transaction'); } + private function isBulkTrackingRequestAuthenticated(RequestSet $requestSet) + { + $tokenAuth = $requestSet->getTokenAuth(); + if (empty($tokenAuth)) { + return false; + } + + Piwik::postEvent('Request.initAuthenticationObject'); + + /** @var \Piwik\Auth $auth */ + $auth = StaticContainer::get('Piwik\Auth'); + $auth->setTokenAuth($tokenAuth); + $auth->setLogin(null); + $auth->setPassword(null); + $auth->setPasswordHash(null); + $access = $auth->authenticate(); + + return $access->getCode() == AuthResult::SUCCESS_SUPERUSER_AUTH_CODE; + } } diff --git a/plugins/BulkTracking/Tracker/Response.php b/plugins/BulkTracking/Tracker/Response.php index 816397cfd09bd76a64351d1e39d5fc3a03156e25..e8d3667eeca0c85fbec859f1bd27b9995b1b43b3 100644 --- a/plugins/BulkTracking/Tracker/Response.php +++ b/plugins/BulkTracking/Tracker/Response.php @@ -15,9 +15,14 @@ use Piwik\Tracker; class Response extends Tracker\Response { /** - * @var int + * @var int[] */ - private $invalidRequests = 0; + private $invalidRequests = array(); + + /** + * @var bool + */ + private $isAuthenticated = false; /** * Echos an error message & other information, then exits. @@ -61,9 +66,11 @@ class Response extends Tracker\Response $result = array( 'status' => 'error', 'tracked' => $tracker->getCountOfLoggedRequests(), - 'invalid' => $this->invalidRequests, + 'invalid' => count($this->invalidRequests), ); + $this->addInvalidIndicesIfAuthenticated($result); + // send error when in debug mode if ($tracker->isDebugModeEnabled()) { $result['message'] = $this->getMessageFromException($e); @@ -74,15 +81,31 @@ class Response extends Tracker\Response private function formatResponse(Tracker $tracker) { - return array( + $result = array( 'status' => 'success', 'tracked' => $tracker->getCountOfLoggedRequests(), - 'invalid' => $this->invalidRequests, + 'invalid' => count($this->invalidRequests), ); + + $this->addInvalidIndicesIfAuthenticated($result); + + return $result; } - public function setInvalidCount($invalidRequests) + public function setInvalidRequests($invalidRequests) { $this->invalidRequests = $invalidRequests; } + + public function setIsAuthenticated($isAuthenticated) + { + $this->isAuthenticated = $isAuthenticated; + } + + private function addInvalidIndicesIfAuthenticated(&$result) + { + if ($this->isAuthenticated) { + $result['invalid_indices'] = $this->invalidRequests; + } + } } diff --git a/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php b/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php index 23b96776ae747f274093f42f8fc7214c15090246..19788b64aba1d68ab851e5bed95404cadf5d924c 100644 --- a/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php +++ b/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php @@ -80,9 +80,9 @@ class BulkTrackingTestCase extends IntegrationTestCase return $requestSet; } - protected function getDummyRequest($token = null) + protected function getDummyRequest($token = null, $idSites = array(1, 2)) { - $params = array(array('idsite' => '1', 'rec' => '1'), array('idsite' => '2', 'rec' => '1')); + $params = array(array('idsite' => $idSites[0], 'rec' => '1'), array('idsite' => $idSites[1], 'rec' => '1')); $params = array('requests' => $params); if (!is_null($token)) { diff --git a/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php b/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php index c495afcee1ebd0214f42ef47b2955ab54c750108..3c3366ea9dd3548944007c3a300b9b2bb867bb6c 100644 --- a/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php +++ b/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php @@ -118,7 +118,7 @@ class BulkTrackingTest extends BulkTrackingTestCase $this->assertNull($handler); } - public function test_getListHooksRegistered_shouldListenToNewTrackerEventAndCreateBulkHandler_IfBulkRequest() + public function test_registerEvents_shouldListenToNewTrackerEventAndCreateBulkHandler_IfBulkRequest() { $this->injectRawDataToBulk($this->getDummyRequest()); @@ -127,14 +127,14 @@ class BulkTrackingTest extends BulkTrackingTestCase $this->assertTrue($handler instanceof Handler); } - public function test_getListHooksRegistered_shouldListenToNewTrackerEventAndNotCreateBulkHandler_IfNotBulkRequest() + public function test_registerEvents_shouldListenToNewTrackerEventAndNotCreateBulkHandler_IfNotBulkRequest() { $handler = DefaultHandler\Factory::make(); $this->assertTrue($handler instanceof DefaultHandler); } - public function test_getListHooksRegistered_shouldListenToInitRequestSetEventAndInit_IfBulkRequest() + public function test_registerEvents_shouldListenToInitRequestSetEventAndInit_IfBulkRequest() { $this->injectRawDataToBulk($this->getDummyRequest()); diff --git a/plugins/BulkTracking/tests/Integration/TrackerTest.php b/plugins/BulkTracking/tests/Integration/TrackerTest.php index 32b26e4ec4c7ea2f5bf09cf84d693c4d2fb56ff3..a872b0524c1781ae9ad8e8b0986cb5b35aa88300 100644 --- a/plugins/BulkTracking/tests/Integration/TrackerTest.php +++ b/plugins/BulkTracking/tests/Integration/TrackerTest.php @@ -115,6 +115,30 @@ class TrackerTest extends BulkTrackingTestCase $this->assertEmpty($this->getIdVisit(3)); } + public function test_main_shouldReportInvalidIndices_IfInvalidRequestsIncluded_AndRequestAuthenticated() + { + $this->injectRawDataToBulk($this->getDummyRequest($token = Fixture::getTokenAuth(), $idSite = array(1, -100))); + + $handler = $this->getHandler(); + $handler->setResponse(new Response()); + + $response = $this->tracker->main($handler, $this->getEmptyRequestSet()); + + $this->assertEquals('{"status":"success","tracked":1,"invalid":1,"invalid_indices":[1]}', $response); + } + + public function test_main_shouldReportInvalidCount_IfInvalidRequestsIncluded_AndRequestNotAuthenticated() + { + $this->injectRawDataToBulk($this->getDummyRequest($token = null, $idSite = array(1, -100))); + + $handler = $this->getHandler(); + $handler->setResponse(new Response()); + + $response = $this->tracker->main($handler, $this->getEmptyRequestSet()); + + $this->assertEquals('{"status":"success","tracked":1,"invalid":1}', $response); + } + private function getHandler() { return Tracker\Handler\Factory::make(); @@ -130,4 +154,10 @@ class TrackerTest extends BulkTrackingTestCase return Tracker::getDatabase()->fetchRow("SELECT * FROM " . Common::prefixTable('log_visit') . " WHERE idvisit = ?", array($idVisit)); } + protected static function configureFixture($fixture) + { + parent::configureFixture($fixture); + + $fixture->createSuperUser = true; + } } \ No newline at end of file diff --git a/plugins/BulkTracking/tests/Mock/TrackerResponse.php b/plugins/BulkTracking/tests/Mock/TrackerResponse.php index 15eb209bc2a0d49511a2c5ca0c4b23afcd4c3a9b..9b6f9564d8f17d4b6c053058852294d353a29c98 100644 --- a/plugins/BulkTracking/tests/Mock/TrackerResponse.php +++ b/plugins/BulkTracking/tests/Mock/TrackerResponse.php @@ -12,10 +12,20 @@ use Piwik\Tests\Framework\Mock\Tracker\Response; class TrackerResponse extends Response { - private $invalidRequests = 0; + private $invalidRequests = array(); - public function setInvalidCount($invalidRequests) + /** + * @var bool + */ + private $isAuthenticated = false; + + public function setInvalidRequests($invalidRequests) { $this->invalidRequests = $invalidRequests; } + + public function setIsAuthenticated($isAuthenticated) + { + $this->isAuthenticated = $isAuthenticated; + } } \ No newline at end of file diff --git a/plugins/BulkTracking/tests/System/TrackerTest.php b/plugins/BulkTracking/tests/System/TrackerTest.php index 188e87e1cac2aea94527f7ae3f6f95715aa7cf21..aabef2296fa7c562726914813e76dd98d4cbc3c0 100644 --- a/plugins/BulkTracking/tests/System/TrackerTest.php +++ b/plugins/BulkTracking/tests/System/TrackerTest.php @@ -50,8 +50,15 @@ class TrackerTest extends SystemTestCase $this->tracker->setIdSite(5); $this->tracker->doTrackPageView('Test'); + $this->tracker->setIdSite(1); + $this->tracker->doTrackPageView('Test'); + + // another invalid one to further test the invalid request indices in the result + $this->tracker->setIdSite(7); + $this->tracker->doTrackPageView('Test'); + $response = $this->tracker->doBulkTrack(); - $this->assertEquals('{"status":"success","tracked":2,"invalid":1}', $response); + $this->assertEquals('{"status":"success","tracked":3,"invalid":2,"invalid_indices":[2,4]}', $response); } } \ No newline at end of file diff --git a/plugins/BulkTracking/tests/Unit/ResponseTest.php b/plugins/BulkTracking/tests/Unit/ResponseTest.php index 91b3df86da0c57a22340483964192bb94aaafff7..38c3c0cce17e25c7e442f5a75a575ef52b0bd077 100644 --- a/plugins/BulkTracking/tests/Unit/ResponseTest.php +++ b/plugins/BulkTracking/tests/Unit/ResponseTest.php @@ -83,17 +83,41 @@ class ResponseTest extends UnitTestCase $this->assertEquals('{"status":"error","tracked":5,"invalid":0}', $content); } - public function test_outputResponse_shouldOutputInvalidRequests_IfInvalidCountSet() + public function test_outputResponse_shouldIncludeInvalidIndices_IfExceptionSet_AndRequestAuthenticated() { $tracker = $this->getTrackerWithCountedRequests(); - $this->response->setInvalidCount(3); + $this->response->setInvalidRequests(array(10, 20)); + $this->response->setIsAuthenticated(true); + $this->response->outputException($tracker, new Exception('My Custom Message'), 400); + $content = $this->response->getOutput(); + + $this->assertEquals('{"status":"error","tracked":5,"invalid":2,"invalid_indices":[10,20]}', $content); + } + + public function test_outputResponse_shouldOutputInvalidRequests_IfInvalidIndicesSet_AndRequestNotAuthenticated() + { + $tracker = $this->getTrackerWithCountedRequests(); + + $this->response->setInvalidRequests(array(5, 63, 72)); $this->response->outputResponse($tracker); $content = $this->response->getOutput(); $this->assertEquals('{"status":"success","tracked":5,"invalid":3}', $content); } + public function test_outputResponse_shouldOutputInvalidRequests_IfInvalidIndicesSet_AndRequestAuthenticated() + { + $tracker = $this->getTrackerWithCountedRequests(); + + $this->response->setInvalidRequests(array(5, 63, 72)); + $this->response->setIsAuthenticated(true); + $this->response->outputResponse($tracker); + $content = $this->response->getOutput(); + + $this->assertEquals('{"status":"success","tracked":5,"invalid":3,"invalid_indices":[5,63,72]}', $content); + } + private function getTrackerWithCountedRequests() { $tracker = new Tracker(); diff --git a/plugins/Contents/Contents.php b/plugins/Contents/Contents.php index 21bebd9c0426e52334c0b74f88dd908a19725d26..10536930afcd781ef4397a0f8d5d78a2918424db 100644 --- a/plugins/Contents/Contents.php +++ b/plugins/Contents/Contents.php @@ -11,9 +11,9 @@ namespace Piwik\Plugins\Contents; class Contents extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations', diff --git a/plugins/Contents/lang/cs.json b/plugins/Contents/lang/cs.json index 7b8e562cb9bbdf199e23eabbb48cbe9887a4d5c3..596ee07a0363c469d32f7e5340e215e44d767c4a 100644 --- a/plugins/Contents/lang/cs.json +++ b/plugins/Contents/lang/cs.json @@ -1,5 +1,6 @@ { "Contents": { + "PluginDescription": "Sledovánà obsahu a bannerů vám umožňuje sledovat efektivitu (zobrazenÃ, kliky...) libovolného obsahu (bannerová reklama, obrázek, vlastnÄ› cokoliv) na vaÅ¡ich stránkách.", "Impressions": "Dojmy", "Interactions": "Interakce", "Interaction": "Interakce", diff --git a/plugins/Contents/lang/it.json b/plugins/Contents/lang/it.json index 205bb057f161ceac541cdc50a8c8aba042cd25f0..7acc091c7c16559acb3b08a2b141c1c16abc41f7 100644 --- a/plugins/Contents/lang/it.json +++ b/plugins/Contents/lang/it.json @@ -4,7 +4,7 @@ "Impressions": "Impressioni", "Interactions": "Interazioni", "Interaction": "Interazione", - "InteractionRate": "Rapporto di Interazione", + "InteractionRate": "Rapporto di Interazioni", "ContentName": "Nome Contenuto", "Contents": "Contenuti" } diff --git a/plugins/Contents/lang/sr.json b/plugins/Contents/lang/sr.json index cee8a9bc5f3b3e05dfe8eb471db4dae7a6bf3db0..14c1c78659bf57dd2d9cdc89a6c6ae4031cfa38a 100644 --- a/plugins/Contents/lang/sr.json +++ b/plugins/Contents/lang/sr.json @@ -1,5 +1,6 @@ { "Contents": { + "PluginDescription": "Praćenje sadržaja i banera vam omogućuje merenje performansi (prikaza, klikova, CTR) bilo kog dela sadržaja vaÅ¡ih stranica (reklama, slika itd.).", "Impressions": "Prikazi", "Interactions": "Interakcije", "Interaction": "Interakcija", diff --git a/plugins/CoreAdminHome/Commands/OptimizeArchiveTables.php b/plugins/CoreAdminHome/Commands/OptimizeArchiveTables.php new file mode 100644 index 0000000000000000000000000000000000000000..9a09dd7350920908a3178adbe97874a135356972 --- /dev/null +++ b/plugins/CoreAdminHome/Commands/OptimizeArchiveTables.php @@ -0,0 +1,124 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\CoreAdminHome\Commands; + +use Piwik\Common; +use Piwik\DataAccess\ArchiveTableCreator; +use Piwik\Date; +use Piwik\Db; +use Piwik\Plugin\ConsoleCommand; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Administration command that optimizes archive tables (even if they use InnoDB). + */ +class OptimizeArchiveTables extends ConsoleCommand +{ + const ALL_TABLES_STRING = 'all'; + const CURRENT_MONTH_STRING = 'now'; + + protected function configure() + { + $this->setName('database:optimize-archive-tables'); + $this->setDescription("Runs an OPTIMIZE TABLE query on the specified archive tables."); + $this->addArgument("dates", InputArgument::IS_ARRAY | InputArgument::REQUIRED, + "The months of the archive tables to optimize. Use '" . self::ALL_TABLES_STRING. "' for all dates or '" . + self::CURRENT_MONTH_STRING . "' to optimize the current month only."); + $this->addOption('dry-run', null, InputOption::VALUE_NONE, 'For testing purposes.'); + $this->setHelp("This command can be used to ease or automate maintenance. Instead of manually running " + . "OPTIMIZE TABLE queries, the command can be used.\n\nYou should run the command if you find your " + . "archive tables grow and do not shrink after purging. Optimizing them will reclaim some space."); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $dryRun = $input->getOption('dry-run'); + + $tableMonths = $this->getTableMonthsToOptimize($input); + + foreach ($tableMonths as $month) { + $this->optimizeTable($output, $dryRun, 'archive_numeric_' . $month); + $this->optimizeTable($output, $dryRun, 'archive_blob_' . $month); + } + } + + private function optimizeTable(OutputInterface $output, $dryRun, $table) + { + $output->write("Optimizing table '$table'..."); + + if ($dryRun) { + $output->write("[dry-run, not optimising table]"); + } else { + Db::optimizeTables(Common::prefixTable($table), $force = true); + } + + $output->writeln("Done."); + } + + private function getTableMonthsToOptimize(InputInterface $input) + { + $dateSpecifier = $input->getArgument('dates'); + if (count($dateSpecifier) === 1) { + $dateSpecifier = reset($dateSpecifier); + + if ($dateSpecifier == self::ALL_TABLES_STRING) { + return $this->getAllArchiveTableMonths(); + } else if ($dateSpecifier == self::CURRENT_MONTH_STRING) { + $now = Date::factory('now'); + return array(ArchiveTableCreator::getTableMonthFromDate($now)); + } else if (strpos($dateSpecifier, 'last') === 0) { + $lastN = substr($dateSpecifier, 4); + if (!ctype_digit($lastN)) { + throw new \Exception("Invalid lastN specifier '$lastN'. The end must be an integer, eg, last1 or last2."); + } + + if ($lastN <= 0) { + throw new \Exception("Invalid lastN value '$lastN'."); + } + + return $this->getLastNTableMonths((int)$lastN); + } + } + + $tableMonths = array(); + foreach ($dateSpecifier as $date) { + $date = Date::factory($date); + $tableMonths[] = ArchiveTableCreator::getTableMonthFromDate($date); + } + return $tableMonths; + } + + private function getAllArchiveTableMonths() + { + $tableMonths = array(); + foreach (ArchiveTableCreator::getTablesArchivesInstalled() as $table) { + $tableMonths[] = ArchiveTableCreator::getDateFromTableName($table); + } + return $tableMonths; + } + + /** + * @param int $lastN + * @return string[] + */ + private function getLastNTableMonths($lastN) + { + $now = Date::factory('now'); + + $result = array(); + for ($i = 0; $i < $lastN; ++$i) { + $date = $now->subMonth($i + 1); + $result[] = ArchiveTableCreator::getTableMonthFromDate($date); + } + return $result; + } +} diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php index cb8f862643777d5a620c33775eee66bdfd32938e..32aac9e5f5d21b7e670f36e4c62411a645698001 100644 --- a/plugins/CoreAdminHome/Controller.php +++ b/plugins/CoreAdminHome/Controller.php @@ -280,6 +280,8 @@ class Controller extends ControllerAdmin */ public function trackingCodeGenerator() { + Piwik::checkUserHasSomeViewAccess(); + $view = new View('@CoreAdminHome/trackingCodeGenerator'); $this->setBasicVariablesView($view); $view->topMenu = MenuTop::getInstance()->getMenu(); @@ -292,7 +294,7 @@ class Controller extends ControllerAdmin $view->defaultReportSiteName = Site::getNameFor($view->idSite); $view->defaultSiteRevenue = \Piwik\Metrics\Formatter::getCurrencySymbol($view->idSite); - $view->maxCustomVariables = CustomVariables::getMaxCustomVariables(); + $view->maxCustomVariables = CustomVariables::getNumUsableCustomVariables(); $allUrls = APISitesManager::getInstance()->getSiteUrlsFromId($view->idSite); if (isset($allUrls[1])) { diff --git a/plugins/CoreAdminHome/CoreAdminHome.php b/plugins/CoreAdminHome/CoreAdminHome.php index 4c0c1c3fc3cb8e8b648e1445dff0a9b6099d04df..75f1230cd68942a0e3635a2d758c77daa947b734 100644 --- a/plugins/CoreAdminHome/CoreAdminHome.php +++ b/plugins/CoreAdminHome/CoreAdminHome.php @@ -18,9 +18,9 @@ use Piwik\Settings\UserSetting; class CoreAdminHome extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/CoreAdminHome/OptOutManager.php b/plugins/CoreAdminHome/OptOutManager.php index 321002f5e0fc4b01fa9187d98d505c4ca1511b81..78d142c14184c591ae890d05b2a3b63b6512fc4e 100644 --- a/plugins/CoreAdminHome/OptOutManager.php +++ b/plugins/CoreAdminHome/OptOutManager.php @@ -208,7 +208,6 @@ class OptOutManager $this->view->trackVisits = $trackVisits; $this->view->nonce = Nonce::getNonce('Piwik_OptOut', 3600); $this->view->language = $lang; - $this->view->isSafari = $this->isUserAgentSafari(); $this->view->showConfirmOnly = Common::getRequestVar('showConfirmOnly', false, 'int'); $this->view->reloadUrl = $reloadUrl; $this->view->javascripts = $this->getJavascripts(); @@ -226,13 +225,4 @@ class OptOutManager { return $this->doNotTrackHeaderChecker; } - - /** - * @return bool - */ - protected function isUserAgentSafari() - { - $userAgent = @$_SERVER['HTTP_USER_AGENT'] ?: ''; - return strpos($userAgent, 'Safari') !== false && strpos($userAgent, 'Chrome') === false; - } } diff --git a/plugins/CoreAdminHome/lang/cs.json b/plugins/CoreAdminHome/lang/cs.json index 94d2a6573f4a2b237c80d10a6cac2d13ca176c2d..5a2d6ca5d84d26215a8256be74c66168a5bfd468 100644 --- a/plugins/CoreAdminHome/lang/cs.json +++ b/plugins/CoreAdminHome/lang/cs.json @@ -87,6 +87,7 @@ "YouAreOptedIn": "AktuálnÄ› nejste vylouÄen.", "YouAreOptedOut": "AktuálnÄ› jste vylouÄen.", "YouMayOptOut": "Zde se můžete rozhodnout, zda se smà ve VaÅ¡em prohlÞeÄi ukládat jedineÄná analytická data “ Cookies†, a zda umožnÃte provozovateli webové stránky shromažÄovat a analyzovat různé statistické údaje.", - "YouMayOptOutBis": "Pokud jste se rozhodli že ne, kliknÄ›te na pÅ™iložený odkaz pro uloženà deaktivaÄnÃho Cookie ve VaÅ¡em prohlÞeÄi." + "YouMayOptOutBis": "Pokud jste se rozhodli že ne, kliknÄ›te na pÅ™iložený odkaz pro uloženà deaktivaÄnÃho Cookie ve VaÅ¡em prohlÞeÄi.", + "OptingYouOut": "VyluÄovánÃ, prosÃm Äekejte..." } } \ No newline at end of file diff --git a/plugins/CoreAdminHome/lang/de.json b/plugins/CoreAdminHome/lang/de.json index fbd725ca50d002d8df7c63468222aaf4fc821898..7073dda82ce0077571d54092ab73d2af2584d50b 100644 --- a/plugins/CoreAdminHome/lang/de.json +++ b/plugins/CoreAdminHome/lang/de.json @@ -77,7 +77,7 @@ "StableReleases": "Sollte Piwik eine wichtige Komponente Ihres Unternehmens sein, empfehlen wir Ihnen den letzen stabilen Release zu verwenden. Sollten Sie die letze Beta Version verwenden und einen Fehler finden oder einen Vorschlag haben, %slesen Sie bitte hier%s.", "SystemPluginSettings": "Globale Plugin Einstellungen", "TrackAGoal": "Ein Ziel aufzeichnen", - "TrackingCode": "Tracking Code", + "TrackingCode": "Tracking-Code", "TrustedHostConfirm": "Wollen Sie wirklich den Vertrauten Piwik Hostnamen ändern?", "TrustedHostSettings": "Vertrauter Piwik Hostname", "UpdateSettings": "Aktualisierungseinstellungen", diff --git a/plugins/CoreAdminHome/lang/nl.json b/plugins/CoreAdminHome/lang/nl.json index 854a25c56ddb18b6ccc86c0c7cd665e563f16b74..d060e3b961dfc52210af9c9cf842c72c4733b387 100644 --- a/plugins/CoreAdminHome/lang/nl.json +++ b/plugins/CoreAdminHome/lang/nl.json @@ -1,5 +1,6 @@ { "CoreAdminHome": { + "AddNewTrustedHost": "Voeg een nieuwe betrouwbare server toe", "Administration": "Administratie", "ArchivingSettings": "Archivering instellingen", "BrandingSettings": "Logo instellingen", diff --git a/plugins/CoreAdminHome/lang/pt.json b/plugins/CoreAdminHome/lang/pt.json index e05620a5e90857a3e71c52efcf215501d96132ea..dfa1bce60174d9929a6bca5ac1dc248c9d87985b 100644 --- a/plugins/CoreAdminHome/lang/pt.json +++ b/plugins/CoreAdminHome/lang/pt.json @@ -3,11 +3,14 @@ "Administration": "Administração", "ArchivingSettings": "A arquivar definições", "BrandingSettings": "Definições de Marca", + "CheckReleaseGetVersion": "Utilize a versão beta mais recente", "ClickHereToOptIn": "Clique aqui para fazer opt-in.", "ClickHereToOptOut": "Clique aqui para fazer opt-out.", "CustomLogoHelpText": "Você pode personalizar o logotipo Piwik que será exibido na interface do utilizador e relatórios de e-mail.", "EmailServerSettings": "Definições do servidor de email", "ForBetaTestersOnly": "Para testadores de versões beta apenas", + "ImageTracking": "Monitorização por imagem", + "ImageTrackingLink": "Link de monitorização por imagem", "ImportingServerLogs": "A Importar Relatórios de Servidor", "InvalidPluginsWarning": "Os seguintes plugins não são compatÃveis com %1$s e não puderam ser carregados: %2$s.", "JavaScriptTracking": "Monitorização por JavaScript", @@ -20,8 +23,8 @@ "JSTracking_PageCustomVarsDesc": "Por exemplo, com nome de variável \"Categoria\" e valor \"Documentos Brancos\".", "JSTracking_VisitorCustomVars": "Siga variáveis personalizadas para este visitante.", "JSTracking_VisitorCustomVarsDesc": "Por exemplo, com nome de variável \"Tipo\" e valor \"Cliente\".", - "LatestBetaRelease": "A mais recente publicação beta", - "LatestStableRelease": "A mais recente versão estável", + "LatestBetaRelease": "A publicação beta mais recente", + "LatestStableRelease": "A versão estável mais recente", "FileUploadDisabled": "Carregar ficheiros não se encontra ativo nas sua configuração PHP. Para carregar o seu logótipo personalizado por favor defina %s em php.ini e reinicie o seu servidor.", "LogoUpload": "Selecione um logo para fazer upload", "FaviconUpload": "Selecione um Favicon para carregar", @@ -39,9 +42,12 @@ "PluginSettingReadNotAllowed": "Não lhe é permitido ler o valor da definição \"%s\" no plugin \"%s\"", "PluginSettingsIntro": "Aqui pode alterar as definições dos seguintes plugins de terceiros:", "PluginSettingsValueNotAllowed": "O valor para o campo \"%s\" no plugin \"%s\" não é permitido", - "SendPluginUpdateCommunicationHelp": "Será enviado correio eletrónico para os Super Utilizadores quando existir uma nova versão disponÃvel para um plugin.", + "SendPluginUpdateCommunication": "Enviar um email quando uma actualização ao plugin estiver disponÃvel", + "SendPluginUpdateCommunicationHelp": "Será enviado um email para os Super Utilizadores quando existir uma nova versão disponÃvel para um plugin.", "StableReleases": "Se o Piwik é uma parte crÃtica do seu negócio, recomendamos que utilize a versão estável mais recente. Se você usa a mais recente versão beta e julga que encontrou um erro ou possui uma sugestão, por favor %sveja aqui%s.", + "TrackAGoal": "Monitorize um objectivo", "TrackingCode": "Código de monitorização", + "UpdateSettings": "Actualizar definições", "UseCustomLogo": "Use um logo personalizado.", "YouAreOptedIn": "Actualmente está activa a opção opt-in", "YouAreOptedOut": "Actualmente está activa a opção opt-out", diff --git a/plugins/CoreAdminHome/lang/sr.json b/plugins/CoreAdminHome/lang/sr.json index 966c26cd7cac6ca951638e639c6733b5aa7b218b..ff67ef6990a3c19e8d63499fcbc947c1b10cdd26 100644 --- a/plugins/CoreAdminHome/lang/sr.json +++ b/plugins/CoreAdminHome/lang/sr.json @@ -1,8 +1,10 @@ { "CoreAdminHome": { + "AddNewTrustedHost": "Dodavanje novog hosta od poverenja", "Administration": "Administracija", "ArchivingSettings": "PodeÅ¡avanja arhiviranja", "BrandingSettings": "PodeÅ¡avanje brendiranja", + "CheckReleaseGetVersion": "Koristi poslednju beta verziju", "ClickHereToOptIn": "Kliknite za ukljuÄenje.", "ClickHereToOptOut": "Kliknite za izuzeće.", "CustomLogoFeedbackInfo": "Ako podesite Piwik logo, možda biste bili zainteresovani da sakrijete %s link iz glavnog menija. Da to uradite, možete iskljuÄiti Feedback plugin iz %sOrganizuj Plugin-ove%s.", @@ -70,6 +72,7 @@ "PluginSettingsIntro": "Ovde možete promeniti podeÅ¡avanja sledećih dodataka:", "PluginSettingsValueNotAllowed": "Vrednost za polje \"%s\" u dodatku \"%s\" nije dozvoljena", "PluginSettingsSaveFailed": "GreÅ¡ka prilikom snimanja podeÅ¡avanja dodataka", + "SendPluginUpdateCommunication": "PoÅ¡alji mejl svaki put kada se pojavi nova verzija dodatka", "SendPluginUpdateCommunicationHelp": "Mejl će biti poslat superkorisnicima kad god se pojavi nova verzija ovog dodatka.", "StableReleases": "Ukoliko Piwik Äini kritiÄan deo vaÅ¡eg poslovanja, preporuÄujemo vam da koristite poslednju stabilnu verziju. Ukoliko koristite poslednju beta verziju i naÄ‘ete bag ili imate predlog, molimo vas %spogledajte ovde%s.", "SystemPluginSettings": "Sistemska podeÅ¡avanja dodataka", diff --git a/plugins/CoreAdminHome/stylesheets/generalSettings.less b/plugins/CoreAdminHome/stylesheets/generalSettings.less index d17480f5f1320529e727f19c00aea63afa9220d7..eac16b6c4c01bd7a1a8ddec95b4a7003167661e3 100644 --- a/plugins/CoreAdminHome/stylesheets/generalSettings.less +++ b/plugins/CoreAdminHome/stylesheets/generalSettings.less @@ -7,6 +7,11 @@ margin-right: 0 !important; } +// hide PHP is deprecated notification in UI test +.uiTest [notification-id="PHP53VersionCheck"] { + display: none !important; +} + #content.admin { margin: 0 0 0 260px; padding: 0 0 40px; diff --git a/plugins/CoreAdminHome/templates/optOut.twig b/plugins/CoreAdminHome/templates/optOut.twig index 8caf45c668f059db5566cbdb506eb20135232b59..e0eef925719f8b7674d616a27a4db216726f6782 100644 --- a/plugins/CoreAdminHome/templates/optOut.twig +++ b/plugins/CoreAdminHome/templates/optOut.twig @@ -10,19 +10,21 @@ {% endif %} <script> - function submitForm(event, form, loadInNewWindow) { - event.preventDefault(); + function submitForm(e, form) { + if (e.preventDefault) { // IE8 and below do not support preventDefault + e.preventDefault(); + } - if (loadInNewWindow) { - var newWindow = window.open(form.action + '&time=' + Date.now()); + var now = Date.now ? Date.now() : (+(new Date())), // Date.now does not exist in < IE8 + newWindow = window.open(form.action + '&time=' + now); - // when the new window loads, reload this page - newWindow.addEventListener('unload', function () { + setInterval(function () { + if (newWindow.closed) { window.location.reload(); - }, false); - } else { - form.submit(); - } + } + }, 1000); + + return false; } </script> @@ -49,7 +51,8 @@ # otherwise we try to close the window immediately. #} {% if showConfirmOnly %} - <p>{{ 'CoreAdminHome_OptingYouOut'|translate }}</p><script>window.close();</script> + <p>{{ 'CoreAdminHome_OptingYouOut'|translate }}</p> + <script>window.close();</script> <noscript> {% endif %} @@ -68,11 +71,10 @@ <br/><br/> {% if not showConfirmOnly %} - {% set loadInNewWindow = isSafari and trackVisits %} - <form method="post" action="?{{ queryParameters|url_encode|raw }}" {% if loadInNewWindow %}target="_blank"{% endif %}> + <form method="post" action="?module=CoreAdminHome&action=optOut{% if language %}&language={{ language }}{% endif %}&setCookieInNewWindow=1" target="_blank"> <input type="hidden" name="nonce" value="{{ nonce }}" /> <input type="hidden" name="fuzz" value="{{ "now"|date }}" /> - <input onclick="submitForm(event, this.form, {{ loadInNewWindow|default(0) }});" type="checkbox" id="trackVisits" name="trackVisits" {% if trackVisits %}checked="checked"{% endif %} /> + <input onclick="submitForm(event, this.form);" type="checkbox" id="trackVisits" name="trackVisits" {% if trackVisits %}checked="checked"{% endif %} /> <label for="trackVisits"><strong> {% if trackVisits %} {{ 'CoreAdminHome_YouAreOptedIn'|translate }} {{ 'CoreAdminHome_ClickHereToOptOut'|translate }} diff --git a/plugins/CoreAdminHome/tests/Integration/Commands/OptimizeArchiveTablesTest.php b/plugins/CoreAdminHome/tests/Integration/Commands/OptimizeArchiveTablesTest.php new file mode 100644 index 0000000000000000000000000000000000000000..2fe67b98f2d430d7894bde8cb1d20dbbb5ced189 --- /dev/null +++ b/plugins/CoreAdminHome/tests/Integration/Commands/OptimizeArchiveTablesTest.php @@ -0,0 +1,92 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\CoreAdminHome\tests\Integration\Commands; + +use Piwik\DataAccess\ArchiveTableCreator; +use Piwik\Date; +use Piwik\Tests\Framework\TestCase\ConsoleCommandTestCase; + + +/** + * @group Core + */ +class OptimizeArchiveTablesTest extends ConsoleCommandTestCase +{ + public static function setUpBeforeClass() + { + parent::setUpBeforeClass(); + + ArchiveTableCreator::getNumericTable(Date::factory('2015-01-01')); + ArchiveTableCreator::getNumericTable(Date::factory('2015-02-02')); + ArchiveTableCreator::getNumericTable(Date::factory('2015-03-03')); + } + + /** + * @dataProvider getDatesToTest + */ + public function test_Command_OptimizesCorrectTables($dates, $expectedOptimizedTableDates) + { + $code = $this->applicationTester->run(array( + 'command' => 'database:optimize-archive-tables', + 'dates' => $dates, + '--dry-run' => true, + )); + + $this->assertEquals(0, $code, $this->getCommandDisplayOutputErrorMessage()); + + $output = $this->applicationTester->getDisplay(); + + preg_match_all('/Optimizing table \'([^\']+)\'/', $output, $matches); + $tablesOptimized = $matches[1]; + + $expectedOptimizedTables = array(); + foreach ($expectedOptimizedTableDates as $date) { + $expectedOptimizedTables[] = 'archive_numeric_' . $date; + $expectedOptimizedTables[] = 'archive_blob_' . $date; + } + + $this->assertEquals($expectedOptimizedTables, $tablesOptimized); + } + + public function getDatesToTest() + { + return array( + array( + array('all'), + array('2015_01', '2015_02', '2015_03'), + ), + + array( + array('now'), + array(date('Y_m')), + ), + + array( + array('2015-01-01', '2015-02-03', '2014-01-01', '2013-05-12', '2015-05-05'), + array('2015_01', '2015_02', '2014_01', '2013_05', '2015_05'), + ), + + array( + array('last1'), + array(Date::factory('now')->subMonth(1)->toString('Y_m')), + ), + + array( + array('last5'), + array( + Date::factory('now')->subMonth(1)->toString('Y_m'), + Date::factory('now')->subMonth(2)->toString('Y_m'), + Date::factory('now')->subMonth(3)->toString('Y_m'), + Date::factory('now')->subMonth(4)->toString('Y_m'), + Date::factory('now')->subMonth(5)->toString('Y_m'), + ), + ), + ); + } +} \ No newline at end of file diff --git a/plugins/CoreConsole/Commands/CoreArchiver.php b/plugins/CoreConsole/Commands/CoreArchiver.php index 40fc7d4c71f2cd183d1e431b2213af7a545e8091..7f1eb6107d2f590124c3d3bf37f2eb818c84075a 100644 --- a/plugins/CoreConsole/Commands/CoreArchiver.php +++ b/plugins/CoreConsole/Commands/CoreArchiver.php @@ -100,7 +100,7 @@ class CoreArchiver extends ConsoleCommand $command->addOption('force-idsites', null, InputOption::VALUE_OPTIONAL, 'If specified, archiving will be processed only for these Sites Ids (comma separated)'); $command->addOption('force-periods', null, InputOption::VALUE_OPTIONAL, - "If specified, archiving will be processed only for these Periods (comma separated eg. day,week,month)"); + "If specified, archiving will be processed only for these Periods (comma separated eg. day,week,month,year,range)"); $command->addOption('force-date-last-n', null, InputOption::VALUE_REQUIRED, "This script calls the API with period=lastN. You can force the N in lastN by specifying this value."); $command->addOption('force-date-range', null, InputOption::VALUE_OPTIONAL, diff --git a/plugins/CoreHome/Columns/UserId.php b/plugins/CoreHome/Columns/UserId.php index d4c438c47a35ab0c0a4d39a0bf02307348362b21..bbe7e44c8ffa7aa0691f9fbcb32100d0683a8e83 100644 --- a/plugins/CoreHome/Columns/UserId.php +++ b/plugins/CoreHome/Columns/UserId.php @@ -12,7 +12,9 @@ use Piwik\Cache; use Piwik\DataTable; use Piwik\DataTable\Map; use Piwik\Period\Range; +use Piwik\Piwik; use Piwik\Plugin\Dimension\VisitDimension; +use Piwik\Plugin\Segment; use Piwik\Plugins\VisitsSummary\API as VisitsSummaryApi; use Piwik\Tracker\Request; use Piwik\Tracker\Visitor; @@ -33,6 +35,19 @@ class UserId extends VisitDimension */ protected $columnType = 'VARCHAR(200) NULL'; + protected function configureSegments() + { + $segment = new Segment(); + $segment->setType('dimension'); + $segment->setSegment('userId'); + $segment->setCategory(Piwik::translate('General_Visit')); + $segment->setName('General_UserId'); + $segment->setAcceptedValues('any non empty unique string identifying the user (such as an email address or a username).'); + $segment->setSqlSegment('log_visit.user_id'); + $segment->setRequiresAtLeastViewAccess(true); + $this->addSegment($segment); + } + /** * @param Request $request * @param Visitor $visitor diff --git a/plugins/CoreHome/Columns/VisitId.php b/plugins/CoreHome/Columns/VisitId.php new file mode 100644 index 0000000000000000000000000000000000000000..9add50888a0e7bab8763b87397cc8cb30e650974 --- /dev/null +++ b/plugins/CoreHome/Columns/VisitId.php @@ -0,0 +1,35 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\CoreHome\Columns; + +use Piwik\Piwik; +use Piwik\Plugin\Dimension\VisitDimension; +use Piwik\Plugin\Segment; + +/** + * Dimension for the log_visit.idvisit column. This column is added in the CREATE TABLE + * statement, so this dimension exists only to configure a segment. + */ +class VisitId extends VisitDimension +{ + protected function configureSegments() + { + parent::configureSegments(); + + $segment = new Segment(); + $segment->setType('dimension'); + $segment->setCategory(Piwik::translate('General_Visit')); + $segment->setName(Piwik::translate('General_Visit') . " ID"); + $segment->setSegment('visitId'); + $segment->setAcceptedValues('Any integer.'); + $segment->setSqlSegment('log_visit.idvisit'); + $segment->setRequiresAtLeastViewAccess(true); + $this->addSegment($segment); + } +} \ No newline at end of file diff --git a/plugins/CoreHome/Columns/VisitIp.php b/plugins/CoreHome/Columns/VisitIp.php new file mode 100644 index 0000000000000000000000000000000000000000..6dd2e5d6b983f43aeb354950e189c3f2adea9afe --- /dev/null +++ b/plugins/CoreHome/Columns/VisitIp.php @@ -0,0 +1,36 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\CoreHome\Columns; + +use Piwik\Piwik; +use Piwik\Plugin\Dimension\VisitDimension; +use Piwik\Plugin\Segment; + +/** + * Dimension for the log_visit.location_ip column. This column is added in the CREATE TABLE + * statement, so this dimension exists only to configure a segment. + */ +class VisitIp extends VisitDimension +{ + protected function configureSegments() + { + parent::configureSegments(); + + $segment = new Segment(); + $segment->setType('metric'); + $segment->setCategory(Piwik::translate('General_Visit')); + $segment->setName('General_VisitorIP'); + $segment->setSegment('visitIp'); + $segment->setAcceptedValues('13.54.122.1. </code>Select IP ranges with notation: <code>visitIp>13.54.122.0;visitIp<13.54.122.255'); + $segment->setSqlSegment('log_visit.location_ip'); + $segment->setSqlFilterValue(array('Piwik\Network\IPUtils', 'stringToBinaryIP')); + $segment->setRequiresAtLeastViewAccess(true); + $this->addSegment($segment); + } +} diff --git a/plugins/CoreHome/Columns/VisitorId.php b/plugins/CoreHome/Columns/VisitorId.php new file mode 100644 index 0000000000000000000000000000000000000000..ce797ae57a045a5d8b60d33a7bed20485367234c --- /dev/null +++ b/plugins/CoreHome/Columns/VisitorId.php @@ -0,0 +1,36 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\CoreHome\Columns; + +use Piwik\Piwik; +use Piwik\Plugin\Dimension\VisitDimension; +use Piwik\Plugin\Segment; + +/** + * Dimension for the log_visit.idvisitor column. This column is added in the CREATE TABLE + * statement, so this dimension exists only to configure a segment. + */ +class VisitorId extends VisitDimension +{ + protected function configureSegments() + { + parent::configureSegments(); + + $segment = new Segment(); + $segment->setType('dimension'); + $segment->setCategory(Piwik::translate('General_Visit')); + $segment->setName('General_VisitorID'); + $segment->setSegment('visitorId'); + $segment->setAcceptedValues('34c31e04394bdc63 - any 16 Hexadecimal chars ID, which can be fetched using the Tracking API function getVisitorId()'); + $segment->setSqlSegment('log_visit.idvisitor'); + $segment->setSqlFilterValue(array('Piwik\Common', 'convertVisitorIdToBin')); + $segment->setRequiresAtLeastViewAccess(true); + $this->addSegment($segment); + } +} diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php index f28a2c7f8e0a63ab26e55b8de97295650b132099..45a3dde104b5323ff886abc060b1c41b60be0451 100644 --- a/plugins/CoreHome/CoreHome.php +++ b/plugins/CoreHome/CoreHome.php @@ -14,9 +14,9 @@ namespace Piwik\Plugins\CoreHome; class CoreHome extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/CoreHome/angularjs/enrichedheadline/enrichedheadline.directive.html b/plugins/CoreHome/angularjs/enrichedheadline/enrichedheadline.directive.html index 279972330c9ba00862d772383846a55eee23746c..9bbdc8f8f46fb881217bfe52a01faad74043bd3e 100644 --- a/plugins/CoreHome/angularjs/enrichedheadline/enrichedheadline.directive.html +++ b/plugins/CoreHome/angularjs/enrichedheadline/enrichedheadline.directive.html @@ -1,6 +1,6 @@ <div class="enrichedHeadline" ng-mouseenter="view.showIcons=true" ng-mouseleave="view.showIcons=false"> - <span ng-show="!editUrl" class="title" ng-transclude></span> + <div ng-show="!editUrl" class="title" ng-transclude></div> <a ng-show="editUrl" class="title" href="{{ editUrl }}" title="{{ 'CoreHome_ClickToEditX'|translate:featureName }}" ng-transclude></a> diff --git a/plugins/CoreHome/angularjs/enrichedheadline/enrichedheadline.directive.less b/plugins/CoreHome/angularjs/enrichedheadline/enrichedheadline.directive.less index d6a78db26f0af83476fd0a20ad2f4d980949379c..054c0bdba0024f8e90dd9888d8addbf886876639 100644 --- a/plugins/CoreHome/angularjs/enrichedheadline/enrichedheadline.directive.less +++ b/plugins/CoreHome/angularjs/enrichedheadline/enrichedheadline.directive.less @@ -11,6 +11,7 @@ .title { color: @color-black-piwik; + display:inline-block; } .inlineHelp { diff --git a/plugins/CoreHome/javascripts/broadcast.js b/plugins/CoreHome/javascripts/broadcast.js index 51b2a8a64d7d7d6b3c789c7da9bb2d6e25568214..de34b45a900e48af902b277634b944ed5ae01832 100644 --- a/plugins/CoreHome/javascripts/broadcast.js +++ b/plugins/CoreHome/javascripts/broadcast.js @@ -409,11 +409,23 @@ var broadcast = { */ loadAjaxContent: function (urlAjax) { if (typeof piwikMenu !== 'undefined') { - piwikMenu.activateMenu( - broadcast.getParamValue('module', urlAjax), - broadcast.getParamValue('action', urlAjax), - broadcast.getParamValue('idGoal', urlAjax) || broadcast.getParamValue('idDashboard', urlAjax) - ); + // we have to use a $timeout since menu groups are displayed using an angular directive, and on initial + // page load, the dropdown will not be completely rendered at this point. using 2 $timeouts (to push + // the menu activation logic to the end of the event queue twice), seems to work. + angular.element(document).injector().invoke(function ($timeout) { + $timeout(function () { + $timeout(function () { + piwikMenu.activateMenu( + broadcast.getParamValue('module', urlAjax), + broadcast.getParamValue('action', urlAjax), + { + idGoal: broadcast.getParamValue('idGoal', urlAjax), + idDashboard: broadcast.getParamValue('idDashboard', urlAjax) + } + ); + }); + }); + }); } if(broadcast.getParamValue('module', urlAjax) == 'API') { diff --git a/plugins/CoreHome/javascripts/menu.js b/plugins/CoreHome/javascripts/menu.js index 85e25f2334b35d9cb2f5230db3fa2a7dc892c585..2f5e16c827fb57e147ee4e5915c80b0658a2b665 100644 --- a/plugins/CoreHome/javascripts/menu.js +++ b/plugins/CoreHome/javascripts/menu.js @@ -53,53 +53,41 @@ menu.prototype = this.menuNode.find("li:has(ul),li#Searchmenu").hover(this.overMainLI, this.outMainLI); this.menuNode.find("li:has(ul),li#Searchmenu").focusin(this.overMainLI); - // add id to all li menu to support menu identification. - // for all sub menu we want to have a unique id based on their module and action - // for main menu we want to add just the module as its id. - this.menuNode.find('li').each(function () { - var link = $(this).find('a'); - if (!link) { - return; - } - var href = link.attr('href'); - if (!href) { - return; - } - var url = href.substr(1); - - var module = broadcast.getValueFromUrl('module', url); - var action = broadcast.getValueFromUrl('action', url); - - var moduleId = broadcast.getValueFromUrl("idGoal", url) || broadcast.getValueFromUrl("idDashboard", url); - var main_menu = $(this).parent().hasClass('Menu-tabList') ? true : false; - if (main_menu) { - $(this).attr({id: module}); - } - // if there's a idGoal or idDashboard, use this in the ID - else if (moduleId != '') { - $(this).attr({id: module + '_' + action + '_' + moduleId}); - } - else { - $(this).attr({id: module + '_' + action}); - } - }); - this.menuNode.find('a.menuItem').click(this.onItemClick); menu.prototype.adaptSubMenuHeight(); }, - activateMenu: function (module, action, id) { + activateMenu: function (module, action, params) { + params = params || {}; + params.module = module; + params.action = action; + this.menuNode.find('li').removeClass('sfHover').removeClass('sfActive'); - var $li = this.getSubmenuID(module, id, action); - var mainLi = $("#" + module); - if (!mainLi.length) { - mainLi = $li.parents('li'); - } + var $activeLink = this.menuNode.find('a').filter(function () { + var url = $(this).attr('href'); + if (!url) { + return false; + } - mainLi.addClass('sfActive').addClass('sfHover'); + for (var key in params) { + if (!params.hasOwnProperty(key) + || !params[key] + ) { + continue; + } + + var actual = broadcast.getValueFromHash(key, url); + if (actual != params[key]) { + return false; + } + } + + return true; + }); - $li.addClass('sfHover'); + $activeLink.closest('li').addClass('sfHover'); + $activeLink.closest('li.menuTab').addClass('sfActive').addClass('sfHover'); }, // getting the right li is a little tricky since goals uses idGoal, and overview is index. diff --git a/plugins/CoreHome/lang/de.json b/plugins/CoreHome/lang/de.json index 78c8cb02e3e0c5db7da69e005ef57ee7565ae3f5..242254d453dcb5a291f9f2fa34ad7e93c5ef1f85 100644 --- a/plugins/CoreHome/lang/de.json +++ b/plugins/CoreHome/lang/de.json @@ -22,7 +22,7 @@ "InjectedHostEmailBody": "Hallo, ich habe gerade versucht Piwik aufzurufen und erhielt eine Warnung, dass der Hostname unbekannt ist.", "InjectedHostEmailSubject": "Piwik wurde mit einem unbekannten Hostnamen aufgerufen: %s", "InjectedHostNonSuperUserWarning": "%1$sHier klicken um Piwik sicher zu betreten%2$s und die Warnung zu entfernen. Zusätzlich können Sie den Piwik Administrator kontaktieren und ihn auf dieses Problem hinweisen (%3$sHier klicken um eine E-Mail zu senden%4$s).", - "InjectedHostSuperUserWarning": "Piwik könnte falsch konfiguriert sein (zum Beispiel wenn Piwik vor kurzem auf einen neuen Server oder eine neue URL umgezogen ist). Sie können entweder %1$shier klicken und %2$s als gültigen Hostnamen (wenn Sie ihm vertrauen) hinzufügen%3$s, oder %4$shier klicken um Piwik unter %5$s sicher zu betreten%6$s", + "InjectedHostSuperUserWarning": "Piwik könnte falsch konfiguriert sein (zum Beispiel wenn Piwik vor kurzem auf einen neuen Server oder eine neue URL umgezogen ist). Sie können entweder %1$shier klicken und %2$s als gültigen Hostnamen hinzufügen (wenn Sie ihm vertrauen)%3$s, oder %4$shier klicken um Piwik unter %5$s sicher zu betreten%6$s", "InjectedHostWarningIntro": "Sie betreten Piwik aktuell von %1$s, allerdings wurde Piwik so konfiguriert, dass es unter dieser Adresse läuft: %2$s.", "JavascriptDisabled": "JavaScript muss aktiviert sein, um die Standardansicht von Piwik zu benutzen.<br\/>Es scheint jedoch so, als wäre JavaScript bei Ihnen deaktiviert bzw. würde nicht von Ihrem Browser unterstützt.<br \/>Um die Standardansicht zu benutzen, aktivieren Sie JavaScript in Ihren Browseroptionen und %1$sversuchen Sie es erneut%2$s.<br \/>", "LongMonthFormat": "%longYear%, %longMonth%", diff --git a/plugins/CoreHome/lang/gl.json b/plugins/CoreHome/lang/gl.json index d3fc1e2057563e90377503cf5e8edee3ce006481..595d0684b569d565df996c81f5804c6ad0e07b9a 100644 --- a/plugins/CoreHome/lang/gl.json +++ b/plugins/CoreHome/lang/gl.json @@ -2,10 +2,6 @@ "CoreHome": { "CategoryNoData": "Non hai datos nesta categorÃa. Intente \"Incluir todos os datos\".", "PageOf": "%1$s de %2$s", - "PeriodDay": "DÃa", - "PeriodMonth": "Mes", - "PeriodWeek": "Semana", - "PeriodYear": "Ano", "ShowJSCode": "Ver o código javascript para insertar" } } \ No newline at end of file diff --git a/plugins/CoreHome/lang/sk.json b/plugins/CoreHome/lang/sk.json index 5ae8ec23c1a626dd92c2a73ba0f1a64d70ae76b7..8afc1bb7e4ca4eaf72082a597df8b2d8bfbe4e29 100644 --- a/plugins/CoreHome/lang/sk.json +++ b/plugins/CoreHome/lang/sk.json @@ -56,4 +56,4 @@ "UndoPivotBySubtable": "Tento report bol pivotovaný %s Naspäť pivot", "PivotBySubtable": "Tento report nebol pivotovaný %s PivotovaÅ¥ podľa %s" } -} +} \ No newline at end of file diff --git a/plugins/CoreHome/templates/_dataTableFooter.twig b/plugins/CoreHome/templates/_dataTableFooter.twig index 39ad2b0da0559a6b7c99c7b5bc4d36b383aef50f..7401baee10ca70e590dc20bc735d4221c19e0fcd 100644 --- a/plugins/CoreHome/templates/_dataTableFooter.twig +++ b/plugins/CoreHome/templates/_dataTableFooter.twig @@ -31,7 +31,7 @@ {% for footerIconGroup in footerIcons %} <div class="tableIconsGroup"> <span class="{{ footerIconGroup.class }}"> - {% for footerIcon in footerIconGroup.buttons %} + {% for footerIcon in footerIconGroup.buttons if footerIcon.icon %} {% set isActiveEcommerceView = clientSideParameters.abandonedCarts is defined and ((footerIcon.id == 'ecommerceOrder' and clientSideParameters.abandonedCarts == 0) or (footerIcon.id == 'ecommerceAbandonedCart' and clientSideParameters.abandonedCarts == 1)) %} diff --git a/plugins/CoreHome/templates/_menu.twig b/plugins/CoreHome/templates/_menu.twig index 6baf228bf2a9d21eb1d6f4c8215cd17571ead9f5..8ec928eb4e5e3ded18cb82af250efda71f8a6000 100644 --- a/plugins/CoreHome/templates/_menu.twig +++ b/plugins/CoreHome/templates/_menu.twig @@ -12,7 +12,7 @@ <li> <div piwik-menudropdown show-search="true" menu-title="{{ name|translate|e('html_attr') }}"> {% for item in group.getItems %} - <a class="item" + <a class="item menuItem" href='#{{ item.url|urlRewriteWithParameters|slice(1) }}' {% if item.tooltip %}title="{{ item.tooltip|e('html_attr') }}"{% endif %}> {{ item.name|translate }} @@ -38,7 +38,7 @@ <ul class="Menu-tabList"> {% for level1,level2 in menu %} - <li id="{% if level2._url is defined %}{{ _self.getId(level2._url) }}{% endif %}"> + <li id="{% if level2._url is defined %}{{ _self.getId(level2._url) }}{% endif %}" class="menuTab"> <a class="menuItem" {% if level2._url is defined %}href="#{{ _self.getFirstUrl(level2._url) }}"{% endif %}> {{ level1|translate }} <span class="hidden"> diff --git a/plugins/CoreHome/templates/getMultiRowEvolutionPopover.twig b/plugins/CoreHome/templates/getMultiRowEvolutionPopover.twig index 6159dad5bef23c088353f8ca53f0dc665168bcdc..ec6d8b82c560ddd5f17568a04f0d338e4407567e 100644 --- a/plugins/CoreHome/templates/getMultiRowEvolutionPopover.twig +++ b/plugins/CoreHome/templates/getMultiRowEvolutionPopover.twig @@ -23,7 +23,7 @@ </tr> {% endfor %} </table> - <a href="#" class="rowevolution-startmulti btn btn-flat">» {{ 'RowEvolution_PickAnotherRow'|translate }}</a> + <a href="#" class="rowevolution-startmulti">» {{ 'RowEvolution_PickAnotherRow'|translate }}</a> </div> {% if availableMetrics|length > 1 %} <div class="metric-selectbox"> diff --git a/plugins/CoreHome/templates/getRowEvolutionPopover.twig b/plugins/CoreHome/templates/getRowEvolutionPopover.twig index 133c94e58b90cde096961520900c00e59cff72fa..8b95dd680f2fc813f1a823e9a6d54321c2ae8e36 100644 --- a/plugins/CoreHome/templates/getRowEvolutionPopover.twig +++ b/plugins/CoreHome/templates/getRowEvolutionPopover.twig @@ -34,6 +34,6 @@ <div class="alert alert-info"> {{ 'RowEvolution_CompareDocumentation'|translate|raw }} </div> - <a href="#" class="rowevolution-startmulti btn btn-flat">» {{ 'RowEvolution_PickARow'|translate }}</a> + <a href="#" class="rowevolution-startmulti">» {{ 'RowEvolution_PickARow'|translate }}</a> </div> </div> diff --git a/plugins/CorePluginsAdmin/CorePluginsAdmin.php b/plugins/CorePluginsAdmin/CorePluginsAdmin.php index f51e2147859ba1bce6694c6f69fa0a29d600328e..6e03b3b46aa8a6f610762e310467af854325ff24 100644 --- a/plugins/CorePluginsAdmin/CorePluginsAdmin.php +++ b/plugins/CorePluginsAdmin/CorePluginsAdmin.php @@ -14,9 +14,9 @@ use Piwik\Plugin; class CorePluginsAdmin extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/CorePluginsAdmin/lang/cs.json b/plugins/CorePluginsAdmin/lang/cs.json index 723d752bf543ab758c48538764b9996f3c4f3fbc..fa4527c3532d9429248a2e294e2a00578825c7ad 100644 --- a/plugins/CorePluginsAdmin/lang/cs.json +++ b/plugins/CorePluginsAdmin/lang/cs.json @@ -38,6 +38,10 @@ "LastCommitTime": "(Poslednà zmÄ›na %s)", "LastUpdated": "Naposledy aktualizován", "LicenseHomepage": "Licencovat domovskou stránku", + "LikeThisPlugin": "LÃbà se vám tento zásuvný modul?", + "ConsiderDonating": "Zvažte dar", + "CommunityContributedPlugin": "Toto je zásuvný modul poskytnutý komunitou, který je zadarmo.", + "ConsiderDonatingCreatorOf": "Zvažte dar pro tvůrce %s", "PluginsExtendPiwik": "Zásuvné moduly rozÅ¡iÅ™ujà funkce Piwiku.", "OncePluginIsInstalledYouMayActivateHere": "Po instalaci zásuvného modulu jej můžete povolit nebo zakázat zde.", "Marketplace": "Obchod", diff --git a/plugins/CorePluginsAdmin/lang/de.json b/plugins/CorePluginsAdmin/lang/de.json index 0bd5c45146e74e271fb673e3dee8f6567636884a..d8b68512b5cd7346bcd8a2d7ab07957a2e3e7717 100644 --- a/plugins/CorePluginsAdmin/lang/de.json +++ b/plugins/CorePluginsAdmin/lang/de.json @@ -38,6 +38,10 @@ "LastCommitTime": "(letzter Commit %s)", "LastUpdated": "Letzte Aktualisierung", "LicenseHomepage": "Lizenz-Website", + "LikeThisPlugin": "Finden Sie dieses Plugin nützlich?", + "ConsiderDonating": "Spenden Sie", + "CommunityContributedPlugin": "Dies ist ein Plugin dass aus der Community kostenlos zur Verfügung gestellt wird.", + "ConsiderDonatingCreatorOf": "Bitte ziehen Sie es in Erwägung dem Ersteller von %s etwas zu spenden.", "PluginsExtendPiwik": "Plugins erweitern die Funktionalität von Piwik.", "OncePluginIsInstalledYouMayActivateHere": "Sobald ein Plugin installiert wurde, können Sie es hier aktivieren bzw. deaktivieren.", "Marketplace": "Marketplace", diff --git a/plugins/CorePluginsAdmin/lang/el.json b/plugins/CorePluginsAdmin/lang/el.json index 558391dc4e76dafe4f1b218555002969772dd0be..6de0af46c95742c8a7aa28a9c4766c51f3957fc1 100644 --- a/plugins/CorePluginsAdmin/lang/el.json +++ b/plugins/CorePluginsAdmin/lang/el.json @@ -38,6 +38,10 @@ "LastCommitTime": "(τελευταία οÏιστικοποίηση %s)", "LastUpdated": "Τελευταία ΕνημÎÏωση", "LicenseHomepage": "Ιστοσελίδα Άδειας", + "LikeThisPlugin": "Σας αÏÎσει το Ï€Ïόσθετο αυτό;", + "ConsiderDonating": "Σκεφτείτε να δωÏήσετε", + "CommunityContributedPlugin": "Αυτό είναι Îνα Ï€Ïόσθετο για το οποίο συνεισφÎÏει η κοινότητα και το λαμβάνετε δωÏεάν.", + "ConsiderDonatingCreatorOf": "ΠαÏακαλοÏμε σκεφτείτε να δωÏήσετε στον δημιουÏγό του %s", "PluginsExtendPiwik": "Τα Ï€Ïόσθετα (Plugins) επεκτείνουν και διευÏÏνουν την λειτουÏγικότητα του Piwik.", "OncePluginIsInstalledYouMayActivateHere": "Î‘Ï†Î¿Ï ÎµÎ³ÎºÎ±Ï„Î±ÏƒÏ„Î±Î¸ÎµÎ¯ Îνα Ï€Ïόσθετο, μποÏείτε να το ενεÏγοποιήσετε ή να το απενεÏγοποιήσετε εδώ.", "Marketplace": "ΑγοÏά", diff --git a/plugins/CorePluginsAdmin/lang/fr.json b/plugins/CorePluginsAdmin/lang/fr.json index 40ee460f11524b893661a47f41246cc1c91a6b2b..b77d4977193eef4ff355c0c97d5f1cf205019181 100644 --- a/plugins/CorePluginsAdmin/lang/fr.json +++ b/plugins/CorePluginsAdmin/lang/fr.json @@ -38,6 +38,10 @@ "LastCommitTime": "(dernier archivage %s)", "LastUpdated": "A jour", "LicenseHomepage": "Page de la licence", + "LikeThisPlugin": "Vous aimez ce composant?", + "ConsiderDonating": "Pensez à effectuer une donation.", + "CommunityContributedPlugin": "Ceci est un composant de la communauté, mis à votre disposition gratuitement.", + "ConsiderDonatingCreatorOf": "Pensez à effectuer une donation au créateur de %s", "PluginsExtendPiwik": "Les plugins étendent et ajoutent des fonctionnalités à Piwik.", "OncePluginIsInstalledYouMayActivateHere": "Une fois un plugin installé, vous pouvez l'activer ou le désactiver ici.", "Marketplace": "Marché", diff --git a/plugins/CorePluginsAdmin/lang/hi.json b/plugins/CorePluginsAdmin/lang/hi.json index 25a07433389a049d6a2258c6a90ebd15a28b3205..48e1d13d8eb0de057523d801fb761f9381e4f1c9 100644 --- a/plugins/CorePluginsAdmin/lang/hi.json +++ b/plugins/CorePluginsAdmin/lang/hi.json @@ -26,6 +26,7 @@ "PluginsManagement": "पà¥à¤²à¤—इनà¥à¤¸ पà¥à¤°à¤¬à¤‚धन", "PluginVersionInfo": "%1$s से %2$s", "Status": "सà¥à¤¥à¤¿à¤¤à¤¿", + "Support": "सहयोग", "Theme": "विषय", "Themes": "विषय", "ThemesDescription": "थीमà¥à¤¸, Piwik यूजर इंटरफेस के सà¥à¤µà¤°à¥‚प को बदल सकते हैं और अपने विशà¥à¤²à¥‡à¤·à¤£ रिपोरà¥à¤Ÿà¥‹à¤‚ के आनंद के लिठà¤à¤• पूरी तरह से नठदृशà¥à¤¯ का अनà¥à¤à¤µ पà¥à¤°à¤¦à¤¾à¤¨ करते हैं.", diff --git a/plugins/CorePluginsAdmin/lang/it.json b/plugins/CorePluginsAdmin/lang/it.json index efa1a9cf5a51b6c87293c447f743468ab0035169..940cab2c178cc61f6edf5e916437789367869ba9 100644 --- a/plugins/CorePluginsAdmin/lang/it.json +++ b/plugins/CorePluginsAdmin/lang/it.json @@ -38,6 +38,10 @@ "LastCommitTime": "ultima consegna %s", "LastUpdated": "Ultimo aggiornamento", "LicenseHomepage": "Homepage della Licenza", + "LikeThisPlugin": "Ti piace questo plugin?", + "ConsiderDonating": "Considera una donazione", + "CommunityContributedPlugin": "Questo è un plugin finanziato dalla comunità che ti viene fornito gratis", + "ConsiderDonatingCreatorOf": "Considera di fare una donazione al creatore di %s", "PluginsExtendPiwik": "I plugins estendono e ampliano la funzionalità di Piwik.", "OncePluginIsInstalledYouMayActivateHere": "Una volta installato un plugin, qui puoi attivarlo o disattivarlo.", "Marketplace": "Marketplace", diff --git a/plugins/CorePluginsAdmin/lang/sr.json b/plugins/CorePluginsAdmin/lang/sr.json index d667d2d788d77b9068cfd646f774647a8fe6f566..472bc60e1ffae66dd6f3b2f7a4ba541f9e82dfa9 100644 --- a/plugins/CorePluginsAdmin/lang/sr.json +++ b/plugins/CorePluginsAdmin/lang/sr.json @@ -38,6 +38,10 @@ "LastCommitTime": "(poslednja promena %s)", "LastUpdated": "Poslednje ažuriranje", "LicenseHomepage": "Podaci o licenci", + "LikeThisPlugin": "SviÄ‘a vam se ovaj dodatak?", + "ConsiderDonating": "Razmislite o donaciji", + "CommunityContributedPlugin": "Ovaj dodatak je stvorila zajednica i podarila vam ga besplatno.", + "ConsiderDonatingCreatorOf": "Molimo vas da razmislite o donaciji za %s", "PluginsExtendPiwik": "Dodaci proÅ¡iruju funkcionalnost Piwik-a.", "OncePluginIsInstalledYouMayActivateHere": "Jednom instaliran dodatak se ovde može aktivirati ili deaktivirati.", "Marketplace": "Market", diff --git a/plugins/CoreUpdater/Commands/Update.php b/plugins/CoreUpdater/Commands/Update.php index 0f5566e3946a944026dd0e931585a5bbb70a914c..4b4d79e2879718258224c22381223231ff1a779b 100644 --- a/plugins/CoreUpdater/Commands/Update.php +++ b/plugins/CoreUpdater/Commands/Update.php @@ -312,6 +312,8 @@ class Update extends ConsoleCommand $dimensions[] = $componentName; } } + + sort($dimensions); return $dimensions; } diff --git a/plugins/CoreUpdater/Controller.php b/plugins/CoreUpdater/Controller.php index 47a06f226d77cd9cd032d194f88c9d0521808e4f..df52b296aaa46e00c9c2068c31a42846287dcd48 100644 --- a/plugins/CoreUpdater/Controller.php +++ b/plugins/CoreUpdater/Controller.php @@ -246,6 +246,8 @@ class Controller extends \Piwik\Plugin\Controller } Filesystem::deleteAllCacheOnUpdate(); + sort($dimensionsToUpdate); + $view->coreError = $this->coreError; $view->warningMessages = $this->warningMessages; $view->errorMessages = $this->errorMessages; diff --git a/plugins/CoreUpdater/CoreUpdater.php b/plugins/CoreUpdater/CoreUpdater.php index 8fc3f0d92f38f59769bb8f10e1a0f5f9c4d3e557..737017d0484f3bcb1ff33bd45f2abc63f1e95be3 100644 --- a/plugins/CoreUpdater/CoreUpdater.php +++ b/plugins/CoreUpdater/CoreUpdater.php @@ -26,9 +26,9 @@ use Piwik\Version; class CoreUpdater extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Request.dispatchCoreAndPluginUpdatesScreen' => 'dispatch', diff --git a/plugins/CoreUpdater/lang/cs.json b/plugins/CoreUpdater/lang/cs.json index 3ae62a436efb78e065980c2e8c110580fb252bd5..056866b09b5f7df2eda7211407b953ed42647570 100644 --- a/plugins/CoreUpdater/lang/cs.json +++ b/plugins/CoreUpdater/lang/cs.json @@ -56,6 +56,8 @@ "CloudHosting": "Hostovánà v Cloudu", "Updating": "Aktualizuji", "UpdateUsingHttpsFailed": "Staženà nejnovÄ›jšà verze Piwik pomocà zabezpeÄeného HTTPS pÅ™ipojenà se nezdaÅ™ilo kvůli následujÃcà chybÄ›:", + "UpdateUsingHttpsFailedHelp": "ProÄ to selhalo? Staženà poslednà verze Piwiku pÅ™es bezpeÄné HTTPS spojenà mohlo selhat z mnoha důvodů, napÅ™Ãklad kvůli chybÄ› sÃtÄ›, pomalému pÅ™ipojenÃ, nebo Å¡patné systémové konfiguraci. MÄ›jte na vÄ›domÃ, že to může rovněž znamenat, že váš server je cÃlem MITM útoku a nÄ›kdo se pokoušà podvrhnout aktualizaci Å¡kodlivou verzà Piwiku.", + "UpdateUsingHttpsFailedHelpWhatToDo": "DoporuÄuje se zkusit staženà pomocà zabezpeÄeného HTTPS spojenÃ, protože bránà MITM útokům.", "UsingHttps": "za použità zabezpeÄeného HTTPS pÅ™ipojenà (doporuÄeno)", "UsingHttp": "za použità nezabezpeÄeného HTTP pÅ™ipojenÃ", "UpgradeComplete": "Aktualizace je kompletnÃ!", diff --git a/plugins/CoreUpdater/lang/de.json b/plugins/CoreUpdater/lang/de.json index 8932809f8c57ad53f6348125c34c2b54f8cc7ce1..cac12eb08d590ca5fef67af3114efa773716d2d7 100644 --- a/plugins/CoreUpdater/lang/de.json +++ b/plugins/CoreUpdater/lang/de.json @@ -59,7 +59,7 @@ "UpdateUsingHttpsFailedHelp": "Warum hat das nicht funktioniert? Der Download der aktuellen Piwik Version (über eine sichere HTTPS Verbindung) kann aus verschiedenen Gründen misslingen, zum Beispiel wegen einem Netzwerkfehler, langsamer Internetverbindung oder falscher Systemkonfiguration. Beachten Sie, dass Ihr Server auch Ziel einer Man-in-the-Middle Attacke sein könnte und jemand versucht, das Update mit einer schadhaften Version von Piwik zu ersetzen.", "UpdateUsingHttpsFailedHelpWhatToDo": "Es ist empfohlen den Download erneut mit einer sicheren HTTPS-Verbindung zu versuchen, da dies MITM-Attacken verhindert.", "UsingHttps": "die sichere HTTPS Verbindung nützen (empfohlen)", - "UsingHttp": "die nicht sichere HTTP Verbindung nützen", + "UsingHttp": "die nicht sichere HTTP-Verbindung verwenden", "UpgradeComplete": "Aktualisierung abgeschlossen!", "UpgradePiwik": "Piwik aktualisieren", "VerifyingUnpackedFiles": "Die entpackten Dateien werden überprüft", diff --git a/plugins/CoreVisualizations/CoreVisualizations.php b/plugins/CoreVisualizations/CoreVisualizations.php index da8fbe9f9418aa36a34f7006348a5b03b3ff149b..9a5f88e7eccd718eb2919d96e51e73e6dd422e39 100644 --- a/plugins/CoreVisualizations/CoreVisualizations.php +++ b/plugins/CoreVisualizations/CoreVisualizations.php @@ -21,9 +21,9 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/JqplotDataGenerat class CoreVisualizations extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/CoreVisualizations/stylesheets/jqplot.css b/plugins/CoreVisualizations/stylesheets/jqplot.css index 6ef4a5ce820abb27178548c969fabb0fb5044083..f074320c438b606e690175adc2af66c02f23a30b 100644 --- a/plugins/CoreVisualizations/stylesheets/jqplot.css +++ b/plugins/CoreVisualizations/stylesheets/jqplot.css @@ -80,6 +80,17 @@ text-align: left; } +#Piwik_Popover .rowevolution .alert-info { + margin-left: 0px; +} + +a.rowevolution-startmulti { + color: #4183C4 !important; + font-size: 12px; + font-weight: bold; + text-decoration: none; +} + .rowevolution h2 { font-size: 16px; margin: 0; diff --git a/plugins/CustomAlerts b/plugins/CustomAlerts index 3ec4fe5b6e894096d6215734dd5e2cb750f364ce..3aa24d4543573fabeb4c34cfaff4c1c590af9b7b 160000 --- a/plugins/CustomAlerts +++ b/plugins/CustomAlerts @@ -1 +1 @@ -Subproject commit 3ec4fe5b6e894096d6215734dd5e2cb750f364ce +Subproject commit 3aa24d4543573fabeb4c34cfaff4c1c590af9b7b diff --git a/plugins/CustomVariables/Archiver.php b/plugins/CustomVariables/Archiver.php index b613f65d02de89488e1c78e8864a1ea0cbc961b7..bc43cbc8ddfdf245ccc588d8f291cd0a9bb38474 100644 --- a/plugins/CustomVariables/Archiver.php +++ b/plugins/CustomVariables/Archiver.php @@ -66,7 +66,7 @@ class Archiver extends \Piwik\Plugin\Archiver { $this->dataArray = new DataArray(); - $maxCustomVariables = CustomVariables::getMaxCustomVariables(); + $maxCustomVariables = CustomVariables::getNumUsableCustomVariables(); for ($i = 1; $i <= $maxCustomVariables; $i++) { $this->aggregateCustomVariable($i); } diff --git a/plugins/CustomVariables/Commands/Info.php b/plugins/CustomVariables/Commands/Info.php index bf300e357a25c19e87ad24b4cfcc70707555a297..e5dfce5d5b7360ad9fe60df41654c67faaa566f8 100644 --- a/plugins/CustomVariables/Commands/Info.php +++ b/plugins/CustomVariables/Commands/Info.php @@ -28,7 +28,7 @@ class Info extends ConsoleCommand protected function execute(InputInterface $input, OutputInterface $output) { - $maxVars = CustomVariables::getMaxCustomVariables(); + $maxVars = CustomVariables::getNumUsableCustomVariables(); if ($this->hasEverywhereSameAmountOfVariables()) { $this->writeSuccessMessage($output, array( diff --git a/plugins/CustomVariables/CustomVariables.php b/plugins/CustomVariables/CustomVariables.php index 64a7c9ea05a0dbb0a0210d76f76bf1ed8344bc50..b8a57ad6a65fd3152d2ab9d76b8295f6fbad8e57 100644 --- a/plugins/CustomVariables/CustomVariables.php +++ b/plugins/CustomVariables/CustomVariables.php @@ -16,9 +16,9 @@ use Piwik\Tracker; class CustomVariables extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', @@ -40,7 +40,7 @@ class CustomVariables extends \Piwik\Plugin { $customVariables = array(); - $maxCustomVariables = self::getMaxCustomVariables(); + $maxCustomVariables = self::getNumUsableCustomVariables(); for ($i = 1; $i <= $maxCustomVariables; $i++) { if (!empty($details['custom_var_k' . $i])) { @@ -63,25 +63,41 @@ class CustomVariables extends \Piwik\Plugin return 200; } - public static function getMaxCustomVariables() + /** + * Returns the number of available custom variables that can be used. + * + * "Can be used" is identifed by the minimum number of available custom variables across all relevant tables. Eg + * if there are 6 custom variables installed in log_visit but only 5 in log_conversion, we consider only 5 custom + * variables as usable. + * @return int + */ + public static function getNumUsableCustomVariables() { $cache = Cache::getCacheGeneral(); - $cacheKey = 'CustomVariables.MaxNumCustomVariables'; + $cacheKey = 'CustomVariables.NumUsableCustomVariables'; if (!array_key_exists($cacheKey, $cache)) { - $maxCustomVar = 0; + $minCustomVar = null; foreach (Model::getScopes() as $scope) { $model = new Model($scope); $highestIndex = $model->getHighestCustomVarIndex(); - if ($highestIndex > $maxCustomVar) { - $maxCustomVar = $highestIndex; + if (!isset($minCustomVar)) { + $minCustomVar = $highestIndex; } + + if ($highestIndex < $minCustomVar) { + $minCustomVar = $highestIndex; + } + } + + if (!isset($minCustomVar)) { + $minCustomVar = 0; } - $cache[$cacheKey] = $maxCustomVar; + $cache[$cacheKey] = $minCustomVar; Cache::setCacheGeneral($cache); } @@ -90,7 +106,7 @@ class CustomVariables extends \Piwik\Plugin public function getSegmentsMetadata(&$segments) { - $maxCustomVariables = self::getMaxCustomVariables(); + $maxCustomVariables = self::getNumUsableCustomVariables(); for ($i = 1; $i <= $maxCustomVariables; $i++) { $segments[] = array( diff --git a/plugins/CustomVariables/Model.php b/plugins/CustomVariables/Model.php index d9a0623b4083e0c9082d6e5538131dcc0d3d6985..9d98a352fa2683069bcf49378aecc56769d986db 100644 --- a/plugins/CustomVariables/Model.php +++ b/plugins/CustomVariables/Model.php @@ -18,6 +18,7 @@ class Model const SCOPE_PAGE = 'log_link_visit_action'; const SCOPE_VISIT = 'log_visit'; const SCOPE_CONVERSION = 'log_conversion'; + const DEFAULT_CUSTOM_VAR_COUNT = 5; private $scope = null; @@ -159,7 +160,7 @@ class Model $model = new Model($scope); try { - $maxCustomVars = 5; + $maxCustomVars = self::DEFAULT_CUSTOM_VAR_COUNT; $customVarsToAdd = $maxCustomVars - $model->getCurrentNumCustomVars(); for ($index = 0; $index < $customVarsToAdd; $index++) { diff --git a/plugins/CustomVariables/lang/cs.json b/plugins/CustomVariables/lang/cs.json index 700f79e652fc9281be0541c577818e1ac148e92a..5a75dd2cd15d7f26ef22220bb436de8ff6a4b433 100644 --- a/plugins/CustomVariables/lang/cs.json +++ b/plugins/CustomVariables/lang/cs.json @@ -4,6 +4,7 @@ "ColumnCustomVariableValue": "Hodnota vlastnà promÄ›nné", "CustomVariables": "Vlastnà promÄ›nné", "CustomVariablesReportDocumentation": "Toto hlášenà obsahuje informace o vaÅ¡ich vlastnÃch promÄ›nných. KliknÄ›te na promÄ›nnou pro zobrazenà distribuce hodnot. %s Pro vÃce informacà si pÅ™eÄtÄ›te %sdokumentaci o vlastnÃch promÄ›nných na piwik.org%s", + "PluginDescription": "Vlastnà promÄ›nné jsou páry (jméno, hodnota), které můžete nastavit návÅ¡tÄ›vnÃkovi, nebo libovolné akci, pomocà javascriptového API. Piwik potom ohlásÃ, kolik návÅ¡tÄ›v, stránek, konverzà bylo pro každé z tÄ›chto jmen a hodnot. ProhlédnÄ›te si detailnÄ› tyto promÄ›nné pro každého uživatele a akci v záznamu návÅ¡tÄ›vnÃků.<br \/>Vyžadováno, pokud chcete použÃt <a href=\"http:\/\/piwik.org\/docs\/ecommerce-analytics\/\">analýzu E-obchodu<\/a>!", "ScopePage": "rozsah stránky", "ScopeVisit": "rozsah návÅ¡tÄ›vy" } diff --git a/plugins/CustomVariables/lang/it.json b/plugins/CustomVariables/lang/it.json index 4db368f02999baba4e89b44ea947cea0f6b42e69..3162fc90272245d940a963aeec1ae77b4b13b3cf 100644 --- a/plugins/CustomVariables/lang/it.json +++ b/plugins/CustomVariables/lang/it.json @@ -1,11 +1,11 @@ { "CustomVariables": { - "ColumnCustomVariableName": "Nomi Variabili Personalizzate", - "ColumnCustomVariableValue": "Valori Variabili Personalizzate", - "CustomVariables": "Variabili Personalizzate", - "CustomVariablesReportDocumentation": "Questo report contiene le informazioni sulle variabili personalizzate. Clicca su un nome di variabile per visualizzare la distribuzione dei valori. %s Per ulteriori informazioni sulle variabili personalizzate in generale, leggere il %sCustom Variabili documentazione su piwik.org %s", + "ColumnCustomVariableName": "Nome Variabile Personalizzata", + "ColumnCustomVariableValue": "Valore Variabile Personalizzata", + "CustomVariables": "Variabile Personalizzata", + "CustomVariablesReportDocumentation": "Questo report contiene le informazioni sulle variabili personalizzate. Clicca su un nome di variabile per visualizzarne la distribuzione dei valori. %s Per ulteriori informazioni sulle variabili personalizzate in generale, leggere la %sDocumentazione Variabili Personalizzatesu piwik.org %s", "PluginDescription": "Le variabili personalizzate sono coppie (nome, valore) che puoi assegnare ai visitatori o a una qualunque loro azione tramite API Javascript. Poi Piwik riporterà le visite, le pagine e le conversioni per questi nomi e valori. Guarda nel dettaglio le Variabili Personalizzate per ciascun utente nel Log Visitatori.<br>Necessario per utilizzare la funzione <a href=\"http:\/\/piwik.org\/docs\/ecommerce-analytics\/\">Statistiche Ecommerce<\/a>", - "ScopePage": "campo di applicazione pagina", + "ScopePage": "ambito pagina", "ScopeVisit": "ambito visita" } } \ No newline at end of file diff --git a/plugins/CustomVariables/lang/sr.json b/plugins/CustomVariables/lang/sr.json index e7855e77aa63864acfec6a0c0f6c854925ad17b9..b740d6b41cc3f827b3d56de9fad8f77afbf855e2 100644 --- a/plugins/CustomVariables/lang/sr.json +++ b/plugins/CustomVariables/lang/sr.json @@ -4,6 +4,7 @@ "ColumnCustomVariableValue": "Vrednost dodatnog parametra", "CustomVariables": "Dodatni parametri", "CustomVariablesReportDocumentation": "Ovaj izveÅ¡taj sadrži informacije o dodatnim parametrima. Kliknite na ime parametra kako biste videli distribuciju vrednosti. %s Za viÅ¡e informacija o dodatnim parametrima pogledajte %sCustom Variables na piwik.org%s", + "PluginDescription": "Dodatni parametri su ureÄ‘eni parovi (naziv, vrednost) koje možete pomoću JavaScript API-ja da dodelite posetiocima ili bilo kojoj njihovoj akciji. Piwik će onda beležiti koliko ima poseta, stranica i konverzija za svaki od tih parova. Detalje možete videti u logu posetilaca. <br \/>Neophodno za <a href=\"http:\/\/piwik.org\/docs\/ecommerce-analytics\/\">E-commerce analitike<\/a>!", "ScopePage": "oblast strana", "ScopeVisit": "oblast poseta" } diff --git a/plugins/CustomVariables/tests/Commands/SetNumberOfCustomVariablesTest.php b/plugins/CustomVariables/tests/Commands/SetNumberOfCustomVariablesTest.php index e70c3515bbca1d6121e2ec3090d9e54fe20e3373..a17a0683a53e8891b23e06494c9942bdac49c2e1 100644 --- a/plugins/CustomVariables/tests/Commands/SetNumberOfCustomVariablesTest.php +++ b/plugins/CustomVariables/tests/Commands/SetNumberOfCustomVariablesTest.php @@ -65,7 +65,7 @@ class SetNumberOfCustomVariablesTest extends IntegrationTestCase public function testExecute_ShouldAddMaxCustomVars_IfNumberIsHigherThanActual() { - $this->assertEquals(5, CustomVariables::getMaxCustomVariables()); + $this->assertEquals(5, CustomVariables::getNumUsableCustomVariables()); $result = $this->executeCommand(6); @@ -77,13 +77,13 @@ class SetNumberOfCustomVariablesTest extends IntegrationTestCase $this->assertContains('Added a variable in scope "Conversion" having the index 6', $result); $this->assertContains('Your Piwik is now configured for 6 custom variables.', $result); - $this->assertEquals(6, CustomVariables::getMaxCustomVariables()); + $this->assertEquals(6, CustomVariables::getNumUsableCustomVariables()); } public function testExecute_ShouldRemoveMaxCustomVars_IfNumberIsLessThanActual() { $this->executeCommand(6, true); - $this->assertEquals(6, CustomVariables::getMaxCustomVariables()); + $this->assertEquals(6, CustomVariables::getNumUsableCustomVariables()); $result = $this->executeCommand(5); @@ -95,18 +95,18 @@ class SetNumberOfCustomVariablesTest extends IntegrationTestCase $this->assertContains('Removed a variable in scope "Conversion" having the index 6', $result); $this->assertContains('Your Piwik is now configured for 5 custom variables.', $result); - $this->assertEquals(5, CustomVariables::getMaxCustomVariables()); + $this->assertEquals(5, CustomVariables::getNumUsableCustomVariables()); } public function testExecute_AddMultiple_RemoveMultiple() { - $this->assertEquals(5, CustomVariables::getMaxCustomVariables()); + $this->assertEquals(5, CustomVariables::getNumUsableCustomVariables()); $this->executeCommand(9); - $this->assertEquals(9, CustomVariables::getMaxCustomVariables()); + $this->assertEquals(9, CustomVariables::getNumUsableCustomVariables()); $this->executeCommand(6); - $this->assertEquals(6, CustomVariables::getMaxCustomVariables()); + $this->assertEquals(6, CustomVariables::getNumUsableCustomVariables()); } /** diff --git a/plugins/CustomVariables/tests/Integration/CustomVariablesTest.php b/plugins/CustomVariables/tests/Integration/CustomVariablesTest.php index 75832efe3704ae43e9fe23342bfd89920bbc4a76..e24bbf009046996f97881a245225a93ecdb6289b 100644 --- a/plugins/CustomVariables/tests/Integration/CustomVariablesTest.php +++ b/plugins/CustomVariables/tests/Integration/CustomVariablesTest.php @@ -8,6 +8,7 @@ namespace Piwik\Plugins\CustomVariables\tests; use Piwik\Plugins\CustomVariables\CustomVariables; +use Piwik\Plugins\CustomVariables\Model; use Piwik\Tracker\Cache; use Piwik\Tests\Framework\TestCase\IntegrationTestCase; @@ -18,27 +19,85 @@ use Piwik\Tests\Framework\TestCase\IntegrationTestCase; */ class CustomVariablesTest extends IntegrationTestCase { - public function testGetMaxCustomVariables_ShouldDetectCorrectNumberOfVariables() + public function test_getNumUsableCustomVariables_ShouldDetectCorrectNumberOfVariables() { Cache::clearCacheGeneral(); - $this->assertSame(5, CustomVariables::getMaxCustomVariables()); + $this->assertSame(5, CustomVariables::getNumUsableCustomVariables()); } - public function testGetMaxCustomVariables_ShouldCacheTheResult() + public function test_getNumUsableCustomVariables_ShouldCacheTheResult() { - CustomVariables::getMaxCustomVariables(); + CustomVariables::getNumUsableCustomVariables(); $cache = Cache::getCacheGeneral(); - $this->assertSame(5, $cache['CustomVariables.MaxNumCustomVariables']); + $this->assertSame(5, $cache['CustomVariables.NumUsableCustomVariables']); } - public function testGetMaxCustomVariables_ShouldReadFromCacheIfPossible() + public function test_getNumUsableCustomVariables_ShouldReadFromCacheIfPossible() { $cache = Cache::getCacheGeneral(); - $cache['CustomVariables.MaxNumCustomVariables'] = 10; + $cache['CustomVariables.NumUsableCustomVariables'] = 10; Cache::setCacheGeneral($cache); - $this->assertSame(10, CustomVariables::getMaxCustomVariables()); + $this->assertSame(10, CustomVariables::getNumUsableCustomVariables()); } + public function test_getNumUsableCustomVariables_ShouldReturnMinVariables_IfOneTableHasLessEntriesThanOthers() + { + $this->assertEquals(5, CustomVariables::getNumUsableCustomVariables()); + + $scopes = Model::getScopes(); + + // removing custom vars step by step... as soon as one custom var is removed, + // it should return the min count of available variables + for ($i = 4; $i != -1; $i--) { + foreach ($scopes as $scope) { + $this->dropCustomVar($scope); + $this->assertSame($i, CustomVariables::getNumUsableCustomVariables()); + } + } + + $this->assertEquals(0, CustomVariables::getNumUsableCustomVariables()); + + // add custom var, only once all custom vars are written it should write return a higher custom var number + for ($i = 1; $i != 7; $i++) { + foreach ($scopes as $index => $scope) { + $isLastIndex = $index === (count($scopes) - 1); + + $this->addCustomVar($scope); + + if ($isLastIndex) { + $this->assertSame($i, CustomVariables::getNumUsableCustomVariables()); + // all scopes have been added, it should consider all custom var counts + } else { + $this->assertSame($i - 1, CustomVariables::getNumUsableCustomVariables()); + // at least one scope is not added and should therefore return the old custom var count until all + // tables have been updated + } + } + } + + $this->assertEquals(6, CustomVariables::getNumUsableCustomVariables()); + } + + private function dropCustomVar($scope) + { + $this->clearCache(); + $model = new Model($scope); + $model->removeCustomVariable(); + } + + private function addCustomVar($scope) + { + $this->clearCache(); + $model = new Model($scope); + $model->addCustomVariable(); + } + + private function clearCache() + { + Cache::clearCacheGeneral(); + } + + } diff --git a/plugins/DBStats/DBStats.php b/plugins/DBStats/DBStats.php index 5f16ed8451dbc02c5a56f1a62badf12704893697..e5d6f85647ec0108e8b0e2144097cc863808b912 100644 --- a/plugins/DBStats/DBStats.php +++ b/plugins/DBStats/DBStats.php @@ -18,9 +18,9 @@ class DBStats extends \Piwik\Plugin const TIME_OF_LAST_TASK_RUN_OPTION = 'dbstats_time_of_last_cache_task_run'; /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/DBStats/lang/it.json b/plugins/DBStats/lang/it.json index 059cac77430208b2e2856baa18445e3f6cab8f61..36569bb4fffbb631b351893b21d2c225a2487ae6 100644 --- a/plugins/DBStats/lang/it.json +++ b/plugins/DBStats/lang/it.json @@ -2,20 +2,20 @@ "DBStats": { "DatabaseUsage": "Uso del Database", "DataSize": "Dimensione dei dati", - "DBSize": "Grandezza database", - "EstimatedSize": "Grandezza stimata", + "DBSize": "Dimensione del database", + "EstimatedSize": "Dimensione stimata", "IndexSize": "Dimensione degli indici", - "LearnMore": "Per apprendere i dettagli su come Piwik elabora i dati, e su come far funzionare bene Piwik per siti a medio e alto traffico, dai un'occhiata alla documentazione %s.", + "LearnMore": "Per apprendere i dettagli su come Piwik elabora i dati e su come far funzionare bene Piwik per siti a medio e alto traffico, dai un'occhiata alla documentazione %s.", "MainDescription": "Piwik sta salvando tutti i dati statistici nel Database MySQL. Attualmente, le tabelle di Piwik stanno usando %s.", "MetricDataByYear": "Tabelle metriche per anno", "MetricTables": "Tabelle metriche", - "OtherTables": "Altre tabelle", + "OtherTables": "Altre Tabelle", "PluginDescription": "Restituisce dei report dettagliati sull'uso del database MySQL. Disponibile in Diagnostica per i Super Users.", - "ReportDataByYear": "Report tabelle per anno", - "ReportTables": "Report tabelle", + "ReportDataByYear": "Report Tabelle per Anno", + "ReportTables": "Report Tabelle", "RowCount": "Conteggio delle righe", "Table": "Tabella", "TotalSize": "Dimensione totale", - "TrackerTables": "Tracker tabelle" + "TrackerTables": "Tracker Tabelle" } } \ No newline at end of file diff --git a/plugins/DBStats/lang/zh-cn.json b/plugins/DBStats/lang/zh-cn.json index a8e391cc1c09a6596ae2a02614263ee5d10d73ad..bcd6101af305ccf81d54d1c2d25c537595eb3cee 100644 --- a/plugins/DBStats/lang/zh-cn.json +++ b/plugins/DBStats/lang/zh-cn.json @@ -10,6 +10,7 @@ "MetricDataByYear": "æŒ‰å¹´çš„æŒ‡æ ‡è¡¨", "MetricTables": "æŒ‡æ ‡è¡¨", "OtherTables": "其它表", + "PluginDescription": "æä¾›äº†è¯¦ç»†çš„MySQLæ•°æ®åº“使用情况报告。å¯ç”¨äºŽè¶…级用户下诊æ–。", "ReportDataByYear": "年度报表", "ReportTables": "报表", "RowCount": "行计算", diff --git a/plugins/Dashboard/Controller.php b/plugins/Dashboard/Controller.php index afd5e4236e4fe149f9c73f7c25157a6a4c68a71f..d77c283273f31ffbbf5387fb67276948d1ea13f0 100644 --- a/plugins/Dashboard/Controller.php +++ b/plugins/Dashboard/Controller.php @@ -212,6 +212,7 @@ class Controller extends \Piwik\Plugin\Controller $this->checkTokenInUrl(); $layout = Common::unsanitizeInputValue(Common::getRequestVar('layout')); + $layout = strip_tags($layout); $idDashboard = Common::getRequestVar('idDashboard', 1, 'int'); $name = Common::getRequestVar('name', '', 'string'); @@ -236,6 +237,7 @@ class Controller extends \Piwik\Plugin\Controller if (Piwik::hasUserSuperUserAccess()) { $layout = Common::unsanitizeInputValue(Common::getRequestVar('layout')); + $layout = strip_tags($layout); $this->getModel()->createOrUpdateDashboard('', '1', $layout); } } diff --git a/plugins/Dashboard/Dashboard.php b/plugins/Dashboard/Dashboard.php index 6febc9b8dd83525cb59cc4460fa067fa633aacb9..9ccbb822e4196fb8446c0e22917204c0b721d4d9 100644 --- a/plugins/Dashboard/Dashboard.php +++ b/plugins/Dashboard/Dashboard.php @@ -18,9 +18,9 @@ use Piwik\WidgetsList; class Dashboard extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/Dashboard/lang/it.json b/plugins/Dashboard/lang/it.json index 05ada26ef6d9b8c6e1947d582a7636e5e7a0e9cc..b97e35430d5ef0e485aa5bbabdf2212c70597dcb 100644 --- a/plugins/Dashboard/lang/it.json +++ b/plugins/Dashboard/lang/it.json @@ -28,7 +28,7 @@ "SelectWidget": "Seleziona il widget da aggiungere nella dashboard", "SetAsDefaultWidgets": "Imposta come selezione predefinita di widget", "SetAsDefaultWidgetsConfirm": "Sei sicuro di voler impostare la selezione corrente di widget e il layout del pannello come modello predefinito?", - "SetAsDefaultWidgetsConfirmHelp": "Questa selezione widget e il layout colonne saranno utilizzate quando un utente creerà un nuovo pannello, o quando \"%s\" funzione viene utilizzata.", + "SetAsDefaultWidgetsConfirmHelp": "Questa selezione di widget e il layout colonne saranno utilizzate quando un utente creerà una nuova dashboard o quando verrà utilizzata la funzione \"%s\".", "TopLinkTooltip": "Visualizza report Web Analytics per %s.", "WidgetNotFound": "Widget non trovato", "WidgetPreview": "Anteprima del widget" diff --git a/plugins/DevicePlugins/DevicePlugins.php b/plugins/DevicePlugins/DevicePlugins.php index afe8abf950d5dc653993662aad7c78d8e694f77d..3ac882e8ceec9bb53bf389520d437c3d0da39860 100644 --- a/plugins/DevicePlugins/DevicePlugins.php +++ b/plugins/DevicePlugins/DevicePlugins.php @@ -18,9 +18,9 @@ use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; class DevicePlugins extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations', diff --git a/plugins/DevicePlugins/lang/it.json b/plugins/DevicePlugins/lang/it.json index f30e30d19e987d9fb51ba74766f4f323c3b52fa5..6cc5b75c2717dcb955f72e64700d3d5047ba871e 100644 --- a/plugins/DevicePlugins/lang/it.json +++ b/plugins/DevicePlugins/lang/it.json @@ -4,7 +4,7 @@ "BrowserWithPluginsEnabled": "%1$s con plugin %2$s abilitati", "PluginDescription": "Restituisce l'elenco dei plugin supportati dal browser dei visitatori.", "PluginDetectionDoesNotWorkInIE": "N.B.: Questo plugin non funziona su Internet Explorer. Questo report è basato solamente sugli utenti di altri browser.", - "WidgetPlugins": "Lista dei Plugin", + "WidgetPlugins": "Plugin Browser", "WidgetPluginsDocumentation": "Questo report mostra quali plugin del browser i visitatori avevano abilitato. Questa informazione potrebbe essere importante per la scelta del giusto modo di inviare i tuoi contenuti." } } \ No newline at end of file diff --git a/plugins/DevicePlugins/lang/lt.json b/plugins/DevicePlugins/lang/lt.json index 12fc5b4d8bdd229ccb85bb6eb1a437c597fd09d5..3a239c80ac078ac03103bf04b7c7b5efd3cb98bd 100644 --- a/plugins/DevicePlugins/lang/lt.json +++ b/plugins/DevicePlugins/lang/lt.json @@ -1,6 +1,8 @@ { "DevicePlugins": { + "PluginDescription": "PraneÅ¡a lankytojų narÅ¡yklÄ—se palaikomų papildinių sÄ…rašą.", "PluginDetectionDoesNotWorkInIE": "Pastaba: papildinio aptikimas neveikia Internet Explorer narÅ¡yklÄ—je. Å i ataskaita bus sugeneruota tik kitose narÅ¡yklÄ—se.", - "WidgetPlugins": "Papildinių sÄ…raÅ¡as" + "WidgetPlugins": "Papildinių sÄ…raÅ¡as", + "WidgetPluginsDocumentation": "Å i ataskaita parodo kuriuos narÅ¡yklÄ—s papildinius jÅ«sų lankytojai buvo įjungÄ™. Å i informacija gali bÅ«ti svarbi, pasirenkant teisingÄ… savo turinio pristatymo bÅ«dÄ…." } } \ No newline at end of file diff --git a/plugins/DevicesDetection/DevicesDetection.php b/plugins/DevicesDetection/DevicesDetection.php index 88478e6ff6ef83ae1c44d71d3fd84ac50c43da4b..5385b29354ca899085a56ef900ae5487959d2cbc 100644 --- a/plugins/DevicesDetection/DevicesDetection.php +++ b/plugins/DevicesDetection/DevicesDetection.php @@ -18,9 +18,9 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/DevicesDetection/functions.php'; class DevicesDetection extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Live.getAllVisitorDetails' => 'extendVisitorDetails' diff --git a/plugins/DevicesDetection/lang/it.json b/plugins/DevicesDetection/lang/it.json index d6abec55f00142225b1bde5f2f9f31e1d6f0da5c..c34d904d0c2e776716166c69152e25032ecb6241 100644 --- a/plugins/DevicesDetection/lang/it.json +++ b/plugins/DevicesDetection/lang/it.json @@ -1,7 +1,7 @@ { "DevicesDetection": { "BrowserEngine": "Motore browser", - "BrowserEngineDocumentation": "Questo grafico mostra i browser dei vostri visitatori suddivisi in famiglie di browser. %s Le informazioni più importanti per gli sviluppatori web sono che tipo di motore di rendering i loro visitatori stanno usando. Le etichette contengono i nomi dei motori seguiti dal browser più comune che utilizza quel motore tra parentesi.", + "BrowserEngineDocumentation": "Questo report mostra i browser dei vostri visitatori suddivisi in famiglie di browser. %s Le informazioni più importanti per gli sviluppatori web sono che tipo di motore di rendering i loro visitatori stanno usando. Le etichette contengono i nomi dei motori seguiti dal browser più comune che utilizza quel motore, messo tra parentesi.", "BrowserEngines": "Motori browser", "BrowserFamily": "Famiglia del Browser", "Browsers": "Browser", @@ -32,7 +32,7 @@ "PluginDescription": "Fornisce informazioni dettagliate sui dispositivi degli utenti, come marca, modello, tipo di dispositivo (tv, console, smartphone, desktop, ecc.) e altro ancora.", "SmartDisplay": "Smart display", "Smartphone": "Smartphone", - "PortableMediaPlayer": "Media player portabile", + "PortableMediaPlayer": "Media player portatile", "Devices": "Dispositivi", "Tablet": "Tablet", "Phablet": "Phablet", diff --git a/plugins/DevicesDetection/lang/lt.json b/plugins/DevicesDetection/lang/lt.json index a02856fac960c280be94236c705a6fda1dc37fa5..26e803b3cd2eb1d6645473cb7aa28c1ae518b43b 100644 --- a/plugins/DevicesDetection/lang/lt.json +++ b/plugins/DevicesDetection/lang/lt.json @@ -4,13 +4,27 @@ "BrowserFamily": "NarÅ¡yklių Å¡eimos", "Browsers": "NarÅ¡yklÄ—s", "BrowserVersion": "NarÅ¡yklÄ—s versija", + "CarBrowser": "Automobilio narÅ¡yklÄ—", "Software": "PrograminÄ— įranga", "ColumnBrowser": "NarÅ¡yklÄ—", "ColumnOperatingSystem": "OperacinÄ— sistema", "ColumnOperatingSystemVersion": "OperacinÄ—s sistemos versija", + "dataTableLabelBrands": "PrekÄ—s ženklas", + "dataTableLabelModels": "Modelis", "dataTableLabelSystemVersion": "OperacinÄ—s sistemos versija", "dataTableLabelTypes": "Tipas", + "Device": "Ä®renginys", + "DeviceBrand": "Ä®renginio prekÄ—s ženklas", + "DeviceModel": "Ä®renginio modelis", + "DeviceType": "Ä®renginio tipas", "OperatingSystems": "OperacinÄ—s sistemos", + "SmartDisplay": "Belaidis monitorius", + "Smartphone": "IÅ¡manusis telefonas", + "PortableMediaPlayer": "NeÅ¡iojamoji medijos leistuvÄ—", + "Devices": "Ä®renginiai", + "Tablet": "PlanÅ¡etinis kompiuteris", + "Phablet": "PlanÅ¡etofonas", + "TV": "Televizorius", "WidgetBrowsers": "Lankytojų narÅ¡yklÄ—s" } } \ No newline at end of file diff --git a/plugins/Ecommerce/lang/cs.json b/plugins/Ecommerce/lang/cs.json index 0fe34b8bcb4d450cb2066bb563de06dd1097f35b..8455e374e36579d2b9d999b2156d0bab82a77e4c 100644 --- a/plugins/Ecommerce/lang/cs.json +++ b/plugins/Ecommerce/lang/cs.json @@ -1,5 +1,8 @@ { "Ecommerce": { - "Sales": "Tržby" + "PluginDescription": "Ecommerce vám umožňuje sledovat, kdy uživatelé pÅ™idajà produkt do koÅ¡Ãku a kdy dojde ke konverzi na objednávku. Také umožňuje sledovat zobrazenà stránek produktů, kategorià a opuÅ¡tÄ›né koÅ¡Ãky.", + "Sales": "Tržby", + "SalesBy": "Tržby podle %s", + "SalesAdjective": "Tržby %s" } } \ No newline at end of file diff --git a/plugins/Ecommerce/lang/sr.json b/plugins/Ecommerce/lang/sr.json index 78c9d5b529e620c356daa85a3fd160b503585b49..2902edcaa3f0cb210dc88310fba63fa50d797096 100644 --- a/plugins/Ecommerce/lang/sr.json +++ b/plugins/Ecommerce/lang/sr.json @@ -1,5 +1,8 @@ { "Ecommerce": { - "Sales": "Prodaja" + "PluginDescription": "Pomoću E-commerce možete da pratite kada posetilac dodaje proizvode u korpu i kada se obavi kupovina. Proizvode i kategorije proizvoda možete da pratite i u napuÅ¡tenim korpama.", + "Sales": "Prodaja", + "SalesBy": "Prodaja po %s", + "SalesAdjective": "Prodaja %s" } } \ No newline at end of file diff --git a/plugins/Events/Events.php b/plugins/Events/Events.php index bb784865f2d5b3bf1c9474760237ad664598d175..ba3e96465dacb0e1da1b2c8755f72a53ef5d1df5 100644 --- a/plugins/Events/Events.php +++ b/plugins/Events/Events.php @@ -16,9 +16,9 @@ use Piwik\Plugin\ViewDataTable; class Events extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Metrics.getDefaultMetricDocumentationTranslations' => 'addMetricDocumentationTranslations', diff --git a/plugins/Events/lang/cs.json b/plugins/Events/lang/cs.json index 1632851039b277857c51b123371be051b5e1787c..d919e1c04c0abeeb048444fa63ff49163cc5786b 100644 --- a/plugins/Events/lang/cs.json +++ b/plugins/Events/lang/cs.json @@ -1,5 +1,6 @@ { "Events": { + "PluginDescription": "Sledujte události a zÃskejte hlášenà o aktivitÄ› vaÅ¡ich návÅ¡tÄ›vnÃků", "AvgEventValue": "PrůmÄ›rná hodnota události je %s", "AvgValue": "PrůmÄ›rná hodnota", "AvgValueDocumentation": "PrůmÄ›r vÅ¡ech hodnot pro tuto událost", diff --git a/plugins/Events/lang/it.json b/plugins/Events/lang/it.json index d4a3ea8903c7699e832136dcbafcf3ba65d0e30a..465cebb176cf751c791d605799df93351843bb46 100644 --- a/plugins/Events/lang/it.json +++ b/plugins/Events/lang/it.json @@ -15,7 +15,7 @@ "EventsWithValue": "Eventi con un valore", "EventsWithValueDocumentation": "Numero di eventi dove è stato impostato un valore Evento", "EventValue": "Valore Evento", - "EventValueTooltip": "Il valore totale Evento è la somma dei %s valori eventi %s tra il inimo di %s e il massimo di %s.", + "EventValueTooltip": "Il valore totale Evento è la somma dei %s valori eventi %s tra un minimo di %s e un massimo di %s.", "MaxValue": "Valore massimo", "MaxValueDocumentation": "Valore massimo per questo evento", "MinValue": "Valore minimo", @@ -26,7 +26,7 @@ "TotalEvents": "Totale eventi", "TotalEventsDocumentation": "Numero totale degli eventi", "TotalValue": "Valore totale", - "TotalValueDocumentation": "somma dei valori degli eventi", + "TotalValueDocumentation": "Somma dei valori degli eventi", "ViewEvents": "Vedi Eventi" } } \ No newline at end of file diff --git a/plugins/Events/lang/lt.json b/plugins/Events/lang/lt.json new file mode 100644 index 0000000000000000000000000000000000000000..e0fd6c49a8d7a7d5b3f7bc9555d171b5c1353a2d --- /dev/null +++ b/plugins/Events/lang/lt.json @@ -0,0 +1,9 @@ +{ + "Events": { + "PluginDescription": "Sekite įvykius ir gaukite savo lankytojų veiklos ataskaitas.", + "EventActions": "Ä®vykių veiksmai", + "EventCategories": "Ä®vykių kategorijos", + "EventNames": "Ä®vykių pavadinimai", + "Events": "Ä®vykiai" + } +} \ No newline at end of file diff --git a/plugins/Events/lang/sr.json b/plugins/Events/lang/sr.json index 0018451d954b29951d96f830dae0e838541abb12..bbf1a1477922ff08f96a8e6a1dd281677c4c52a2 100644 --- a/plugins/Events/lang/sr.json +++ b/plugins/Events/lang/sr.json @@ -1,5 +1,6 @@ { "Events": { + "PluginDescription": "Pratite dogaÄ‘aje i dobijajte izveÅ¡taje o aktivnostima vaÅ¡ih posetilaca.", "AvgEventValue": "ProseÄna vrednost dogaÄ‘aja je: %s", "AvgValue": "ProseÄna vrednost", "AvgValueDocumentation": "Prosek svih vrednosti ovog dogaÄ‘aja", diff --git a/plugins/ExampleRssWidget/ExampleRssWidget.php b/plugins/ExampleRssWidget/ExampleRssWidget.php index ec035f36d1dbcd51e02ab525710e085554ab1532..3fd348f80dee89420ef27945036454d778d43143 100644 --- a/plugins/ExampleRssWidget/ExampleRssWidget.php +++ b/plugins/ExampleRssWidget/ExampleRssWidget.php @@ -14,9 +14,9 @@ namespace Piwik\Plugins\ExampleRssWidget; class ExampleRssWidget extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles' diff --git a/plugins/Feedback/Feedback.php b/plugins/Feedback/Feedback.php index 0bf58287a89de19a2a1aea73e01c833b22e68120..99849ff277232b870c6abe0cc2e4abae304607c6 100644 --- a/plugins/Feedback/Feedback.php +++ b/plugins/Feedback/Feedback.php @@ -15,9 +15,9 @@ class Feedback extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/Feedback/lang/it.json b/plugins/Feedback/lang/it.json index d069a7b1d2c141840dbd13408320b90c150ff8d2..1e3934e03f621cbe5d5fae4bd4cb3611b768289a 100644 --- a/plugins/Feedback/lang/it.json +++ b/plugins/Feedback/lang/it.json @@ -1,9 +1,9 @@ { "Feedback": { "DoYouHaveBugReportOrFeatureRequest": "Hai un bug da segnalare o una richiesta di funzionalità ?", - "HowToCreateTicket": "Si prega di leggere le raccomandazioni per scrivere un buon %1$srapporto bug%2$s o una %3$srichiesta di funzionalità %4$s. Poi registrati o accedi al nostro %5$stracker dei problemi%6$s e crea un %7$snuovo problema%8$s.", + "HowToCreateTicket": "Si prega di leggere le raccomandazioni per scrivere un buon %1$srapporto bug%2$s o una %3$srichiesta di funzionalità %4$s. Poi registrati o accedi al nostro %5$stracker dei problemi%6$s e segnala un %7$snuovo problema%8$s.", "IWantTo": "Vorrei:", - "LearnWaysToParticipate": "Impara tutti i modi attraverso i quali puoi %s partecipare %s", + "LearnWaysToParticipate": "Impara tutti i modi attraverso i quali puoi %s partecipare%s", "ManuallySendEmailTo": "Perfavore invia manualmente il messaggio a", "PluginDescription": "Invia un Feedback al Team di Piwik. Condividi idee e suggerimenti per rendere Piwik la migliore piattaforma al mondo di statistiche web!", "PrivacyClaim": "Piwik rispetta la tua %1$sprivacy%2$s e ti dà il pieno controllo sui tuoi dati.", @@ -29,6 +29,6 @@ "PiwikProCustomDevelopment": "Sviluppo personalizzato su commissione", "PiwikProAnalystConsulting": "Consulenza di analisti", "ContactUs": "Contattaci", - "VisitTheForums": "Visita il %s Forum %s" + "VisitTheForums": "Visita i %s Forum%s e ottieni aiuto dalla comunità degli utenti Piwik" } } \ No newline at end of file diff --git a/plugins/Feedback/lang/lt.json b/plugins/Feedback/lang/lt.json index b9904de71b428642df3d0a39a1474c01707781f0..2c7efb7f41441b68150ade26147b3dde91704b05 100644 --- a/plugins/Feedback/lang/lt.json +++ b/plugins/Feedback/lang/lt.json @@ -4,8 +4,15 @@ "IWantTo": "AÅ¡ noriu:", "LearnWaysToParticipate": "Sužinokite kaip galite %s prisijungti%s", "ManuallySendEmailTo": "PraÅ¡ome iÅ¡siųsti rankiniu bÅ«du", + "PluginDescription": "Siųskite savo atsiliepimus Piwik komandai. DalinkitÄ—s savo idÄ—jomis ir pasiÅ«lymais, kad padarytumÄ—te Piwik geriausia analitikos platforma pasaulyje!", + "RateFeatureLeaveMessageDislike": "Mes apgailestaujame iÅ¡girsti, kad jums ji nepatinka! PraÅ¡ome paraÅ¡yti, kaip mes galÄ—tume jÄ… patobulinti.", + "RateFeatureLeaveMessageLike": "Mums malonu iÅ¡girsti, kad jums ji patinka! PraÅ¡ome paraÅ¡yti kas jums labiausiai patinka arba, jeigu turite, ypatybÄ—s praÅ¡ymÄ….", + "RateFeatureThankYouTitle": "DÄ—kojame, kad įvertinate ypatybÄ™ \"%s\"!", + "RateFeatureTitle": "Ar jums patinka ypatybÄ— \"%s\"? PraÅ¡ome įvertinti ir paraÅ¡yti komentarÄ…", "SendFeedback": "Siųsti atsiliepimÄ…", "ThankYou": "DÄ—kojame už pagalbÄ… kuriant tobulesnį Piwik!", + "CommunityHelp": "BendruomenÄ—s pagalba", + "ProfessionalHelp": "Profesionali pagalba", "VisitTheForums": "Apsilankykite %s forumuose%s" } } \ No newline at end of file diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php index 6a2a41566b1f33896116029c3b36b3bff8421b48..d26e2cf77e5e4a01451607f7218396d9a7cefe07 100644 --- a/plugins/Goals/Goals.php +++ b/plugins/Goals/Goals.php @@ -86,9 +86,9 @@ class Goals extends \Piwik\Plugin } /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { $hooks = array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/Goals/lang/cs.json b/plugins/Goals/lang/cs.json index a0052d9bc68ef7c542e7667a05564c4949a3ef76..7bc7cbc8bbb8d5bd5c6747de37fd7b28b1eacc81 100644 --- a/plugins/Goals/lang/cs.json +++ b/plugins/Goals/lang/cs.json @@ -11,6 +11,10 @@ "BestReferrers": "OdkazujÃcà stránky s nejvyššÃm poÄtem konverzà jsou:", "CaseSensitive": "shoda s velikostà pÃsmen", "CancelAndReturnToGoals": "ZruÅ¡it a %svrátit se na seznam cÃlů%s", + "CategoryTextGeneral_Visitors": "UmÃstÄ›nà uživatele", + "CategoryTextReferrers_Referrers": "Referrery", + "CategoryTextVisitsSummary_VisitsSummary": "Uživatelský atribut", + "CategoryTextGeneral_Visit": "ZapojenÃ", "ChooseGoal": "Vyberte cÃl", "ClickOutlink": "Kliknout na odkaz na externà web", "SendEvent": "Poslat událost", @@ -72,7 +76,8 @@ "MatchesExpression": "odpovÃdá %s", "NewGoalIntro": "Sledovánà konverznÃho pomÄ›ru cÃlů je jeden z nejefektivnÄ›jÅ¡Ãch způsobů měřenà a zlepÅ¡ovánà podnikatelských zájmů.", "NewVisitorsConversionRateIs": "PomÄ›r konverze nové pÅ™ÃchozÃch uživatelů je %s", - "NoGoalsNeedAccess": "Pouze administrátor nebo uživatel s právy super uživatele může pÅ™idat cÃle pro danou webovou stránku. Požádejte svého administrátora, aby cÃl pro vaÅ¡e webové stránky pÅ™idal. <br>Sledovánà cÃlů pomáhá porozumÄ›t a maximalizovat výkon vaÅ¡ich stránek.", + "NoGoalsNeedAccess": "Pouze administrátor nebo uživatel s právy super uživatele může spravovat cÃle pro dané webové stránky. Požádejte vaÅ¡eho Piwik administrátora, aby vám cÃl vytvoÅ™il.<br>Sledovánà cÃlů je skvÄ›lý způsob, jak sledovat a maximalizovat výkonnost vaÅ¡ich webových stránek.", + "NeedAccess": "Pouze administrátor nebo uživatel s právy super uživatele může spravovat cÃle pro danou webovou stránku.", "Optional": "(volitelné)", "OverallConversionRate": "%s celková frekvence konverzà (návÅ¡tÄ›v se splnÄ›ným cÃlem)", "OverallRevenue": "%s celkový pÅ™Ãjem", @@ -89,6 +94,8 @@ "UpdateGoal": "Aktualizovat cÃl", "URL": "URL", "ViewAndEditGoals": "Zobrazit a editovat cÃle", + "GoalsBy": "CÃle podle %s", + "GoalsAdjective": "CÃle %s", "VisitPageTitle": "NavÅ¡tÃvit stránku s daným titulkem", "VisitsUntilConv": "NávÅ¡tÄ›v ke konverzi", "VisitUrl": "NavÅ¡tÃvÃt zadanou URL (stránku, nebo skupiny stránek)", diff --git a/plugins/Goals/lang/da.json b/plugins/Goals/lang/da.json index 2e8bf0d9ac2f534d1837d73e3f68f7aa6570aee9..a6224eee5795a8bb2f4394b7c80325016f9d9a73 100644 --- a/plugins/Goals/lang/da.json +++ b/plugins/Goals/lang/da.json @@ -72,7 +72,6 @@ "MatchesExpression": "matcher udtrykket %s", "NewGoalIntro": "Sporing af mÃ¥lkonvertering er et af de mest effektive mÃ¥der at mÃ¥le og forbedre dine forretningsmæssige mÃ¥lsætninger.", "NewVisitorsConversionRateIs": "Nye besøgendes konverteringsrate er %s", - "NoGoalsNeedAccess": "Kun en administrator eller en bruger med superbruger adgang kan tilføje mÃ¥l for et bestemt websted. Spørg din Piwik administratore om at opstille et mÃ¥l for dit websted. <br>Sporing mÃ¥l er en fantastisk mÃ¥de til at forstÃ¥ og maksimere dit websteds effektivitet!", "Optional": "(valgfri)", "OverallConversionRate": "%s samlet konverteringsrate (besøg med et færdigt mÃ¥l)", "OverallRevenue": "%s samlede indtægter", diff --git a/plugins/Goals/lang/de.json b/plugins/Goals/lang/de.json index 73985b10565257b235d74e4bd277a5e6ff902e8c..73e5f8fca694a93d2178148e6e38b1c2a5b7ecc1 100644 --- a/plugins/Goals/lang/de.json +++ b/plugins/Goals/lang/de.json @@ -76,7 +76,8 @@ "MatchesExpression": "entspricht dem Ausdruck %s", "NewGoalIntro": "Tracken von Konversions-Zielen ist eine der effizientesten Möglichkeiten zur Messung und Verbesserung Ihrer geschäftlichen Ziele.", "NewVisitorsConversionRateIs": "Umsätze pro neuem Besucher: %s", - "NoGoalsNeedAccess": "Nur ein (Haupt-)Administrator kann Ziele für eine gegebene Website hinzufügen. Bitte fragen Sie ihren Piwik Administrator, um Ziele für ihre Website aufzustellen. <br> Das Aufzeichnen von Zielen ist ein großartiger Weg, ihre Website-Performance zu verstehen und zu maximieren!", + "NoGoalsNeedAccess": "Nur ein (Haupt-)Administrator kann Ziele für eine gegebene Website verwalten. Bitte fragen Sie ihren Piwik Administrator, um Ziele für ihre Webseite aufzustellen. <br> Tracking Ziele sind ein großartiger Weg, ihre Webseite-Performance zu verstehen und zu maximieren!", + "NeedAccess": "Nur ein (Haupt-)Administrator kann Ziele für eine gegebene Website verwalten.", "Optional": "(optional)", "OverallConversionRate": "%s Gesamtkonversionsrate (Besuche mit einem erreichten Ziel)", "OverallRevenue": "%s Gesamtumsatz", diff --git a/plugins/Goals/lang/el.json b/plugins/Goals/lang/el.json index 2a8f2cfcfa22f2c819628391ab7257ac4fe811be..f1cc2fca4a560437a35bbdd6559ddd37189ffd10 100644 --- a/plugins/Goals/lang/el.json +++ b/plugins/Goals/lang/el.json @@ -76,7 +76,8 @@ "MatchesExpression": "ταιÏιάζει στην ÎκφÏαση %s", "NewGoalIntro": "Η παÏακολοÏθηση για τη ΜετατÏοπή Στόχων είναι Îνας από τους αποτελεσματικότεÏους Ï„Ïόπους για να μετÏήσετε και να βελτιώσετε τους στόχους της επιχείÏησής σας.", "NewVisitorsConversionRateIs": "Ο βαθμός μετατÏοπής νÎων επισκεπτών είναι %s", - "NoGoalsNeedAccess": "Μόνο ο ΔιαχειÏιστής ή Îνας χÏήστης με δικαίωμα ΥπεÏ-ΧÏήστη μποÏεί να Ï€ÏοσθÎσει Στόχους για Îνα συγκεκÏιμÎνο ιστοτόπο. ΠαÏακαλοÏμε ζητήστε από τον διαχειÏιστή του Piwik να Ï€ÏοσθÎσει Îνα Στόχο για τον ιστοτόπο σας.<br \/>Η ΠαÏακολοÏθηση Στόχων είναι Îνας εξαιÏετικός Ï„Ïόπος για να κατανοήσετε και να μεγιστοποιήσετε την απόδοση του ιστοτόπου σας!", + "NoGoalsNeedAccess": "Μόνος Îνας διαχειÏιστής ή χÏήστης με δικαίωμα Î¥Ï€ÎµÏ Î§Ïήστη μποÏεί να διαχειÏιστεί τους Στόχους για Îνα συγκεκÏιμÎνο ιστοτόπο. ΠαÏακαλοÏμε ζητήστε από τον διαχειÏιστή του Piwik σας να οÏίσει Îνα Στόχο για τον ιστοτόπο σας.<br>Η ΠαÏακολοÏθηση Στόχων είναι Îνας Ï€Î¿Î»Ï ÎºÎ±Î»ÏŒÏ‚ Ï„Ïόπος για να σας βοηθήσει να κατανοήσετε και να μεγιστοποιήσετε την απόδοση του ιστοτόπου σας!", + "NeedAccess": "Μόνος Îνας διαχειÏιστής ή χÏήστης με δικαίωμα Î¥Ï€ÎµÏ Î§Ïήστη μποÏεί να διαχειÏιστεί τους Στόχους για Îνα συγκεκÏιμÎνο ιστοτόπο.", "Optional": "(Ï€ÏοαιÏετικό)", "OverallConversionRate": "%s καθολικός βαθμός Ï€Ïοσόδου (επισκÎψεις με Îναν πλήÏη στόχο)", "OverallRevenue": "%s καθολική Ï€Ïόσοδος", diff --git a/plugins/Goals/lang/es.json b/plugins/Goals/lang/es.json index 5ccb89f6bd360e645df79c28ddb49849cd41c708..4d5a1edc99e07a82d2b378fb00e7c77d549226fd 100644 --- a/plugins/Goals/lang/es.json +++ b/plugins/Goals/lang/es.json @@ -76,7 +76,6 @@ "MatchesExpression": "coincide con la expresión %s", "NewGoalIntro": "El seguimiento de las conversiones del objetivo es una de las maneras más eficaces para medir y mejorar las metas de negocio.", "NewVisitorsConversionRateIs": "La tasa de visitantes nuevos es %s", - "NoGoalsNeedAccess": "Sólo un Administrador o un usuario con acceso Super User puede añadir objetivos para un determinado sitio de internet. Pide a su administrador de Piwik que configure un objetivo para su sitio de internet.<br>El seguimiento de los objetivos es una buena manera para ayudar a entender y maximizar el rendimiento de su sitio de internet!", "Optional": "(opcional)", "OverallConversionRate": "%s tasa global de la conversión (visitas con un objetivo completado)", "OverallRevenue": "%s ingresos totales", diff --git a/plugins/Goals/lang/fi.json b/plugins/Goals/lang/fi.json index 1c5593a88968e28e4ab26d122b8561409764b2a9..22c000b676074957f3c19be05cb3465f562e13d1 100644 --- a/plugins/Goals/lang/fi.json +++ b/plugins/Goals/lang/fi.json @@ -67,7 +67,6 @@ "MatchesExpression": "täsmää lausekkeseen %s", "NewGoalIntro": "Konversion seuranta on yksi tehokkaimmista tavoista mitata ja kehittää yrityksesi päämääriä.", "NewVisitorsConversionRateIs": "Uusien kävijöiden siirtymäaste on %s", - "NoGoalsNeedAccess": "Vain Ylläpitäjä tai Superkäyttäjä voi lisätä Tavoitteita tietylle verkkosivulle. Pyydä Ylläpitäjää asettamaan Tavoite verkkosivullesi. <br>Tavoitteiden seuranta on loistava tapa ymmärtää sekä maksimoida verkkosivusi suoritus!", "Optional": "(vapaavalintainen)", "OverallConversionRate": "%s yleinen siirtymisaste (käynti jossa täytetään tavoite)", "OverallRevenue": "%s yleistuotto", diff --git a/plugins/Goals/lang/fr.json b/plugins/Goals/lang/fr.json index 9a1acaf935252fb485319c2e9ed566c8a15c85d9..c8945cf794723522e1504c5dad06b5028d1d0475 100644 --- a/plugins/Goals/lang/fr.json +++ b/plugins/Goals/lang/fr.json @@ -76,7 +76,8 @@ "MatchesExpression": "correspond à l'expression %s", "NewGoalIntro": "Le suivi de la conversion des objectifs et une des manières les plus efficaces de mesurer et améliorer vos objectifs d'affaires.", "NewVisitorsConversionRateIs": "Le taux de conversion des nouveaux visiteurs est %s", - "NoGoalsNeedAccess": "Uniquement un Administrateur ou un utilisateur avec un accès Super Utilisateur peut ajouter des Objectifs à un site donné. Veuillez demander à votre administrateur Piwik de mettre en place un Objectif pour votre site web. <br \/>Le suivit d'Objectifs est une bonne manière de mieux comprendre et de maximiser les performances de votre site web!", + "NoGoalsNeedAccess": "Uniquement un Administrateur ou un utilisateur avec un accès Super Utilisateur peut gérer les Objectifs d'un site web donné. Veuillez demander à votre administrateur Piwik de mettre en place un Objectif pour votre site web. <br \/>Le suivit d'Objectifs est une bonne manière de mieux comprendre et de maximiser les performances de votre site web!", + "NeedAccess": "Uniquement un administrateur ou un utilisateur avec le rôle super utilisateur peut gérer les objectifs pour un site web.", "Optional": "(optionnel)", "OverallConversionRate": "%s taux de conversion global (visites avec un objectif rempli)", "OverallRevenue": "%s revenu global", diff --git a/plugins/Goals/lang/it.json b/plugins/Goals/lang/it.json index 8cbc9fd02b3f06c602997a28ded405900b3c6fdc..b66b19884d111157e27bafc2b971f067964c9810 100644 --- a/plugins/Goals/lang/it.json +++ b/plugins/Goals/lang/it.json @@ -76,7 +76,6 @@ "MatchesExpression": "soddisfa l'espressione %s", "NewGoalIntro": "Il tracciamento delle Conversioni Goal è uno dei modi più efficaci per misurare e migliorare i vostri obiettivi di business.", "NewVisitorsConversionRateIs": "Il report di conversione dei nuovi visitatori è %s", - "NoGoalsNeedAccess": "Solo un Amministratore o un utente con accesso da Super User può aggiungere dei Goal per un determinato sito. Chiedi altuo amministratore di Piwik di impostare un Goal per il tuo sito. <br>Tracciare dei Goal è un buon modo per aiutare a capire e massimizzare le prestazioni del tuo sito web.", "Optional": "(opzionale)", "OverallConversionRate": "%s report di conversione complessivo (visite con un obiettivo completato)", "OverallRevenue": "%s ricavo complessivo", diff --git a/plugins/Goals/lang/ja.json b/plugins/Goals/lang/ja.json index 3d0f57bb44dac297f1edd5735c4e22e081d52d22..9699895d820120dd81e9d1734dd6647842b175f4 100644 --- a/plugins/Goals/lang/ja.json +++ b/plugins/Goals/lang/ja.json @@ -71,7 +71,6 @@ "MatchesExpression": "æ£è¦è¡¨ç¾ %s ã«ä¸€è‡´ã™ã‚‹", "NewGoalIntro": "目標コンãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒˆãƒ©ãƒƒã‚ングã¯ã€ã‚ãªãŸã®ãƒ“ジãƒã‚¹ç›®æ¨™ã®æ¸¬å®šã‚„改善ã®ãŸã‚ã«ã€æœ€ã‚‚åŠ¹çŽ‡çš„ãªæ–¹æ³•ã®ä¸€ã¤ã§ã™ã€‚", "NewVisitorsConversionRateIs": "æ–°è¦ãƒ“ジターã®ã‚³ãƒ³ãƒãƒ¼ã‚¸ãƒ§ãƒ³çŽ‡ã¯ %s ã§ã™", - "NoGoalsNeedAccess": "管ç†è€…ã¾ãŸã¯ã‚¹ãƒ¼ãƒ‘ーユーザーアクセス権é™ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã¿ãŒã€æŒ‡å®šã®ã‚¦ã‚§ãƒ–サイトã«ç›®æ¨™ã‚’è¿½åŠ ã§ãã¾ã™ã€‚ウェブサイトã«ç›®æ¨™ã‚’è¨å®šã™ã‚‹ã«ã¯ã€Piwik 管ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。<br> 目標ã®è¿½è·¡ã¯ã€ã‚ãªãŸã®ã‚¦ã‚§ãƒ–サイトã¸ã®ç†è§£ã‚’æ·±ã‚ã€ãƒ‘フォーマンスを最大化ã•ã›ã‚‹ãŸã‚ã«ã€éžå¸¸ã«è‰¯ã„方法ã§ã™ã€‚", "Optional": "(オプション)", "OverallConversionRate": "%s ç·ã‚³ãƒ³ãƒãƒ¼ã‚¸ãƒ§ãƒ³çŽ‡ï¼ˆç›®æ¨™é”æˆãƒ“ジット)", "OverallRevenue": "%s ç·åŽç›Š", diff --git a/plugins/Goals/lang/nl.json b/plugins/Goals/lang/nl.json index a0fd1311509512de969c4a28b59256e5c474a572..710f410e2e8419319098502152ecdfe71d038931 100644 --- a/plugins/Goals/lang/nl.json +++ b/plugins/Goals/lang/nl.json @@ -76,7 +76,6 @@ "MatchesExpression": "Voldoet aan de expressie %s", "NewGoalIntro": "Doel Conversie tracking is één van de meest efficiënte manieren om je zaken doelen te meten en te verbeteren.", "NewVisitorsConversionRateIs": "Conversiepercentage nieuwe bezoekers is %s", - "NoGoalsNeedAccess": "Enkel een administrator of een gebruiker met Super User toegang kan Doelen instellen voor een opgegeven website. Gelieve je Piwik administrator te contacteren om doelen op te zetten voor je website. <br>Doelen Opvolgen is een goede manier om je website performantie te begrijpen en maximaliseren!", "Optional": "(optioneel)", "OverallConversionRate": "%s Het algehele conversiepercentageDe algehele totaal inkomsten rate (bezoeken met een voltooide doelstelling)", "OverallRevenue": "%s totale inkomsten", diff --git a/plugins/Goals/lang/ro.json b/plugins/Goals/lang/ro.json index 2259ebe9847df4152a99e4012384cfd99d0158dd..7bec7dd7c29fe18327fbdc7c83aba6c59a8ac637 100644 --- a/plugins/Goals/lang/ro.json +++ b/plugins/Goals/lang/ro.json @@ -65,7 +65,6 @@ "MatchesExpression": "se portiveÅŸte cu expresia %s", "NewGoalIntro": "Urmărirebiectiv conversie este una dintre cele mai eficiente modalități de a măsura È™i îmbunătăți obiectivele de afaceri.", "NewVisitorsConversionRateIs": "Rata de conversie pentru vizitatorii noi este %s", - "NoGoalsNeedAccess": "Numai un administrator sau un utilizator cu acces de Super utilizator poate adăuga Obiective pentru un anumit site web. Vă rugăm să întrebaÈ›i administratorul Piwik pentru a configura un obiectiv pentru site-ul dumneavoastră. cui Urmărire Obiective este o modalitate foarte bună de a ajuta să înÈ›eleagă È™i să maximizeze performanÈ›a site-ul dvs.!", "Optional": "(opÅ£ional)", "OverallConversionRate": "%s Rata de conversie globală (vizite cu un gol)", "OverallRevenue": "%s venit global", diff --git a/plugins/Goals/lang/ru.json b/plugins/Goals/lang/ru.json index 8c9333989efcb1f36e429a81127375b0023b3140..7869ed28fa93760d1b29627fb56caf3de6e56512 100644 --- a/plugins/Goals/lang/ru.json +++ b/plugins/Goals/lang/ru.json @@ -72,7 +72,6 @@ "MatchesExpression": "Ñовпадает Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼ %s", "NewGoalIntro": "ОтÑлеживание доÑтигнутых переходов ÑвлÑетÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из наиболее Ñффективных ÑпоÑобов измерить и улучшить Ñвои бизнеÑ-задачи.", "NewVisitorsConversionRateIs": "КоÑффициент новых поÑетителей %s", - "NoGoalsNeedAccess": "Только ÐдминиÑтратор или пользователь Ñ Ð´Ð¾Ñтупом Супер ÐŸÐ¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ‚ добавлÑть Цели Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñайта. ПожалуйÑта, обратитеÑÑŒ к админиÑтратору Piwik, чтобы Ñоздать Цели Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ Ñайта.<br>ОтÑлеживание Целей отличный ÑпоÑоб, чтобы помочь понÑть и макÑимизировать ÑффективноÑть веб-Ñайта!", "Optional": "(необÑзательно)", "OverallConversionRate": "%s общий коÑффициент конверÑий (переходы Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð½Ð¾Ð¹ целью)", "OverallRevenue": "%s Ð¾Ð±Ñ‰Ð°Ñ Ð¿Ñ€Ð¸Ð±Ñ‹Ð»ÑŒ", diff --git a/plugins/Goals/lang/sr.json b/plugins/Goals/lang/sr.json index d595bda425a4332bf4f88c24536c0d19666ebf6d..6d99bbad146d15ed053ab61121d50ec7e8332ad2 100644 --- a/plugins/Goals/lang/sr.json +++ b/plugins/Goals/lang/sr.json @@ -11,6 +11,10 @@ "BestReferrers": "Reference koje imaju najbolje ispunjenje:", "CaseSensitive": "Obrati pažnju na velika i mala slova", "CancelAndReturnToGoals": "Odustani i %svrati se na listu ciljeva%s", + "CategoryTextGeneral_Visitors": "Lokacije posetilaca", + "CategoryTextReferrers_Referrers": "Reference", + "CategoryTextVisitsSummary_VisitsSummary": "Atributi korisnika", + "CategoryTextGeneral_Visit": "zainteresovanost", "ChooseGoal": "Izaberi cilj", "ClickOutlink": "Klik na link ka eksternom sajtu", "SendEvent": "PoÅ¡alji dogaÄ‘aj", @@ -73,6 +77,7 @@ "NewGoalIntro": "Praćenje ispunjenja ciljeva je jedan od najefikasnijih naÄina za merenje i unapreÄ‘enje vaÅ¡ih poslovnih ciljeva.", "NewVisitorsConversionRateIs": "Stepen ispunjenja od strane novih posetilaca je %s", "NoGoalsNeedAccess": "Samo administrator ili superkorisnik može definisati ciljeve za dati sajt. Molimo vas da zatražite od vaÅ¡eg Piwik administratora da postavi ciljeve za vaÅ¡ sajt.<br>Praćenje ciljeva je odliÄan naÄin za razumevanje i maksimiziranje rada vaÅ¡eg sajta!", + "NeedAccess": "Samo administrator ili superkorisnik može da upravlja ciljevima za dati sajt.", "Optional": "(opciono)", "OverallConversionRate": "%s ukupan stepen ispunjenja (posete sa ispunjenim ciljem)", "OverallRevenue": "%s ukupna zarada", @@ -89,6 +94,8 @@ "UpdateGoal": "Ažuriraj cilj", "URL": "URL", "ViewAndEditGoals": "Prikaz i izmena ciljeva", + "GoalsBy": "Ciljevi za %s", + "GoalsAdjective": "Ciljevi %s", "VisitPageTitle": "Prikaži stranicu", "VisitsUntilConv": "Poseta do ispunjenja", "VisitUrl": "Poseti datu adresu (stranicu ili grupu stranica)", diff --git a/plugins/Goals/lang/sv.json b/plugins/Goals/lang/sv.json index 72140e33f72d1ba6e74eeedbd36aad8b4335fa0a..400e8221f7d6ff9486240930207eaea4337219c5 100644 --- a/plugins/Goals/lang/sv.json +++ b/plugins/Goals/lang/sv.json @@ -76,7 +76,6 @@ "MatchesExpression": "matchar uttrycket %s", "NewGoalIntro": "Att använda mÃ¥l för konvertering är ett av de mest effektiva sätten att mäta och förbättra din affärsverksamhet.", "NewVisitorsConversionRateIs": "Nya besökares omvandlingsgrad är %s", - "NoGoalsNeedAccess": "Bara den som är Administratör eller har ett Superaccess konto kan lägga till mÃ¥l för webbsidan. FrÃ¥ga din Administratör om han eller hon kan sätta upp mÃ¥l för din sida. Att ha mÃ¥l är ett utmärkt sätt att fÃ¥ hjälp att förstÃ¥ hur du maximerar din webbsidas resultat!", "Optional": "(frivilligt)", "OverallConversionRate": "%s total omvandlingsgrad (besök med ett uppnÃ¥tt mÃ¥l)", "OverallRevenue": "%s totala intäkter", diff --git a/plugins/Goals/lang/ta.json b/plugins/Goals/lang/ta.json index a240dfa1fefe064a5f9cfea03b1df2c662e03110..d839b81d38dc072f7813f33aa9db8ab986d14974 100644 --- a/plugins/Goals/lang/ta.json +++ b/plugins/Goals/lang/ta.json @@ -1,6 +1,20 @@ { "Goals": { + "AddGoal": "இலகà¯à®•ை இணைகà¯à®•", + "AddNewGoal": "பà¯à®¤à®¿à®¯ இலகà¯à®•ை இணைதà¯à®¤à®¿à®Ÿà¯à®™à¯à®•ளà¯", + "CategoryTextGeneral_Visitors": "பயனர௠இடமà¯", + "ChooseGoal": "இலகà¯à®•ைத௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®™à¯à®•ளà¯", + "Details": "இலகà¯à®•௠விவரஙà¯à®•ளà¯", + "DeleteGoalConfirm": "%s இலகà¯à®•ை நீகà¯à®•à¯à®µà®¤à®¿à®²à¯ நீஙà¯à®•ள௠உறà¯à®¤à®¿à®¯à®¾à®• இரà¯à®•à¯à®•ிறீரà¯à®•ளா?", "Download": "ஒர௠கோபà¯à®ªà¯ˆ தரவிறகà¯à®•ம௠செயà¯", + "Ecommerce": "மினà¯à®µà®£à®¿à®•à®®à¯", + "EcommerceAndGoalsMenu": "மினà¯à®µà®£à®¿à®•à®®à¯à®®à¯ இலகà¯à®•à¯à®®à¯", + "EcommerceOverview": "மினà¯à®µà®£à®¿à®•ம௠- மேறà¯à®ªà®¾à®°à¯à®µà¯ˆ", + "EcommerceReports": "மினà¯à®µà®£à®¿à®• அறிகà¯à®•ை", + "Filename": "கோபà¯à®ªà®¿à®©à¯ பெயரà¯", + "GoalName": "இலகà¯à®•à¯à®ªà¯ பெயரà¯", + "Goals": "இலகà¯à®•à¯à®•ளà¯", + "GoalsOverview": "இலகà¯à®•௠மேறà¯à®ªà®¾à®°à¯à®µà¯ˆ", "ProductCategory": "பொரà¯à®³à®¿à®©à¯ வகை", "ProductName": "பொரà¯à®³à®¿à®©à¯ பெயரà¯", "Products": "பொரà¯à®Ÿà¯à®•ளà¯", diff --git a/plugins/ImageGraph/ImageGraph.php b/plugins/ImageGraph/ImageGraph.php index 66c18b347760a717007d2d37720cd84af8b3de1a..5cb1be2e618dc043a7e2ddd759b9f9c4610baa0e 100644 --- a/plugins/ImageGraph/ImageGraph.php +++ b/plugins/ImageGraph/ImageGraph.php @@ -31,9 +31,9 @@ class ImageGraph extends \Piwik\Plugin ); /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { $hooks = array( 'API.getReportMetadata.end' => array('function' => 'getReportMetadata', diff --git a/plugins/ImageGraph/lang/it.json b/plugins/ImageGraph/lang/it.json index 35f181ef9ce246b4f78272f1b4122fe291feeef8..b86e0b0dd0145e8301afbe822eb86e971aeebaff 100644 --- a/plugins/ImageGraph/lang/it.json +++ b/plugins/ImageGraph/lang/it.json @@ -1,6 +1,6 @@ { "ImageGraph": { - "ColumnOrdinateMissing": "La colonna '%s' non è stato trovata in questo rapporto. Prova una di queste %s", + "ColumnOrdinateMissing": "La colonna '%s' non è stato trovata in questo report. Prova una di queste %s", "PluginDescription": "Genera delle belle immagini statiche PNG di grafici per ognuno dei tuoi report dati." } } \ No newline at end of file diff --git a/plugins/Insights/Insights.php b/plugins/Insights/Insights.php index 82b515d2aa7ba1bb5ca067411af18ad95733a8f4..9f02d7f17af312c1c1c95caa1270612a54a6dd34 100644 --- a/plugins/Insights/Insights.php +++ b/plugins/Insights/Insights.php @@ -13,9 +13,9 @@ namespace Piwik\Plugins\Insights; class Insights extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/Insights/lang/cs.json b/plugins/Insights/lang/cs.json index 1589d24ed2c2c802957659724aae8fbdd9e786ab..f3897366924a0b312785479ffbf472f586466661 100644 --- a/plugins/Insights/lang/cs.json +++ b/plugins/Insights/lang/cs.json @@ -1,5 +1,6 @@ { "Insights": { + "PluginDescription": "Poskytuje vhledy o vaÅ¡em provozu. Vhledy jsou dostupné buÄ jako widgety na nástÄ›nce, nebo jako nová ikona v hlášenÃch, která zobrazuje nejdůležitÄ›jšà trendy v datech.", "ControlComparedToDescription": "Růst ve srovnánà s", "ControlFilterByDescription": "Zobrazit vÅ¡echny, pouze hybatele, pouze nové nebo ztracené", "DatePeriodCombinationNotSupported": "Pro tuto kombinaci obdobà a data nenà možné vytvoÅ™it vhledy.", diff --git a/plugins/Insights/lang/de.json b/plugins/Insights/lang/de.json index 250e225adb199e4e69f483a60d8a64dda427c1e9..07b2e9a8c49aea60d46460b6f48ac1eea7aab801 100644 --- a/plugins/Insights/lang/de.json +++ b/plugins/Insights/lang/de.json @@ -3,7 +3,7 @@ "PluginDescription": "Stellt Einblicke in ihren Traffic zur Verfügung. Diese \"Einblicke\" sind verfügbar als Dashboard Widgets sowie über ein neues Icon in den Berichten, dass Ihnen die Möglichkeit gibt die wichtigsten Trends ihrer Daten zu sehen.", "ControlComparedToDescription": "Wachstum verglichen mit", "ControlFilterByDescription": "Zeige alle, nur Verschiebungen, nur neue oder nur Ausstiege", - "DatePeriodCombinationNotSupported": "Es ist nicht möglich, Ansichten für dieses Datums- und Zeitbereichskombination zu generieren.", + "DatePeriodCombinationNotSupported": "Es ist nicht möglich, Ansichten für diese Datums- und Zeitraumskombination zu generieren.", "DayComparedToPreviousDay": "vorheriger Tag", "DayComparedToPreviousWeek": "gleicher Tag in vorheriger Woche", "DayComparedToPreviousYear": "gleicher Tag im vorherigen Jahr", diff --git a/plugins/Insights/lang/it.json b/plugins/Insights/lang/it.json index 750eebbc346719e29e272b1f44b2cb51959f7fbf..91296833d96624f59b927764fcd917c1c9bd9ede 100644 --- a/plugins/Insights/lang/it.json +++ b/plugins/Insights/lang/it.json @@ -9,22 +9,22 @@ "DayComparedToPreviousYear": "lo stesso giorno dell'anno precedente", "Filter": "Filtro", "FilterIncreaserAndDecreaser": "Crescono & Diminuiscono", - "FilterOnlyDecreaser": "Diminuiscono solamente", - "FilterOnlyDisappeared": "Scomparse solamente", - "FilterOnlyIncreaser": "Crescono solamente", - "FilterOnlyMovers": "Solo protagonisti", - "FilterOnlyNew": "Solo nuovo", + "FilterOnlyDecreaser": "Solo diminuite", + "FilterOnlyDisappeared": "Solo scomparse", + "FilterOnlyIncreaser": "Solo aumentate", + "FilterOnlyMovers": "Solo protagoniste", + "FilterOnlyNew": "Solo nuove", "IgnoredChanges": "Le variazioni che interessano meno di %s visite sono state ignorate.", "MonthComparedToPreviousMonth": "mese precedente", "MonthComparedToPreviousYear": "stesso mese dell'anno precedente", - "MoversAndShakersWidgetTitle": "Protagonisti", + "MoversAndShakersWidgetTitle": "Protagoniste di tendenza", "NoResultMatchesCriteria": "Nessuna riga corrisponde ai criteri", "OverviewWidgetTitle": "Panoramica Approfondimenti", - "TitleConsideredInsightsChanges": "Righe aumentate o diminuite di almeno %1$s visite (%2$s%% di %3$s%% visite).", + "TitleConsideredInsightsChanges": "Righe aumentate o diminuite di almeno %1$s visite (%2$s%% di %3$s visite totali).", "TitleConsideredInsightsGrowth": "Le righe seguenti hanno una crescita di almeno %1$s%% comparata a %2$s.", - "TitleConsideredMoversAndShakersChanges": "Sono considerate protagoniste se sono cresciute di più di %1$s%% visite o si sono contratte di meno di %2$s%% visite, nuove entrate se sono aumentate di più di %3$s%% visite (%4$s), e righe scomparse se si sono contratte di meno di %5$s%% visite (%6$s).", + "TitleConsideredMoversAndShakersChanges": "Sono considerate protagoniste solo se sono cresciute di più di %1$s%% visite o si sono contratte di meno di %2$s%% visite, nuove entrate solo se sono aumentate di più di %3$s%% visite (%4$s), e righe scomparse se si sono contratte di meno di %5$s%% visite (%6$s).", "TitleConsideredMoversAndShakersGrowth": "%1$s cambiate da %2$s a %3$s comparate a %4$s. Basandoci su ciò ci si aspetta un'evoluzione per ciascuna riga di %5$s%%.", - "TitleRowChangeDetails": "'%1$s' è cambiato da %2$s (%3$s) a %4$s (%5$s) %6$s", + "TitleRowChangeDetails": "'%1$s' è cambiato da %2$s (%3$s) a %4$s (%5$s) %6$s.", "TitleRowDisappearedDetails": "'%1$s' è diminuita di %2$s e scomparsa in %3$s comparata a %4$s.", "TitleRowMoverAndShaker": "Questa riga ha avuto un impatto più alto della media.", "TitleRowNewDetails": "'%1$s' è aumentata di %2$s ed è nuova comparata a %3$s.", diff --git a/plugins/Insights/lang/sr.json b/plugins/Insights/lang/sr.json index 91e4542cef79e456c020bc603dea913e4ddc1ead..0e5a3c93e3c53d3c53f193df642b63d460ac275f 100644 --- a/plugins/Insights/lang/sr.json +++ b/plugins/Insights/lang/sr.json @@ -1,5 +1,6 @@ { "Insights": { + "PluginDescription": "Omogućuje tzv. uvide u vaÅ¡ saobraćaj. Uvidi su na raspolaganju u vidu vidžeta za konzolu i kao sliÄice u izveÅ¡tajima i preko njih možete videti najbitnije trendove vaÅ¡ih podataka.", "ControlComparedToDescription": "Rast u poreÄ‘enju sa", "ControlFilterByDescription": "Prikaži sve, samo movers, samo nove ili samo one koji su nestali", "DatePeriodCombinationNotSupported": "Nije moguće generisati uvid za datu kombinaciju datuma i perioda.", diff --git a/plugins/Installation/.gitignore b/plugins/Installation/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..79a7fe6d2885c2b98b68ec229d32eba31033a06e --- /dev/null +++ b/plugins/Installation/.gitignore @@ -0,0 +1 @@ +tests/System/processed/*xml diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php index 7352a0df6e0f3b8da7c7f7187f9e1530f1f4be75..b73f35751fc7392ed6801ac36ee86c8584d3ff6a 100644 --- a/plugins/Installation/Controller.php +++ b/plugins/Installation/Controller.php @@ -471,6 +471,9 @@ class Controller extends \Piwik\Plugin\ControllerAdmin */ public function saveLanguage() { + if (DbHelper::isInstalled()) { + $this->checkTokenInUrl(); + } $language = $this->getParam('language'); LanguagesManager::setLanguageForSession($language); Url::redirectToReferrer(); diff --git a/plugins/Installation/Installation.php b/plugins/Installation/Installation.php index 6a53bec2775cdb90a4031b14f8903bfefd5be2c3..47602c8543228892aee6f37870de4949e9023bb5 100644 --- a/plugins/Installation/Installation.php +++ b/plugins/Installation/Installation.php @@ -26,9 +26,9 @@ class Installation extends \Piwik\Plugin protected $installationControllerName = '\\Piwik\\Plugins\\Installation\\Controller'; /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { $hooks = array( 'Config.NoConfigurationFile' => 'dispatch', diff --git a/plugins/Installation/ServerFilesGenerator.php b/plugins/Installation/ServerFilesGenerator.php index 64ad8e83d87a8c0d1c1d02adddcd0cd3ee06192f..fcd780523d96bd2cc6bd1b6042632f2c36da8663 100644 --- a/plugins/Installation/ServerFilesGenerator.php +++ b/plugins/Installation/ServerFilesGenerator.php @@ -39,7 +39,7 @@ class ServerFilesGenerator "</IfModule>\n\n" . "# Allow to serve static files which are safe\n" . - "<Files ~ \"\\.(gif|ico|jpg|png|svg|js|css|htm|html|swf|mp3|mp4|wav|ogg|avi)$\">\n" . + "<Files ~ \"\\.(gif|ico|jpg|png|svg|js|css|htm|html|swf|mp3|mp4|wav|ogg|avi|ttf)$\">\n" . $allow . "\n" . "</Files>\n"; diff --git a/plugins/Installation/lang/cs.json b/plugins/Installation/lang/cs.json index 12abcb41eafcb8ca4188a6395c1ace87918f10e6..b6ffa6dba8357e71ce2a6ca1eeb45bdcdc106354 100644 --- a/plugins/Installation/lang/cs.json +++ b/plugins/Installation/lang/cs.json @@ -15,6 +15,7 @@ "DatabaseSetupLogin": "uživatelské jméno", "DatabaseSetupServer": "server s databázÃ", "DatabaseSetupTablePrefix": "prefix tabulek", + "Email": "E-mail", "Extension": "pÅ™Ãpona", "Filesystem": "Souborový systém", "GetInvolved": "Pokud se vám lÃbÃ, co vidÃte, %1$szapojte se%2$s.", @@ -37,7 +38,9 @@ "NfsFilesystemWarningSuffixInstall": "Sessions založené na souborech jsou na NFS velmi pomalé. Proto Piwik použije databázové sessions. Pokud bude k nástÄ›nkám pÅ™istupovat souÄasnÄ› hodnÄ› uživatelů, možná budete muset zvýšit maximálnà poÄet klientských databázových spojenà v konfiguraci databázového serveru.", "NoConfigFound": "KonfiguraÄnà soubor Piwiku nebyl nalezen a snažÃte se vstoupit na stránku Piwiku.<br \/><b> » Můžete <a href='index.php'>teÄ nainstalovat<\/a><\/b><br \/><small>Pokud jste Piwik již instalovali a máte v DB nÄ›jaké tabulky, nemÄ›jte obavy. Můžete je použÃt a zachovat jejich data.!<\/small>", "Optional": "Volitelné", + "Password": "Heslo", "PasswordDoNotMatch": "hesla si neodpovÃdajÃ", + "PasswordRepeat": "Heslo (zopakujte)", "PercentDone": "%s %% hotovo", "PleaseFixTheFollowingErrors": "ProsÃm opravte následujÃcà chyby", "DefaultSettings": "Výchozà nastavenà Piwiku", @@ -50,10 +53,13 @@ "SeeBelowForMoreInfo": "Pro vÃce informacà se podÃvejte nÞe.", "SetupWebsite": "Nastavit Web", "SetupWebsiteError": "PÅ™i pÅ™idávánà Webu se vyskytla chyba", + "SetupWebSiteName": "Jméno webových stránek", "SetupWebsiteSetupSuccess": "Web %s byl úspěšnÄ› vytvoÅ™en", + "SetupWebSiteURL": "URL webových stránek", "SiteSetup": "ProsÃm vytvoÅ™te prvnà stránky, které budou sledovány a analyzovány Piwikem:", "SiteSetupFootnote": "Poznámka: Jakmile bude instalace Piwiku dokonÄena, budete moct pÅ™idat dalšà stránky ke sledovánÃ.", "SuperUser": "Super uživatel", + "SuperUserLogin": "PÅ™ihlaÅ¡ovacà jméno super uživatele", "SuperUserSetupError": "PÅ™i pÅ™idávánà super uživatele doÅ¡lo k chybÄ›", "SuperUserSetupSuccess": "Super uživatel úspěšnÄ› vytvoÅ™en", "SystemCheck": "Kontrola systému", @@ -67,6 +73,7 @@ "SystemCheckExtensions": "Dalšà požadovaná rozÅ¡ÃÅ™enÃ", "SystemCheckFileIntegrity": "Integrita souborů", "SystemCheckFunctions": "Vyžadované funkce", + "SystemCheckFunctionHelp": "Tuto vestavÄ›nou funkci musÃte povolit.", "SystemCheckGDFreeType": "GT > 2.x + Freetype (grafika)", "SystemCheckGDHelp": "Sparkliny (malé grafy) nebudou fungovat.", "SystemCheckGlobHelp": "Tato vestavÄ›ná funkce byla na vaÅ¡em hostiteli zakázaná. Piwik se pokusà tuto funkci emulovat, ale můžete zaznamenat dalšà bezpeÄnostnà omezenÃ. Toto bude mÃt vliv na funÄnost", @@ -97,6 +104,7 @@ "SystemCheckSummaryThereWereWarnings": "JVyskytly se problémy s vaÅ¡Ãm systémem. Piwik poběžÃ, ale možná se nevyhnete menÅ¡Ãm problémům.", "SystemCheckTimeLimitHelp": "na webech s vysokým pÅ™enosem, může archivace vyžadovat vÃce Äasu, než je nynà povoleno.<br \/>Pokud je potÅ™eba podÃvejte se na direktivu max_execution_time ve vaÅ¡em souboru php.ini", "SystemCheckTracker": "Stav sledovánÃ", + "SystemCheckTrackerHelp": "Get požadavek na piwik.php selhal. Zkuste vylouÄit tuto URL z HTTP autentizace a zakažte mod_security (možná budete muset požádat vaÅ¡eho poskytovatele hostingu). VÃce informacà naleznete v záznamu chyb web serveru.", "SystemCheckWarnDomHelp": "MÄ›li byste povolit \"dom\" rozÅ¡ÃÅ™enà t. j. nainstalovat balÃÄek \"php-dom\" nebo \"php-xml\".", "SystemCheckWarning": "Piwik bude pracovat normálnÄ›, ale nÄ›které funkce budou chybÄ›t", "SystemCheckWarnJsonHelp": "Pro lepšà výkon byste mÄ›li povolit rozÅ¡ÃÅ™enà \"json\" t. j. nainstalovat balÃÄek \"php-json\".", @@ -121,6 +129,7 @@ "TablesUpdatedSuccess": "Databáze byla úspěšnÄ› aktualizována z %1$s na %2$s!", "TablesWarningHelp": "Vyberte buÄ použità existujicÃch tabulek, nebo Äistou instalaci, která v databázi smaže existujÃcà data.", "TablesWithSameNamesFound": "NÄ›které %1$s tabulky ve vašà databázi %2$s majà stejná jména jako tabulky, které se snažà vytvoÅ™it Piwik", + "Timezone": "ÄŒasové pásmo webových stránek", "WeHopeYouWillEnjoyPiwik": "Doufáme, že si užijete použÃvánà Piwiku tak, jako si my užÃváme jeho vývoj.", "Welcome": "VÃtejte!", "WelcomeHelp": "<p>Piwik je open source program pro analýzu webu, pomocà kterého můžete jednoduÅ¡e zÃskat informace, které chcete od vaÅ¡Ãch návÅ¡tÄ›vnÃků.<\/p><p>Tento proces je rozdÄ›len to %s jednoduchých kroků a zabere pÅ™ibližne 5 minut.<\/p>", diff --git a/plugins/Installation/lang/de.json b/plugins/Installation/lang/de.json index 554cc875e1f98dc16aa158626762c497740977cd..440e1af1f7158c24867ffd3d9e408a0710335d34 100644 --- a/plugins/Installation/lang/de.json +++ b/plugins/Installation/lang/de.json @@ -86,7 +86,7 @@ "SystemCheckMbstringHelp": "Die mbstring-Erweiterung wird benötigt, um multibyte-Zeichen in der Benutzeroberfläche und in den API-Antworten zu verarbeiten. Bitte überprüfen Sie ebenfalls, ob mbstring.func_overload in der php.ini auf \"0\" gesetzt ist.", "SystemCheckMemoryLimit": "Speicherlimit", "SystemCheckMemoryLimitHelp": "Auf einer stark frequentierten Website könnte es passieren, dass die Archivierung mehr Speicher erfordert als erlaubt. Falls erforderlich, ändern Sie den memory_limit Wert in ihrer php.ini Datei.", - "SystemCheckOpenURL": "URL", + "SystemCheckOpenURL": "Öffnen einer URL", "SystemCheckOpenURLHelp": "Eintragen in den Newsletter, Aktualisierungshinweise und Ein-Klick-Aktualisierungen erfordern die \"curl\" Erweiterung, allow_url_fopen=On und fsockopen() aktiviert.", "SystemCheckOtherExtensions": "Andere Erweiterungen", "SystemCheckOtherFunctions": "Andere Funktionen", diff --git a/plugins/Installation/lang/sr.json b/plugins/Installation/lang/sr.json index c8896c5f97df963cce6473109378827035049a41..45dd3d36b1dcc2c4c6f400522df822e17a6fd649 100644 --- a/plugins/Installation/lang/sr.json +++ b/plugins/Installation/lang/sr.json @@ -15,6 +15,7 @@ "DatabaseSetupLogin": "korisniÄko ime", "DatabaseSetupServer": "server", "DatabaseSetupTablePrefix": "prefiks tabela", + "Email": "Mejl", "Extension": "proÅ¡irenje", "Filesystem": "Sistem datoteka", "GetInvolved": "Ukoliko vam se sviÄ‘a ono Å¡to vidite, možete %1$suzeti uÄešće%2$s.", @@ -37,7 +38,9 @@ "NfsFilesystemWarningSuffixInstall": "Korišćene sesija na bazi datoteka na NFS sistemu je jako sporo tako da će piwik koristiti sesije u bazi podataka. Ako imate puno istovremenih korisnika Konzole, možda ćete morati da povećate maksimalan broj klijentskih konekcija ka serveru sa bazom.", "NoConfigFound": "Piwik datoteka sa podeÅ¡avanjima nije naÄ‘ena u momentu dok vi pokuÅ¡avate da pristupite Piwik stranici.<br \/><b>  » Kliknite ovde kako biste <a href='index.php'>instalirali Piwik<\/a><\/b><br \/><small>Ukoliko ste već ranije instalirali Piwik i imate neke tabele u bazi podataka, bez brige: možete nastaviti da ih koristite i zadržite postojeće podatke!<\/small>", "Optional": "Opciono", + "Password": "Lozinka", "PasswordDoNotMatch": "lozinke se ne podudaraju", + "PasswordRepeat": "Lozinka (ponovo)", "PercentDone": "%s %% ZavrÅ¡eno", "PleaseFixTheFollowingErrors": "Molimo vas da ispravite sledeće greÅ¡ke", "DefaultSettings": "Podrazumevana Piwik podeÅ¡avanja", @@ -50,10 +53,13 @@ "SeeBelowForMoreInfo": "Pogledajte ispod za viÅ¡e informacija.", "SetupWebsite": "PodeÅ¡avanje sajta", "SetupWebsiteError": "DoÅ¡lo je do greÅ¡ke prilikom dodavanja sajta", + "SetupWebSiteName": "Naziv sajta", "SetupWebsiteSetupSuccess": "Sajt %s je uspeÅ¡no ubaÄen!", + "SetupWebSiteURL": "Adresa sajta", "SiteSetup": "Molimo vas da podesite prvi sajt koji želite da pratite i analizirate pomoću Piwik-a:", "SiteSetupFootnote": "Kada se zavrÅ¡i instalacija moći ćete da dodate joÅ¡ sajtova za praćenje!", "SuperUser": "Superkorisnik", + "SuperUserLogin": "Superkorisnik", "SuperUserSetupError": "DoÅ¡lo je do greÅ¡ke prilikom dodavanja superkorisnika", "SuperUserSetupSuccess": "Superkorisnik uspeÅ¡no kreiran!", "SystemCheck": "Provera sistema", @@ -67,6 +73,7 @@ "SystemCheckExtensions": "Potrebna proÅ¡irenja", "SystemCheckFileIntegrity": "Integritet datoteka", "SystemCheckFunctions": "Potrebne funkcije", + "SystemCheckFunctionHelp": "Morate da ukljuÄite ovu funkciju.", "SystemCheckGDFreeType": "GD > 2.x + Freetype (grafikoni)", "SystemCheckGDHelp": "Mali grafikoni (linije sa taÄkicama) neće raditi", "SystemCheckGlobHelp": "Ova funkcija je iskljuÄena na vaÅ¡em serveru. Piwik će pokuÅ¡ati da je emulira ali može da naleti na neke dalja sigurnosna ograniÄenja. Svakako će biti uticaja na funkcionalnost.", @@ -97,6 +104,7 @@ "SystemCheckSummaryThereWereWarnings": "Postoje izvesni problemi sa vaÅ¡im sistemom. Piwik će raditi ali možete iskusiti manje probleme.", "SystemCheckTimeLimitHelp": "Na sajtovima sa visokim saobraćajem proces arhiviranja podataka može zahtevati viÅ¡e vremena nego Å¡to je to trenutno dozvoljeno.<br \/>Promenite vrednost parametra max_execution_time u php.ini datoteci ukoliko je to neophodno.", "SystemCheckTracker": "Status trekera", + "SystemCheckTrackerHelp": "GET zahtev ka piwik.php nije uspeo. PokuÅ¡ajte da stavite ovu adresu na belu listu za mod_security i HTTP Authentication. Za viÅ¡e informacija o ovoj greÅ¡ci pogledajte serverski zapis sa greÅ¡kama.", "SystemCheckWarnDomHelp": "Trebalo bi da ukljuÄite \"dom\" proÅ¡irenje (instalirajte npr. \"php-dom\" i\/ili \"php-xml\" paket).", "SystemCheckWarning": "Piwik će raditi normalno ali neke funkcije neće biti dostupne", "SystemCheckWarnJsonHelp": "Trebalo bi da ukljuÄite \"json\" proÅ¡irenje (instalirajte npr. \"php-json\" paket) zarad boljih performansi", @@ -121,6 +129,7 @@ "TablesUpdatedSuccess": "Baza podataka je uspeÅ¡no nadograÄ‘ena sa verzije %1$s na verziju %2$s!", "TablesWarningHelp": "Ili izaberite opciju da nastavite sa korišćenjem postojećih tabela ili opciju nove instalacije Äime ćete obrisati postojeće podatke iz baze", "TablesWithSameNamesFound": "Neke %1$s tabele u vaÅ¡oj bazi %2$s imaju ista imena kao i tabele koje Piwik pokuÅ¡ava da kreira", + "Timezone": "Vremenska zona sajta", "WeHopeYouWillEnjoyPiwik": "Nadamo se da ćete uživati u korišćenju Piwik-a isto koliko smo mi uživali u njegovom stvaranju.", "Welcome": "DobrodoÅ¡li!", "WelcomeHelp": "<p>Piwik je alat otvorenog koda za analizu saobraćaja na sajtovima koji vam na lak naÄin pruža željene informacije o vaÅ¡im posetiocima.<\/p><p>Proces instalacije je podeljen na %s jednostavnih koraka i zahteva svega 5 minuta vaÅ¡eg vremena.<\/p>", diff --git a/plugins/Installation/lang/ta.json b/plugins/Installation/lang/ta.json index 5119c446d6fd63958d7a1f209128d32f1f46e886..a8db325676185f3edf86861adf402345da6fd09f 100644 --- a/plugins/Installation/lang/ta.json +++ b/plugins/Installation/lang/ta.json @@ -1,7 +1,10 @@ { "Installation": { + "CollaborativeProject": "பிவிக௠எனà¯à®ªà®¤à¯ உலகமெஙà¯à®•à¯à®®à¯ ஒதà¯à®¤ கரà¯à®¤à¯à®¤à¯à®®à¯ அனà¯à®ªà¯à®®à¯ கொணà¯à®Ÿ பெரà¯à®®à®•à¯à®•ளால௠கடà¯à®Ÿà®®à¯ˆà®•à¯à®•பà¯à®ªà®Ÿà¯à®®à¯ கூடà¯à®Ÿà¯ à®®à¯à®¯à®±à¯à®šà®¿à®¤à¯ திடà¯à®Ÿà®ªà¯à®ªà®£à®¿ ஆகà¯à®®à¯.", + "Congratulations": "வாழà¯à®¤à¯à®¤à¯à®•ளà¯!", "DatabaseAbilities": "தரவà¯à®¤à¯à®¤à®³ திறனà¯à®•ளà¯", "DatabaseCreation": "தரவà¯à®¤à¯à®¤à®³ உரà¯à®µà®¾à®•à¯à®•à®®à¯", + "DatabaseErrorConnect": "தரவà¯à®¤à¯à®¤à®³ வழஙà¯à®•à¯à®¨à®°à¯ˆà®¤à¯ தொடரà¯à®ªà¯ கொளà¯à®³à¯à®®à¯ போத௠தவற௠நேரà¯à®¨à¯à®¤à¯à®³à¯à®³à®¤à¯!", "DatabaseServerVersion": "தரவà¯à®¤à¯à®¤à®³ சரà¯à®µà®°à¯ பதிபà¯à®ªà¯", "DatabaseSetup": "தரவà¯à®¤à¯à®¤à®³ அமைபà¯à®ªà¯ à®®à¯à®±à¯ˆ", "DatabaseSetupAdapter": "இசைவாகà¯à®•ி", @@ -9,18 +12,50 @@ "DatabaseSetupLogin": "பà¯à®•à¯à®ªà®¤à®¿à®•ை", "DatabaseSetupServer": "தரவà¯à®¤à¯à®¤à®³ சரà¯à®µà®°à¯", "DatabaseSetupTablePrefix": "அடà¯à®Ÿà®µà®£à¯ˆ à®®à¯à®©à¯à®µà¯ˆ", + "Email": "மினà¯à®©à®žà¯à®šà®²à¯", "Extension": "நீடà¯à®Ÿà®¿à®ªà¯à®ªà¯", "Filesystem": "கோபà¯à®ªà¯ à®®à¯à®±à¯ˆ", "Installation": "நிறà¯à®µà®²à¯", "InstallationStatus": "நிறà¯à®µà¯à®¤à®²à¯ நிலை", + "Legend": "மேதை", "Optional": "விரà¯à®ªà¯à®ªà®¤à¯à®¤à¯‡à®°à¯à®µà¯", + "Password": "கடவà¯à®šà¯à®šà¯Šà®²à¯", "PasswordDoNotMatch": "கடவà¯à®šà¯à®šà¯Šà®²à¯ பொரà¯à®¨à¯à®¤à®µà®¿à®²à¯à®²à¯ˆ", + "PasswordRepeat": "கடவà¯à®šà¯ சொலà¯(மீணà¯à®Ÿà¯à®®à¯ உளà¯à®³à®¿à®Ÿà¯à®•)", + "PleaseFixTheFollowingErrors": "கீழà¯à®•à¯à®•ாணà¯à®®à¯ தவறà¯à®•ளைத௠திரà¯à®¤à¯à®¤à¯à®™à¯à®•ளேனà¯", + "DefaultSettings": "பிவிக௠இயலà¯à®ªà¯ அமைபà¯à®ªà¯à®•ளà¯", + "Requirements": "பிவிக௠தேவைகளà¯", + "PiwikOrgNewsletter": "பிவிக௠சமூகதà¯à®¤à®¿à®©à¯ à®®à¯à®•à¯à®•ியமான விவரஙà¯à®•ளை எனகà¯à®•௠மினà¯à®©à®žà¯à®šà®²à¯ இடà¯à®™à¯à®•ளà¯!", + "SeeBelowForMoreInfo": "மேலதிக விவரஙà¯à®•ளà¯à®•à¯à®•à¯à®•௠கீழà¯à®³à¯à®³à®µà®±à¯à®±à¯ˆà®•௠காணà¯à®•.", + "SetupWebsite": "இணையதà¯à®¤à®³à®¤à¯à®¤à¯ˆ அமைகà¯à®•.", "SetupWebsiteError": "இணையதளதà¯à®¤à¯ˆ சேரà¯à®ªà¯à®ªà®¤à®¿à®²à¯ பிழை உளà¯à®³à®¤à¯", + "SetupWebSiteName": "இணையதà¯à®¤à®³à®¤à¯à®¤à®¿à®©à¯ பெயரà¯", "SetupWebsiteSetupSuccess": "இணையதளம௠%s வெறà¯à®±à®¿à®•ரமாக உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯!", + "SetupWebSiteURL": "இணையதà¯à®¤à®³ à®®à¯à®•வரி", + "SuperUser": "உயர௠பயனரà¯", + "SuperUserLogin": "உயர௠பயனர௠உளà¯à®¨à¯à®´à¯ˆà®µà¯", + "SuperUserSetupError": "உயர௠பயனரை உரà¯à®µà®¾à®•à¯à®•à¯à®®à¯ போத௠தவற௠நடநà¯à®¤à¯à®³à¯à®³à®¤à¯.", + "SuperUserSetupSuccess": "உயர௠பயனர௠உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¾à®°à¯", + "SystemCheckFileIntegrity": "கோபà¯à®ªà¯ à®’à®°à¯à®™à¯à®•மைபà¯à®ªà¯", + "SystemCheckFunctions": "தேவையான செயலà¯à®ªà®¾à®Ÿà¯à®•ளà¯", + "SystemCheckFunctionHelp": "நீஙà¯à®•ள௠இநà¯à®¤ அடிபà¯à®ªà®Ÿà¯ˆà®šà¯ செயலà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ˆ நடைமà¯à®±à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤ வேணà¯à®Ÿà¯à®®à¯.", + "SystemCheckMemoryLimit": "நினைவக அளவà¯", "SystemCheckOpenURL": "வெளிபà¯à®ªà®Ÿà¯ˆà®¯à®¾à®© இணைபà¯à®ªà¯à®•ளà¯(உரலி)", "SystemCheckOtherExtensions": "மறà¯à®± நீடà¯à®Ÿà®¿à®ªà¯à®ªà¯à®•ளà¯", "SystemCheckOtherFunctions": "மறà¯à®± செயலà¯à®ªà®¾à®Ÿà¯à®•ளà¯", "SystemCheckPhp": "பிஎசà¯à®ªà®¿ பதிபà¯à®ªà¯", - "SystemCheckTracker": "கணà¯à®•ாணிபà¯à®ªà¯ நிலை" + "SystemCheckTracker": "கணà¯à®•ாணிபà¯à®ªà¯ நிலை", + "SystemCheckWriteDirs": "எழà¯à®¤ ஒபà¯à®ªà¯à®¤à®²à¯ உளà¯à®³ அடைவà¯à®•ளà¯", + "NotSupported": "ஆதரிகà¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ", + "Tables": "அடà¯à®Ÿà®µà®£à¯ˆà®•ள௠உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®•௠கொணà¯à®Ÿà®¿à®°à¯à®•à¯à®•ினà¯à®±à®©.", + "TablesCreatedSuccess": "வெறà¯à®±à®¿à®•ரமாக அடà¯à®Ÿà®µà®£à¯ˆà®•ள௠உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®©.", + "TablesDelete": "கணà¯à®Ÿà®±à®¿à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³ அடà¯à®Ÿà®µà®£à¯ˆà®¯à¯ˆ நீகà¯à®•à¯à®•.", + "TablesDeletedSuccess": "à®à®±à¯à®•ெனவே இரà¯à®¨à¯à®¤ பிவிக௠அடà¯à®Ÿà®µà®£à¯ˆà®•ள௠வெறà¯à®±à®¿à®•ரமாக நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®©.", + "TablesFound": "தரவà¯à®¤à¯à®¤à®³à®¤à¯à®¤à®¿à®²à¯ பினà¯à®µà®°à¯à®®à¯ அடà¯à®Ÿà®µà®£à¯ˆà®•ள௠கணà¯à®Ÿà®±à®¿à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà®©.", + "TablesReuse": "à®à®±à¯à®•ெனவே உளà¯à®³ அடà¯à®Ÿà®µà®£à¯ˆà®¯à¯ˆ மீணà¯à®Ÿà¯à®®à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•.", + "TablesUpdatedSuccess": "தரவà¯à®¤à¯à®¤à®³à®®à¯ வெறà¯à®±à®¿à®•ரமாக %1$s இல௠இரà¯à®¨à¯à®¤à¯ %2$s இறà¯à®•௠உயரà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯!", + "Welcome": "வரà¯à®•! நலà¯à®µà®°à®µà¯!", + "WelcomeToCommunity": "பிவிக௠சமூகதà¯à®¤à®¿à®±à¯à®•à¯à®¤à¯ தஙà¯à®•ளை வரவேறà¯à®•ிறோமà¯!", + "CannotConnectToDb": "தரவà¯à®¤à¯ தளதà¯à®¤à¯ˆ இணைகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ" } } \ No newline at end of file diff --git a/plugins/Installation/lang/zh-cn.json b/plugins/Installation/lang/zh-cn.json index 85adf949ad98c9158e8c98bcccba1cc012b23bd7..edf6caa2a60a20efb7af5cb695a494d15d718684 100644 --- a/plugins/Installation/lang/zh-cn.json +++ b/plugins/Installation/lang/zh-cn.json @@ -44,8 +44,10 @@ "PercentDone": "%s %% 已完æˆ", "PleaseFixTheFollowingErrors": "请修å¤ä»¥ä¸‹é”™è¯¯", "DefaultSettings": "默认 Piwik 设置", + "DefaultSettingsHelp": "Piwik自带的默认设置。现在,您å¯ä»¥è‡ªå®šä¹‰å®ƒä»¬æˆ–ç¨åŽåœ¨ç®¡ç†ä»‹é¢ä¸Šåšã€‚", "Requirements": "Piwik 需求", "RestartWebServer": "åšè¿‡è¿™ä¸ªæ”¹åЍ之åŽï¼Œè¯·é‡æ–°å¯åŠ¨ç½‘ç»œæœåŠ¡å™¨ã€‚", + "ReusingTables": "é‡ç”¨çš„表", "PiwikOrgNewsletter": "邮件通知我é‡å¤§çš„ Piwik 社区更新", "PiwikProNewsletter": "给我å‘é€ %sPiwik PRO%s 的折扣和æœåŠ¡ç›¸å…³çš„ä¿¡æ¯", "SeeBelowForMoreInfo": "更详细的信æ¯è¯·çœ‹ä¸‹é¢", @@ -71,6 +73,7 @@ "SystemCheckExtensions": "其他需è¦çš„æ‰©å±•组件", "SystemCheckFileIntegrity": "文件完整性", "SystemCheckFunctions": "必需的函数", + "SystemCheckFunctionHelp": "您需è¦å¯ç”¨è¿™ä¸ªå†…置的功能。", "SystemCheckGDFreeType": "GD > 2.x + Freetype (graphics)", "SystemCheckGDHelp": "波形图 (å°å›¾) å°†æ— æ³•æ˜¾ç¤ºï¼", "SystemCheckGlobHelp": "这个内置函数在您的主机上已åœç”¨ã€‚Piwik 会å°è¯•模拟这个功能,但å¯èƒ½ä¼šé‡åˆ°å…¶å®ƒçš„安全é™åˆ¶ï¼ŒåŠŸèƒ½å¯èƒ½å—到影å“。", @@ -80,6 +83,7 @@ "SystemCheckJsonHelp": "Piwik éœ€è¦ php5-json 扩展æ¥è¯»å†™ JSON æ•°æ®ã€‚", "SystemCheckMailHelp": "æ„è§å馈åŠå¿˜è®°å¯†ç ä¿¡æ¯è‹¥æ²’有 mail() å°†æ— æ³•å¯„é€ã€‚", "SystemCheckMbstring": "mbstring", + "SystemCheckMbstringHelp": "這個mbstring扩展需è¦å¤„ç†å¤šå—节å—符的用户界é¢å’ŒAPIå“åº”ã€‚åŒæ—¶è¯·æ£€æŸ¥php.iniä¸çš„mbstring.func_overload设置为\"0\"。", "SystemCheckMemoryLimit": "内å˜é™åˆ¶", "SystemCheckMemoryLimitHelp": "在一个高æµé‡çš„网站,数æ®å¤„ç†è¿‡ç¨‹ä¸ä½¿ç”¨çš„内å˜å¯èƒ½è¶…出当å‰ç³»ç»Ÿçš„å…许值ï¼å¦‚果需è¦ï¼Œè¯·ä¿®æ”¹ php.ini文件ä¸çš„ memory_limit 值ï¼", "SystemCheckOpenURL": "å¼€å¯ç½‘å€", @@ -100,6 +104,7 @@ "SystemCheckSummaryThereWereWarnings": "您的系统有些问题,Piwik å¯ä»¥è¿è¡Œï¼Œä½†æ˜¯å¯èƒ½ä¼šå‡ºçŽ°äº›å°é”™è¯¯ã€‚", "SystemCheckTimeLimitHelp": "在一个高æµé‡çš„网站,数æ®å¤„ç†éœ€è¦çš„æ—¶é—´å¯èƒ½ä¼šè¶…过目å‰ç³»ç»Ÿæ‰€å…许的时间ï¼å¦‚有必è¦ï¼Œè¯·ä¿®æ”¹ php.ini 文件ä¸çš„ max_execution_time 值ï¼", "SystemCheckTracker": "跟踪状æ€", + "SystemCheckTrackerHelp": "从piwik.php请求失败。试试这个白åå•网å€ï¼Œä»ŽHTTP验è¯å’Œç¦ç”¨mod_securityçš„ (ä½ å¯èƒ½è¦é—®ä½ 的虚拟主机æä¾›å•†)。有关错误的详细信æ¯ï¼Œè¯·æ£€æŸ¥æ‚¨çš„WebæœåŠ¡å™¨é”™è¯¯æ—¥å¿—æ–‡ä»¶ã€‚", "SystemCheckWarnDomHelp": "需è¦å¯ç”¨ \"dom\" 扩展 (例如安装 \"php-dom\" 或者 \"php-xml\" 包)。", "SystemCheckWarning": "Piwik å°†æ£å¸¸å·¥ä½œï¼Œä½†æŸäº›åŠŸèƒ½å¯èƒ½æ— 效", "SystemCheckWarnJsonHelp": "为了更好的性能,您应该使 \"json\" 扩展有效 (例如安装 \"php-json\" 包)。", @@ -129,6 +134,7 @@ "Welcome": "欢迎使用ï¼", "WelcomeHelp": "<p>Piwik 是一个让您能够轻易å–得您所想è¦çš„访客信æ¯çš„开放原始ç 页é¢åˆ†æžè½¯ä»¶ï¼<\/p><p>æ¤å®‰è£…过程分为 %s 个简易的æ¥éª¤ï¼Œå¹¶ä¸”将仅花大约 5 分钟的时间ï¼<\/p>", "WelcomeToCommunity": "欢迎æ¥åˆ° Piwik 社区ï¼", - "CannotConnectToDb": "æ— æ³•è¿žæŽ¥è‡³æ•°æ®åº“" + "CannotConnectToDb": "æ— æ³•è¿žæŽ¥è‡³æ•°æ®åº“", + "CannotConnectToDbResolvingExplanation": "è¿™å¯èƒ½æ˜¯ä¸€ä¸ªæš‚时的问题,请å°è¯• %1$s åˆ·æ–°é¡µé¢ %2$s。如果问题ä»ç„¶å˜åœ¨ï¼Œè¯·è”系您的Piwik管ç†å‘˜ã€‚" } } \ No newline at end of file diff --git a/plugins/LanguagesManager/LanguagesManager.php b/plugins/LanguagesManager/LanguagesManager.php index 882545f0d8b7b1861f4c54b75ac645295d5150c5..012de9cd50980606b1d96c95b3dd312ac10be909 100644 --- a/plugins/LanguagesManager/LanguagesManager.php +++ b/plugins/LanguagesManager/LanguagesManager.php @@ -27,9 +27,9 @@ use Piwik\View; class LanguagesManager extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/LanguagesManager/Test/Unit/TranslationWriter/Validate/CoreTranslationsTest.php b/plugins/LanguagesManager/Test/Unit/TranslationWriter/Validate/CoreTranslationsTest.php index 2b25f14f5b44c36882e4ac547318fc3e00cfe81b..fcd110ca16797da67c53650090f4992bac3dbee4 100644 --- a/plugins/LanguagesManager/Test/Unit/TranslationWriter/Validate/CoreTranslationsTest.php +++ b/plugins/LanguagesManager/Test/Unit/TranslationWriter/Validate/CoreTranslationsTest.php @@ -61,15 +61,6 @@ class CoreTranslationsTest extends \PHPUnit_Framework_TestCase ), CoreTranslations::ERRORSTATE_TRANSLATORINFOREQUIRED ), - array( - array( - 'General' => array( - 'Locale' => 'de_DE.UTF-8', - 'TranslatorName' => 'name', - ) - ), - CoreTranslations::ERRORSTATE_TRANSLATOREMAILREQUIRED - ), array( array( 'General' => array( diff --git a/plugins/LanguagesManager/Test/Unit/TranslationWriter/WriterTest.php b/plugins/LanguagesManager/Test/Unit/TranslationWriter/WriterTest.php index 69f7f457e7be2f0eff227b33ea2b910aa8d1c4ec..9f1fda9568bae70e2cacefc919553d3c62dfffdb 100644 --- a/plugins/LanguagesManager/Test/Unit/TranslationWriter/WriterTest.php +++ b/plugins/LanguagesManager/Test/Unit/TranslationWriter/WriterTest.php @@ -103,8 +103,6 @@ class WriterTest extends \PHPUnit_Framework_TestCase return array( array(array('General' => array('Locale' => '')) + $translations, CoreTranslations::ERRORSTATE_LOCALEREQUIRED), array(array('General' => array('Locale' => 'de_DE.UTF-8')) + $translations, CoreTranslations::ERRORSTATE_TRANSLATORINFOREQUIRED), - array(array('General' => array('Locale' => 'de_DE.UTF-8', - 'TranslatorName' => 'name')) + $translations, CoreTranslations::ERRORSTATE_TRANSLATOREMAILREQUIRED), array(array('General' => array('Locale' => 'invalid', 'TranslatorName' => 'name', 'TranslatorEmail' => 'name@domain.com')) + $translations, CoreTranslations::ERRORSTATE_LOCALEINVALID), diff --git a/plugins/LanguagesManager/TranslationWriter/Validate/CoreTranslations.php b/plugins/LanguagesManager/TranslationWriter/Validate/CoreTranslations.php index 4c4fa065aa39b1b7a9dfbbf79401e95d1f1430b5..bbb0057b237605b5bd2c92f9639567dbbcd2024d 100644 --- a/plugins/LanguagesManager/TranslationWriter/Validate/CoreTranslations.php +++ b/plugins/LanguagesManager/TranslationWriter/Validate/CoreTranslations.php @@ -20,7 +20,6 @@ class CoreTranslations extends ValidateAbstract */ const ERRORSTATE_LOCALEREQUIRED = 'Locale required'; const ERRORSTATE_TRANSLATORINFOREQUIRED = 'Translator info required'; - const ERRORSTATE_TRANSLATOREMAILREQUIRED = 'Translator email required'; const ERRORSTATE_LOCALEINVALID = 'Locale is invalid'; const ERRORSTATE_LOCALEINVALIDLANGUAGE = 'Locale is invalid - invalid language code'; const ERRORSTATE_LOCALEINVALIDCOUNTRY = 'Locale is invalid - invalid country code'; @@ -61,11 +60,6 @@ class CoreTranslations extends ValidateAbstract return false; } - if (empty($translations['General']['TranslatorEmail'])) { - $this->message = self::ERRORSTATE_TRANSLATOREMAILREQUIRED; - return false; - } - /** @var LanguageDataProvider $languageDataProvider */ $languageDataProvider = StaticContainer::get('Piwik\Intl\Data\Provider\LanguageDataProvider'); /** @var RegionDataProvider $regionDataProvider */ diff --git a/plugins/LeftMenu/LeftMenu.php b/plugins/LeftMenu/LeftMenu.php index 00b40d9a6f4cc6f3a76b7c98b68776bc491754b4..522965e6b8a81bd799c89cf51eb8920ac38a090a 100755 --- a/plugins/LeftMenu/LeftMenu.php +++ b/plugins/LeftMenu/LeftMenu.php @@ -11,7 +11,7 @@ namespace Piwik\Plugins\LeftMenu; class LeftMenu extends \Piwik\Plugin { - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => array('function' => 'getStylesheetFiles', 'after' => true), diff --git a/plugins/LeftMenu/lang/cs.json b/plugins/LeftMenu/lang/cs.json index e7d98158700de045f39ce447bb257d35338f9b16..e15938a574086816b06043197734a813c6330151 100644 --- a/plugins/LeftMenu/lang/cs.json +++ b/plugins/LeftMenu/lang/cs.json @@ -1,5 +1,6 @@ { "LeftMenu": { + "PluginDescription": "UmÃstit menu nástÄ›nky nalevo.", "SettingsIntroduction": "Zásuvný modul levé menu pÅ™esune menu hlášenà na levou stranu (je-li povolen). To je pÅ™edevÅ¡Ãm užiteÄné na velkých displejÃch.", "GlobalSettingTitle": "Levé menu je ve výchozÃm stavu povoleno", "GlobalSettingDescription": "Definuje systémovou výchozà hodnotu pro vÅ¡echny uživatele.", diff --git a/plugins/LeftMenu/lang/sr.json b/plugins/LeftMenu/lang/sr.json index 12ce6cf860f5c7e594ce8bf15d8408dce97c5701..e2aaa6bbc15094efafab9f1d5324c1c621b9f2ac 100644 --- a/plugins/LeftMenu/lang/sr.json +++ b/plugins/LeftMenu/lang/sr.json @@ -1,5 +1,6 @@ { "LeftMenu": { + "PluginDescription": "Postavi meni za konzolu na levu stranu.", "SettingsIntroduction": "Dodatak za levi meni će pomeriti meni za izveÅ¡taje sa vrha na levu stranu. Ovo je praktiÄno od velikih monitora.", "GlobalSettingTitle": "Levi meni je podrazumevano ukljuÄen", "GlobalSettingDescription": "Postavljanje podrazumevanih vrednosti za sve korisnike.", diff --git a/plugins/Live/Live.php b/plugins/Live/Live.php index 3dbe242b78bdac4c342a31631110d7929047dd2f..93e8d67881121261b4e800ef5ae4467cb90eab91 100644 --- a/plugins/Live/Live.php +++ b/plugins/Live/Live.php @@ -10,8 +10,6 @@ namespace Piwik\Plugins\Live; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; -require_once PIWIK_INCLUDE_PATH . '/plugins/Live/VisitorLog.php'; - /** * */ @@ -19,9 +17,9 @@ class Live extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/Live/Model.php b/plugins/Live/Model.php index 3a06c58d45c538dc4d2fbcbfeb433cfaf5eebd96..8f7087405eaaa82a42aa4e55b35c417b79f48f42 100644 --- a/plugins/Live/Model.php +++ b/plugins/Live/Model.php @@ -33,7 +33,7 @@ class Model */ public function queryActionsForVisit($idVisit, $actionsLimit) { - $maxCustomVariables = CustomVariables::getMaxCustomVariables(); + $maxCustomVariables = CustomVariables::getNumUsableCustomVariables(); $sqlCustomVariables = ''; for ($i = 1; $i <= $maxCustomVariables; $i++) { diff --git a/plugins/Live/Reports/GetLastVisitsDetails.php b/plugins/Live/Reports/GetLastVisitsDetails.php index c54c97e924d5705be0c7e7ff805f26ffbcc14468..8cf2268d284423c48550480b2d48327ad2a27df7 100644 --- a/plugins/Live/Reports/GetLastVisitsDetails.php +++ b/plugins/Live/Reports/GetLastVisitsDetails.php @@ -10,7 +10,7 @@ namespace Piwik\Plugins\Live\Reports; use Piwik\Menu\MenuReporting; use Piwik\Plugin\Report; -use Piwik\Plugins\Live\VisitorLog; +use Piwik\Plugins\Live\Visualizations\VisitorLog; use Piwik\WidgetsList; class GetLastVisitsDetails extends Base diff --git a/plugins/Live/Reports/GetSimpleLastVisitCount.php b/plugins/Live/Reports/GetSimpleLastVisitCount.php index d018f83f0d99bb2f8d69ddc444234ef5fdcfdf17..9b0db307699ab2146854a3a76cafaa65f89e91e9 100644 --- a/plugins/Live/Reports/GetSimpleLastVisitCount.php +++ b/plugins/Live/Reports/GetSimpleLastVisitCount.php @@ -13,7 +13,6 @@ use Piwik\Metrics\Formatter; use Piwik\Piwik; use Piwik\Plugin\Report; use Piwik\Plugins\Live\Controller; -use Piwik\Plugins\Live\VisitorLog; use Piwik\API\Request; use Piwik\View; diff --git a/plugins/Live/Visitor.php b/plugins/Live/Visitor.php index dae839cd9ab303234840eeca845225aa9e85f393..341ac590c9d2fbbc12df4eb2f3847d84a4a124da 100644 --- a/plugins/Live/Visitor.php +++ b/plugins/Live/Visitor.php @@ -250,7 +250,7 @@ class Visitor implements VisitorInterface $actionDetails = $model->queryActionsForVisit($idVisit, $actionsLimit); $formatter = new Formatter(); - $maxCustomVariables = CustomVariables::getMaxCustomVariables(); + $maxCustomVariables = CustomVariables::getNumUsableCustomVariables(); foreach ($actionDetails as $actionIdx => &$actionDetail) { $actionDetail =& $actionDetails[$actionIdx]; @@ -383,7 +383,6 @@ class Visitor implements VisitorInterface } $actions = array_merge($actionDetails, $goalDetails, $ecommerceDetails); - usort($actions, array('static', 'sortByServerTime')); foreach ($actions as &$action) { diff --git a/plugins/Live/VisitorLog.php b/plugins/Live/Visualizations/VisitorLog.php similarity index 90% rename from plugins/Live/VisitorLog.php rename to plugins/Live/Visualizations/VisitorLog.php index 6c817f5b2dbdbcfa858c56ffbbddba67af2dbc64..8c8c1e81397cd691fc87682b751b1cedfd4ddb7d 100644 --- a/plugins/Live/VisitorLog.php +++ b/plugins/Live/Visualizations/VisitorLog.php @@ -6,10 +6,11 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later * */ -namespace Piwik\Plugins\Live; +namespace Piwik\Plugins\Live\Visualizations; use Piwik\Common; use Piwik\Piwik; +use Piwik\Plugin\ViewDataTable; use Piwik\Plugin\Visualization; use Piwik\View; @@ -20,8 +21,10 @@ use Piwik\View; */ class VisitorLog extends Visualization { - const ID = 'Piwik\Plugins\Live\VisitorLog'; + const ID = 'VisitorLog'; const TEMPLATE_FILE = "@Live/_dataTableViz_visitorLog.twig"; + const FOOTER_ICON_TITLE = ''; + const FOOTER_ICON = ''; public static function getDefaultConfig() { @@ -90,4 +93,9 @@ class VisitorLog extends Visualization ) ); } + + public static function canDisplayViewDataTable(ViewDataTable $view) + { + return ($view->requestConfig->getApiModuleToRequest() === 'Live'); + } } diff --git a/plugins/Live/VisitorLog/Config.php b/plugins/Live/Visualizations/VisitorLog/Config.php similarity index 93% rename from plugins/Live/VisitorLog/Config.php rename to plugins/Live/Visualizations/VisitorLog/Config.php index 42a09b50ca1aa6c4b854ba93f751070635be8378..e7bc817a00a034c05c141dd9d96e1ea4d3f669bb 100644 --- a/plugins/Live/VisitorLog/Config.php +++ b/plugins/Live/Visualizations/VisitorLog/Config.php @@ -7,7 +7,7 @@ * */ -namespace Piwik\Plugins\Live\VisitorLog; +namespace Piwik\Plugins\Live\Visualizations\VisitorLog; use Piwik\ViewDataTable\Config as VisualizationConfig; diff --git a/plugins/Live/lang/cs.json b/plugins/Live/lang/cs.json index 6ab27f36cee80648f8104cec10890d19e042668b..ec3ea624fdbfe2e68caf38cd198e3c926d34f6c6 100644 --- a/plugins/Live/lang/cs.json +++ b/plugins/Live/lang/cs.json @@ -38,6 +38,9 @@ "VisitSummary": "Strávil celkem %1$s%2$s na stránkách%3$s a %4$szobrazil %5$s stránek za %6$s návÅ¡tÄ›v.%7$s", "RowActionTooltipDefault": "Zobrazit záznam návÅ¡tÄ›vnÃků rozdÄ›lený podle tohoto řádku", "RowActionTooltipWithDimension": "Zobrazit záznam návÅ¡tÄ›vnÃků rozdÄ›lený podle %s", - "RowActionTooltipTitle": "OtevÅ™Ãt rozdÄ›lený záznam návÅ¡tÄ›vnÃků" + "RowActionTooltipTitle": "OtevÅ™Ãt rozdÄ›lený záznam návÅ¡tÄ›vnÃků", + "SegmentedVisitorLogTitle": "Záznam návÅ¡tÄ›vnÃků, zobrazujÃcà návÅ¡tÄ›vy, kde %s je \"%s\"", + "OnClickPause": "%s běžÃ. KliknÄ›te pro pozastavenÃ.", + "OnClickStart": "%s je zastaven. KliknÄ›te pro spuÅ¡tÄ›nÃ." } } \ No newline at end of file diff --git a/plugins/Live/lang/it.json b/plugins/Live/lang/it.json index cf43f3e242b3b6030c8804aad43b2926d3f8f3b0..5a00adfa52e453dc3aa35063229ec20b4adef5b2 100644 --- a/plugins/Live/lang/it.json +++ b/plugins/Live/lang/it.json @@ -9,7 +9,7 @@ "FirstVisit": "Prima visita", "GoalType": "Tipo", "HideMap": "nascondi mappa", - "KeywordRankedOnSearchResultForThisVisitor": "La parola chiave %1$s è stata classificata %2$s su %3$s nei risultati di ricerca per il visitatore", + "KeywordRankedOnSearchResultForThisVisitor": "La parola chiave %1$s è stata classificata %2$s su %3$s nei risultati di ricerca per questo visitatore", "LastHours": "Ultime %s ore", "LastMinutes": "Ultimi %s minuti", "LastVisit": "Ultima visita", @@ -24,13 +24,13 @@ "PluginDescription": "Fornisce un log dei visitatori \\\"live\\\" e ti permette di vedere i tuoi visitatori in tempo reale in un widget della dashboard. Il plugin ti permette anche di vedere un profilo visitatore per ciascuno degli utenti.", "PreviousVisitor": "Visitatore precedente", "RealTimeVisitorCount": "Conteggio Visitatori in Tempo Reale", - "Referrer_URL": "URL del referer", + "Referrer_URL": "URL del referrer", "ShowMap": "mostra mappa", "SimpleRealTimeWidget_Message": "%s e %s negli ultimi %s", "ViewVisitorProfile": "Guarda profilo visitatore", "VisitedPages": "Pagine visitate", "VisitorLog": "Log Visitatori", - "VisitorLogDocumentation": "Questa tabella mostra le ultime visite nell'intervallo di date selezionato.%s Se l'intervallo di date comprende oggi, è possibile vedere in tempo reale i tuoi visitatori! %s I dati visualizzati qui sono sempre aggiornati, indipendentemente da quanto spesso usi l'archiviazione automatica.", + "VisitorLogDocumentation": "Questa tabella mostra le ultime visite nell'intervallo di date selezionato. Puoi vedere quando c'è stata l'ultima visita di un visitatore posizionando il mouse sopra la data di una visita. %sSe l'intervallo di date comprende oggi, è possibile vedere in tempo reale i tuoi visitatori!%s I dati visualizzati qui sono sempre aggiornati, indipendentemente da quanto spesso usi l'archiviazione automatica.", "VisitorProfile": "Profilo visitatore", "VisitorsInRealTime": "Visite in tempo reale", "VisitorsLastVisit": "L'ultima visita di questo visitatore è stata %s giorni fa.", diff --git a/plugins/Live/templates/_dataTableViz_visitorLog.twig b/plugins/Live/templates/_dataTableViz_visitorLog.twig index 3aa33fc91630292dae66f598613281e839e025b2..9944f53c19ce539d546f419451f9d3795f4ce673 100644 --- a/plugins/Live/templates/_dataTableViz_visitorLog.twig +++ b/plugins/Live/templates/_dataTableViz_visitorLog.twig @@ -57,7 +57,7 @@ {{ visitor.getColumn('goalConversions') }} {% if visitHasEcommerceActivity %} - <img src="{{ visitor.getColumn('visitEcommerceStatusIcon') }}" title="{{ visitor.getColumn('visitEcommerceStatus') }}"/> + <img src="{{ visitor.getColumn('visitEcommerceStatusIcon') }}" class='visitorLogTooltip' title="{{ visitor.getColumn('visitEcommerceStatus') }}"/> {% endif %} </span> {# Ecommerce activity only (no goal) #} @@ -97,7 +97,7 @@ {% set searchName %}{{ visitor.getColumn('referrerName') }}{% endset %} {% set position %}#{{ visitor.getColumn('referrerKeywordPosition') }}{% endset %} {% if visitor.getColumn('referrerKeywordPosition') %} - <span title='{{ 'Live_KeywordRankedOnSearchResultForThisVisitor'|translate(keyword,position,searchName) }}' class='visitorRank'> + <span title='{{ 'Live_KeywordRankedOnSearchResultForThisVisitor'|translate(keyword,position,searchName) }}' class='visitorRank visitorLogTooltip'> <span class='hash'>#</span> {{ visitor.getColumn('referrerKeywordPosition') }} </span> @@ -111,7 +111,7 @@ <div class="card row"> {% if visitor.getColumn('visitorId') is not empty and not clientSideParameters.hideProfileLink %} - <a class="visitor-log-visitor-profile-link" title="{{ 'Live_ViewVisitorProfile'|translate }}" data-visitor-id="{{ visitor.getColumn("visitorId") }}"> + <a class="visitor-log-visitor-profile-link visitorLogTooltip" title="{{ 'Live_ViewVisitorProfile'|translate }}" data-visitor-id="{{ visitor.getColumn("visitorId") }}"> <img src="plugins/Live/images/visitorProfileLaunch.png"/> <span>{{ 'Live_ViewVisitorProfile'|translate }} {%- if visitor.getColumn('userId') is not empty %}: {{ visitor.getColumn('userId')|raw }}{% endif %}</span> </a> diff --git a/plugins/Login/Controller.php b/plugins/Login/Controller.php index 454a0d6796300ff91986b749e47ab3e4e5bcc8c7..fa11c2574c4d8e5ac9762ab62fa2fb16c91de869 100644 --- a/plugins/Login/Controller.php +++ b/plugins/Login/Controller.php @@ -24,7 +24,7 @@ use Piwik\View; /** * Login controller - * + * @api */ class Controller extends \Piwik\Plugin\Controller { diff --git a/plugins/Login/Login.php b/plugins/Login/Login.php index b054b567b050d8fa06dd6e5023d4778c4319143d..8ee66623eb1562a27659c8d6b40ae5481e233f16 100644 --- a/plugins/Login/Login.php +++ b/plugins/Login/Login.php @@ -23,9 +23,9 @@ use Piwik\Session; class Login extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { $hooks = array( 'Request.initAuthenticationObject' => 'initAuthenticationObject', diff --git a/plugins/Login/lang/it.json b/plugins/Login/lang/it.json index 69c496169c43a14570f71e30054767fbb13e5bb3..74b65a1b5bba9edfdc44e6fc6ff3c23ee57a8253 100644 --- a/plugins/Login/lang/it.json +++ b/plugins/Login/lang/it.json @@ -3,19 +3,19 @@ "ConfirmationLinkSent": "Un link di conferma è stato inviato alla tua casella di posta. Controlla la tua e-mail e visita questo link per autorizzare la richiesta di modifica della password.", "ContactAdmin": "Possibile ragione: il tuo host potrebbe non avere attive le funzionalità di e-mail.<br \/>Per favore, contatta l'amministratore del server.", "ExceptionInvalidSuperUserAccessAuthenticationMethod": "Un utente con accesso Super User non può essere autenticato utilizzando il sistema '%s'.", - "ExceptionPasswordMD5HashExpected": "I parametri della password sono seguiti da un hash MD5 della password.", - "InvalidNonceOrHeadersOrReferrer": "Sicurezza modulo non è riuscita. Si prega di ricaricare il modulo e verificare che i cookie siano abilitati. Se si utilizza un server proxy, è necessario %s configurare Piwik per accettare gli header del proxy %s che inoltri l'header host. Inoltre, verificare che l'intestazione Referer venga inviata correttamente.", - "InvalidOrExpiredToken": "Il token non è valido o è scaduto", - "InvalidUsernameEmail": "Username e\/o indirizzo e-mail non validi", - "LogIn": "Entra", - "LoginOrEmail": "Login o E-mail", - "LoginPasswordNotCorrect": "Username & Password non corretti", + "ExceptionPasswordMD5HashExpected": "I parametri della password che ci si aspetta sono un hash MD5 della password.", + "InvalidNonceOrHeadersOrReferrer": "Sicurezza modulo non riuscita. Si prega di ricaricare il modulo e verificare che i cookie siano abilitati. Se si utilizza un server proxy, è necessario %s configurare Piwik per accettare gli header del proxy %s che inoltri l'header host. Inoltre, verificare che l'intestazione Referer venga inviata correttamente.", + "InvalidOrExpiredToken": "Token non valido o scaduto", + "InvalidUsernameEmail": "Nome utente e\/o indirizzo e-mail non validi", + "LogIn": "Accedi", + "LoginOrEmail": "Nome utente o E-mail", + "LoginPasswordNotCorrect": "Combinazione Nome utente e Password non corretta", "LostYourPassword": "Hai perso la password?", - "MailPasswordChangeBody": "Ciao %1$s, una richiesta di reimpostazione della password è stata ricevuta da %2$s. Per confermare la modifica della password in modo da poter accedere con le nuove credenziali, visitare il seguente link: %3$s Nota: questo token scade tra 24 ore. E vi ringrazio per l'utilizzo di Piwik!", + "MailPasswordChangeBody": "Ciao %1$s,\n\nUna richiesta di reimpostazione della password è stata ricevuta da %2$s. Per confermare la modifica della password in modo da poter accedere con le nuove credenziali, visitare il seguente link:\n\n%3$s\n\nNota: questo token scade tra 24 ore.\n\nE vi ringrazio per l'utilizzo di Piwik!", "MailTopicPasswordChange": "Conferma Cambio Password", "PasswordChanged": "La tua password è stata cambiata.", "PasswordRepeat": "Password (ripeti)", - "PasswordsDoNotMatch": "La password non combacia.", + "PasswordsDoNotMatch": "La password non corrisponde.", "PluginDescription": "Fornisce l'autenticazione tramite user name e password, e anche la funzione di reset della password. Il metodo di autenticazione può essere cambiato utilizzando un altro plugin di accesso, come LoginLdap disponibile nel Marketplace.", "RememberMe": "Ricordami", "ResetPasswordInstructions": "Immetti una nuova password per il tuo account." diff --git a/plugins/MobileAppMeasurable/lang/cs.json b/plugins/MobileAppMeasurable/lang/cs.json new file mode 100644 index 0000000000000000000000000000000000000000..73b88d5733fcd82d5a61a9aaeb2577f6fdd10ccd --- /dev/null +++ b/plugins/MobileAppMeasurable/lang/cs.json @@ -0,0 +1,7 @@ +{ + "MobileAppMeasurable": { + "MobileApp": "Mobilnà aplikace", + "MobileApps": "Mobilnà aplikace", + "MobileAppDescription": "Nativnà mobilnà aplikace pro IOS, Android, nebo pro jiný mobilnà operaÄnà systém." + } +} \ No newline at end of file diff --git a/plugins/MobileAppMeasurable/lang/sr.json b/plugins/MobileAppMeasurable/lang/sr.json new file mode 100644 index 0000000000000000000000000000000000000000..906ba0a2cdd52518c6b017026a739eb4330b1897 --- /dev/null +++ b/plugins/MobileAppMeasurable/lang/sr.json @@ -0,0 +1,7 @@ +{ + "MobileAppMeasurable": { + "MobileApp": "Mobilna aplikacija", + "MobileApps": "Mobilne aplikacije", + "MobileAppDescription": "Nativne mobilne aplikacije za iOS, Android i ostale mobilne operativne sisteme." + } +} \ No newline at end of file diff --git a/plugins/MobileMessaging/MobileMessaging.php b/plugins/MobileMessaging/MobileMessaging.php index ed57c259f90cd3173354125cf2ecbb31e30833ec..5db3a3a57158e6dfabec3af6575226b2434d44c2 100644 --- a/plugins/MobileMessaging/MobileMessaging.php +++ b/plugins/MobileMessaging/MobileMessaging.php @@ -61,9 +61,9 @@ class MobileMessaging extends \Piwik\Plugin ); /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/MobileMessaging/lang/it.json b/plugins/MobileMessaging/lang/it.json index 752a3f410303f4ccf4aaf14c6fc733bfbd67ac78..e981206157bfd01ea8b2b8999faeeb3eff3885da 100644 --- a/plugins/MobileMessaging/lang/it.json +++ b/plugins/MobileMessaging/lang/it.json @@ -14,23 +14,23 @@ "Settings_CredentialProvided": "Il tuo account %s SMS API è configurato correttamente!", "Settings_DeleteAccountConfirm": "Sei sicuro di voler cancellare questo account SMS?", "Settings_InvalidActivationCode": "Il codice inserito non è valido, riprova.", - "Settings_LetUsersManageAPICredential": "Permetti a tutti gli utenti di gestire le proprie credenziali SMS API", - "Settings_LetUsersManageAPICredential_No_Help": "Tutti gli utenti potranno ricevere reports SMS e utilizzeranno le credenziali del tuo account.", + "Settings_LetUsersManageAPICredential": "Permetti a tutti gli utenti di gestire le proprio operatore SMS", + "Settings_LetUsersManageAPICredential_No_Help": "Tutti gli utenti potranno ricevere report SMS e utilizzeranno le credenziali del tuo account.", "Settings_LetUsersManageAPICredential_Yes_Help": "Ciascun utente potrà impostaare il proprio account SMS API e non utilizzarà le tue credenziali.", - "Settings_ManagePhoneNumbers": "gestisci Numeri Telefonici", + "Settings_ManagePhoneNumbers": "Gestisci Numeri Telefonici", "Settings_PhoneActivated": "Numero di telefono convalidato! Ora puoi ricevere gli SMS con le tue statistiche.", "Settings_PhoneNumber": "Numero di telefomo", "Settings_PhoneNumbers_Add": "Aggiungi Numero Telefonico", "Settings_PhoneNumbers_CountryCode_Help": "Se non conosci il prefisso internazionale del tuo Paese, cercalo qui", - "Settings_PhoneNumbers_Help": "Prima di ricevere SMS (messaggi di testo) sun un telefono, bisogna inserirne qui sotto il numero.", - "Settings_PhoneNumbers_HelpAdd": "Quando si fa clic su \"Aggiungi\", un SMS contenente un codice sarè inviato al telefono. L'utente che riceve il codice deve quindi accedere a Piwik, fare clic su Impostazioni, quindi fare clic su Messaggeria Mobile. Dopo aver inserito il codice, l'utente potrà ricevere i reports in formato testo sul suo telefono.", + "Settings_PhoneNumbers_Help": "Prima di ricevere SMS (messaggi di testo) su un telefono, bisogna inserirne qui sotto il numero.", + "Settings_PhoneNumbers_HelpAdd": "Quando si fa clic su \"Aggiungi\", un SMS contenente un codice sarà inviato al telefono. L'utente che riceve il codice deve quindi accedere a Piwik, fare clic su Impostazioni, quindi fare clic su Messaggeria Mobile. Dopo aver inserito il codice, l'utente potrà ricevere i report in formato di testo sul suo telefono.", "Settings_PleaseSignUp": "Per creare SMS e ricevere brevi messaggi di testo con le statistiche dei tuoi siti web sul tuo cellulare, si prega di registrarsi con l'API SMS e immettere le informazioni qui di seguito.", "Settings_SMSAPIAccount": "Gestisci Account SMS API", "Settings_SMSProvider": "Gestore SMS", "Settings_SuperAdmin": "Impostazioni Super User", "Settings_SuspiciousPhoneNumber": "Se non si riceve il messaggio di testo, si può provare senza lo zero iniziale. Cioè %s", "Settings_UpdateOrDeleteAccount": "Puoi anche %saggiornare%s o %scancellare%s questo account.", - "Settings_ValidatePhoneNumber": "Valida", + "Settings_ValidatePhoneNumber": "Convalida", "Settings_VerificationCodeJustSent": "Abbiamo inviato ora un SMS con un codice a questo numero: si prega di inserire questo codice qui sopraa e cliccare su \"Convalida\".", "SettingsMenu": "Messaggeria Mobile", "SMS_Content_Too_Long": "[troppo lungo]", diff --git a/plugins/MultiSites/MultiSites.php b/plugins/MultiSites/MultiSites.php index 60828e2df251bf79cf49ba753d49513cb9264cc2..1fb90cfeae6561d45de7c83f9c17668faf124986 100644 --- a/plugins/MultiSites/MultiSites.php +++ b/plugins/MultiSites/MultiSites.php @@ -13,9 +13,9 @@ use Piwik\Piwik; class MultiSites extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/Overlay/Overlay.php b/plugins/Overlay/Overlay.php index af13ae2f6cc9dba0ac06b2a25b5249910ecc063e..329db936ebe1c89e761330798c87d90f283a5162 100644 --- a/plugins/Overlay/Overlay.php +++ b/plugins/Overlay/Overlay.php @@ -12,9 +12,9 @@ namespace Piwik\Plugins\Overlay; class Overlay extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - function getListHooksRegistered() + function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/Overlay/lang/cs.json b/plugins/Overlay/lang/cs.json index 2b8ace59872930befb08705f691d5e166e236e79..69d47451753f0ac5561ef64655297bf4a48392ec 100644 --- a/plugins/Overlay/lang/cs.json +++ b/plugins/Overlay/lang/cs.json @@ -13,6 +13,7 @@ "OneClick": "1 kliknutÃ", "OpenFullScreen": "PÅ™ejÃt na celou obrazovku (bez postrannà liÅ¡ty)", "Overlay": "PÅ™ekryv stránky", + "PluginDescription": "PodÃvejte se na vaÅ¡e analytická data jako na pÅ™ekryv na vaÅ¡ich stránkách. ZjistÄ›te, kolik uživatelů kliklo na kterýkoliv odkaz. Poznámka: vyžaduje povolený zásuvný modul pÅ™echodů.", "RedirectUrlError": "PokouÅ¡Ãte se spustit pÅ™ekryv pro stránku s url \"%s\". %s Žádná doména z nastavenà Piwiku ale neodpovÃdá odkazu.", "RedirectUrlErrorAdmin": "Doménu můžete jako dalšà URL pÅ™idat v %snastavenÃ%s.", "RedirectUrlErrorUser": "Požádejte svého administrátora o pÅ™idánà stránky jako dalšà URL:." diff --git a/plugins/Overlay/lang/it.json b/plugins/Overlay/lang/it.json index b8a6611f05e50f3bef2d36c51ba2487f9943a0bf..8f5411007ac65e887455dd0330ca11e1356b7a31 100644 --- a/plugins/Overlay/lang/it.json +++ b/plugins/Overlay/lang/it.json @@ -6,16 +6,16 @@ "ErrorNotLoading": "La sessione di Overlay Pagina non può ancora essere lanciata.", "ErrorNotLoadingDetails": "Forse la pagina caricata sulla destra non ha il codice tracking di Piwik. In questo caso prova ad avviare Overlay per una pagina diversa.", "ErrorNotLoadingDetailsSSL": "Dal momento che si sta utilizzando Piwik su HTTPS, la causa più probabile è che il vostro sito web non supporti SSL. Prova a utilizzare Piwik su HTTP.", - "ErrorNotLoadingLink": "Ottieni altri suggerimenti ai problemi", + "ErrorNotLoadingLink": "Ottieni altri suggerimenti sui problemi", "Link": "Link", "Location": "Posizione", "NoData": "Non vi sono dati per questa pagina nel periodo selezionato", "OneClick": "1 click", - "OpenFullScreen": "vai a schermo intero (niente barra laterale)", + "OpenFullScreen": "Vai a schermo intero (niente barra laterale)", "Overlay": "Overlay di Pagina", "PluginDescription": "Vedi i tuoi dati statistici in sovrapposizione al tuo sito web. Guarda quante volte i tuoi utenti hanno cliccato su ciascun link. Nota: Richiede che sia abilitato il plugin Transitions.", "RedirectUrlError": "Si sta tentando di aprire la Pagina Overlay per l'URL \"%s\". %s Nessuno dei domini dalle impostazioni di Piwik corrisponde al link.", - "RedirectUrlErrorAdmin": "È possibile aggiungere il dominio come un ulteriore URL %s nelle impostazioni%s.", + "RedirectUrlErrorAdmin": "È possibile aggiungere il dominio come un ulteriore URL %snelle impostazioni%s.", "RedirectUrlErrorUser": "Chiedi all'amministratore di aggiungere il dominio come un URL aggiuntivo." } } \ No newline at end of file diff --git a/plugins/Overlay/lang/sr.json b/plugins/Overlay/lang/sr.json index a6f1fb771ca0450f12ddb4a062f459b643984048..76b071399637066a63115e71c43e662dc71f6dd8 100644 --- a/plugins/Overlay/lang/sr.json +++ b/plugins/Overlay/lang/sr.json @@ -13,6 +13,7 @@ "OneClick": "1 klik", "OpenFullScreen": "Prikaži preko celog ekrana", "Overlay": "Prikaz preko (overlay)", + "PluginDescription": "Prikažite analitiÄke podatke preko vaÅ¡eg sajta. Pogledajte koliko puta su korisnici kliknuli na svaki od linkova. Morate imati ukljuÄen Transitions dodatak.", "RedirectUrlError": "PokuÅ¡ali ste da otvorite stranicu za URL \"%s\". %s Nijedan od domena iz Piwik podeÅ¡avanja ne odgovara ovom linku.", "RedirectUrlErrorAdmin": "Možete dodati domen kao dodatni URL %su podeÅ¡avanjima%s.", "RedirectUrlErrorUser": "Zamolite administratora da doda domen kao dodatni URL." diff --git a/plugins/Overlay/lang/zh-cn.json b/plugins/Overlay/lang/zh-cn.json index 6d3eea0bd40f8afcdc4f03dce5a8eeef833202d9..c6fec4aa708c0b7f859ca39e360a27cf55c353d3 100644 --- a/plugins/Overlay/lang/zh-cn.json +++ b/plugins/Overlay/lang/zh-cn.json @@ -13,6 +13,7 @@ "OneClick": "1 次点击", "OpenFullScreen": "å…¨å±(æ— è¾¹æ¡†)", "Overlay": "页é¢å åŠ ", + "PluginDescription": "请å‚é˜…æ‚¨çš„åˆ†æžæ•°æ®ä¸ºæ‚¨çš„实际网站的å åŠ ã€‚æŸ¥çœ‹æœ‰å¤šå°‘æ¬¡ä½ çš„ç”¨æˆ·ç‚¹å‡»æ¯ä¸€ä¸ªçŽ¯èŠ‚ä¸Šã€‚æ³¨ï¼šéœ€è¦åœ¨è½¬æ¢æ’ä»¶å¯ç”¨ã€‚", "RedirectUrlError": "您æ£åœ¨æ‰“å¼€ç½‘å€ \"%s\" 的页é¢å åŠ ã€‚%s 没有 Piwik 设置的域å匹é…这个链接。", "RedirectUrlErrorAdmin": "您å¯ä»¥åœ¨ %s管ç†è®¾ç½®%s ä¸ä»¥é™„åŠ ç½‘å€æ·»åŠ åŸŸå。", "RedirectUrlErrorUser": "请管ç†å‘˜ä»¥é™„åŠ ç½‘å€æ¥æ·»åŠ åŸŸå。" diff --git a/plugins/PrivacyManager/PrivacyManager.php b/plugins/PrivacyManager/PrivacyManager.php index b04799a9344a3f470f2ba5ed8cd23169a96b470d..5c4ec03ad294efad9533e0f6a923ffefab56c96f 100644 --- a/plugins/PrivacyManager/PrivacyManager.php +++ b/plugins/PrivacyManager/PrivacyManager.php @@ -130,9 +130,9 @@ class PrivacyManager extends Plugin } /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/PrivacyManager/lang/cs.json b/plugins/PrivacyManager/lang/cs.json index 717effdc3308b495a5623dcec3a23ba6635fa71c..45881dd4873d510ecc8d4c26289ed5297cd6738c 100644 --- a/plugins/PrivacyManager/lang/cs.json +++ b/plugins/PrivacyManager/lang/cs.json @@ -13,6 +13,8 @@ "DeleteDataDescription": "Můžete Piwik nastavit tak, aby po urÄitém Äase mazal stará data logů nebo zpracovaná data hlášenÃ. To pomáhá udržet malou databázi.", "DeleteDataDescription2": "Pokud si to pÅ™ejete, zpracovaná hlášenà mohou zůstat a budou odstranÄ›na jen data logů (zobrazenà stránek (návÅ¡tÄ›vy a konverze). Nebo mohou být smazána hlášenà a data logů mohou být zachována.", "DeleteDataInterval": "Smazat stará data každých", + "DeleteOldVisitorLogs": "Smazat staré záznamy o návÅ¡tÄ›vnÃcÃch", + "DeleteOldArchivedReports": "Smazat stará archivovaná hlášenÃ", "DeleteLogDescription2": "Pokud povolÃte automatické mazánà logů, musÃte zajistit, že jsou zpracována vÅ¡echna dennà hlášenÃ, aby nedoÅ¡lo ke ztrátÄ› dat.", "DeleteLogInfo": "Logy z následujÃcÃch tabulek budou smazány: %s", "DeleteLogsConfirm": "Chystáte se povolit mazánà dat logů. Pokud budou odstranÄ›na stará data logů a nebyla vytvoÅ™ena historická hlášenÃ, nebudete schopen zobrazit stará analytická data. Oprav", @@ -25,6 +27,7 @@ "DeleteReportsInfo2": "Pokud nenà povoleno \"%s\", stará hlášenà budou na požádánà znovu vytvoÅ™ena.", "DeleteReportsInfo3": "Pokud je povoleno \"%s\", data budou nevratnÄ› ztracena.", "DeleteReportsOlderThan": "Smazat hlášenà staršà než", + "DeleteSchedulingSettings": "Maplánovat výmaz starých dat", "DeleteDataSettings": "Smazat staré logy návÅ¡tÄ›vnÃků a hlášenÃ", "DoNotTrack_Description": "Do not track je návrh technologie a politiky, která umožňuje uživatelům indikovat, že si nepÅ™ejà být stránkami, které navÅ¡tÄ›vujà a to vÄetnÄ› služeb webové analýzi, reklamnÃch služeb a sociálnÃch platforem.", "DoNotTrack_Disable": "Zakázat podporu Do not track", @@ -39,6 +42,7 @@ "GeolocationAnonymizeIpNote": "Poznámka: Geolokace bude mÃt pÅ™ibližnÄ› stejnou pÅ™esnost, když je anonymizován 1 bit. Pokud jsou anonymizovány 2 bity a vÃce, geolokace bude nepÅ™esná.", "GetPurgeEstimate": "ZÃskat odhad po vyprázdnÄ›nÃ", "KeepBasicMetrics": "Uchovat základnà měřenà (návÅ¡tÄ›vy, zobrazenà stránek, odchody, cÃle, atd.)", + "KeepDataFor": "Uchovávat vÅ¡echna data po", "KeepReportSegments": "Pro výše uchovávaná data také zachovat segmentovaná hlášenÃ", "LastDelete": "Poslednà mazánà bylo v", "LeastDaysInput": "ProsÃm, uveÄte poÄet dnà vÄ›tšà než %s.", @@ -49,6 +53,7 @@ "PurgeNow": "Vyprázdnit databázi nynÃ", "PurgeNowConfirm": "Chystáte se natrvalo odstranit data z vašà databáze. Opravdu chcete pokraÄovat?", "PurgingData": "Promazávánà dat...", + "RecommendedForPrivacy": "DoporuÄeno pro soukromÃ", "ReportsDataSavedEstimate": "Velikost databáze", "SaveSettingsBeforePurge": "Nastavenà mazánà dat byla zmÄ›nÄ›na. Uložte je pÅ™ed promazánÃm.", "SeeAlsoOurOfficialGuidePrivacy": "PodÃvejte se také na náš oficiálnà návod: %ssoukromà webové analýzy%s", diff --git a/plugins/PrivacyManager/lang/de.json b/plugins/PrivacyManager/lang/de.json index fc8c19451f063f52c1b182d84ff8bf9dac1025b7..8771dd1286503e4a1fff6c7e3502c0192b36e549 100644 --- a/plugins/PrivacyManager/lang/de.json +++ b/plugins/PrivacyManager/lang/de.json @@ -8,7 +8,7 @@ "CannotLockSoDeleteLogActions": "Die log_action Tabelle wird nicht geleert: bitte geben Sie dem MySQL User '%s' das LOCK TABLES Privileg.", "ClickHereSettings": "Hier klicken, um die %s Einstellungen zu bearbeiten.", "CurrentDBSize": "Aktuelle Größe der Datenbank", - "DBPurged": "Datenbank geleert.", + "DBPurged": "Datenbank bereinigt.", "DeleteBothConfirm": "Sie sind dabei, das Löschen von sowohl Log- als auch Berichtsdaten zu aktivieren. Das wird Ihnen dauerhaft die Möglichkeit nehmen, auf alte Analyticsdaten zuzugreifen. Sind Sie sicher, dass Sie das wollen?", "DeleteDataDescription": "Sie können Piwik so konfigurieren, dass regelmäßig alte Besucher-Logs und\/oder generierte Berichte gelöscht werden, um die Größe der Datenbank klein zu halten.", "DeleteDataDescription2": "Falls gewünscht, können generierte Berichte behalten werden, während Besuchs-, Seitenansichten- und Konversions-Logdaten gelöscht werden. Oder die generierten Berichte können gelöscht werden, während die Logdaten behalten werden.", @@ -52,7 +52,7 @@ "PluginDescription": "Berücksichtigen Sie den Datenschutz für Ihre Benutzer und machen Sie Ihre Piwik Installation datenschutzkonform gemäss Ihren lokalen Datenschutzbestimmungen.", "PurgeNow": "Datenbank jetzt leeren", "PurgeNowConfirm": "Sie sind dabei, Daten dauerhaft aus der Datenbank zu entfernen. Sind Sie sicher?", - "PurgingData": "Lösche Daten...", + "PurgingData": "Daten werden bereinigt...", "RecommendedForPrivacy": "Für den Datenschutz empfohlen", "ReportsDataSavedEstimate": "Größe der Datenbank", "SaveSettingsBeforePurge": "Sie haben die Einstellungen für das Löschen von Daten geändert. Bitte erst speichern, bevor Sie einen Löschvorgang starten.", diff --git a/plugins/PrivacyManager/lang/it.json b/plugins/PrivacyManager/lang/it.json index d85496ec5a54c9cae907667bd75b7414160cbbf7..b0203718af01a5de9cbe213eade9f7040b38de14 100644 --- a/plugins/PrivacyManager/lang/it.json +++ b/plugins/PrivacyManager/lang/it.json @@ -1,21 +1,21 @@ { "PrivacyManager": { - "AnonymizeIpDescription": "Seleziona \"Si\" se vuoi che Piwik non mostri gli indirizzi IP completi dei visitatori.", - "AnonymizeIpInlineHelp": "Rende anonimi gli ip dei tuoi visitatori per conformarsi alle leggi o alle linee guida locali.", - "AnonymizeIpExtendedHelp": "Quando gli utenti visitano il tuo sito web, Piwik non userà l'indirizzo IP completo (come %s) ma lo renderà prima anonimo (in %s). Questo è uno dei requisiti definiti dalle leggi sulla privacy in alcuni paesi come la Germania.", + "AnonymizeIpDescription": "Seleziona \"Sì\" se vuoi che Piwik non mostri gli indirizzi IP completi dei visitatori.", + "AnonymizeIpInlineHelp": "Rende anonimi gli ip dei tuoi visitatori per conformarsi alle leggi o ai regolamenti locali.", + "AnonymizeIpExtendedHelp": "Quando gli utenti visitano il tuo sito web, Piwik non userà l'indirizzo IP completo (come %s) ma lo renderà prima anonimo (%s). Questo è uno dei requisiti definiti dalle leggi sulla privacy in alcuni paesi come la Germania.", "AnonymizeIpMaskLengtDescription": "Seleziona quanti byte degli indirizzi IP dei visitatori devono essere nascosti.", - "AnonymizeIpMaskLength": "%s byte - e.s. %s", - "CannotLockSoDeleteLogActions": "La tabella log_action non verrà pulita: assicura il privilegio LOCK TABLES a '%s' utente MYSQL.", + "AnonymizeIpMaskLength": "%s byte(s) - es. %s", + "CannotLockSoDeleteLogActions": "La tabella log_action non verrà pulita: assicura il privilegio LOCK TABLES all'utente MYSQL '%s'.", "ClickHereSettings": "Accedi alle impostazioni %s.", "CurrentDBSize": "Dimensione corrente del database", "DBPurged": "DB ripulito.", - "DeleteBothConfirm": "Stai per consentire sia la cancellazione dei dati di log che la cancellazione dei dati dei report. Questo eliminerà in modo permanente la possibilità di visualizzare i vecchi dati di analisi. Sei sicuro di volerlo fare?", + "DeleteBothConfirm": "Stai per consentire sia la cancellazione dei dati di log che quella dei dati dei report. Questo eliminerà in modo permanente la possibilità di visualizzare i vecchi dati di analisi. Sei sicuro di volerlo fare?", "DeleteDataDescription": "Puoi configurare Piwik per cancellare regolarmente i vecchi log dei visitatori e\/o i report già elaborati per mantenere bassa la dimensione del database.", "DeleteDataDescription2": "Se lo si desidera, i report pre-elaborati non saranno cancellati, solo le visite, le pagine visualizzate e i log delle conversioni verranno cancellati. Oppure, i report pre-elaborati possono essere cancellati e i dati dei log possono essere mantenuti.", "DeleteDataInterval": "Cancella i vecchi dati ogni", "DeleteOldVisitorLogs": "Cancella i vecchi log dei visitatori", "DeleteOldArchivedReports": "Cancella i vecchi report archiviati", - "DeleteLogDescription2": "Quando l'eliminazione automatica è abilitata, è necessario assicurarsi che tutti i report giornalieri precedenti siano stati processati, in modo che nessun dato venga perso. Ottieni più informazioni.", + "DeleteLogDescription2": "Quando l'eliminazione automatica è abilitata, è necessario assicurarsi che tutti i report giornalieri precedenti siano stati elaborati, in modo che nessun dato venga perso. Ottieni più informazioni.", "DeleteLogInfo": "I log delle seguenti tabelle saranno cancellati: %s", "DeleteLogsConfirm": "Stai per consentire la cancellazione dei dati di log. Se i vecchi dati di registro vengono rimossi e le relazioni non sono già state create, non sarai in grado di vedere i dati storici di analisi. Sei sicuro di volerlo fare?", "DeleteLogsOlderThan": "Cancella log più vecchi di", @@ -25,42 +25,42 @@ "DeleteReportsDetailedInfo": "I dati delle tabelle numeriche d'archivio del database(%s) e le tabelle d'archivio blob (%s) saranno cancellate.", "DeleteReportsInfo": "Se abilitato, i vecchi report verranno cancellati. %sRaccomandiamo di abilitare solo quando lo spazio del database è limitato.%s", "DeleteReportsInfo2": "Se non è stato abilitato \"%s\", i vecchi report verranno automaticamente ricreati quando richiesti.", - "DeleteReportsInfo3": "Se abilitato \"%s\", i dati andranno permanentemente persi.", + "DeleteReportsInfo3": "Se abilitato \"%s\", i dati andranno definitivamente persi.", "DeleteReportsOlderThan": "Elimina i report più vecchi di", - "DeleteSchedulingSettings": "Programma la cancellazione dei vecchi dati", + "DeleteSchedulingSettings": "Pianifica la cancellazione dei vecchi dati", "DeleteDataSettings": "Cancella i vecchi log dei visitatori e i report", - "DoNotTrack_Description": "Do Not Track è una tecnologia e una proposta di indirizzo che consente agli utenti di escludersi dal tracciamento dei siti che non visitano, includendo i servizi statistici, le reti pubblicitarie e le piattaforme sociali.", + "DoNotTrack_Description": "Do Not Track è una tecnologia e una proposta di indirizzo che consente agli utenti di escludersi dal tracciamento dei siti che visitano, includendo i servizi statistici, le reti pubblicitarie e le piattaforme sociali.", "DoNotTrack_Disable": "Disabilita il supporto per Do Not Track", - "DoNotTrack_Disabled": "Al momento Piwik sta tracciando tutti i visitatori, anche quendo essi hanno specificato \"Non voglio essere tracciato\" nel loro browser.", - "DoNotTrack_DisabledMoreInfo": "Si raccomanda di rispettare la privacy dei tuoi visitatori abilitanddo il supporto DoNotTrack.", + "DoNotTrack_Disabled": "Al momento Piwik sta tracciando tutti i visitatori, anche quando essi hanno specificato \"Non voglio essere tracciato\" nel loro browser.", + "DoNotTrack_DisabledMoreInfo": "Si raccomanda di rispettare la privacy dei tuoi visitatori abilitando il supporto DoNotTrack.", "DoNotTrack_Enable": "Abilita il supporto per Do Not Track", "DoNotTrack_Enabled": "Al momento stai rispettando la Privacy dei tuoi utenti. Bravo!", "DoNotTrack_EnabledMoreInfo": "Quando gli utenti hanno impostato il browser su \"Non voglio essere tracciato\" (DoNotTrack abilitato) Piwik non traccerà queste visite.", "DoNotTrack_SupportDNTPreference": "Supporto preferenza Do Not Track", - "EstimatedDBSizeAfterPurge": "Dimensione stimata del database dopo la cancellazione", + "EstimatedDBSizeAfterPurge": "Dimensione stimata del database dopo la pulizia", "EstimatedSpaceSaved": "Stima dello spazio risparmiato", "GeolocationAnonymizeIpNote": "Nota: La Geolocalizzazione avrà circa gli stessi risultati con 1 byte anonimo. Con 2 byte o più, la Geolocalizzazione sarà imprecisa.", "GetPurgeEstimate": "Ottieni stima pulizia", "KeepBasicMetrics": "Mantieni le metriche di base (visite, pagine viste, percentuali dei rimbalzi, conversioni obiettivi, conversioni ecommerce, ecc.)", "KeepDataFor": "Conserva tutti i dati per", "KeepReportSegments": "Per i dati qui sopra che sono stati mantenuti, tieni anche i report segmentati", - "LastDelete": "Ultima cancellazione è stata il", - "LeastDaysInput": "Specificare un numero di giorni maggiore di %s.", + "LastDelete": "L'ultima cancellazione è stata il", + "LeastDaysInput": "Specifica un numero di giorni maggiore di %s.", "LeastMonthsInput": "Specifica un numero di mesi superiore a %s", "MenuPrivacySettings": "Privacy", "NextDelete": "Prossima cancellazione programmata per il", - "PluginDescription": "Aumenta la privacy per i tuoi utenti e rende la privacy della tua istanza di Piwik conforme con le leggi locali.", + "PluginDescription": "Aumenta la privacy per i tuoi utenti e rendi la privacy della tua istanza di Piwik conforme con le leggi locali.", "PurgeNow": "Pulisci il DB Ora", "PurgeNowConfirm": "Stai per cancellare definitivamente dei dati dal tuo database. Sei sicuro di voler continuare?", "PurgingData": "Eliminazione dei dati...", "RecommendedForPrivacy": "Raccomandato per la privacy", "ReportsDataSavedEstimate": "Dimensioni database", - "SaveSettingsBeforePurge": "Hai cambiato le impostazioni per la cancellazione dei dati. Si consiglia di salvarli prima di cominciare un'eliminazione.", + "SaveSettingsBeforePurge": "Hai cambiato le impostazioni per la cancellazione dei dati. Si consiglia di salvarli prima di cominciare una pulizia.", "SeeAlsoOurOfficialGuidePrivacy": "Leggi anche la nostra guida ufficiale: %sWeb Analytics Privacy%s", "Teaser": "In questa pagina è possibile personalizzare Piwik per renderlo conforme alle norme vigenti sulla privacy. È possibile %s rendere anonimi gli IP dei visitatori%s, %s rimuovere automaticamente dal database i vecchi log dei visitatori%s e %s fornire un meccanismo opt-out per il sito%s.", "TeaserHeadline": "Impostazioni privacy", "UseAnonymizedIpForVisitEnrichment": "Usa anche gli indirizzi IP Anonimi quando si arricchiscono le visite", - "UseAnonymizedIpForVisitEnrichmentNote": "Plugin come geo Location tramite IP e Provider incrementano i metadati dei visitatori. Di default questi plugin utiizzano gli indirizzi IP resi anonimi. Se selezioni 'No', verrà utilizzato l'indirizzo IP completo non reso anonimo, con la conseguenza di minore privaacy ma accuratezza dei dati migliore.", + "UseAnonymizedIpForVisitEnrichmentNote": "Plugin come Geo Location tramite IP e Provider incrementano i metadati dei visitatori. Di default questi plugin utiizzano gli indirizzi IP resi anonimi. Se selezioni 'No', verrà utilizzato l'indirizzo IP completo non reso anonimo, con la conseguenza di una minore privacy ma con un'accuratezza dei dati migliore.", "UseAnonymizeIp": "Rendi anonimi gli IP dei visitatori", "UseDeleteLog": "Cancella regolarmente i vecchi log delle visite dal database", "UseDeleteReports": "Cancella regolarmente i vecchi report dal database" diff --git a/plugins/PrivacyManager/lang/sr.json b/plugins/PrivacyManager/lang/sr.json index c396eda8933f01990185f28ea1be94a66ebcdd21..cd29363ee9872cac238f2046c8aa0479a3fdb2e0 100644 --- a/plugins/PrivacyManager/lang/sr.json +++ b/plugins/PrivacyManager/lang/sr.json @@ -13,6 +13,8 @@ "DeleteDataDescription": "Možete podesiti Piwik tako da periodiÄno briÅ¡e stare zapise o posetama i\/ili obraÄ‘ene izveÅ¡taje te da tako održite veliÄinu baze malom.", "DeleteDataDescription2": "Ukoliko želite, već obraÄ‘eni izveÅ¡taji ne moraju biti obrisani već samo posete, prikazi stranica i ispunjenja ciljeva. Ili, već obraÄ‘eni izveÅ¡taji se mogu obrisati a zapisi ostati saÄuvani.", "DeleteDataInterval": "ObriÅ¡i stare posatke svakih", + "DeleteOldVisitorLogs": "ObriÅ¡i stare zapise", + "DeleteOldArchivedReports": "ObriÅ¡i stare arhivirane izveÅ¡taje", "DeleteLogDescription2": "Kada omogućite automatsko brisanje zapisa, morate biti sigurni da su svi prethodni dnevni izveÅ¡taji obraÄ‘eni kako ne bi doÅ¡lo do gubitka podataka.", "DeleteLogInfo": "Zapisi iz sledećih tabela će biti obrisani: %s", "DeleteLogsConfirm": "Na putu ste da ukljuÄite brisanje zapisa sa podacima. Ukoliko obriÅ¡ete stare podatke a izveÅ¡taji joÅ¡ nisu napravljeni, nećete biti u mogućnosti da vidite analitiÄke podatke za proÅ¡lost. Da li ste sigurni da želite to da uradite?", @@ -25,6 +27,7 @@ "DeleteReportsInfo2": "Ukoliko niste ukljuÄili \"%s\", stari izveÅ¡taji će biti ponovo napravljeni automatski kada budu zahtevani.", "DeleteReportsInfo3": "Ukoliko ste ukljuÄili \"%s\", podaci će biti zauvek izgubljeni.", "DeleteReportsOlderThan": "BriÅ¡i izveÅ¡taje starije od", + "DeleteSchedulingSettings": "Zakaži brisanje starih podataka", "DeleteDataSettings": "ObriÅ¡i stare zapise i izveÅ¡taje", "DoNotTrack_Description": "Do Not Track je predlog tehnologije i polise koji omogućuje korisnicima da se izuzmu iz praćenja od strane sajtova koje oni nisu posetili ukljuÄujući analitiÄke servise, reklamne mreže i druÅ¡tvene platforme.", "DoNotTrack_Disable": "IskljuÄi podrÅ¡ku za Do Not Track", @@ -39,6 +42,7 @@ "GeolocationAnonymizeIpNote": "Pažnja: Geolokacija će imati približno iste rezultate sa jednim bajtom anonimizacije. Sa dva bajta ili viÅ¡e, Geolokacija neće biti taÄna.", "GetPurgeEstimate": "Daj procenu", "KeepBasicMetrics": "Zadrži osnovne metrike (posete, broj prikaza stranica, stopu odbijanja, ispunjenje ciljeva, elektronske porudžbine itd.)", + "KeepDataFor": "Zadrži sve podatke za", "KeepReportSegments": "Za gore saÄuvane podatke saÄuvaj i segmentirane izveÅ¡taje", "LastDelete": "Poslednje brisanje je bilo", "LeastDaysInput": "Molimo vas da navedete broj dana veći od %s.", @@ -49,6 +53,7 @@ "PurgeNow": "OÄisti bazu", "PurgeNowConfirm": "Na putu ste da trajno obriÅ¡ete podatke iz baze. Da li želite da nastavite?", "PurgingData": "ÄŒišćenje baze", + "RecommendedForPrivacy": "PreporuÄljivo zbog privatnosti", "ReportsDataSavedEstimate": "VeliÄina baze", "SaveSettingsBeforePurge": "Izmenili ste pravila oko brisanja podataka. Molimo vas da ih saÄuvate pre nego Å¡to poÄnete sa Äišćenjem podataka.", "SeeAlsoOurOfficialGuidePrivacy": "Pogledajte i naÅ¡ zvaniÄni vodiÄ: %sPrivatnost u analitikama%s", diff --git a/plugins/Provider/Provider.php b/plugins/Provider/Provider.php index 38707c5cb17136bcb38bf4da5563d9b629b611ea..1fb538565131bbc8062979e81c96e3adefc7cb66 100644 --- a/plugins/Provider/Provider.php +++ b/plugins/Provider/Provider.php @@ -18,9 +18,9 @@ use Piwik\Piwik; class Provider extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Live.getAllVisitorDetails' => 'extendVisitorDetails' diff --git a/plugins/Provider/lang/it.json b/plugins/Provider/lang/it.json index 7bda34b1f6ab1d47702a6542f2c8f8f2a631d977..ffd214bf63201014ef0bacb3225ba3ec2a35c6d0 100644 --- a/plugins/Provider/lang/it.json +++ b/plugins/Provider/lang/it.json @@ -2,8 +2,8 @@ "Provider": { "ColumnProvider": "Provider", "PluginDescription": "Restituisce gli Internet Service Provider dei visitatori.", - "ProviderReportDocumentation": "Questo reports mostra quali prvider Internet Service (ISP)i tuoi visitatori hanno utilizzato per accedere al sito web. È possibile fare clic su un nome per maggiori dettagli. %s Se Piwik non può determinare il provider di un visitatore, questo viene elencato come IP.", + "ProviderReportDocumentation": "Questo report mostra quali Internet Service Provider i tuoi visitatori hanno utilizzato per accedere al sito web. È possibile fare clic su un nome per maggiori dettagli. %s Se Piwik non può determinare il provider di un visitatore, questo viene elencato come IP.", "WidgetProviders": "Providers", - "ProviderReportFooter": "Provider sconosciuto significa che l'indirizzo IP non può essere ricercato" + "ProviderReportFooter": "Provider sconosciuto significa che non è possibile trovare l'indirizzo IP" } } \ No newline at end of file diff --git a/plugins/Proxy/Controller.php b/plugins/Proxy/Controller.php index bfc44f421f8e38eeae591de32df4d225eb8869ef..550078e2d73d2e5427e9f314e4b79095f9cf98f3 100644 --- a/plugins/Proxy/Controller.php +++ b/plugins/Proxy/Controller.php @@ -78,7 +78,9 @@ class Controller extends \Piwik\Plugin\Controller public function redirect() { $url = Common::getRequestVar('url', '', 'string', $_GET); - + if (!UrlHelper::isLookLikeUrl($url)) { + die('Please check the &url= parameter: it should to be a valid URL'); + } // validate referrer $referrer = Url::getReferrer(); if (empty($referrer) || !Url::isLocalUrl($referrer)) { @@ -93,9 +95,6 @@ class Controller extends \Piwik\Plugin\Controller if (!self::isPiwikUrl($url)) { Piwik::checkUserHasSomeViewAccess(); } - if (!UrlHelper::isLookLikeUrl($url)) { - die('Please check the &url= parameter: it should to be a valid URL'); - } Common::sendHeader('Content-Type: text/html; charset=utf-8'); echo '<html><head><meta http-equiv="refresh" content="0;url=' . $url . '" /></head></html>'; diff --git a/plugins/QueuedTracking b/plugins/QueuedTracking index 0c609086f4e190a8aac88329ffc50fe4a19260c2..abe4986e60d79564ab82676797833da2e3808d60 160000 --- a/plugins/QueuedTracking +++ b/plugins/QueuedTracking @@ -1 +1 @@ -Subproject commit 0c609086f4e190a8aac88329ffc50fe4a19260c2 +Subproject commit abe4986e60d79564ab82676797833da2e3808d60 diff --git a/plugins/Referrers/Columns/Base.php b/plugins/Referrers/Columns/Base.php index 5c80aa63498752c63dc0b217d982706625ca8640..ab6090e78e9abae87ce1a8c718eea46d4c359674 100644 --- a/plugins/Referrers/Columns/Base.php +++ b/plugins/Referrers/Columns/Base.php @@ -339,6 +339,9 @@ abstract class Base extends VisitDimension // 2) Referrer URL stored in the _ref cookie // 3) If no info from the cookie, attribute to the current visit referrer + + Common::printDebug("Attributing a referrer to this Goal..."); + // 3) Default values: current referrer $type = $visitor->getVisitorColumn('referer_type'); $name = $visitor->getVisitorColumn('referer_name'); @@ -351,11 +354,13 @@ abstract class Base extends VisitDimension && !empty($name) ) { // Use default values per above + Common::printDebug("Invalid Referrer information found: current visitor seems to have used a campaign, but campaign name was not found in the request."); } // 1) Campaigns from 1st party cookie elseif (!empty($referrerCampaignName)) { $type = Common::REFERRER_TYPE_CAMPAIGN; $name = $referrerCampaignName; $keyword = $referrerCampaignKeyword; + Common::printDebug("Campaign information from 1st party cookie is used."); } // 2) Referrer URL parsing elseif (!empty($referrerUrl)) { @@ -367,7 +372,13 @@ abstract class Base extends VisitDimension $type = $referrer['referer_type']; $name = $referrer['referer_name']; $keyword = $referrer['referer_keyword']; + + Common::printDebug("Referrer URL (search engine or website) is used."); + } else { + Common::printDebug("No referrer attribution found for this user. Current user's visit referrer is used."); } + } else { + Common::printDebug("No referrer attribution found for this user. Current user's visit referrer is used."); } $this->setCampaignValuesToLowercase($type, $name, $keyword); diff --git a/plugins/Referrers/Controller.php b/plugins/Referrers/Controller.php index efd1820d443332d8a6054b441b0d1994513bab43..c628af7a83157c5f96a278cadc075f7d30cad840 100644 --- a/plugins/Referrers/Controller.php +++ b/plugins/Referrers/Controller.php @@ -310,7 +310,7 @@ class Controller extends \Piwik\Plugin\Controller // HTML $api = SettingsPiwik::getPiwikUrl() . '?module=API&method=Referrers.getKeywordsForPageUrl' - . '&format=php' + . '&format=json' . '&filter_limit=10' . '&token_auth=' . Piwik::getCurrentUserTokenAuth(); @@ -325,7 +325,8 @@ function DisplayTopKeywords($url = "") // Get the Keywords data $url = empty($url) ? "http://". $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] : $url; $api = "' . $api . '&url=" . urlencode($url); - $keywords = @unserialize(file_get_contents($api)); + $keywords = @json_decode(file_get_contents($api), $assoc = true); + Common::sendHeader(\'Content-Type: text/html; charset=utf-8\', true); if ($keywords === false || isset($keywords["result"])) { // DEBUG ONLY: uncomment for troubleshooting an empty output (the URL output reveals the token_auth) // echo "Error while fetching the <a href=\'$api\'>Top Keywords from Piwik</a>"; @@ -362,7 +363,8 @@ function DisplayTopKeywords($url = "") // Get the Keywords data $url = empty($url) ? "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] : $url; $api = $api . "&url=" . urlencode($url); - $keywords = @unserialize(file_get_contents($api)); + $keywords = @json_decode(file_get_contents($api), $assoc = true); + Common::sendHeader('Content-Type: text/html; charset=utf-8', true); if ($keywords === false || isset($keywords["result"])) { // DEBUG ONLY: uncomment for troubleshooting an empty output (the URL output reveals the token_auth) //echo "Error while fetching the <a href=\'".$api."\'>Top Keywords from Piwik</a>"; diff --git a/plugins/Referrers/Referrers.php b/plugins/Referrers/Referrers.php index cefa27bef83eb5e051082e1e8314e56fe132b2fa..ce8667929bba3a117deea4383021060d4a43cce4 100644 --- a/plugins/Referrers/Referrers.php +++ b/plugins/Referrers/Referrers.php @@ -23,9 +23,9 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/Referrers/functions.php'; class Referrers extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Insights.addReportToOverview' => 'addReportToInsightsOverview', diff --git a/plugins/Referrers/lang/it.json b/plugins/Referrers/lang/it.json index 455e665912f605ccdba76afa91cf880cb81b68a2..94396a0dcd91bd1a5b794be18fafbec99a5671a8 100644 --- a/plugins/Referrers/lang/it.json +++ b/plugins/Referrers/lang/it.json @@ -1,8 +1,8 @@ { "Referrers": { - "AllReferrersReportDocumentation": "Questo report mostra tutti i tuoi Referenti in un unico report che elenca tutti i siti web, Parole chiave di ricerca e Campagne utilizzate dai visitatori per trovare il tuo sito web.", + "AllReferrersReportDocumentation": "Questo report mostra tutti i tuoi Referenti in un unico report che elenca tutti i Siti web, le Parole chiave di ricerca e Campagne utilizzate dai visitatori per trovare il tuo sito web.", "Campaigns": "Campagne", - "CampaignsDocumentation": "Visitatori che sono arrivati sul tuo sito web a seguito di una campagna. %s Vedi il Report %s per maggiori dettagli.", + "CampaignsDocumentation": "Visitatori che sono arrivati sul tuo sito web a seguito di una campagna. %s Vedi il%s Report per maggiori dettagli.", "CampaignsReportDocumentation": "Questo report mostra quali campagne hanno portato i visitatori sul tuo sito web. %s Per ulteriori informazioni sulle campagne di monitoraggio, leggi la %sdocumentazione campagne su piwik.org%s", "ColumnCampaign": "Campagna", "ColumnSearchEngine": "Motore di ricerca", @@ -12,43 +12,43 @@ "DirectEntry": "Ingressi Diretti", "DirectEntryDocumentation": "Un visitatore ha inserito l'URL nel proprio browser e ha iniziato la navigazione sul tuo sito web - è entrato direttamente al sito.", "Distinct": "Referenti distinti per tipo", - "DistinctCampaigns": "Campagne", - "DistinctKeywords": "Parole chiave", - "DistinctSearchEngines": "Motori di ricerca", - "DistinctWebsites": "Siti web", + "DistinctCampaigns": "campagne distinte", + "DistinctKeywords": "parole chiave distinte", + "DistinctSearchEngines": "motori di ricerca distinti", + "DistinctWebsites": "siti web distinti", "EvolutionDocumentation": "Questa è una panoramica dei referenti che hanno portato i visitatori sul tuo sito web.", - "EvolutionDocumentationMoreInfo": "Per ulteriori informazioni sui diversi tipi referenti, consulta la documentazione della%s tabella.", + "EvolutionDocumentationMoreInfo": "Per ulteriori informazioni sui diversi tipi referenti, consulta la documentazione della %s tabella.", "Keywords": "Keywords", - "KeywordsReportDocumentation": "Questo report mostra le parole chiave che gli utenti hanno ricercato prima prima di venire indirizzati sul tuo sito web. %s Cliccando su una riga della tabella, è possibile vedere la distribuzione dei motori di ricerca che sono stati interrogati per la parola chiave.", + "KeywordsReportDocumentation": "Questo report mostra le parole chiave che gli utenti hanno ricercato prima di venire indirizzati sul tuo sito web. %s Cliccando su una riga della tabella, è possibile vedere la distribuzione dei motori di ricerca che sono stati interrogati per la parola chiave.", "PluginDescription": "Restituisce i dati dei Referrer: Motori di Ricerca, Keywords, Siti, Campagne, Social media, Ingressi diretti.", "Referrer": "Referente", "ReferrerName": "Nome Referente", - "Referrers": "Provenienze", + "Referrers": "Referenti", "ReferrersOverview": "Panoramica Referenti", - "ReferrerTypes": "Tipi di Referer", + "ReferrerTypes": "Tipi di Referenti", "SearchEngines": "Motori di ricerca", "SearchEnginesDocumentation": "Un visitatore è stato portato sul tuo sito da un motore di ricerca. %s Vedi il %s report per maggiori dettagli.", - "SearchEnginesReportDocumentation": "Questo report mostra quali motori di ricerca dhanno portato gli utenti sull tuo sito web. %s Cliccando su una riga della tabella è possibile vedere ciò che gli utenti stavano cercando utilizzando un determinato motore di ricerca.", + "SearchEnginesReportDocumentation": "Questo report mostra quali motori di ricerca hanno portato gli utenti sul tuo sito web. %s Cliccando su una riga della tabella è possibile vedere ciò che gli utenti stavano cercando utilizzando un determinato motore di ricerca.", "SocialFooterMessage": "Questo è un sottoinsieme dei siti web riportati a sinistra. Esso filtra altri siti web in modo da poter confrontare direttamente i vostri referenti di social network.", "Socials": "Social Networks", "SocialsReportDocumentation": "Questo report mostra quali social networks hanno portato i visitatori sul tuo sito web. <br \/> Cliccando su una riga della tabella si può vedere da quali pagine di social network i visitatori sono venuti sul tuo sito web.", "SubmenuSearchEngines": "Motori di ricerca e parole chiave", - "SubmenuWebsites": "Siti web", + "SubmenuWebsites": "Siti web e Social", "Type": "Tipo di referente", "TypeCampaigns": "%s da campagne", "TypeDirectEntries": "%s ingressi diretti", "TypeReportDocumentation": "Questa tabella contiene informazioni sulla distribuzione dei tipi di referente.", - "TypeSearchEngines": "%s da motore di ricerca", + "TypeSearchEngines": "%s da motori di ricerca", "TypeWebsites": "%s da siti web", "UsingNDistinctUrls": "(usando %s URL distinti)", "ViewAllReferrers": "Vedi tutti i Referenti", "ViewReferrersBy": "Vedi Referenti per %s", "Websites": "Siti web", - "WebsitesDocumentation": "Il visitatore ha seguito un link suun altro sito web che lo ha portato sul tuo sito. %s Vedi il %s report per maggiori dettagli.", + "WebsitesDocumentation": "Il visitatore ha seguito un link su un altro sito web che lo ha portato sul tuo. %s Vedi il %s report per maggiori dettagli.", "WebsitesReportDocumentation": "In questa tabella è possibile vedere quali siti web hanno portato i visitatori sul tuo sito. %s Cliccando su una riga della tabella è possibile vedere su quali URL si trovavano i link al tuo sito.", - "WidgetExternalWebsites": "Lista di Siti web esterni", + "WidgetExternalWebsites": "Elenco di Siti web esterni", "WidgetGetAll": "Tutti i Referenti", - "WidgetSocials": "Elenco dei social network", + "WidgetSocials": "Elenco di social network", "WidgetTopKeywordsForPages": "Top Keyword per URL Pagina", "XPercentOfVisits": "%s%% di visite" } diff --git a/plugins/Referrers/lang/zh-cn.json b/plugins/Referrers/lang/zh-cn.json index cc53e77b1778245ac2f2e55cf9ca1adfa5a19303..7fdef3a5f02784f40e92a7188efc1f9cd84d3d2a 100644 --- a/plugins/Referrers/lang/zh-cn.json +++ b/plugins/Referrers/lang/zh-cn.json @@ -20,10 +20,12 @@ "EvolutionDocumentationMoreInfo": "ä¸åŒçš„æ¥æºåˆ†ç±»è¯¦æƒ…请看 %s 表的文档.", "Keywords": "关键è¯", "KeywordsReportDocumentation": "本报表显示访客æœç´¢å“ªäº›å…³é”®å—åŽæ¥åˆ°äº†æ‚¨çš„网站。%s 点击表ä¸çš„ä¸€è¡Œï¼Œå¯æŸ¥çœ‹ç”¨äºŽæœç´¢è¯¥å…³é”®å—çš„æœç´¢å¼•擎列表。", + "PluginDescription": "æŠ¥å‘Šå¼•èæ•°æ®ï¼šæœç´¢å¼•擎,关键è¯ï¼Œç½‘站,广告活动,社会化媒体,直接进入。", "Referrer": "æ¥æºåˆ†æž", "ReferrerName": "æ¥æºåç§°", "Referrers": "æ¥æºåˆ†æž", "ReferrersOverview": "æ¥æºæ€»è¡¨", + "ReferrerTypes": "引è类型", "SearchEngines": "æœç´¢å¼•擎", "SearchEnginesDocumentation": "访客æ¥è‡ªæœç´¢å¼•擎。%s 查看 %s 报表了解详情。", "SearchEnginesReportDocumentation": "本报表显示哪些æœç´¢å¼•擎给您带æ¥äº†è®¿å®¢ã€‚%s 点击表ä¸çš„ä¸€è¡Œï¼Œå¯æŸ¥çœ‹è®¿å®¢ä½¿ç”¨è¯¥æœç´¢å¼•擎æœç´¢çš„内容。", @@ -47,6 +49,7 @@ "WidgetExternalWebsites": "æ¥æºç½‘ç«™", "WidgetGetAll": "æ‰€æœ‰æ¥æº", "WidgetSocials": "社交网络", - "WidgetTopKeywordsForPages": "主è¦å…³é”®è¯" + "WidgetTopKeywordsForPages": "主è¦å…³é”®è¯", + "XPercentOfVisits": "%s%% 个访问" } } \ No newline at end of file diff --git a/plugins/Resolution/Resolution.php b/plugins/Resolution/Resolution.php index 49b2d3a9a62c7a745c909d54cc50b2ce0c190958..5ab7692ccf6e1e54dad7d05b5bd7cdacd1079e0b 100644 --- a/plugins/Resolution/Resolution.php +++ b/plugins/Resolution/Resolution.php @@ -17,9 +17,9 @@ use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; class Resolution extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Live.getAllVisitorDetails' => 'extendVisitorDetails', diff --git a/plugins/Resolution/lang/it.json b/plugins/Resolution/lang/it.json index 41dc660c4f7c38b559ec206be5c6202a15aa5fdd..702f8911c540bd7ac1d9934e31fc446c25893f77 100644 --- a/plugins/Resolution/lang/it.json +++ b/plugins/Resolution/lang/it.json @@ -5,7 +5,7 @@ "Configurations": "Configurazioni", "PluginDescription": "Restituisce la risoluzione di schermo dei tuoi visitatori.", "Resolutions": "Risoluzioni", - "WidgetGlobalVisitors": "Riepilogo configurazione visitatori", + "WidgetGlobalVisitors": "Configurazione visitatori", "WidgetGlobalVisitorsDocumentation": "Questo report mostra le configurazioni globali più comuni che i visitatori avevano. Una configurazione è la combinazione di un sistema operativo, un tipo browser e una risoluzione di schermo.", "WidgetResolutions": "Risoluzione schermo" } diff --git a/plugins/SEO/lang/it.json b/plugins/SEO/lang/it.json index b7dcf0a06cbc6cd4e9cb52e3fe24b2f6343ea99d..55b1b044e534dcc3bd6a7f2de940473089abdcd7 100644 --- a/plugins/SEO/lang/it.json +++ b/plugins/SEO/lang/it.json @@ -1,6 +1,6 @@ { "SEO": { - "PluginDescription": "Questo plugin estrae e visualizza le metriche SEO. Alexa web ranking, Google Pagerank, numero di pagine indicizzate e i backlink del sito al momento selezionato.", + "PluginDescription": "Questo plugin estrae e visualizza le metriche SEO: Alexa web ranking, Google Pagerank, numero di pagine indicizzate e i backlink del sito al momento selezionato.", "AlexaRank": "Alexa Rank", "Bing_IndexedPages": "Pagine indicizzate da Bing", "Dmoz": "Voci DMOZ", diff --git a/plugins/SEO/lang/sr.json b/plugins/SEO/lang/sr.json index fc86a2cd81130a2c4f4c3a580b67670e739ca217..eff63967c012233269b5148ae3ddcc853949de4f 100644 --- a/plugins/SEO/lang/sr.json +++ b/plugins/SEO/lang/sr.json @@ -1,5 +1,6 @@ { "SEO": { + "PluginDescription": "Ovaj dodatak prikuplja i prikazuje SEO metrike: Aleksa rangiranje, Gugl rangiranje, broj indeksiranih stranica i povratnih linkova za trenutno odabrani sajt.", "AlexaRank": "Alexa rangiranje", "Bing_IndexedPages": "Stranice koje je indeksirao Bing", "Dmoz": "DMOZ stavke", diff --git a/plugins/SEO/lang/zh-cn.json b/plugins/SEO/lang/zh-cn.json index a21d0a51323d59808b758ebafb823ee24ce78804..77a35b915d7d7f7b565a1076b523f6d46b122a1e 100644 --- a/plugins/SEO/lang/zh-cn.json +++ b/plugins/SEO/lang/zh-cn.json @@ -1,5 +1,6 @@ { "SEO": { + "PluginDescription": "这个æ’ä»¶æå–和显示的æœç´¢å¼•æ“Žä¼˜åŒ–æŒ‡æ ‡ï¼šAlexa的网站排å,谷æŒçš„PageRank,索引和åå‘当å‰é€‰æ‹©çš„网站数。", "AlexaRank": "Alexa 排å", "Bing_IndexedPages": "Bing 索引页é¢", "Dmoz": "DMOZ æ¡ç›®", diff --git a/plugins/ScheduledReports/ScheduledReports.php b/plugins/ScheduledReports/ScheduledReports.php index 9876ad0ed7dd2e3581f6084e000b9173f8318bf5..c66a6ad0d68ea8f3c210370d0ea2c20f3155c18d 100644 --- a/plugins/ScheduledReports/ScheduledReports.php +++ b/plugins/ScheduledReports/ScheduledReports.php @@ -71,9 +71,9 @@ class ScheduledReports extends \Piwik\Plugin const OPTION_KEY_LAST_SENT_DATERANGE = 'report_last_sent_daterange_'; /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/ScheduledReports/lang/cs.json b/plugins/ScheduledReports/lang/cs.json index 7f59aba1113f8f87396af6c3a49af8514007ded8..836eb47133deeda2e101c726fc384ac61cbc78fb 100644 --- a/plugins/ScheduledReports/lang/cs.json +++ b/plugins/ScheduledReports/lang/cs.json @@ -24,9 +24,11 @@ "Pagination": "Stránka %s z %s", "PiwikReports": "Hlášenà Piwiku", "PleaseFindAttachedFile": "ProsÃm najdÄ›te v pÅ™iloženém souboru %1$s hlášenà pro %2$s", + "SentFromX": "Odesláno z %s.", "PleaseFindBelow": "NajdÄ›te nÞe vaÅ¡e %1$s hlášenà pro %2$s.", "PluginDescription": "VytvoÅ™te vlastnà emailová hlášenà a naplánujte jejich zaslánà dennÄ›, týdnÄ› nebo mÄ›sÃÄnÄ› jednomu nebo vÃce lidem. Je podporováno mnoho formátů (HTML, PDF, CSV, obrázky).", "ReportFormat": "Formát hlášenÃ", + "ReportHour": "Odeslat hlášenà v %s hodin", "ReportIncludeNWebsites": "Hlášenà bude obsahovat hlavnà měřenà pro webové stránky, které majà aspoň jednnu návÅ¡tÄ›vu z %s aktuálnÄ› dostupných stránek.", "ReportSent": "Hlášenà posláno", "ReportsIncluded": "Zahrnuté statistiky", diff --git a/plugins/ScheduledReports/lang/de.json b/plugins/ScheduledReports/lang/de.json index 4b367ac92255aaac4a82d502fbd408d34da5cbef..7e4ed30e0bea3fe58ee06bca50f95b28eb4ec95b 100644 --- a/plugins/ScheduledReports/lang/de.json +++ b/plugins/ScheduledReports/lang/de.json @@ -24,6 +24,7 @@ "Pagination": "Seite %s von %s", "PiwikReports": "Piwik-Berichte", "PleaseFindAttachedFile": "Sie finden in der angehängten Datei Ihren Bericht (Intervall: %1$s) für %2$s.", + "SentFromX": "Gesendet von %s", "PleaseFindBelow": "Unterhalb befindet sich der Bericht (Intervall: %1$s) für %2$s.", "PluginDescription": "Erstellen Sie eigene Berichte und planen Sie deren täglichen, wöchentlichen oder monatlichen Versand an einen oder mehrere Empfänger. Diverse Berichtsformate werden unterstützt (HTML, PDF, CSV, Bilder).", "ReportFormat": "Berichtsformat", diff --git a/plugins/ScheduledReports/lang/el.json b/plugins/ScheduledReports/lang/el.json index dc8ed941abcb248347665142308766edd158deca..cea172536bf0b1ad75e89e79733766392e67876c 100644 --- a/plugins/ScheduledReports/lang/el.json +++ b/plugins/ScheduledReports/lang/el.json @@ -24,6 +24,7 @@ "Pagination": "Σελίδα %s από %s", "PiwikReports": "ΑναφοÏÎÏ‚ Piwik", "PleaseFindAttachedFile": "Î’Ïείτε στο συνημμÎνο αÏχείο την αναφοÏά %1$s για %2$s.", + "SentFromX": "Στάλθηκε από %s.", "PleaseFindBelow": "Î’Ïείτε παÏακάτω την αναφοÏά %1$s για τη %2$s.", "PluginDescription": "ΔημιουÏγεί Ï€ÏοσαÏμοσμÎνες αναφοÏÎÏ‚ και τις Ï€ÏογÏαμματίζει για καθημεÏινή, εβδομαδιαία ή μηνιαία αναφοÏά σε Îνα ή πεÏισσότεÏα άτομα. ΥποστηÏίζονται αÏκετοί Ï„Ïποι αναφοÏών (html, pdf, csv, εικόνες).", "ReportFormat": "ΜοÏφή ΑναφοÏάς", diff --git a/plugins/ScheduledReports/lang/fr.json b/plugins/ScheduledReports/lang/fr.json index 5b8a0b27baa087214fbc23a869ec1dde11d86c8a..97521be39a5409a4f08605443762aece83476cc2 100644 --- a/plugins/ScheduledReports/lang/fr.json +++ b/plugins/ScheduledReports/lang/fr.json @@ -24,6 +24,7 @@ "Pagination": "Page %s sur %s", "PiwikReports": "Rapports Piwik", "PleaseFindAttachedFile": "Veuillez trouver en pièce jointe votre rapport %1$s pour %2$s.", + "SentFromX": "Envoyé depuis %s.", "PleaseFindBelow": "Veuillez trouver ci-dessous votre %1$s rapport pour %2$s.", "PluginDescription": "Créez des rapports personnalisés et planifiez de les envoyer par courriel quotidiennement, hebdomadairement ou mensuellement à une ou plusieurs personnes. Plusieurs formats de rapports sont supportés (html, pdf, csv, images).", "ReportFormat": "Format du rapport", diff --git a/plugins/ScheduledReports/lang/nb.json b/plugins/ScheduledReports/lang/nb.json index 58f50e1528215d297d87986617f423ec8931cc9f..4b49ab9199737f791f986c31eff1ddc4ebe22397 100644 --- a/plugins/ScheduledReports/lang/nb.json +++ b/plugins/ScheduledReports/lang/nb.json @@ -14,6 +14,7 @@ "Pagination": "Side %s av %s", "PiwikReports": "Piwik-rapporter", "PleaseFindAttachedFile": "I den vedlagte filen finner du din %1$s rapport for %2$s.", + "SentFromX": "Sendt fra %s.", "PleaseFindBelow": "Nedenfor finner du din %1$s rapport for %2$s.", "ReportFormat": "Rapportformat", "ReportHour": "Send rapport klokken %s", diff --git a/plugins/ScheduledReports/lang/sr.json b/plugins/ScheduledReports/lang/sr.json index e063dc3915b41386dcbf8d9134b973cc8f5dad39..e3666b4c53cad34c0eee77a19a28339bcc29af3e 100644 --- a/plugins/ScheduledReports/lang/sr.json +++ b/plugins/ScheduledReports/lang/sr.json @@ -24,9 +24,11 @@ "Pagination": "Strana %s od %s", "PiwikReports": "Piwik izveÅ¡taji", "PleaseFindAttachedFile": "u prilogu se nalazi vaÅ¡ %1$s izveÅ¡taj za %2$s.", + "SentFromX": "Poslato od strane %s.", "PleaseFindBelow": "u nastavku je vaÅ¡ %1$s izveÅ¡taj za %2$s.", "PluginDescription": "Kreirajte sopstvene izveÅ¡taje i zakažite njihovo slanje putem elektronske poÅ¡te dnevno, nedeljno ili meseÄno jednoj ili viÅ¡e osoba. ViÅ¡e razliÄitih formata je podržano (HTML, PDF, CSV, slike).", "ReportFormat": "Format izveÅ¡taja", + "ReportHour": "PoÅ¡alji izveÅ¡taj u %s", "ReportIncludeNWebsites": "IzveÅ¡taj će obuhvatiti glavne metrike za sve sajtove koji imaju barem jednu posetu (od ukupno %s sajtova koliko je trenutno dostupno).", "ReportSent": "IzveÅ¡taj je poslat", "ReportsIncluded": "Statistika ukljuÄena", diff --git a/plugins/ScheduledReports/lang/zh-cn.json b/plugins/ScheduledReports/lang/zh-cn.json index 0b2552a2d14834df8c97b0f864d2fe95c90ee752..f9b79ebf690a86dc0bc911f0a861d251cc13778c 100644 --- a/plugins/ScheduledReports/lang/zh-cn.json +++ b/plugins/ScheduledReports/lang/zh-cn.json @@ -17,14 +17,18 @@ "EmailSchedule": "邮件计划", "EvolutionGraph": "æ˜¾ç¤ºå‰ %s 个的历å²å›¾å½¢", "FrontPage": "首页", + "PersonalEmailReports": "个人电å邮件报告", "MonthlyScheduleHelp": "æ¯æœˆè®¡åˆ’: æŠ¥è¡¨å°†ä¼šåœ¨æ¯æœˆçš„第一天寄出。", "MustBeLoggedIn": "ç™»å½•åŽæ‰èƒ½åˆ›å»ºå’Œè‡ªå®šä¹‰æŠ¥è¡¨ã€‚", "NoRecipients": "这个报表没有收件人", "Pagination": "第 %s 页,共 %s 页", "PiwikReports": "Piwik 报表", "PleaseFindAttachedFile": "您的 %2$s çš„ %1$s 报表在附件ä¸ã€‚", + "SentFromX": "æ¥è‡ª%så‘é€ã€‚", "PleaseFindBelow": "䏋颿˜¯æ‚¨çš„ %2$s çš„ %1$s 报表。", + "PluginDescription": "创建自定义报告,并安排他们æ¯å¤©é€šè¿‡ç”µå邮件å‘é€ï¼Œæ¯å‘¨æˆ–æ¯æœˆä¸€ä¸ªæˆ–å‡ ä¸ªäººã€‚ä¸€äº›æŠ¥å‘Šæ ¼å¼æ”¯æŒï¼ˆHTML,PDF,CSV,图åƒï¼‰ã€‚", "ReportFormat": "æŠ¥è¡¨æ ¼å¼", + "ReportHour": "å‘é€æŠ¥å‘Šåœ¨ %s 点的时候", "ReportIncludeNWebsites": "本报表包括至少有一次访问(æ¥è‡ªå½“å‰çš„ %s 个网站)çš„æ‰€æœ‰ç½‘ç«™çš„ä¸»è¦æŒ‡æ ‡ã€‚", "ReportSent": "报表已å‘出", "ReportsIncluded": "包括统计", diff --git a/plugins/SecurityInfo b/plugins/SecurityInfo index 7a8aa2939e4d7cab3c2a3c6e23ded823e409c66d..0c630c240963446c90396939d323416852b3ea48 160000 --- a/plugins/SecurityInfo +++ b/plugins/SecurityInfo @@ -1 +1 @@ -Subproject commit 7a8aa2939e4d7cab3c2a3c6e23ded823e409c66d +Subproject commit 0c630c240963446c90396939d323416852b3ea48 diff --git a/plugins/SegmentEditor/SegmentEditor.php b/plugins/SegmentEditor/SegmentEditor.php index 4ed59a4a7b5fd89752c1d4be06a860e8af699ff7..9107935e7307fe74d7c163033a348b98c72dd776 100644 --- a/plugins/SegmentEditor/SegmentEditor.php +++ b/plugins/SegmentEditor/SegmentEditor.php @@ -18,9 +18,9 @@ use Piwik\Version; class SegmentEditor extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Segments.getKnownSegmentsToArchiveForSite' => 'getKnownSegmentsToArchiveForSite', diff --git a/plugins/SegmentEditor/lang/cs.json b/plugins/SegmentEditor/lang/cs.json index 851af5b92154a40806c487d27ff56736ebc38435..36dd2084b373b4afa97249ab7d86665fac7f2373 100644 --- a/plugins/SegmentEditor/lang/cs.json +++ b/plugins/SegmentEditor/lang/cs.json @@ -1,5 +1,6 @@ { "SegmentEditor": { + "PluginDescription": "Vytvářejte a znovu použijte vlastnà segmenty návÅ¡tÄ›vnÃků za použità editoru segmentů.", "AddANDorORCondition": "PÅ™idat podmÃnku %s", "AddNewSegment": "PÅ™idat nový segment", "AreYouSureDeleteSegment": "Opravdu chcete odstranit tento segment?", diff --git a/plugins/SegmentEditor/lang/sr.json b/plugins/SegmentEditor/lang/sr.json index e713bde3b44a2e3bf1c2f1daa4ef7a59237ad477..82102c610e1473c2c49d170348bdae21e625e62c 100644 --- a/plugins/SegmentEditor/lang/sr.json +++ b/plugins/SegmentEditor/lang/sr.json @@ -1,5 +1,6 @@ { "SegmentEditor": { + "PluginDescription": "Kreiranje segmentiranih izveÅ¡taja.", "AddANDorORCondition": "Dodavanje uslova %s", "AddNewSegment": "Dodavanje novog segmenta", "AreYouSureDeleteSegment": "Da li ste sigurni da želite da obriÅ¡ete ovaj segment?", diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php index 7c2715fa2b4d74a4e1a9dd694a81ed47ae3970c1..fabdd616e66e85dced3b6ec8f9d3e0b621fd5bca 100644 --- a/plugins/SitesManager/API.php +++ b/plugins/SitesManager/API.php @@ -263,6 +263,7 @@ class API extends \Piwik\Plugin\API * * @param bool|int $timestamp * @return array The list of website IDs + * @deprecated since 2.15 This method will be removed in Piwik 3.0, there is no replacement. */ public function getSitesIdWithVisits($timestamp = false) { diff --git a/plugins/SitesManager/Model.php b/plugins/SitesManager/Model.php index 6a78a493c77266d38335eed3bc9e77c2399dff51..62372510ac971474b017a2ba4c0a7518321b07e5 100644 --- a/plugins/SitesManager/Model.php +++ b/plugins/SitesManager/Model.php @@ -80,8 +80,8 @@ class Model /** * Returns the list of the website IDs that received some visits since the specified timestamp. * - * @param \Piwik\Date $time - * @param \Piwik\Date $now + * @param string $time + * @param string $now * @return array The list of website IDs */ public function getSitesWithVisits($time, $now) diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php index 16c330d6c1cef067e306f0b28d9120fd5e2fdb90..cd37b6e63b91015e702eff1e67bb3a583345994b 100644 --- a/plugins/SitesManager/SitesManager.php +++ b/plugins/SitesManager/SitesManager.php @@ -26,9 +26,9 @@ class SitesManager extends \Piwik\Plugin const KEEP_URL_FRAGMENT_NO = 2; /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/SitesManager/lang/cs.json b/plugins/SitesManager/lang/cs.json index 0b145e9a6a2da2ff21c72723af65c010248a743b..014c9f88f2327123f9b282221534d12d0e1bef55 100644 --- a/plugins/SitesManager/lang/cs.json +++ b/plugins/SitesManager/lang/cs.json @@ -1,6 +1,7 @@ { "SitesManager": { "AddSite": "PÅ™Ãdat nový web", + "AddMeasurable": "PÅ™idat nové měřenÃ", "AdvancedTimezoneSupportNotFound": "PokroÄilá podpora Äasových zón nebyla ve vaÅ¡em PHP (podporována v PHP >=5.2) nalezena. Stále můžete použÃt ruÄnà UTF offset.", "AliasUrlHelp": "Je doporuÄeno, ale ne vyžadováno, specifikovat různé URL, jednu na řádku, které vašà návÅ¡tÄ›vnÃci použÃvajà pro pÅ™Ãstup ke stránkám. Aliasy se neobjevà hlášenà OdkazujÃcà stránky>WWW. VÅ¡imnÄ›te si, že nenà nutné zadávat URL s a bez 'www'. Piwik automaticky rozezná obÄ›.", "ChangingYourTimezoneWillOnlyAffectDataForward": "ZmÄ›na vašà Äasové zóny se projevà pouze v nových datech a nebude aplikována zpÄ›tnÄ›.", @@ -66,13 +67,18 @@ "SiteSearchUse": "Piwik můžete použÃt ke sledovánà a hlášenà toho, co návÅ¡tÄ›vnÃci hledajà pomocà internÃho vyhledávaÄe.", "SiteWithoutDataTitle": "ZatÃm nebyla zaznamenána žádná data", "SiteWithoutDataDescription": "Pro tuto stránku nebyla zatÃm zaznamenána žádná analytická data.", + "SiteWithoutDataSetupTracking": "ProsÃm, nastavte %1$ssledovacà javascriptový kód %2$s na vaÅ¡ich webových stránkách, a pak stránku obnovte.", "SuperUserAccessCan": "eUživatel se super uživatelským pÅ™Ãstupem může také %sspecifikovat globálnà nastavenÃ%s pro nové webové stránky.", "Timezone": "ÄŒasová zóna", "TrackingSiteSearch": "Sledovánà internÃho vyhledávánà na stránkách", "TrackingTags": "Zaznamenávacà tagy pro %s", "Urls": "URL", "UTCTimeIs": "UTC Äas je %s", + "OnlyMatchedUrlsAllowed": "Sledovat návÅ¡tÄ›vy a akce pouze tehdy, když URL akce zaÄÃná jednou z výše uvedených URL.", + "OnlyMatchedUrlsAllowedHelp": "Pokud je povoleno, Piwik bude sledovat internà akce pouze tehdy, když je URL stránky jednou ze známých URL vaÅ¡ich webových stránek. To zabránà lidem, aby zahltili analýzu URL jiných stránek.", "WebsitesManagement": "Nastavenà Web sÃdel", + "XManagement": "Spravovat %s", + "ChooseMeasurableTypeHeadline": "Co byste chtÄ›l měřit?", "YouCurrentlyHaveAccessToNWebsites": "MomentálnÄ› máte pÅ™Ãstup k %s stránce\/stránkám.", "YourCurrentIpAddressIs": "VaÅ¡e souÄasná IP adresa je %s" } diff --git a/plugins/SitesManager/lang/de.json b/plugins/SitesManager/lang/de.json index 828e38ead4c45d8a7812cde26b11b0947d8e5e8c..159a7a74b24031686b1b8b88c471865a85fb8efb 100644 --- a/plugins/SitesManager/lang/de.json +++ b/plugins/SitesManager/lang/de.json @@ -74,6 +74,8 @@ "TrackingTags": "Tracking-Code für %s", "Urls": "URLs", "UTCTimeIs": "UTC-Zeit ist %s.", + "OnlyMatchedUrlsAllowed": "Zeichne Besuche und Aktionen nur auf wenn die Aktions-URL mit einer der oben genannten URLs beginnt.", + "OnlyMatchedUrlsAllowedHelp": "Wenn aktiviert zeichnet Piwik nur noch interne Aktionen auf bei denen die Seiten-URL eine der bekannten URLs der Website ist. Dies hindert andere daran Ihre Analyse mit URLs von anderen Websites zu verfälschen.", "WebsitesManagement": "Websiteverwaltung", "XManagement": "%s verwalten", "ChooseMeasurableTypeHeadline": "Was möchten Sie messen?", diff --git a/plugins/SitesManager/lang/el.json b/plugins/SitesManager/lang/el.json index 9385aec3acb3918172bbf59da088283073f7e3aa..2670247d2798e33731dc97ba1587e638e401b432 100644 --- a/plugins/SitesManager/lang/el.json +++ b/plugins/SitesManager/lang/el.json @@ -74,6 +74,8 @@ "TrackingTags": "Κώδικας εποπτείας για %s", "Urls": "ΔιευθÏνσεις URL", "UTCTimeIs": "Ο Παγκόσμιος χÏόνος είναι %s.", + "OnlyMatchedUrlsAllowed": "Îα παÏακολυθοÏνται επισκÎψεις και οι ενÎÏγειες μόνο όταν η διεÏθυνση URL ξεκινάει με μία από τις παÏαπάνω διευθÏνσεις URL.", + "OnlyMatchedUrlsAllowedHelp": "Όταν είναι ενεÏγοποιημÎνο, το Piwik θα παÏακολουθεί εσωτεÏικÎÏ‚ ενÎÏγειες όταν η διεÏθυνση URL είναι μία από τις γνωστÎÏ‚ διευθÏνσεις URL για τον ιστοτόπο σας. Αυτό αποτÏÎπει Ï„Ïίτους από ανεπιθÏμητη κίνηση στα αναλυτικά σας με διευθÏνσεις URL από Ï„Ïίτους ιστοτόπους.", "WebsitesManagement": "ΔιαχείÏιση ιστοσελίδων", "XManagement": "ΔιαχείÏιση του %s", "ChooseMeasurableTypeHeadline": "Τι θÎλετε να μετÏήσετε;", diff --git a/plugins/SitesManager/lang/fr.json b/plugins/SitesManager/lang/fr.json index c277dc3d46400f91fb8df5f51c121eec0262b8d8..283f77c0f3467640d7194f52f62be512eec230a3 100644 --- a/plugins/SitesManager/lang/fr.json +++ b/plugins/SitesManager/lang/fr.json @@ -74,6 +74,8 @@ "TrackingTags": "Code de suivi pour %s", "Urls": "URLs", "UTCTimeIs": "L'heure UTC est %s.", + "OnlyMatchedUrlsAllowed": "Effectue le suivit des visites et actions uniquement quand l'URL d'action commence avec une des URL's ci-dessus.", + "OnlyMatchedUrlsAllowedHelp": "Quand activé, Piwik va effectuer le suivit des actions uniquement quand l'URL de la page est une des URL's de votre site web. Ceci empêche les gens de spammer vos données d'analyse avec des URL's d'autres sites web.", "WebsitesManagement": "Gestion des sites", "XManagement": "Gérer %s", "ChooseMeasurableTypeHeadline": "Que voudriez-vous mesurer ?", diff --git a/plugins/SitesManager/lang/it.json b/plugins/SitesManager/lang/it.json index 814f255f599536ef190bbd2639952b1b31aa5391..412011d891d88c2cb54eac260f878fc7abed04e6 100644 --- a/plugins/SitesManager/lang/it.json +++ b/plugins/SitesManager/lang/it.json @@ -3,7 +3,7 @@ "AddSite": "Aggiungi un nuovo sito web", "AddMeasurable": "Aggiungi un nuovo sito", "AdvancedTimezoneSupportNotFound": "Non è stato trovato nel tuo PHP il supporto avanzato dei fusi orari (supportato in PHP> = 5.2). È comunque possibile scegliere manualmente un offset UTC.", - "AliasUrlHelp": "E' raccomandato, ma non necessario, di specificare le diverse URL che i tuoi utenti usano per accedere al sito. Gli URL alias di un sito non compariranno tra i siti Referer. Nota che non è necessario specificare le URL con e senza 'www' perchè Piwik li considererà ; entrambi automaticamente.", + "AliasUrlHelp": "È raccomandato, ma non necessario, di specificare i diversi URL che i tuoi utenti usano per accedere al sito. Gli URL alias di un sito non compariranno tra i siti Referer. Nota che non è necessario specificare gli URL con e senza 'www' in quanto Piwik li considererà ; entrambi automaticamente.", "ChangingYourTimezoneWillOnlyAffectDataForward": "Il cambio del fuso orario interesserà i prossimi report a partire da adesso, mentre quelli precedenti non saranno modificati.", "ChooseCityInSameTimezoneAsYou": "Scegli una città che si trova nel tuo stesso fuso orario.", "Currency": "Valuta", @@ -16,18 +16,18 @@ "EnableEcommerce": "Ecommerce attivato", "EnableSiteSearch": "Tracciamento Ricerca nel Sito abilitato", "EnableSiteSpecificUserAgentExclude": "Abilita l'esclusione dal sito di uno specifico user agent", - "EnableSiteSpecificUserAgentExclude_Help": "Se è necessario escludere diversi user agent per diversi siti web, seleziona questa casella, clicca su Salva e%1$saggiungi qui sopra gli user agents%2$s.", + "EnableSiteSpecificUserAgentExclude_Help": "Se è necessario escludere diversi user agent per diversi siti web, seleziona questa casella, clicca su Salva e%1$saggiungi qui sopra gli user agent%2$s.", "ExceptionDeleteSite": "Non è possibile cancellare questo sito web perché è l'unico registrato. Aggiungi prima un nuovo sito, quindi puoi cancellare questo.", "ExceptionEmptyName": "Il nome del sito non può essere vuoto.", "ExceptionInvalidCurrency": "La valuta \"%s\" non è valida. Inserisci un simbolo di valuta valido (es. %s)", "ExceptionInvalidIPFormat": "L'indirizzo IP da escludere \"%s\" non ha un formato IP valido (per esempio %s).", - "ExceptionInvalidTimezone": "Il timezone \"%s\" non è valido. Per favore inserisci un valido timezone.", + "ExceptionInvalidTimezone": "Il fuso orario \"%s\" non è valido. Per favore inseriscine uno valido.", "ExceptionInvalidUrl": "L'indirizzo \"%s\" non è un URL valido.", "ExceptionNoUrl": "Devi specificare almeno un URL per questo sito.", "ExcludedIps": "IP Esclusi", "ExcludedParameters": "Escludi Parametri", "ExcludedUserAgents": "User Agents Esclusi", - "GlobalExcludedUserAgentHelp1": "Inserisci l'elenco degli user agents da escludere dal monitoraggio di Piwik.", + "GlobalExcludedUserAgentHelp1": "Inserisci l'elenco degli user agent da escludere dal monitoraggio di Piwik.", "GlobalExcludedUserAgentHelp2": "È possibile utilizzare questo per escludere dal tracciamento alcuni bot.", "GlobalListExcludedIps": "Lista globale di IP Esclusi", "GlobalListExcludedQueryParameters": "Lista globale di parametri Query URL da escludere", @@ -39,32 +39,32 @@ "KeepURLFragments": "Tracciamento frammenti URL Pagina", "KeepURLFragmentsHelp": "Se la casella qui sottto è spuntata, i frammenti URL Pagina (tutti dopo il %1$s) verranno rimossi durante il tracciamento: %2$s verranno tracciati come %3$s", "KeepURLFragmentsHelp2": "È anche possibile ignorare questa impostazione per i singoli siti web qui sopra.", - "KeepURLFragmentsLong": "Conserva i frammenti di URL Pagina quando si tracciano le URL Pagina", + "KeepURLFragmentsLong": "Conserva i frammenti di URL Pagina quando si tracciano gli URL Pagina", "ListOfIpsToBeExcludedOnAllWebsites": "I seguenti indirizzi IP verranno esclusi dal tracking su tutti i siti.", - "ListOfQueryParametersToBeExcludedOnAllWebsites": "I parametri URL Query qui sotto saranno esclusi dalle URL su tutti i siti.", + "ListOfQueryParametersToBeExcludedOnAllWebsites": "I parametri URL Query qui sotto saranno esclusi dagli URL su tutti i siti.", "ListOfQueryParametersToExclude": "Inserisci l'elenco dei parametri di ricerca URL, uno per riga, da escludere dai reports URL Pagina.", "MainDescription": "Per generare i report dei tuoi siti web, devi configurarli in Piwik! Aggiungi, aggiorna, cancella i siti web e visualizza il codice JavaScript da inserire nelle tue pagine.", "NotAnEcommerceSite": "Sito non Ecommerce", "NotFound": "Nessun sito trovato per", "NoWebsites": "Non hai configurato alcun sito web da amministrare.", - "OnlyOneSiteAtTime": "Puoi modificare solo un sito per volta. Per favore Salva o Annulla le modifiche attuali al sito %s.", - "PiwikOffersEcommerceAnalytics": "Piwik permette statistiche Ecommerce avanzate di monitoraggio e reporting. Per saperne di più su%s Statistiche Ecommerce%s.", + "OnlyOneSiteAtTime": "Puoi modificare solo un sito per volta. Per favore Salva o Annulla le attuali modifiche al sito %s.", + "PiwikOffersEcommerceAnalytics": "Piwik permette statistiche Ecommerce avanzate di monitoraggio e reporting. Vai, per saperne di più, su%s Statistiche Ecommerce%s.", "PiwikWillAutomaticallyExcludeCommonSessionParameters": "Piwik escluderà automaticamente i parametri di sessioni comuni (%s).", "PluginDescription": "La Gestione dei Siti ti permette di aggiungere e modificare i siti web esistenti.", "SearchCategoryDesc": "Piwik può anche monitorare la categoria Ricerca per ogni parola chiave di ricerca interna al sito.", "SearchCategoryLabel": "Parametro categoria", "SearchCategoryParametersDesc": "Puoi immettere una lista di parametri di ricerca separati da virgola specificando la categoria di ricerca.", "SearchKeywordLabel": "Parametro di ricerca", - "SearchKeywordParametersDesc": "Immetti una lista separata da virgola di tutti i nomi dei parametri di ricerca che contengono la parola chiave di ricerca del sito.", - "SearchParametersNote": "Nota: i parametri di ricerca e parametri della categoria saranno utilizzati solo per i siti web che hanno la Ricerca nel Sito abilitata ma hanno lasciato questi parametri vuoti.", - "SearchParametersNote2": "Per disabilitare Ricerca nel Sito per i nuovi siti web, lascia vuoti questi due campi.", - "SearchUseDefault": "Usa i parametri %sdefault%s di Ricerca nel Sito", + "SearchKeywordParametersDesc": "Immetti un elenco separato da virgola di tutti i nomi dei parametri di ricerca che contengono la parola chiave di ricerca del sito.", + "SearchParametersNote": "Nota: parametri di ricerca e parametri di categoria saranno utilizzati solo per i siti web che hanno la Ricerca nel Sito abilitata ma hanno lasciato questi parametri vuoti.", + "SearchParametersNote2": "Per disabilitare la Ricerca nel Sito per i nuovi siti web, lascia vuoti questi due campi.", + "SearchUseDefault": "Usa i parametri %spredefiniti%s di Ricerca nel Sito", "SelectACity": "Seleziona una città ", - "SelectDefaultCurrency": "È possibile selezionare la valuta da impostare di default per i nuovi siti web.", - "SelectDefaultTimezone": "Puoi selezionare il fuso orario da caricare di default per i nuovi siti.", + "SelectDefaultCurrency": "È possibile selezionare la valuta predefinita da impostare per i nuovi siti web.", + "SelectDefaultTimezone": "Puoi selezionare il fuso orario predefinito da caricare per i nuovi siti.", "ShowTrackingTag": "Vedi codice Tracking", "Sites": "Siti web", - "SiteSearchUse": "È possibile utilizzare Piwik per monitorare e creare reports su ciò che i visitatori stanno cercando nel motore di ricerca interno del tuo sito web.", + "SiteSearchUse": "È possibile utilizzare Piwik per monitorare e creare dei report su ciò che i visitatori stanno cercando nel motore di ricerca interno del tuo sito web.", "SiteWithoutDataTitle": "Non è stato ancora registrato alcun dato", "SiteWithoutDataDescription": "Per questo sito non sono ancora stati tracciati dati statistici.", "SiteWithoutDataSetupTracking": "Imposta il %1$scodice di tracciamento JavaScript%2$s nel sito e ricarica la pagina.", diff --git a/plugins/SitesManager/lang/nl.json b/plugins/SitesManager/lang/nl.json index 162f67e6727a6c490057f516e24a63b5d1f17d53..8acbfa3042923c77319cd5f6096addb58885d07f 100644 --- a/plugins/SitesManager/lang/nl.json +++ b/plugins/SitesManager/lang/nl.json @@ -48,6 +48,7 @@ "PiwikOffersEcommerceAnalytics": "In Piwik is een geavanceerde Ecommerce Analytics tracking & rapportage mogelijk. Leer meer over %s Ecommerce Analytics%s.", "PiwikWillAutomaticallyExcludeCommonSessionParameters": "Piwik sluit automatisch veelvoorkomende sessie parameters uit (%s).", "PluginDescription": "Website beheer laat je toe nieuwe", + "SearchCategoryDesc": "Piwik kan ook de zoekcategorieën bijhouden voor elk zoekwoord gebruikt op de lokale zoekmachine.", "SearchCategoryLabel": "Categorie parameter", "SearchKeywordLabel": "Query parameter", "SearchKeywordParametersDesc": "Voer een komma gescheiden lijst in van alle query parameter namen die het site zoek sleutelwoord bevatten.", diff --git a/plugins/SitesManager/lang/sr.json b/plugins/SitesManager/lang/sr.json index a83da4d4651e3b9e7d65c63fe9ebe2dd8e7fc81f..5d6605c4aa76074e624f49bb0ff2c6e8cff7662e 100644 --- a/plugins/SitesManager/lang/sr.json +++ b/plugins/SitesManager/lang/sr.json @@ -1,6 +1,7 @@ { "SitesManager": { "AddSite": "Dodavanje novog sajta", + "AddMeasurable": "Dodavanje novog parametra za merenje", "AdvancedTimezoneSupportNotFound": "Napredna podrÅ¡ka za vremenske zone nije pronaÄ‘ena u vaÅ¡oj PHP instalaciji (podržana u PHP>=5.2). Kako bilo, joÅ¡ uvek možete ruÄno izabrati UTC pomeraj.", "AliasUrlHelp": "Savetuje se ali nije neophodno da navedete viÅ¡e adresa, po jednu u svakoj liniji, koje korisnici koriste kako bi pristupili ovom sajtu. Alias adrese se neće pojaviti u izveÅ¡taju Reference > Sajtovi. Imajte na umu da nije neophodno navesti adrese sa i bez 'www' zato Å¡to Piwik automatski vodi raÄuna o obe.", "ChangingYourTimezoneWillOnlyAffectDataForward": "Promena vremenske zone će uticati samo na potonje podatke i neće se primenjivati retroaktivno.", @@ -73,7 +74,11 @@ "TrackingTags": "Kod za praćenje za %s", "Urls": "Adresa", "UTCTimeIs": "UTC vreme je %s.", + "OnlyMatchedUrlsAllowed": "Prati posete i akcije samo kada URL akcije poÄinje sa nekom od sledećih adresa.", + "OnlyMatchedUrlsAllowedHelp": "Ukoliko ukljuÄite ovu opciju, Pivik će pratiti samo akcije koje imaju neke veze sa adresama vaÅ¡eg sajta. Na taj naÄin ćete spreÄiti spemovanje vaÅ¡e analitike adresama drugih sajtova.", "WebsitesManagement": "Upravljanje sajtovima", + "XManagement": "Upravljanje sa %s", + "ChooseMeasurableTypeHeadline": "Å ta biste voleli da merite?", "YouCurrentlyHaveAccessToNWebsites": "Broj sajtova na koje trenutno imate pristup: %s", "YourCurrentIpAddressIs": "VaÅ¡a trenutna IP adresa je %s" } diff --git a/plugins/TasksTimetable b/plugins/TasksTimetable index 4fc122f32959fd7eab2d3e201c2cf6e8431f987f..6c37dfee30982eda5c439b8c4422f5ecbd40a331 160000 --- a/plugins/TasksTimetable +++ b/plugins/TasksTimetable @@ -1 +1 @@ -Subproject commit 4fc122f32959fd7eab2d3e201c2cf6e8431f987f +Subproject commit 6c37dfee30982eda5c439b8c4422f5ecbd40a331 diff --git a/plugins/TestRunner/Commands/TestsRun.php b/plugins/TestRunner/Commands/TestsRun.php index b025330f9bb93c2bc035580f5eced25e334d6d0e..08e456da1985af8cfe90678dcf37ad3016d15b5a 100644 --- a/plugins/TestRunner/Commands/TestsRun.php +++ b/plugins/TestRunner/Commands/TestsRun.php @@ -44,7 +44,8 @@ class TestsRun extends ConsoleCommand $groups = $this->getGroupsFromString($groups); - $command = PIWIK_VENDOR_PATH . '/phpunit/phpunit/phpunit'; + // bin is the composer executeable directory, where all vendors (should) place their executables + $command = PIWIK_VENDOR_PATH . '/bin/phpunit'; if (version_compare(PHP_VERSION, '5.4.0', '<')) { $command = 'php -dzend.enable_gc=0 ' . $command; diff --git a/plugins/Transitions/Transitions.php b/plugins/Transitions/Transitions.php index 473ab7c647206efbba32eff9d20ca76765092d47..c1c10d8b814eb2e6d83e667c58d74a75da66e5aa 100644 --- a/plugins/Transitions/Transitions.php +++ b/plugins/Transitions/Transitions.php @@ -14,9 +14,9 @@ namespace Piwik\Plugins\Transitions; class Transitions extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/Transitions/lang/it.json b/plugins/Transitions/lang/it.json index 7de5cf9832ea5b51393939d0c66709d59b9365ac..c1c76543b137d4a2cb67878a73e7ce2fdc3c3f67 100644 --- a/plugins/Transitions/lang/it.json +++ b/plugins/Transitions/lang/it.json @@ -14,7 +14,7 @@ "IncomingTraffic": "Traffico entrante", "LoopsInline": "%s pagine ricaricate", "NoDataForAction": "Non ci sono dati per %s", - "NoDataForActionDetails": "O l'azione non ha avuto pagine viste durante il periodo di%s o non è valida.", + "NoDataForActionDetails": "O l'azione non ha avuto pagine viste durante il periodo di %s o non è valida.", "OutgoingTraffic": "Traffico uscente", "PluginDescription": "Restituisce le azioni precedenti e seguenti per ciascun URL di pagina in un nuovo report Transizioni, disponibile tra i report Azioni con una nuova icona.", "ShareOfAllPageviews": "Questa pagina ha %s visualizzazioni (%s di tutte le visualizzazioni)", diff --git a/plugins/Transitions/lang/zh-cn.json b/plugins/Transitions/lang/zh-cn.json index 6c9061118ec2deb8b3875d2172265bde54b1f966..61a7bc5e298e15b6ef98e5b319b01a3781acf37d 100644 --- a/plugins/Transitions/lang/zh-cn.json +++ b/plugins/Transitions/lang/zh-cn.json @@ -16,6 +16,7 @@ "NoDataForAction": "没有 %s æ•°æ®", "NoDataForActionDetails": "本活动在 %s æœŸé—´æ²¡æœ‰è¢«è®¿é—®è¿‡æˆ–è€…ä¸æ£ç¡®ã€‚", "OutgoingTraffic": "å‡ºå£æµé‡", + "PluginDescription": "以å‰çš„æŠ¥å‘Šå¹¶ä¸ºæ¯ä¸ªé¡µé¢çš„URL在一个新的过渡报告,在æ“ä½œæŠ¥å‘Šä¸æä¾›ä¸€ä¸ªæ–°çš„å›¾æ ‡æ¥é€šè¿‡æ“作。", "ShareOfAllPageviews": "本页é¢è¢«è®¿é—® %s 次 (总访问é‡çš„ %s)", "ToFollowingPages": "转å‘站内页é¢", "ToFollowingPagesInline": "%s 次转å‘站内页é¢", diff --git a/plugins/TreemapVisualization b/plugins/TreemapVisualization index d3651405b2c037c5e7b9635179011cce94049bfe..e26eb6514fe4d306248d9833bdc78c4dd1d4c1f7 160000 --- a/plugins/TreemapVisualization +++ b/plugins/TreemapVisualization @@ -1 +1 @@ -Subproject commit d3651405b2c037c5e7b9635179011cce94049bfe +Subproject commit e26eb6514fe4d306248d9833bdc78c4dd1d4c1f7 diff --git a/plugins/UserCountry/GeoIPAutoUpdater.php b/plugins/UserCountry/GeoIPAutoUpdater.php index aba1d5d26397eeb729e5901dc8e5ec7047bea6d6..1359c8ac2e87ae89d319606736b4f0678313020c 100755 --- a/plugins/UserCountry/GeoIPAutoUpdater.php +++ b/plugins/UserCountry/GeoIPAutoUpdater.php @@ -268,7 +268,7 @@ class GeoIPAutoUpdater extends Task } $tempFile = GeoIp::getPathForGeoIpDatabase($tempFilename); - rename($existing = $tempFile, $newName = $oldDbFile); + rename($tempFile, $oldDbFile); // delete original archive if ($unlink) { diff --git a/plugins/UserCountry/UserCountry.php b/plugins/UserCountry/UserCountry.php index d28e6ce6014fdae79fa84dd1893760416704cfe3..d0ea7fab1bbcb88e42240dd653fd8ff7c75fdd9e 100644 --- a/plugins/UserCountry/UserCountry.php +++ b/plugins/UserCountry/UserCountry.php @@ -28,9 +28,9 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/UserCountry/GeoIPAutoUpdater.php'; class UserCountry extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/UserCountry/lang/de.json b/plugins/UserCountry/lang/de.json index 89f7f07a003c49a4f7b594a6ad869b5a3abbd5e6..f05987dbb88fa6cab3ee8f1526b1e29a43dec115 100644 --- a/plugins/UserCountry/lang/de.json +++ b/plugins/UserCountry/lang/de.json @@ -63,7 +63,7 @@ "HowToSetupGeoIP_Step4": "Und fertig! Sie haben gerade Piwik konfiguriert GeoIP zu verwenden. Dies bedeutet, dass Sie nun in der Lage sind die Regionen und Städte zusammen mit einer sehr genauen Angabe der Länder ihrer Besucher zu sehen.", "HowToSetupGeoIPIntro": "Anscheinend wurde die Standorterkennung noch nicht vollständig konfiguriert. Dies ist ein nützliches Feature und ohne es ist es nicht möglich, komplett vollständige und umfangreiche Informationen über die Besucher zu erhalten. Nachfolgend alle Informationen, um schnell damit zu beginnen:", "HttpServerModule": "HTTP-Server-Modul", - "InvalidGeoIPUpdatePeriod": "Ungültiger Zeitraum für den GeoIP Aktualisierer: %1$s. Gültige Werte sind %2$s.", + "InvalidGeoIPUpdatePeriod": "Ungültiger Zeitraum für die GeoIP-Aktualisierung: %1$s. Gültige Werte sind %2$s.", "IPurchasedGeoIPDBs": "Ich habe %1$sgenauere Datenbanken von MaxMind%2$s erworben und möchte automatische Aktualisierungen einrichten.", "ISPDatabase": "Internet Anbieter Datenbank", "IWantToDownloadFreeGeoIP": "Ich möchte die kostenlose GeoIP Datenbank herunterladen...", diff --git a/plugins/UserCountry/lang/it.json b/plugins/UserCountry/lang/it.json index ef5141ad9d9b503399e644f7df75c94837d1baa7..46c3e442066115ab2b476641ed360bd3d04b81c7 100644 --- a/plugins/UserCountry/lang/it.json +++ b/plugins/UserCountry/lang/it.json @@ -1,10 +1,10 @@ { "UserCountry": { - "AssumingNonApache": "Impossibile trovare la funzione apache_get_modules, si suppone server non-Apache.", - "CannotFindGeoIPDatabaseInArchive": "Impossibile trovare %1$s file nell'archivio tar %2$s!", + "AssumingNonApache": "Impossibile trovare la funzione apache_get_modules, si suppone che sia un server non-Apache.", + "CannotFindGeoIPDatabaseInArchive": "Impossibile trovare il file %1$s nell'archivio tar %2$s!", "CannotFindGeoIPServerVar": "La variabile %s non è impostata. Il tuo server potrebbe non essere correttamente configurato.", - "CannotFindPeclGeoIPDb": "Impossibile trovare un database di paese, regione o città per il modulo GeoIP PECL. Assicurati che il tuo database di GeoIP si trovi in%1$s e abbia il nome%2$s oppure %3$s, altrimenti il ​​modulo PECL non se ne accorgerà .", - "CannotListContent": "Impossibile il contenutto per %1$s: %2$s", + "CannotFindPeclGeoIPDb": "Impossibile trovare un database di paese, regione o città per il modulo GeoIP PECL. Assicurati che il tuo database di GeoIP si trovi in %1$s e abbia il nome %2$s oppure %3$s, altrimenti il ​​modulo PECL non se ne accorgerà .", + "CannotListContent": "Impossibile elencare il contenuto per %1$s: %2$s", "CannotLocalizeLocalIP": "L'indirizzo IP %s è un indirizzo locale e non può essere geolocalizzato.", "CannotSetupGeoIPAutoUpdating": "Sembra che tu stia conservando i database GeoIP al di fuori di Piwik (lo possiamo dire in quanto non ci sono i database nella sottodirectory misc, ma il tuo GeoIP sta lavorando). Piwik non può aggiornare automaticamente i database GeoIP se si trovano al di fuori della directory misc.", "CannotUnzipDatFile": "Impossibile decomprimere il file dat in %1$s: %2$s", @@ -18,25 +18,25 @@ "country_o1": "Altri Paesi", "country_ti": "Tibet", "CurrentLocationIntro": "In base a questo provider, la tua posizione attuale è", - "DefaultLocationProviderDesc1": "L'individuatore di posizione di default desume il paese di un visitatore dalla lingua utilizzata.", + "DefaultLocationProviderDesc1": "L'individuatore di posizione predefinito desume il paese di un visitatore dalla lingua utilizzata.", "DefaultLocationProviderDesc2": "Quasta non è molto accurata, dunque %1$snoi raccomandiamo di installare e utilizzare %2$sGeoIP%3$s.%4$s", - "DefaultLocationProviderExplanation": "Stai utiilizzando l'individuatore di posizione di default, ciò significa che Piwik indovinerà la posizione dei visitatori dalla lingua che utilizzano. %1$sLeggi qui%2$s per capire come impostare una geolocalizzazione più accurata", + "DefaultLocationProviderExplanation": "Stai utiilizzando l'individuatore di posizione di default, ciò significa che Piwik individuerà la posizione dei visitatori in base lingua che utilizzano. %1$sLeggi qui%2$s per capire come impostare una geolocalizzazione più accurata", "DistinctCountries": "%s continenti differenti", "DownloadingDb": "Sto scaricando %s", "DownloadNewDatabasesEvery": "Aggiorna il database ogni", - "FatalErrorDuringDownload": "Si è verificato un errore fatale durante il download di questo file. Ci potrebbe essere qualcosa di sbagliato con la connessione a Internet, con il database GeoIP scaricato o con Piwik. Prova a scaricarlo e installarlo manualmente.", + "FatalErrorDuringDownload": "Si è verificato un errore fatale durante il download di questo file. Ci potrebbe essere qualcosa di sbagliato con la connessione a Internet, con il database GeoIP scaricato o con Piwik. Prova a scaricarlo e a installarlo manualmente.", "FoundApacheModules": "Piwik ha trovato i seguenti moduli Apache", "FromDifferentCities": "città diverse", "GeoIPCannotFindMbstringExtension": "Impossibile trovare la funzione %1$s. Assicurati che l'estensione %2$s sia installata e caricata.", "GeoIPDatabases": "Database GeoIP", - "GeoIPDocumentationSuffix": "Per vedere i dati di questo report è necessario impostare GeoIP nella scheda Amministrazione Geolocation. I database GeoIP commerciali%1$sMaxmind%2$s sono più accurati di quelli gratuiti. Per vedere come sono precisi, clicca%3$squi%4$s.", - "GeoIPImplHasAccessTo": "Questa implementazione GeoIP ha accesso ai seguenti database", - "GeoIPIncorrectDatabaseFormat": "Il vostro database GeoIP non sembra avere un formato corretto. Potrebbe essere corrotto. Assicuratevi che state utilizzando la versione binaria e provate a sostituirla con un'altra copia,", + "GeoIPDocumentationSuffix": "Per vedere i dati di questo report è necessario impostare GeoIP nella scheda Amministrazione Geolocation. I database GeoIP commerciali%1$sMaxmind%2$s sono più accurati di quelli gratuiti. Per vedere come sono precisi, clicca %3$squi%4$s.", + "GeoIPImplHasAccessTo": "Questa implementazione GeoIP ha accesso ai seguenti tipi di database", + "GeoIPIncorrectDatabaseFormat": "Il vostro database GeoIP non sembra avere un formato corretto. Potrebbe essere corrotto. Assicuratevi che stiate utilizzando la versione binaria e provate a sostituirla con un'altra copia,", "GeoIpLocationProviderDesc_Pecl1": "Questo individuatore di posizione utilizza un database GeoIP e un modulo PECL per determinare accuratamente e con efficienza la posizione dei tuoi visitatori.", "GeoIpLocationProviderDesc_Pecl2": "Non ci sono limitazioni con questo provider, dunque è uno di cui raccomandiamo l'uso.", "GeoIpLocationProviderDesc_Php1": "Questo individuatore di posizione è il più semplice da installare in quanto non richiede la configurazione del server (ideale per hosting condiviso!). Esso utilizza un database GeoIP e MaxMind PHP API per determinare con precisione la posizione dei tuoi visitatori.", "GeoIpLocationProviderDesc_Php2": "Se il tuo sito riceve parecchio traffico, è possibile che questo individuatore di posizione sia troppo lento. In questo caso, è necessario installare l'%1$sestensione PECL%2$s o un %3$smodulo server%4$s.", - "GeoIpLocationProviderDesc_ServerBased1": "Questo individuatore di posizione utilizza il modulo GeoIP che è stato installato nel vostro server HTTP. Questo è veloce e preciso, ma %1$spuò essere utilizzato solo con il normale monitoraggio browser.%2$s", + "GeoIpLocationProviderDesc_ServerBased1": "Questo individuatore di posizione utilizza il modulo GeoIP che è stato installato nel vostro server HTTP. È veloce e preciso, ma %1$spuò essere utilizzato solo con il normale monitoraggio browser.%2$s", "GeoIpLocationProviderDesc_ServerBased2": "Se si devono importare i file di log o fare qualcos'altro che richiede l'impostazione degli indirizzi IP, utilizza l'%1$simplementazione PECL GeoIP (consigliata)%2$s oppure l'%3$simplementazione PHP GeoIP%4$s.", "GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Nota: l'anonimizzazione IP non ha alcun effetto sui luoghi segnalati da questo fornitore. Prima di utilizzarlo con la trasformazione in forma anonima degli IP, assicurati che questo non violi alcuna legge sulla privacy a cui puoi essere soggetto.", "GeoIpLocationProviderNotRecomnended": "La geolocalizzazione sta funzionando ma tu non stai utilizzando uno dei provider raccomandati.", @@ -49,7 +49,7 @@ "Geolocation": "Geolocalizzazione", "GeolocationPageDesc": "In questa pagina puoi cambiare le impostazioni di come Piwik determina la località dei visitatori.", "getCityDocumentation": "Questo report mostra le città in cui si trovavano i tuoi visitatori quando sono entrati nel tuo sito.", - "getContinentDocumentation": "Queesto report mostra in quale continente si trovavano i tuoi visitatori quando sono entrati nel tuo sito.", + "getContinentDocumentation": "Questo report mostra in quale continente si trovavano i tuoi visitatori quando sono entrati nel tuo sito.", "getCountryDocumentation": "Questo report mostra in quale nazione si trovavano i tuoi visitatori quando sono entrati nel tuo sito.", "getRegionDocumentation": "Questo report mostra in quale regione si trovavano i tuoi visitatori quando sono entrati nel tuo sito.", "HowToInstallApacheModule": "Come posso installare il modulo GeoIP per Apache?", @@ -58,13 +58,13 @@ "HowToInstallNginxModule": "Come posso installare il modulo GeoIP per Nginx?", "HowToSetupGeoIP": "Come impostare la geolocalizzazione accurata con GeoIP", "HowToSetupGeoIP_Step1": "%1$sScarica%2$s il database GeoLite City da %3$sMaxMind%4$s.", - "HowToSetupGeoIP_Step2": "Estrai questo file e copia il risultato, %1$s nella sottodirectory %2$smisc%3$s di Piwik (puoi fare ciò sia in FTP che in SSH).", + "HowToSetupGeoIP_Step2": "Estrai questo file e copia il risultato, %1$s nella sottodirectory %2$smisc%3$s di Piwik (puoi farlo sia tramite FTP che SSH).", "HowToSetupGeoIP_Step3": "Ricarica questa schermata. Il provider %1$sGeoIP (PHP)%2$s verrà ora %3$sinstallato%4$s. Selezionalo.", - "HowToSetupGeoIP_Step4": "E il gioco è fatto! Hai appena configurato Piwik per usare GeoIP, che significa che sarai in grado di vedere le regioni e le città dei tuoi visitatori con informazioni sul paese molto accurate.", - "HowToSetupGeoIPIntro": "Sembra che tu non abbia una configurazione di Geolocalizzazione accurata. Questa è una funzionalità utile e senza di essa non si vedranno informazioni accurate e informazioni di localizzazione accurate per i tuoi visitatori. Ecco come puoi iniziare a usarla rapidamente:", + "HowToSetupGeoIP_Step4": "E il gioco è fatto! Hai appena configurato Piwik per usare GeoIP, ciò significa che sarai in grado di vedere le regioni e le città dei tuoi visitatori con informazioni sul paese molto accurate.", + "HowToSetupGeoIPIntro": "Sembra che tu non abbia una configurazione di Geolocalizzazione accurata. Questa è una funzionalità utile, e senza di essa non si avranno informazioni accurate e complete sulla localizzazione dei tuoi visitatori. Ecco come puoi iniziare a usarla rapidamente:", "HttpServerModule": "Modulo Server HTTP", "InvalidGeoIPUpdatePeriod": "Periodo non valido per l'updater GeoIP: %1$s. I valori validi sono: %2$s.", - "IPurchasedGeoIPDBs": "Ho acquistato altri %1$sdatabase saccurati da MaxMind%2$s e voglio impostare gli aggiornamenti automatici.", + "IPurchasedGeoIPDBs": "Ho acquistato altri %1$sdatabase accurati da MaxMind%2$s e voglio impostare gli aggiornamenti automatici.", "ISPDatabase": "Database ISP", "IWantToDownloadFreeGeoIP": "Voglio scaricare il database gratuito GeoIP...", "Latitude": "Latitudine", @@ -77,22 +77,22 @@ "NoDataForGeoIPReport2": "Per abilitare la geolocalizzazione accurata cambia le impostazioni %1$squi%2$s e usa un %3$sdatabase a livello città %4$s.", "Organization": "Organizzazione", "OrgDatabase": "Database Organizzazioni", - "PeclGeoIPNoDBDir": "Il modulo PECL è alla ricerca di databasee in%1$s, ma questa directory non esiste. Si prega di crearla e aggiungervi i database GeoIP. In alternativa, è possibile impostare %2$s per la directory corretta nel file php.ini.", + "PeclGeoIPNoDBDir": "Il modulo PECL è alla ricerca di database in %1$s, ma questa directory non esiste. Si prega di crearla e aggiungervi i database GeoIP. In alternativa, è possibile impostare %2$s per la directory corretta nel file php.ini.", "PeclGeoLiteError": "Il tuo databese GeoIP in %1$s è chiamato %2$s. Sfortunatamente il modulo PECL non lo riconosce con questo nome. Si prega di rinominarlo come %3$s.", "PiwikNotManagingGeoIPDBs": "Piwik attualmente non sta gestendo alcun database GeoIP.", "PluginDescription": "Restituisce la provenienza dei tuoi visitatori: nazione, regione, città e coordinate geografiche (latitudine\/longitudine).", "Region": "Regione", "SetupAutomaticUpdatesOfGeoIP": "Imposta gli aggiornamenti automatici dei database GeoIP", "SubmenuLocations": "Località ", - "TestIPLocatorFailed": "Piwik ha cercato di controllare la posizione di un indirizzo IP conosciuto (%1$s), ma il server ha restituito%2$s. Se questo localizzatore fosse correttamente configurato, sidovrebbe restituire%3$s.", + "TestIPLocatorFailed": "Piwik ha cercato di controllare la posizione di un indirizzo IP conosciuto (%1$s), ma il server ha restituito %2$s. Se questo localizzatore fosse correttamente configurato, dovrebbe restituire %3$s.", "ThisUrlIsNotAValidGeoIPDB": "Il file scaricato non è un database GeoIP valido. Si prega di controllare l'URL o di scaricare il file manualmente.", "ToGeolocateOldVisits": "Per avere i dati di localizzazione delle tue vecchie visite, usa lo script descritto %1$squi%2$s.", "UnsupportedArchiveType": "Si è incontrato un archivio di tipo non supportato %1$s.", "UpdaterHasNotBeenRun": "Il programma di aggiornamento non è mai stato eseguito.", - "UpdaterIsNotScheduledToRun": "Non è programmato per essere avviato in futuro.", - "UpdaterScheduledForNextRun": "E' programmato per essere avviato durante la prossima esecuzione del cron-job archive.php", + "UpdaterIsNotScheduledToRun": "Non è pianificato un suo futuro avvio.", + "UpdaterScheduledForNextRun": "È programmato un suo avvio durante l'esecuzione del prossimo cron.job core:archive.", "UpdaterWasLastRun": "Il programma di aggiornamento è stato eseguito per l'ultima volta il %s.", - "UpdaterWillRunNext": "E' programmato per essere eseguito il %s.", + "UpdaterWillRunNext": "È programmato per essere eseguito il %s.", "WidgetLocation": "Posizione Visitatore" } } \ No newline at end of file diff --git a/plugins/UserCountry/lang/sr.json b/plugins/UserCountry/lang/sr.json index 2a201e6b541d7ef379dfce7325230f19241c57cc..679e14cf2242c678d305f10b96ab9d6c76e1999f 100644 --- a/plugins/UserCountry/lang/sr.json +++ b/plugins/UserCountry/lang/sr.json @@ -16,6 +16,7 @@ "country_a2": "Satelitski provajder", "country_cat": "Katalonske zajednice", "country_o1": "Ostale zemlje", + "country_ti": "Tibet", "CurrentLocationIntro": "Sudeći po ovom provajderu, vaÅ¡a trenutna lokacija je", "DefaultLocationProviderDesc1": "Podrazumevani provajder lokacija nagaÄ‘a zemlju posetioca na osnovu jezika koji oni koriste.", "DefaultLocationProviderDesc2": "Ovo nije veoma precizno tako da %1$spreporuÄujemo da instalirate %2$sGeoIP%3$s.%4$s", diff --git a/plugins/UserCountry/lang/zh-cn.json b/plugins/UserCountry/lang/zh-cn.json index 19be2de27eb2dfe738601cd1c835651d4ca40fb9..40d10f2c7f3d5203e4068ad03ac337aa111629b4 100644 --- a/plugins/UserCountry/lang/zh-cn.json +++ b/plugins/UserCountry/lang/zh-cn.json @@ -39,6 +39,7 @@ "GeoIpLocationProviderDesc_ServerBased1": "本地ç†ä½ç½®æœåŠ¡å•†ä½¿ç”¨å·²ç»å®‰è£…在 HTTP æœåŠ¡å™¨ä¸Šçš„ GeoIP 模å—。本æœåŠ¡å•†é€Ÿåº¦å¿«ä¹Ÿæ›´ç²¾ç¡®ï¼Œä½†æ˜¯ %1$såªèƒ½ä½¿ç”¨ä¸€èˆ¬çš„æµè§ˆå™¨è·Ÿè¸ªã€‚%2$s", "GeoIpLocationProviderDesc_ServerBased2": "如果您需è¦å¯¼å…¥æ—¥å¿—文件,或者需è¦è®¾ç½® IP 地å€çš„æ“ä½œï¼Œä½¿ç”¨ %1$sPECL GeoIP 方案 (推è)%2$s 或者 %3$sPHP GeoIP 方案%4$s。", "GeoIpLocationProviderDesc_ServerBasedAnonWarn": "æç¤º: IP å±è”½å¯¹è¿™ä¸ªæœåŠ¡å•†çš„æŠ¥è¡¨æ— æ•ˆã€‚åœ¨ä½¿ç”¨å®ƒå’Œ IP å±è”½å‰ï¼Œè¯·ç¡®è®¤è¿™ä¸è¿å您当地的éšç§ä¿æŠ¤æ³•规。", + "GeoIpLocationProviderNotRecomnended": "地ç†ä½ç½®çš„å·¥ä½œï¼Œä½†ä½ ä¸ä½¿ç”¨æŽ¨è的供应商之一。", "GeoIPNoServerVars": "Piwik 没有找到 GeoIP %s å˜é‡ã€‚", "GeoIPPeclCustomDirNotSet": "%s PHP ini 选项没有设置。", "GeoIPServerVarsFound": "Piwik 检测到以下 GeoIP %s å˜é‡", @@ -79,6 +80,7 @@ "PeclGeoIPNoDBDir": "PECL 模å—在 %1$s 䏿Ÿ¥æ‰¾æ•°æ®åº“,但这个目录ä¸å˜åœ¨ï¼Œè¯·æ”¹æ£å¹¶æŠŠ GeoIP æ•°æ®åº“åŠ å…¥ã€‚å¦å¤–,您也å¯ä»¥åœ¨ php.ini 文件ä¸è®¾ç½® %2$s 为æ£ç¡®çš„目录。", "PeclGeoLiteError": "您在 %1$s ä¸çš„GeoIP æ•°æ®åº“å称为 %2$s。但是 PECL æ¨¡å—æ— 法识别这个å称,请改å为 %3$s。", "PiwikNotManagingGeoIPDBs": "Piwik ç›®å‰æ²¡æœ‰ä»»ä½• GeoIP æ•°æ®åº“。", + "PluginDescription": "报告访问者的ä½ç½®ï¼šå›½å®¶ï¼Œåœ°åŒºï¼ŒåŸŽå¸‚和地ç†åæ ‡(纬度\/ç»åº¦)。", "Region": "地区", "SetupAutomaticUpdatesOfGeoIP": "设置自动更新 GeoIP æ•°æ®åº“", "SubmenuLocations": "所在地", @@ -87,7 +89,10 @@ "ToGeolocateOldVisits": "è¦è޷得以å‰è®¿é—®çš„åœ°ç†æ•°æ®ï¼Œè¯·ä½¿ç”¨ %1$s这里%2$s的脚æ¥ã€‚", "UnsupportedArchiveType": "䏿”¯æŒçš„æ–‡ä»¶ç±»åž‹ %1$s。", "UpdaterHasNotBeenRun": "更新程åºä»Žæœªè¿è¡Œã€‚", + "UpdaterIsNotScheduledToRun": "它ä¸è®¡åˆ’在将æ¥è¿è¡Œã€‚", + "UpdaterScheduledForNextRun": "它计划在未æ¥çš„cronæ ¸å¿ƒåœ¨è¿è¡Œï¼šå½’档命令执行。", "UpdaterWasLastRun": "æ›´æ–°ç¨‹åºæœ€åŽè¿è¡Œæ—¶é—´ %s。", + "UpdaterWillRunNext": "这是下一个计划在 %s è¿è¡Œã€‚", "WidgetLocation": "访客ä½ç½®" } } \ No newline at end of file diff --git a/plugins/UserCountry/tests/Unit/UserCountryTest.php b/plugins/UserCountry/tests/Unit/UserCountryTest.php index 9b62518e3e397edd980668ccb9dd083566d1ebb9..dddbce6b9fd9cb3d9a120cd4a438623125822912 100644 --- a/plugins/UserCountry/tests/Unit/UserCountryTest.php +++ b/plugins/UserCountry/tests/Unit/UserCountryTest.php @@ -138,7 +138,7 @@ class UserCountryTest extends \PHPUnit_Framework_TestCase foreach ($filesToRemove as $name) { $path = $geoIpDirPath . '/' . $name; if (file_exists($path)) { - unlink($path); + @unlink($path); } } } diff --git a/plugins/UserCountryMap/UserCountryMap.php b/plugins/UserCountryMap/UserCountryMap.php index d351054b4596efe7ade16e817e8f0e8da5082a82..c7819f7f8ce070fcf6dd451ac894acba865be471 100644 --- a/plugins/UserCountryMap/UserCountryMap.php +++ b/plugins/UserCountryMap/UserCountryMap.php @@ -29,7 +29,7 @@ class UserCountryMap extends \Piwik\Plugin $out .= FrontController::getInstance()->fetchDispatch('UserCountryMap', 'visitorMap'); } - public function getListHooksRegistered() + public function registerEvents() { $hooks = array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/UserCountryMap/lang/sr.json b/plugins/UserCountryMap/lang/sr.json index 74182a041ccfc937c1222721572c686b6c91cc36..d8c4ad04542bfd187dd90fd762a3639438d041b4 100644 --- a/plugins/UserCountryMap/lang/sr.json +++ b/plugins/UserCountryMap/lang/sr.json @@ -1,5 +1,6 @@ { "UserCountryMap": { + "PluginDescription": "Ovaj dodatak donosi vidžete Mapa posetilaca i Mapa u realnom vremenu. Zahteva UserCountry dodatak.", "AndNOthers": "i %s ostalih", "Cities": "Gradovi", "Countries": "Države", diff --git a/plugins/UserLanguage/UserLanguage.php b/plugins/UserLanguage/UserLanguage.php index a28bfa6ecad0b47b816d8d3bdf37cc706fa6410c..be892d419659e15164c58633cab9440f12e3910f 100644 --- a/plugins/UserLanguage/UserLanguage.php +++ b/plugins/UserLanguage/UserLanguage.php @@ -17,9 +17,9 @@ use Piwik\FrontController; class UserLanguage extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Live.getAllVisitorDetails' => 'extendVisitorDetails' diff --git a/plugins/UsersManager/UsersManager.php b/plugins/UsersManager/UsersManager.php index 8bfd20c2fca5231a618470b19ac5484f4d181f23..340f081b5f550f69c033ff998cb6ff1465cf1b31 100644 --- a/plugins/UsersManager/UsersManager.php +++ b/plugins/UsersManager/UsersManager.php @@ -24,9 +24,9 @@ class UsersManager extends \Piwik\Plugin const PASSWORD_MAX_LENGTH = 80; /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/UsersManager/lang/de.json b/plugins/UsersManager/lang/de.json index c49e7bd36acd673ffe4b1b53101c8a07034bec3d..7f5ef268618dfe4b1f37a81df3c412a266616ed3 100644 --- a/plugins/UsersManager/lang/de.json +++ b/plugins/UsersManager/lang/de.json @@ -60,7 +60,7 @@ "TypeYourPasswordAgain": "Geben Sie Ihr Passwort nochmals ein.", "User": "Benutzer", "UsersManagement": "Benutzerverwaltung", - "UsersManagementMainDescription": "Neue Benutzer erstellen oder bereits existierende Benutzer aktualisieren. Die Berechtigungen können dann oben gesetzt werden.", + "UsersManagementMainDescription": "Erstellen Sie neue Benutzer oder aktualisieren Sie bereits existierende Benutzer. Die Berechtigungen können dann oben gesetzt werden.", "WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Wenn Benutzer nicht angemeldet sind und Piwik besuchen, sollten sie Zugriff haben auf", "YourUsernameCannotBeChanged": "Ihr Benutzername kann nicht geändert werden.", "YourVisitsAreIgnoredOnDomain": "%sIhre Besuche auf %s werden von Piwik ignoriert %s (das Piwik-Cookie zum Ignorieren von Besuchen wurde in Ihrem Browser gefunden).", diff --git a/plugins/UsersManager/lang/hi.json b/plugins/UsersManager/lang/hi.json index 647e20395f6bf89c0609101d5579e17d3b1d7834..bec90d5c03d8e77b3768f780ca8b546d44017c1e 100644 --- a/plugins/UsersManager/lang/hi.json +++ b/plugins/UsersManager/lang/hi.json @@ -8,7 +8,19 @@ "ApplyToAllWebsites": "सà¤à¥€ वेबसाइटों के लिठलागू करें", "DeleteConfirm": "कà¥à¤¯à¤¾ आप पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ %s को हटाना चाहते हैं?", "Email": "ईमेल", + "ExcludeVisitsViaCookie": "à¤à¤• कà¥à¤•ी का उपयोग कर अपने दौरे को बाहर निकालें", + "ForAnonymousUsersReportDateToLoadByDefault": "अनाम उपयोगकरà¥à¤¤à¤¾à¤“ं के लिà¤, रिपोरà¥à¤Ÿ तिथि डिफ़ॉलà¥à¤Ÿ रूप से लोड करने के लिà¤", + "IfYouWouldLikeToChangeThePasswordTypeANewOne": "आप बदलना चाहते हैं, तो पासवरà¥à¤¡ à¤à¤• नया à¤à¤• टाइप करें। अनà¥à¤¯à¤¥à¤¾ इस खाली छोड़ दें।", + "LastSeen": "अंतिम बार देखा गया", + "ManageAccess": "उपयोग का पà¥à¤°à¤¬à¤‚धन", + "MenuAnonymousUserSettings": "बेनामी उपयोगकरà¥à¤¤à¤¾ सेटिंग", "MenuUsers": "उपयोगकरà¥à¤¤à¤¾", + "MenuUserSettings": "उपयोगकरà¥à¤¤à¤¾ सेटिंग", + "MenuPersonal": "वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त", + "PersonalSettings": "वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त सेटिंग", + "NoUsersExist": "कोई उपयोगकरà¥à¤¤à¤¾ अà¤à¥€ तक कर रहे हैं ।", + "PrivAdmin": "वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¤•", + "PrivNone": "पà¥à¤°à¤µà¥‡à¤¶ नही", "PrivView": "देखना" } } \ No newline at end of file diff --git a/plugins/UsersManager/lang/it.json b/plugins/UsersManager/lang/it.json index a1dfccedd72237f5939e1ae9d7fc039dcf95462c..0b657894166571846655fc7bc703f68cd153385e 100644 --- a/plugins/UsersManager/lang/it.json +++ b/plugins/UsersManager/lang/it.json @@ -19,22 +19,22 @@ "EmailYourAdministrator": "%1$sManda un'email al tuo amministratore su questo problema%2$s.", "ExceptionAccessValues": "Il parametro per l'accesso deve avere uno dei seguenti valori: [ %s ]", "ExceptionAdminAnonymous": "Non puoi dare privilegi da amministratore agli utenti anonimi.", - "ExceptionDeleteDoesNotExist": "L'utente \"%s\" non esiste, di conseguenza non può essere eliminato.", + "ExceptionDeleteDoesNotExist": "L'utente '%s' non esiste, di conseguenza non può essere eliminato.", "ExceptionDeleteOnlyUserWithSuperUserAccess": "L'eliminazione dell'utente '%s' non è possibile.", "ExceptionEditAnonymous": "Gli utenti anonimi non possono essere modificati o cancellati. Questo profilo è utilizzato da Piwik per definire un utente che non ha effettuato l'accesso. Per esempio, se vuoi rendere pubbiche le tue statistiche, puoi dare il privilegio \"Visualizza\" al profilo degli utenti anonimi.", - "ExceptionEmailExists": "Utente con l'e-mail \"%s\" è già esistente.", + "ExceptionEmailExists": "Utente con l'e-mail '%s' è già esistente.", "ExceptionInvalidEmail": "L'e-mail inserita non è valida.", - "ExceptionInvalidLoginFormat": "Il nome utente deve essere lungo tra %1$s e %2$s caratteri e contenere solo lettere, numeri o i caratteri '_' oppure '-' oppure '.'", + "ExceptionInvalidLoginFormat": "Il nome utente deve essere lungo tra %1$s e %2$s caratteri e contenere solo lettere, numeri o i caratteri '_' o '-' o '.' o '@' o '+'", "ExceptionInvalidPassword": "La lunghezza della password deve essere tra %1$s e %2$s caratteri.", - "ExceptionLoginExists": "Utente \"%s\" già esistente.", - "ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth si aspetta una password MD5 hash (stringa lunga 32 caratteri). Si prega di richiamare la funzione md5 () sulla password prima di richiamare questo metodo.", - "ExceptionRemoveSuperUserAccessOnlySuperUser": "E' impossibile togliere l'accesso Super User all'utente '%s'.", - "ExceptionSuperUserAccess": "Questo utente ha l'accesso Super User e ha già i permessi per accedere e modificare tutti i siti web in Piwik. Puoi togliere l'accesso Super User a questo utente e provare di nuuovo.", - "ExceptionUserDoesNotExist": "L'utente \"%s\" non esiste.", - "ExceptionYouMustGrantSuperUserAccessFirst": "Ci deve essere almeno un utente con l'accesso Super User. Si prega di dare l'accesso Super User a un altro utente prima.", + "ExceptionLoginExists": "L'utente '%s' già esiste.", + "ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth si aspetta una password MD5 hash (stringa lunga 32 caratteri). Si prega di richiamare la funzione md5() sulla password prima di richiamare questo metodo.", + "ExceptionRemoveSuperUserAccessOnlySuperUser": "È impossibile togliere l'accesso Super User all'utente '%s'.", + "ExceptionSuperUserAccess": "Questo utente ha l'accesso Super User e ha già i permessi per accedere e modificare tutti i siti web in Piwik. Puoi togliere l'accesso Super User a questo utente e provare di nuovo.", + "ExceptionUserDoesNotExist": "L'utente '%s' non esiste.", + "ExceptionYouMustGrantSuperUserAccessFirst": "Ci deve essere almeno un utente con l'accesso Super User. Si prega di dare prima l'accesso Super User a un altro utente.", "ExcludeVisitsViaCookie": "Escludi le tue visite usando un cookie", - "ForAnonymousUsersReportDateToLoadByDefault": "Per utenti anonimi, report dati da caricare di default", - "IfYouWouldLikeToChangeThePasswordTypeANewOne": "Se vuoi cambiare la password scrivine qui una nuova. Altrimenti lascia pure bianco.", + "ForAnonymousUsersReportDateToLoadByDefault": "Per utenti anonimi, data report da caricare di default", + "IfYouWouldLikeToChangeThePasswordTypeANewOne": "Se vuoi cambiare la password scrivine qui una nuova. Altrimenti lascia pure in bianco.", "InjectedHostCannotChangePwd": "Al momento stai navigando da un host sconosciuto (%1$s). Non è possibile modificare la password fino a quando questo problema non verrà risolto.", "LastSeen": "Visto l'ultima volta", "MainDescription": "Decidi quali utenti possono accedere alle statistiche Piwik dei siti web. Puoi anche impostare i permessi di tutti i siti in una volta sola.", @@ -48,7 +48,7 @@ "NoUsersExist": "Non ci sono ancora utenti.", "PluginDescription": "La Gestione Utenti ti permette di aggiungere nuovi utenti, modificare quelli esistenti e assegnare loro i permessi per vedere o amministrare i siti web.", "PrivAdmin": "Amministra Piwik", - "PrivNone": "Nessun privilegio", + "PrivNone": "Nessun accesso", "PrivView": "Vista", "ReportDateToLoadByDefault": "Data report da caricare di default", "ReportToLoadByDefault": "Report da caricare di default", @@ -57,13 +57,13 @@ "SuperUserAccessManagementMainDescription": "I Super User hanno i permessi più elevati. Possono eseguire tutti i compiti amministrativi come aggiungere nuovi siti web da controllare, aggiungere utenti, cambiare i permessi utente, attivare e disattivare i plugin e persino installare dei nuovi plugin presi dal Marketplace.", "TheLoginScreen": "La schermata di login", "ThereAreCurrentlyNRegisteredUsers": "Al momento ci sono %s utenti registrati.", - "TypeYourPasswordAgain": "Scrivi la tua nuova password di nuovo.", + "TypeYourPasswordAgain": "Scrivi di nuovo la tua nuova password.", "User": "Utente", "UsersManagement": "Gestione utenti", "UsersManagementMainDescription": "Crea nuovi utenti o aggiorna quelli esistenti. Puoi anche scegliere quali operazioni permettere tramite la tabella qui sopra.", "WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Quando gli utenti non si sono autenticati in Piwik, possono accedere a", "YourUsernameCannotBeChanged": "Il tuo nome utente non può essere cambiato.", - "YourVisitsAreIgnoredOnDomain": "%sLe tue visite sono ignorate da Piwik %s %s (il cookie 'ignora visite' di Piwik è stato trovato nel tuo browser).", - "YourVisitsAreNotIgnored": "%sLe tue visite non sono ignorate da Piwik%s (il cookie 'ignora visite' di Piwik non è stato trovato nel tuo browser)." + "YourVisitsAreIgnoredOnDomain": "%sLe tue visite sono ignorate da Piwik su %s %s (il cookie 'ignora visite' è stato trovato nel tuo browser).", + "YourVisitsAreNotIgnored": "%sLe tue visite non sono ignorate da Piwik%s (il cookie 'ignora visite' non è stato trovato nel tuo browser)." } } \ No newline at end of file diff --git a/plugins/UsersManager/lang/nl.json b/plugins/UsersManager/lang/nl.json index 93410a9a31fbad9de5ba7586f7967341a2e2d95b..e46b9d6dd96300b808c4a95f34d866c0c1bbae34 100644 --- a/plugins/UsersManager/lang/nl.json +++ b/plugins/UsersManager/lang/nl.json @@ -30,6 +30,7 @@ "ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth verwacht een MD5-hash wachtwoord (32 tekens lange reeks). Vraag de md5()functie op het wachtwoord op alvorens deze methode aan te roepen.", "ExceptionRemoveSuperUserAccessOnlySuperUser": "Het verwijderen van de Super User rechten van gebruiker '%s' is niet toegestaan.", "ExceptionUserDoesNotExist": "Gebruiker '%s' bestaat niet.", + "ExceptionYouMustGrantSuperUserAccessFirst": "Er moet minimaal één gebruiker zijn met Super User rechten. Geef eerst een gebruiker Super User rechten.", "ExcludeVisitsViaCookie": "Sluit uw bezoeken uit met een cookie", "ForAnonymousUsersReportDateToLoadByDefault": "Voor anonieme gebruikers, Standaard rapport datum bij laden pagina.", "IfYouWouldLikeToChangeThePasswordTypeANewOne": "Als u het wachtwoord wilt wijzigen, geef dan een nieuwe op. Laat het anders leeg.", diff --git a/plugins/UsersManager/lang/ta.json b/plugins/UsersManager/lang/ta.json index a5d165cfb8f5bbc326681c820f38abdaa6d1d78c..516c1a5250c9df07b7d066b8f04ea32caffb63de 100644 --- a/plugins/UsersManager/lang/ta.json +++ b/plugins/UsersManager/lang/ta.json @@ -1,5 +1,6 @@ { "UsersManager": { + "Email": "மினà¯à®©à®žà¯à®šà®²à¯", "MenuUsers": "பாவனையாளரà¯à®•ளà¯", "PrivView": "பாரà¯à®•à¯à®•" } diff --git a/plugins/VisitFrequency/VisitFrequency.php b/plugins/VisitFrequency/VisitFrequency.php index ad7451e0cecdffdf195b232a3f33c52a4ccc611f..b8c01a95689900c138343fe527b004722f1fda90 100644 --- a/plugins/VisitFrequency/VisitFrequency.php +++ b/plugins/VisitFrequency/VisitFrequency.php @@ -14,9 +14,9 @@ use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; class VisitFrequency extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations' diff --git a/plugins/VisitFrequency/lang/it.json b/plugins/VisitFrequency/lang/it.json index 80df2f2f4007d5c2fae99d982637f859f79736da..313e48cc90eb37d5810d292327477beff803eb52 100644 --- a/plugins/VisitFrequency/lang/it.json +++ b/plugins/VisitFrequency/lang/it.json @@ -1,26 +1,26 @@ { "VisitFrequency": { - "ColumnActionsByReturningVisits": "Azioni eseguite dalle visite ricorrenti", + "ColumnActionsByReturningVisits": "Azioni eseguite dalle Visite di Ritorno", "ColumnAverageVisitDurationForReturningVisitors": "Media. Durata delle Visite di Ritorno (in sec)", "ColumnAvgActionsPerReturningVisit": "Media. Azioni per Visite di Ritorno", "ColumnBounceCountForReturningVisits": "Numero Rimbalzi per Visite di Ritorno", - "ColumnBounceRateForReturningVisits": "Percentuale dei rimbalzi per le visite ricorrenti", + "ColumnBounceRateForReturningVisits": "Percentuale dei rimbalzi per le Visite di Ritorno", "ColumnMaxActionsInReturningVisit": "Numero massimo di azioni in una visita di ritorno", "ColumnNbReturningVisitsConverted": "Numero di visite di ritorno convertite", - "ColumnReturningVisits": "Visite ricorrenti", + "ColumnReturningVisits": "Visite di Ritorno", "ColumnSumVisitLengthReturning": "Tempo complessivo speso dai visitatori di ritorno (in secondi)", "ColumnUniqueReturningVisitors": "Visitatori unici di ritorno", - "ColumnReturningUsers": "Utenti di ritorno", + "ColumnReturningUsers": "Utenti di Ritorno", "PluginDescription": "Restituisce le metriche riguardanti i nuovi visitatori e quelli di ritorno.", - "ReturnActions": "%s pagine visualizzate dalle visite ricorrenti", - "ReturnAverageVisitDuration": "%s durata visita per visitatori di ritorno", + "ReturnActions": "%s azioni delle visite di ritorno", + "ReturnAverageVisitDuration": "%s media durata visita per visitatori di ritorno", "ReturnAvgActions": "%s azioni per visita di ritorno", - "ReturnBounceRate": "Il %s dei visitatori ricorrenti hanno visto 1 sola pagina", + "ReturnBounceRate": "Il %s dei visitatori di ritorno hanno rimbalzato (hanno lasciato il sito dopo aver visto una sola pagina)", "ReturningVisitDocumentation": "Una visita di ritorno è fatta (al contrario di una nuova visita) da qualcuno che ha visitato il sito almeno una volta in precedenza.", "ReturningVisitsDocumentation": "Questa è una panoramica delle visite di ritorno.", - "ReturnVisits": "%s visite ricorrenti", - "SubmenuFrequency": "Frequenze", - "WidgetGraphReturning": "Grafico visite ricorrenti", - "WidgetOverview": "Riepilogo visite ricorrenti" + "ReturnVisits": "%s visite di ritorno", + "SubmenuFrequency": "Frequenza", + "WidgetGraphReturning": "Visite di Ritorno nel Tempo", + "WidgetOverview": "Riepilogo Frequenza" } } \ No newline at end of file diff --git a/plugins/VisitTime/VisitTime.php b/plugins/VisitTime/VisitTime.php index 08b7ad36e53d994e89fab1055658a61842b6dccc..5b1c256ce74ec3d30c17cd24e9e12a74481d8587 100644 --- a/plugins/VisitTime/VisitTime.php +++ b/plugins/VisitTime/VisitTime.php @@ -12,9 +12,9 @@ namespace Piwik\Plugins\VisitTime; class VisitTime extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Live.getAllVisitorDetails' => 'extendVisitorDetails', diff --git a/plugins/VisitTime/lang/zh-cn.json b/plugins/VisitTime/lang/zh-cn.json index 0fb176ae41e06e8ed7f76e68726d9737696bc8a4..96f998405e9f8bc6cc958678b3aef42615f0900b 100644 --- a/plugins/VisitTime/lang/zh-cn.json +++ b/plugins/VisitTime/lang/zh-cn.json @@ -5,6 +5,7 @@ "DayOfWeek": "æ˜ŸæœŸå‡ çš„", "LocalTime": "日报表", "NHour": "%s 点", + "PluginDescription": "报告本地时间,当访问者æµè§ˆæ‚¨çš„ç½‘ç«™æˆ–åº”ç”¨ç¨‹åºæœåŠ¡å™¨çš„æ—¶é—´ã€‚", "ServerTime": "便œåŠ¡å™¨æ—¶é—´è®°å½•çš„è®¿é—®", "SubmenuTimes": "访问时间", "VisitsByDayOfWeek": "周报表", diff --git a/plugins/VisitorGenerator b/plugins/VisitorGenerator index 6fdf06613c4d75a51a498e47a20e8d9e19505680..4fcc7da73a376d0b077c4ffa30bd03acad265bfe 160000 --- a/plugins/VisitorGenerator +++ b/plugins/VisitorGenerator @@ -1 +1 @@ -Subproject commit 6fdf06613c4d75a51a498e47a20e8d9e19505680 +Subproject commit 4fcc7da73a376d0b077c4ffa30bd03acad265bfe diff --git a/plugins/VisitorInterest/VisitorInterest.php b/plugins/VisitorInterest/VisitorInterest.php index 11d5f717c490ef30feb52296db5f283da9cc629f..f135e12923aae3d4ee8801ebd9eadf844848de7b 100644 --- a/plugins/VisitorInterest/VisitorInterest.php +++ b/plugins/VisitorInterest/VisitorInterest.php @@ -19,9 +19,9 @@ class VisitorInterest extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'Live.getAllVisitorDetails' => 'extendVisitorDetails', diff --git a/plugins/VisitorInterest/lang/zh-cn.json b/plugins/VisitorInterest/lang/zh-cn.json index 3c6217f9337e84623454522c162c1bcd4f6201df..2d501ac96ddf7132e9b47af3bec13e72360199c7 100644 --- a/plugins/VisitorInterest/lang/zh-cn.json +++ b/plugins/VisitorInterest/lang/zh-cn.json @@ -7,6 +7,7 @@ "Engagement": "å¿ è¯šåº¦", "NPages": "%s 页", "OnePage": "1 页", + "PluginDescription": "有关访问者的兴趣报é“:一些æµè§ˆè¿‡çš„网页,在网站上花费的时间,上次访问åŽåˆ°çŽ°åœ¨å‡ å¤©ï¼Œç‰ç‰ã€‚", "VisitNum": "访问次数", "VisitsByDaysSinceLast": "基于è·ç¦»ä¸Šæ¬¡è®¿é—®å¤©æ•°çš„统计", "visitsByVisitCount": "基于访问次数的统计", diff --git a/plugins/VisitsSummary/VisitsSummary.php b/plugins/VisitsSummary/VisitsSummary.php index f0e7215aac68c2c0c26e039a9886ba3a671bde11..9bb86de374d13430d777068593b643992837861b 100644 --- a/plugins/VisitsSummary/VisitsSummary.php +++ b/plugins/VisitsSummary/VisitsSummary.php @@ -21,9 +21,9 @@ use Piwik\Plugins\VisitsSummary\Reports\Get; class VisitsSummary extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', diff --git a/plugins/VisitsSummary/lang/zh-cn.json b/plugins/VisitsSummary/lang/zh-cn.json index 613352c9fb27abc242837ed353f78acb0ef9fcd0..ddc41833d227b80bba60771f981574e3c416d127 100644 --- a/plugins/VisitsSummary/lang/zh-cn.json +++ b/plugins/VisitsSummary/lang/zh-cn.json @@ -17,6 +17,7 @@ "NbUniquePageviewsDescription": "%s 次唯一æµè§ˆ", "NbUniqueVisitors": "%s 个独立访客数", "NbVisitsBounced": "%s 的跳出率 (查看一个页é¢åŽå°±ç¦»å¼€)", + "PluginDescription": "æŠ¥å‘Šä¸€èˆ¬åˆ†æžæŒ‡æ ‡ï¼šå‚观,独立访问者,动作次数,跳出率ç‰ã€‚", "VisitsSummary": "访客总表", "VisitsSummaryDocumentation": "这是访客趋势总表。", "WidgetLastVisits": "访客趋势图", diff --git a/plugins/WebsiteMeasurable/lang/cs.json b/plugins/WebsiteMeasurable/lang/cs.json new file mode 100644 index 0000000000000000000000000000000000000000..abc772a6da6a375dff49d6774c9cb4179a4d7304 --- /dev/null +++ b/plugins/WebsiteMeasurable/lang/cs.json @@ -0,0 +1,7 @@ +{ + "WebsiteMeasurable": { + "Website": "Webová stránka", + "Websites": "Webové stránky", + "WebsiteDescription": "Webová stránka se skládá ze stránek, vÄ›tÅ¡inou umÃstÄ›ných na jedné doménÄ›." + } +} \ No newline at end of file diff --git a/plugins/WebsiteMeasurable/lang/sr.json b/plugins/WebsiteMeasurable/lang/sr.json new file mode 100644 index 0000000000000000000000000000000000000000..d1609882b889bfeb5b45895e12e4e8cf1f00bb12 --- /dev/null +++ b/plugins/WebsiteMeasurable/lang/sr.json @@ -0,0 +1,7 @@ +{ + "WebsiteMeasurable": { + "Website": "Sajt", + "Websites": "Sajtovi", + "WebsiteDescription": "Sajt se sastoji od stranica koje se obiÄno nalaze na jednom domenu." + } +} \ No newline at end of file diff --git a/plugins/Widgetize/Widgetize.php b/plugins/Widgetize/Widgetize.php index 02a520dcd2d5220d3093651ff738a0e546bf929f..750686c6f9465e8029942e7d094e94979a98f2bd 100644 --- a/plugins/Widgetize/Widgetize.php +++ b/plugins/Widgetize/Widgetize.php @@ -13,9 +13,9 @@ namespace Piwik\Plugins\Widgetize; class Widgetize extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/ZenMode/ZenMode.php b/plugins/ZenMode/ZenMode.php index d22ad4af9d06af9083b0a2fefda5596bb0ef8af8..bbacb157c386381a66d33af8ad4ec49849da93b1 100644 --- a/plugins/ZenMode/ZenMode.php +++ b/plugins/ZenMode/ZenMode.php @@ -13,9 +13,9 @@ namespace Piwik\Plugins\ZenMode; class ZenMode extends \Piwik\Plugin { /** - * @see Piwik\Plugin::getListHooksRegistered + * @see Piwik\Plugin::registerEvents */ - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/plugins/ZenMode/lang/cs.json b/plugins/ZenMode/lang/cs.json index 4dd1ffd097e3a3911a480977714c8512ebd87475..9ff86d36151f9a5b2edb42294c3e668baf38f0c8 100644 --- a/plugins/ZenMode/lang/cs.json +++ b/plugins/ZenMode/lang/cs.json @@ -1,5 +1,6 @@ { "ZenMode": { + "PluginDescription": "NebuÄte ruÅ¡eni. Zen režim vÄ›ci zjednoduÅ¡Ã. Je dostupný pÅ™es ikonu v pravém hornÃm rohu obrazovky.", "SearchForAnything": "Hledat cokoliv", "QuickAccessTitle": "Hledat hlášenÃ, webové stránky nebo položky menu", "HowToSearch": "Pokud chcete najÃt hlášenà nebo položky menu, použijte vyhledávacà pole v pravé hornà Äásti, nebo stisknÄ›te 'alt+f'.", diff --git a/plugins/ZenMode/lang/sr.json b/plugins/ZenMode/lang/sr.json index 0a28199a895e5d6f84e85b47b02084ff6708f12f..4f73c1cf1ab9fd730b5701cf718290414216c566 100644 --- a/plugins/ZenMode/lang/sr.json +++ b/plugins/ZenMode/lang/sr.json @@ -1,5 +1,6 @@ { "ZenMode": { + "PluginDescription": "Budite u Zenu sa Pivikom. Zen mod Äini stvari jednostavnim. Možete ga omogućiti preko sliÄice u gornjem desnom uglu ekrana.", "SearchForAnything": "Pretraži sve", "QuickAccessTitle": "Pretraživanje stavki menija, izveÅ¡taja i sajtova", "HowToSearch": "Ukoliko želite da pretražujete stavke menija, izveÅ¡taje ili sajtove, upotrebite polje za pretraživanje u gornjem desnom uglu ili pritisnite Alt + f.", diff --git a/tests/PHPUnit/Fixtures/ManySitesImportedLogs.php b/tests/PHPUnit/Fixtures/ManySitesImportedLogs.php index 5845f3190967f8a9f212f4e80952890ad107fe73..3a107c26bd6596ae7c247d3ece3fd8e74bda0f4a 100644 --- a/tests/PHPUnit/Fixtures/ManySitesImportedLogs.php +++ b/tests/PHPUnit/Fixtures/ManySitesImportedLogs.php @@ -7,13 +7,11 @@ */ namespace Piwik\Tests\Fixtures; -use Piwik\Access; use Piwik\Plugins\Goals\API as APIGoals; use Piwik\Plugins\SegmentEditor\API as APISegmentEditor; use Piwik\Plugins\UserCountry\LocationProvider\GeoIp; use Piwik\Plugins\UserCountry\LocationProvider; use Piwik\Tests\Framework\Fixture; -use Piwik\Tests\Framework\OverrideLogin; /** * Imports visits from several log files using the python log importer. @@ -69,6 +67,11 @@ class ManySitesImportedLogs extends Fixture self::createWebsite($this->dateTime, $ecommerce = 0, $siteName = 'Piwik test two', $siteUrl = 'http://example-site-two.com'); } + + if (!self::siteCreated($idSite = 3)) { + self::createWebsite($this->dateTime, $ecommerce = 0, $siteName = 'Piwik test three', + $siteUrl = 'http://example-site-three.com'); + } } const SEGMENT_PRE_ARCHIVED = 'visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50'; @@ -110,6 +113,7 @@ class ManySitesImportedLogs extends Fixture $this->logVisitsWithStaticResolver(); $this->logVisitsWithAllEnabled(); $this->replayLogFile(); + $this->replayLogFile(array('--idsite' => 3)); $this->logCustomFormat(); if ($this->includeIisWithCustom) { @@ -188,7 +192,7 @@ class ManySitesImportedLogs extends Fixture * Logs a couple visits for the site we created and two new sites that do not * exist yet. Visits are from Aug 12, 13 & 14 of 2012. */ - public function logVisitsWithDynamicResolver() + public function logVisitsWithDynamicResolver($maxPayloadSize = 1) { $logFile = PIWIK_INCLUDE_PATH . '/tests/resources/access-logs/fake_logs_dynamic.log'; # log file @@ -197,8 +201,8 @@ class ManySitesImportedLogs extends Fixture $opts = array('--add-sites-new-hosts' => false, '--enable-testmode' => false, '--recorders' => '1', - '--recorder-max-payload-size' => '1'); - self::executeLogImporter($logFile, $opts); + '--recorder-max-payload-size' => $maxPayloadSize); + return implode("\n", self::executeLogImporter($logFile, $opts)); } /** @@ -226,8 +230,10 @@ class ManySitesImportedLogs extends Fixture /** * Logs a couple visit using log entries that are tracking requests to a piwik.php file. * Adds two visits to idSite=1 and two to non-existant sites. + * + * @param array $additonalOptions */ - private function replayLogFile() + private function replayLogFile($additonalOptions = array()) { $logFile = PIWIK_INCLUDE_PATH . '/tests/resources/access-logs/fake_logs_replay.log'; @@ -237,6 +243,8 @@ class ManySitesImportedLogs extends Fixture '--recorder-max-payload-size' => '1', '--replay-tracking' => false); + $opts = array_merge($opts, $additonalOptions); + self::executeLogImporter($logFile, $opts); } diff --git a/tests/PHPUnit/Framework/TestingEnvironmentVariables.php b/tests/PHPUnit/Framework/TestingEnvironmentVariables.php index 923ac3915224a3f1aea1618d2cc861dec3791ff1..4b33a7fe07932f5e85cb49a4cea51739e3592e3a 100644 --- a/tests/PHPUnit/Framework/TestingEnvironmentVariables.php +++ b/tests/PHPUnit/Framework/TestingEnvironmentVariables.php @@ -43,7 +43,9 @@ class TestingEnvironmentVariables { $includePath = __DIR__ . '/../../..'; - @mkdir($includePath . '/tmp'); + if(!file_exists($includePath . '/tmp')){ + mkdir($includePath . '/tmp'); + } $overridePath = $includePath . '/tmp/testingPathOverride.json'; file_put_contents($overridePath, json_encode($this->behaviorOverrideProperties)); diff --git a/tests/PHPUnit/System/AutoSuggestAPITest.php b/tests/PHPUnit/System/AutoSuggestAPITest.php index d08209b1d8878e4d895907dddacd6457b71cdf3d..c8035568760bd5baefdf28327ff579f3a1fcb80e 100644 --- a/tests/PHPUnit/System/AutoSuggestAPITest.php +++ b/tests/PHPUnit/System/AutoSuggestAPITest.php @@ -8,8 +8,11 @@ namespace Piwik\Tests\System; use Piwik\API\Request; +use Piwik\Application\Environment; +use Piwik\Columns\Dimension; use Piwik\Common; use Piwik\Date; +use Piwik\Plugins\CustomVariables\Model; use Piwik\Tests\Framework\TestCase\SystemTestCase; use Piwik\Tests\Fixtures\ManyVisitsWithGeoIP; use Piwik\Tests\Framework\Fixture; @@ -45,15 +48,12 @@ class AutoSuggestAPITest extends SystemTestCase public function getApiForTesting() { - // we will test all segments from all plugins - Fixture::loadAllPlugins(); - $idSite = self::$fixture->idSite; - $apiForTesting = array(); + $segments = self::getSegmentsMetadata(); - $segments = \Piwik\Plugins\API\API::getInstance()->getSegmentsMetadata(self::$fixture->idSite); + $apiForTesting = array(); foreach ($segments as $segment) { - $apiForTesting[] = $this->getApiForTestingForSegment($idSite, $segment['segment']); + $apiForTesting[] = $this->getApiForTestingForSegment($idSite, $segment); } if (self::isMysqli() || self::isTravisCI()) { @@ -119,11 +119,11 @@ class AutoSuggestAPITest extends SystemTestCase public function getAnotherApiForTesting() { - $segments = self::getSegmentsMetadata(self::$fixture->idSite); + $segments = self::getSegmentsMetadata(); $apiForTesting = array(); foreach ($segments as $segment) { - if(self::isTravisCI() && $segment['segment'] == 'deviceType') { + if(self::isTravisCI() && $segment == 'deviceType') { // test started failing after bc19503 and I cannot understand why continue; } @@ -131,8 +131,8 @@ class AutoSuggestAPITest extends SystemTestCase array('idSite' => self::$fixture->idSite, 'date' => date("Y-m-d", strtotime(self::$fixture->dateTime)) . ',today', 'period' => 'range', - 'testSuffix' => '_' . $segment['segment'], - 'segmentToComplete' => $segment['segment'])); + 'testSuffix' => '_' . $segment, + 'segmentToComplete' => $segment)); } return $apiForTesting; } @@ -153,15 +153,45 @@ class AutoSuggestAPITest extends SystemTestCase $this->assertGreaterThan($minimumSegmentsToTest, self::$processed, $message); } - public static function getSegmentsMetadata($idSite) + public static function getSegmentsMetadata() { // Refresh cache for CustomVariables\Model Cache::clearCacheGeneral(); - \Piwik\Plugins\CustomVariables\Model::install(); + $segments = array(); + + $environment = new Environment(null); + + $exception = null; + try { + $environment->init(); + $environment->getContainer()->get('Piwik\Plugin\Manager')->loadActivatedPlugins(); + + foreach (Dimension::getAllDimensions() as $dimension) { + foreach ($dimension->getSegments() as $segment) { + $segments[] = $segment->getSegment(); + } + } + + // add CustomVariables manually since the data provider may not have access to the DB + for ($i = 1; $i != Model::DEFAULT_CUSTOM_VAR_COUNT + 1; ++$i) { + $segments[] = 'customVariableName' . $i; + $segments[] = 'customVariableValue' . $i; + $segments[] = 'customVariablePageName' . $i; + $segments[] = 'customVariablePageValue' . $i; + } + } catch (\Exception $ex) { + $exception = $ex; + + echo $ex->getMessage()."\n".$ex->getTraceAsString()."\n"; + } + + $environment->destroy(); + + if (!empty($exception)) { + throw $exception; + } - // Segment matching NONE - $segments = \Piwik\Plugins\API\API::getInstance()->getSegmentsMetadata($idSite); return $segments; } } diff --git a/tests/PHPUnit/System/ImportLogsTest.php b/tests/PHPUnit/System/ImportLogsTest.php index 353ea6bc69548ad0ed94904a076ecb4853e77d1d..725b2fba1630cd1dd9ac1a0604d7e62e119b0a2b 100755 --- a/tests/PHPUnit/System/ImportLogsTest.php +++ b/tests/PHPUnit/System/ImportLogsTest.php @@ -8,11 +8,14 @@ namespace Piwik\Tests\System; use Piwik\Access; +use Piwik\Common; use Piwik\Plugins\SitesManager\API; use Piwik\Tests\Framework\Fixture; use Piwik\Tests\Framework\TestCase\SystemTestCase; use Piwik\Tests\Fixtures\ManySitesImportedLogs; use Piwik\Tests\Framework\TestingEnvironmentVariables; +use Piwik\Tracker\Request; +use Piwik\Tracker\RequestSet; /** * Tests the log importer. @@ -86,16 +89,32 @@ class ImportLogsTest extends SystemTestCase 'otherRequestParameters' => array( 'filter_limit' => 1000 ))); + + // imported via --replay-tracking --idsite=3 should ignore idSite from logs and use fixed idSite instead + $apis[] = array($apiMethods, array( + 'idSite' => 3, + 'date' => '2012-08-09,2014-04-01', + 'periods' => 'range', + 'otherRequestParameters' => array( + 'filter_limit' => 1000 + ), + 'testSuffix' => '_siteIdThree_TrackedUsingLogReplayWithFixedSiteId')); + return $apis; } /** * NOTE: This test must be last since the new sites that get added are added in * random order. + * NOTE: This test combines two tests in order to avoid executing the log importer another time. + * If the log importer were refactored, the invalid requests test could be a unit test in + * python. */ - public function testDynamicResolverSitesCreated() + public function test_LogImporter_CreatesSitesWhenDynamicResolverUsed_AndReportsOnInvalidRequests() { - self::$fixture->logVisitsWithDynamicResolver(); + $this->simulateInvalidTrackerRequest(); + + $output = self::$fixture->logVisitsWithDynamicResolver($maxPayloadSize = 3); // reload access so new sites are viewable Access::getInstance()->setSuperUserAccess(true); @@ -109,6 +128,10 @@ class ImportLogsTest extends SystemTestCase $whateverDotCom = API::getInstance()->getSitesIdFromSiteUrl('http://whatever.com'); $this->assertEquals(1, count($whateverDotCom)); + + // make sure invalid requests are reported correctly + $this->assertContains('The Piwik tracker identified 2 invalid requests on lines: 10, 11', $output); + $this->assertContains("The following lines were not tracked by Piwik, either due to a malformed tracker request or error in the tracker:\n\n10, 11", $output); } public function test_LogImporter_RetriesWhenServerFails() @@ -152,23 +175,53 @@ class ImportLogsTest extends SystemTestCase { $testingEnvironment = new TestingEnvironmentVariables(); $testingEnvironment->_triggerTrackerFailure = null; + $testingEnvironment->_triggerInvalidRequests = null; $testingEnvironment->save(); } + private function simulateInvalidTrackerRequest() + { + $testEnvironment = new TestingEnvironmentVariables(); + $testEnvironment->_triggerInvalidRequests = true; + $testEnvironment->save(); + } + public static function provideContainerConfigBeforeClass() { $result = array(); + $observers = array(); $testingEnvironment = new TestingEnvironmentVariables(); if ($testingEnvironment->_triggerTrackerFailure) { - $result['observers.global'] = \DI\add(array( - array('Tracker.newHandler', function () { - @http_response_code(500); + $observers[] = array('Tracker.newHandler', function () { + @http_response_code(500); + + throw new \Exception("injected exception"); + }); + } + + if ($testingEnvironment->_triggerInvalidRequests) { + // we trigger an invalid request by checking for triggerInvalid=1 in a request, and if found replacing the + // request w/ a request that has an nonexistent idsite + $observers[] = array('Tracker.initRequestSet', function (RequestSet $requestSet) { + $requests = $requestSet->getRequests(); + foreach ($requests as $index => $request) { + $url = $request->getParam('url'); + if (strpos($url, 'triggerInvalid=1') !== false) { + $newParams = $request->getParams(); + $newParams['idsite'] = 1000; + + $requests[$index] = new Request($newParams); + } + } + $requestSet->setRequests($requests); + }); + } - throw new \Exception("injected exception"); - }) - )); + if (!empty($observers)) { + $result['observers.global'] = \DI\add($observers); } + return $result; } } diff --git a/tests/PHPUnit/System/RawLogDaoTest.php b/tests/PHPUnit/System/RawLogDaoTest.php new file mode 100644 index 0000000000000000000000000000000000000000..e0210467e257c82f107901634183470dc3748035 --- /dev/null +++ b/tests/PHPUnit/System/RawLogDaoTest.php @@ -0,0 +1,68 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Tests\System; + +use Piwik\DataAccess\RawLogDao; +use Piwik\Tests\Framework\Fixture; +use Piwik\Tests\Framework\TestCase\SystemTestCase; + +/** + * @group Core + * @group RawLogDao + * @group RawLogDaoTest + */ +class RawLogDaoTest extends SystemTestCase +{ + /** + * @var RawLogDao + */ + private $dao; + + private $idSite = 1; + + public function setUp() + { + parent::setUp(); + + if (!Fixture::siteCreated($this->idSite)) { + Fixture::createWebsite('2010-00-00 00:00:00'); + } + + $this->dao = new RawLogDao(); + } + + /** + * @dataProvider getVisitsInTimeFrameData + */ + public function test_hasSiteVisitsInTimeframe_shouldDetectWhetherThereAreVisitsInCertainTimeframe($from, $to, $idSite, $expectedHasVisits) + { + Fixture::getTracker($this->idSite, '2015-01-25 05:35:27')->doTrackPageView('/test'); + + $hasVisits = $this->dao->hasSiteVisitsBetweenTimeframe($from, $to, $idSite); + $this->assertSame($expectedHasVisits, $hasVisits); + } + + public function getVisitsInTimeFrameData() + { + return array( + array($from = '2015-01-25 05:35:26', $to = '2015-01-25 05:35:27', $this->idSite, $hasVisits = false), // there is no second "between" the timeframe so cannot have visits + array($from = '2015-01-25 05:35:27', $to = '2015-01-25 05:35:28', $this->idSite, $hasVisits = false), // there is no second "between" the timeframe so cannot have visits + array($from = '2015-01-25 05:35:26', $to = '2015-01-25 05:35:28', $this->idSite, $hasVisits = true), // only one sec difference between from and to + array($from = '2015-01-25 05:35:26', $to = '2015-01-26 05:35:27', $this->idSite, $hasVisits = true), + array($from = '2015-01-24 05:35:26', $to = '2015-01-26 05:35:27', $this->idSite, $hasVisits = true), + array($from = '2015-01-25 05:35:26', $to = '2015-01-25 05:35:27', $idSite = 2, $hasVisits = false), // no because idSite does not match + array($from = '2015-01-24 05:35:26', $to = '2015-01-25 05:35:27', $idSite = 2, $hasVisits = false), // ... + array($from = '2015-01-25 05:35:26', $to = '2015-01-26 05:35:27', $idSite = 2, $hasVisits = false), // ... + array($from = '2015-01-24 05:35:26', $to = '2015-01-26 05:35:27', $idSite = 2, $hasVisits = false), // ... no because not matching idsite + array($from = '2015-01-24 05:35:26', $to = '2015-01-25 05:35:26', $this->idSite, $hasVisits = false), // time of visit is later + array($from = '2015-01-25 05:35:28', $to = '2015-01-27 05:35:27', $this->idSite, $hasVisits = false), // time of visit is earlier + ); + } + +} diff --git a/tests/PHPUnit/System/TwoVisitsWithCustomVariablesSegmentMatchNONETest.php b/tests/PHPUnit/System/TwoVisitsWithCustomVariablesSegmentMatchNONETest.php index 4ab45a24fc2478caac73de468af8a0846c78c9aa..3667f7f65b1d4928207250520d083dca78665c45 100755 --- a/tests/PHPUnit/System/TwoVisitsWithCustomVariablesSegmentMatchNONETest.php +++ b/tests/PHPUnit/System/TwoVisitsWithCustomVariablesSegmentMatchNONETest.php @@ -48,7 +48,7 @@ class TwoVisitsWithCustomVariablesSegmentMatchNONETest extends SystemTestCase public function getSegmentToTest() { - $segments = AutoSuggestAPITest::getSegmentsMetadata(self::$fixture->idSite); + $segments = AutoSuggestAPITest::getSegmentsMetadata(); $minimumExpectedSegmentsCount = 55; // as of Piwik 1.12 $this->assertGreaterThan($minimumExpectedSegmentsCount, count($segments)); @@ -57,18 +57,18 @@ class TwoVisitsWithCustomVariablesSegmentMatchNONETest extends SystemTestCase $seenVisitorId = false; foreach ($segments as $segment) { $value = 'campaign'; - if ($segment['segment'] == 'visitorId') { + if ($segment == 'visitorId') { $seenVisitorId = true; $value = '34c31e04394bdc63'; } - if ($segment['segment'] == 'visitEcommerceStatus') { + if ($segment == 'visitEcommerceStatus') { $value = 'none'; } - $matchNone = $segment['segment'] . '!=' . $value; + $matchNone = $segment . '!=' . $value; // deviceType != campaign matches ALL visits, but we want to match None - if($segment['segment'] == 'deviceType') { - $matchNone = $segment['segment'] . '==car%20browser'; + if($segment == 'deviceType') { + $matchNone = $segment . '==car%20browser'; } $segmentExpression[] = $matchNone; } diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt b/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt index 527f8f1b8a3695a2135db26e003d168320dc191d..3f7a2765b87fa95e40f9893850325ac8ce6866bc 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt @@ -20,13 +20,13 @@ INFO CoreConsole[2015-03-02 06:14:01] - If you execute this script at least once INFO CoreConsole[2015-03-02 06:14:01] See the doc at: http://piwik.org/docs/setup-auto-archiving/ INFO CoreConsole[2015-03-02 06:14:01] - Reports for today will be processed at most every 150 seconds. You can change this value in Piwik UI > Settings > General Settings. INFO CoreConsole[2015-03-02 06:14:01] - Reports for the current week/month/year will be refreshed at most every 3600 seconds. -INFO CoreConsole[2015-03-02 06:14:01] Will invalidate archived reports for 2012-08-09 for following siteIds: 1 -INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2012-08-10 for following siteIds: 1 -INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2012-08-11 for following siteIds: 1 -INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2012-08-15 for following siteIds: 1,2 -INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2012-09-30 for following siteIds: 1 -INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2014-03-12 for following siteIds: 1 -INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2014-03-13 for following siteIds: 1 +INFO CoreConsole[2015-03-02 06:14:01] Will invalidate archived reports for 2012-08-09 for following website ids: 1 +INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2012-08-10 for following website ids: 1 +INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2012-08-11 for following website ids: 1 +INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2012-08-15 for following website ids: 1,2 +INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2012-09-30 for following website ids: 1 +INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2014-03-12 for following website ids: 1 +INFO CoreConsole[2015-03-02 06:14:02] Will invalidate archived reports for 2014-03-13 for following website ids: 1 INFO CoreConsole[2015-03-02 06:14:02] - Will process 0 websites with new visits since 7 days 0 hours INFO CoreConsole[2015-03-02 06:14:02] - Will process 2 other websites because some old data reports have been invalidated (eg. using the Log Import script) , IDs: 1, 2 INFO CoreConsole[2015-03-02 06:14:02] --------------------------- diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_day.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_day.xml index 32434a44f62f209813e85e171ef0c9ce9b8ea9c9..209613d7560b9d2e1327718a728d16079f62f9a1 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_day.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_day.xml @@ -14,4 +14,5 @@ <avg_time_on_site>0</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_month.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_month.xml index 527a5d71773b499c791ec688aec21736cfe60a5b..6cc283b5552d9b464a65cd64d1467161095c08d8 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_month.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_month.xml @@ -26,4 +26,17 @@ <nb_actions_per_visit>1</nb_actions_per_visit> <avg_time_on_site>0</avg_time_on_site> </result> + <result idSite="3"> + <nb_uniq_visitors>2</nb_uniq_visitors> + <nb_users>0</nb_users> + <nb_visits>3</nb_visits> + <nb_actions>5</nb_actions> + <nb_visits_converted>0</nb_visits_converted> + <bounce_count>2</bounce_count> + <sum_visit_length>1</sum_visit_length> + <max_actions>3</max_actions> + <bounce_rate>67%</bounce_rate> + <nb_actions_per_visit>1.7</nb_actions_per_visit> + <avg_time_on_site>0</avg_time_on_site> + </result> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_week.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_week.xml index b83a03206fe46d17cad1f0f2b47f48cd97666542..16c4dae84fec0ffce87ca73423ec1133a91dae5f 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_week.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_week.xml @@ -14,4 +14,5 @@ <avg_time_on_site>12</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_year.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_year.xml index 46ff0006a894f6055470e45e44d510b330d8e282..19948ee71e667c51c00e388e56c1d679a3d2ffbb 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_year.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_noOptions__VisitsSummary.get_year.xml @@ -22,4 +22,15 @@ <nb_actions_per_visit>1</nb_actions_per_visit> <avg_time_on_site>0</avg_time_on_site> </result> + <result idSite="3"> + <nb_visits>3</nb_visits> + <nb_actions>5</nb_actions> + <nb_visits_converted>0</nb_visits_converted> + <bounce_count>2</bounce_count> + <sum_visit_length>1</sum_visit_length> + <max_actions>3</max_actions> + <bounce_rate>67%</bounce_rate> + <nb_actions_per_visit>1.7</nb_actions_per_visit> + <avg_time_on_site>0</avg_time_on_site> + </result> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_day.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_day.xml index 1c7f2179e5ae80abb3710f64976aa31d817f256a..dd52dc4ff40444a272c35ecbb3f94665561db11a 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_day.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_day.xml @@ -2,4 +2,5 @@ <results> <result idSite="1" /> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_month.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_month.xml index 1c7f2179e5ae80abb3710f64976aa31d817f256a..dd52dc4ff40444a272c35ecbb3f94665561db11a 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_month.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_month.xml @@ -2,4 +2,5 @@ <results> <result idSite="1" /> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_week.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_week.xml index 1c7f2179e5ae80abb3710f64976aa31d817f256a..dd52dc4ff40444a272c35ecbb3f94665561db11a 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_week.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_week.xml @@ -2,4 +2,5 @@ <results> <result idSite="1" /> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_year.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_year.xml index 1c7f2179e5ae80abb3710f64976aa31d817f256a..dd52dc4ff40444a272c35ecbb3f94665561db11a 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_year.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_nonPreArchivedSegment_noOptions__VisitsSummary.get_year.xml @@ -2,4 +2,5 @@ <results> <result idSite="1" /> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_preArchivedSegment_noOptions__Live.getLastVisitsDetails_year.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_preArchivedSegment_noOptions__Live.getLastVisitsDetails_year.xml index 84daa26e4f6e46acaf81bd2bd520df2a0d800c5d..9cade6e15565b2773faed4b81e6774a66d897e6b 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_preArchivedSegment_noOptions__Live.getLastVisitsDetails_year.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_preArchivedSegment_noOptions__Live.getLastVisitsDetails_year.xml @@ -2,7 +2,7 @@ <result> <row> <idSite>1</idSite> - <idVisit>41</idVisit> + <idVisit>56</idVisit> <visitIp>175.41.192.40</visitIp> <actionDetails> @@ -12,7 +12,7 @@ <pageTitle /> <pageIdAction>1</pageIdAction> - <pageId>48</pageId> + <pageId>69</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -30,7 +30,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>48</goalPageId> + <goalPageId>69</goalPageId> <url>http://piwik.net/blog/category/meta/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -42,7 +42,7 @@ <pageTitle /> <pageIdAction>1</pageIdAction> - <pageId>52</pageId> + <pageId>73</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -61,7 +61,7 @@ <pageTitle /> <pageIdAction>1</pageIdAction> - <pageId>56</pageId> + <pageId>77</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -80,7 +80,7 @@ <pageTitle /> <pageIdAction>2</pageIdAction> - <pageId>49</pageId> + <pageId>70</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -99,7 +99,7 @@ <pageTitle /> <pageIdAction>2</pageIdAction> - <pageId>53</pageId> + <pageId>74</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -118,7 +118,7 @@ <pageTitle /> <pageIdAction>2</pageIdAction> - <pageId>57</pageId> + <pageId>78</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -137,7 +137,7 @@ <pageTitle /> <pageIdAction>3</pageIdAction> - <pageId>50</pageId> + <pageId>71</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -156,7 +156,7 @@ <pageTitle /> <pageIdAction>3</pageIdAction> - <pageId>54</pageId> + <pageId>75</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -175,7 +175,7 @@ <pageTitle /> <pageIdAction>4</pageIdAction> - <pageId>51</pageId> + <pageId>72</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -194,7 +194,7 @@ <pageTitle /> <pageIdAction>4</pageIdAction> - <pageId>55</pageId> + <pageId>76</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_day.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_day.xml index 1c7f2179e5ae80abb3710f64976aa31d817f256a..dd52dc4ff40444a272c35ecbb3f94665561db11a 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_day.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_day.xml @@ -2,4 +2,5 @@ <results> <result idSite="1" /> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_month.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_month.xml index 1c7f2179e5ae80abb3710f64976aa31d817f256a..dd52dc4ff40444a272c35ecbb3f94665561db11a 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_month.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_month.xml @@ -2,4 +2,5 @@ <results> <result idSite="1" /> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_week.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_week.xml index 1c7f2179e5ae80abb3710f64976aa31d817f256a..dd52dc4ff40444a272c35ecbb3f94665561db11a 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_week.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_week.xml @@ -2,4 +2,5 @@ <results> <result idSite="1" /> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_year.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_year.xml index 1c7f2179e5ae80abb3710f64976aa31d817f256a..dd52dc4ff40444a272c35ecbb3f94665561db11a 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_year.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentNoAutoArchive_noOptions__VisitsSummary.get_year.xml @@ -2,4 +2,5 @@ <results> <result idSite="1" /> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_day.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_day.xml index 89cd6273392c68181061c2eda26d01c61d7315e4..2f05440facac8906468304047a1f4adb81f6eefe 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_day.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_day.xml @@ -14,4 +14,5 @@ <avg_time_on_site>0</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_month.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_month.xml index dc70f24c00da91b00873fb529f84697a71731a13..69cfb8ea524d1e59f26da40fd37dfdaa0816e6b2 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_month.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_month.xml @@ -14,4 +14,5 @@ <avg_time_on_site>0</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_week.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_week.xml index 09a9dec19afa38e9ef0e3c425924587d1a0702b2..3b8ee5ce75023dd11319e5e1ac81344b81197616 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_week.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_week.xml @@ -14,4 +14,5 @@ <avg_time_on_site>0</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_year.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_year.xml index 5596008ffe31ae7a27a9f4ced70346f6dfbd4bf9..127cfeba900b3fa95b8ff36a9b22b19e5ddee0d9 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_year.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentOnlyOneSite_noOptions__VisitsSummary.get_year.xml @@ -12,4 +12,5 @@ <avg_time_on_site>0</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_day.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_day.xml index 32434a44f62f209813e85e171ef0c9ce9b8ea9c9..209613d7560b9d2e1327718a728d16079f62f9a1 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_day.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_day.xml @@ -14,4 +14,5 @@ <avg_time_on_site>0</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_month.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_month.xml index 0f88508621728523f715592036c04785083f7af6..22528b0939bcc2956db4d5cf0a4643a9fd45e2c5 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_month.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_month.xml @@ -14,4 +14,5 @@ <avg_time_on_site>12</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_week.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_week.xml index b83a03206fe46d17cad1f0f2b47f48cd97666542..16c4dae84fec0ffce87ca73423ec1133a91dae5f 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_week.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_week.xml @@ -14,4 +14,5 @@ <avg_time_on_site>12</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_year.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_year.xml index c89ec107eccf94d5687d4f7d7f0d98c54c99271f..e0409a2e7a25a6fbb10e2499490b0985da5913ba 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_year.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchivedWithUrlEncoding_noOptions__VisitsSummary.get_year.xml @@ -12,4 +12,5 @@ <avg_time_on_site>13</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_day.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_day.xml index 32434a44f62f209813e85e171ef0c9ce9b8ea9c9..209613d7560b9d2e1327718a728d16079f62f9a1 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_day.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_day.xml @@ -14,4 +14,5 @@ <avg_time_on_site>0</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_month.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_month.xml index 0f88508621728523f715592036c04785083f7af6..22528b0939bcc2956db4d5cf0a4643a9fd45e2c5 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_month.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_month.xml @@ -14,4 +14,5 @@ <avg_time_on_site>12</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_week.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_week.xml index b83a03206fe46d17cad1f0f2b47f48cd97666542..16c4dae84fec0ffce87ca73423ec1133a91dae5f 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_week.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_week.xml @@ -14,4 +14,5 @@ <avg_time_on_site>12</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_year.xml b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_year.xml index c89ec107eccf94d5687d4f7d7f0d98c54c99271f..e0409a2e7a25a6fbb10e2499490b0985da5913ba 100644 --- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_year.xml +++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_segmentPreArchived_noOptions__VisitsSummary.get_year.xml @@ -12,4 +12,5 @@ <avg_time_on_site>13</avg_time_on_site> </result> <result idSite="2" /> + <result idSite="3" /> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml index 00e485e699bcdb6b2302001c959ed0fb555f5870..15d5d4a7ff75d814edb4f65397edb44fd554e2bf 100644 --- a/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml +++ b/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml @@ -2,7 +2,7 @@ <result> <row> <idSite>1</idSite> - <idVisit>40</idVisit> + <idVisit>41</idVisit> <visitIp>174.97.139.63</visitIp> <actionDetails> @@ -11,7 +11,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>47</goalPageId> + <goalPageId>48</goalPageId> <url>http://piwik.org/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -21,9 +21,9 @@ <type>action</type> <url>http://piwik.org/</url> <pageTitle>Liberate Web Analytics - Analytics - Piwik</pageTitle> - <pageIdAction>34</pageIdAction> + <pageIdAction>35</pageIdAction> - <pageId>47</pageId> + <pageId>48</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -131,7 +131,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>33</idVisit> + <idVisit>34</idVisit> <visitIp>206.190.75.8</visitIp> <actionDetails> @@ -139,9 +139,9 @@ <type>action</type> <url>http://piwik.org/changelog/</url> <pageTitle>Changelog Archive - Analytics - Piwik</pageTitle> - <pageIdAction>43</pageIdAction> + <pageIdAction>44</pageIdAction> - <pageId>38</pageId> + <pageId>39</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -158,7 +158,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>38</goalPageId> + <goalPageId>39</goalPageId> <url>http://piwik.org/changelog/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -168,9 +168,9 @@ <type>action</type> <url>http://piwik.org/contact/</url> <pageTitle>Contact the Piwik team - Analytics - Piwik</pageTitle> - <pageIdAction>54</pageIdAction> + <pageIdAction>55</pageIdAction> - <pageId>46</pageId> + <pageId>47</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -264,7 +264,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>39</idVisit> + <idVisit>40</idVisit> <visitIp>193.159.20.129</visitIp> <actionDetails> @@ -273,7 +273,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>45</goalPageId> + <goalPageId>46</goalPageId> <url>http://demo.piwik.org/index.php?module=CoreHome&action=index&date=yesterday&period=day&idSite=7</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -283,9 +283,9 @@ <type>action</type> <url>http://demo.piwik.org/index.php?module=CoreHome&action=index&date=yesterday&period=day&idSite=7</url> <pageTitle>demo.piwik.org/Piwik Forums - Piwik › Web Analytics Reports</pageTitle> - <pageIdAction>52</pageIdAction> + <pageIdAction>53</pageIdAction> - <pageId>45</pageId> + <pageId>46</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -405,7 +405,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>37</idVisit> + <idVisit>38</idVisit> <visitIp>50.244.17.130</visitIp> <actionDetails> @@ -413,9 +413,9 @@ <type>action</type> <url>http://piwik.org/</url> <pageTitle>Liberate Web Analytics - Analytics - Piwik</pageTitle> - <pageIdAction>34</pageIdAction> + <pageIdAction>35</pageIdAction> - <pageId>42</pageId> + <pageId>43</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -432,7 +432,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>42</goalPageId> + <goalPageId>43</goalPageId> <url>http://piwik.org/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -442,9 +442,9 @@ <type>action</type> <url>http://piwik.org/what-is-piwisk/</url> <pageTitle>What is Piwik? - Analytics - Piwik</pageTitle> - <pageIdAction>50</pageIdAction> + <pageIdAction>51</pageIdAction> - <pageId>44</pageId> + <pageId>45</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -555,7 +555,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>38</idVisit> + <idVisit>39</idVisit> <visitIp>84.194.72.21</visitIp> <actionDetails> @@ -563,9 +563,9 @@ <type>outlink</type> <url>http://demo.piwik.org/</url> <pageTitle /> - <pageIdAction>48</pageIdAction> + <pageIdAction>49</pageIdAction> - <pageId>43</pageId> + <pageId>44</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -676,7 +676,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>36</idVisit> + <idVisit>37</idVisit> <visitIp>108.211.181.12</visitIp> <actionDetails> @@ -685,7 +685,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>41</goalPageId> + <goalPageId>42</goalPageId> <url>http://piwik.org/blog/2012/10/integrate-piwik-into-your-rails-application/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -695,9 +695,9 @@ <type>action</type> <url>http://piwik.org/blog/2012/10/integrate-piwik-into-your-rails-application/</url> <pageTitle>Integrate Piwik into your Rails Application - Analytics - Piwik</pageTitle> - <pageIdAction>47</pageIdAction> + <pageIdAction>48</pageIdAction> - <pageId>41</pageId> + <pageId>42</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -817,7 +817,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>35</idVisit> + <idVisit>36</idVisit> <visitIp>219.101.46.222</visitIp> <actionDetails> @@ -826,7 +826,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>40</goalPageId> + <goalPageId>41</goalPageId> <url>https://piwik.org/log-analytics/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -836,9 +836,9 @@ <type>action</type> <url>http://piwik.org/log-analytics/</url> <pageTitle>Log Analytics - Analytics - Piwik</pageTitle> - <pageIdAction>41</pageIdAction> + <pageIdAction>42</pageIdAction> - <pageId>40</pageId> + <pageId>41</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -945,7 +945,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>34</idVisit> + <idVisit>35</idVisit> <visitIp>80.136.160.65</visitIp> <actionDetails> @@ -954,7 +954,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>39</goalPageId> + <goalPageId>40</goalPageId> <url>http://piwik.org/blog/2014/03/piwik-2-1-massive-performance-reliability-improvements/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -964,9 +964,9 @@ <type>action</type> <url>http://piwik.org/blog/2014/03/piwik-2-1-massive-performance-reliability-improvements/</url> <pageTitle>Piwik 2.1 — Massive Performance and Reliability Improvements - Analytics - Piwik</pageTitle> - <pageIdAction>45</pageIdAction> + <pageIdAction>46</pageIdAction> - <pageId>39</pageId> + <pageId>40</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1066,7 +1066,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>32</idVisit> + <idVisit>33</idVisit> <visitIp>188.107.238.9</visitIp> <actionDetails> @@ -1075,7 +1075,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>37</goalPageId> + <goalPageId>38</goalPageId> <url>http://piwik.org/log-analytics/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -1085,9 +1085,9 @@ <type>action</type> <url>http://piwik.org/log-analytics/</url> <pageTitle>Log Analytics - Analytics - Piwik</pageTitle> - <pageIdAction>41</pageIdAction> + <pageIdAction>42</pageIdAction> - <pageId>37</pageId> + <pageId>38</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1207,7 +1207,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>30</idVisit> + <idVisit>31</idVisit> <visitIp>93.80.130.163</visitIp> <actionDetails> @@ -1215,9 +1215,9 @@ <type>action</type> <url>http://piwik.org/</url> <pageTitle>Liberate Web Analytics - Analytics - Piwik</pageTitle> - <pageIdAction>34</pageIdAction> + <pageIdAction>35</pageIdAction> - <pageId>33</pageId> + <pageId>34</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1235,7 +1235,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>33</goalPageId> + <goalPageId>34</goalPageId> <url>http://piwik.org/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -1245,9 +1245,9 @@ <type>action</type> <url>http://piwik.org/download/</url> <pageTitle>Download - Analytics - Piwik</pageTitle> - <pageIdAction>38</pageIdAction> + <pageIdAction>39</pageIdAction> - <pageId>35</pageId> + <pageId>36</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1264,9 +1264,9 @@ <type>download</type> <url>http://builds.piwik.org/latest.zip</url> <pageTitle /> - <pageIdAction>39</pageIdAction> + <pageIdAction>40</pageIdAction> - <pageId>36</pageId> + <pageId>37</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1369,7 +1369,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>31</idVisit> + <idVisit>32</idVisit> <visitIp>176.41.226.154</visitIp> <actionDetails> @@ -1378,7 +1378,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>34</goalPageId> + <goalPageId>35</goalPageId> <url>http://piwik.org/docs/installation/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -1388,9 +1388,9 @@ <type>action</type> <url>http://piwik.org/docs/installation/</url> <pageTitle>Hello Installing Piwik - Analytics - Piwik</pageTitle> - <pageIdAction>36</pageIdAction> + <pageIdAction>37</pageIdAction> - <pageId>34</pageId> + <pageId>35</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1502,7 +1502,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>29</idVisit> + <idVisit>30</idVisit> <visitIp>84.194.72.21</visitIp> <actionDetails> @@ -1511,7 +1511,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>32</goalPageId> + <goalPageId>33</goalPageId> <url>http://piwik.org/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -1521,9 +1521,9 @@ <type>action</type> <url>http://piwik.org/</url> <pageTitle>Liberate Web Analytics - Analytics - Piwik</pageTitle> - <pageIdAction>34</pageIdAction> + <pageIdAction>35</pageIdAction> - <pageId>32</pageId> + <pageId>33</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1635,7 +1635,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>41</idVisit> + <idVisit>56</idVisit> <visitIp>175.41.192.40</visitIp> <actionDetails> @@ -1645,7 +1645,7 @@ <pageTitle /> <pageIdAction>1</pageIdAction> - <pageId>48</pageId> + <pageId>69</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1663,7 +1663,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>48</goalPageId> + <goalPageId>69</goalPageId> <url>http://piwik.net/blog/category/meta/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -1675,7 +1675,7 @@ <pageTitle /> <pageIdAction>1</pageIdAction> - <pageId>52</pageId> + <pageId>73</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1694,7 +1694,7 @@ <pageTitle /> <pageIdAction>1</pageIdAction> - <pageId>56</pageId> + <pageId>77</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1713,7 +1713,7 @@ <pageTitle /> <pageIdAction>2</pageIdAction> - <pageId>49</pageId> + <pageId>70</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1732,7 +1732,7 @@ <pageTitle /> <pageIdAction>2</pageIdAction> - <pageId>53</pageId> + <pageId>74</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1751,7 +1751,7 @@ <pageTitle /> <pageIdAction>2</pageIdAction> - <pageId>57</pageId> + <pageId>78</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1770,7 +1770,7 @@ <pageTitle /> <pageIdAction>3</pageIdAction> - <pageId>50</pageId> + <pageId>71</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1789,7 +1789,7 @@ <pageTitle /> <pageIdAction>3</pageIdAction> - <pageId>54</pageId> + <pageId>75</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1808,7 +1808,7 @@ <pageTitle /> <pageIdAction>4</pageIdAction> - <pageId>51</pageId> + <pageId>72</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1827,7 +1827,7 @@ <pageTitle /> <pageIdAction>4</pageIdAction> - <pageId>55</pageId> + <pageId>76</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -1918,7 +1918,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>46</idVisit> + <idVisit>61</idVisit> <visitIp>192.0.2.10</visitIp> <actionDetails> @@ -1927,7 +1927,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>64</goalPageId> + <goalPageId>85</goalPageId> <url>http://piwik.net/view/my/file.html</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -1937,9 +1937,9 @@ <type>action</type> <url>http://piwik.net/view/my/file.html</url> <pageTitle /> - <pageIdAction>64</pageIdAction> + <pageIdAction>65</pageIdAction> - <pageId>64</pageId> + <pageId>85</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -2030,7 +2030,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>45</idVisit> + <idVisit>60</idVisit> <visitIp>172.20.1.0</visitIp> <actionDetails> @@ -2038,9 +2038,9 @@ <type>action</type> <url>http://piwik.net/Citrix/XenApp/Wan/auth/login.jsp</url> <pageTitle>302/URL = http%3A%2F%2Fpiwik.net%2FCitrix%2FXenApp%2FWan%2Fauth%2Flogin.jsp</pageTitle> - <pageIdAction>62</pageIdAction> + <pageIdAction>63</pageIdAction> - <pageId>62</pageId> + <pageId>83</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -2057,7 +2057,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>62</goalPageId> + <goalPageId>83</goalPageId> <url>http://piwik.net/Citrix/XenApp/Wan/auth/login.jsp</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -2067,9 +2067,9 @@ <type>action</type> <url>http://piwik.net/Citrix/XenApp/Wan/auth/silentDetection.jsp</url> <pageTitle /> - <pageIdAction>63</pageIdAction> + <pageIdAction>64</pageIdAction> - <pageId>63</pageId> + <pageId>84</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -2159,7 +2159,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>51</idVisit> + <idVisit>66</idVisit> <visitIp>173.5.0.0</visitIp> <actionDetails> @@ -2168,7 +2168,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>71</goalPageId> + <goalPageId>92</goalPageId> <url>http://hello.example.com/hello/from/another/world/6,681965</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -2178,9 +2178,9 @@ <type>action</type> <url>http://hello.example.com/hello/from/another/world/6,681965</url> <pageTitle /> - <pageIdAction>60</pageIdAction> + <pageIdAction>61</pageIdAction> - <pageId>71</pageId> + <pageId>92</pageId> <customVariables> <row> <customVariablePageName1>Generation Time</customVariablePageName1> @@ -2283,7 +2283,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>42</idVisit> + <idVisit>57</idVisit> <visitIp>70.95.0.0</visitIp> <actionDetails> @@ -2291,9 +2291,9 @@ <type>action</type> <url>http://xzy.example.com/Products/theProduct</url> <pageTitle /> - <pageIdAction>55</pageIdAction> + <pageIdAction>56</pageIdAction> - <pageId>58</pageId> + <pageId>79</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -2311,7 +2311,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>58</goalPageId> + <goalPageId>79</goalPageId> <url>http://xzy.example.com/Products/theProduct</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -2321,9 +2321,9 @@ <type>action</type> <url>http://example.hello.com/Topic/hw43061</url> <pageTitle>301/URL = http%3A%2F%2Fexample.hello.com%2FTopic%2Fhw43061</pageTitle> - <pageIdAction>57</pageIdAction> + <pageIdAction>58</pageIdAction> - <pageId>59</pageId> + <pageId>80</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -2339,9 +2339,9 @@ <type>action</type> <url>http://xzy.example.com/Products/theProduct</url> <pageTitle /> - <pageIdAction>55</pageIdAction> + <pageIdAction>56</pageIdAction> - <pageId>68</pageId> + <pageId>89</pageId> <customVariables> <row> <customVariablePageName1>Generation Time</customVariablePageName1> @@ -2444,7 +2444,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>43</idVisit> + <idVisit>58</idVisit> <visitIp>173.5.0.0</visitIp> <actionDetails> @@ -2453,7 +2453,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>60</goalPageId> + <goalPageId>81</goalPageId> <url>http://hello.example.com/hello/world/6,681965</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -2463,9 +2463,9 @@ <type>action</type> <url>http://hello.example.com/hello/world/6,681965</url> <pageTitle>404/URL = http%3A%2F%2Fhello.example.com%2Fhello%2Fworld%2F6%2C681965</pageTitle> - <pageIdAction>59</pageIdAction> + <pageIdAction>60</pageIdAction> - <pageId>60</pageId> + <pageId>81</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -2556,7 +2556,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>44</idVisit> + <idVisit>59</idVisit> <visitIp>173.5.0.0</visitIp> <actionDetails> @@ -2564,9 +2564,9 @@ <type>action</type> <url>http://hello.example.com/hello/world/6,681965</url> <pageTitle>404/URL = http%3A%2F%2Fhello.example.com%2Fhello%2Fworld%2F6%2C681965</pageTitle> - <pageIdAction>59</pageIdAction> + <pageIdAction>60</pageIdAction> - <pageId>70</pageId> + <pageId>91</pageId> <customVariables> <row> <customVariablePageName1>Generation Time</customVariablePageName1> @@ -2592,7 +2592,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>61</goalPageId> + <goalPageId>82</goalPageId> <url>http://hello.example.com/hello/from/another/world/6,681965</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -2602,9 +2602,9 @@ <type>action</type> <url>http://hello.example.com/hello/from/another/world/6,681965</url> <pageTitle /> - <pageIdAction>60</pageIdAction> + <pageIdAction>61</pageIdAction> - <pageId>61</pageId> + <pageId>82</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -2695,7 +2695,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>50</idVisit> + <idVisit>65</idVisit> <visitIp>70.95.32.0</visitIp> <actionDetails> @@ -2704,7 +2704,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>69</goalPageId> + <goalPageId>90</goalPageId> <url>http://example.hello.com/Topic/hw43061</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -2714,9 +2714,9 @@ <type>action</type> <url>http://example.hello.com/Topic/hw43061</url> <pageTitle>301/URL = http%3A%2F%2Fexample.hello.com%2FTopic%2Fhw43061</pageTitle> - <pageIdAction>57</pageIdAction> + <pageIdAction>58</pageIdAction> - <pageId>69</pageId> + <pageId>90</pageId> <customVariables> <row> <customVariablePageName1>Generation Time</customVariablePageName1> @@ -3090,7 +3090,7 @@ </row> <row> <idSite>1</idSite> - <idVisit>49</idVisit> + <idVisit>64</idVisit> <visitIp>72.45.67.32</visitIp> <actionDetails> @@ -3099,7 +3099,7 @@ <goalName>all</goalName> <goalId>1</goalId> <revenue>5</revenue> - <goalPageId>67</goalPageId> + <goalPageId>88</goalPageId> <url>http://piwik.net/</url> <icon>plugins/Morpheus/images/goal.png</icon> @@ -3111,7 +3111,7 @@ <pageTitle /> <pageIdAction>5</pageIdAction> - <pageId>67</pageId> + <pageId>88</pageId> <customVariables> <row> <customVariablePageName1>HTTP-code</customVariablePageName1> @@ -3202,16 +3202,16 @@ </row> <row> <idSite>1</idSite> - <idVisit>48</idVisit> + <idVisit>63</idVisit> <visitIp>192.0.2.222</visitIp> <actionDetails> <row> <type>event</type> <url>http://piwik.net/shqshne4jdp4b6.cloudfront.net/cfx/st​?key=value</url> - <pageIdAction>65</pageIdAction> + <pageIdAction>66</pageIdAction> - <pageId>66</pageId> + <pageId>87</pageId> <eventCategory>cloudfront_rtmp</eventCategory> <eventAction>play</eventAction> <customVariables> @@ -3304,16 +3304,16 @@ </row> <row> <idSite>1</idSite> - <idVisit>47</idVisit> + <idVisit>62</idVisit> <visitIp>192.0.2.147</visitIp> <actionDetails> <row> <type>event</type> <url>http://piwik.net/shqshne4jdp4b6.cloudfront.net/cfx/st​?key=value</url> - <pageIdAction>65</pageIdAction> + <pageIdAction>66</pageIdAction> - <pageId>65</pageId> + <pageId>86</pageId> <eventCategory>cloudfront_rtmp</eventCategory> <eventAction>connect</eventAction> <customVariables> diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getAll_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getAll_month.xml index 5f6148c689d9c89a89e30f85a39b00c09fb0df6d..071b803478da23946164f6b441db3240fe758de6 100644 --- a/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getAll_month.xml +++ b/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getAll_month.xml @@ -14,6 +14,20 @@ <group /> <main_url>http://piwik.net</main_url> </row> + <row> + <label>Piwik test three</label> + <nb_visits>3</nb_visits> + <nb_actions>5</nb_actions> + <nb_pageviews>5</nb_pageviews> + <revenue>0</revenue> + <visits_evolution>100%</visits_evolution> + <actions_evolution>100%</actions_evolution> + <pageviews_evolution>100%</pageviews_evolution> + <revenue_evolution>0%</revenue_evolution> + <idsite>3</idsite> + <group /> + <main_url>http://example-site-three.com</main_url> + </row> <row> <label>Piwik test two</label> <nb_visits>1</nb_visits> diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownload_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownload_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..c234bed59e963e268d7a9bc05348d941758c4aa9 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownload_range.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result /> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..a78a95e97b3bccceadf6ff6f0013313db99c3e10 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label>builds.piwik.org</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <exit_nb_visits>1</exit_nb_visits> + <subtable> + <row> + <label>/latest.zip</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <url>http://builds.piwik.org/latest.zip</url> + </row> + </subtable> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageTitles_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageTitles_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..701633ee713a509c6bde7dbfa45743172a2a0e3e --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageTitles_range.xml @@ -0,0 +1,231 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label> Liberate Web Analytics - Analytics - Piwik</label> + <nb_visits>4</nb_visits> + <nb_hits>4</nb_hits> + <sum_time_spent>34</sum_time_spent> + <nb_hits_with_time_generation>3</nb_hits_with_time_generation> + <min_time_generation>0.058</min_time_generation> + <max_time_generation>0.292</max_time_generation> + <entry_nb_visits>4</entry_nb_visits> + <entry_nb_actions>7</entry_nb_actions> + <entry_sum_visit_length>43</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>9</avg_time_on_page> + <bounce_rate>50%</bounce_rate> + <exit_rate>50%</exit_rate> + <avg_time_generation>0.177</avg_time_generation> + </row> + <row> + <label> Log Analytics - Analytics - Piwik</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.145</min_time_generation> + <max_time_generation>0.145</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.145</avg_time_generation> + </row> + <row> + <label> Changelog Archive - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>79</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>80</entry_sum_visit_length> + <entry_bounce_count>0</entry_bounce_count> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <avg_time_on_page>79</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>0%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label>demo.piwik.org</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.413</min_time_generation> + <max_time_generation>0.413</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.413</avg_time_generation> + <subtable> + <row> + <label> Piwik Forums - Piwik › Web Analytics Reports</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.413</min_time_generation> + <max_time_generation>0.413</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.413</avg_time_generation> + </row> + </subtable> + </row> + <row> + <label> Hello Installing Piwik - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + </row> + <row> + <label> incredible title!</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label> Integrate Piwik into your Rails Application - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + </row> + <row> + <label> Looking at Electronics & Cameras page with a page level custom variable</label> + <nb_visits>1</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>3</entry_nb_actions> + <entry_sum_visit_length>1</entry_sum_visit_length> + <entry_bounce_count>0</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label> Piwik 2.1 — Massive Performance and Reliability Improvements - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + </row> + <row> + <label> Piwik Forums</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageUrls_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..1e49db6795cdf17bfe497f7650d87a674fc18b74 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageUrls_range.xml @@ -0,0 +1,418 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label>/index</label> + <nb_visits>4</nb_visits> + <nb_hits>4</nb_hits> + <sum_time_spent>34</sum_time_spent> + <nb_hits_with_time_generation>3</nb_hits_with_time_generation> + <min_time_generation>0.058</min_time_generation> + <max_time_generation>0.292</max_time_generation> + <entry_nb_visits>4</entry_nb_visits> + <entry_nb_actions>7</entry_nb_actions> + <entry_sum_visit_length>43</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>9</avg_time_on_page> + <bounce_rate>50%</bounce_rate> + <exit_rate>50%</exit_rate> + <avg_time_generation>0.177</avg_time_generation> + <url>http://piwik.org/</url> + <segment>entryPageUrl==http%3A%2F%2Fpiwik.org%2F</segment> + </row> + <row> + <label>/index.htm</label> + <nb_visits>2</nb_visits> + <nb_hits>4</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>4</entry_nb_actions> + <entry_sum_visit_length>1</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>50%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <url>http://example.org/index.htm</url> + <segment>entryPageUrl==http%3A%2F%2Fexample.org%2Findex.htm</segment> + </row> + <row> + <label>blog</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>2</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.255</avg_time_generation> + <subtable> + <row> + <label>2012</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <subtable> + <row> + <label>10</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <subtable> + <row> + <label>integrate-piwik-into-your-rails-application</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <url>http://piwik.org/blog/2012/10/integrate-piwik-into-your-rails-application/</url> + </row> + </subtable> + </row> + </subtable> + </row> + </subtable> + </row> + <row> + <label>2014</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <subtable> + <row> + <label>03</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <subtable> + <row> + <label>piwik-2-1-massive-performance-reliability-improvements</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <url>http://piwik.org/blog/2014/03/piwik-2-1-massive-performance-reliability-improvements/</url> + </row> + </subtable> + </row> + </subtable> + </row> + </subtable> + </row> + </subtable> + </row> + <row> + <label>log-analytics</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.145</min_time_generation> + <max_time_generation>0.145</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.145</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.145</min_time_generation> + <max_time_generation>0.145</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.145</avg_time_generation> + <url>http://piwik.org/log-analytics/</url> + </row> + </subtable> + </row> + <row> + <label>/index.php?module=CoreHome&action=index&date=yesterday&period=day&idSite=7</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.413</min_time_generation> + <max_time_generation>0.413</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.413</avg_time_generation> + <url>http://demo.piwik.org/index.php?module=CoreHome&action=index&date=yesterday&period=day&idSite=7</url> + <segment>entryPageUrl==http%3A%2F%2Fdemo.piwik.org%2Findex.php%3Fmodule%3DCoreHome%26action%3Dindex%26date%3Dyesterday%26period%3Dday%26idSite%3D7</segment> + </row> + <row> + <label>/register.php?0,approve=9a94a02145599</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <url>http://forum.piwik.org/register.php?0,approve=9a94a02145599</url> + <segment>entryPageUrl==http%3A%2F%2Fforum.piwik.org%2Fregister.php%3F0%2Capprove%3D9a94a02145599</segment> + </row> + <row> + <label>changelog</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>79</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation>0</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>80</entry_sum_visit_length> + <entry_bounce_count>0</entry_bounce_count> + <avg_time_on_page>79</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>0%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>79</sum_time_spent> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>80</entry_sum_visit_length> + <entry_bounce_count>0</entry_bounce_count> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <avg_time_on_page>79</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>0%</exit_rate> + <url>http://piwik.org/changelog/</url> + </row> + </subtable> + </row> + <row> + <label>docs</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + <subtable> + <row> + <label>installation</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + <url>http://piwik.org/docs/installation/</url> + </row> + </subtable> + </row> + </subtable> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageTitles_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageTitles_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..cb5e27024c7512ff9bc5773761607925df379232 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageTitles_range.xml @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label> Liberate Web Analytics - Analytics - Piwik</label> + <nb_visits>4</nb_visits> + <nb_hits>4</nb_hits> + <sum_time_spent>34</sum_time_spent> + <nb_hits_with_time_generation>3</nb_hits_with_time_generation> + <min_time_generation>0.058</min_time_generation> + <max_time_generation>0.292</max_time_generation> + <entry_nb_visits>4</entry_nb_visits> + <entry_nb_actions>7</entry_nb_actions> + <entry_sum_visit_length>43</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>9</avg_time_on_page> + <bounce_rate>50%</bounce_rate> + <exit_rate>50%</exit_rate> + <avg_time_generation>0.177</avg_time_generation> + </row> + <row> + <label> Log Analytics - Analytics - Piwik</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.145</min_time_generation> + <max_time_generation>0.145</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.145</avg_time_generation> + </row> + <row> + <label> Contact the Piwik team - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label>demo.piwik.org</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.413</min_time_generation> + <max_time_generation>0.413</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.413</avg_time_generation> + <subtable> + <row> + <label> Piwik Forums - Piwik › Web Analytics Reports</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.413</min_time_generation> + <max_time_generation>0.413</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.413</avg_time_generation> + </row> + </subtable> + </row> + <row> + <label> Download - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>7</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.113</min_time_generation> + <max_time_generation>0.113</max_time_generation> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>7</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.113</avg_time_generation> + </row> + <row> + <label> Hello Installing Piwik - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + </row> + <row> + <label> incredible title!</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label> Integrate Piwik into your Rails Application - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + </row> + <row> + <label> Looking at Electronics & Cameras page with a page level custom variable</label> + <nb_visits>1</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>3</entry_nb_actions> + <entry_sum_visit_length>1</entry_sum_visit_length> + <entry_bounce_count>0</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label> Piwik 2.1 — Massive Performance and Reliability Improvements - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + </row> + <row> + <label> Piwik Forums</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label> What is Piwik? - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..2b3103a1a23059c06452d925e640c2b7c3f2ab65 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml @@ -0,0 +1,441 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label>/index</label> + <nb_visits>4</nb_visits> + <nb_hits>4</nb_hits> + <sum_time_spent>34</sum_time_spent> + <nb_hits_with_time_generation>3</nb_hits_with_time_generation> + <min_time_generation>0.058</min_time_generation> + <max_time_generation>0.292</max_time_generation> + <entry_nb_visits>4</entry_nb_visits> + <entry_nb_actions>7</entry_nb_actions> + <entry_sum_visit_length>43</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>9</avg_time_on_page> + <bounce_rate>50%</bounce_rate> + <exit_rate>50%</exit_rate> + <avg_time_generation>0.177</avg_time_generation> + <url>http://piwik.org/</url> + <segment>exitPageUrl==http%3A%2F%2Fpiwik.org%2F</segment> + </row> + <row> + <label>/index.htm</label> + <nb_visits>2</nb_visits> + <nb_hits>4</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>4</entry_nb_actions> + <entry_sum_visit_length>1</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>50%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <url>http://example.org/index.htm</url> + <segment>exitPageUrl==http%3A%2F%2Fexample.org%2Findex.htm</segment> + </row> + <row> + <label>blog</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>2</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.255</avg_time_generation> + <subtable> + <row> + <label>2012</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <subtable> + <row> + <label>10</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <subtable> + <row> + <label>integrate-piwik-into-your-rails-application</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <url>http://piwik.org/blog/2012/10/integrate-piwik-into-your-rails-application/</url> + </row> + </subtable> + </row> + </subtable> + </row> + </subtable> + </row> + <row> + <label>2014</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <subtable> + <row> + <label>03</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <subtable> + <row> + <label>piwik-2-1-massive-performance-reliability-improvements</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <url>http://piwik.org/blog/2014/03/piwik-2-1-massive-performance-reliability-improvements/</url> + </row> + </subtable> + </row> + </subtable> + </row> + </subtable> + </row> + </subtable> + </row> + <row> + <label>log-analytics</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.145</min_time_generation> + <max_time_generation>0.145</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.145</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.145</min_time_generation> + <max_time_generation>0.145</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.145</avg_time_generation> + <url>http://piwik.org/log-analytics/</url> + </row> + </subtable> + </row> + <row> + <label>/index.php?module=CoreHome&action=index&date=yesterday&period=day&idSite=7</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.413</min_time_generation> + <max_time_generation>0.413</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.413</avg_time_generation> + <url>http://demo.piwik.org/index.php?module=CoreHome&action=index&date=yesterday&period=day&idSite=7</url> + <segment>exitPageUrl==http%3A%2F%2Fdemo.piwik.org%2Findex.php%3Fmodule%3DCoreHome%26action%3Dindex%26date%3Dyesterday%26period%3Dday%26idSite%3D7</segment> + </row> + <row> + <label>/register.php?0,approve=9a94a02145599</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <url>http://forum.piwik.org/register.php?0,approve=9a94a02145599</url> + <segment>exitPageUrl==http%3A%2F%2Fforum.piwik.org%2Fregister.php%3F0%2Capprove%3D9a94a02145599</segment> + </row> + <row> + <label>contact</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation>0</max_time_generation> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <url>http://piwik.org/contact/</url> + </row> + </subtable> + </row> + <row> + <label>docs</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + <subtable> + <row> + <label>installation</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + <url>http://piwik.org/docs/installation/</url> + </row> + </subtable> + </row> + </subtable> + </row> + <row> + <label>what-is-piwisk</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation>0</max_time_generation> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <url>http://piwik.org/what-is-piwisk/</url> + </row> + </subtable> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlink_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlink_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..c234bed59e963e268d7a9bc05348d941758c4aa9 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlink_range.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result /> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..d03b4e81bb3acc9de1d2d6fc68884275ea851933 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label>demo.piwik.org</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <subtable> + <row> + <label>/</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <url>http://demo.piwik.org/</url> + </row> + </subtable> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitle_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitle_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..c234bed59e963e268d7a9bc05348d941758c4aa9 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitle_range.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result /> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitlesFollowingSiteSearch_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitlesFollowingSiteSearch_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..c234bed59e963e268d7a9bc05348d941758c4aa9 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitlesFollowingSiteSearch_range.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result /> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitles_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitles_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..7d4f318e5ea45b3d23b5f8ed3616639efa10a7da --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitles_range.xml @@ -0,0 +1,293 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label> Liberate Web Analytics - Analytics - Piwik</label> + <nb_visits>4</nb_visits> + <nb_hits>4</nb_hits> + <sum_time_spent>34</sum_time_spent> + <nb_hits_with_time_generation>3</nb_hits_with_time_generation> + <min_time_generation>0.058</min_time_generation> + <max_time_generation>0.292</max_time_generation> + <entry_nb_visits>4</entry_nb_visits> + <entry_nb_actions>7</entry_nb_actions> + <entry_sum_visit_length>43</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>9</avg_time_on_page> + <bounce_rate>50%</bounce_rate> + <exit_rate>50%</exit_rate> + <avg_time_generation>0.177</avg_time_generation> + </row> + <row> + <label> Log Analytics - Analytics - Piwik</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.145</min_time_generation> + <max_time_generation>0.145</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.145</avg_time_generation> + </row> + <row> + <label> Another Product page with no category</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>0%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label> Changelog Archive - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>79</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>80</entry_sum_visit_length> + <entry_bounce_count>0</entry_bounce_count> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <avg_time_on_page>79</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>0%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label> Contact the Piwik team - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label>demo.piwik.org</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.413</min_time_generation> + <max_time_generation>0.413</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.413</avg_time_generation> + <subtable> + <row> + <label> Piwik Forums - Piwik › Web Analytics Reports</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.413</min_time_generation> + <max_time_generation>0.413</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.413</avg_time_generation> + </row> + </subtable> + </row> + <row> + <label> Download - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>7</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.113</min_time_generation> + <max_time_generation>0.113</max_time_generation> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>7</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.113</avg_time_generation> + </row> + <row> + <label> Hello Installing Piwik - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + </row> + <row> + <label> incredible title!</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label> Integrate Piwik into your Rails Application - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + </row> + <row> + <label> Looking at Electronics & Cameras page with a page level custom variable</label> + <nb_visits>1</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>3</entry_nb_actions> + <entry_sum_visit_length>1</entry_sum_visit_length> + <entry_bounce_count>0</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label> Piwik 2.1 — Massive Performance and Reliability Improvements - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + </row> + <row> + <label> Piwik Forums</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> + <row> + <label> What is Piwik? - Analytics - Piwik</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrl_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrl_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..b25b53ebb54eacfa02dd9e10550d9feab66db15e --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrl_range.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label>/index.htm</label> + <nb_visits>2</nb_visits> + <nb_hits>4</nb_hits> + <sum_time_spent>0</sum_time_spent> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>4</entry_nb_actions> + <entry_sum_visit_length>1</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>50%</bounce_rate> + <exit_rate>100%</exit_rate> + <url>http://example.org/index.htm</url> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrlsFollowingSiteSearch_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrlsFollowingSiteSearch_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..c234bed59e963e268d7a9bc05348d941758c4aa9 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrlsFollowingSiteSearch_range.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result /> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..33738e28ff12ee2e74340680f477c6b6431b11bf --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml @@ -0,0 +1,506 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label>/index</label> + <nb_visits>4</nb_visits> + <nb_hits>4</nb_hits> + <sum_time_spent>34</sum_time_spent> + <nb_hits_with_time_generation>3</nb_hits_with_time_generation> + <min_time_generation>0.058</min_time_generation> + <max_time_generation>0.292</max_time_generation> + <entry_nb_visits>4</entry_nb_visits> + <entry_nb_actions>7</entry_nb_actions> + <entry_sum_visit_length>43</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>9</avg_time_on_page> + <bounce_rate>50%</bounce_rate> + <exit_rate>50%</exit_rate> + <avg_time_generation>0.177</avg_time_generation> + <url>http://piwik.org/</url> + <segment>pageUrl==http%3A%2F%2Fpiwik.org%2F</segment> + </row> + <row> + <label>/index.htm</label> + <nb_visits>2</nb_visits> + <nb_hits>4</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>4</entry_nb_actions> + <entry_sum_visit_length>1</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>50%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <url>http://example.org/index.htm</url> + <segment>pageUrl==http%3A%2F%2Fexample.org%2Findex.htm</segment> + </row> + <row> + <label>blog</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>2</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.255</avg_time_generation> + <subtable> + <row> + <label>2012</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <subtable> + <row> + <label>10</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <subtable> + <row> + <label>integrate-piwik-into-your-rails-application</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.391</min_time_generation> + <max_time_generation>0.391</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.391</avg_time_generation> + <url>http://piwik.org/blog/2012/10/integrate-piwik-into-your-rails-application/</url> + </row> + </subtable> + </row> + </subtable> + </row> + </subtable> + </row> + <row> + <label>2014</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <subtable> + <row> + <label>03</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <subtable> + <row> + <label>piwik-2-1-massive-performance-reliability-improvements</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.119</min_time_generation> + <max_time_generation>0.119</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.119</avg_time_generation> + <url>http://piwik.org/blog/2014/03/piwik-2-1-massive-performance-reliability-improvements/</url> + </row> + </subtable> + </row> + </subtable> + </row> + </subtable> + </row> + </subtable> + </row> + <row> + <label>log-analytics</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.145</min_time_generation> + <max_time_generation>0.145</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.145</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>2</nb_visits> + <nb_hits>2</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.145</min_time_generation> + <max_time_generation>0.145</max_time_generation> + <entry_nb_visits>2</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>2</entry_bounce_count> + <exit_nb_visits>2</exit_nb_visits> + <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.145</avg_time_generation> + <url>http://piwik.org/log-analytics/</url> + </row> + </subtable> + </row> + <row> + <label>/index.php?module=CoreHome&action=index&date=yesterday&period=day&idSite=7</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.413</min_time_generation> + <max_time_generation>0.413</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.413</avg_time_generation> + <url>http://demo.piwik.org/index.php?module=CoreHome&action=index&date=yesterday&period=day&idSite=7</url> + <segment>pageUrl==http%3A%2F%2Fdemo.piwik.org%2Findex.php%3Fmodule%3DCoreHome%26action%3Dindex%26date%3Dyesterday%26period%3Dday%26idSite%3D7</segment> + </row> + <row> + <label>/register.php?0,approve=9a94a02145599</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation /> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <url>http://forum.piwik.org/register.php?0,approve=9a94a02145599</url> + <segment>pageUrl==http%3A%2F%2Fforum.piwik.org%2Fregister.php%3F0%2Capprove%3D9a94a02145599</segment> + </row> + <row> + <label>changelog</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>79</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation>0</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>80</entry_sum_visit_length> + <entry_bounce_count>0</entry_bounce_count> + <avg_time_on_page>79</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>0%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>79</sum_time_spent> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>2</entry_nb_actions> + <entry_sum_visit_length>80</entry_sum_visit_length> + <entry_bounce_count>0</entry_bounce_count> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <avg_time_on_page>79</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>0%</exit_rate> + <url>http://piwik.org/changelog/</url> + </row> + </subtable> + </row> + <row> + <label>contact</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation>0</max_time_generation> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <url>http://piwik.org/contact/</url> + </row> + </subtable> + </row> + <row> + <label>docs</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + <subtable> + <row> + <label>installation</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.134</min_time_generation> + <max_time_generation>0.134</max_time_generation> + <entry_nb_visits>1</entry_nb_visits> + <entry_nb_actions>1</entry_nb_actions> + <entry_sum_visit_length>0</entry_sum_visit_length> + <entry_bounce_count>1</entry_bounce_count> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>100%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0.134</avg_time_generation> + <url>http://piwik.org/docs/installation/</url> + </row> + </subtable> + </row> + </subtable> + </row> + <row> + <label>download</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>7</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.113</min_time_generation> + <max_time_generation>0.113</max_time_generation> + <avg_time_on_page>7</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>0%</exit_rate> + <avg_time_generation>0.113</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>7</sum_time_spent> + <nb_hits_with_time_generation>1</nb_hits_with_time_generation> + <min_time_generation>0.113</min_time_generation> + <max_time_generation>0.113</max_time_generation> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <avg_time_on_page>7</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>0%</exit_rate> + <avg_time_generation>0.113</avg_time_generation> + <url>http://piwik.org/download/</url> + </row> + </subtable> + </row> + <row> + <label>what-is-piwisk</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>0</nb_hits_with_time_generation> + <min_time_generation /> + <max_time_generation>0</max_time_generation> + <exit_nb_visits>1</exit_nb_visits> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <avg_time_generation>0</avg_time_generation> + <subtable> + <row> + <label>/index</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <exit_nb_visits>1</exit_nb_visits> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + <url>http://piwik.org/what-is-piwisk/</url> + </row> + </subtable> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getSiteSearchCategories_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getSiteSearchCategories_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..c234bed59e963e268d7a9bc05348d941758c4aa9 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getSiteSearchCategories_range.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result /> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getSiteSearchKeywords_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getSiteSearchKeywords_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..c234bed59e963e268d7a9bc05348d941758c4aa9 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getSiteSearchKeywords_range.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result /> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getSiteSearchNoResultKeywords_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getSiteSearchNoResultKeywords_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..c234bed59e963e268d7a9bc05348d941758c4aa9 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getSiteSearchNoResultKeywords_range.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result /> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.get_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.get_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..45fd92e7cdb8f708eee9dfb759e123b7353966c5 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.get_range.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <nb_pageviews>19</nb_pageviews> + <nb_uniq_pageviews>17</nb_uniq_pageviews> + <nb_downloads>1</nb_downloads> + <nb_uniq_downloads>1</nb_uniq_downloads> + <nb_outlinks>1</nb_outlinks> + <nb_uniq_outlinks>1</nb_uniq_outlinks> + <nb_searches>0</nb_searches> + <nb_keywords>0</nb_keywords> + <avg_time_generation>0.206</avg_time_generation> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Live.getLastVisitsDetails_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..91e14487964502e49595dc623d63acc4d6858527 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Live.getLastVisitsDetails_range.xml @@ -0,0 +1,1918 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <idSite>3</idSite> + <idVisit>55</idVisit> + <visitIp>174.97.139.63</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://piwik.org/</url> + <pageTitle>Liberate Web Analytics - Analytics - Piwik</pageTitle> + <pageIdAction>35</pageIdAction> + + <pageId>68</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <generationTime>0.29s</generationTime> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>returning</visitorType> + <visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>77</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>0</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>website</referrerType> + <referrerTypeName>Websites</referrerTypeName> + <referrerName>blog.comperiosearch.com</referrerName> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://blog.comperiosearch.com/blog/2014/02/05/dynamic-search-ranking-using-elasticsearch-neo4j-and-piwik/</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Windows 8.1</operatingSystem> + <operatingSystemName>Windows</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/WIN.gif</operatingSystemIcon> + <operatingSystemCode>WIN</operatingSystemCode> + <operatingSystemVersion>8.1</operatingSystemVersion> + <browserFamily>Blink</browserFamily> + <browserFamilyDescription>Blink (Chrome, Opera)</browserFamilyDescription> + <browser>Chrome 33.0</browser> + <browserName>Chrome</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/CH.gif</browserIcon> + <browserCode>CH</browserCode> + <browserVersion>33.0</browserVersion> + <events>0</events> + <continent>North America</continent> + <continentCode>amn</continentCode> + <country>United States</country> + <countryCode>us</countryCode> + <countryFlag>plugins/UserCountry/images/flags/us.png</countryFlag> + <region>North Carolina</region> + <regionCode>NC</regionCode> + <city>Raleigh</city> + <location>Raleigh, North Carolina, United States</location> + <latitude>35.771999</latitude> + <longitude>-78.639000</longitude> + <visitLocalTime>20:34:49</visitLocalTime> + <visitLocalHour>20</visitLocalHour> + <daysSinceLastVisit>0</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>1366x768</resolution> + <plugins>pdf, flash, java</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/pdf.gif</pluginIcon> + <pluginName>pdf</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>48</idVisit> + <visitIp>206.190.75.8</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://piwik.org/changelog/</url> + <pageTitle>Changelog Archive - Analytics - Piwik</pageTitle> + <pageIdAction>44</pageIdAction> + + <pageId>59</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <timeSpent>79</timeSpent> + <timeSpentPretty>1 min 19s</timeSpentPretty> + <icon /> + + </row> + <row> + <type>action</type> + <url>http://piwik.org/contact/</url> + <pageTitle>Contact the Piwik team - Analytics - Piwik</pageTitle> + <pageIdAction>55</pageIdAction> + + <pageId>67</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>returning</visitorType> + <visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>2</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>181</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>80</visitDuration> + <visitDurationPretty>1 min 20s</visitDurationPretty> + <searches>0</searches> + <actions>2</actions> + <referrerType>direct</referrerType> + <referrerTypeName>Direct Entry</referrerTypeName> + <referrerName /> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://piwik.org/what-is-piwik/</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Windows 7</operatingSystem> + <operatingSystemName>Windows</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/WIN.gif</operatingSystemIcon> + <operatingSystemCode>WIN</operatingSystemCode> + <operatingSystemVersion>7</operatingSystemVersion> + <browserFamily>Trident</browserFamily> + <browserFamilyDescription>Trident (IE)</browserFamilyDescription> + <browser>Internet Explorer 8.0</browser> + <browserName>Internet Explorer</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/IE.gif</browserIcon> + <browserCode>IE</browserCode> + <browserVersion>8.0</browserVersion> + <events>0</events> + <continent>North America</continent> + <continentCode>amn</continentCode> + <country>United States</country> + <countryCode>us</countryCode> + <countryFlag>plugins/UserCountry/images/flags/us.png</countryFlag> + <region>California</region> + <regionCode>CA</regionCode> + <city>Lake Forest</city> + <location>Lake Forest, California, United States</location> + <latitude>33.645000</latitude> + <longitude>-117.679001</longitude> + <visitLocalTime>17:33:27</visitLocalTime> + <visitLocalHour>17</visitLocalHour> + <daysSinceLastVisit>181</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>1536x864</resolution> + <plugins /> + <pluginsIcons /> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>54</idVisit> + <visitIp>193.159.20.129</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://demo.piwik.org/index.php?module=CoreHome&action=index&date=yesterday&period=day&idSite=7</url> + <pageTitle>demo.piwik.org/Piwik Forums - Piwik › Web Analytics Reports</pageTitle> + <pageIdAction>53</pageIdAction> + + <pageId>66</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <generationTime>0.41s</generationTime> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>returning</visitorType> + <visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>1</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>0</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>direct</referrerType> + <referrerTypeName>Direct Entry</referrerTypeName> + <referrerName /> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://demo.piwik.org/index.php?module=MultiSites&action=index&date=yesterday&period=day&idSite=32</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Windows 7</operatingSystem> + <operatingSystemName>Windows</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/WIN.gif</operatingSystemIcon> + <operatingSystemCode>WIN</operatingSystemCode> + <operatingSystemVersion>7</operatingSystemVersion> + <browserFamily>Blink</browserFamily> + <browserFamilyDescription>Blink (Chrome, Opera)</browserFamilyDescription> + <browser>Chrome 34.0</browser> + <browserName>Chrome</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/CH.gif</browserIcon> + <browserCode>CH</browserCode> + <browserVersion>34.0</browserVersion> + <events>0</events> + <continent>Europe</continent> + <continentCode>eur</continentCode> + <country>Germany</country> + <countryCode>de</countryCode> + <countryFlag>plugins/UserCountry/images/flags/de.png</countryFlag> + <region /> + <regionCode /> + <city /> + <location>Germany</location> + <latitude>51</latitude> + <longitude>9</longitude> + <visitLocalTime>01:34:37</visitLocalTime> + <visitLocalHour>1</visitLocalHour> + <daysSinceLastVisit>4</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + <row> + <customVariableName2>Demo language</customVariableName2> + <customVariableValue2>English</customVariableValue2> + </row> + </customVariables> + <resolution>1920x1200</resolution> + <plugins>pdf, flash, java, quicktime, silverlight</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/pdf.gif</pluginIcon> + <pluginName>pdf</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/quicktime.gif</pluginIcon> + <pluginName>quicktime</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/silverlight.gif</pluginIcon> + <pluginName>silverlight</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>52</idVisit> + <visitIp>50.244.17.130</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://piwik.org/</url> + <pageTitle>Liberate Web Analytics - Analytics - Piwik</pageTitle> + <pageIdAction>35</pageIdAction> + + <pageId>63</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <timeSpent>32</timeSpent> + <timeSpentPretty>32s</timeSpentPretty> + <icon /> + + </row> + <row> + <type>action</type> + <url>http://piwik.org/what-is-piwisk/</url> + <pageTitle>What is Piwik? - Analytics - Piwik</pageTitle> + <pageIdAction>51</pageIdAction> + + <pageId>65</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>501</customVariablePageValue1> + </row> + </customVariables> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>returning</visitorType> + <visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>7</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>17</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>33</visitDuration> + <visitDurationPretty>33s</visitDurationPretty> + <searches>0</searches> + <actions>2</actions> + <referrerType>search</referrerType> + <referrerTypeName>Search Engines</referrerTypeName> + <referrerName>Google</referrerName> + <referrerKeyword>Keyword not defined</referrerKeyword> + <referrerKeywordPosition>1</referrerKeywordPosition> + <referrerUrl>http://piwik.org/faq/general/#faq_144</referrerUrl> + <referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl> + <referrerSearchEngineIcon>plugins/Referrers/images/searchEngines/google.com.png</referrerSearchEngineIcon> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Mac 10.9</operatingSystem> + <operatingSystemName>Mac</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/MAC.gif</operatingSystemIcon> + <operatingSystemCode>MAC</operatingSystemCode> + <operatingSystemVersion>10.9</operatingSystemVersion> + <browserFamily>WebKit</browserFamily> + <browserFamilyDescription>WebKit (Safari, Chrome)</browserFamilyDescription> + <browser>Safari 7.0</browser> + <browserName>Safari</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/SF.gif</browserIcon> + <browserCode>SF</browserCode> + <browserVersion>7.0</browserVersion> + <events>0</events> + <continent>North America</continent> + <continentCode>amn</continentCode> + <country>United States</country> + <countryCode>us</countryCode> + <countryFlag>plugins/UserCountry/images/flags/us.png</countryFlag> + <region /> + <regionCode /> + <city /> + <location>United States</location> + <latitude>38</latitude> + <longitude>-97</longitude> + <visitLocalTime>19:34:01</visitLocalTime> + <visitLocalHour>19</visitLocalHour> + <daysSinceLastVisit>6</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>2880x1800</resolution> + <plugins>pdf, flash, java, quicktime</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/pdf.gif</pluginIcon> + <pluginName>pdf</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/quicktime.gif</pluginIcon> + <pluginName>quicktime</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>53</idVisit> + <visitIp>84.194.72.21</visitIp> + + <actionDetails> + <row> + <type>outlink</type> + <url>http://demo.piwik.org/</url> + <pageTitle /> + <pageIdAction>49</pageIdAction> + + <pageId>64</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <icon>plugins/Morpheus/images/link.gif</icon> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>returning</visitorType> + <visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>1</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>0</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>website</referrerType> + <referrerTypeName>Websites</referrerTypeName> + <referrerName>musicforeveryoneradio.be</referrerName> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://musicforeveryoneradio.be:2222/CMD_PLUGINS/installatron/index.raw</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Windows 7</operatingSystem> + <operatingSystemName>Windows</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/WIN.gif</operatingSystemIcon> + <operatingSystemCode>WIN</operatingSystemCode> + <operatingSystemVersion>7</operatingSystemVersion> + <browserFamily>Blink</browserFamily> + <browserFamilyDescription>Blink (Chrome, Opera)</browserFamilyDescription> + <browser>Chrome 33.0</browser> + <browserName>Chrome</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/CH.gif</browserIcon> + <browserCode>CH</browserCode> + <browserVersion>33.0</browserVersion> + <events>0</events> + <continent>Europe</continent> + <continentCode>eur</continentCode> + <country>Belgium</country> + <countryCode>be</countryCode> + <countryFlag>plugins/UserCountry/images/flags/be.png</countryFlag> + <region>Limburg</region> + <regionCode>05</regionCode> + <city>Maaseik</city> + <location>Maaseik, Limburg, Belgium</location> + <latitude>51.099998</latitude> + <longitude>5.800000</longitude> + <visitLocalTime>01:34:24</visitLocalTime> + <visitLocalHour>1</visitLocalHour> + <daysSinceLastVisit>0</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>1920x1080</resolution> + <plugins>pdf, flash, java, silverlight</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/pdf.gif</pluginIcon> + <pluginName>pdf</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/silverlight.gif</pluginIcon> + <pluginName>silverlight</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>51</idVisit> + <visitIp>108.211.181.12</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://piwik.org/blog/2012/10/integrate-piwik-into-your-rails-application/</url> + <pageTitle>Integrate Piwik into your Rails Application - Analytics - Piwik</pageTitle> + <pageIdAction>48</pageIdAction> + + <pageId>62</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <generationTime>0.39s</generationTime> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>new</visitorType> + <visitorTypeIcon /> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>1</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>0</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>search</referrerType> + <referrerTypeName>Search Engines</referrerTypeName> + <referrerName>Google</referrerName> + <referrerKeyword>Keyword not defined</referrerKeyword> + <referrerKeywordPosition /> + <referrerUrl>http://piwik.org/faq/general/#faq_144</referrerUrl> + <referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl> + <referrerSearchEngineIcon>plugins/Referrers/images/searchEngines/google.com.png</referrerSearchEngineIcon> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Mac 10.9</operatingSystem> + <operatingSystemName>Mac</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/MAC.gif</operatingSystemIcon> + <operatingSystemCode>MAC</operatingSystemCode> + <operatingSystemVersion>10.9</operatingSystemVersion> + <browserFamily>Blink</browserFamily> + <browserFamilyDescription>Blink (Chrome, Opera)</browserFamilyDescription> + <browser>Chrome 33.0</browser> + <browserName>Chrome</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/CH.gif</browserIcon> + <browserCode>CH</browserCode> + <browserVersion>33.0</browserVersion> + <events>0</events> + <continent>North America</continent> + <continentCode>amn</continentCode> + <country>United States</country> + <countryCode>us</countryCode> + <countryFlag>plugins/UserCountry/images/flags/us.png</countryFlag> + <region>California</region> + <regionCode>CA</regionCode> + <city>San Francisco</city> + <location>San Francisco, California, United States</location> + <latitude>37.792000</latitude> + <longitude>-122.408997</longitude> + <visitLocalTime>17:33:58</visitLocalTime> + <visitLocalHour>17</visitLocalHour> + <daysSinceLastVisit>0</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>1360x768</resolution> + <plugins>pdf, flash, java, quicktime, windowsmedia, silverlight</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/pdf.gif</pluginIcon> + <pluginName>pdf</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/quicktime.gif</pluginIcon> + <pluginName>quicktime</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/windowsmedia.gif</pluginIcon> + <pluginName>windowsmedia</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/silverlight.gif</pluginIcon> + <pluginName>silverlight</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>50</idVisit> + <visitIp>219.101.46.222</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://piwik.org/log-analytics/</url> + <pageTitle>Log Analytics - Analytics - Piwik</pageTitle> + <pageIdAction>42</pageIdAction> + + <pageId>61</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>404</customVariablePageValue1> + </row> + </customVariables> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>returning</visitorType> + <visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>4</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>3</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>search</referrerType> + <referrerTypeName>Search Engines</referrerTypeName> + <referrerName>Google</referrerName> + <referrerKeyword>Keyword not defined</referrerKeyword> + <referrerKeywordPosition>2</referrerKeywordPosition> + <referrerUrl>http://piwik.org/faq/general/#faq_144</referrerUrl> + <referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl> + <referrerSearchEngineIcon>plugins/Referrers/images/searchEngines/google.com.png</referrerSearchEngineIcon> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Mac 10.9</operatingSystem> + <operatingSystemName>Mac</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/MAC.gif</operatingSystemIcon> + <operatingSystemCode>MAC</operatingSystemCode> + <operatingSystemVersion>10.9</operatingSystemVersion> + <browserFamily>WebKit</browserFamily> + <browserFamilyDescription>WebKit (Safari, Chrome)</browserFamilyDescription> + <browser>Safari 7.0</browser> + <browserName>Safari</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/SF.gif</browserIcon> + <browserCode>SF</browserCode> + <browserVersion>7.0</browserVersion> + <events>0</events> + <continent>Asia</continent> + <continentCode>asi</continentCode> + <country>Japan</country> + <countryCode>jp</countryCode> + <countryFlag>plugins/UserCountry/images/flags/jp.png</countryFlag> + <region>Kanagawa</region> + <regionCode>19</regionCode> + <city>Nihon'odori</city> + <location>Nihon'odori, Kanagawa, Japan</location> + <latitude>35.450001</latitude> + <longitude>139.649994</longitude> + <visitLocalTime>09:33:50</visitLocalTime> + <visitLocalHour>9</visitLocalHour> + <daysSinceLastVisit>1</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>2560x1440</resolution> + <plugins>pdf, java, quicktime</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/pdf.gif</pluginIcon> + <pluginName>pdf</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/quicktime.gif</pluginIcon> + <pluginName>quicktime</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>49</idVisit> + <visitIp>80.136.160.65</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://piwik.org/blog/2014/03/piwik-2-1-massive-performance-reliability-improvements/</url> + <pageTitle>Piwik 2.1 — Massive Performance and Reliability Improvements - Analytics - Piwik</pageTitle> + <pageIdAction>46</pageIdAction> + + <pageId>60</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <generationTime>0.12s</generationTime> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>returning</visitorType> + <visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>2</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>0</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>website</referrerType> + <referrerTypeName>Websites</referrerTypeName> + <referrerName>berndjung.com</referrerName> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://berndjung.com/piwik/index.php?module=CoreHome&action=index&idSite=1&period=day&date=today</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Smartphone</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/smartphone.png</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Android</operatingSystem> + <operatingSystemName>Android</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/AND.gif</operatingSystemIcon> + <operatingSystemCode>AND</operatingSystemCode> + <operatingSystemVersion /> + <browserFamily>Gecko</browserFamily> + <browserFamilyDescription>Gecko (Firefox)</browserFamilyDescription> + <browser>Firefox 27.0</browser> + <browserName>Firefox</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/FF.gif</browserIcon> + <browserCode>FF</browserCode> + <browserVersion>27.0</browserVersion> + <events>0</events> + <continent>Europe</continent> + <continentCode>eur</continentCode> + <country>Germany</country> + <countryCode>de</countryCode> + <countryFlag>plugins/UserCountry/images/flags/de.png</countryFlag> + <region>Nordrhein-Westfalen</region> + <regionCode>07</regionCode> + <city>Weilerswist</city> + <location>Weilerswist, Nordrhein-Westfalen, Germany</location> + <latitude>50.766998</latitude> + <longitude>6.833000</longitude> + <visitLocalTime>01:33:31</visitLocalTime> + <visitLocalHour>1</visitLocalHour> + <daysSinceLastVisit>0</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>360x640</resolution> + <plugins>flash</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>47</idVisit> + <visitIp>188.107.238.9</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://piwik.org/log-analytics/</url> + <pageTitle>Log Analytics - Analytics - Piwik</pageTitle> + <pageIdAction>42</pageIdAction> + + <pageId>58</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <generationTime>0.15s</generationTime> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>returning</visitorType> + <visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>5</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>1</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>website</referrerType> + <referrerTypeName>Websites</referrerTypeName> + <referrerName>forum.golem.de</referrerName> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://forum.golem.de/kommentare/security/urteil-zu-tracking-nutzer-muessen-piwik-analyse-widersprechen-koennen/piwik-log-analytics/80715,3669355,3669355,read.html</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Windows 7</operatingSystem> + <operatingSystemName>Windows</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/WIN.gif</operatingSystemIcon> + <operatingSystemCode>WIN</operatingSystemCode> + <operatingSystemVersion>7</operatingSystemVersion> + <browserFamily>Gecko</browserFamily> + <browserFamilyDescription>Gecko (Firefox)</browserFamilyDescription> + <browser>Firefox 27.0</browser> + <browserName>Firefox</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/FF.gif</browserIcon> + <browserCode>FF</browserCode> + <browserVersion>27.0</browserVersion> + <events>0</events> + <continent>Europe</continent> + <continentCode>eur</continentCode> + <country>Germany</country> + <countryCode>de</countryCode> + <countryFlag>plugins/UserCountry/images/flags/de.png</countryFlag> + <region>Rheinland-Pfalz</region> + <regionCode>08</regionCode> + <city>Mainz</city> + <location>Mainz, Rheinland-Pfalz, Germany</location> + <latitude>50</latitude> + <longitude>8.271000</longitude> + <visitLocalTime>01:33:13</visitLocalTime> + <visitLocalHour>1</visitLocalHour> + <daysSinceLastVisit>3</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>2560x1440</resolution> + <plugins>pdf, flash, java, quicktime, windowsmedia, silverlight</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/pdf.gif</pluginIcon> + <pluginName>pdf</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/quicktime.gif</pluginIcon> + <pluginName>quicktime</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/windowsmedia.gif</pluginIcon> + <pluginName>windowsmedia</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/silverlight.gif</pluginIcon> + <pluginName>silverlight</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>45</idVisit> + <visitIp>93.80.130.163</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://piwik.org/</url> + <pageTitle>Liberate Web Analytics - Analytics - Piwik</pageTitle> + <pageIdAction>35</pageIdAction> + + <pageId>54</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>403</customVariablePageValue1> + </row> + </customVariables> + <generationTime>0.18s</generationTime> + <timeSpent>2</timeSpent> + <timeSpentPretty>2s</timeSpentPretty> + <icon /> + + </row> + <row> + <type>action</type> + <url>http://piwik.org/download/</url> + <pageTitle>Download - Analytics - Piwik</pageTitle> + <pageIdAction>39</pageIdAction> + + <pageId>56</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>500</customVariablePageValue1> + </row> + </customVariables> + <generationTime>0.11s</generationTime> + <timeSpent>7</timeSpent> + <timeSpentPretty>7s</timeSpentPretty> + <icon /> + + </row> + <row> + <type>download</type> + <url>http://builds.piwik.org/latest.zip</url> + <pageTitle /> + <pageIdAction>40</pageIdAction> + + <pageId>57</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <icon>plugins/Morpheus/images/download.png</icon> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>new</visitorType> + <visitorTypeIcon /> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>1</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>0</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>10</visitDuration> + <visitDurationPretty>10s</visitDurationPretty> + <searches>0</searches> + <actions>3</actions> + <referrerType>search</referrerType> + <referrerTypeName>Search Engines</referrerTypeName> + <referrerName>Google</referrerName> + <referrerKeyword>Keyword not defined</referrerKeyword> + <referrerKeywordPosition>1</referrerKeywordPosition> + <referrerUrl>http://piwik.org/faq/general/#faq_144</referrerUrl> + <referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl> + <referrerSearchEngineIcon>plugins/Referrers/images/searchEngines/google.com.png</referrerSearchEngineIcon> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Windows 8</operatingSystem> + <operatingSystemName>Windows</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/WIN.gif</operatingSystemIcon> + <operatingSystemCode>WIN</operatingSystemCode> + <operatingSystemVersion>8</operatingSystemVersion> + <browserFamily>Gecko</browserFamily> + <browserFamilyDescription>Gecko (Firefox)</browserFamilyDescription> + <browser>Firefox 27.0</browser> + <browserName>Firefox</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/FF.gif</browserIcon> + <browserCode>FF</browserCode> + <browserVersion>27.0</browserVersion> + <events>0</events> + <continent>Europe</continent> + <continentCode>eur</continentCode> + <country>Russia</country> + <countryCode>ru</countryCode> + <countryFlag>plugins/UserCountry/images/flags/ru.png</countryFlag> + <region>Moscow City</region> + <regionCode>48</regionCode> + <city>Moscow</city> + <location>Moscow, Moscow City, Russia</location> + <latitude>55.751999</latitude> + <longitude>37.616001</longitude> + <visitLocalTime>04:28:18</visitLocalTime> + <visitLocalHour>4</visitLocalHour> + <daysSinceLastVisit>0</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>1920x1080</resolution> + <plugins>flash, java</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>46</idVisit> + <visitIp>176.41.226.154</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://piwik.org/docs/installation/</url> + <pageTitle>Hello Installing Piwik - Analytics - Piwik</pageTitle> + <pageIdAction>37</pageIdAction> + + <pageId>55</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <generationTime>0.13s</generationTime> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>returning</visitorType> + <visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>5</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>30</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>direct</referrerType> + <referrerTypeName>Direct Entry</referrerTypeName> + <referrerName /> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://piwik.org/docs/installation/</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Windows 7</operatingSystem> + <operatingSystemName>Windows</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/WIN.gif</operatingSystemIcon> + <operatingSystemCode>WIN</operatingSystemCode> + <operatingSystemVersion>7</operatingSystemVersion> + <browserFamily>Blink</browserFamily> + <browserFamilyDescription>Blink (Chrome, Opera)</browserFamilyDescription> + <browser>Chrome 33.0</browser> + <browserName>Chrome</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/CH.gif</browserIcon> + <browserCode>CH</browserCode> + <browserVersion>33.0</browserVersion> + <events>0</events> + <continent>Europe</continent> + <continentCode>eur</continentCode> + <country>Turkey</country> + <countryCode>tr</countryCode> + <countryFlag>plugins/UserCountry/images/flags/tr.png</countryFlag> + <region>Rize</region> + <regionCode>53</regionCode> + <city>Esentepe</city> + <location>Esentepe, Rize, Turkey</location> + <latitude>40.979000</latitude> + <longitude>40.415001</longitude> + <visitLocalTime>02:32:21</visitLocalTime> + <visitLocalHour>2</visitLocalHour> + <daysSinceLastVisit>8</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>1366x768</resolution> + <plugins>pdf, flash, java, silverlight</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/pdf.gif</pluginIcon> + <pluginName>pdf</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/silverlight.gif</pluginIcon> + <pluginName>silverlight</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>44</idVisit> + <visitIp>84.194.72.21</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://piwik.org/</url> + <pageTitle>Liberate Web Analytics - Analytics - Piwik</pageTitle> + <pageIdAction>35</pageIdAction> + + <pageId>53</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <generationTime>0.06s</generationTime> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>new</visitorType> + <visitorTypeIcon /> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>1</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>0</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>website</referrerType> + <referrerTypeName>Websites</referrerTypeName> + <referrerName>musicforeveryoneradio.be</referrerName> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://musicforeveryoneradio.be:2222/CMD_PLUGINS/installatron/index.raw</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Windows 7</operatingSystem> + <operatingSystemName>Windows</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/WIN.gif</operatingSystemIcon> + <operatingSystemCode>WIN</operatingSystemCode> + <operatingSystemVersion>7</operatingSystemVersion> + <browserFamily>Blink</browserFamily> + <browserFamilyDescription>Blink (Chrome, Opera)</browserFamilyDescription> + <browser>Chrome 33.0</browser> + <browserName>Chrome</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/CH.gif</browserIcon> + <browserCode>CH</browserCode> + <browserVersion>33.0</browserVersion> + <events>0</events> + <continent>Europe</continent> + <continentCode>eur</continentCode> + <country>Belgium</country> + <countryCode>be</countryCode> + <countryFlag>plugins/UserCountry/images/flags/be.png</countryFlag> + <region>Limburg</region> + <regionCode>05</regionCode> + <city>Maaseik</city> + <location>Maaseik, Limburg, Belgium</location> + <latitude>51.099998</latitude> + <longitude>5.800000</longitude> + <visitLocalTime>01:34:18</visitLocalTime> + <visitLocalHour>1</visitLocalHour> + <daysSinceLastVisit>0</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName1>Domain landed</customVariableName1> + <customVariableValue1>piwik.org</customVariableValue1> + </row> + </customVariables> + <resolution>1920x1080</resolution> + <plugins>pdf, flash, java, silverlight</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/pdf.gif</pluginIcon> + <pluginName>pdf</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/silverlight.gif</pluginIcon> + <pluginName>silverlight</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>42</idVisit> + <visitIp>0.0.0.0</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://example.org/index.htm</url> + <pageTitle>incredible title!</pageTitle> + <pageIdAction>29</pageIdAction> + + <pageId>49</pageId> + <customVariables> + <row> + <customVariablePageName3>_pks</customVariablePageName3> + <customVariablePageValue3>SKU2</customVariablePageValue3> + </row> + <row> + <customVariablePageName4>_pkn</customVariablePageName4> + <customVariablePageValue4>PRODUCT name</customVariablePageValue4> + </row> + <row> + <customVariablePageName5>_pkc</customVariablePageName5> + <customVariablePageValue5>Electronics & Cameras</customVariablePageValue5> + </row> + </customVariables> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>new</visitorType> + <visitorTypeIcon /> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>1</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>0</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>website</referrerType> + <referrerTypeName>Websites</referrerTypeName> + <referrerName>piwik.org</referrerName> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://piwik.org/contribute%</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Windows XP</operatingSystem> + <operatingSystemName>Windows</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/WIN.gif</operatingSystemIcon> + <operatingSystemCode>WIN</operatingSystemCode> + <operatingSystemVersion>XP</operatingSystemVersion> + <browserFamily>Trident</browserFamily> + <browserFamilyDescription>Trident (IE)</browserFamilyDescription> + <browser>Internet Explorer 6.0</browser> + <browserName>Internet Explorer</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/IE.gif</browserIcon> + <browserCode>IE</browserCode> + <browserVersion>6.0</browserVersion> + <events>0</events> + <continent>Unknown</continent> + <continentCode>unk</continentCode> + <country>Unknown</country> + <countryCode>xx</countryCode> + <countryFlag>plugins/UserCountry/images/flags/xx.png</countryFlag> + <region /> + <regionCode /> + <city /> + <location>Unknown</location> + <latitude /> + <longitude /> + <visitLocalTime>12:34:06</visitLocalTime> + <visitLocalHour>12</visitLocalHour> + <daysSinceLastVisit>0</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName5>VisitorType</customVariableName5> + <customVariableValue5>NewLoggedOut</customVariableValue5> + </row> + </customVariables> + <resolution>1024x768</resolution> + <plugins>flash, java</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>43</idVisit> + <visitIp>0.0.0.0</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://forum.piwik.org/register.php?0,approve=9a94a02145599</url> + <pageTitle>Piwik Forums</pageTitle> + <pageIdAction>31</pageIdAction> + + <pageId>50</pageId> + <customVariables> + <row> + <customVariablePageName1>HTTP-code</customVariablePageName1> + <customVariablePageValue1>200</customVariablePageValue1> + </row> + </customVariables> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>returning</visitorType> + <visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>1</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>444</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>0</visitDuration> + <visitDurationPretty>0s</visitDurationPretty> + <searches>0</searches> + <actions>1</actions> + <referrerType>website</referrerType> + <referrerTypeName>Websites</referrerTypeName> + <referrerName>sn110w.snt110.mail.live.com</referrerName> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://sn110w.snt110.mail.live.com/mail/InboxLight.aspx?n=184083971</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Windows XP</operatingSystem> + <operatingSystemName>Windows</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/WIN.gif</operatingSystemIcon> + <operatingSystemCode>WIN</operatingSystemCode> + <operatingSystemVersion>XP</operatingSystemVersion> + <browserFamily>WebKit</browserFamily> + <browserFamilyDescription>WebKit (Safari, Chrome)</browserFamilyDescription> + <browser>Chrome 11.0</browser> + <browserName>Chrome</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/CH.gif</browserIcon> + <browserCode>CH</browserCode> + <browserVersion>11.0</browserVersion> + <events>0</events> + <continent>Unknown</continent> + <continentCode>unk</continentCode> + <country>Unknown</country> + <countryCode>xx</countryCode> + <countryFlag>plugins/UserCountry/images/flags/xx.png</countryFlag> + <region /> + <regionCode /> + <city /> + <location>Unknown</location> + <latitude /> + <longitude /> + <visitLocalTime>08:00:47</visitLocalTime> + <visitLocalHour>8</visitLocalHour> + <daysSinceLastVisit>444</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName3>Forum status</customVariableName3> + <customVariableValue3>Anonymous</customVariableValue3> + </row> + </customVariables> + <resolution>1280x800</resolution> + <plugins>pdf, flash, java, director, windowsmedia, gears</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/pdf.gif</pluginIcon> + <pluginName>pdf</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/director.gif</pluginIcon> + <pluginName>director</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/windowsmedia.gif</pluginIcon> + <pluginName>windowsmedia</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/gears.gif</pluginIcon> + <pluginName>gears</pluginName> + </row> + </pluginsIcons> + + + + + + </row> + <row> + <idSite>3</idSite> + <idVisit>29</idVisit> + <visitIp>0.0.0.0</visitIp> + + <actionDetails> + <row> + <type>action</type> + <url>http://example.org/index.htm</url> + <pageTitle>Looking at Electronics & Cameras page with a page level custom variable</pageTitle> + <pageIdAction>29</pageIdAction> + + <pageId>32</pageId> + <customVariables> + <row> + <customVariablePageName5>_pkc</customVariablePageName5> + <customVariablePageValue5>Electronics & Cameras</customVariablePageValue5> + </row> + </customVariables> + <timeSpent>0</timeSpent> + <timeSpentPretty>0s</timeSpentPretty> + <icon /> + + </row> + <row> + <type>action</type> + <url>http://example.org/index.htm</url> + <pageTitle>Another Product page with no category</pageTitle> + <pageIdAction>29</pageIdAction> + + <pageId>51</pageId> + <customVariables> + <row> + <customVariablePageName3>_pks</customVariablePageName3> + <customVariablePageValue3>SKU VERY nice indeed</customVariablePageValue3> + </row> + <row> + <customVariablePageName4>_pkn</customVariablePageName4> + <customVariablePageValue4>PRODUCT name</customVariablePageValue4> + </row> + </customVariables> + <timeSpent>0</timeSpent> + <timeSpentPretty>0s</timeSpentPretty> + <icon /> + + </row> + <row> + <type>action</type> + <url>http://example.org/index.htm</url> + <pageTitle>Looking at Electronics & Cameras page with a page level custom variable</pageTitle> + <pageIdAction>29</pageIdAction> + + <pageId>52</pageId> + <customVariables> + <row> + <customVariablePageName5>_pkc</customVariablePageName5> + <customVariablePageValue5>Electronics & Cameras</customVariablePageValue5> + </row> + </customVariables> + <icon /> + + </row> + </actionDetails> + <goalConversions>0</goalConversions> + <siteCurrency>USD</siteCurrency> + <siteCurrencySymbol>$</siteCurrencySymbol> + + + + + <userId /> + <visitorType>new</visitorType> + <visitorTypeIcon /> + <visitConverted>0</visitConverted> + <visitConvertedIcon /> + <visitCount>1</visitCount> + + <visitEcommerceStatus>none</visitEcommerceStatus> + <visitEcommerceStatusIcon /> + <daysSinceFirstVisit>0</daysSinceFirstVisit> + <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder> + <visitDuration>1</visitDuration> + <visitDurationPretty>1s</visitDurationPretty> + <searches>0</searches> + <actions>3</actions> + <referrerType>website</referrerType> + <referrerTypeName>Websites</referrerTypeName> + <referrerName>piwik.org</referrerName> + <referrerKeyword /> + <referrerKeywordPosition /> + <referrerUrl>http://piwik.org/contribute%</referrerUrl> + <referrerSearchEngineUrl /> + <referrerSearchEngineIcon /> + <languageCode /> + <language>Unknown</language> + <deviceType>Desktop</deviceType> + <deviceTypeIcon>plugins/DevicesDetection/images/screens/normal.gif</deviceTypeIcon> + <deviceBrand>Unknown</deviceBrand> + <deviceModel /> + <operatingSystem>Mac 10.6</operatingSystem> + <operatingSystemName>Mac</operatingSystemName> + <operatingSystemIcon>plugins/DevicesDetection/images/os/MAC.gif</operatingSystemIcon> + <operatingSystemCode>MAC</operatingSystemCode> + <operatingSystemVersion>10.6</operatingSystemVersion> + <browserFamily>WebKit</browserFamily> + <browserFamilyDescription>WebKit (Safari, Chrome)</browserFamilyDescription> + <browser>Safari 5.0</browser> + <browserName>Safari</browserName> + <browserIcon>plugins/DevicesDetection/images/browsers/SF.gif</browserIcon> + <browserCode>SF</browserCode> + <browserVersion>5.0</browserVersion> + <events>0</events> + <continent>Unknown</continent> + <continentCode>unk</continentCode> + <country>Unknown</country> + <countryCode>xx</countryCode> + <countryFlag>plugins/UserCountry/images/flags/xx.png</countryFlag> + <region /> + <regionCode /> + <city /> + <location>Unknown</location> + <latitude /> + <longitude /> + <visitLocalTime>12:34:06</visitLocalTime> + <visitLocalHour>12</visitLocalHour> + <daysSinceLastVisit>0</daysSinceLastVisit> + <provider>Unknown</provider> + <providerName>Unknown</providerName> + <providerUrl /> + <customVariables> + <row> + <customVariableName5>VisitorType</customVariableName5> + <customVariableValue5>NewLoggedOut</customVariableValue5> + </row> + </customVariables> + <resolution>1024x768</resolution> + <plugins>flash, java</plugins> + <pluginsIcons> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/flash.gif</pluginIcon> + <pluginName>flash</pluginName> + </row> + <row> + <pluginIcon>plugins/DevicePlugins/images/plugins/java.gif</pluginIcon> + <pluginName>java</pluginName> + </row> + </pluginsIcons> + + + + + + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitFrequency.get_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitFrequency.get_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..31c9d4b1b5c1fa02d86e37dbcdb8630159c6d4b4 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitFrequency.get_range.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <nb_visits_returning>10</nb_visits_returning> + <nb_actions_returning>12</nb_actions_returning> + <nb_visits_converted_returning>0</nb_visits_converted_returning> + <bounce_count_returning>8</bounce_count_returning> + <sum_visit_length_returning>113</sum_visit_length_returning> + <max_actions_returning>2</max_actions_returning> + <bounce_rate_returning>80%</bounce_rate_returning> + <nb_actions_per_visit_returning>1.2</nb_actions_per_visit_returning> + <avg_time_on_site_returning>11</avg_time_on_site_returning> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsByDaysSinceLast_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsByDaysSinceLast_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..5f14888d16e9b4ad2664e7e704661aab141d34ae --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsByDaysSinceLast_range.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label>New visits</label> + <nb_visits>5</nb_visits> + </row> + <row> + <label>0 days</label> + <nb_visits>3</nb_visits> + </row> + <row> + <label>1 day</label> + <nb_visits>1</nb_visits> + </row> + <row> + <label>2 days</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>3 days</label> + <nb_visits>1</nb_visits> + </row> + <row> + <label>4 days</label> + <nb_visits>1</nb_visits> + </row> + <row> + <label>5 days</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>6 days</label> + <nb_visits>1</nb_visits> + </row> + <row> + <label>7 days</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>8-14 days</label> + <nb_visits>1</nb_visits> + </row> + <row> + <label>15-30 days</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>31-60 days</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>61-120 days</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>121-364 days</label> + <nb_visits>1</nb_visits> + </row> + <row> + <label>365+ days</label> + <nb_visits>1</nb_visits> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsByVisitCount_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsByVisitCount_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..f2c76ea6a263074e296d99984e5cb92ce48f3280 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsByVisitCount_range.xml @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label>1 visit</label> + <nb_visits>8</nb_visits> + <nb_visits_percentage>53%</nb_visits_percentage> + </row> + <row> + <label>2 visits</label> + <nb_visits>2</nb_visits> + <nb_visits_percentage>13%</nb_visits_percentage> + </row> + <row> + <label>3 visits</label> + <nb_visits>0</nb_visits> + <nb_visits_percentage>0%</nb_visits_percentage> + </row> + <row> + <label>4 visits</label> + <nb_visits>1</nb_visits> + <nb_visits_percentage>7%</nb_visits_percentage> + </row> + <row> + <label>5 visits</label> + <nb_visits>2</nb_visits> + <nb_visits_percentage>13%</nb_visits_percentage> + </row> + <row> + <label>6 visits</label> + <nb_visits>0</nb_visits> + <nb_visits_percentage>0%</nb_visits_percentage> + </row> + <row> + <label>7 visits</label> + <nb_visits>1</nb_visits> + <nb_visits_percentage>7%</nb_visits_percentage> + </row> + <row> + <label>8 visits</label> + <nb_visits>0</nb_visits> + <nb_visits_percentage>0%</nb_visits_percentage> + </row> + <row> + <label>9-14 visits</label> + <nb_visits>0</nb_visits> + <nb_visits_percentage>0%</nb_visits_percentage> + </row> + <row> + <label>15-25 visits</label> + <nb_visits>0</nb_visits> + <nb_visits_percentage>0%</nb_visits_percentage> + </row> + <row> + <label>26-50 visits</label> + <nb_visits>0</nb_visits> + <nb_visits_percentage>0%</nb_visits_percentage> + </row> + <row> + <label>51-100 visits</label> + <nb_visits>1</nb_visits> + <nb_visits_percentage>7%</nb_visits_percentage> + </row> + <row> + <label>101-200 visits</label> + <nb_visits>0</nb_visits> + <nb_visits_percentage>0%</nb_visits_percentage> + </row> + <row> + <label>201+ visits</label> + <nb_visits>0</nb_visits> + <nb_visits_percentage>0%</nb_visits_percentage> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsPerPage_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsPerPage_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..f1aca41008c71a319a72974272e1737d2da0482e --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsPerPage_range.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label>1 page</label> + <nb_visits>11</nb_visits> + </row> + <row> + <label>2 pages</label> + <nb_visits>2</nb_visits> + </row> + <row> + <label>3 pages</label> + <nb_visits>2</nb_visits> + </row> + <row> + <label>4 pages</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>5 pages</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>6-7 pages</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>8-10 pages</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>11-14 pages</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>15-20 pages</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>21+ pages</label> + <nb_visits>0</nb_visits> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsPerVisitDuration_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsPerVisitDuration_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..3dc34ea239cf73beddbcac180b06868a5a52c8b7 --- /dev/null +++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__VisitorInterest.getNumberOfVisitsPerVisitDuration_range.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" ?> +<result> + <row> + <label>0-10s</label> + <nb_visits>13</nb_visits> + </row> + <row> + <label>11-30s</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>31-60s</label> + <nb_visits>1</nb_visits> + </row> + <row> + <label>1-2 min</label> + <nb_visits>1</nb_visits> + </row> + <row> + <label>2-4 min</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>4-7 min</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>7-10 min</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>10-15 min</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>15-30 min</label> + <nb_visits>0</nb_visits> + </row> + <row> + <label>30+ min</label> + <nb_visits>0</nb_visits> + </row> +</result> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_withEnhancedAndLast7__MultiSites.getAll_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs_withEnhancedAndLast7__MultiSites.getAll_month.xml index 4ab55e378e30d181d4714da2489ce01b9fa32101..ddd44050a8e0d69f74d2b6ab2b0cf9274d76a9fa 100644 --- a/tests/PHPUnit/System/expected/test_ImportLogs_withEnhancedAndLast7__MultiSites.getAll_month.xml +++ b/tests/PHPUnit/System/expected/test_ImportLogs_withEnhancedAndLast7__MultiSites.getAll_month.xml @@ -17,6 +17,22 @@ <group /> <main_url>http://piwik.net</main_url> </row> + <row> + <label>Piwik test three</label> + <nb_visits>3</nb_visits> + <nb_actions>5</nb_actions> + <nb_pageviews>5</nb_pageviews> + <revenue>0</revenue> + <nb_conversions>0</nb_conversions> + <visits_evolution>100%</visits_evolution> + <actions_evolution>100%</actions_evolution> + <pageviews_evolution>100%</pageviews_evolution> + <revenue_evolution>0%</revenue_evolution> + <nb_conversions_evolution>0%</nb_conversions_evolution> + <idsite>3</idsite> + <group /> + <main_url>http://example-site-three.com</main_url> + </row> <row> <label>Piwik test two</label> <nb_visits>1</nb_visits> @@ -67,6 +83,22 @@ <group /> <main_url>http://example-site-two.com</main_url> </row> + <row> + <label>Piwik test three</label> + <nb_visits>0</nb_visits> + <nb_actions>0</nb_actions> + <nb_pageviews>0</nb_pageviews> + <revenue>0</revenue> + <nb_conversions>0</nb_conversions> + <visits_evolution>-100%</visits_evolution> + <actions_evolution>-100%</actions_evolution> + <pageviews_evolution>-100%</pageviews_evolution> + <revenue_evolution>0%</revenue_evolution> + <nb_conversions_evolution>0%</nb_conversions_evolution> + <idsite>3</idsite> + <group /> + <main_url>http://example-site-three.com</main_url> + </row> </result> <result date="2012-10"> <row> @@ -101,6 +133,22 @@ <group /> <main_url>http://example-site-two.com</main_url> </row> + <row> + <label>Piwik test three</label> + <nb_visits>0</nb_visits> + <nb_actions>0</nb_actions> + <nb_pageviews>0</nb_pageviews> + <revenue>0</revenue> + <nb_conversions>0</nb_conversions> + <visits_evolution>0%</visits_evolution> + <actions_evolution>0%</actions_evolution> + <pageviews_evolution>0%</pageviews_evolution> + <revenue_evolution>0%</revenue_evolution> + <nb_conversions_evolution>0%</nb_conversions_evolution> + <idsite>3</idsite> + <group /> + <main_url>http://example-site-three.com</main_url> + </row> </result> <result date="2012-11"> <row> @@ -135,6 +183,22 @@ <group /> <main_url>http://example-site-two.com</main_url> </row> + <row> + <label>Piwik test three</label> + <nb_visits>0</nb_visits> + <nb_actions>0</nb_actions> + <nb_pageviews>0</nb_pageviews> + <revenue>0</revenue> + <nb_conversions>0</nb_conversions> + <visits_evolution>0%</visits_evolution> + <actions_evolution>0%</actions_evolution> + <pageviews_evolution>0%</pageviews_evolution> + <revenue_evolution>0%</revenue_evolution> + <nb_conversions_evolution>0%</nb_conversions_evolution> + <idsite>3</idsite> + <group /> + <main_url>http://example-site-three.com</main_url> + </row> </result> <result date="2012-12"> <row> @@ -169,6 +233,22 @@ <group /> <main_url>http://example-site-two.com</main_url> </row> + <row> + <label>Piwik test three</label> + <nb_visits>0</nb_visits> + <nb_actions>0</nb_actions> + <nb_pageviews>0</nb_pageviews> + <revenue>0</revenue> + <nb_conversions>0</nb_conversions> + <visits_evolution>0%</visits_evolution> + <actions_evolution>0%</actions_evolution> + <pageviews_evolution>0%</pageviews_evolution> + <revenue_evolution>0%</revenue_evolution> + <nb_conversions_evolution>0%</nb_conversions_evolution> + <idsite>3</idsite> + <group /> + <main_url>http://example-site-three.com</main_url> + </row> </result> <result date="2013-01"> <row> @@ -203,6 +283,22 @@ <group /> <main_url>http://example-site-two.com</main_url> </row> + <row> + <label>Piwik test three</label> + <nb_visits>0</nb_visits> + <nb_actions>0</nb_actions> + <nb_pageviews>0</nb_pageviews> + <revenue>0</revenue> + <nb_conversions>0</nb_conversions> + <visits_evolution>0%</visits_evolution> + <actions_evolution>0%</actions_evolution> + <pageviews_evolution>0%</pageviews_evolution> + <revenue_evolution>0%</revenue_evolution> + <nb_conversions_evolution>0%</nb_conversions_evolution> + <idsite>3</idsite> + <group /> + <main_url>http://example-site-three.com</main_url> + </row> </result> <result date="2013-02"> <row> @@ -237,5 +333,21 @@ <group /> <main_url>http://example-site-two.com</main_url> </row> + <row> + <label>Piwik test three</label> + <nb_visits>0</nb_visits> + <nb_actions>0</nb_actions> + <nb_pageviews>0</nb_pageviews> + <revenue>0</revenue> + <nb_conversions>0</nb_conversions> + <visits_evolution>0%</visits_evolution> + <actions_evolution>0%</actions_evolution> + <pageviews_evolution>0%</pageviews_evolution> + <revenue_evolution>0%</revenue_evolution> + <nb_conversions_evolution>0%</nb_conversions_evolution> + <idsite>3</idsite> + <group /> + <main_url>http://example-site-three.com</main_url> + </row> </result> </results> \ No newline at end of file diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml index 2f9c04a59cb6501305f9b302811f85c48d068015..9a62e63315085833b94c00ff8ad8ee7e0a75a1a6 100644 --- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml +++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml @@ -171,51 +171,51 @@ <result prettyDate="Tuesday 5 January 2010"> <row> - <idsubdatatable>17180</idsubdatatable> + <idsubdatatable>17264</idsubdatatable> </row> <row> - <idsubdatatable>17179</idsubdatatable> + <idsubdatatable>17263</idsubdatatable> </row> </result> <result prettyDate="Wednesday 6 January 2010"> <row> - <idsubdatatable>17184</idsubdatatable> + <idsubdatatable>17268</idsubdatatable> </row> <row> - <idsubdatatable>17183</idsubdatatable> + <idsubdatatable>17267</idsubdatatable> </row> </result> <result prettyDate="Thursday 7 January 2010"> <row> - <idsubdatatable>17188</idsubdatatable> + <idsubdatatable>17272</idsubdatatable> </row> <row> - <idsubdatatable>17187</idsubdatatable> + <idsubdatatable>17271</idsubdatatable> </row> </result> <result prettyDate="Friday 8 January 2010"> <row> - <idsubdatatable>17192</idsubdatatable> + <idsubdatatable>17276</idsubdatatable> </row> <row> - <idsubdatatable>17191</idsubdatatable> + <idsubdatatable>17275</idsubdatatable> </row> </result> <result prettyDate="Saturday 9 January 2010"> <row> - <idsubdatatable>17196</idsubdatatable> + <idsubdatatable>17280</idsubdatatable> </row> <row> - <idsubdatatable>17195</idsubdatatable> + <idsubdatatable>17279</idsubdatatable> </row> </result> </reportMetadata> diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Referrers.getWebsites_firstSite_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Referrers.getWebsites_firstSite_lastN__API.getProcessedReport_day.xml index fc34b04bc86200c89747e83b51132bf44109ac52..fc67ca9f060c1dae3b5ba4f86f51a3131e602028 100644 --- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Referrers.getWebsites_firstSite_lastN__API.getProcessedReport_day.xml +++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Referrers.getWebsites_firstSite_lastN__API.getProcessedReport_day.xml @@ -115,14 +115,14 @@ <row> <segment>referrerName==referrer.com</segment> - <idsubdatatable>17131</idsubdatatable> + <idsubdatatable>17215</idsubdatatable> </row> </result> <result prettyDate="Monday 4 January 2010"> <row> <segment>referrerName==referrer.com</segment> - <idsubdatatable>17133</idsubdatatable> + <idsubdatatable>17217</idsubdatatable> </row> </result> <result prettyDate="Tuesday 5 January 2010" /> @@ -132,14 +132,14 @@ <row> <segment>referrerName==referrer.com</segment> - <idsubdatatable>17138</idsubdatatable> + <idsubdatatable>17222</idsubdatatable> </row> </result> <result prettyDate="Saturday 9 January 2010"> <row> <segment>referrerName==referrer.com</segment> - <idsubdatatable>17140</idsubdatatable> + <idsubdatatable>17224</idsubdatatable> </row> </result> </reportMetadata> diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml index b51ff58d3065e23ddb42eecbf4285d45186bfb49..463adff33902d8f4c65d90d76668a751019bb28a 100644 --- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml +++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml @@ -198,7 +198,7 @@ <category>Visit</category> <name>Visit ID</name> <segment>visitId</segment> - <acceptedValues>Any integer. </acceptedValues> + <acceptedValues>Any integer.</acceptedValues> <permission>1</permission> </row> <row> diff --git a/tests/PHPUnit/Unit/AssetManager/PluginMock.php b/tests/PHPUnit/Unit/AssetManager/PluginMock.php index c29c03dd67ac42203fe5ec3ab8855c9bf45b12a7..9755facf49a5b8e3f6cdf940cace4a0866254dea 100644 --- a/tests/PHPUnit/Unit/AssetManager/PluginMock.php +++ b/tests/PHPUnit/Unit/AssetManager/PluginMock.php @@ -45,7 +45,7 @@ class PluginMock extends Plugin $this->pluginName = $name; } - public function getListHooksRegistered() + public function registerEvents() { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', diff --git a/tests/PHPUnit/Unit/ConfigTest.php b/tests/PHPUnit/Unit/ConfigTest.php index 9121c6608b9429f405d862d582dbaab6d4c9f2e2..d92e1525b61d5e68216f5906f5d1aab5999c77cc 100644 --- a/tests/PHPUnit/Unit/ConfigTest.php +++ b/tests/PHPUnit/Unit/ConfigTest.php @@ -378,7 +378,9 @@ class ConfigTest extends \PHPUnit_Framework_TestCase $sourceConfigFile = PIWIK_INCLUDE_PATH . '/tests/resources/Config/config.ini.php'; $configFile = PIWIK_INCLUDE_PATH . '/tmp/tmp.config.ini.php'; - @unlink($configFile); + if(file_exists($configFile)){ + @unlink($configFile); + } copy($sourceConfigFile, $configFile); $config = new Config(new GlobalSettingsProvider($sourceConfigFile, $configFile)); @@ -386,7 +388,9 @@ class ConfigTest extends \PHPUnit_Framework_TestCase $this->assertEquals(file_get_contents($sourceConfigFile), file_get_contents($configFile)); - @unlink($configFile); + if(file_exists($configFile)){ + @unlink($configFile); + } } public function testFromGlobalConfig() diff --git a/tests/PHPUnit/Unit/DateTest.php b/tests/PHPUnit/Unit/DateTest.php index dadbba646183858abc58aa5d3d0dfb37812541c6..ba18ce1e709ede70b455a21f63ad885a0b283456 100644 --- a/tests/PHPUnit/Unit/DateTest.php +++ b/tests/PHPUnit/Unit/DateTest.php @@ -265,6 +265,23 @@ class DateTest extends \PHPUnit_Framework_TestCase $this->assertEquals($dateExpected->getTimestamp(), $date->getTimestamp()); } + /** + * @group Core + */ + public function testSubSeconds() + { + $date = Date::factory('2010-03-01 00:01:25'); + $dateExpected = Date::factory('2010-03-01 00:00:54'); + + $date = $date->subSeconds(31); + $this->assertSame($dateExpected->getTimestamp(), $date->getTimestamp()); + + $date = Date::factory('2010-03-01 00:01:25'); + $dateExpected = Date::factory('2010-03-01 00:01:36'); + $date = $date->subSeconds(-11); + $this->assertSame($dateExpected->getTimestamp(), $date->getTimestamp()); + } + /** * @group Core */ diff --git a/tests/PHPUnit/Unit/DeprecatedMethodsTest.php b/tests/PHPUnit/Unit/DeprecatedMethodsTest.php index a35a260b7c30017e2b937c0b74f5488ee41df2cd..442280cb8ddce81cab6a3d5c4ca6c44d7c195e58 100644 --- a/tests/PHPUnit/Unit/DeprecatedMethodsTest.php +++ b/tests/PHPUnit/Unit/DeprecatedMethodsTest.php @@ -69,6 +69,7 @@ class DeprecatedMethodsTest extends \PHPUnit_Framework_TestCase $this->assertDeprecatedMethodIsRemovedInPiwik3('\Piwik\Menu\MenuAbstract', 'add'); $this->assertDeprecatedMethodIsRemovedInPiwik3('\Piwik\Archive', 'getDataTableFromArchive'); + $this->assertDeprecatedMethodIsRemovedInPiwik3('\Piwik\Plugin', 'getListHooksRegistered'); } private function assertDeprecatedMethodIsRemoved($className, $method, $removalDate) diff --git a/tests/PHPUnit/Unit/Metrics/FormatterTest.php b/tests/PHPUnit/Unit/Metrics/FormatterTest.php index 36def63bb14ee1ea24c9796a597b52bec95f34a1..f0f1e618a9e84ec6456dfe1ef3ed3080ed4bed80 100644 --- a/tests/PHPUnit/Unit/Metrics/FormatterTest.php +++ b/tests/PHPUnit/Unit/Metrics/FormatterTest.php @@ -74,7 +74,7 @@ class FormatterTest extends \PHPUnit_Framework_TestCase */ public function test_getPrettyNumber_ReturnsCorrectResult_WhenLocaleIsEuropean($number, $expected) { - $locale = setlocale(LC_ALL, array('de', 'de_DE', 'ge', 'de_DE.utf8')); + $locale = setlocale(LC_ALL, array('de-AT', 'de_DE', 'de', 'ge', 'de_DE.utf8')); if (empty($locale)) { $this->markTestSkipped("de_DE locale is not present on this system"); } @@ -112,7 +112,7 @@ class FormatterTest extends \PHPUnit_Framework_TestCase */ public function test_getPrettyTimeFromSeconds_ReturnsCorrectResult($seconds, $expected) { - if (($seconds * 100) > PHP_INT_MAX) { + if (($seconds * 100) > PHP_INT_MAX || ($seconds * 100 * -1) > PHP_INT_MAX) { $this->markTestSkipped("Will not pass on 32-bit machine."); } diff --git a/tests/PHPUnit/Unit/UrlHelperTest.php b/tests/PHPUnit/Unit/UrlHelperTest.php index 8ae396d7dfa536685185877bc834b3fe3ba115d6..49c33cc0df22d1d377aba1731bfc5fc29b283985 100644 --- a/tests/PHPUnit/Unit/UrlHelperTest.php +++ b/tests/PHPUnit/Unit/UrlHelperTest.php @@ -1,262 +1,262 @@ -<?php -/** - * Piwik - free/libre analytics platform - * - * @link http://piwik.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */ - -namespace Piwik\Tests\Unit; - -use Piwik\Tests\Framework\TestCase\SystemTestCase; -use Piwik\UrlHelper; -use Spyc; - -class UrlHelperTest extends \PHPUnit_Framework_TestCase -{ - /** - * Dataprovider for testIsUrl - */ - public function getUrls() - { - return array( - // valid urls - array('http://piwik.org', true), - array('http://www.piwik.org', true), - array('https://piwik.org', true), - array('https://piwik.org/dir/dir2/?oeajkgea7aega=&ge=a', true), - array('ftp://www.pi-wik.org', true), - array('news://www.pi-wik.org', true), - array('https://www.tëteâ.org', true), - array('http://汉è¯/漢語.cn', true), //chinese - - // valid network-path reference RFC3986 - array('//piwik.org', true), - array('//piwik/hello?world=test&test', true), - array('//piwik.org/hello?world=test&test', true), - - // invalid urls - array('it doesnt look like url', false), - array('/index?page=test', false), - array('http:/index?page=test', false), - array('http/index?page=test', false), - array('test.html', false), - array('/\/\/\/\/\/\\\http://test.com////', false), - array('jmleslangues.php', false), - array('http://', false), - array(' http://', false), - array('testhttp://test.com', false), - ); - } - - /** - * @dataProvider getUrls - * @group Core - */ - public function testIsUrl($url, $isValid) - { - $this->assertEquals($isValid, UrlHelper::isLookLikeUrl($url), "$url failed test"); - } - - /** - * Dataprovider for testGetParameterFromQueryString - */ - public function getQueryStrings() - { - return array( // querystring, parameter, expected value - array('x=1', 'x', '1'), - array('?x=1', 'x', '1'), - array('?x=y==1', 'x', 'y==1'), - array('x[]=', 'x', array('')), - array('x[]=1', 'x', array('1')), - array('x[]=y==1', 'x', array('y==1')), - array('?x[]=1&x[]=2', 'x', array('1', '2')), - array('?x%5b%5d=3&x[]=4', 'x', array('3', '4')), - array('?x%5B]=5&x[%5D=6', 'x', array('5', '6')), - array('toto=mama&mama=&tuytyt=teaoi&toto=mama second value', 'tuytyt', 'teaoi'), - - // don't unescape the value, otherwise it becomes - // ?x[]=A&y=1 - array('?x%5B%5D=A%26y%3D1', 'x', array('A%26y%3D1')), - // ?z=y&x[]=1 - array('?z=y%26x%5b%5d%3d1', 'x', null), - - // strange characters - array('toto=mama&mama=&tuytyt=ПоиÑк в Интернете ПоиÑк Ñтраниц на руÑÑком _*()!$!£$^!£$%&toto=mama second value', 'tuytyt', 'ПоиÑк в Интернете ПоиÑк Ñтраниц на руÑÑком _*()!$!£$^!£$%'), - - // twice the parameter => returns the last value in the url - array('toto=mama&mama=&tuytyt=teaoi&toto=mama second value', 'toto', 'mama second value'), - - // empty param - array('toto=mama&mama=&tuytyt=teaoi', 'mama', ''), - - // missing parameter value => returns false - array('x', 'x', false), - array('toto=mama&mama&tuytyt=teaoi', 'mama', false), - - // param not found => null - array('toto=mama&mama=titi', 'tot', null), - - // empty query string => null - array('', 'test', null), - ); - } - - /** - * @dataProvider getQueryStrings - * @group Core - */ - public function testGetParameterFromQueryString($queryString, $parameter, $expected) - { - $this->assertSame($expected, UrlHelper::getParameterFromQueryString($queryString, $parameter)); - } - - /** - * @group Core - */ - public function testGetPathAndQueryFromUrl() - { - $this->assertEquals('test/index.php?module=CoreHome', UrlHelper::getPathAndQueryFromUrl('http://piwik.org/test/index.php?module=CoreHome')); - } - - /** - * @group Core - */ - public function testGetPathAndQueryFromNonUrl() - { - $this->assertEquals('Others', UrlHelper::getPathAndQueryFromUrl('Others')); - } - - /** - * @group Core - */ - public function testGetArrayFromQueryString() - { - $expected = array( - 'a' => false, - 'b' => '', - 'c' => '1', - 'd' => array(false), - 'e' => array(''), - 'f' => array('a'), - 'g' => array('b', 'c'), - ); - $this->assertEquals(serialize($expected), serialize(UrlHelper::getArrayFromQueryString('a&b=&c=1&d[]&e[]=&f[]=a&g[]=b&g[]=c'))); - } - - /** - * Dataprovider for testExtractSearchEngineInformationFromUrl - */ - public function getSearchEngineUrls() - { - return Spyc::YAMLLoad(PIWIK_PATH_TEST_TO_ROOT .'/tests/resources/extractSearchEngineInformationFromUrlTests.yml'); - } - - /** - * @dataProvider getSearchEngineUrls - * @group Core - */ - public function testExtractSearchEngineInformationFromUrl($url, $engine, $keywords) - { - $this->includeDataFilesForSearchEngineTest(); - $returnedValue = UrlHelper::extractSearchEngineInformationFromUrl($url); - - $exptectedValue = false; - - if (!empty($engine)) { - $exptectedValue = array('name' => $engine, 'keywords' => $keywords); - } - - $this->assertEquals($exptectedValue, $returnedValue); - } - - /** - * Dataprovider for testGetLossyUrl - */ - public function getLossyUrls() - { - return array( - array('example.com', 'example.com'), - array('m.example.com', 'example.com'), - array('www.example.com', 'example.com'), - array('search.example.com', 'example.com'), - array('example.ca', 'example.{}'), - array('us.example.com', '{}.example.com'), - array('www.m.example.ca', 'example.{}'), - array('www.google.com.af', 'google.{}'), - array('www.google.co.uk', 'google.{}'), - array('images.de.ask.com', 'images.{}.ask.com'), - ); - } - - /** - * @dataProvider getLossyUrls - * @group Core - */ - public function testGetLossyUrl($input, $expected) - { - $this->assertEquals($expected, UrlHelper::getLossyUrl($input)); - } - - private function includeDataFilesForSearchEngineTest() - { - include "DataFiles/SearchEngines.php"; - } - - /** - * @group Core - */ - public function test_getHostFromUrl() - { - $this->assertEquals('', UrlHelper::getHostFromUrl('')); - $this->assertEquals('', UrlHelper::getHostFromUrl(null)); - $this->assertEquals('localhost', UrlHelper::getHostFromUrl('http://localhost')); - $this->assertEquals('localhost', UrlHelper::getHostFromUrl('http://localhost/path')); - $this->assertEquals('localhost', UrlHelper::getHostFromUrl('localhost/path')); - $this->assertEquals('sub.localhost', UrlHelper::getHostFromUrl('sub.localhost/path')); - $this->assertEquals('sub.localhost', UrlHelper::getHostFromUrl('http://sub.localhost/path/?query=test')); - - if(SystemTestCase::isPhpVersion53()) { - //parse_url was fixed in 5,4,7 - // Fixed host recognition when scheme is omitted and a leading component separator is present. - // http://php.net/parse_url - return; - } - - $this->assertEquals('localhost', UrlHelper::getHostFromUrl('//localhost/path')); - $this->assertEquals('localhost', UrlHelper::getHostFromUrl('//localhost/path?test=test2')); - $this->assertEquals('example.org', UrlHelper::getHostFromUrl('//example.org/path')); - $this->assertEquals('example.org', UrlHelper::getHostFromUrl('//example.org/path?test=test2')); - - } - - /** - * @group Core - */ - public function test_getQueryFromUrl_ShouldReturnEmtpyString_IfNoQuery() - { - $this->assertEquals('', UrlHelper::getQueryFromUrl('', array())); - $this->assertEquals('', UrlHelper::getQueryFromUrl(null, array())); - $this->assertEquals('', UrlHelper::getQueryFromUrl('http://localhost/path', array())); - } - - /** - * @group Core - */ - public function test_getQueryFromUrl_ShouldReturnOnlyTheQueryPartOfTheUrl_IfNoAdditionalParamsGiven() - { - $this->assertEquals('foo=bar&foo2=bar2&test[]=1', UrlHelper::getQueryFromUrl('http://example.com/?foo=bar&foo2=bar2&test[]=1', array())); - $this->assertEquals('foo=bar&foo2=bar2&test[]=1', UrlHelper::getQueryFromUrl('/?foo=bar&foo2=bar2&test[]=1', array())); - $this->assertEquals('segment=pageTitle!@%40Hello%20World;pageTitle!@Peace%20Love%20', UrlHelper::getQueryFromUrl('/?segment=pageTitle!@%40Hello%20World;pageTitle!@Peace%20Love%20', array())); - } - - /** - * @group Core - */ - public function test_getQueryFromUrl_ShouldAddAdditionalParams_IfGiven() - { - $this->assertEquals('foo=bar&foo2=bar2&test[]=1&add=foo', UrlHelper::getQueryFromUrl('http://example.com/?foo=bar&foo2=bar2&test[]=1', array('add' => 'foo'))); - $this->assertEquals('add=foo', UrlHelper::getQueryFromUrl('/', array('add' => 'foo'))); - $this->assertEquals('add[]=foo&add[]=test', UrlHelper::getQueryFromUrl('/', array('add' => array('foo', 'test')))); - } +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Tests\Unit; + +use Piwik\Tests\Framework\TestCase\SystemTestCase; +use Piwik\UrlHelper; +use Spyc; + +class UrlHelperTest extends \PHPUnit_Framework_TestCase +{ + /** + * Dataprovider for testIsUrl + */ + public function getUrls() + { + return array( + // valid urls + array('http://piwik.org', true), + array('http://www.piwik.org', true), + array('https://piwik.org', true), + array('https://piwik.org/dir/dir2/?oeajkgea7aega=&ge=a', true), + array('ftp://www.pi-wik.org', true), + array('news://www.pi-wik.org', true), + array('https://www.tëteâ.org', true), + array('http://汉è¯/漢語.cn', true), //chinese + + // valid network-path reference RFC3986 + array('//piwik.org', true), + array('//piwik/hello?world=test&test', true), + array('//piwik.org/hello?world=test&test', true), + + // invalid urls + array('it doesnt look like url', false), + array('/index?page=test', false), + array('http:/index?page=test', false), + array('http/index?page=test', false), + array('test.html', false), + array('/\/\/\/\/\/\\\http://test.com////', false), + array('jmleslangues.php', false), + array('http://', false), + array(' http://', false), + array('testhttp://test.com', false), + ); + } + + /** + * @dataProvider getUrls + * @group Core + */ + public function testIsUrl($url, $isValid) + { + $this->assertEquals($isValid, UrlHelper::isLookLikeUrl($url), "$url failed test"); + } + + /** + * Dataprovider for testGetParameterFromQueryString + */ + public function getQueryStrings() + { + return array( // querystring, parameter, expected value + array('x=1', 'x', '1'), + array('?x=1', 'x', '1'), + array('?x=y==1', 'x', 'y==1'), + array('x[]=', 'x', array('')), + array('x[]=1', 'x', array('1')), + array('x[]=y==1', 'x', array('y==1')), + array('?x[]=1&x[]=2', 'x', array('1', '2')), + array('?x%5b%5d=3&x[]=4', 'x', array('3', '4')), + array('?x%5B]=5&x[%5D=6', 'x', array('5', '6')), + array('toto=mama&mama=&tuytyt=teaoi&toto=mama second value', 'tuytyt', 'teaoi'), + + // don't unescape the value, otherwise it becomes + // ?x[]=A&y=1 + array('?x%5B%5D=A%26y%3D1', 'x', array('A%26y%3D1')), + // ?z=y&x[]=1 + array('?z=y%26x%5b%5d%3d1', 'x', null), + + // strange characters + array('toto=mama&mama=&tuytyt=ПоиÑк в Интернете ПоиÑк Ñтраниц на руÑÑком _*()!$!£$^!£$%&toto=mama second value', 'tuytyt', 'ПоиÑк в Интернете ПоиÑк Ñтраниц на руÑÑком _*()!$!£$^!£$%'), + + // twice the parameter => returns the last value in the url + array('toto=mama&mama=&tuytyt=teaoi&toto=mama second value', 'toto', 'mama second value'), + + // empty param + array('toto=mama&mama=&tuytyt=teaoi', 'mama', ''), + + // missing parameter value => returns false + array('x', 'x', false), + array('toto=mama&mama&tuytyt=teaoi', 'mama', false), + + // param not found => null + array('toto=mama&mama=titi', 'tot', null), + + // empty query string => null + array('', 'test', null), + ); + } + + /** + * @dataProvider getQueryStrings + * @group Core + */ + public function testGetParameterFromQueryString($queryString, $parameter, $expected) + { + $this->assertSame($expected, UrlHelper::getParameterFromQueryString($queryString, $parameter)); + } + + /** + * @group Core + */ + public function testGetPathAndQueryFromUrl() + { + $this->assertEquals('test/index.php?module=CoreHome', UrlHelper::getPathAndQueryFromUrl('http://piwik.org/test/index.php?module=CoreHome')); + } + + /** + * @group Core + */ + public function testGetPathAndQueryFromNonUrl() + { + $this->assertEquals('Others', UrlHelper::getPathAndQueryFromUrl('Others')); + } + + /** + * @group Core + */ + public function testGetArrayFromQueryString() + { + $expected = array( + 'a' => false, + 'b' => '', + 'c' => '1', + 'd' => array(false), + 'e' => array(''), + 'f' => array('a'), + 'g' => array('b', 'c'), + ); + $this->assertEquals(serialize($expected), serialize(UrlHelper::getArrayFromQueryString('a&b=&c=1&d[]&e[]=&f[]=a&g[]=b&g[]=c'))); + } + + /** + * Dataprovider for testExtractSearchEngineInformationFromUrl + */ + public function getSearchEngineUrls() + { + return Spyc::YAMLLoad(PIWIK_PATH_TEST_TO_ROOT .'/tests/resources/extractSearchEngineInformationFromUrlTests.yml'); + } + + /** + * @dataProvider getSearchEngineUrls + * @group Core + */ + public function testExtractSearchEngineInformationFromUrl($url, $engine, $keywords) + { + $this->includeDataFilesForSearchEngineTest(); + $returnedValue = UrlHelper::extractSearchEngineInformationFromUrl($url); + + $exptectedValue = false; + + if (!empty($engine)) { + $exptectedValue = array('name' => $engine, 'keywords' => $keywords); + } + + $this->assertEquals($exptectedValue, $returnedValue); + } + + /** + * Dataprovider for testGetLossyUrl + */ + public function getLossyUrls() + { + return array( + array('example.com', 'example.com'), + array('m.example.com', 'example.com'), + array('www.example.com', 'example.com'), + array('search.example.com', 'example.com'), + array('example.ca', 'example.{}'), + array('us.example.com', '{}.example.com'), + array('www.m.example.ca', 'example.{}'), + array('www.google.com.af', 'google.{}'), + array('www.google.co.uk', 'google.{}'), + array('images.de.ask.com', 'images.{}.ask.com'), + ); + } + + /** + * @dataProvider getLossyUrls + * @group Core + */ + public function testGetLossyUrl($input, $expected) + { + $this->assertEquals($expected, UrlHelper::getLossyUrl($input)); + } + + private function includeDataFilesForSearchEngineTest() + { + include "DataFiles/SearchEngines.php"; + } + + /** + * @group Core + */ + public function test_getHostFromUrl() + { + $this->assertEquals('', UrlHelper::getHostFromUrl('')); + $this->assertEquals('', UrlHelper::getHostFromUrl(null)); + $this->assertEquals('localhost', UrlHelper::getHostFromUrl('http://localhost')); + $this->assertEquals('localhost', UrlHelper::getHostFromUrl('http://localhost/path')); + $this->assertEquals('localhost', UrlHelper::getHostFromUrl('localhost/path')); + $this->assertEquals('sub.localhost', UrlHelper::getHostFromUrl('sub.localhost/path')); + $this->assertEquals('sub.localhost', UrlHelper::getHostFromUrl('http://sub.localhost/path/?query=test')); + + if(SystemTestCase::isPhpVersion53()) { + //parse_url was fixed in 5,4,7 + // Fixed host recognition when scheme is omitted and a leading component separator is present. + // http://php.net/parse_url + return; + } + + $this->assertEquals('localhost', UrlHelper::getHostFromUrl('//localhost/path')); + $this->assertEquals('localhost', UrlHelper::getHostFromUrl('//localhost/path?test=test2')); + $this->assertEquals('example.org', UrlHelper::getHostFromUrl('//example.org/path')); + $this->assertEquals('example.org', UrlHelper::getHostFromUrl('//example.org/path?test=test2')); + + } + + /** + * @group Core + */ + public function test_getQueryFromUrl_ShouldReturnEmtpyString_IfNoQuery() + { + $this->assertEquals('', UrlHelper::getQueryFromUrl('', array())); + $this->assertEquals('', UrlHelper::getQueryFromUrl(null, array())); + $this->assertEquals('', UrlHelper::getQueryFromUrl('http://localhost/path', array())); + } + + /** + * @group Core + */ + public function test_getQueryFromUrl_ShouldReturnOnlyTheQueryPartOfTheUrl_IfNoAdditionalParamsGiven() + { + $this->assertEquals('foo=bar&foo2=bar2&test[]=1', UrlHelper::getQueryFromUrl('http://example.com/?foo=bar&foo2=bar2&test[]=1', array())); + $this->assertEquals('foo=bar&foo2=bar2&test[]=1', UrlHelper::getQueryFromUrl('/?foo=bar&foo2=bar2&test[]=1', array())); + $this->assertEquals('segment=pageTitle!@%40Hello%20World;pageTitle!@Peace%20Love%20', UrlHelper::getQueryFromUrl('/?segment=pageTitle!@%40Hello%20World;pageTitle!@Peace%20Love%20', array())); + } + + /** + * @group Core + */ + public function test_getQueryFromUrl_ShouldAddAdditionalParams_IfGiven() + { + $this->assertEquals('foo=bar&foo2=bar2&test[]=1&add=foo', UrlHelper::getQueryFromUrl('http://example.com/?foo=bar&foo2=bar2&test[]=1', array('add' => 'foo'))); + $this->assertEquals('add=foo', UrlHelper::getQueryFromUrl('/', array('add' => 'foo'))); + $this->assertEquals('add[]=foo&add[]=test', UrlHelper::getQueryFromUrl('/', array('add' => array('foo', 'test')))); + } } \ No newline at end of file diff --git a/tests/README.md b/tests/README.md index 555f07c5dea5ae4622210ee24e37b24a4477e4d6..aaa18d6d340865c053beb503b66261b02fa0c093 100644 --- a/tests/README.md +++ b/tests/README.md @@ -15,19 +15,7 @@ The next section explains how you can run the test suite on your own dev machine ## How To Run Piwik Tests -To run tests, you must use the Git master. Tests files are not in the Piwik zip archive. - -You can get the latest Git revision at: http://github.com/piwik/piwik - -``` -$ git clone https://github.com/piwik/piwik.git -``` - -Next install Composer which will lets you download the libraries used in Piwik: -``` -$ curl -sS https://getcomposer.org/installer | php -$ php composer.phar install -``` +To run tests, you must install Piwik via Git and set it up for development. A guide for this is available in our [Developer Zone](http://developer.piwik.org/guides/getting-started-part-1). The part about "Creating a plugin" can be skipped. To execute the tests: diff --git a/tests/UI/expected-ui-screenshots b/tests/UI/expected-ui-screenshots index 843831ccec6291107788b75abb1fd3809e435b2d..60822e3689672bfd534c2ec26d21e676e77be41f 160000 --- a/tests/UI/expected-ui-screenshots +++ b/tests/UI/expected-ui-screenshots @@ -1 +1 @@ -Subproject commit 843831ccec6291107788b75abb1fd3809e435b2d +Subproject commit 60822e3689672bfd534c2ec26d21e676e77be41f diff --git a/tests/UI/specs/Menus_spec.js b/tests/UI/specs/Menus_spec.js index b9ccf03ff9a2a5adfd9b968c402842a10c17b90e..d3fe6720c0ff95643b4612a3e4c5c96cb4e4df67 100644 --- a/tests/UI/specs/Menus_spec.js +++ b/tests/UI/specs/Menus_spec.js @@ -23,13 +23,13 @@ describe("Menus", function () { it('should change the menu when a upper menu item is clicked in the main menu', function (done) { expect.screenshot('mainmenu_upper_clicked').to.be.captureSelector('.Menu--dashboard,.nav_sep', function (page) { - page.click('#VisitsSummary>a'); + page.click('.Menu-tabList > li:eq(1) > a'); }, done); }); it('should change the menu when a lower menu item is clicked in the main menu', function (done) { expect.screenshot('mainmenu_lower_clicked').to.be.captureSelector('.Menu--dashboard,.nav_sep', function (page) { - page.click('#Live_indexVisitorLog>a'); + page.click('.Menu-tabList > li:eq(1) > ul > li:eq(1) > a'); }, done); }); diff --git a/tests/UI/specs/OptOutForm_spec.js b/tests/UI/specs/OptOutForm_spec.js index f703eb4139a31b6c4d7b3aa842c33fa0f804d2a9..493b74b20c34bb9d2497fe02b4a4154717a505ad 100644 --- a/tests/UI/specs/OptOutForm_spec.js +++ b/tests/UI/specs/OptOutForm_spec.js @@ -53,6 +53,7 @@ describe("OptOutForm", function () { page.evaluate(function () { $('iframe#optOutIframe').contents().find('input#trackVisits').click(); }); + page.wait(1000); // wait for iframe to reload page.load(siteUrl); // reload to check that cookie was set }, done); }); diff --git a/tests/javascript/index.php b/tests/javascript/index.php index 8c5179f77f2b0c4457822183a78b7c656167aecc..2664cb9239345da228d1a304676e8e883b3d2e88 100644 --- a/tests/javascript/index.php +++ b/tests/javascript/index.php @@ -1926,7 +1926,7 @@ function PiwikTest() { }); test("API methods", function() { - expect(65); + expect(66); equal( typeof Piwik.addPlugin, 'function', 'addPlugin' ); equal( typeof Piwik.getTracker, 'function', 'getTracker' ); @@ -1997,6 +1997,7 @@ function PiwikTest() { equal( typeof tracker.trackContentImpressionsWithinNode, 'function', 'trackContentImpressionsWithinNode' ); equal( typeof tracker.trackContentInteraction, 'function', 'trackContentInteraction' ); equal( typeof tracker.trackContentInteractionNode, 'function', 'trackContentInteractionNode' ); + equal( typeof tracker.logAllContentBlocksOnPage, 'function', 'logAllContentBlocksOnPage' ); // ecommerce equal( typeof tracker.setEcommerceView, 'function', 'setEcommerceView' ); equal( typeof tracker.addEcommerceItem, 'function', 'addEcommerceItem' ); @@ -3190,7 +3191,7 @@ if ($sqlite) { }); test("trackingContent", function() { - expect(81); + expect(83); function assertTrackingRequest(actual, expectedStartsWith, message) { @@ -3526,6 +3527,101 @@ if ($sqlite) { start(); }, 7000); + expected = + [ + { + "name": "My Ad 7", + "piece": "Unknown", + "target": "http://img7.example.com" + }, + { + "name": "http://www.example.com/path/xyz.jpg", + "piece": "http://www.example.com/path/xyz.jpg", + "target": "http://img6.example.com" + }, + { + "name": "My Ad 5", + "piece": "http://img5.example.com/path/xyz.jpg", + "target": origin + "/anylink5" + }, + { + "name": "My content 4", + "piece": "My content 4", + "target": "http://img4.example.com" + }, + { + "name": toAbsolutePath("img3-en.jpg"), + "piece": toAbsoluteUrl("img3-en.jpg"), + "target": "http://img3.example.com" + }, + { + "name": "img.jpg", + "piece": "img.jpg", + "target": "http://img2.example.com" + }, + { + "name": toAbsolutePath("img1-en.jpg"), + "piece": toAbsoluteUrl("img1-en.jpg"), + "target": "" + }, + { + "name": "/tests/javascript/img1-en.jpg", + "piece": toAbsoluteUrl("img1-en.jpg"), + "target": "" + }]; + + var consoleOld = console; + var loggedContentBlocks = []; + console = {log: function (content){ + loggedContentBlocks = content; + }}; + tracker.logAllContentBlocksOnPage(); + console = consoleOld; + expected = + [ + { + "name": "My Ad 7", + "piece": "Unknown", + "target": "http://img7.example.com" + }, + { + "name": "http://www.example.com/path/xyz.jpg", + "piece": "http://www.example.com/path/xyz.jpg", + "target": "http://img6.example.com" + }, + { + "name": "My Ad 5", + "piece": "http://img5.example.com/path/xyz.jpg", + "target": origin + "/anylink5" + }, + { + "name": "My content 4", + "piece": "My content 4", + "target": "http://img4.example.com" + }, + { + "name": toAbsolutePath("img3-en.jpg"), + "piece": toAbsoluteUrl("img3-en.jpg"), + "target": "http://img3.example.com" + }, + { + "name": "img.jpg", + "piece": "img.jpg", + "target": "http://img2.example.com" + }, + { + "name": toAbsolutePath("img1-en.jpg"), + "piece": toAbsoluteUrl("img1-en.jpg"), + "target": "" + }, + { + "name": "/tests/javascript/img1-en.jpg", + "piece": toAbsoluteUrl("img1-en.jpg"), + "target": "" + }]; + + equal(expected.length, loggedContentBlocks.length, 'logAllContentBlocksOnPage should detect correct number of content blocks'); + equal(JSON.stringify(expected), JSON.stringify(loggedContentBlocks), 'logAllContentBlocksOnPage should log all content blocks'); }); test("trackingContentInteractionInteractive", function() { diff --git a/tests/lib/screenshot-testing/support/app.js b/tests/lib/screenshot-testing/support/app.js index 92256cae6cf9995084cf893ff409503177df00e2..6f120f18d87b82ef890018055cf9f86009905a95 100644 --- a/tests/lib/screenshot-testing/support/app.js +++ b/tests/lib/screenshot-testing/support/app.js @@ -66,6 +66,10 @@ Application.prototype.printHelpAndExit = function () { console.log(" --screenshot-repo: Specifies the github repository that contains the expected screenshots"); console.log(" to link to in the diffviewer. For use with travis build."); console.log(" --core: Only execute UI tests that are for Piwik core or Piwik core plugins."); + console.log(" --first-half: Only execute first half of all the test suites. Will be only applied if no") + console.log(" specific plugin or test-files requested"); + console.log(" --second-half: Only execute second half of all the test suites. Will be only applied if no") + console.log(" specific plugin or test-files requested"); phantom.exit(0); }; @@ -131,6 +135,24 @@ Application.prototype.loadTestModules = function () { }); } + var specificTestsRequested = options.plugin || options.tests.length; + + if ((options['run-first-half-only'] || options['run-second-half-only']) && !specificTestsRequested) { + // run only first 50% of the test suites or only run last 50% of the test suites. + // we apply this option only if not a specific plugin or test suite was requested. Only there for travis to + // split tests into multiple jobs. + var numTestsFirstHalf = Math.round(mocha.suite.suites.length / 2); + numTestsFirstHalf += 5; // run a few more test suits in first half as UiIntegrationTests contain many tests + mocha.suite.suites = mocha.suite.suites.filter(function (suite, index) { + if (options['run-first-half-only'] && index < numTestsFirstHalf) { + return true; + } else if (options['run-second-half-only'] && index >= numTestsFirstHalf) { + return true; + } + return false; + }); + } + if (!mocha.suite.suites.length) { console.log("No tests are executing... are you running tests for a plugin? Make sure to use the" + " --plugin=MyPlugin option."); diff --git a/tests/resources/access-logs/fake_logs_dynamic.log b/tests/resources/access-logs/fake_logs_dynamic.log index 75ef54c1d454d14a47d2072390c40c549fe2e370..04ad6c23849cd1af0c0d8c550f3984d3b23d4d8c 100644 --- a/tests/resources/access-logs/fake_logs_dynamic.log +++ b/tests/resources/access-logs/fake_logs_dynamic.log @@ -8,8 +8,8 @@ whatever.com 72.44.32.10 - - [12/Aug/2012:15:49:48 +0200] "GET /translations/ HT piwik.net 175.41.192.09 - - [12/Aug/2012:22:56:45 +0200] "GET /docs/ HTTP/1.1" 200 3574 "-" "Mozilla/5.0 (X11; Linux i686; rv:6.0) Gecko/20100101 Firefox/6.0" piwik.net 175.41.192.09 - - [12/Aug/2012:23:00:42 +0200] "GET /docs/manage-users/ HTTP/1.1" 200 3574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3" whatever.com 79.125.00.21 - - [13/Aug/2012:20:03:40 +0200] "GET /newsletter/ HTTP/1.1" 200 3574 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)" -whatever.com 175.41.192.34 - - [13/Aug/2012:21:59:50 +0200] "GET /faq/how-to/ HTTP/1.1" 200 3574 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)" -anothersite.com 175.41.192.34 - - [13/Aug/2012:22:01:17 +0200] "GET /faq/ HTTP/1.1" 200 3574 "-" "Mozilla/5.0 (X11; U; Linux x86_64; fr-FR) AppleWebKit/534.7 (KHTML, like Gecko) Epiphany/2.30.6 Safari/534.7" +whatever.com 175.41.192.34 - - [13/Aug/2012:21:59:50 +0200] "GET /faq/how-to/?triggerInvalid=1 HTTP/1.1" 200 3574 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)" +anothersite.com 175.41.192.34 - - [13/Aug/2012:22:01:17 +0200] "GET /faq/?triggerInvalid=1 HTTP/1.1" 200 3574 "-" "Mozilla/5.0 (X11; U; Linux x86_64; fr-FR) AppleWebKit/534.7 (KHTML, like Gecko) Epiphany/2.30.6 Safari/534.7" anothersite.com 177.71.128.21 - - [13/Aug/2012:22:21:03 +0200] "GET /docs/manage-websites/ HTTP/1.1" 200 3574 "-" "Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0" anothersite.com 177.71.128.21 - - [13/Aug/2012:22:21:28 +0200] "GET /intranet-analytics/ HTTP/1.1" 200 3574 "-" "Mozilla/5.0 (X11; U; Linux x86_64; fr-FR) AppleWebKit/534.7 (KHTML, like Gecko) Epiphany/2.30.6 Safari/534.7" whatever.com 177.71.128.21 - - [13/Aug/2012:22:22:08 +0200] "GET /blog/2012/08/survey-your-opinion-matters/ HTTP/1.1" 200 3574 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6" diff --git a/tests/travis b/tests/travis index f62fc4fe97a88aa11e495abda384f142b38fd580..01890adfc40f4356127e6725bfbd27f5e50ea0cf 160000 --- a/tests/travis +++ b/tests/travis @@ -1 +1 @@ -Subproject commit f62fc4fe97a88aa11e495abda384f142b38fd580 +Subproject commit 01890adfc40f4356127e6725bfbd27f5e50ea0cf