Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml7
-rw-r--r--composer.lock30
-rw-r--r--config/global.ini.php15
-rw-r--r--core/API/DataTableManipulator/LabelFilter.php21
-rw-r--r--core/Archive.php5
-rw-r--r--core/ArchiveProcessor.php12
-rw-r--r--core/ArchiveProcessor/Loader.php5
-rw-r--r--core/ArchiveProcessor/Rules.php17
-rw-r--r--core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php25
-rw-r--r--core/AssetManager/UIAssetMerger/StylesheetUIAssetMerger.php6
-rw-r--r--core/AssetManager/UIAssetMinifier.php2
-rw-r--r--core/CliMulti.php2
-rw-r--r--core/CronArchive.php298
-rw-r--r--core/DataAccess/ArchivePurger.php97
-rw-r--r--core/DataAccess/ArchiveSelector.php69
-rw-r--r--core/Db.php6
-rw-r--r--core/Db/BatchInsert.php2
-rw-r--r--core/Db/Schema.php1
-rw-r--r--core/Db/Schema/Mysql.php2
-rw-r--r--core/FrontController.php44
-rw-r--r--core/Log.php6
-rw-r--r--core/Mail.php59
-rw-r--r--core/Period/Factory.php8
-rw-r--r--core/Plugin/Manager.php54
-rw-r--r--core/Profiler.php7
-rw-r--r--core/Session/SaveHandler/DbTable.php3
-rw-r--r--core/SettingsPiwik.php2
-rw-r--r--core/Tracker.php4
-rw-r--r--core/Tracker/Visit.php8
-rw-r--r--core/Updates/2.4.0-b8.php29
-rw-r--r--core/Version.php2
-rw-r--r--core/ViewDataTable/Config.php5
-rw-r--r--core/ViewDataTable/Manager.php4
-rw-r--r--core/testMinimumPhpVersion.php6
-rw-r--r--js/piwik.js78
-rw-r--r--lang/cs.json811
-rw-r--r--lang/da.json3
-rw-r--r--lang/el.json3
-rw-r--r--lang/en.json5
-rw-r--r--lang/fr.json28
-rw-r--r--lang/it.json3
-rw-r--r--lang/nb.json14
-rw-r--r--lang/nl.json5
-rw-r--r--lang/ro.json6
-rw-r--r--lang/tr.json138
-rwxr-xr-xmisc/package/build.sh3
-rw-r--r--piwik.js32
-rw-r--r--plugins/API/API.php15
-rw-r--r--plugins/API/Menu.php2
-rw-r--r--plugins/CoreAdminHome/API.php15
-rw-r--r--plugins/CoreAdminHome/Controller.php13
-rw-r--r--plugins/CoreAdminHome/CustomLogo.php11
-rw-r--r--plugins/CoreAdminHome/Tasks.php3
-rw-r--r--plugins/CoreAdminHome/templates/generalSettings.twig69
-rw-r--r--plugins/CoreConsole/Commands/CoreArchiver.php18
-rw-r--r--plugins/CoreConsole/Commands/DevelopmentSyncUITestScreenshots.php26
-rw-r--r--plugins/CoreConsole/Commands/TestsSetupFixture.php7
-rw-r--r--plugins/CoreHome/CoreHome.php12
-rw-r--r--plugins/CoreHome/angularjs/common/directives/dialog.js4
-rw-r--r--plugins/CoreHome/angularjs/common/filters/pretty-url.js12
-rw-r--r--plugins/CoreHome/angularjs/common/services/piwik-api.js2
-rw-r--r--plugins/CoreHome/angularjs/http404check.js14
-rw-r--r--plugins/CoreHome/javascripts/calendar.js6
-rwxr-xr-xplugins/CoreHome/javascripts/corehome.js2
-rw-r--r--plugins/CoreHome/javascripts/dataTable_rowactions.js13
-rw-r--r--plugins/CoreHome/templates/_dataTableCell.twig2
-rw-r--r--plugins/CoreUpdater/Controller.php2
-rw-r--r--plugins/CoreVisualizations/JqplotDataGenerator.php5
-rw-r--r--plugins/CoreVisualizations/javascripts/jqplot.js2
-rw-r--r--plugins/DBStats/lang/cs.json3
-rw-r--r--plugins/DBStats/lang/tr.json7
-rw-r--r--plugins/DBStats/tests/Mocks/MockDataAccess.php9
-rw-r--r--plugins/Dashboard/Controller.php12
-rw-r--r--plugins/Dashboard/Dashboard.php12
-rw-r--r--plugins/DevicesDetection/lang/cs.json20
-rw-r--r--plugins/DevicesDetection/lang/tr.json22
-rw-r--r--plugins/Events/lang/cs.json31
-rw-r--r--plugins/Events/lang/fr.json19
-rw-r--r--plugins/Events/lang/nl.json2
-rw-r--r--plugins/Events/lang/tr.json26
-rw-r--r--plugins/ExampleUI/Menu.php6
-rw-r--r--plugins/Feedback/Feedback.php1
-rw-r--r--plugins/Goals/Goals.php4
-rw-r--r--plugins/Installation/Installation.php10
-rw-r--r--plugins/Installation/templates/cannotConnectToDb.twig5
-rwxr-xr-xplugins/LeftMenu/LeftMenu.php2
-rw-r--r--plugins/LeftMenu/lang/cs.json10
-rw-r--r--plugins/LeftMenu/lang/ro.json10
-rw-r--r--plugins/Live/templates/getVisitorProfilePopup.twig6
-rw-r--r--plugins/Login/Controller.php5
-rw-r--r--plugins/Login/stylesheets/login.css5
-rw-r--r--plugins/Morpheus/javascripts/morpheus.js4
-rw-r--r--plugins/Morpheus/stylesheets/base.less6
-rw-r--r--plugins/Morpheus/stylesheets/theme.less7
-rw-r--r--plugins/MultiSites/angularjs/dashboard/dashboard-model.js6
-rw-r--r--plugins/PrivacyManager/DoNotTrackHeaderChecker.php15
-rw-r--r--plugins/ScheduledReports/ScheduledReports.php16
-rw-r--r--plugins/SitesManager/API.php24
-rw-r--r--plugins/SitesManager/Controller.php53
-rw-r--r--plugins/SitesManager/SitesManager.php61
-rw-r--r--plugins/SitesManager/javascripts/SitesManager.js473
-rw-r--r--plugins/SitesManager/javascripts/sites-manager-controller.js244
-rw-r--r--plugins/SitesManager/javascripts/sites-manager-directives.js85
-rw-r--r--plugins/SitesManager/javascripts/sites-manager-recipes.js95
-rw-r--r--plugins/SitesManager/javascripts/sites-manager-site-controller.js164
-rw-r--r--plugins/SitesManager/stylesheets/SitesManager.less41
-rw-r--r--plugins/SitesManager/templates/dialogs/dialogs.html3
-rw-r--r--plugins/SitesManager/templates/dialogs/edit-dialog.html6
-rw-r--r--plugins/SitesManager/templates/dialogs/remove-dialog.html7
-rw-r--r--plugins/SitesManager/templates/directives/multiline-field.html7
-rw-r--r--plugins/SitesManager/templates/global-settings.html189
-rw-r--r--plugins/SitesManager/templates/global-settings.twig178
-rw-r--r--plugins/SitesManager/templates/help/excluded-ip-help.html8
-rw-r--r--plugins/SitesManager/templates/help/excluded-query-parameters-help.html8
-rw-r--r--plugins/SitesManager/templates/help/excluded-user-agents-help.html8
-rw-r--r--plugins/SitesManager/templates/help/timezone-help.html21
-rw-r--r--plugins/SitesManager/templates/index.html11
-rw-r--r--plugins/SitesManager/templates/index.twig61
-rw-r--r--plugins/SitesManager/templates/init-script.twig63
-rw-r--r--plugins/SitesManager/templates/loading.html6
-rw-r--r--plugins/SitesManager/templates/sites-list/add-site-link.html3
-rw-r--r--plugins/SitesManager/templates/sites-list/alias-urls-field.html23
-rw-r--r--plugins/SitesManager/templates/sites-list/site-fields.html182
-rw-r--r--plugins/SitesManager/templates/sites-list/site-search-field.html73
-rw-r--r--plugins/SitesManager/templates/sites-list/sites-list.html39
-rw-r--r--plugins/SitesManager/templates/sites-management.twig125
-rw-r--r--plugins/SitesManager/templates/sites-manager-header.html18
-rw-r--r--plugins/SitesManager/templates/sites-manager-heading.twig12
-rw-r--r--tests/PHPUnit/Core/HttpTest.php8
-rw-r--r--tests/PHPUnit/Fixture.php17
-rw-r--r--tests/PHPUnit/Integration/ArchiveCronTest.php1
-rw-r--r--tests/PHPUnit/Integration/ArchiveWebTest.php5
-rw-r--r--tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php4
-rw-r--r--tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php3
-rw-r--r--tests/PHPUnit/Integration/LabelFilterTest.php2
-rw-r--r--tests/PHPUnit/Integration/PrivacyManagerTest.php4
-rw-r--r--tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getIpFromHeader.xml2
-rwxr-xr-xtests/PHPUnit/IntegrationTestCase.php31
-rw-r--r--tests/PHPUnit/TestingEnvironment.php36
m---------tests/PHPUnit/UI0
-rw-r--r--tests/PHPUnit/config.ini.travis.php10
-rw-r--r--tests/PHPUnit/proxy/includes.php2
-rw-r--r--tests/PHPUnit/proxy/index.php4
-rw-r--r--tests/PHPUnit/travis-helper.sh3
-rwxr-xr-xtests/angularjs/scripts/install-ubuntu.sh9
-rw-r--r--tests/javascript/index.php2075
-rw-r--r--tests/lib/screenshot-testing/support/diff-viewer.js2
-rw-r--r--tests/lib/screenshot-testing/support/page-renderer.js14
-rw-r--r--tests/lib/screenshot-testing/support/test-environment.js4
-rw-r--r--tests/resources/piwik-1.13-dump.sql342
-rwxr-xr-xtests/travis/prepare.sh2
151 files changed, 4747 insertions, 2652 deletions
diff --git a/.travis.yml b/.travis.yml
index 40a749e108..4eb7e54bec 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -94,9 +94,9 @@ before_script:
- php -r "var_dump(gd_info());"
- mysql -e 'create database piwik_tests;'
# Make sure we use Python 2.6
- - sudo add-apt-repository ppa:fkrull/deadsnakes -y
- - sudo apt-get update
- - sudo apt-get install python2.6 python2.6-dev
+ - travis_retry sudo add-apt-repository ppa:fkrull/deadsnakes -y
+ - travis_retry sudo apt-get update
+ - travis_retry sudo apt-get install python2.6 python2.6-dev
# Log Analytics works with Python 2.6 or 2.7 but we want to test on 2.6
- python2.6 --version
- python --version
@@ -112,6 +112,7 @@ after_script:
- cat /var/log/nginx/error.log
- cat $TRAVIS_BUILD_DIR/tmp/php-fpm.log
- cat $TRAVIS_BUILD_DIR/tmp/logs/piwik.log
+ - cat $TRAVIS_BUILD_DIR/config/config.ini.php
- cd $TRAVIS_BUILD_DIR
- ./tests/travis/upload_artifacts.sh
diff --git a/composer.lock b/composer.lock
index 106f57b07b..aa25e6356e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -96,16 +96,16 @@
},
{
"name": "piwik/device-detector",
- "version": "2.1.1",
+ "version": "2.2",
"source": {
"type": "git",
"url": "https://github.com/piwik/device-detector.git",
- "reference": "a35a509849ef16d4e47c6f417c116efe6c96965f"
+ "reference": "2a5f44c6c788f0b06e50c38514ea5bf011fc8636"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/piwik/device-detector/zipball/a35a509849ef16d4e47c6f417c116efe6c96965f",
- "reference": "a35a509849ef16d4e47c6f417c116efe6c96965f",
+ "url": "https://api.github.com/repos/piwik/device-detector/zipball/2a5f44c6c788f0b06e50c38514ea5bf011fc8636",
+ "reference": "2a5f44c6c788f0b06e50c38514ea5bf011fc8636",
"shasum": ""
},
"require": {
@@ -139,7 +139,7 @@
"parser",
"useragent"
],
- "time": "2014-06-23 04:13:18"
+ "time": "2014-06-26 11:07:53"
},
{
"name": "symfony/console",
@@ -300,16 +300,16 @@
"packages-dev": [
{
"name": "phpunit/php-code-coverage",
- "version": "2.0.8",
+ "version": "2.0.9",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "58401826c8cfc8fd689b60026e91c337df374bca"
+ "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/58401826c8cfc8fd689b60026e91c337df374bca",
- "reference": "58401826c8cfc8fd689b60026e91c337df374bca",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ed8ac99ce38c3fd134128c898f7ca74665abef7f",
+ "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f",
"shasum": ""
},
"require": {
@@ -361,7 +361,7 @@
"testing",
"xunit"
],
- "time": "2014-05-26 14:55:24"
+ "time": "2014-06-29 08:14:40"
},
{
"name": "phpunit/php-file-iterator",
@@ -622,16 +622,16 @@
},
{
"name": "phpunit/phpunit-mock-objects",
- "version": "2.1.4",
+ "version": "2.1.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "1a894a16b6c15fcdc5ef2b110f0e6233952c9b0f"
+ "reference": "7878b9c41edb3afab92b85edf5f0981014a2713a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/1a894a16b6c15fcdc5ef2b110f0e6233952c9b0f",
- "reference": "1a894a16b6c15fcdc5ef2b110f0e6233952c9b0f",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/7878b9c41edb3afab92b85edf5f0981014a2713a",
+ "reference": "7878b9c41edb3afab92b85edf5f0981014a2713a",
"shasum": ""
},
"require": {
@@ -675,7 +675,7 @@
"mock",
"xunit"
],
- "time": "2014-06-07 16:22:57"
+ "time": "2014-06-12 07:22:15"
},
{
"name": "sebastian/comparator",
diff --git a/config/global.ini.php b/config/global.ini.php
index c3c68c1de0..51dbba90cb 100644
--- a/config/global.ini.php
+++ b/config/global.ini.php
@@ -18,7 +18,7 @@ password =
dbname =
tables_prefix =
port = 3306
-adapter = PDO_MYSQL
+adapter = PDO\MYSQL
type = InnoDB
schema = Mysql
@@ -34,7 +34,7 @@ password =
dbname = piwik_tests
tables_prefix = piwiktests_
port = 3306
-adapter = PDO_MYSQL
+adapter = PDO\MYSQL
type = InnoDB
schema = Mysql
@@ -267,6 +267,12 @@ login_password_recovery_email_address = "password-recovery@{DOMAIN}"
; name that appears as a Sender in the password recovery email
login_password_recovery_email_name = Piwik
+; email address that appears as a Repy-to in the password recovery email
+; if specified, {DOMAIN} will be replaced by the current Piwik domain
+login_password_recovery_replyto_email_address = "no-reply@{DOMAIN}"
+; name that appears as a Reply-to in the password recovery email
+login_password_recovery_replyto_email_name = "No-reply"
+
; By default when user logs out he is redirected to Piwik "homepage" usually the Login form.
; Uncomment the next line to set a URL to redirect the user to after he logs out of Piwik.
; login_logout_url = http://...
@@ -289,6 +295,9 @@ noreply_email_address = "noreply@{DOMAIN}"
; when testing, use your own email address or "nobody"
feedback_email_address = "feedback@piwik.org"
+; using to set reply_to in reports e-mail to login of report creator
+scheduled_reports_replyto_is_user_email_and_alias = 0
+
; during archiving, Piwik will limit the number of results recorded, for performance reasons
; maximum number of rows for any of the Referrers tables (keywords, search engines, campaigns, etc.)
datatable_archiving_maximum_rows_referrers = 1000
@@ -384,7 +393,7 @@ enable_trusted_host_check = 1
; The release server is an essential part of the Piwik infrastructure/ecosystem
; to provide the latest software version.
-latest_version_url = http://builds.piwik.org/piwik-latest.zip
+latest_version_url = http://builds.piwik.org/piwik.zip
; The API server is an essential part of the Piwik infrastructure/ecosystem to
; provide services to Piwik installations, e.g., getLatestVersion and
diff --git a/core/API/DataTableManipulator/LabelFilter.php b/core/API/DataTableManipulator/LabelFilter.php
index 20c3ccd430..3c50e67ff2 100644
--- a/core/API/DataTableManipulator/LabelFilter.php
+++ b/core/API/DataTableManipulator/LabelFilter.php
@@ -111,15 +111,15 @@ class LabelFilter extends DataTableManipulator
* Note: The HTML Encoded version must be tried first, since in ResponseBuilder the $label is unsanitized
* via Common::unsanitizeLabelParameter.
*
- * @param string $label
+ * @param string $originalLabel
* @return array
*/
- private function getLabelVariations($label)
+ private function getLabelVariations($originalLabel)
{
static $pageTitleReports = array('getPageTitles', 'getEntryPageTitles', 'getExitPageTitles');
$variations = array();
- $label = urldecode($label);
+ $label = urldecode($originalLabel);
$label = trim($label);
$sanitizedLabel = Common::sanitizeInputValue($label);
@@ -128,10 +128,17 @@ class LabelFilter extends DataTableManipulator
if ($this->apiModule == 'Actions'
&& in_array($this->apiMethod, $pageTitleReports)
) {
- // special case: the Actions.getPageTitles report prefixes some labels with a blank.
- // the blank might be passed by the user but is removed in Request::getRequestArrayFromString.
- $variations[] = ' ' . $sanitizedLabel;
- $variations[] = ' ' . $label;
+ // temporary workaround for #4363, if a '%20' is at the end of this label, we assume it is a
+ // terminal label and only check for a terminal row.
+ if (substr($originalLabel, -3) == '%20') {
+ array_unshift($variations, ' ' . $sanitizedLabel);
+ array_unshift($variations, ' ' . $label);
+ } else {
+ // special case: the Actions.getPageTitles report prefixes some labels with a blank.
+ // the blank might be passed by the user but is removed in Request::getRequestArrayFromString.
+ $variations[] = ' ' . $sanitizedLabel;
+ $variations[] = ' ' . $label;
+ }
}
$variations[] = $label;
diff --git a/core/Archive.php b/core/Archive.php
index 84facb267f..c7407c0af0 100644
--- a/core/Archive.php
+++ b/core/Archive.php
@@ -197,11 +197,12 @@ class Archive
{
$websiteIds = Site::getIdSitesFromIdSitesString($idSites, $_restrictSitesToLogin);
+ $timezone = count($websiteIds) == 1 ? Site::getTimezoneFor($websiteIds[0]) : false;
+
if (Period::isMultiplePeriod($strDate, $period)) {
- $oPeriod = Factory::build($period, $strDate);
+ $oPeriod = Factory::build($period, $strDate, $timezone);
$allPeriods = $oPeriod->getSubperiods();
} else {
- $timezone = count($websiteIds) == 1 ? Site::getTimezoneFor($websiteIds[0]) : false;
$oPeriod = Factory::makePeriodFromQueryParams($timezone, $period, $strDate);
$allPeriods = array($oPeriod);
}
diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php
index e490d12dcb..c15ea5dd54 100644
--- a/core/ArchiveProcessor.php
+++ b/core/ArchiveProcessor.php
@@ -338,9 +338,10 @@ class ArchiveProcessor
if ($dataTable instanceof Map) {
// see http://dev.piwik.org/trac/ticket/4377
- foreach ($dataTable->getDataTables() as $table) {
- $this->renameColumnsAfterAggregation($table, $columnsToRenameAfterAggregation);
- }
+ $self = $this;
+ $dataTable->filter(function ($table) use ($self, $columnsToRenameAfterAggregation) {
+ $self->renameColumnsAfterAggregation($table, $columnsToRenameAfterAggregation);
+ });
}
$dataTable = $this->getAggregatedDataTableMap($dataTable, $columnsAggregationOperation);
@@ -443,7 +444,10 @@ class ArchiveProcessor
}
}
- protected function renameColumnsAfterAggregation(DataTable $table, $columnsToRenameAfterAggregation = null)
+ /**
+ * Note: public only for use in closure in PHP 5.3.
+ */
+ public function renameColumnsAfterAggregation(DataTable $table, $columnsToRenameAfterAggregation = null)
{
// Rename columns after aggregation
if (is_null($columnsToRenameAfterAggregation)) {
diff --git a/core/ArchiveProcessor/Loader.php b/core/ArchiveProcessor/Loader.php
index d832d4be2f..a4ffa4d12e 100644
--- a/core/ArchiveProcessor/Loader.php
+++ b/core/ArchiveProcessor/Loader.php
@@ -10,6 +10,7 @@ namespace Piwik\ArchiveProcessor;
use Piwik\Archive;
use Piwik\ArchiveProcessor;
use Piwik\Config;
+use Piwik\DataAccess\ArchivePurger;
use Piwik\DataAccess\ArchiveSelector;
use Piwik\Date;
use Piwik\Period;
@@ -119,10 +120,6 @@ class Loader
}
$idArchive = $pluginsArchiver->finalizeArchive();
- if (!$this->params->isSingleSiteDayArchive() && $visits) {
- ArchiveSelector::purgeOutdatedArchives($this->params->getPeriod()->getDateStart());
- }
-
return array($idArchive, $visits);
}
diff --git a/core/ArchiveProcessor/Rules.php b/core/ArchiveProcessor/Rules.php
index 71f6760d58..e5450e040c 100644
--- a/core/ArchiveProcessor/Rules.php
+++ b/core/ArchiveProcessor/Rules.php
@@ -33,8 +33,7 @@ class Rules
const FLAG_TABLE_PURGED = 'lastPurge_';
- /** Old Archives purge can be disabled (used in tests only) */
- static public $purgeDisabledByTests = false;
+ static public $purgeOutdatedArchivesIsDisabled = false;
/** Flag that will forcefully disable the archiving process (used in tests only) */
public static $archivingDisabledByTests = false;
@@ -43,9 +42,11 @@ class Rules
* Returns the name of the archive field used to tell the status of an archive, (ie,
* whether the archive was created successfully or not).
*
+ * @param array $idSites
* @param Segment $segment
* @param string $periodLabel
* @param string $plugin
+ * @param bool $isSkipAggregationOfSubTables
* @return string
*/
public static function getDoneStringFlagFor(array $idSites, $segment, $periodLabel, $plugin, $isSkipAggregationOfSubTables)
@@ -128,6 +129,16 @@ class Rules
return $doneFlags;
}
+ static public function disablePurgeOutdatedArchives()
+ {
+ self::$purgeOutdatedArchivesIsDisabled = true;
+ }
+
+ static public function enablePurgeOutdatedArchives()
+ {
+ self::$purgeOutdatedArchivesIsDisabled = false;
+ }
+
/**
* Given a monthly archive table, will delete all reports that are now outdated,
* or reports that ended with an error
@@ -137,7 +148,7 @@ class Rules
*/
public static function shouldPurgeOutdatedArchives(Date $date)
{
- if (self::$purgeDisabledByTests) {
+ if (self::$purgeOutdatedArchivesIsDisabled) {
return false;
}
$key = self::FLAG_TABLE_PURGED . "blob_" . $date->toString('Y_m');
diff --git a/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php b/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php
index 414a5d44e7..47a78a47ca 100644
--- a/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php
+++ b/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php
@@ -15,14 +15,31 @@ class StylesheetUIAssetFetcher extends UIAssetFetcher
{
protected function getPriorityOrder()
{
- return array(
+ $theme = $this->getTheme();
+ $themeName = $theme->getThemeName();
+
+ $themeName = $this->getTheme()->getThemeName();
+ $order = array(
'libs/',
'plugins/CoreHome/stylesheets/color_manager.css', // must be before other Piwik stylesheets
'plugins/Morpheus/stylesheets/base.less',
- 'plugins\/((?!Morpheus).)*\/',
- 'plugins/Dashboard/stylesheets/dashboard.less',
- 'tests/',
);
+
+ if ($themeName === 'Morpheus') {
+ $order[] = 'plugins\/((?!Morpheus).)*\/';
+ } else {
+ $order[] = sprintf('plugins\/((?!(Morpheus)|(%s)).)*\/', $themeName);
+ }
+
+ $order = array_merge(
+ $order,
+ array(
+ 'plugins/Dashboard/stylesheets/dashboard.less',
+ 'tests/',
+ )
+ );
+
+ return $order;
}
protected function retrieveFileLocations()
diff --git a/core/AssetManager/UIAssetMerger/StylesheetUIAssetMerger.php b/core/AssetManager/UIAssetMerger/StylesheetUIAssetMerger.php
index f943a918d3..b8dedab561 100644
--- a/core/AssetManager/UIAssetMerger/StylesheetUIAssetMerger.php
+++ b/core/AssetManager/UIAssetMerger/StylesheetUIAssetMerger.php
@@ -30,8 +30,10 @@ class StylesheetUIAssetMerger extends UIAssetMerger
protected function getMergedAssets()
{
- $this->lessCompiler->addImportDir(PIWIK_USER_PATH);
- return $this->lessCompiler->compile($this->getConcatenatedAssets());
+ // note: we're using setImportDir on purpose (not addImportDir)
+ $this->lessCompiler->setImportDir(PIWIK_USER_PATH);
+ $concatenatedAssets = $this->getConcatenatedAssets();
+ return $this->lessCompiler->compile($concatenatedAssets);
}
/**
diff --git a/core/AssetManager/UIAssetMinifier.php b/core/AssetManager/UIAssetMinifier.php
index e9bc541959..ad8bbb61a9 100644
--- a/core/AssetManager/UIAssetMinifier.php
+++ b/core/AssetManager/UIAssetMinifier.php
@@ -60,7 +60,7 @@ class UIAssetMinifier extends Singleton
private static function validateDependency()
{
if (!class_exists("JShrink\\Minifier"))
- throw new Exception("JShrink could not be found, maybe you are using Piwik from git and need to have update Composer. <br>php composer.phar update");
+ throw new Exception("JShrink could not be found, maybe you are using Piwik from git and need to update Composer. $ php composer.phar update");
}
}
diff --git a/core/CliMulti.php b/core/CliMulti.php
index 8085631feb..f5b0d552bd 100644
--- a/core/CliMulti.php
+++ b/core/CliMulti.php
@@ -241,6 +241,8 @@ class CliMulti {
}
$output->write($message);
+
+ Log::debug($e);
}
}
diff --git a/core/CronArchive.php b/core/CronArchive.php
index add03bb5e5..e12fcc85f6 100644
--- a/core/CronArchive.php
+++ b/core/CronArchive.php
@@ -64,6 +64,7 @@ class CronArchive
private $idSitesInvalidatedOldReports = array();
private $shouldArchiveSpecifiedSites = array();
private $shouldSkipSpecifiedSites = array();
+ private $shouldArchiveOnlySpecificPeriods = array();
/**
* @var SharedSiteIds|FixedSiteIds
*/
@@ -131,6 +132,10 @@ class CronArchive
$this->segments = $this->initSegmentsToArchive();
$this->allWebsites = APISitesManager::getInstance()->getAllSitesId();
+ if(!empty($this->shouldArchiveOnlySpecificPeriods)) {
+ $this->log("- Will process the following periods: " . implode(", ", $this->shouldArchiveOnlySpecificPeriods) . " (--force-periods)");
+ }
+
$websitesIds = $this->initWebsiteIds();
$this->filterWebsiteIds($websitesIds);
@@ -171,7 +176,6 @@ class CronArchive
$this->runScheduledTasks();
}
- // TODO: replace w/ $this->
private $websitesWithVisitsSinceLastRun = 0;
private $skippedPeriodsArchivesWebsite = 0;
private $skippedDayArchivesWebsites = 0;
@@ -339,7 +343,7 @@ class CronArchive
// (*) If there was some old reports invalidated for this website
// we make sure all these old reports are triggered at least once
- $websiteIsOldDataInvalidate = in_array($idSite, $this->idSitesInvalidatedOldReports);
+ $websiteIsOldDataInvalidate = $this->isOldReportInvalidatedForWebsite($idSite);
if ($websiteIsOldDataInvalidate) {
$shouldArchivePeriods = true;
@@ -373,7 +377,7 @@ class CronArchive
$skipDayArchive = false;
}
- if ($skipDayArchive) {
+ if ($skipDayArchive) {
$this->log("Skipped website id $idSite, already done "
. \Piwik\MetricsFormatter::getPrettyTimeFromSeconds($elapsedSinceLastArchiving, true, $isHtml = false)
. " ago, " . $timerWebsite->__toString());
@@ -382,75 +386,11 @@ class CronArchive
return false;
}
- // 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());
-
- // Remove this website from the list of websites to be invalidated
- // since it's now just about to being re-processed, makes sure another running cron archiving process
- // does not archive the same idSite
- if ($websiteIsOldDataInvalidate) {
- $this->setSiteIsArchived($idSite);
- }
-
- // when some data was purged from this website
- // we make sure we query all previous days/weeks/months
- $processDaysSince = $lastTimestampWebsiteProcessedDay;
- if($websiteIsOldDataInvalidate
- // when --force-all-websites option,
- // also forces to archive last52 days to be safe
- || $this->shouldArchiveAllSites) {
- $processDaysSince = false;
- }
-
-
- $timer = new Timer;
- $dateLast = $this->getApiDateLastParameter($idSite, "day", $processDaysSince);
- $url = $this->getVisitsRequestUrl($idSite, "day", $dateLast);
- $content = $this->request($url);
- $response = @unserialize($content);
- $visitsToday = $this->getVisitsLastPeriodFromApiResponse($response);
- $visitsLastDays = $this->getVisitsFromApiResponse($response);
-
- if (empty($content)
- || !is_array($response)
- || count($response) == 0
- ) {
- // cancel the succesful run flag
- Option::set($this->lastRunKey($idSite, "day"), 0);
-
- $this->logError("Empty or invalid response '$content' for website id $idSite, " . $timerWebsite->__toString() . ", skipping");
- $this->skipped++;
- return false;
- }
-
- $this->requests++;
- $this->processed++;
-
- // If there is no visit today and we don't need to process this website, we can skip remaining archives
- if ($visitsToday == 0
- && !$shouldArchivePeriods
- ) {
- $this->log("Skipped website id $idSite, no visit today, " . $timerWebsite->__toString());
- $this->skipped++;
- return false;
- }
-
- if ($visitsLastDays == 0
- && !$shouldArchivePeriods
- && $this->shouldArchiveAllSites
- ) {
- $this->log("Skipped website id $idSite, no visits in the last " . $dateLast . " days, " . $timerWebsite->__toString());
- $this->skipped++;
+ $shouldProceed = $this->processArchiveDays($idSite, $lastTimestampWebsiteProcessedDay, $shouldArchivePeriods, $timerWebsite);
+ if(!$shouldProceed) {
return false;
}
-
- $this->visitsToday += $visitsToday;
- $this->websitesWithVisitsSinceLastRun++;
- $this->archiveVisitsAndSegments($idSite, "day", $lastTimestampWebsiteProcessedDay);
- $this->logArchivedWebsite($idSite, "day", $dateLast, $visitsLastDays, $visitsToday, $timer);
-
if (!$shouldArchivePeriods) {
$this->log("Skipped website id $idSite periods processing, already done "
. \Piwik\MetricsFormatter::getPrettyTimeFromSeconds($elapsedSinceLastArchiving, true, $isHtml = false)
@@ -462,6 +402,13 @@ class CronArchive
$success = true;
foreach (array('week', 'month', 'year') as $period) {
+
+ if(!$this->shouldProcessPeriod($period)) {
+ // if any period was skipped, we do not mark the Periods archiving as successful
+ $success = false;
+ continue;
+ }
+
$success = $this->archiveVisitsAndSegments($idSite, $period, $lastTimestampWebsiteProcessedPeriods)
&& $success;
}
@@ -508,9 +455,9 @@ class CronArchive
/**
* Returns base URL to process reports for the $idSite on a given $period
*/
- private function getVisitsRequestUrl($idSite, $period, $dateLast)
+ private function getVisitsRequestUrl($idSite, $period, $date)
{
- return "?module=API&method=API.get&idSite=$idSite&period=$period&date=last" . $dateLast . "&format=php&token_auth=" . $this->token_auth;
+ return "?module=API&method=API.get&idSite=$idSite&period=$period&date=" . $date . "&format=php&token_auth=" . $this->token_auth;
}
private function initSegmentsToArchive()
@@ -523,6 +470,90 @@ class CronArchive
return $segments;
}
+ /**
+ * @param $idSite
+ * @param $lastTimestampWebsiteProcessedDay
+ * @param $shouldArchivePeriods
+ * @param $timerWebsite
+ * @return bool
+ */
+ protected function processArchiveDays($idSite, $lastTimestampWebsiteProcessedDay, $shouldArchivePeriods, Timer $timerWebsite)
+ {
+ if (!$this->shouldProcessPeriod("day")) {
+ // skip day archiving and proceed to period processing
+ return true;
+ }
+
+ // 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());
+
+ // Remove this website from the list of websites to be invalidated
+ // since it's now just about to being re-processed, makes sure another running cron archiving process
+ // does not archive the same idSite
+ if ($this->isOldReportInvalidatedForWebsite($idSite)) {
+ $this->setSiteIsArchived($idSite);
+ }
+
+ // when some data was purged from this website
+ // we make sure we query all previous days/weeks/months
+ $processDaysSince = $lastTimestampWebsiteProcessedDay;
+ if($this->isOldReportInvalidatedForWebsite($idSite)
+ // when --force-all-websites option,
+ // also forces to archive last52 days to be safe
+ || $this->shouldArchiveAllSites) {
+ $processDaysSince = false;
+ }
+
+ $date = $this->getApiDateParameter($idSite, "day", $processDaysSince);
+ $url = $this->getVisitsRequestUrl($idSite, "day", $date);
+ $content = $this->request($url);
+ $daysResponse = @unserialize($content);
+
+ if (empty($content)
+ || !is_array($daysResponse)
+ || count($daysResponse) == 0
+ ) {
+ // cancel the succesful run flag
+ Option::set($this->lastRunKey($idSite, "day"), 0);
+
+ $this->logError("Empty or invalid response '$content' for website id $idSite, " . $timerWebsite->__toString() . ", skipping");
+ $this->skipped++;
+ return false;
+ }
+
+ $visitsToday = $this->getVisitsLastPeriodFromApiResponse($daysResponse);
+ $visitsLastDays = $this->getVisitsFromApiResponse($daysResponse);
+
+ $this->requests++;
+ $this->processed++;
+
+ // If there is no visit today and we don't need to process this website, we can skip remaining archives
+ if ($visitsToday == 0
+ && !$shouldArchivePeriods
+ ) {
+ $this->log("Skipped website id $idSite, no visit today, " . $timerWebsite->__toString());
+ $this->skipped++;
+ return false;
+ }
+
+ if ($visitsLastDays == 0
+ && !$shouldArchivePeriods
+ && $this->shouldArchiveAllSites
+ ) {
+ $this->log("Skipped website id $idSite, no visits in the last " . $date . " days, " . $timerWebsite->__toString());
+ $this->skipped++;
+ return false;
+ }
+
+ $this->visitsToday += $visitsToday;
+ $this->websitesWithVisitsSinceLastRun++;
+ $this->archiveVisitsAndSegments($idSite, "day", $processDaysSince);
+ $this->logArchivedWebsite($idSite, "day", $date, $visitsLastDays, $visitsToday, $timerWebsite);
+
+ return true;
+ }
+
private function getSegmentsForSite($idSite)
{
$segmentsAllSites = $this->segments;
@@ -550,8 +581,8 @@ class CronArchive
$url = $this->piwikUrl;
- $dateLast = $this->getApiDateLastParameter($idSite, $period, $lastTimestampWebsiteProcessed);
- $url .= $this->getVisitsRequestUrl($idSite, $period, $dateLast);
+ $date = $this->getApiDateParameter($idSite, $period, $lastTimestampWebsiteProcessed);
+ $url .= $this->getVisitsRequestUrl($idSite, $period, $date);
$url .= self::APPEND_TO_API_REQUEST;
@@ -576,7 +607,7 @@ class CronArchive
$cliMulti = new CliMulti();
$cliMulti->setAcceptInvalidSSLCertificate($this->acceptInvalidSSLCertificate);
- $cliMulti->setConcurrentProcessesLimit(self::MAX_CONCURRENT_API_REQUESTS);
+ $cliMulti->setConcurrentProcessesLimit($this->getConcurrentRequestsPerWebsite());
$response = $cliMulti->request($urls);
foreach ($urls as $index => $url) {
@@ -597,7 +628,7 @@ class CronArchive
// we have already logged the daily archive above
if($period != "day") {
- $this->logArchivedWebsite($idSite, $period, $dateLast, $visitsInLastPeriods, $visitsLastPeriod, $timer);
+ $this->logArchivedWebsite($idSite, $period, $date, $visitsInLastPeriods, $visitsLastPeriod, $timer);
}
return $success;
@@ -711,11 +742,10 @@ class CronArchive
}
// Make sure we log at least INFO (if logger is set to DEBUG then keep it)
- $logLevel = @$log[\Piwik\Log::LOG_LEVEL_CONFIG_OPTION];
- if ($logLevel != 'VERBOSE'
- && $logLevel != 'DEBUG'
+ $logLevel = Log::getInstance()->getLogLevel();
+ if ($logLevel != Log::VERBOSE
+ && $logLevel != Log::DEBUG
) {
- $log[\Piwik\Log::LOG_LEVEL_CONFIG_OPTION] = 'INFO';
Log::getInstance()->setLogLevel(Log::INFO);
}
@@ -776,6 +806,7 @@ class CronArchive
$this->shouldSkipSpecifiedSites = \Piwik\Site::getIdSitesFromIdSitesString($skipIdSites);
$this->lastSuccessRunTimestamp = Option::get(self::OPTION_ARCHIVING_FINISHED_TS);
$this->shouldArchiveOnlySitesWithTrafficSince = $this->isShouldArchiveAllSitesWithTrafficSince();
+ $this->shouldArchiveOnlySpecificPeriods = $this->getPeriodsToProcess();
if($this->shouldArchiveOnlySitesWithTrafficSince === false) {
// force-all-periods is not set here
@@ -1170,7 +1201,96 @@ class CronArchive
* @param $lastTimestampWebsiteProcessed
* @return float|int|true
*/
- private function getApiDateLastParameter($idSite, $period, $lastTimestampWebsiteProcessed = false)
+ private function getApiDateParameter($idSite, $period, $lastTimestampWebsiteProcessed = false)
+ {
+ $dateRangeForced = $this->getDateRangeToProcess();
+ if(!empty($dateRangeForced)) {
+ return $dateRangeForced;
+ }
+ return $this->getDateLastN($idSite, $period, $lastTimestampWebsiteProcessed);
+ }
+
+ /**
+ * @param $idSite
+ * @param $period
+ * @param $date
+ * @param $visitsInLastPeriods
+ * @param $visitsToday
+ * @param $timer
+ */
+ private function logArchivedWebsite($idSite, $period, $date, $visitsInLastPeriods, $visitsToday, Timer $timer)
+ {
+ if(substr($date, 0, 4) === 'last') {
+ $visitsInLastPeriods = (int)$visitsInLastPeriods . " visits in last " . $date . " " . $period . "s, ";
+ $thisPeriod = $period == "day" ? "today" : "this " . $period;
+ $visitsInLastPeriod = (int)$visitsToday . " visits " . $thisPeriod . ", ";
+ } else {
+ $visitsInLastPeriods = (int)$visitsInLastPeriods . " visits in " . $period . "s included in: $date, ";
+ $visitsInLastPeriod = '';
+ }
+
+ $this->log("Archived website id = $idSite, period = $period, "
+ . $visitsInLastPeriods
+ . $visitsInLastPeriod
+ . $timer->__toString());
+ }
+
+ private function getDateRangeToProcess()
+ {
+ $restrictToDateRange = $this->getParameterFromCli("force-date-range", true);
+ if(empty($restrictToDateRange)) {
+ return false;
+ }
+ if(strpos($restrictToDateRange, ',') === false) {
+ throw new Exception("--force-date-range expects a date range ie. YYYY-MM-DD,YYYY-MM-DD");
+ }
+ return $restrictToDateRange;
+ }
+
+ /**
+ * @return array
+ */
+ private function getPeriodsToProcess()
+ {
+ $restrictToPeriods = $this->getParameterFromCli("force-periods", true);
+ $restrictToPeriods = explode(',', $restrictToPeriods);
+ $restrictToPeriods = array_map('trim', $restrictToPeriods);
+ $restrictToPeriods = array_intersect($restrictToPeriods, $this->getDefaultPeriodsToProcess());
+ return $restrictToPeriods;
+ }
+
+ /**
+ * @return array
+ */
+ private function getDefaultPeriodsToProcess()
+ {
+ return array('day', 'week', 'month', 'year');
+ }
+
+ /**
+ * @param $idSite
+ * @return bool
+ */
+ private function isOldReportInvalidatedForWebsite($idSite)
+ {
+ return in_array($idSite, $this->idSitesInvalidatedOldReports);
+ }
+
+ private function shouldProcessPeriod($period)
+ {
+ if(empty($this->shouldArchiveOnlySpecificPeriods)) {
+ return true;
+ }
+ return in_array($period, $this->shouldArchiveOnlySpecificPeriods);
+ }
+
+ /**
+ * @param $idSite
+ * @param $period
+ * @param $lastTimestampWebsiteProcessed
+ * @return string
+ */
+ private function getDateLastN($idSite, $period, $lastTimestampWebsiteProcessed)
{
$dateLastMax = self::DEFAULT_DATE_LAST;
if ($period == 'year') {
@@ -1191,25 +1311,15 @@ class CronArchive
$dateLastForced = $this->getParameterFromCli('--force-date-last-n', true);
if (!empty($dateLastForced)) {
$dateLast = $dateLastForced;
- return $dateLast;
}
- return $dateLast;
+ return "last" . $dateLast;
}
/**
- * @param $idSite
- * @param $period
- * @param $dateLast
- * @param $visitsInLastPeriods
- * @param $visitsToday
- * @param $timer
+ * @return int
*/
- private function logArchivedWebsite($idSite, $period, $dateLast, $visitsInLastPeriods, $visitsToday, Timer $timer)
+ private function getConcurrentRequestsPerWebsite()
{
- $thisPeriod = $period == "day" ? "today" : "this " . $period;
- $this->log("Archived website id = $idSite, period = $period, "
- . (int)$visitsInLastPeriods . " visits in last " . $dateLast . " " . $period . "s, "
- . (int)$visitsToday . " visits " . $thisPeriod . ", "
- . $timer->__toString());
+ return $this->getParameterFromCli('--concurrent-requests-per-website', true);
}
}
diff --git a/core/DataAccess/ArchivePurger.php b/core/DataAccess/ArchivePurger.php
new file mode 100644
index 0000000000..09fb096cd9
--- /dev/null
+++ b/core/DataAccess/ArchivePurger.php
@@ -0,0 +1,97 @@
+<?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\DataAccess;
+
+use Exception;
+use Piwik\ArchiveProcessor\Rules;
+use Piwik\Date;
+use Piwik\Db;
+use Piwik\Log;
+use Piwik\Piwik;
+
+/**
+ * Cleans up outdated archives
+ *
+ * @package Piwik\DataAccess
+ */
+class ArchivePurger
+{
+ static public function purgeOutdatedArchives(Date $dateStart)
+ {
+ $purgeArchivesOlderThan = Rules::shouldPurgeOutdatedArchives($dateStart);
+ if (!$purgeArchivesOlderThan) {
+ return;
+ }
+
+ $idArchivesToDelete = self::getTemporaryArchiveIdsOlderThan($dateStart, $purgeArchivesOlderThan);
+ if (!empty($idArchivesToDelete)) {
+ self::deleteArchiveIds($dateStart, $idArchivesToDelete);
+ }
+ self::deleteArchivesWithPeriodRange($dateStart);
+
+ Log::debug("Purging temporary archives: done [ purged archives older than %s in %s ] [Deleted IDs: %s]",
+ $purgeArchivesOlderThan, $dateStart->toString("Y-m"), implode(',', $idArchivesToDelete));
+ }
+
+ protected static function getTemporaryArchiveIdsOlderThan(Date $date, $purgeArchivesOlderThan)
+ {
+ $query = "SELECT idarchive
+ FROM " . ArchiveTableCreator::getNumericTable($date) . "
+ WHERE name LIKE 'done%'
+ AND (( value = " . ArchiveWriter::DONE_OK_TEMPORARY . "
+ AND ts_archived < ?)
+ OR value = " . ArchiveWriter::DONE_ERROR . ")";
+
+ $result = Db::fetchAll($query, array($purgeArchivesOlderThan));
+ $idArchivesToDelete = array();
+ if (!empty($result)) {
+ foreach ($result as $row) {
+ $idArchivesToDelete[] = $row['idarchive'];
+ }
+ }
+ return $idArchivesToDelete;
+ }
+
+ /*
+ * Deleting "Custom Date Range" reports after 1 day, since they can be re-processed and would take up un-necessary space
+ */
+ protected static function deleteArchivesWithPeriodRange(Date $date)
+ {
+ $query = "DELETE FROM %s WHERE period = ? AND ts_archived < ?";
+
+ $yesterday = Date::factory('yesterday')->getDateTime();
+ $bind = array(Piwik::$idPeriods['range'], $yesterday);
+ $numericTable = ArchiveTableCreator::getNumericTable($date);
+ Db::query(sprintf($query, $numericTable), $bind);
+ Log::debug("Purging Custom Range archives: done [ purged archives older than %s from %s / blob ]", $yesterday, $numericTable);
+ try {
+ Db::query(sprintf($query, ArchiveTableCreator::getBlobTable($date)), $bind);
+ } catch (Exception $e) {
+ // Individual blob tables could be missing
+ }
+ }
+
+ protected static function deleteArchiveIds(Date $date, $idArchivesToDelete)
+ {
+ $batches = array_chunk($idArchivesToDelete, 1000);
+ foreach($batches as $idsToDelete) {
+ $query = "DELETE FROM %s WHERE idarchive IN (" . implode(',', $idsToDelete) . ")";
+
+ Db::query(sprintf($query, ArchiveTableCreator::getNumericTable($date)));
+ try {
+ Db::query(sprintf($query, ArchiveTableCreator::getBlobTable($date)));
+ } catch (Exception $e) {
+ // Individual blob tables could be missing
+ }
+ }
+
+ }
+
+
+}
diff --git a/core/DataAccess/ArchiveSelector.php b/core/DataAccess/ArchiveSelector.php
index 601e8a58d0..0d8b028c72 100644
--- a/core/DataAccess/ArchiveSelector.php
+++ b/core/DataAccess/ArchiveSelector.php
@@ -294,74 +294,5 @@ class ArchiveSelector
" value = '" . ArchiveWriter::DONE_OK_TEMPORARY . "'))";
}
- static public function purgeOutdatedArchives(Date $dateStart)
- {
- $purgeArchivesOlderThan = Rules::shouldPurgeOutdatedArchives($dateStart);
- if (!$purgeArchivesOlderThan) {
- return;
- }
-
- $idArchivesToDelete = self::getTemporaryArchiveIdsOlderThan($dateStart, $purgeArchivesOlderThan);
- if (!empty($idArchivesToDelete)) {
- self::deleteArchiveIds($dateStart, $idArchivesToDelete);
- }
- self::deleteArchivesWithPeriodRange($dateStart);
-
- Log::debug("Purging temporary archives: done [ purged archives older than %s in %s ] [Deleted IDs: %s]",
- $purgeArchivesOlderThan, $dateStart->toString("Y-m"), implode(',', $idArchivesToDelete));
- }
-
- /*
- * Deleting "Custom Date Range" reports after 1 day, since they can be re-processed and would take up un-necessary space
- */
- protected static function deleteArchivesWithPeriodRange(Date $date)
- {
- $query = "DELETE FROM %s WHERE period = ? AND ts_archived < ?";
-
- $yesterday = Date::factory('yesterday')->getDateTime();
- $bind = array(Piwik::$idPeriods['range'], $yesterday);
- $numericTable = ArchiveTableCreator::getNumericTable($date);
- Db::query(sprintf($query, $numericTable), $bind);
- Log::debug("Purging Custom Range archives: done [ purged archives older than %s from %s / blob ]", $yesterday, $numericTable);
- try {
- Db::query(sprintf($query, ArchiveTableCreator::getBlobTable($date)), $bind);
- } catch (Exception $e) {
- // Individual blob tables could be missing
- }
- }
- protected static function deleteArchiveIds(Date $date, $idArchivesToDelete)
- {
- $batches = array_chunk($idArchivesToDelete, 1000);
- foreach($batches as $idsToDelete) {
- $query = "DELETE FROM %s WHERE idarchive IN (" . implode(',', $idsToDelete) . ")";
-
- Db::query(sprintf($query, ArchiveTableCreator::getNumericTable($date)));
- try {
- Db::query(sprintf($query, ArchiveTableCreator::getBlobTable($date)));
- } catch (Exception $e) {
- // Individual blob tables could be missing
- }
- }
-
- }
-
- protected static function getTemporaryArchiveIdsOlderThan(Date $date, $purgeArchivesOlderThan)
- {
- $query = "SELECT idarchive
- FROM " . ArchiveTableCreator::getNumericTable($date) . "
- WHERE name LIKE 'done%'
- AND (( value = " . ArchiveWriter::DONE_OK_TEMPORARY . "
- AND ts_archived < ?)
- OR value = " . ArchiveWriter::DONE_ERROR . ")";
-
- $result = Db::fetchAll($query, array($purgeArchivesOlderThan));
- $idArchivesToDelete = array();
- if (!empty($result)) {
- foreach ($result as $row) {
- $idArchivesToDelete[] = $row['idarchive'];
- }
- }
- return $idArchivesToDelete;
- }
}
diff --git a/core/Db.php b/core/Db.php
index 0bcfd68f47..8eabee10cb 100644
--- a/core/Db.php
+++ b/core/Db.php
@@ -76,7 +76,7 @@ class Db
* database.
* - **dbname**: The name of the Piwik MySQL database.
* - **port**: The MySQL database port to use.
- * - **adapter**: either `'PDO_MYSQL'` or `'MYSQLI'`
+ * - **adapter**: either `'PDO\MYSQL'` or `'MYSQLI'`
* - **type**: The MySQL engine to use, for instance 'InnoDB'
*/
Piwik::postEvent('Db.getDatabaseConfig', array(&$dbConfig));
@@ -338,7 +338,7 @@ class Db
$tables = array($tables);
}
- return self::query("DROP TABLE " . implode(',', $tables));
+ return self::query("DROP TABLE `" . implode('`,`', $tables) . "`");
}
/**
@@ -358,7 +358,7 @@ class Db
*/
static public function getColumnNamesFromTable($table)
{
- $columns = self::fetchAll("SHOW COLUMNS FROM " . $table);
+ $columns = self::fetchAll("SHOW COLUMNS FROM `" . $table . "`");
$columnNames = array();
foreach ($columns as $column) {
diff --git a/core/Db/BatchInsert.php b/core/Db/BatchInsert.php
index f8325c0209..c3476438cf 100644
--- a/core/Db/BatchInsert.php
+++ b/core/Db/BatchInsert.php
@@ -168,7 +168,7 @@ class BatchInsert
/*
* Second attempt: using the LOCAL keyword means the client reads the file and sends it to the server;
- * the LOCAL keyword may trigger a known PHP PDO_MYSQL bug when MySQL not built with --enable-local-infile
+ * the LOCAL keyword may trigger a known PHP PDO\MYSQL bug when MySQL not built with --enable-local-infile
* @see http://bugs.php.net/bug.php?id=54158
*/
$openBaseDir = ini_get('open_basedir');
diff --git a/core/Db/Schema.php b/core/Db/Schema.php
index 6bcb81eaf1..c54389fd75 100644
--- a/core/Db/Schema.php
+++ b/core/Db/Schema.php
@@ -77,6 +77,7 @@ class Schema extends Singleton
$adapterName = strtoupper($adapterName);
switch ($adapterName) {
+ case 'PDO\MYSQL':
case 'PDO_MYSQL':
case 'MYSQLI':
$adapterName = 'MYSQL';
diff --git a/core/Db/Schema/Mysql.php b/core/Db/Schema/Mysql.php
index 6bd5723720..80356c1794 100644
--- a/core/Db/Schema/Mysql.php
+++ b/core/Db/Schema/Mysql.php
@@ -232,7 +232,7 @@ class Mysql implements SchemaInterface
",
'session' => "CREATE TABLE {$prefixTables}session (
- id CHAR(32) NOT NULL,
+ id VARCHAR( 255 ) NOT NULL,
modified INTEGER,
lifetime INTEGER,
data TEXT,
diff --git a/core/FrontController.php b/core/FrontController.php
index 2861e3cb0b..a06a08db9f 100644
--- a/core/FrontController.php
+++ b/core/FrontController.php
@@ -86,6 +86,7 @@ class FrontController extends Singleton
$result = $this->doDispatch($module, $action, $parameters);
return $result;
} catch (NoAccessException $exception) {
+ Log::debug($exception);
/**
* Triggered when a user with insufficient access permissions tries to view some resource.
@@ -216,9 +217,9 @@ class FrontController extends Singleton
// in tracker mode Piwik\Tracker\Db\Pdo\Mysql does currently not implement profiling
Profiler::displayDbProfileReport();
Profiler::printQueryCount();
- Log::debug(Registry::get('timer'));
}
} catch (Exception $e) {
+ Log::verbose($e);
}
}
@@ -262,6 +263,7 @@ class FrontController extends Singleton
try {
Config::getInstance()->database; // access property to check if the local file exists
} catch (Exception $exception) {
+ Log::debug($exception);
/**
* Triggered when the configuration file cannot be found or read, which usually
@@ -324,25 +326,51 @@ class FrontController extends Singleton
throw $exceptionToThrow;
}
+ // try to connect to the database
try {
Db::createDatabaseObject();
- Option::get('TestingIfDatabaseConnectionWorked');
-
+ Db::fetchAll("SELECT DATABASE()");
} catch (Exception $exception) {
if (self::shouldRethrowException()) {
throw $exception;
}
+ Log::debug($exception);
+
/**
- * Triggered if the INI config file has the incorrect format or if certain required configuration
- * options are absent.
- *
- * This event can be used to start the installation process or to display a custom error message.
- *
+ * Triggered when Piwik cannot connect to the database.
+ *
+ * This event can be used to start the installation process or to display a custom error
+ * message.
+ *
* @param Exception $exception The exception thrown from creating and testing the database
* connection.
*/
+ Piwik::postEvent('Db.cannotConnectToDb', array($exception), $pending = true);
+
+ throw $exception;
+ }
+
+ // try to get an option (to check if data can be queried)
+ try {
+ Option::get('TestingIfDatabaseConnectionWorked');
+ } catch (Exception $exception) {
+ if (self::shouldRethrowException()) {
+ throw $exception;
+ }
+
+ Log::debug($exception);
+
+ /**
+ * Triggered when Piwik cannot access database data.
+ *
+ * This event can be used to start the installation process or to display a custom error
+ * message.
+ *
+ * @param Exception $exception The exception thrown from trying to get an option value.
+ */
Piwik::postEvent('Config.badConfigurationFile', array($exception), $pending = true);
+
throw $exception;
}
diff --git a/core/Log.php b/core/Log.php
index 6a9ebefc57..7d9e501ddf 100644
--- a/core/Log.php
+++ b/core/Log.php
@@ -373,6 +373,12 @@ class Log extends Singleton
$this->currentLogLevel = $logLevel;
}
+
+ public function getLogLevel()
+ {
+ return $this->currentLogLevel;
+ }
+
public function customLogToFileForDebuggingIfYouStillSeeThisHereRemoveIt($message, $addTrace = true)
{
if ($addTrace) {
diff --git a/core/Mail.php b/core/Mail.php
index 8bbb581dd5..d26b08b154 100644
--- a/core/Mail.php
+++ b/core/Mail.php
@@ -50,20 +50,25 @@ class Mail extends Zend_Mail
*/
public function setFrom($email, $name = null)
{
- $hostname = Config::getInstance()->mail['defaultHostnameIfEmpty'];
- $piwikHost = Url::getCurrentHost($hostname);
+ return parent::setFrom(
+ $this->parseDomainPlaceholderAsPiwikHostName($email),
+ $name
+ );
+ }
- // If known Piwik URL, use it instead of "localhost"
- $piwikUrl = SettingsPiwik::getPiwikUrl();
- $url = parse_url($piwikUrl);
- if (isset($url['host'])
- && $url['host'] != 'localhost'
- && $url['host'] != '127.0.0.1'
- ) {
- $piwikHost = $url['host'];
- }
- $email = str_replace('{DOMAIN}', $piwikHost, $email);
- return parent::setFrom($email, $name);
+ /**
+ * Set Reply-To Header
+ *
+ * @param string $email
+ * @param null|string $name
+ * @return Zend_Mail
+ */
+ public function setReplyTo($email, $name = null)
+ {
+ return parent::setReplyTo(
+ $this->parseDomainPlaceholderAsPiwikHostName($email),
+ $name
+ );
}
/**
@@ -100,4 +105,32 @@ class Mail extends Zend_Mail
return parent::send($transport);
}
}
+
+ /**
+ * @param string $email
+ * @return string
+ */
+ protected function parseDomainPlaceholderAsPiwikHostName($email)
+ {
+ $hostname = Config::getInstance()->mail['defaultHostnameIfEmpty'];
+ $piwikHost = Url::getCurrentHost($hostname);
+
+ // If known Piwik URL, use it instead of "localhost"
+ $piwikUrl = SettingsPiwik::getPiwikUrl();
+ $url = parse_url($piwikUrl);
+ if ($this->isHostDefinedAndNotLocal($url)) {
+ $piwikHost = $url['host'];
+ }
+
+ return str_replace('{DOMAIN}', $piwikHost, $email);
+ }
+
+ /**
+ * @param array $url
+ * @return bool
+ */
+ protected function isHostDefinedAndNotLocal($url)
+ {
+ return isset($url['host']) && !in_array($url['host'], array('localhost', '127.0.0.1'), true);
+ }
}
diff --git a/core/Period/Factory.php b/core/Period/Factory.php
index 996e2e792a..11d5203ab7 100644
--- a/core/Period/Factory.php
+++ b/core/Period/Factory.php
@@ -23,16 +23,18 @@ class Factory
*
* @param string $period `"day"`, `"week"`, `"month"`, `"year"`, `"range"`.
* @param Date|string $date A date within the period or the range of dates.
+ * @param Date|string $timezone Optional timezone that will be used only when $period is 'range' or $date is 'last|previous'
* @throws Exception If `$strPeriod` is invalid.
* @return \Piwik\Period
*/
- static public function build($period, $date)
+ static public function build($period, $date, $timezone = 'UTC')
{
self::checkPeriodIsEnabled($period);
if (is_string($date)) {
- if (Period::isMultiplePeriod($date, $period) || $period == 'range') {
- return new Range($period, $date);
+ if (Period::isMultiplePeriod($date, $period)
+ || $period == 'range') {
+ return new Range($period, $date, $timezone);
}
$date = Date::factory($date);
}
diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index 0703d7dac5..67f3355ce8 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -100,9 +100,6 @@ class Manager extends Singleton
{
$pluginsToLoad = Config::getInstance()->Plugins['Plugins'];
$pluginsToLoad = array_diff($pluginsToLoad, Tracker::getPluginsNotToLoad());
- if(defined('PIWIK_TEST_MODE')) {
- $pluginsToLoad = array_intersect($pluginsToLoad, $this->getPluginsToLoadDuringTests());
- }
$this->loadPlugins($pluginsToLoad);
}
@@ -118,62 +115,11 @@ class Manager extends Singleton
}
$pluginsTracker = array_diff($pluginsTracker, Tracker::getPluginsNotToLoad());
- if(defined('PIWIK_TEST_MODE')) {
- $pluginsTracker = array_intersect($pluginsTracker, $this->getPluginsToLoadDuringTests());
- }
$this->doNotLoadAlwaysActivatedPlugins();
$this->loadPlugins($pluginsTracker);
return $pluginsTracker;
}
- public function getPluginsToLoadDuringTests()
- {
- $toLoad = array();
-
- $loadStandalonePluginsDuringTests = @Config::getInstance()->DebugTests['enable_load_standalone_plugins_during_tests'];
-
- foreach($this->readPluginsDirectory() as $plugin) {
- $forceDisable = array(
- 'ExampleVisualization', // adds an icon
- 'LoginHttpAuth', // other Login plugins would conflict
- );
- if(in_array($plugin, $forceDisable)) {
- continue;
- }
-
- // Load all default plugins
- $isPluginBundledWithCore = $this->isPluginBundledWithCore($plugin);
-
- // Load plugins from submodules
- $isPluginOfficiallySupported = $this->isPluginOfficialAndNotBundledWithCore($plugin);
-
- // Also load plugins which are Git repositories (eg. being developed)
- $isPluginHasGitRepository = file_exists( PIWIK_INCLUDE_PATH . '/plugins/' . $plugin . '/.git/config');
-
- $loadPlugin = $isPluginBundledWithCore || $isPluginOfficiallySupported;
-
- if($loadStandalonePluginsDuringTests) {
- $loadPlugin = $loadPlugin || $isPluginHasGitRepository;
- } else {
- $loadPlugin = $loadPlugin && !$isPluginHasGitRepository;
- }
-
- // Do not enable other Themes
- $disabledThemes = $this->coreThemesDisabledByDefault;
-
- // PleineLune is officially supported, yet we don't want to enable another theme in tests (we test for Morpheus)
- $disabledThemes[] = "PleineLune";
-
- $isThemeDisabled = in_array($plugin, $disabledThemes);
-
- $loadPlugin = $loadPlugin && !$isThemeDisabled;
- if($loadPlugin) {
- $toLoad[] = $plugin;
- }
- }
- return $toLoad;
- }
-
public function getCorePluginsDisabledByDefault()
{
return array_merge( $this->corePluginsDisabledByDefault, $this->coreThemesDisabledByDefault);
diff --git a/core/Profiler.php b/core/Profiler.php
index bcbf67019c..e3a62f7049 100644
--- a/core/Profiler.php
+++ b/core/Profiler.php
@@ -52,7 +52,8 @@ class Profiler
$profiler = Db::get()->getProfiler();
if (!$profiler->getEnabled()) {
- throw new \Exception("To display the profiler you should enable enable_sql_profiler on your config/config.ini.php file");
+ // To display the profiler you should enable enable_sql_profiler on your config/config.ini.php file
+ return;
}
$infoIndexedByQuery = array();
@@ -133,7 +134,9 @@ class Profiler
{
$totalTime = self::getDbElapsedSecs();
$queryCount = Profiler::getQueryCount();
- Log::debug(sprintf("Total queries = %d (total sql time = %.2fs)", $queryCount, $totalTime));
+ if($queryCount > 0) {
+ Log::debug(sprintf("Total queries = %d (total sql time = %.2fs)", $queryCount, $totalTime));
+ }
}
/**
diff --git a/core/Session/SaveHandler/DbTable.php b/core/Session/SaveHandler/DbTable.php
index 0b91f4c366..249faca6e1 100644
--- a/core/Session/SaveHandler/DbTable.php
+++ b/core/Session/SaveHandler/DbTable.php
@@ -78,8 +78,9 @@ class DbTable implements Zend_Session_SaveHandler_Interface
. ' AND ' . $this->config['modifiedColumn'] . ' + ' . $this->config['lifetimeColumn'] . ' >= ?';
$result = Db::get()->fetchOne($sql, array($id, time()));
- if (!$result)
+ if (!$result) {
$result = '';
+ }
return $result;
}
diff --git a/core/SettingsPiwik.php b/core/SettingsPiwik.php
index f620112805..608d7c55c7 100644
--- a/core/SettingsPiwik.php
+++ b/core/SettingsPiwik.php
@@ -191,7 +191,7 @@ class SettingsPiwik
*/
public static function isPiwikInstalled()
{
- $config = Config::getInstance()->getLocalConfigPath();
+ $config = Config::getInstance()->getLocalPath();
$exists = file_exists($config);
// Piwik is installed if the config file is found
diff --git a/core/Tracker.php b/core/Tracker.php
index 69c1a9b7e0..29973c8981 100644
--- a/core/Tracker.php
+++ b/core/Tracker.php
@@ -559,7 +559,7 @@ class Tracker
* database.
* - **dbname**: The name of the Piwik MySQL database.
* - **port**: The MySQL database port to use.
- * - **adapter**: either `'PDO_MYSQL'` or `'MYSQLI'`
+ * - **adapter**: either `'PDO\MYSQL'` or `'MYSQLI'`
* - **type**: The MySQL engine to use, for instance 'InnoDB'
*/
Piwik::postEvent('Tracker.getDatabaseConfig', array(&$configDb));
@@ -700,7 +700,7 @@ class Tracker
try {
$pluginsTracker = \Piwik\Plugin\Manager::getInstance()->loadTrackerPlugins();
- Common::printDebug("Loading plugins: { " . implode(",", $pluginsTracker) . " }");
+ Common::printDebug("Loading plugins: { " . implode(", ", $pluginsTracker) . " }");
} catch (Exception $e) {
Common::printDebug("ERROR: " . $e->getMessage());
}
diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php
index c391c0484d..bada2f794a 100644
--- a/core/Tracker/Visit.php
+++ b/core/Tracker/Visit.php
@@ -271,11 +271,13 @@ class Visit implements VisitInterface
protected function getTimeSpentReferrerAction()
{
$timeSpent = $this->request->getCurrentTimestamp() - $this->visitorInfo['visit_last_action_time'];
- if ($timeSpent < 0
- || $timeSpent > Config::getInstance()->Tracker['visit_standard_length']
- ) {
+ if ($timeSpent < 0) {
$timeSpent = 0;
}
+ $visitStandardLength = Config::getInstance()->Tracker['visit_standard_length'];
+ if($timeSpent > $visitStandardLength) {
+ $timeSpent = $visitStandardLength;
+ }
return $timeSpent;
}
diff --git a/core/Updates/2.4.0-b8.php b/core/Updates/2.4.0-b8.php
new file mode 100644
index 0000000000..4df50ee0ce
--- /dev/null
+++ b/core/Updates/2.4.0-b8.php
@@ -0,0 +1,29 @@
+<?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\Common;
+use Piwik\Updater;
+use Piwik\Updates;
+
+class Updates_2_4_0_b8 extends Updates
+{
+ static function getSql()
+ {
+ return array(
+ "ALTER TABLE `" . Common::prefixTable('session')
+ . "` CHANGE `id` `id` VARCHAR( 255 ) NOT NULL " => false,
+ );
+ }
+
+ static function update()
+ {
+ Updater::updateDatabase(__FILE__, self::getSql());
+ }
+}
diff --git a/core/Version.php b/core/Version.php
index afdc38f7b5..b11fa037d4 100644
--- a/core/Version.php
+++ b/core/Version.php
@@ -21,5 +21,5 @@ final class Version
* The current Piwik version.
* @var string
*/
- const VERSION = '2.4.0-b7';
+ const VERSION = '2.4.0';
}
diff --git a/core/ViewDataTable/Config.php b/core/ViewDataTable/Config.php
index 383ae043c0..8fbdf85321 100644
--- a/core/ViewDataTable/Config.php
+++ b/core/ViewDataTable/Config.php
@@ -160,6 +160,11 @@ class Config
public $show_goals = false;
/**
+ * Controls whether the 'insights' footer icon is shown.
+ */
+ public $show_insights = true;
+
+ /**
* Array property mapping DataTable column names with their internationalized names.
*
* The default value for this property is set elsewhere. It will contain translations
diff --git a/core/ViewDataTable/Manager.php b/core/ViewDataTable/Manager.php
index 24616ece5c..0559661d44 100644
--- a/core/ViewDataTable/Manager.php
+++ b/core/ViewDataTable/Manager.php
@@ -242,7 +242,9 @@ class Manager
$graphViewIcons['buttons'] = array_filter($graphViewIcons['buttons']);
- if (!empty($insightsViewIcons['buttons'])) {
+ if (!empty($insightsViewIcons['buttons'])
+ && $view->config->show_insights
+ ) {
$result[] = $insightsViewIcons;
}
diff --git a/core/testMinimumPhpVersion.php b/core/testMinimumPhpVersion.php
index 589ffbaaa6..7f03b02479 100644
--- a/core/testMinimumPhpVersion.php
+++ b/core/testMinimumPhpVersion.php
@@ -50,7 +50,8 @@ if ($minimumPhpInvalid) {
To use Piwik, please ask your web host to install php5-json or install it yourself, for example on debian system: <code>sudo apt-get install php5-json</code>. <br/>Then restart your webserver and refresh this page.</p>";
}
- if (!file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php') && !file_exists(PIWIK_INCLUDE_PATH . '/../../autoload.php')) {
+ if (!file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')
+ && !file_exists(PIWIK_INCLUDE_PATH . '/../../autoload.php')) {
$composerInstall = "In the piwik directory, run in the command line the following (eg. via ssh): \n\n"
. "<pre> curl -sS https://getcomposer.org/installer | php \n\n php composer.phar install\n\n</pre> ";
if (DIRECTORY_SEPARATOR === '\\' /* ::isWindows() */) {
@@ -61,8 +62,9 @@ if ($minimumPhpInvalid) {
"<br/>" . $composerInstall.
" This will initialize composer for Piwik and download libraries we use in vendor/* directory.".
"\n\n<br/><br/>Then reload this page to access your analytics reports." .
+ "\n\n<br/><br/>For more information check out this FAQ: <a href='http://piwik.org/faq/how-to-install/faq_18271/' target='_blank'>How do I use Piwik from the Git repository?</a>." .
"\n\n<br/><br/>Note: if for some reasons you cannot install composer, instead install the latest Piwik release from ".
- "<a href='http://builds.piwik.org/piwik-latest.zip'>builds.piwik.org</a>.</p>";
+ "<a href='http://builds.piwik.org/piwik.zip'>builds.piwik.org</a>.</p>";
}
}
diff --git a/js/piwik.js b/js/piwik.js
index 9fe9c4b333..a7ef9f24fc 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -408,13 +408,14 @@ if (typeof JSON2 !== 'object') {
exec,
res, width, height, devicePixelRatio,
pdf, qt, realp, wma, dir, fla, java, gears, ag,
- hook, getHook, getVisitorId, getVisitorInfo, setSiteId, setTrackerUrl, appendToTrackingUrl, getRequest,
+ hook, getHook, getVisitorId, getVisitorInfo, setSiteId, setTrackerUrl, appendToTrackingUrl, getRequest, addPlugin,
getAttributionInfo, getAttributionCampaignName, getAttributionCampaignKeyword,
getAttributionReferrerTimestamp, getAttributionReferrerUrl,
setCustomData, getCustomData,
+ setCustomRequestProcessing,
setCustomVariable, getCustomVariable, deleteCustomVariable,
setDownloadExtensions, addDownloadExtensions,
- setDomains, setIgnoreClasses, setRequestMethod,
+ setDomains, setIgnoreClasses, setRequestMethod, setRequestContentType,
setReferrerUrl, setCustomUrl, setAPIUrl, setDocumentTitle,
setDownloadClasses, setLinkClasses,
setCampaignNameKey, setCampaignKeywordKey,
@@ -1077,8 +1078,15 @@ if (typeof Piwik !== 'object') {
enableJSErrorTracking = false,
+ defaultRequestMethod = 'GET',
+
// Request method (GET or POST)
- configRequestMethod = 'GET',
+ configRequestMethod = defaultRequestMethod,
+
+ defaultRequestContentType = 'application/x-www-form-urlencoded; charset=UTF-8',
+
+ // Request Content-Type header value; applicable when POST request method is used for submitting tracking events
+ configRequestContentType = defaultRequestContentType,
// Tracker URL
configTrackerUrl = trackerUrl || '',
@@ -1086,7 +1094,7 @@ if (typeof Piwik !== 'object') {
// API URL (only set if it differs from the Tracker URL)
configApiUrl = '',
- // This string is appended to the Tracker URL Request (eg. to send data that is not handled by the existin setters/getters)
+ // This string is appended to the Tracker URL Request (eg. to send data that is not handled by the existing setters/getters)
configAppendToTrackingUrl = '',
// Site ID
@@ -1175,6 +1183,8 @@ if (typeof Piwik !== 'object') {
// Custom Variables read from cookie, scope "visit"
customVariables = false,
+ configCustomRequestContentProcessing,
+
// Custom Variables, scope "page"
customVariablesPage = {},
@@ -1367,9 +1377,7 @@ if (typeof Piwik !== 'object') {
}
};
- // see XMLHttpRequest Level 2 spec, section 4.7.2 for invalid headers
- // @link http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html
- xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
+ xhr.setRequestHeader('Content-Type', configRequestContentType);
xhr.send(request);
} catch (e) {
@@ -1824,6 +1832,11 @@ if (typeof Piwik !== 'object') {
if (configAppendToTrackingUrl.length) {
request += '&' + configAppendToTrackingUrl;
}
+
+ if (isFunction(configCustomRequestContentProcessing)) {
+ request = configCustomRequestContentProcessing(request);
+ }
+
return request;
}
@@ -2436,6 +2449,27 @@ if (typeof Piwik !== 'object') {
},
/**
+ * Configure function with custom request content processing logic.
+ * It gets called after request content in form of query parameters string has been prepared and before request content gets sent.
+ *
+ * Examples:
+ * tracker.setCustomRequestProcessing(function(request){
+ * var pairs = request.split('&');
+ * var result = {};
+ * pairs.forEach(function(pair) {
+ * pair = pair.split('=');
+ * result[pair[0]] = decodeURIComponent(pair[1] || '');
+ * });
+ * return JSON.stringify(result);
+ * });
+ *
+ * @param function customRequestContentProcessingLogic
+ */
+ setCustomRequestProcessing: function (customRequestContentProcessingLogic) {
+ configCustomRequestContentProcessing = customRequestContentProcessingLogic;
+ },
+
+ /**
* Appends the specified query string to the piwik.php?... Tracking API URL
*
* @param string queryString eg. 'lat=140&long=100'
@@ -2456,6 +2490,18 @@ if (typeof Piwik !== 'object') {
},
/**
+ * Add plugin defined by a name and a callback function.
+ * The callback function will be called whenever a tracking request is sent.
+ * This can be used to append data to the tracking request, or execute other custom logic.
+ *
+ * @param string pluginName
+ * @param Object pluginObj
+ */
+ addPlugin: function (pluginName, pluginObj) {
+ plugins[pluginName] = pluginObj;
+ },
+
+ /**
* Set custom variable within this visit
*
* @param int index
@@ -2588,7 +2634,18 @@ if (typeof Piwik !== 'object') {
* @param string method GET or POST; default is GET
*/
setRequestMethod: function (method) {
- configRequestMethod = method || 'GET';
+ configRequestMethod = method || defaultRequestMethod;
+ },
+
+ /**
+ * Set request Content-Type header value, applicable when POST request method is used for submitting tracking events.
+ * See XMLHttpRequest Level 2 spec, section 4.7.2 for invalid headers
+ * @link http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html
+ *
+ * @param string requestContentType; default is 'application/x-www-form-urlencoded; charset=UTF-8'
+ */
+ setRequestContentType: function (requestContentType) {
+ configRequestContentType = requestContentType || defaultRequestContentType;
},
/**
@@ -2986,8 +3043,9 @@ if (typeof Piwik !== 'object') {
/**
* Log special pageview: Internal search
*
- * @param string customTitle
- * @param mixed customData
+ * @param string keyword
+ * @param string category
+ * @param int resultsCount
*/
trackSiteSearch: function (keyword, category, resultsCount) {
trackCallback(function () {
diff --git a/lang/cs.json b/lang/cs.json
index 3e5612f111..c8853a2bdb 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -12,25 +12,41 @@
"ColumnNoResultKeyword": "Hledané klíÄové slovo nebylo nalezeno",
"ColumnPageName": "Jméno stránky",
"ColumnPagesPerSearch": "Stránka hledaných výsledků",
- "ColumnPagesPerSearchDocumentation": "NávÅ¡tÄ›vník hledal na Vaší strance a obÄas klikla na \"Další\" k zobrazení více výsledků. Toto je průmÄ›rné Äíslo stránky s výsledky vyhledávání zobrazené na toto klíÄové slovo.",
+ "ColumnPagesPerSearchDocumentation": "NávÅ¡tÄ›vník hledal na Vaší stránce a obÄas klikl na \"Další\" k zobrazení více výsledků. Toto je průmÄ›rné Äíslo stránky s výsledky vyhledávání zobrazené na toto klíÄové slovo.",
"ColumnPageURL": "URL stránky",
"ColumnSearchCategory": "Hledání kategorie",
"ColumnSearches": "Vyhledávání",
- "ColumnSearchesDocumentation": "PoÄet uživatelů, kteří hledali tyto klíÄová slova ve vyhledavaÄi na VaÅ¡ich stránkách.",
+ "ColumnSearchesDocumentation": "PoÄet uživatelů, kteří hledali tato klíÄová slova ve vyhledávaÄi na VaÅ¡ich stránkách.",
"ColumnSearchExits": "% Nalezených výstupů",
- "ColumnSearchExitsDocumentation": "Procento návÅ¡tÄ›v, kteří opustitli stránku po nalezení tohoto klíÄového slova pomocí vyhledavaÄe.",
+ "ColumnSearchExitsDocumentation": "Procento návÅ¡tÄ›v, které opustily stránku po nalezení tohoto klíÄového slova pomocí vyhledávaÄe.",
"ColumnSearchResultsCount": "PoÄet nalezených výsledků",
"ColumnSiteSearchKeywords": "Unikátních klíÄových slov",
"ColumnUniqueClicks": "Unikátních prokliků",
- "ColumnUniqueClicksDocumentation": "PoÄet návÅ¡tÄ›v které klikli na tento odkaz. Pokud bylo na odkaz kliknuto vícekrát pÅ™i jedné návÅ¡tÄ›vÄ›, je kliknutí zapoÄítáno jen jednou.",
+ "ColumnUniqueClicksDocumentation": "PoÄet návÅ¡tÄ›v, které klikly na tento odkaz. Pokud bylo na odkaz kliknuto vícekrát pÅ™i jedné návÅ¡tÄ›vÄ›, je kliknutí zapoÄítáno jen jednou.",
"ColumnUniqueDownloads": "Unikátních stažení",
"ColumnUniqueOutlinks": "Unikátní externí odkazy",
"DownloadsReportDocumentation": "V tomto hlášení můžete vidÄ›t soubory, které byly staženy. %s Které Piwik poÄítá jako stažené jsou jen ty, na které bylo kliknuto. Bez ohledu na to, jestli bylo stažení dokonÄeno nebo pÅ™eruÅ¡eno. To Piwik neumí zjistit.",
- "EntryPageTitles": "Vstupní titulky stránky",
+ "EntryPagesReportDocumentation": "Toto hlášení obsahuje informace o vstupních stránkách, které byly použity v daném období. Vstupní stránka je první stránka, kterou uživatel zobrazí při své návštěvě. %s URL vstupních stránek jsou zobrazeny jako strom složek.",
+ "EntryPageTitles": "Titulky vstupních stránek",
+ "EntryPageTitlesReportDocumentation": "Toto hlášení obsahuje informace o titulcích vstupních stránek, které byly použity v daném období.",
+ "ExitPagesReportDocumentation": "Toto hlášení obsahuje informace o výstupních stránkách, které se vyskytly v daném období. Výstupní stránka je poslední stránkou, kterou uživatel zobrazí během své návštěvy. %s URL výstupních stránek jsou zobrazeny jako strom složek.",
"ExitPageTitles": "Výstupní titulky stránky",
+ "ExitPageTitlesReportDocumentation": "Toto hlášení obsahuje informace o titulcích výstupních stránek za dané období.",
+ "LearnMoreAboutSiteSearchLink": "ZjistÄ›te více o sledování toho, jak návÅ¡tÄ›vníci používaí váš vyhledávaÄ.",
+ "OneSearch": "1 Vyhledávání",
+ "OutlinkDocumentation": "Externí odkaz je odkaz, který vede z vašich stránek na jinou domén.",
+ "OutlinksReportDocumentation": "Toto hlášení zobrazuje hyerarchický seznam URL externích odkazů, na které vaši návštěvníci klikli.",
+ "PagesReportDocumentation": "Toto hlášení obsahuje informace o URL navštívených. %s Tabulka je organizována hyerarchicky jako strom složek.",
+ "PageTitlesReportDocumentation": "Toto hlášení obsahuje informace o titulcích navÅ¡tívených stránek. %s Titulek je HTML tag %s, který vÄ›tÅ¡ina prohlížeÄů zobrazuje v titulku okna.",
"PageUrls": "URL stránky",
"PluginDescription": "Hlásí zobrazení stránek, odchozí odkazy a stažení. Zaznamenávání odchozích stránek a stahování je automatické!",
+ "SiteSearchCategories1": "Toto hlášení shrnuje kategorie, které návštěvníci vybrali při vyhledávání na stránkách.",
+ "SiteSearchCategories2": "Například elektronické obchody mívají filtr kategorií, aby mohli uzákazníci zvolit, ve které kategorii bude provedeno hledání.",
+ "SiteSearchFollowingPagesDoc": "Když návÅ¡tÄ›vníci hledají na vaÅ¡ich stránkách, snaží se nalézt urÄitou stránku, obhsa, produkt, nebo službu. Toto hlášení zobrazuje stránky, na které bylo klikáno nejÄastÄ›ji po interním vyhledávání. Jinak Å™eÄeno, jedná se o stránky, které byly nejvíce hledány návÅ¡tÄ›vníky, kteří už byli na vaÅ¡ich stránkách.",
+ "SiteSearchIntro": "Sledování vyhledávání na vašich stránkách je velmi efektivní způsob, jak se dozvědět více o tom, co vaši návštěvníci na stránkách hledají, jaký obsah by je mohl zajímat, jaké produkty by si mohli chtít koupit, a jak jim obecně zpříjemnit pobyt na vašich stránkách.",
"SiteSearchKeyword": "KlíÄová slova (Vyhledávání)",
+ "SiteSearchKeywordsDocumentation": "Toto hlášení shrnuje klíÄová slova, která byla použita návÅ¡tÄ›vníky pÅ™i hledání pomocí interního vyhledávaÄe.",
+ "SiteSearchKeywordsNoResultDocumentation": "Toto hlášení shrnuje klíÄová slova, pro která nebyl vrácen žádný výsledek. Možná by bylo možné vylepÅ¡it vyhledávací algoritmus, nebo návÅ¡tÄ›vníci hledají nÄ›co, co (zatím) není na vaÅ¡ich stránkách?",
"SubmenuPagesEntry": "Vstupní stránky",
"SubmenuPagesExit": "Odchozí stránky",
"SubmenuPageTitles": "Titulky stránek",
@@ -59,9 +75,12 @@
"HideAnnotationsFor": "Skrýt anotace %s...",
"IconDesc": "Zobrazit poznámky k tomuto Äasovému rozpÄ›tí.",
"IconDescHideNotes": "Skrýt poznámky zvoleného rozsahu.",
+ "InlineQuickHelp": "Můžete vytvořit anotace k důležitým událostem, jako je třeba nový příspěvek na blogu, redesign stránek, nebo cokoliv, co považujete za důležité.",
"LoginToAnnotate": "Přihlásit se pro vytvoření anotace.",
"NoAnnotations": "Nejsou zde žádné anotace k tomuto Äasovému rozpÄ›tí.",
- "ViewAndAddAnnotations": "Zobrazit a přidat anotace k %s..."
+ "PluginDescription": "Dovoluje vám pÅ™idat poznámky k jednotlivým dnům (k oznaÄení zmÄ›n na stránkách, poznamenání analýz dat, které lze sdílet s kolegy...). Anotováním dat zajistíte, že budete v budoucnu vÄ›dÄ›t, proÄ data vypadají tak, jak vypadají.",
+ "ViewAndAddAnnotations": "Zobrazit a přidat anotace k %s...",
+ "YouCannotModifyThisNote": "Nemůžete upravit tuto anotaci, protože jste ji nevytvořil(a) a ani nemáte administrátorský přístup k této stránce."
},
"API": {
"GenerateVisits": "Pokud pro dneÅ¡ek nemáte data, můžete je nejprve vygenerovat pomocí zásuvného modulu %s. Můžete povolit zásuvný modul %s a poté kliknout na 'Generátor návÅ¡tÄ›v' v menu v administraÄní Äásti Piwiku",
@@ -76,36 +95,75 @@
},
"CoreAdminHome": {
"Administration": "Administrace",
+ "ArchivingSettings": "Archivování nastavení",
"BrandingSettings": "OznaÄení nastavení",
+ "CheckReleaseGetVersion": "Při kontrole nových verzí Piwiku vždy získat",
"ClickHereToOptIn": "Klikněte zde pro přihlášení.",
"ClickHereToOptOut": "Klikněte zde odhlásit.",
+ "CustomLogoFeedbackInfo": "Pokud přizpůsobíte logo Piwiku, možná by vás zajímalo, jak skrýt odkaz %s v horním menu, Pokud to chcete provést, zakažte plugin zpětné vazby na stránce %sSpravovat zásuvné moduly%s.",
+ "CustomLogoHelpText": "Můžete přizpůsobit logo Piwiku, které bude zobrazeno v uživatelském rozhraní a v e-mailových hlášeních.",
"EmailServerSettings": "Nastavení server E-mailu",
+ "FaviconUpload": "Vyberte favicon, kterou chcete nahrát",
"ForBetaTestersOnly": "Pouze pro beta testery",
"ImageTracking": "Sledováním obrázkem",
"ImageTrackingIntro1": "Pokud má návštěvník vypnutý JavaScript nebo nemůže být JavaScript použit. Můžete využít obrázku k měření a sledování Vaší návštěvnosti.",
+ "ImageTrackingIntro2": "Níže vygenerujte odkaz a vložte vygenerované HTML do kódu stránky. Pokud ho používáte jako nouzové řešení místo javascriptového sledování, můžete ho obalit do tagů %1$s.",
+ "ImageTrackingIntro3": "Všechny možnosti, které lze použít u obrázkového sledovacího odkazu najdete v %1$sdokumentaci sledovacího API%2$s.",
"ImageTrackingLink": "Odkaz pro sledování obrázkem",
"ImportingServerLogs": "Důležitá serverová hlášení.",
+ "ImportingServerLogsDesc": "Alternativou ke sledování návštěvníků pomocí javascriptu nebo obrázku je neustálý import logu web serveru. Více informací najdeve v dokumentaci %1$sanalýzy log souborů%2$s.",
+ "InvalidPluginsYouCanUninstall": "Tyto zásovné moduly můžete aktualizovat nebo odinstalovat na stránce %1$ssprávy zásuvných modulů%2$s.",
"JavaScriptTracking": "Sledování javascriptem",
"JSTracking_CampaignKwdParam": "KlíÄové slovo kampanÄ›",
"JSTracking_CampaignNameParam": "Název kampaně",
+ "JSTracking_CustomCampaignQueryParam": "Pro jméno kampanÄ› a klíÄové slovo použít vlastní parametry dotazu",
+ "JSTracking_CustomCampaignQueryParamDesc": "Poznámka: %1$sPiwik automaticky detekuje parametry pro Google analitics.%2$s",
+ "JSTracking_EnableDoNotTrack": "Pocolit detekci klientů s povolenou volbou \"nesledovat\"",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Poznámka: Serverová detekce volby \"nesledovat\" byla povolena, takže tato volba nebude mít vliv.",
+ "JSTracking_EnableDoNotTrackDesc": "Sledovací požadavky nebudou zaslány, pokud si to návštěvníci nepřejí.",
+ "JSTracking_GroupPageTitlesByDomain": "Před titulek stránky při sledování připojit doménu stránek",
+ "JSTracking_MergeAliases": "Ve \"hlášení externích odkazů\" skrýt kliknutí na známé aliasy",
+ "JSTracking_MergeAliasesDesc": "Takže kliky na URL aliasů (napÅ™. %s) nebudou poÄítány jako externí odkazy.",
+ "JSTracking_MergeSubdomains": "Sledovat všechny návštěvníky na všech subdoménách",
"JSTracking_MergeSubdomainsDesc": "Pokud uživatel navštíví %1$s a %2$s, budou zaznamenáni jako unikátní uživatelé.",
+ "JSTracking_PageCustomVars": "Sledovat vlastní proměnnou pro každé zobrazení stránky",
"JSTracking_PageCustomVarsDesc": "Například proměnná s názvem 'Kategorie' a hodnotou \"White papers\"",
+ "JSTracking_VisitorCustomVars": "Sledovat vlastní proměnné pro tohoto návštěvníka",
+ "JSTracking_VisitorCustomVarsDesc": "Například se jménem \"Typ\" a hodnotou \"zákazník\".",
+ "JSTrackingIntro1": "NávÅ¡tÄ›vníky vaÅ¡ich stránekek můžete sledovat mnoha způsoby. DoporuÄená metoda je pomocí javascriptu. Aby to bylo možné, každá z vaÅ¡ich stránek musí mít javascriptový kód, který můžete vygenerovat zde,",
+ "JSTrackingIntro2": "Až budete mít sledovací javascriptový kód, vložte ho do všech stránek, které mají být Piwikem sledovány.",
"LatestBetaRelease": "Poslední testovací verze",
"LatestStableRelease": "Poslední stabilní verze",
"LogoUpload": "Vyberte logotyp",
+ "LogoUploadHelp": "Prosím, nahrajte soubor v jednom z následujících formátů: %s, s minimální výškou %s pixelů.",
"MenuDiagnostic": "Diagnostika",
"MenuGeneralSettings": "Hlavní nastavení",
"MenuManage": "Správa",
+ "OptOutComplete": "VylouÄení hotovo. VaÅ¡e návÅ¡tÄ›vy nebudou sledovány nástrojem webové analýzy.",
+ "OptOutCompleteBis": "Poznámka: pokud smažete cookie, odstraníte vyluÄovací cookie nebo zmmÄ›níte poÄítaÄ nebo prohlížeÄ, budete muset provést proceduru vylouÄení znovu.",
+ "OptOutExplanation": "Piwik se zaměřuje na poskytování soukromí na internetu. Pokud chcete dát svým návÅ¡tÄ›vníkům možnost, aby byli vylouÄeni z webové analýzy Piwikem, můžete na nÄ›jakou stránku (tÅ™eba stránku o soukromí) umístit následující HTML kód.",
+ "OptOutExplanationBis": "Tento kód zobrazí iframe s odkazem, který nastaví u návštěvníka vynechávací cookie. %s Klikněte zde%s pro zobrazení obsahu iframe.",
"OptOutForYourVisitors": "Piwik odhlášení pro Vaše návštěvníky",
"PiwikIsInstalledAt": "Piwik je nainstalován na",
"PluginDescription": "AdministraÄní Äást Piwiku",
+ "PluginSettingChangeNotAllowed": "Nemůžete změnit hodnotu volby %s zásuvného modulu \"%s\"",
+ "PluginSettingReadNotAllowed": "Nemůžete Äíst hodnotu volby %s zásuvného modulu \"%s\"",
"PluginSettings": "Nastavení pluginu",
+ "PluginSettingsIntro": "Zde můžete změnit nastavení pro následující zásuvné moduly třetích stran:",
+ "PluginSettingsValueNotAllowed": "Hodnota pro pole \"%s\" zásuvného modulu \"%s\" není povolena",
+ "SendPluginUpdateCommunication": "Odeslat e-mail s upozorněním, když je vydána aktualizace zásuvného modulu",
+ "SendPluginUpdateCommunicationHelp": "Superuživatelům bude odeslán e-mail, když bude k dispozici aktualizace zásuvného modulu.",
"StableReleases": "Piwik je důležitý nástroj pro měření, doporuÄujeme vždy používat nejnovÄ›jší vydání. Pokud používáte nejnovÄ›jší beta verzi a naÅ¡li jste chyby, prosíme o jejich nahlášení %spřímo zde %s.",
"TrackAGoal": "Sledovat cíl",
"TrackingCode": "Sledovací kód",
+ "TrustedHostConfirm": "Jste si jist(a), že chcete změnit důvěryhodné jméno hostitele Piwiku?",
+ "TrustedHostSettings": "Důvěryhodné jméno hostitele Piwiku",
+ "UpdateSettings": "Aktualizovat nastavení",
"UseCustomLogo": "Použít vlastní logotyp",
+ "ValidPiwikHostname": "Platné jméno hostitele Piwiku",
"WithOptionalRevenue": "volitelné hodnoty",
"YouAreOptedIn": "Návštěva této stránky se aktuálně zaznamenává pomocí Piwik Wabanalyse.",
+ "YouAreOptedOut": "AktuálnÄ› jste vylouÄen.",
"YouMayOptOut": "Zde se můžete rozhodnou, 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."
},
@@ -113,17 +171,31 @@
"CategoryNoData": "V této kategorii nejsou k dispozici žádná data. Zkuste \"Zobrazit všechny výsledky\".",
"CheckForUpdates": "Zkontrolovat aktualizace",
"CheckPiwikOut": "Vyzkoušejte Piwik!",
+ "CloseWidgetDirections": "Tento widget můžete zavřít kliknutím na ikonu X na horní Äásti widgetu.",
+ "DataForThisReportHasBeenPurged": "Data pro toto hlášení jsou starší než %s měsíců a byla odstraněna.",
+ "DataTableExcludeAggregateRows": "Agregované řádky jsou zobrazeny %s Skrýt",
+ "DataTableIncludeAggregateRows": "Agregované řádky jsou skryty %s Zobrazit",
"DateFormat": "%longDay% %day% %longMonth% %longYear%",
"Default": "výchozí",
"DonateCall1": "Piwik Vás nic nestojí, ale to neznemená, že nás vývoj nic nestojí.",
"DonateCall2": "Piwik potřebuje Vaši podporu, aby mohl růst a prosperovat.",
"DonateFormInstructions": "KliknÄ›te na posuvník ke zvolení Äástky, poté kliknÄ›te na tlaÄítko Subscribe.",
+ "ExcludeRowsWithLowPopulation": "VÅ¡echny řádky jsou zobrazeny %s VylouÄit nízkou populaci",
+ "ExternalHelp": "Nápověda (otevře se v nové záložce)",
+ "FlattenDataTable": "Hlášení je hierarchické %s Zploštit",
"HowMuchIsPiwikWorth": "Jak moc si ceníte Piwiku?",
+ "IncludeRowsWithLowPopulation": "Řádky s nízkou populací jsou skryty %s Zobrazit všechny řádky",
+ "InjectedHostEmailBody": "Aoj. Dnes jsem se snažil fodzsz fo \\Piwiku a dosta jsem varování o neznámém ménu hostitele.",
+ "InjectedHostEmailSubject": "K piwiku bylo přistupováno s neznámým jménem hostitele %s",
+ "InjectedHostSuperUserWarning": "Piwik může být Å¡patnÄ› nakonfigurován, například pokud byl pÅ™esunut na nový server nebo URL. Můžete %1$skliknout zde a pÅ™idat %2$s jako platné jméno hostitele Piwiku (pokud mu důvěřujete)%3$s, nebo %4$s kliknÄ›te zde%5$s pro bezpeÄný přístup k Piwiku%6$s.",
+ "InjectedHostWarningIntro": "Nyní přistupujete k Piwiku z %1$s, ale byl nakonfigurován, aby naslouchal na následující adrese: %2$s.",
"JavascriptDisabled": "Musíte mít zapnutý JavaScript, jinak Piwik nezobrazíte.<br \/> Nebo jen není Váš prohlížeÄ mezi podporovanými.<br \/>Pro běžné zobrazení zapnÄ›te JavaScript ve svém prohlížeÄi, poté %1$szkuste znovu%2$s.<br \/>",
"LongMonthFormat": "%longYear%, %longMonth%",
+ "LongWeekFormat": "%dayFrom% %longMonthFrom% - %dayTo% %longMonthTo% %longYearTo%",
"MakeADifference": "Udělej změnu: %1$sPřispěj na vývoj%2$s nové verze Piwik 2.0",
"MakeOneTimeDonation": "Provést jednorázový dar.",
"NoPrivilegesAskPiwikAdmin": "Jste přihlášen jako '%s' ale zdá se, že nemáte povolení k nastavení Piwik. %s Zeptejte se Vašeho Piwik administrátora (klikem na email)%s aby Vám dal 'view' přístup na stránku.",
+ "OnlyForSuperUserAccess": "Tento widget je zobrazován pouze uživatelům se superuživatelským přístupem.",
"PageOf": "%1$s z %2$s",
"PeriodDay": "Den",
"PeriodDays": "dnů",
@@ -137,6 +209,7 @@
"PluginDescription": "Struktura hlášení",
"ReportGeneratedOn": "Hlášení vygenerované %s",
"ReportGeneratedXAgo": "Hlášení vygenerovaní již %s",
+ "SharePiwikLong": "Nazdar! Zrovna jsem našel skvělý open source software Piwik!",
"SharePiwikShort": "Piwik! Bezplatná webová analytika. Vlastni svá data.",
"ShareThis": "Sdílet",
"ShortDateFormat": "%shortDay% %day% %shortMonth%",
@@ -144,44 +217,122 @@
"ShortMonthFormat": "%shortMonth% %longYear%",
"ShortWeekFormat": "%dayFrom% %shortMonthFrom% - %dayTo% %shortMonthTo% %shortYearTo%",
"ShowJSCode": "Zobrazit JavaScriptový kód ke vložení",
+ "SubscribeAndBecomePiwikSupporter": "PokraÄujte na zabezpeÄenou platební stránku (Paypal), pokud se chcete stát podpůrcem Piwiku.",
"SupportPiwik": "Podpořte Piwik!",
"TableNoData": "Žádna data",
"ThereIsNoDataForThisReport": "Pro toto hlášení nejsou k dispozici žádná data",
+ "UnFlattenDataTable": "Hlášení je ploché %s Vytvořit hierarchický",
"ViewAllPiwikVideoTutorials": "Zobrazit všechny návody Piwik",
"WebAnalyticsReports": "Hlášení",
"YouAreUsingTheLatestVersion": "Používáte nejnovější verzi Piwik."
},
"CorePluginsAdmin": {
"ActionActivatePlugin": "Aktivovat plugin",
+ "ActionActivateTheme": "Aktivovat Å¡ablonu",
"ActionInstall": "Instalovat",
"ActionUninstall": "Odinstalovat",
"Activate": "Povolit",
"Activated": "Aktivován",
"Active": "Povolen",
"Activity": "Aktivita",
+ "AllowedUploadFormats": "Na této stránce můžete nahrát zásuvný modul nebo šablonu ve formátu .zip.",
"AuthorHomepage": "Domovská stránka autorů",
"Authors": "Autoři",
+ "BackToExtendPiwik": "Zppět na obchod",
+ "BeCarefulUsingPlugins": "Zásuvné moduly, které nejsou tvořeny týmem Piwiku musí být používány opatrně: nekontrolovali jsme je.",
+ "BeCarefulUsingThemes": "Šablony, které nejsou tvořeny týmem Piwiku musí být používány opatrně: nekontrolovali jsme je.",
+ "ByDesigningOwnTheme": "Vytvoření %svlastní šablony%s",
+ "ByInstallingNewPluginFromMarketplace": "Instalováním %snového zásuvného modulu z obchodu%s",
+ "ByInstallingNewThemeFromMarketplace": "Instalováním %snov éšablony z obchodu%s",
+ "ByWritingOwnPlugin": "%sNapsáním vlastního zásuvného modulu%s",
+ "Changelog": "Protokol změn",
+ "ChangeSettingsPossible": "Pro tento zásuvný modul můžete změnit %snastavení%s.b",
+ "CorePluginTooltip": "Jaderné zásuvné moduly nemají verzi, protože jsou distribuovány s Piwikem.",
"Deactivate": "Zakázat",
"Developer": "Vývojář",
+ "DoMoreContactPiwikAdmins": "Pokud chcete nainstalovat nový zásuvný modul nebo šablonu,, kontaktujte vaše administrátory Piwiku.",
+ "DownloadAndInstallPluginsFromMarketplace": "Můžete automaticky stáhnout a nainstalovat zásuvné moduly z %sobchodu%s.",
+ "EmailToEnquireUpdatedVersion": ";Napište e-mail %1$s a požádejte o novější verzi %2$s.",
+ "EnjoyAnotherLookAndFeelOfThemes": "Vychutnejte si novývzhled",
+ "FeaturedPlugin": "DoporuÄovaný zásuvný modul",
+ "GetEarlyAccessForPaidPlugins": "Poznámka: MomentálnÄ› jsou vÅ¡echny zásuvné moduly v obchodÄ› zdarma. V budoucnu máme v plánu povolit placené zásuvné moduly. %sKontaktujte nás%s pro vÄasný přístup.",
+ "GetNewFunctionality": "Získat novou funkcionalitu",
"History": "Historie",
"Inactive": "Zakázán",
+ "InfoPluginUpdateIsRecommended": "Aktualizujte vaše zásuvné moduly nyní, abyste mohli využít všechna vylepšení.",
+ "InfoThemeUpdateIsRecommended": "Aktualizujte vaše šablony a užívejte si poslední verzi.",
+ "InstallingPlugin": "Instalování %s",
+ "InstallNewPlugins": "Instalovat nové zásuvné moduly",
+ "InstallNewThemes": "Instalovat nové šablony",
+ "LastCommitTime": "(Poslední změna %s)",
+ "LastUpdated": "Naposledy aktualizován",
"LicenseHomepage": "Povolená domovská stránka",
"MainDescription": "Zásuvné moduly rozšiřují funkce Piwiku. Po instalaci zásuvného modulu jej můžete povolit nebo zakázat zde.",
+ "Marketplace": "Obchod",
+ "MarketplaceSellPluginSubject": "Obchod - prodat zásuvný modul",
"MenuPlatform": "Platforma",
+ "MissingRequirementsNotice": "Prosím aktualizujte %1$s%2$s na novější verzi, je vyžadována %1$s %3$s.",
+ "NoPluginsFound": "Žádné zásuvné moduly nenalezeny",
+ "NotAllowedToBrowseMarketplacePlugins": "Můžete si projít zásuvné moduly, které rozšiřují možnosti Piwik platformy. Pokud některý z nich potřebujete, kontaktujte administrátora.",
+ "NotAllowedToBrowseMarketplaceThemes": "Můžete si projít seznam šablon, které mohou být instalovány k přizpůsobení vzhledu Piwik platformy. Pokud nějakou z nich chcete použít, kontaktujte administrátora.",
+ "NoThemesFound": "Nenalezeny žádné šablony",
+ "NoZipFileSelected": "Prosím vyberte soubor .zip.",
+ "NumDownloadsLatestVersion": "Poslední verze: %s Stažení",
+ "NumUpdatesAvailable": "%s Dostupné aktualizace",
+ "OrByUploadingAPlugin": "nebo %snahráním zásuvného modulu%s",
+ "OrByUploadingATheme": "nebo %snahráním šablony%s",
+ "Origin": "Původ",
+ "OriginCore": "Jádro",
+ "OriginThirdParty": "Třetí strana",
"PluginDescription": "AdministraÄní rozhraní zásuvných modulů",
"PluginHomepage": "Domovká stránka zásuvného modulu",
+ "PluginKeywords": "KlíÄová slova",
+ "PluginNotCompatibleWith": "%1$s zásuvný modul není kompatibilní s %2$s",
+ "PluginNotWorkingAlternative": "Pokud jste tento plugin používali, možná najdete v obchodě novější verzi. Pokud ne, možná ho chcete odinstalovat.",
+ "PluginRequirement": "%1$s vyžaduje %2$s.",
"PluginsManagement": "Správa zásuvných modulů",
+ "PluginUpdateAvailable": "Používáte verzi %s, ale je dostupná novější verze %s.",
+ "PluginVersionInfo": "%1$s z %2$s",
+ "PluginWebsite": "Stránky zásuvného modulu",
+ "Screenshots": "Snímky obrazovky",
+ "SortByAlpha": "alfa",
+ "SortByNewest": "nejnovější",
+ "SortByPopular": "populární",
"Status": "Stav",
+ "StepDownloadingPluginFromMarketplace": "Stahování zásuvného modulu z obchodu",
+ "StepDownloadingThemeFromMarketplace": "Stahování šablony z obchodu",
+ "StepPluginSuccessfullyInstalled": "Úspěšně jste nainstalovali zásuvný modul %1$s %2$s.",
+ "StepPluginSuccessfullyUpdated": "Úspěšně jste aktualizovali zásuvný modul %1$s %2$s.",
+ "StepReplaceExistingPlugin": "Nahrazování existujícího zásuvného modulu",
+ "StepReplaceExistingTheme": "Nahrazování existující šablony",
+ "StepThemeSuccessfullyInstalled": "Úspěšně jste nainstalovali šablonu %1$s %2$s.",
+ "StepThemeSuccessfullyUpdated": "Úspěšně jste aktualizovali šablonu %1$s %2$s.",
+ "StepUnzippingPlugin": "Rozbalování zásuvného modulu",
+ "StepUnzippingTheme": "Rozbalování šablony",
+ "SuccessfullyActicated": "Úspěšně jste aktivovali <strong>%s<\/strong>.",
+ "Support": "Podpora",
+ "TeaserExtendPiwik": "Rozšiřte Piwik s použitím zásuvných modulů a šablon",
+ "TeaserExtendPiwikByPlugin": "Rozšiřte Piwik instalací nového zásuvného modulu",
+ "TeaserExtendPiwikByTheme": "Užijte si jiný vzhled po instalaci nové šablony",
+ "TeaserExtendPiwikByUpload": "Rozšiřte Piwik nahráním zip souboru",
"Theme": "Å ablona",
"Themes": "Å ablony",
+ "ThemesDescription": "Šablony mohou změnit vzhled uživatelského rozhraní Piwiku a přinést nový zážitek z vašich analytických hlášení.",
"ThemesManagement": "Správce šablon",
- "Version": "Verze"
+ "UninstallConfirm": "Chystáte se odebrat zásuvný modul %s. Tento modul bude kompletně odebrán z platformy a akci nebude možné vrátit zpět. Jste si jisti, že to chcete provést?",
+ "Updated": "Aktualizováno",
+ "UpdatingPlugin": "Aktualizace %s",
+ "UploadZipFile": "Nahrát zip soubor",
+ "Version": "Verze",
+ "ViewRepositoryChangelog": "Zobrazit změny",
+ "Websites": "Stránky"
},
"CoreUpdater": {
"ClickHereToViewSqlQueries": "Klikněte zde, abyste viděli a zkopírovali SQL dotazy, které mají být spuštěny",
"CreatingBackupOfConfigurationFile": "Vytvářím zálohu konfiguraÄního souboru v %s",
"CriticalErrorDuringTheUpgradeProcess": "Při aktualizaci nastala kritická chyba:",
"DatabaseUpgradeRequired": "Vyžadováno povýšení databáze",
+ "DisablingIncompatiblePlugins": "Zakazování nekompatibilních zásuvných modulů %s",
"DownloadingUpdateFromX": "Stahuji aktualizaci z %s",
"DownloadX": "Stáhnout %s",
"EmptyDatabaseError": "Databáze %s je prázdná. Musíte upravit konfiguraÄní soubor Piwiku, nebo jej vymazat",
@@ -196,19 +347,28 @@
"ExceptionArchiveEmpty": "Archiv je prázdný",
"ExceptionArchiveIncompatible": "Nekompatibilní archiv: %s",
"ExceptionArchiveIncomplete": "Archív je nekompletní: některé soubory chybí (např.: %s).",
+ "FeedbackRequest": "Zde můžete s týmem Piwiku sdílet nápady a návrhy:",
"HelpMessageContent": "Zkontrolujte %1$s Piwik FAQ %2$s , který vysvÄ›tluje nejÄastÄ›jsí chybi pÅ™i aktualizaci. %3$s Požádejte vaÅ¡eho systémového administrátora - může vám pomoct s chybou, která je nejÄastÄ›ji způsobena nastavením serveru MySQL.",
"HelpMessageIntroductionWhenError": "Níže je hlavní chybová hláška. Pomůže vám zjistit příÄinu,. ale pokud budete potÅ™ebovat další pomoc:",
"HelpMessageIntroductionWhenWarning": "Aktualizace probÄ›hla v pořádku, ale byly zaznamenány problémy. Prosím pÅ™eÄtÄ›te si nižší popis. Pro další pomoc:",
+ "HighTrafficPiwikServerEnableMaintenance": "Pokud provozujete Piwik server s velkým provozem, doporuÄujeme %sna chvíli zakázat sledování návÅ¡tÄ›vníků a pÅ™epnout uživatelské rozhraní do režimu údržby%s.",
+ "IncompatbilePluginsWillBeDisabledInfo": "Poznámka: Některé zásuvné moduly nejsou kompatibilní s Piwikem %s. Budou zakázány při aktualizaci:",
"InstallingTheLatestVersion": "Instaluji poslední verzi",
"MajorUpdateWarning1": "Toto je důležitá aktualizace! Zabere více Äasu, než obvykle.",
+ "MajorUpdateWarning2": "Následující doporuÄení je pÅ™edevším důležité pro velké instalace.",
"NoteForLargePiwikInstances": "Důležitá poznámka pro rozsáhlé instalace Piwiku",
"NoteItIsExpectedThatQueriesFail": "Poznámka: Pokud budete SQL dotazy spouÅ¡tÄ›t ruÄnÄ›, nÄ›které z nich selžou. V tom případÄ› chyby jednoduÅ¡e ignorujte a spusÅ¥te další dotazy",
+ "NotificationClickToUpdatePlugins": "Klikněte zde pro aktualizaci vašich zásuvných modulů:",
+ "NotificationClickToUpdateThemes": "Klikněte zde pro aktualizaci vašich šablon:",
+ "NotificationSubjectAvailableCoreUpdate": "Je dostupný nový Piwik %s",
+ "NotificationSubjectAvailablePluginUpdate": "Jsou dostupné aktualizace pro vaše zásuvné moduly",
"PiwikHasBeenSuccessfullyUpgraded": "Piwik byl úspěšně aktualizován!",
"PiwikUpdatedSuccessfully": "Piwik úspěšně aktualizován!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Databáze Piwiku bude aktualizována z verze %1$s na novou verzi %2$s.",
"PluginDescription": "Mechanismus aktualizace Piwiku",
"ReadyToGo": "PÅ™ipraven pokraÄovat?",
"TheFollowingPluginsWillBeUpgradedX": "Následující zásuvné moduly budou aktualizovány: %s.",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Některé moduly, které používáte, byly v obchodě aktualizovány:",
"ThereIsNewVersionAvailableForUpdate": "Je k dispozici nová verze Piwiku",
"TheUpgradeProcessMayFailExecuteCommand": "Pokud máte velkou databázi Piwiku, aktualizace v prohlížeÄi může trvat dlouhou dobu. V této situaci můžete spustit aktualizaci z příkazového řádku: %s",
"TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Aktualizace databáze může chvíli trvat, buÄte prosím trpÄ›liví.",
@@ -230,6 +390,8 @@
"ColumnCustomVariableName": "Název vlastní proměnné",
"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 dvojice klíÄ, hodnota, které můžete nastavit pÅ™i návÅ¡tÄ›vÄ› s použitím funkce setVisitCustomVariables() javascriptového API. Piwik pak zobrazí poÄty návÅ¡tÄ›v, stránek a konverzí pro tyto hodnoty.",
"ScopePage": "rozsah stránky",
"ScopeVisit": "rozsah návštěvy"
},
@@ -241,6 +403,7 @@
"CreateNewDashboard": "Vytvořit novou nástěnku",
"Dashboard": "Nástěnka",
"DashboardCopied": "Přehled byl úspěšně nakopírován vybranému uživateli.",
+ "DashboardEmptyNotification": "Vaše nástěnka neobsahuje žádné widgety. Nějaké přidejte, nebo obnovte výchozí výběr widgetů na nástěnce.",
"DashboardName": "Jméno nástěnky:",
"DashboardOf": "Nástěnka %s",
"DefaultDashboard": "Výchozí nástěnka - používáte výchozí rozvržení nástěnky",
@@ -261,23 +424,38 @@
"SelectWidget": "Zvolte widget pro přidání na nástěnku",
"SetAsDefaultWidgets": "Nastavit výchozí výběr widgetů",
"SetAsDefaultWidgetsConfirm": "Opravdu chcete nastavit toto rozvržení widgetů jako výchozí rozvržení?",
+ "SetAsDefaultWidgetsConfirmHelp": "Tyto widgety a jejich rozvržení budou použity vždy, když někdo vytvoří novou nástěnku nebo použije vlastnost %s.",
"TopLinkTooltip": "Zobraz analytické hlášení webu pro %s.",
"WidgetNotFound": "Widget nenalezen",
"WidgetPreview": "Náhled widgetu",
"WidgetsAndDashboard": "Widgety a Nástěnka"
},
+ "DoNotTrack": {
+ "PluginDescription": "Ignoruje návÅ¡tÄ›vy s hlaviÄkamy X-Do-Not-Track nebo DNT."
+ },
"Feedback": {
"ContactThePiwikTeam": "Kontaktujte tým Piwiku",
"DoYouHaveBugReportOrFeatureRequest": "Máte hlášení chyby, nebo námět na vylepšení?",
+ "GetInTouch": "Jsme rádi za vaÅ¡i zpÄ›tnou vazbu a vždy Äteme vÅ¡echny zprávy. Možná chcete nabídnout podnikatelskou příležitost, najmout Piwik konzultanta, podÄ›lit se o váš úspÄ›ch, nebo prostÄ› pozdravit.",
+ "HowToCreateIssue": "Prosím, pÅ™eÄtÄ›te si doporuÄení, jak psát dobré %1$shlášení chyby%2$s nebo %3$sžádost o vlastnost%4$s. Potom %5$sse zaregistrujte%6$s nebo %7$spÅ™ihlaste%8$s v naÅ¡em systému sledování problémů a vytvoÅ™te %9$snový problém%10$s.",
"IWantTo": "Chci:",
"LearnWaysToParticipate": "NauÄit způsoby jak %s spolupracovat %s",
"ManuallySendEmailTo": "Prosím poÅ¡lete ruÄnÄ› zprávu",
"PluginDescription": "Pošlete ohlas teamu Piwiku. Sdílejte s námi vaše nápady a návrhy!",
+ "PrivacyClaim": "Piwik respektuje vaše %1$ssoukromí%2$s a dává vám plnou kontrolu nad vašimi daty.",
+ "RateFeatureLeaveMessageDislike": "Je nám líto, že se vám to nelíbí. Řekněte nám, jak se můžeme zlepšit.",
+ "RateFeatureLeaveMessageLike": "Jsme rádi, že se vám to líbí. Řekněte nám, co se vám líbí nejvíc, nebo jestli máte nějaký návrh na novou funkci.",
+ "RateFeatureSendFeedbackInformation": "Piwik platforma nám (týmu Piwiku) pošle e-mail s vaší e-mailovou adresou, abychom vás v případě otázek mohli kontaktovat.",
+ "RateFeatureThankYouTitle": "Děkujeme za ohodnocení %s.",
+ "RateFeatureTitle": "Líbí se vám vlastnost %s? Ohodnoťte ji a zanechte komentář",
"SendFeedback": "Odeslat odezvu",
"SpecialRequest": "Máte speciální požadavek na tým Piwiku?",
"ThankYou": "Děkujeme vám, že pomáháte Piwik dělat lepším!",
"TopLinkTooltip": "Řekni co si myslíš, nebo pořádek pomoc profesionála.",
- "VisitTheForums": "Navštivte %s forum%s"
+ "ViewAnswersToFAQ": "Zobrazit odpovÄ›di na %sÄasto kladené otázky%s",
+ "ViewUserGuides": "eNauÄte se jak konfigurovat Piwik a efektivnÄ› analyzovat data s naÅ¡imi %1$suživatelskými příruÄkami%2$s",
+ "VisitTheForums": "Navštivte %s forum%s",
+ "WantToThankConsiderDonating": "Myslíte si, že je Piwik úžasný a chcete nám poděkovat?"
},
"General": {
"AbandonedCarts": "Neobjednané košíky",
@@ -286,21 +464,25 @@
"Actions": "Akce",
"Add": "Přidat",
"AfterEntry": "Po vložení dne",
+ "All": "VÅ¡e",
"AllowPiwikArchivingToTriggerBrowser": "SpouÅ¡tÄ›t archovování když jsou hlášení prohlížena ve Web prohlížeÄi",
"AllWebsitesDashboard": "Nástěnka pro všechny weby",
"And": "a",
"API": "API",
"ApplyDateRange": "Aplikovat vybraný rozsah",
"ArchivingInlineHelp": "Pro web stránky se stÅ™ední, nebo vysokou návÅ¡tÄ›vností je doporuÄeno zakázat archivování Piwiku z web prohlížeÄe. Místo toho doporuÄujeme vytvoÅ™ení úlohy pro cron",
+ "ArchivingTriggerDescription": "DoporuÄeno pro vÄ›tší instalace Piwiku, potÅ™ebujete %snastavit cron úlohu%s na automatické spracování hlášení.",
"AuthenticationMethodSmtp": "AutentizaÄní metoda SMTP",
"AverageOrderValue": "Průměrná hodnota objednávky",
"AveragePrice": "Průměrná cena",
"AverageQuantity": "Průměrné množství",
"BackToPiwik": "Zpět do Piwiku",
"Broken": "Rozbité",
+ "BrokenDownReportDocumentation": "Je ÄlenÄ›n do různých hlášení, která jsou zobrazena dolní Äásti stránky. Vybraný graf můžete zvÄ›tÅ¡it tak, že na nÄ›j kliknete.",
"Cancel": "Zrušit",
"CannotUnzipFile": "Nelze rozbalit soubor %1$s: %2$s",
"ChangePassword": "Změnit heslo",
+ "ChangeTagCloudView": "Všimněte si, že můžete zobrazit hlášení jinak, než jako tag cloud. Pro změnu zobrazení použíjte ovládací prvky pod ním.",
"ChooseDate": "Vyber datum",
"ChooseLanguage": "Zvolte jazyk",
"ChoosePeriod": "Zvolte období",
@@ -311,6 +493,7 @@
"ColumnActionsPerVisit": "Akcí za návštěvu",
"ColumnActionsPerVisitDocumentation": "PrůmÄ›rní poÄet akcí (zobrazení stránek, stažení nebo externích odkazů) za návÅ¡tÄ›vu.",
"ColumnAverageGenerationTime": "PrůmÄ›rný generovaný Äas",
+ "ColumnAverageGenerationTimeDocumentation": "PrůmÄ›rný Äas, za který byla stránka vygenerována. Toto měření zahrnuje Äas, který potÅ™eboval server k vygenerování stránky plus Äas, který potÅ™eboval klient k jejímu stažení. Kratší průmÄ›rný Äas znamená rychlejší stránku.",
"ColumnAverageTimeOnPage": "PřůmÄ›rnÄ› Äasu na stránce",
"ColumnAverageTimeOnPageDocumentation": "PrůmÄ›rný celkový Äas strávený na stránce (pouze konkrétní stránky),",
"ColumnAvgTimeOnSite": "PrůmÄ›rnÄ› Äasu na stránkách",
@@ -336,7 +519,9 @@
"ColumnNbActions": "Akce",
"ColumnNbActionsDocumentation": "PoÄet akcí VaÅ¡ich návstÄ›vníků. Akcí se rozumí zobrazení stránky, stažení a kliknutí na externí odkazy.",
"ColumnNbUniqVisitors": "JedineÄní návÅ¡tÄ›vníci",
+ "ColumnNbUniqVisitorsDocumentation": "PoÄet neduplicitních návÅ¡tÄ›vníků, kteří navÅ¡tívili vaÅ¡e stránky. Každý návÅ¡tÄ›vník je poÄítán pouze jednou, ikdyž tÅ™eba pÅ™iÅ¡el nÄ›kolikrát za den.",
"ColumnNbVisits": "Návštěv",
+ "ColumnNbVisitsDocumentation": "Pokud návÅ¡tÄ›vník pÅ™ijde na vaÅ¡e stránky poprvé, nebo po tÅ™iceti minutách, je tato návÅ¡tÄ›va zapoÄítána jako nová.",
"ColumnPageBounceRateDocumentation": "Procento návÅ¡tÄ›v, které zaÄaly touto stránkou a ihned ji opustili.",
"ColumnPageviews": "Zobrazení stránek",
"ColumnPageviewsDocumentation": "PoÄet navÅ¡tívení této stránky.",
@@ -349,17 +534,23 @@
"ColumnUniquePageviews": "JedineÄná zobrazení stránek",
"ColumnUniquePageviewsDocumentation": "PoÄet návÅ¡tÄ›vníků, kteří navÅ¡tívily tuto stránku. Pokud byla tato stránka navÅ¡tívena nÄ›kolikrát, návÅ¡tÄ›va je zapoÄítána jen jednou.",
"ColumnValuePerVisit": "Hodnota za návštěvu",
+ "ColumnViewedAfterSearch": "Kliknuto ve výsledcích vyhledávání",
+ "ColumnViewedAfterSearchDocumentation": "ePoÄet návÅ¡tÄ›v této stránky poté, co návÅ¡tÄ›vník provedl vyhledávání a kliknul na tuto stránku.",
"ColumnVisitDuration": "Doba návštěvy (v sekundách)",
"ColumnVisitsWithConversions": "Návštěvy s přechodem",
"ConfigFileIsNotWritable": "KonfiguraÄní soubor Piwiku %s není zapisovatelný, nÄ›které zmÄ›ny nebudou uloženy. %s Prosím upravte oprávnÄ›ní ke konfiguraÄnímu souboru",
+ "Continue": "PokraÄovat",
"ContinueToPiwik": "PokraÄujte do Piwiku",
"CurrentMonth": "Tento měsíc",
"CurrentWeek": "Tento týden",
"CurrentYear": "Tento rok",
"Daily": "DennÄ›",
+ "DailyReport": "dennÄ›",
"DailyReports": "Denní hlášení",
"DailySum": "denní souÄet",
"DashboardForASpecificWebsite": "Nástěnka pro vybraný web",
+ "DataForThisGraphHasBeenPurged": "Data pro tento graf jsou starší než %s měsíců a proto byla odstraněna.",
+ "DataForThisTagCloudHasBeenPurged": "Data pro tento tag cloud jsou starší než %s měsíců a proto byla odstraněna.",
"Date": "Datum",
"DateRange": "Rozsah:",
"DateRangeFrom": "Od",
@@ -378,6 +569,7 @@
"DayTu": "út",
"DayWe": "st",
"Default": "Výchozí",
+ "DefaultAppended": "(výchozí)",
"Delete": "Vymazat",
"Description": "Popis",
"Desktop": "Desktop",
@@ -391,40 +583,56 @@
"Done": "Hotovo",
"Download": "Stáhnout",
"DownloadFail_FileExists": "Sobor %s již existuje!",
+ "DownloadFail_FileExistsContinue": "Pokus o pokraÄování stahování %s, ale celý stažený soubor už existuje!",
+ "DownloadFail_HttpRequestFail": "Nepodařilo se stáhnout soubor. Něco může být v nepořádku se stránkou, z níž byl soubor stahován. Můžete to zkusit později nebo můžete soubor stáhnout sami.",
+ "DownloadFullVersion": "%1$sStáhnout%2$s plnou verzi! Podívejte se na %3$s",
+ "DownloadPleaseRemoveExisting": "Pokud to chcete nahradit, odstraňte stávající soubor.",
"Downloads": "Stažení",
"EcommerceOrders": "Elektronické objednávky",
+ "EcommerceVisitStatusDesc": "Stav elektronického obchodu na konci návštěvy",
+ "EcommerceVisitStatusEg": "Například pro výběr všech návštěv, které obsahují elektronickou objednávku, API požadavek by byl %s",
"Edit": "Upravit",
+ "EncryptedSmtpTransport": "Zadejte šifrování transportvní vrsty vyžadované vaším SMTP serverem.",
"EnglishLanguageName": "Czech",
"Error": "Chyba",
"ErrorRequest": "Jej... během požadavku se vyskytla chyba, prosím zkuste to znovu.",
"EvolutionOverPeriod": "Vývoj za periodu",
+ "EvolutionSummaryGeneric": "%1$s v %2$s srovnáno s %3$s v %4$s. Vývin: %5$s",
+ "ExceptionCheckUserHasSuperUserAccessOrIsTheUser": "Uživatel musí být super uživatel nebo uživatel %s.",
"ExceptionConfigurationFileNotFound": "KonfiguraÄní soubor {%s} nebyl nalezen",
"ExceptionDatabaseVersion": "Vaše %1$s verze je %2$s ale Piwik vyžaduje minimálně %3$s.",
"ExceptionFileIntegrity": "Test integrity selhal: %s",
"ExceptionFilesizeMismatch": "Nesouhlasí velikost souboru: %1$s (oÄekávaná délka: %2$s, nalezeno: %3$s)",
"ExceptionIncompatibleClientServerVersions": "Vaše %1$s verze klienta je %2$s tato je ale nekompatibilní se serverem %3$s.",
+ "ExceptionInvalidAggregateReportsFormat": "Agregovaný formát hlášený %s není platný. Zkuste místo toho nějaký z %s.",
"ExceptionInvalidArchiveTimeToLive": "DneÅ¡ní doba života archivu musí být Äíslo vÄ›tší než nula",
"ExceptionInvalidDateFormat": "Formát data musí být: %s nebo klíÄové slovo podporované funkcí %s (více informací viz %s)",
"ExceptionInvalidDateRange": "Datum '%s' není v platném rozmezí. Může mít následující formát: %s.",
"ExceptionInvalidPeriod": "Perioda '%s' není podporovaná. Vyzkoušejte nějakou z následujících místo: %s.",
"ExceptionInvalidRendererFormat": "Formát rendereru '%s' není platný. Vyzkoušejte nějaký jiný místo: %s.",
+ "ExceptionInvalidReportRendererFormat": "Formát hlášení %s není platný. Zkuste místo toho jakýkoliv z %s.",
+ "ExceptionInvalidStaticGraphType": "Typ statického grafu %s není platný. Zkuste místo toho některý z %s.",
"ExceptionInvalidToken": "Token je neplatný",
"ExceptionLanguageFileNotFound": "Jazykový soubor '%s' nenalezen",
"ExceptionMethodNotFound": "Metoda '%s' neexistuje nebo není dostupná v modulu '%s'.",
"ExceptionMissingFile": "Chybějící soubor: %s",
"ExceptionNonceMismatch": "Nemůžu ověřit bezpeÄnostní token tohoto formuláře",
"ExceptionPrivilege": "Nemůžete přistupovat k tomuto zdroji, protože vyžaduje oprávnění %s.",
+ "ExceptionPrivilegeAccessWebsite": "Nemůžete přistupovat k tomuto zdroji, protože vyžaduje přístup %s pro stránku s ID = %d.",
"ExceptionPrivilegeAtLeastOneWebsite": "Nemůžete přistupovat k tomuto zdroji, protože vyžaduje oprávnění %s alespoň pro jeden web",
"ExceptionUnableToStartSession": "Otevřeno k start session",
"ExceptionUndeletableFile": "Nelze vymazat soubor %s",
"ExceptionUnreadableFileDisabledMethod": "KonfiguraÄní soubor {%s} je neÄitelný. Host může být zakázán %s.",
+ "ExpandDataTableFooter": "Změnit vizualizaci nebo nastavit hlášení",
"Export": "Exportovat",
"ExportAsImage": "Exportovat obrázek",
"ExportThisReport": "Exportovat data v ostatních formátech",
"Faq": "FAQ",
"FileIntegrityWarningExplanation": "Test integrity selhal a nahlásil nÄ›jaké chyby. To je díky ÄásteÄnÄ› nebo Å¡patnÄ› nahraným souborům Piwiku. MÄ›li byste znova nahrát vÅ¡echny soubory Piwiku v módu BINARY.",
"First": "První",
+ "Flatten": "Zploštit",
"ForExampleShort": "napÅ™.",
+ "Forums": "Fóra",
"FromReferrer": "z",
"GeneralInformation": "Hlavní informace",
"GeneralSettings": "Hlavní nastavení",
@@ -435,6 +643,7 @@
"GraphHelp": "Více informací o zobrazování grafů v Piwiku",
"HelloUser": "Ahoj, %s!",
"Help": "Pomoc",
+ "HelpTranslatePiwik": "Možná byste chtěli %1$snám pomoct s překladem Piwiku%2$s.",
"Hide": "skrýt",
"HoursMinutes": "%1$s hodin %2$s min.",
"Id": "ID",
@@ -443,11 +652,13 @@
"Installed": "Nainstalováno",
"InvalidDateRange": "Chybný rozsah, vyberte jej znovu",
"InvalidResponse": "Obdržená data jsou neplatná.",
+ "IP": "IP",
"JsTrackingTag": "JavaScriptový zaznamenávací tag",
"Language": "Jazyk",
"LastDays": "Posledních %s dní (vÄetnÄ› dnes)",
"LastDaysShort": "Posledních %s dní",
"LayoutDirection": "ltr",
+ "Live": "Živě",
"Loading": "NaÄítám...",
"LoadingData": "NaÄítám data...",
"LoadingPopover": "NaÄítám %s...",
@@ -474,6 +685,7 @@
"LongMonth_8": "Srpen",
"LongMonth_9": "Září",
"MainMetrics": "Vlastní měření",
+ "Matches": "Shody",
"MediumToHighTrafficItIsRecommendedTo": "Pro weby se stÅ™edním, nebo velkým provozem doporuÄujeme zpracovat dneÅ¡ní hlášení každou půlhodinu (%s vteÅ™in), nebo každou hodinu (%s vteÅ™in)",
"Metadata": "Meta data",
"Metric": "Měření",
@@ -483,6 +695,7 @@
"MinutesSeconds": "%1$s minut %2$s sek.",
"Mobile": "Mobil",
"Monthly": "MÄ›síÄnÄ›",
+ "MonthlyReport": "mÄ›síÄnÄ›",
"MonthlyReports": "MÄ›síÄní hlášení",
"More": "Více",
"MoreDetails": "Více podrobností",
@@ -490,6 +703,7 @@
"MultiSitesSummary": "všechny weby",
"Name": "Jméno",
"NbActions": "PoÄet akcí",
+ "NbSearches": "PoÄet interních vyhledávání",
"NDays": "%s dní",
"Never": "Nikdy",
"NewReportsWillBeProcessedByCron": "Pokud není archivování spouÅ¡tÄ›no web prohlížeÄem budou nová hlášení zpracovávaná cronem",
@@ -518,18 +732,32 @@
"OnlyEnterIfRequiredPassword": "Heslo zadejte pouze v případě, že jej váš SMTP server vyžaduje",
"OnlyUsedIfUserPwdIsSet": "Použito pouze v případě, že je nastaveno uživatelské jméno\/heslo. V případě že si nejste jisti jakou metodu použít, zeptejte se vašeho poskytovatele",
"OpenSourceWebAnalytics": "Open Source Web Analytics",
+ "OperationAtLeast": "Aspoň",
+ "OperationAtMost": "Nejvíce",
+ "OperationContains": "Obsahuje",
+ "OperationDoesNotContain": "Neobsahuje",
+ "OperationEquals": "Je rovno",
+ "OperationGreaterThan": "Větší než",
+ "OperationIs": "Je",
+ "OperationIsNot": "Není",
+ "OperationLessThan": "Menší než",
+ "OperationNotEquals": "Není rovno",
+ "OptionalSmtpPort": "Volitelné. Pro nešifrovaná a TLS SMTP spojení je výchozí 25, pro SSL SMTP spojení je výchozí 465.",
"Options": "Nastavení",
"OrCancel": "nebo %s Zrušit %s",
"OriginalLanguageName": "ÄŒesky",
"Others": "Ostatní",
"Outlink": "Odchozí odkaz",
"Outlinks": "Externí odkazy",
+ "OverlayRowActionTooltip": "Podívejte se na svá analytická data přímo na stránce (otevře novou záložku)",
+ "OverlayRowActionTooltipTitle": "Otevřít vrstvu stránky",
"Overview": "Přehled",
"Pages": "Stránky",
"ParameterMustIntegerBetween": "PromÄ›nná %s musí být Äíselná hodnota mezi %s a %s.",
"Password": "Heslo",
"Period": "Období",
"Piechart": "KoláÄový graf",
+ "PiwikXIsAvailablePleaseNotifyPiwikAdmin": "%1$s je dostupný. Prosím, upozorněte %2$sadministrátora Piwiku%3$s.",
"PiwikXIsAvailablePleaseUpdateNow": "Je k dispozici Piwik %1$s. %2$s Prosím aktualizujte jej!%3$s (viz %4$s změny%5$s).",
"PleaseSpecifyValue": "Prosím zapiště hodnotu pro '%s'.",
"PleaseUpdatePiwik": "Prosím aktualizujte Piwik",
@@ -538,12 +766,14 @@
"PoweredBy": "Běží na",
"Previous": "Předchozí",
"PreviousDays": "předešlých %s dní (kromě dneška)",
+ "PreviousDaysShort": "Předchozích %s dnů",
"Price": "Cena",
"ProductConversionRate": "Konverzní poměr",
"ProductRevenue": "Hodnota produktu",
"PurchasedProducts": "Zakoupené produkty",
"Quantity": "Množství",
"RangeReports": "Upravit rozmezí dní",
+ "ReadThisToLearnMore": "%1$sPokud se chcete dozvÄ›dÄ›t více, pÅ™eÄtÄ›te si toto.%2$s",
"Recommended": "(doporuÄuje se)",
"RecordsToPlot": "Záznamy k vykreslení",
"Refresh": "Obnovit",
@@ -552,12 +782,17 @@
"RelatedReports": "Podobná hlášení",
"Remove": "Odstranit",
"Report": "Hlášení",
+ "ReportGeneratedFrom": "Toto hlášení bylo vytvořeno s použitím dat z %s.",
+ "ReportRatioTooltip": "'%1$s' reprezentuje %2$s z %3$s %4$s s %5$s.",
"Reports": "Hlášení",
+ "ReportsContainingTodayWillBeProcessedAtMostEvery": "Hlášení pro dnešek nebo pro jakékoliv jiné datum budou zpracovány nejvíce každých",
"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",
"ReturningVisitor": "Vracející se návštěvníci",
"ReturningVisitorAllVisits": "Zobrazit všechny návštěvy",
+ "RowEvolutionRowActionTooltip": "Podívejte se, jak se hodnoty tohoto řádku měření mÄ›nily v Äase",
+ "RowEvolutionRowActionTooltipTitle": "Otevřít vývoj řádku",
"Rows": "Řádek",
"RowsToDisplay": "Řádků k zobrazení",
"Save": "Uložit",
@@ -565,6 +800,9 @@
"Search": "Hledat",
"SearchNoResults": "Žádné výsledky",
"Seconds": "%s sekund",
+ "SeeAll": "Zobrazit vše",
+ "SeeTheOfficialDocumentationForMoreInformation": "Pro více informací navštivte %soficiální dokumentaci%s.",
+ "Segment": "Část",
"SelectYesIfYouWantToSendEmailsViaServer": "Zvolte \"Ano\" pokud chcete e-mail posílat pomocí uvedeného serveru místo lokální funkce PHP mail",
"Settings": "Vlastnostni",
"Shipping": "Doprava",
@@ -588,6 +826,7 @@
"ShortMonth_8": "Srp",
"ShortMonth_9": "Zář",
"Show": "zobrazit",
+ "SingleWebsitesDashboard": "Nástěnka jedněch stránek",
"SmallTrafficYouCanLeaveDefault": "Pro weby s malým provozem můžete ponechat výchozích %s sekund a uvidíte vÅ¡echna hlášení v reálném Äase",
"SmtpEncryption": "SMTP šifrování",
"SmtpPassword": "Heslo SMTP",
@@ -595,15 +834,20 @@
"SmtpServerAddress": "Adresa SMTP serveru",
"SmtpUsername": "Uživatelské jméno SMTP",
"Source": "Zdroj",
+ "StatisticsAreNotRecorded": "Zaznamenávání statistik návštěvníků Pywikem je aktuálně zakázáno. Povolte ho nastavením record_statistics = 1 ve vašem souboru config\/config.ini.php.",
"Subtotal": "MezisouÄet",
+ "Summary": "Souhrn",
"Table": "Tabulka",
"TagCloud": "Oblak tagů",
"Tax": "Daň",
+ "TimeAgo": "Před %s",
"TimeOnPage": "Čas na stránce",
"Today": "Dnes",
"Total": "Celkem",
+ "TotalRatioTooltip": "Toto je %1$s ze všech %2$s %3$s.",
"TotalRevenue": "Celková hodnota",
"TotalVisitsPageviewsRevenue": "(Celkem: %s návštěv, %s zobrazení stránek, %s tržby)",
+ "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ř",
@@ -616,6 +860,7 @@
"Value": "Hodnota",
"VBarGraph": "Svislý sloupcový graf",
"View": "Zobrazit",
+ "ViewDocumentationFor": "Zobrazit dokumentaci pro %1$s",
"Visit": "Návštěva",
"VisitConvertedGoal": "Návštěva, která převedla alespoň jeden Cíl.",
"VisitConvertedGoalId": "Návštěva, která převedla konkrétní ID Cíl.",
@@ -627,15 +872,21 @@
"Visitors": "Návštěvníci",
"VisitsWith": "Návštěv s %s",
"VisitType": "Typ návštěvníka",
+ "VisitTypeExample": "Například pro výbÄ›r vÅ¡ech návÅ¡tÄ›vníků, kteří se vrátili na stránky vÄetnÄ› tÄ›ch, co si v pÅ™edcchozích návÅ¡tÄ›vách nÄ›co koupili, API požadavek by obsahoval %s",
"Warning": "Varování",
"WarningFileIntegrityNoManifest": "Test integrity nemůže být proveden z důvodů chybějícího souboru manifest.inc.php.",
+ "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.",
"Website": "Web stránky",
"Weekly": "Týdně",
+ "WeeklyReport": "Týdně",
"WeeklyReports": "Tydenní hlášení",
"WellDone": "Výborně!",
"Widgets": "Widgety",
+ "XComparedToY": "%1$s ve srovnání s %2$s",
+ "XFromY": "%1$s z %2$s",
+ "YearlyReport": "roÄnÄ›",
"YearlyReports": "RoÄní hlášení",
"YearsDays": "%1$s roků %2$s dní",
"YearShort": "yr",
@@ -651,12 +902,27 @@
"AddGoal": "Přidat cíl",
"AddNewGoal": "Přidat nový cíl",
"AddNewGoalOrEditExistingGoal": "%sPřidat nový cíl%s, nebo %sUpravit%s existující cíle",
+ "AllowGoalConvertedMoreThanOncePerVisit": "Povolit konverzi cíle více než jednou za návštěvu",
+ "AllowMultipleConversionsPerVisit": "Povolit více konverzí za návštěvu",
"BestCountries": "ZemÄ› s nejvyšším poÄtem konverzí jsou:",
"BestKeywords": "KlíÄová slova s nejvyšším poÄtem konverzí jsou:",
"BestReferrers": "Odkazující stránky s nejvyšším poÄtem konverzí jsou:",
"CaseSensitive": "shoda s velikostí písmen",
"ClickOutlink": "Kliknout na odkaz na externí web",
+ "ColumnAverageOrderRevenueDocumentation": "PrůmÄ›rná hodnota objednávky (AOV) je celkový příjem ze vÅ¡ech objednávek dÄ›lený jejich poÄtem.",
+ "ColumnAveragePriceDocumentation": "Průměrný příjem z tohoto %s.",
+ "ColumnAverageQuantityDocumentation": "PrůmÄ›rný poÄet tohoto %s prodaný v elektronických objednávkách.",
+ "ColumnConversionRateDocumentation": "Procento návštěv, které vyvolaly cíl %s.",
+ "ColumnConversionRateProductDocumentation": "Konverzní pomÄ›r %s je poÄet objednávek obsahujících tento produkt dÄ›leno celkovým poÄtem návÅ¡tÄ›v stránky produktu.",
"ColumnConversions": "Přechody",
+ "ColumnConversionsDocumentation": "PoÄet konverzí pro %s.",
+ "ColumnOrdersDocumentation": "PoÄet elektronických objednávek, které aspoň jednou obsahovaly %s.",
+ "ColumnPurchasedProductsDocumentation": "PoÄet zakoupených produktů je souÄet množství produktů ze vÅ¡ech elektronických objednávek.",
+ "ColumnQuantityDocumentation": "Množství je celkový poÄet prodaných produktů pro každý %s.",
+ "ColumnRevenueDocumentation": "Celkový příjem generovaný %s.",
+ "ColumnRevenuePerVisitDocumentation": "Celkový příjem generovaný %s dÄ›lený poÄtem návÅ¡tÄ›v.",
+ "ColumnVisits": "Celkový poÄet návÅ¡tÄ›v bez ohledu na to, jestli doÅ¡lo k vyvolání cíle.",
+ "ColumnVisitsProductDocumentation": "PoÄet návÅ¡tÄ›v stránky produktu\/kategorie. Toto je také použito k výpoÄtu konverzního pomÄ›ru pro %s. Toto měření je ve hlášení pouze, pokud bylo na stránkách produktů\/kategorií nastaveno sledování elektronického obchodu.",
"Contains": "obsahuje %s",
"ConversionRate": "%s frekvence konverzí",
"Conversions": "%s konverzí",
@@ -664,9 +930,11 @@
"ConversionsOverviewBy": "Přehled konverzí podle typu návštěvy",
"CreateNewGOal": "Vytvořit nový cíl",
"DaysToConv": "Dnů do konverze",
+ "DefaultGoalConvertedOncePerVisit": "Výchozí cíl může být zkonvertován pouze jednou za návštěvu",
"DefaultRevenue": "Výchozí příjem cíle je",
"DefaultRevenueHelp": "Na příklad kontaktní formulář odeslaný návštěvníkem má průměrnou cenu $10. Piwik vám pomůže dobře pochopit chování skupin uživatelů",
"DeleteGoalConfirm": "Jste si jisti, že chcete vymazat tento cíl %s?",
+ "DocumentationRevenueGeneratedByProductSales": "Tržby produktu. NepoÄítají se danÄ›, poplatky za doruÄení a slevy.",
"Download": "Stáhnout soubor",
"Ecommerce": "Obchody",
"EcommerceAndGoalsMenu": "Obchody a Cíle",
@@ -678,20 +946,29 @@
"ExternalWebsiteUrl": "URL externího webu",
"Filename": "jméno souboru",
"GoalConversion": "Cíl konverze",
+ "GoalConversions": "Konverze cíle",
+ "GoalConversionsBy": "Konverze cíle %s podle typu návštěvy",
"GoalIsTriggered": "Cíle je zaznamenáván",
"GoalIsTriggeredWhen": "Cíl je zaznamenáván, když",
"GoalName": "Jméno cíle",
"Goals": "Cíle",
"GoalsManagement": "Správa cílů",
"GoalsOverview": "Přehled cílů",
+ "GoalsOverviewDocumentation": "Toto je pÅ™ehled vaÅ¡ich konverzí cílů. VNe vchozím stavu graf zobrazuje souÄet vÅ¡ech konverzí. %s Pod grafem jsou zobrazena hlášení pro každý cíl. Můžete je zvÄ›tÅ¡it kliknutím, pokud chcete.",
"GoalX": "Cíl: %s",
+ "HelpOneConversionPerVisit": "Pokud byla stránka odpovídající cíli pÅ™i návÅ¡tÄ›vÄ› obnovena nebo zobrazena vícekrát, bude cíl zapoÄítán pouze jednou a to pÅ™i prvním zobrazení.",
"IsExactly": "je přesně %s",
"LearnMoreAboutGoalTrackingDocumentation": "Více o %s Cílech hlášení v Piwiku%s najdete v uživatelské dokumentaci.",
"LeftInCart": "%s Zbylo v košíku",
"Manually": "ruÄnÄ›",
"ManuallyTriggeredUsingJavascriptFunction": "Cíl je ruÄnÄ› zaznamenáván pomocí JavaScriptového API trackGoal()",
"MatchesExpression": "odpovídá %s",
+ "NewGoalDescription": "Cíl v Pišiku je vaše strategie, vaše prioria a může to být spousta věcí (stažená brožura, přihlášený odběr spravodaje, stránavštívenánka services.html atd.).",
+ "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ů.",
+ "NewGoalYouWillBeAbleTo": "Budete schopni zobrazit a analyzovat výsledky pro každý cíl, což vám umožní dozvÄ›dÄ›t se, jak zvýšit poÄet konverzí, konverznípomÄ›r a příjem z každé návÅ¡tÄ›vy.",
"NewVisitorsConversionRateIs": "Poměr konverze nové příchozích uživatelů je %s",
+ "NewWhatDoYouWantUsersToDo": "Co mají uživatelé na vašich stránkách dělat?",
+ "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.",
"Optional": "(volitelné)",
"OverallConversionRate": "%s celková frekvence konverzí (návštěv se splněným cílem)",
"OverallRevenue": "%s celkový příjem",
@@ -703,6 +980,7 @@
"Products": "Produktů",
"ProductSKU": "SKU produktu",
"ReturningVisitorsConversionRateIs": "Poměr konverze navracejících se uživatelů je %s",
+ "SingleGoalOverviewDocumentation": "Toto je přehled konverzí jednoho cíle. %s Linky lze zvětšit kliknutím na ně.",
"UpdateGoal": "Aktualizovat cíl",
"URL": "URL",
"ViewAndEditGoals": "Zobrazit a editovat cíle",
@@ -712,12 +990,47 @@
"VisitUrl": "Navštívít zadanou URL (stránku, nebo skupiny stránek)",
"WhenVisitors": "když návštěvníci",
"WhereThe": "když",
- "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "kde návštívená stránka obsahuhe volání metody JavaScriptu piwikTracker.trackGoal() (%svíce%s)"
+ "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "kde návštívená stránka obsahuhe volání metody JavaScriptu piwikTracker.trackGoal() (%svíce%s)",
+ "YouCanEnableEcommerceReports": "Pro tyto stránky můžete %s povolit na stránce %s."
},
"ImageGraph": {
+ "ColumnOrdinateMissing": "Sloupec %s nebyl v tomto hlášení nalezen. Zkuste některé z %s",
"PluginDescription": "Generuje nádherné statické PNG grafy pro jakékoli Piwik hlášení."
},
+ "Insights": {
+ "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.",
+ "DayComparedToPreviousDay": "předchozí den",
+ "DayComparedToPreviousWeek": "stejný den v předchozím týdnu",
+ "DayComparedToPreviousYear": "stejný den v předchozím roce",
+ "Filter": "Filtr",
+ "FilterIncreaserAndDecreaser": "ZvyÅ¡ovaÄ & snižovaÄ",
+ "FilterOnlyDecreaser": "Pouze snižovaÄ",
+ "FilterOnlyDisappeared": "Pouze ztracení",
+ "FilterOnlyIncreaser": "Pouze zvyÅ¡ovaÄ",
+ "FilterOnlyMovers": "Pouze hybatelé",
+ "FilterOnlyNew": "Pouze noví",
+ "IgnoredChanges": "Změny týkající se méně než %s návštěv byly ignorovány.",
+ "MonthComparedToPreviousMonth": "předchozí měsíc",
+ "MonthComparedToPreviousYear": "stejný měsíc v předchozím roce",
+ "MoversAndShakersWidgetTitle": "Hybatelé a třesatelé",
+ "NoResultMatchesCriteria": "Kritériím neodpovídají žádné řádky",
+ "OverviewWidgetTitle": "Přehled vhledů",
+ "TitleConsideredInsightsChanges": "Řádky zvýšené nebo snížené o aspoň %1$s návštěv (%2$s%% z %3$s celkových návštěv).",
+ "TitleConsideredInsightsGrowth": "Následující řádky mají růst aspoň %1$s%% ve srovnání s %2$s.",
+ "TitleConsideredMoversAndShakersChanges": "Hybatelé byly zváženi pouze pokud vzrostly více než %1$s%% návštěv nebo se zmenšili o méně než %2$s%% návštěv, nové záznamy pokud se zvýšily o více než %3$s%% návštěv (%4$s) a ztracené řádky pouze pokud se zmenšili o méně než %5$s%% návštěv (%6$s).",
+ "TitleConsideredMoversAndShakersGrowth": "%1$s se zmÄ›nili z %2$s na %3$s ve srovnání s %4$s. Na základÄ› toho je pro každý řádek oÄekáván vývoj %5$s%%.",
+ "TitleRowChangeDetails": "'%1$s' se změnili z %2$s (%3$s) na %4$s (%5$s) %6$s.",
+ "TitleRowDisappearedDetails": "'%1$s' se snížili o %2$s a ztratili se v %3$s ve srovnání s %4$s.",
+ "TitleRowMoverAndShaker": "Tento řádek měl větší dopad než průměr.",
+ "TitleRowNewDetails": "'%1$s' se zvýšili o %2$s a jsou noví ve srovnání s %3$s.",
+ "WeekComparedToPreviousWeek": "předchozí týden",
+ "WidgetCategory": "Vhledy",
+ "YearComparedToPreviousYear": "předchozí rok"
+ },
"Installation": {
+ "CollaborativeProject": "Piwik je spoleÄný projekt tvoÅ™ený s láskou lidmi z celého svÄ›ta.",
"ConfigurationHelp": "Váš konfiguraÄní soubor Piwiku je Å¡patnÄ› nastavený. Můžete buÄ odstranit soubor config\/config.ini a znovu zaÄít instalaci, nebo opravit nastavení databáze.",
"ConfirmDeleteExistingTables": "Jste si jistí, že chcete vymazat tabulky: %s z vaší databáze? UPOZORNÄšNÃ: DATA Z TÄšCHTO TABULEK NEPÅ®JDOU OBNOVIT!",
"Congratulations": "Gratulujeme",
@@ -735,33 +1048,54 @@
"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.",
"GoBackAndDefinePrefix": "Jít zpět a nastavit prefix pro tabulky Piwiku",
+ "HappyAnalysing": "Šťastné analyzování!",
"Installation": "Instalace",
"InstallationStatus": "Stav instalace",
+ "InsufficientPrivilegesHelp": "Tato privilegia můžete přidat v nástroji jako je phpMyAdmin, nebo provedením správných SQL dotazů. Pokud nevíte, jak to udělat, požádejte svého systémového administrátora, aby vám tato privilegia udělil.",
+ "InsufficientPrivilegesMain": "Databáze buÄ neexistuje, a nemohla být vytvoÅ™ena, nebo má databázový uživatel nedostateÄná privilegia. Databázový uživatel musí mít následující privilegia: %s",
+ "JsTagArchivingHelp1": "Pro stÅ™ední a velké stránky jsou urÄité optimalizace, které umožňují Piwiku běžet rychleji, jako tÅ™eba %1$snastavení automatického archivování%2$s.",
+ "JSTracking_EndNote": "Poznámka: Po dokonÄení procesu instalace můžete vytvoÅ™it vlastní sledovací kód na stránce %1$ssledovací kód%2$s.",
+ "JSTracking_Intro": "Pokud chcete sledovat Pokud chcete Piwikem sledovat váš provoz na webu, musíte zajistit, že do každé stránky bude přidán extra kód.",
"LargePiwikInstances": "Nápověda pro velké instalace Piwiku",
"Legend": "Legenda",
+ "LoadDataInfileRecommended": "Pokud váš Piwik server zaznamenává provoz na stránkách s vysokým provozem t. j. 100000 stránek za mÄ›síc, doporuÄujeme se pokusit o Å™eÅ¡ení tohoto problému.",
+ "LoadDataInfileUnavailableHelp": "Použití %1$s velmi zrychlí archivaÄní proces Piwiku. Pro zpřístupnÄ›ní zkuste aktualizovat PHP a Mysql a ujistÄ›te se, že má databázový uživatel privilegium %2$s.",
"NfsFilesystemWarning": "Váš server používá soborový systém NFS.",
+ "NfsFilesystemWarningSuffixAdmin": "To znamená, že Piwik bude při použití sessions založených na souborech velmi pomalý.",
+ "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>",
+ "NotSupported": "nepodporováno",
"Optional": "Volitelné",
"Password": "heslo",
"PasswordDoNotMatch": "hesla si neodpovídají",
"PasswordRepeat": "heslo (opakování)",
"PercentDone": "%s %% hotovo",
+ "PiwikOrgNewsletter": "odesílat e-maily s důležitými událostmi v komunitě Piwiku",
+ "PiwikProNewsletter": "Zajímají mÄ› %spro Piwik%s služby (nejvíše jeden e-mail mÄ›síÄnÄ›)",
"PleaseFixTheFollowingErrors": "Prosím opravte následující chyby",
"PluginDescription": "InstalaÄní proces Piwiku. Instalace se obvykle používá jednou. V případÄ› vymazání konfiguraÄního souboru config\/config.inc.php se instalace zahájí znovu",
"Requirements": "Požadavky Piwiku",
"RestartWebServer": "Po uložení změn restartujte Vás web server.",
+ "ReusingTables": "Použití existujících tabulek",
+ "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 webu",
"SetupWebsiteSetupSuccess": "Web %s byl úspěšně vytvořen",
"SetupWebSiteURL": "URL webu",
+ "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",
"SystemCheckAutoUpdateHelp": "Poznámla: Aktualizace pomocí jednoho kliknutí vyžaduje práva pro zápis do adresářů Piwiku a jejich obsahu",
"SystemCheckCreateFunctionHelp": "Piwik pro zpětná volání využívá anonymní funkce",
+ "SystemCheckCronArchiveProcess": "ArchivaÄní cron",
+ "SystemCheckCronArchiveProcessCLI": "Správa procesů pomocí CLI",
"SystemCheckDatabaseHelp": "Piwik vyžaduje buÄ rozšíření mysqli, nebo PDO s pdo_mysql rozšířením",
"SystemCheckDebugBacktraceHelp": "View::factory není schopna vytvořit pohled pro volající modul.",
"SystemCheckError": "Vyskytla se chyba - musí být opravena než budete pokraÄovat",
@@ -769,11 +1103,16 @@
"SystemCheckExtensions": "Další požadovaná rozšíření",
"SystemCheckFileIntegrity": "Integrita souborů",
"SystemCheckFunctions": "Vyžadované funkce",
+ "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",
+ "SystemCheckGzcompressHelp": "Musíte povolit rozšíření zlib a funkci gzcompress.",
+ "SystemCheckGzuncompressHelp": "Musíte povolit rozšíření zlib a funkci gzuncompress.",
"SystemCheckIconvHelp": "Musíte nakonfigurovat a překompilovat PHP s podporou pro \"icont\", --with-iconv",
+ "SystemCheckJsonHelp": "Piwik pro Ätení a zápis JSON dat potÅ™ebuje rozšíření php5-json.",
"SystemCheckMailHelp": "Bez funkce mail(), nebudou odeslány zprávy s odezvou, nebo při zapomenutém heslu",
"SystemCheckMbstring": "mbstring",
+ "SystemCheckMbstringHelp": "Rozšíření mbstring je nutné ke zpracování vícebajtových znaků v uživatelském rozhraní a odpovědích API. Také zajistěte, aby byla v souboru php.ini hodnota mbstring.func_overload nastavena na 0.",
"SystemCheckMemoryLimit": "Limit paměti",
"SystemCheckMemoryLimitHelp": "Na webech s vysokým provozem, může archivace vyžadovat více paměti něž je nyní povoleno.<br \/>Pokud je potřeba podívejte se na direktivu memory_limit ve vašem souboru php.ini.",
"SystemCheckOpenURL": "Otevřít URL",
@@ -782,12 +1121,22 @@
"SystemCheckOtherFunctions": "Ostatní funkce",
"SystemCheckPackHelp": "Funkce pack() je nutná ke sledování návštěvnosti v Piwiku.",
"SystemCheckParseIniFileHelp": "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í. Výkonnost trackeru bude také omezena.",
+ "SystemCheckPdoAndMysqliHelp": "Na GNU\/Linux systému můžete zkompilovat PHP s následujícími volbami: %1$s Přidejte následující řádky do php.ini: %2$s",
"SystemCheckPhp": "Verze PHP",
"SystemCheckPhpPdoAndMysqli": "Více informací na: %1$sPHP PDO%2$s and %3$sMYSQLI%4$s.",
+ "SystemCheckSessionAutostart": "Pro zabránÄ›ní urÄitým problémům nastavte následující ve vaÅ¡em souboru php.ini: session.auto_start=0",
"SystemCheckSplHelp": "Musíte překompilovat PHP s povolenou standardní PHP knihovou (ve výchozím stavu povolena).",
"SystemCheckSummaryNoProblems": "Hurááá! Nejsou zde žádné problémy s nastavením Piwiku. Gratulujeme",
+ "SystemCheckSummaryThereWereErrors": "Ajaj! Piwik zjistil %1$skritické problémy%2$s s nastavením instalace Piwiku. %3$sTyto problémy musí být okamžitě vyřešeny.%4$s",
+ "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 vynechat tuto URL z HTTP autentizace a zakažte mod security (možná budete muset kontaktovat správce webhostingu).",
+ "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\".",
+ "SystemCheckWarnLibXmlHelp": "Protože je vyžadováno dalšími php rozšířeními, mÄ›li byste povolit rozšíření \"libxml\" t. j. nainstalovat balíÄek \"php-libxml\".",
+ "SystemCheckWarnSimpleXMLHelp": "MÄ›li byste povolit rozšíření \"SimpleXML\" t. j. nainstalovat balíÄek \"php-simplexml\" nebo \"php-xml\".",
"SystemCheckWinPdoAndMysqliHelp": "Na serveru s Winwdows můžete do vašeho php.ini přidat následující řádky: %s",
"SystemCheckWriteDirs": "Adresáře s přístupem k zápisu",
"SystemCheckWriteDirsHelp": "Pro opravu této chyby v Linuxu zkuste napsat následující příkaz(y)",
@@ -798,34 +1147,63 @@
"TablesDeletedSuccess": "Existujicí tabulky Piwiku úspěšně vymazány",
"TablesFound": "V databázi byly nalezeny následující tabulky",
"TablesReuse": "Použít existujicí tabulky",
+ "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á zóna webu",
+ "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>"
+ "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>",
+ "WelcomeToCommunity": "Vítejte v komunitě Piwiku!"
},
"LanguagesManager": {
"AboutPiwikTranslations": "O překladech Piwiku",
"PluginDescription": "Tento zásuvný modul zobrazí seznam jazyků pro rozhraní Piwiku. Vybraný jazyk bude uložen v nastaveních každého uživatele"
},
"Live": {
+ "AbandonedCartSummary": "%1$s%2$s opuštěných košíků%3$s a %4$s opuštěných položek %5$scelkem za %6$s%7$s.",
+ "AveragePageGenerationTime": "Pro tohoto návÅ¡tÄ›vníka se každá stránka naÄetla v průmÄ›ru za %1$s.",
+ "CalculatedOverNPageViews": "VypoÄítáno na základÄ› %1$s posledních zobrazení stránek tohoto návÅ¡tÄ›vníka.",
+ "ClickToViewMoreAboutVisit": "Klikněte pro zobrazení více informací o této návštěvě",
+ "ConvertedNGoals": "Zkonvertováno %s cílů",
+ "EcommerceSummaryConversions": "%1$s%2$s objednávek celkem za %3$s%4$s, zakoupeno %5$s položek.",
+ "FirstVisit": "První návštěva",
"GoalType": "Typ",
+ "HideMap": "skrýt mapu",
+ "KeywordRankedOnSearchResultForThisVisitor": "KlíÄové slovo %1$s ohodnoceno %2$s na %3$s stránce výsledků vyhledávání pro tohoto návÅ¡tÄ›vníka",
"LastHours": "Posledních %s hodin",
"LastMinutes": "Posledních %s minut",
+ "LastVisit": "Poslední návštěva",
"LinkVisitorLog": "Zobrazit detailní pohled na návštěvníky",
+ "LoadMoreVisits": "NaÄíst více návÅ¡tÄ›v",
"MorePagesNotDisplayed": "další stránky tohoto návštěvníka nejsou zobrazeny",
"NbVisitor": "1 návštěvník",
"NbVisitors": "%s návštěvníků",
+ "NextVisitor": "Další návštěvník",
+ "NoMoreVisits": "Pro tohoto návštěvníka už nejsou k dispozici další návštěvy.",
+ "PageRefreshed": "PoÄet po sobÄ› jdoucích zobrazení\/obnovení stránky",
"PluginDescription": "Sledujte VaÅ¡e uživatele živÄ› v reálném Äase",
+ "PreviousVisitor": "Předchozí návštěvník",
"RealTimeVisitorCount": "PoÄet návÅ¡tÄ›vníků v reálném Äase",
"Referrer_URL": "Odkazující URL",
+ "ShowMap": "Zobrazit mapu",
"SimpleRealTimeWidget_Message": "%s a %s v posledních %s.",
+ "ViewVisitorProfile": "Zobrazit profil návštěvníka",
+ "VisitedPages": "Navštívené stránky",
"VisitorLog": "Pohled na návštěvníky",
- "VisitorsInRealTime": "NávstÄ›v v reálném Äase"
+ "VisitorLogDocumentation": "Tato tabulka zobrazuje poslední návÅ¡tÄ›vy v daném období. Najetím na datum návÅ¡tÄ›vy zobrazíte Äas, kdy tento návÅ¡tÄ›vník navÅ¡tívil stránky naposledy. %s Pokud období zahrnuje dneÅ¡ek, můžete vidÄ›t návÅ¡tÄ›vníky v reálném Äase! %s Zde zobrazovaná data jsou vždy živá bez ohledu na to, jak a kdy probíhá archivaÄní cron úloha.",
+ "VisitorProfile": "Profil návštěvníka",
+ "VisitorsInRealTime": "NávstÄ›v v reálném Äase",
+ "VisitorsLastVisit": "K poslední návštěvě tohoto návštěvníka došlo před %s dny.",
+ "VisitsFrom": "%1$s%2$s návštěv%3$s z",
+ "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"
},
"Login": {
+ "ConfirmationLinkSent": "Do vaší e-mailové schránky byl odeslán potvrzovací e-mail. Pro potvrzení požadavku na změnu hesla navštivte odkaz v e-mailu uvedený.",
"ContactAdmin": "Možná příÄina: Váš hosting zakázal funkci mail().. <br \/>Prosím kontaktujte vaÅ¡eho administrátora Piwiku.",
+ "ExceptionInvalidSuperUserAccessAuthenticationMethod": "Uživatel se Super uživatelským přístupem nemůže být autentizován mechanismem %s.",
"ExceptionPasswordMD5HashExpected": "Parametr hesla je oÄekáván jako MD5 hash hesla",
+ "InvalidNonceOrHeadersOrReferrer": "ZabezpeÄení formuláře selhalo. Prosím obnovte formulář a zkontrolujte, že máte povolené cookies. Pokud používáte proxy server, %smusíte nakonfigurovat Piwik aby pÅ™ijímal proxy hlaviÄku%s, která pÅ™eposílá hlaviÄku hosta. Zkontrolujte také, že je správnÄ› posílána hlaviÄka referrer.",
"InvalidOrExpiredToken": "KlÃ­Ä je neplatný, nebo vyprÅ¡el",
"InvalidUsernameEmail": "Neplatné uživatelské jméno a\/nebo e-mailová adresa",
"LogIn": "Přihlásit",
@@ -836,6 +1214,7 @@
"PasswordChanged": "Vaše heslo bylo změněno.",
"PasswordRepeat": "Heslo (pro kontrolu)",
"PasswordsDoNotMatch": "Hesla si neodpovídají",
+ "PluginDescription": "Zásuvný modul pÅ™ihlaÅ¡ování, který pro prvotního super uživatele Äte údaje ze souboru config\/config.ini.php a pro další uživatele z databáze. Může být jednoduÅ¡e nahrazen jinou metodou autentizace (OpenId, htaccess atd.).",
"RememberMe": "Zapamatovat si",
"ResetPasswordInstructions": "Zadejte nové heslo k VaÅ¡emu úÄtu."
},
@@ -845,116 +1224,344 @@
"Account": "ÚÄet",
"Accounts": "ÚÄty",
"AddAccount": "PÅ™idat úÄet",
+ "AddPiwikDemo": "Přidat demo Piwiku",
"Advanced": "Rozšířené",
"AnonymousAccess": "Anonymní přístup",
"AnonymousTracking": "Anonymní sledování",
+ "AskForAnonymousTrackingPermission": "Pokud je povoleno, Piwik mobile bude odesílat anonymní data o používání piwik.org. ÚÄelem je pomoci vývojářům lépe pochopit, jak je aplikace používána. Jsou odesílány položky menu a nastavení na které bylo kliknuto, operaÄní systém a jeho verze a zobrazené chyby v Piwik mobile. Nebudeme sledovat vaÅ¡e analytická data. Tyto údaje nebudou nikdy zveÅ™ejnÄ›ny. Odesílání dat můžete kdykoliv povolit a zakázat v nastavení.",
+ "ChooseHttpTimeout": "Zvolte Äasový limit HTTP",
"ChooseMetric": "Zvolte měření",
"ChooseReport": "Vyberte hlášení",
+ "ConfirmRemoveAccount": "Chcete odstranit tento úÄet?",
+ "DefaultReportDate": "Datum hlášení",
"EmailUs": "Napište nám",
"EnableGraphsLabel": "Zobrazit grafy",
+ "EvolutionGraph": "Historický graf",
+ "HelpUsToImprovePiwikMobile": "Chcete ev Piwik mobile povolit anonymní sledování využití?",
+ "HowtoDeleteAnAccount": "Dlouze stisknÄ›te pro smazání úÄtu.",
+ "HowtoDeleteAnAccountOniOS": "Pro smazání úÄtu Å¡vihnÄ›te zprava do leva.",
+ "HowtoLoginAnonymous": "Pro anonymní přihlášení nevyplňujte uživatelské jméno a heslo",
+ "HttpIsNotSecureWarning": "Váš autorizaÄní token (token_auth) je v případÄ› použití HTTP poslán v podobÄ› prostého textu. Z tohoto důvodu pro bezpeÄný pÅ™enos dat pÅ™es internet doporuÄujeme HTTPS. Chcete pokraÄovat?",
+ "HttpTimeout": "Časový limit HTTP",
+ "IncompatiblePiwikVersion": "Verze Piwiku, kterou používáte, není kompatibilní s Piwik Mobile 2. Aktualizujte instalaci Piwiku a zkuste to znovu, nebo nainstalujte Piwik mobile 1.",
"LastUpdated": "Poslední aktualizace: %s",
+ "LoadingReport": "NaÄítání %s",
+ "LoginCredentials": "Pověření",
+ "LoginToPiwikToChangeSettings": "PÅ™ihlaÅ¡te se k vaÅ¡emu Piwik serveru, pokud chcete mÄ›nit a vytvářet webové stránky a uživatele nebo mÄ›nit obecná nastavení jako hlášení, které se naÄte jako výchozí.",
+ "LoginUseHttps": "Použít HTTPS",
"MultiChartLabel": "Zobrazit multi grafy",
"NavigationBack": "Zpět",
+ "NetworkError": "Chyba sítě",
+ "NetworkErrorWithStatusCode": "Došlo k chybě \"%s\". Požadavek vrátil stavový kód \"%s\". URL byla \"%s\". Prosím zkontrolujte vámi zadanou URL a pro více informací o této chybě a jejím možném řešení chybové logy zadaného serveru.",
+ "NetworkErrorWithStatusCodeShort": "Chyba sítě %s",
"NetworkNotReachable": "Síť je nedosažitelná",
+ "NoAccountIsSelected": "Musíte vybrat úÄet. Pokud není žádný nastaven, pÅ™idejte ho.",
+ "NoDataShort": "Žádná data",
+ "NoPiwikAccount": "Nemáte Piwik úÄet?",
+ "NoReportsShort": "Žádná hlášení",
+ "NoVisitorFound": "Žádný návštěvník nebyl nalezen",
+ "NoVisitorsShort": "Žádní návštěvníci",
"NoWebsiteFound": "Žádný web nenalezen",
+ "NoWebsitesShort": "Žádné webové stránky",
+ "PullDownToRefresh": "Stáhněte pro obnovu...",
+ "RatingDontRemindMe": "Neupozorňovat mě",
"RatingNotNow": "Ne nyní",
+ "RatingNow": "Dobrá, teÄ to ohodnotím",
+ "RatingPleaseRateUs": "Piwik mobile je volně šiřitelný software. Proto bychom ocenili, kdybyste si našli mnutu k jeho ohodnocení v %s. Pokud máte návrh na nějakou novou vlastnost nebo chcete nahlásit chybu, kontaktujte %s",
+ "ReleaseToRefresh": "Uvolněte pro obnovení...",
"Reloading": "Znovu nahrávám...",
+ "RequestTimedOutShort": "Chyba Äasového limitu sítÄ›",
+ "RestrictedCompatibility": "Omezená kompatibilita",
+ "RestrictedCompatibilityExplanation": "Verze Piwiku %s není plnÄ› podporována Piwik mobile 2. Můžete se setkat s nÄ›jakými chybami. DoporuÄujeme aktualizovat Piwik na nejnovÄ›jší verzi nebo se vrátit k Piwik mobile 1.",
"SaveSuccessError": "Prosím zkontrolujte si vaše nastavení",
+ "SearchWebsite": "Prohledat webové stránky",
"ShowAll": "Zobrazit vše",
+ "ShowLess": "Zobrazit méně",
+ "StaticGraph": "Přehledový graf",
+ "TopVisitedWebsites": "Nejvíce navštěvované webové stránky",
+ "TryIt": "Vyzkoušejte to!",
+ "UseSearchBarHint": "Zde je zobrazeno pouze prvních %s webových stránek. K přístupu k dalším použijte vyhledávací panel.",
+ "VerifyAccount": "Ověřování úÄtu",
+ "VerifyLoginData": "Ujistěte se, že kombinace vašeho uživatelského jména a hesla je správná.",
"YouAreOffline": "Omlouváme se, momentálně jste offline"
},
"MobileMessaging": {
+ "Exception_UnknownProvider": "Jméno poskytovatele '%s' není známé. Zkuste některé z %s.",
+ "MobileReport_AdditionalPhoneNumbers": "Více telefonních Äísel můžete pÅ™idat pÅ™ejitím na",
+ "MobileReport_MobileMessagingSettingsLink": "Stránka nastavení mobilních zpráv",
+ "MobileReport_NoPhoneNumbers": "Prosím aktivujte aspoň jedno telefonní Äíslo pÅ™ejitím na",
+ "MultiSites_Must_Be_Activated": "Pro vytváření SMS zpráv se statistikami povolte v Piwiku plugin MultiSites.",
"PhoneNumbers": "Telefonní Äísla",
+ "PluginDescription": "Vytvářejte a stahujte vlastní SMS hlášení a nechte si je zasílat do vaÅ¡eho telefonu dennÄ›, týdnnebo Ä› mÄ›síÄnÄ›.",
+ "Settings_APIKey": "KlÃ­Ä k API",
"Settings_CountryCode": "Kód země",
+ "Settings_CredentialNotProvided": "Než budete moct vytvářet a spravovat telefonní Äísla, musíte pÅ™ipojit Piwik k vaÅ¡emu SMS úÄtu výše.",
+ "Settings_CredentialNotProvidedByAdmin": "Než budete moct vytvářet a spravovat telefonní Äísla, požádejte vaÅ¡eho administrátora, aby pÅ™ipojil Piwik k SMS úÄtu.",
+ "Settings_CredentialProvided": ";Váš %s SMS úÄet je nastaven správnÄ›.",
+ "Settings_DeleteAccountConfirm": "Opravdu chcete odstranit tento SMS úÄet?",
+ "Settings_InvalidActivationCode": "Zadaný kód nebyl platný, prosím zkuste to znovu.",
+ "Settings_LetUsersManageAPICredential": "Povolit uživatelům správu vlastních pověření API SMS úÄtů",
+ "Settings_LetUsersManageAPICredential_No_Help": "VÅ¡ichni uživatelé mohou pÅ™ijímat hlášení prostÅ™ednictvím SMS a budou používat kredity vaÅ¡eho úÄtu.",
+ "Settings_LetUsersManageAPICredential_Yes_Help": "Každý uživatel bude moct nastavit svůj SMS API úÄet an nebude používat váš kredit.",
+ "Settings_ManagePhoneNumbers": "Spravovat telefonní Äísla",
+ "Settings_PhoneActivated": "Telefonní Äíslo ověřeno! Nyní můžete pÅ™ijímat SMS se statistikami.",
"Settings_PhoneNumber": "Telefonní Äíslo",
"Settings_PhoneNumbers_Add": "PÅ™idat nové telefonní Äíslo",
+ "Settings_PhoneNumbers_CountryCode_Help": "Pokud nevíte telefonní kód vaší země, podívejte se zde",
+ "Settings_PhoneNumbers_Help": "Než budete moct pÅ™ijímat SMS se statistikami, telefonní Äíslo musí být zadáno níže.",
+ "Settings_PhoneNumbers_HelpAdd": "Po stisknutí \"přidat\" bude na telefon odeslána SMS s kódem. Uživatel, který obdrží SMS by se měl přihlásit do Piwiku, kliknout na nastavení, pak na Mobilní zprávy a zadat kód. Poté bude moct dostávat statistiky do svého telefonu.",
+ "Settings_PleaseSignUp": "Pokud chcetevytvářet SMS hlášení a dostávat krátké zprávy o statistikách do svého telefonu, zaregistrujte se na SMS API a zadejte svoje informace níže.",
"Settings_SMSAPIAccount": "Správa SMS API úÄtu",
"Settings_SMSProvider": "SMS Provider",
+ "Settings_SuperAdmin": "Nastavení super uživatele",
+ "Settings_SuspiciousPhoneNumber": "Pokud neobdržíte SMS zprávu, můžete to zkusit bez úvodní nuly, t. j. %s",
+ "Settings_UpdateOrDeleteAccount": "Také můžete tento úÄet %saktualizovat%s nebo %ssmazat%s.",
+ "Settings_ValidatePhoneNumber": "Ověřit",
+ "Settings_VerificationCodeJustSent": "PrávÄ› jsme na zadané telefonní Äíslo odeslali SMS s kódem. Zadejte ho výše a stisknÄ›te \"ověřit\".",
+ "SettingsMenu": "Mobilní zprávy",
"SMS_Content_Too_Long": "[příliš dlouhé]",
- "TopMenu": "Email & SMS Reporty"
+ "TopLinkTooltip": "Nechte si webové analýzi zasílat na e-mail nebo na váš mobilní telefon.",
+ "TopMenu": "Email & SMS Reporty",
+ "VerificationText": "Kód je %s. Pro ověření vaÅ¡eh otelefonního Äísla tento kód zkopírujte do formuláře přístupného na Piwik > %s > %s."
},
"MultiSites": {
"Evolution": "Vývoj",
- "PluginDescription": "Zobrazí souhrn\/statistiky pro více sídel. SouÄasnÄ› je spravován jako základní zásuvný modul Piwiku"
+ "LoadingWebsites": "NaÄítání webových stránek",
+ "Pagination": "%s - %s z %s",
+ "PluginDescription": "Zobrazí souhrn\/statistiky pro více sídel. SouÄasnÄ› je spravován jako základní zásuvný modul Piwiku",
+ "TopLinkTooltip": "Porovnejte webové analytické statistiky pro všechny vaše webové stránky."
},
"Overlay": {
"Clicks": "%s kliknutí",
+ "ClicksFromXLinks": "%1$s kliknutí z některého z %2$s odkazů",
"Domain": "Doména",
+ "ErrorNotLoading": "Sezení překryvu stránky nemohlo být zatím spuštěno.",
+ "ErrorNotLoadingDetails": "Možná nemá naÄtená stránka na pravé stranÄ› sledovací kód. V tomto případÄ› zkuste spustit pÅ™ekryv pro jinou stránku z hlášení stránek.",
+ "ErrorNotLoadingDetailsSSL": "Protože používáte Piwik přes HTTPS, nejpravděpodobnější je, že stránky nepodporují SSL. Zkuste přistoupit k Piwiku přes HTTP.",
+ "ErrorNotLoadingLink": "Klikněte zde pro více tipů k řešení problémů",
"Link": "Odkaz",
"Location": "Umístění",
- "OneClick": "1 kliknutí"
+ "NoData": "V daném období nejsou pro vybranou stránku k dispozici žádná data.",
+ "OneClick": "1 kliknutí",
+ "OpenFullScreen": "Přejít na celou obrazovku (bez postranní lišty)",
+ "Overlay": "Překryv stránky",
+ "PluginDescription": "Podívejte se na analytická data přímo na vašich stránkách.",
+ "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:."
},
"PrivacyManager": {
+ "AnonymizeIpDescription": "Zvolte \"ano\", pokud nemá Piwik sledovat plně kvalifikované IP adresy.",
"AnonymizeIpInlineHelp": "Skryje poslední byte IP adresy návštěvníka, aby souhlasila se zákony vaší země.",
+ "AnonymizeIpMaskLengtDescription": "Zvolte, kolik bitů z návštěvníkovy IP adresy má být maskováno.",
+ "AnonymizeIpMaskLength": "%s bitů - např. %s",
+ "CannotLockSoDeleteLogActions": "Tabulka log_action nebude vyprázdněn: adejte Mysql uživateli %s privilegium LOCK TABLES.",
+ "ClickHereSettings": "Pro přístup k nastavení %s klikněte zde.",
+ "CurrentDBSize": "Aktuální velikost databáze",
+ "DBPurged": "Databáze vyprázdněna.",
+ "DeleteBothConfirm": "Chystáte se povolit mazání dat logů i mazání dat hlášení. Tato operace trvale odstraní stará data. Opravdu to chcete provést?",
+ "DeleteDataDescription": "Můžete Piwik nastavit tak, aby po urÄitém Äase mazal data rá stalogů nebo zpracovaná data hlášení. To pomáhá udržet malou databázi.",
+ "DeleteDataDescription2": "Pokud si to přejete, zpracovaných hlášení mohou zůstat a budou odstraněnajen data logů (zobrazení stránek, návštěvy a konverze) budou smazána. Nebo mohou být smazána hlášení a data logů mohou být zachována.",
+ "DeleteDataInterval": "Smazat stará data každých",
+ "DeleteDataSettings": "Smazat staré logy návštěvníků a hlášení",
+ "DeleteLogDescription2": "Pokud povolíte automatické mazání logů, musíte zajistit, že jsou zpracovány 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",
"DeleteLogsOlderThan": "Vymazat logy starší než",
+ "DeleteMaxRows": "Maximální poÄet řádků, které se mají smazat pÅ™i jednom bÄ›hu:",
"DeleteMaxRowsNoLimit": "bez limitu",
+ "DeleteReportsConfirm": "Chystáte se povolit mazání starých hlášení. Pokud je budete chtít zobrazit, budou muset být znovu vytvořena. Opravdu to chcete provést?",
+ "DeleteReportsDetailedInfo": "Data z databázových archivních Äíselných tabulek (%s) a archivních tabulek syrových dat (%s) budou odstranÄ›na.",
+ "DeleteReportsInfo": "Pokud je povoleno, stará hlášení budou smazána. %sDoporuÄujeme použít tuto možnost pouze, je-li velikost vaší databáze omezená.%s",
+ "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": "Nastavení plánování",
+ "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",
+ "DoNotTrack_Disabled": "Pivik sleduje vÅ¡echny návÅ¡tÄ›vníky vÄetnÄ› tÄ›ch, kteří v možnostech svého webového prohlížeÄe nastavili, že si nepÅ™ejí být sledováni.",
+ "DoNotTrack_DisabledMoreInfo": "DoporuÄujeme respektovat soukromí vaÅ¡ich návÅ¡tÄ›vníků a podporu Do not track povolit.",
+ "DoNotTrack_Enable": "Povolit podporu Do not track",
+ "DoNotTrack_Enabled": "Aktuálně respektujete soukromí vašich návštěvníků, víborně!",
+ "DoNotTrack_EnabledMoreInfo": "Pokud uživatelé nastavili \"nepřeji si být sledován\" (Donottrack je povolen), Piwik nebude sledovat tyto návštěvy.",
+ "DoNotTrack_SupportDNTPreference": "Podporovat předvolbu Do not track",
+ "EstimatedDBSizeAfterPurge": "Odhadovaná velikost databáze po vyprázdnění",
+ "EstimatedSpaceSaved": "Odhadované ušetřené místo",
+ "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.",
+ "LeastMonthsInput": "Prosím uveÄte poÄet mÄ›síců vÄ›tší než %s.",
"MenuPrivacySettings": "Ochrana soukromí",
+ "NextDelete": "Následující plánované mazání za",
+ "PluginDescription": "Přizpůsobí Piwik tak, aby splňoval zákony o soukromí dat.",
+ "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",
- "TeaserHeadline": "Nastavení ochrany soukromí"
+ "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",
+ "Teaser": "Na této stránce můžete Piwik nastavit tak, aby splňoval zákony o soukromí s použitím %s anonymizování IP adresy návÅ¡tÄ›vníků%s, %s automatického odstraňování starých logů návÅ¡tÄ›vníků z databáze%s a %s poskytováním mechanismu vylouÄení pro vaÅ¡e webové stránky%s.",
+ "TeaserHeadline": "Nastavení ochrany soukromí",
+ "UseAnonymizedIpForVisitEnrichment": "Anonymizované IP adresy použít i při obohacování návštěv.",
+ "UseAnonymizedIpForVisitEnrichmentNote": "Zásuvné moduly jako geolokace podle IP a poskytovatel vylepšují metadata o návštěvnících. Ve výchozím stavu tyto zásuvné moduly používají anonymizované IP adresy. Pokud vyberete \"ne\", pak tyto zásuvné moduly budou používat plné adresy, což způsobí omezení soukromí ale zlepšení výsledků.",
+ "UseAnonymizeIp": "Anonymizovat IP adresy návštěvníků",
+ "UseDeleteLog": "Průběžně mazat staré logy návštěvníků z databáze",
+ "UseDeleteReports": "Průběžně mazat stará hlášení z databáze"
},
"Provider": {
"ColumnProvider": "Poskytovatel",
"PluginDescription": "Zobrazí poskytovatele připojení návštěvníků",
+ "ProviderReportDocumentation": "Toto hlášení poskytuje informace o tom, jakého poskytovatele internetového připojení vaši návštěvníci při přístupu na stránky použili. Pokud kliknete na jméno poskytovatele, zobrazí se podrobnosti. %s Pokud Piwik nebyl schopen poskytovatele zjistit, je zobrazen jako IP.",
"SubmenuLocationsProvider": "Umístění a poskytovatel",
"WidgetProviders": "Poskytovatelé"
},
"Referrers": {
+ "AllReferrersReportDocumentation": "Toto hlášení zobrazuje vÅ¡echny referrery v jednom uceleném hlášení, kde zobrazuje vÅ¡echny webové stránky, klíÄová slova a kampanÄ›, které vaÅ¡i návÅ¡tÄ›vníci pÅ™i hledání vaÅ¡ich webových stránek použili.",
"Campaigns": "KampanÄ›",
+ "CampaignsDocumentation": "Návštěvníci, kteří přišli na vaše webové stránky jako výsledek kampaně. %s Pro více informací si prohlédněte hlášení %s.",
+ "CampaignsReportDocumentation": "Toto hlášení zobrazuje, jaké kampanÄ› pÅ™ivedly návÅ¡tÄ›vníky na vaÅ¡e stránky. %s Pro více informací o sledování kampaní si %spÅ™eÄtÄ›te dokumentaci kampaní na piwik.org%s.",
"ColumnCampaign": "Kampaň",
"ColumnSearchEngine": "Vyhledávací stroj",
+ "ColumnSocial": "Sociální síť",
"ColumnWebsite": "Web",
"ColumnWebsitePage": "Web stránka",
"DetailsByReferrerType": "Podrobnosti podle typu refereru",
"DirectEntry": "Přímy vstup",
+ "DirectEntryDocumentation": "NávÅ¡tÄ›vník zadal URL vaÅ¡ich stránek do webového prohlížeÄe a zaÄal s procházením zde - adresu zadal přímo.",
"Distinct": "JedineÄní refereÅ™i podle typu",
"DistinctCampaigns": "jedineÄné kampanÄ›",
"DistinctKeywords": "jedineÄná klíÄová slova",
"DistinctSearchEngines": "jedineÄné vyhledávaÄe",
"DistinctWebsites": "jedineÄná weby",
+ "EvolutionDocumentation": "Toto je přehled referrerů, které vedly návštěvníky na vaše webové stránky.",
+ "EvolutionDocumentationMoreInfo": "Pro více informací o rozdílných typech referrerů nahlédněte do dokumentace tabulky %s.",
"Keywords": "KlíÄových slov",
+ "KeywordsReportDocumentation": "Toto hlášení zobrazuje klíÄová slova, která uživatelé hledali, než byli odkázáni na vaÅ¡e stránky. %s Kliknutím na řádek tabulky zobrazíte distribuci vyhledávaÄů, které byly použity k hledání tohoto klíÄového slova.",
"PluginDescription": "Zobrazí data refererů: vyhledávací stroje, klíÄová slova, weby, správu kampaní, přímé vstupy",
+ "Referrer": "Referrer",
+ "ReferrerName": "Jméno referreru",
"Referrers": "Odkazující stránky",
+ "ReferrersOverview": "Přehled referrerů",
"SearchEngines": "Vyhledávacích strojů",
+ "SearchEnginesDocumentation": "NávÅ¡tÄ›vník byl na vaÅ¡e stránky odkázán vyhledávaÄem. %s Pro více informací si prohlédnÄ›te hlášení %s.",
+ "SearchEnginesReportDocumentation": "Toto hlášení zobrazuje, které vyhledávaÄe odkázali návÅ¡tÄ›vníky na vaÅ¡e stránky. %s Kliknutím na řádek v tabulce zobrazíte, co uživatelé na daném vyhledávaÄi hledali.",
+ "SocialFooterMessage": "Toto je podmnožina hlášení webových stránek zobrazeného vlevo. Filtruje ostatní stránky, takže můžete přímo porovnat referrery ze sociálních sítí.",
+ "Socials": "Sociální sítě",
+ "SocialsReportDocumentation": "Toto hlášení zobrazuje, jaké sociální sítě přivedly návštěvníky na vaše stránky. <br\/> Kliknutím na Kliknutím na řádek tabulky zobrazíte stránky sociální sítě, ze kterých návštěvníci přišli.",
"SubmenuSearchEngines": "VyhledávaÄe & klíÄová slova",
"SubmenuWebsites": "Web",
"Type": "Typ refereru",
"TypeCampaigns": "%s z kampaní",
"TypeDirectEntries": "%s přímých vstupů",
+ "TypeReportDocumentation": "Tato tabulka obsahuje informace o distribuci typů referrerů.",
"TypeSearchEngines": "%s z vyhledavaÄů",
"TypeWebsites": "%s z web sídel",
"UsingNDistinctUrls": "(používá %s jedineÄných url)",
+ "ViewAllReferrers": "Zobrazit všechny referrery",
+ "ViewReferrersBy": "Zobrazit referrery podle %s",
"Websites": "Web",
+ "WebsitesDocumentation": "Návštěvník následoval odkaz, který na vaše stránky vedl odjinud. %s Podívejte se na hlášení %s, pokud chcete vědět více.",
+ "WebsitesReportDocumentation": "V této tabulce můžete vidět stránky, které odkázaly návštěvníky na vaše stránky. %s Kliknutím na řádek v tabulce zobrazíte URL, na kterých se odkazy nalézají.",
"WidgetExternalWebsites": "Seznam externích web sídel",
- "WidgetKeywords": "Seznam klíÄových slov"
+ "WidgetGetAll": "VÅ¡echny referrery",
+ "WidgetKeywords": "Seznam klíÄových slov",
+ "WidgetSocials": "Seznam sociálních sítí",
+ "WidgetTopKeywordsForPages": "NejÄastÄ›jší klíÄová slova pro URL stránky",
+ "XPercentOfVisits": "%s%% návštěv"
},
"RowEvolution": {
"AvailableMetrics": "Dostupná měření",
+ "CompareDocumentation": "KliknÄ›te na odkaz níže a otevÅ™ete toto vyskakovací okno pro jiný řádek ze stejné tabulky kvůli srovnání více záznamů. <br\/> Použijte shift + kliknutí pro oznaÄení řádku k porovnání bez otevÅ™ení tohoto vyskakovacího okna.",
+ "CompareRows": "Porovnat řádky",
+ "ComparingRecords": "Porovnávání %s řádků",
+ "Documentation": "Klikněte na měření, pokud je chcete zobrazit ve velkém grafu vývoje. Použijte shoft + kliknutí pro zobrazení více měření najednou.",
"MetricBetweenText": "mezi %s a %s",
"MetricChangeText": "%s za interval",
- "MetricsFor": "Měření pro %s"
+ "MetricMinMax": "Během tohoto období %1$s se pohyboval(a) mezi %2$s a %3$s",
+ "MetricsFor": "Měření pro %s",
+ "MultiRowEvolutionTitle": "Vývoj více řádků",
+ "PickAnotherRow": "Vyberte další řádek pro srovnání",
+ "PickARow": "Vyberte řádek ke srovnání"
},
"ScheduledReports": {
"AggregateReportsFormat": "Možnosti zobrazení",
+ "AggregateReportsFormat_GraphsOnly": "Pouze zobrazit grafy (ne tabulky hlášení)",
+ "AggregateReportsFormat_TablesAndGraphs": "Zobrazit tabulky hlášení a grafy pro všechna hlášení",
+ "AggregateReportsFormat_TablesOnly": "(Výchozí) zobrazit tabulky hlášení (grafy pouze pro klíÄová měření)",
"AlsoSendReportToTheseEmails": "Odesílat hlášení také na tyto e-maily (jeden e-mail na řádek):",
+ "AreYouSureDeleteReport": "Opravdu chcete odstranit toto hlášení a jeho plán?",
+ "CreateAndScheduleReport": "Vytvořit a naplánovat hlášení",
"CreateReport": "Vytvořit hlášení",
+ "CustomVisitorSegment": "Vlastní segment návštěvníka",
+ "DescriptionOnFirstPage": "Popis hlášení bude zobrazen na první jeho straně.",
+ "DisplayFormat_TablesOnly": "Pouze zobrazit tabulky (žádné grafy)",
"EmailHello": "Ahoj,",
"EmailReports": "Poslat hlášení na e-mail",
"EmailSchedule": "Plánování zasílání hlášení",
+ "EvolutionGraph": "Zobrazit historické grafy pro %s nejvyšších hodnot",
"FrontPage": "Hlavní strana",
"ManageEmailReports": "Spravovat emailové hlášení",
"MonthlyScheduleHelp": "MÄ›síÄní plán: hlášení bude odesláno první den mÄ›síce",
+ "MustBeLoggedIn": "Musíte být přihlášen, abyste mohl vytvářet vlastní hlášení.",
+ "NoRecipients": "Toto hlášení nemá příjemce",
+ "OClock": "hodin",
"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",
+ "PleaseFindBelow": "Najděte níže vaše %1$s hlášení pro %2$s.",
"PluginDescription": "VytvoÅ™it a uložit vlastní hlášení a dostávat denní, týdenní nebo mÄ›síÄní emailové hlášení.",
"ReportFormat": "Formát hlášení",
+ "ReportHour": "Zasílat hlášení v",
+ "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",
+ "ReportType": "Odeslat hlášení pomocí",
+ "ReportUpdated": "Hlášení aktualizováno",
+ "Segment_Deletion_Error": "Tento segment nemůže být smazán nebo zneviditelněn, protože se používá k vytváření e-mailových hlášení %s. Zkuste to znovu poté, co ho z těchto hlášení odstraníte.",
+ "Segment_Help": "Můžete zvolit existující segment, který bude aplikován na data v tomto e-mailovém hlášení. Segmenty můžete vytvářet a upravovat vlastní segmenty na vaší nástěnce %s(klikněte zde pro otevření)%s, pak klikněte na box \"%s\", pak \"%s\".",
+ "SegmentAppliedToReports": "Segment %s je aplikován na hlášení.",
"SendReportNow": "Odeslat hlášení ihned",
"SendReportTo": "Odeslat hlášení",
"SentToMe": "Odeslat hlášení mně",
+ "TableOfContent": "Seznam hlášení",
+ "ThereIsNoReportToManage": "Pro stránky %s neexistuje žádné hlášení, které lze spravovat",
+ "TopLinkTooltip": "Vytvářejte vlastní hlášení, která budou automaticky doruÄena na vaÅ¡i nebo zákazníkovu e-mailovou adresu.",
"TopOfReport": "Zpět nahoru",
+ "UpdateReport": "Aktualizovat hlášení",
"WeeklyScheduleHelp": "Týdenní plán: hlášení bude odesláno každé pondělí"
},
+ "SegmentEditor": {
+ "AddANDorORCondition": "Přidat podmínku %s",
+ "AddNewSegment": "Přidat nový segment",
+ "AreYouSureDeleteSegment": "Opravdu chcete odstranit tento segment?",
+ "AutoArchivePreProcessed": "Segmentovaná hlášení jsou předzpracována rychleji (vyžadují cron)",
+ "AutoArchiveRealTime": "Segmentovaná hlášení jsou zpracována v reálném Äase",
+ "ChooseASegment": "Zvolte segment",
+ "DataAvailableAtLaterDate": "Vaše segmentovaná analytická hlášení budou dostupná později. Omlouváme se za tuto nepříjemnost.",
+ "DefaultAllVisits": "Všechny návštěvy",
+ "DragDropCondition": "Přetáhněte podmínku",
+ "LoadingSegmentedDataMayTakeSomeTime": "Zpracování segmentovaných dat návštěvníků může pár minut trvat...",
+ "OperatorAND": "AND",
+ "OperatorOR": "OR",
+ "SaveAndApply": "Uložit & použít",
+ "SegmentDisplayedAllWebsites": "Všechny webové stránky",
+ "SegmentDisplayedThisWebsiteOnly": "Pouze tyto webové stránky",
+ "SegmentIsDisplayedForWebsite": "A zobrazený po",
+ "SegmentNotApplied": "Segment %s není aplikován",
+ "SegmentNotAppliedMessage": "Požadujete data pro vlastní segment %s, ale konfigurace Piwiku aktuálnÄ› nedovoluje z důvodů výkonu zpracování hlášení v reálném Äase.",
+ "SelectSegmentOfVisitors": "Vyberte segment návštěvníků",
+ "ThisSegmentIsVisibleTo": "Tento segment je viditelný",
+ "VisibleToAllUsers": "Všem uživatelům",
+ "VisibleToMe": "MnÄ›",
+ "YouDontHaveAccessToCreateSegments": "Pro vytváření a úpravu segmentů nemáte požadovanou přístupovou úroveň.",
+ "YouMayChangeSetting": "Jinak můžete nastavení změnit v souboru %s, nebo můžete upravit tento segment a zvolit %s.",
+ "YouMustBeLoggedInToCreateSegments": "Pro vytváření a úpravu vlastních segmentů návštěvníků musíte být přihlášen."
+ },
"SEO": {
"AlexaRank": "Hodnocení Alexa",
"Bing_IndexedPages": "Stránek zaindexovaných Bingem",
@@ -979,8 +1586,12 @@
"DefaultCurrencyForNewWebsites": "Výchozí měna pro nové weby",
"DefaultTimezoneForNewWebsites": "Výchozí Äasová zóna pro nové weby",
"DeleteConfirm": "Jste si jisti, že chcete vymazat Web %s?",
+ "DisableSiteSearch": "Nesledovat vyhledávání na stránkách",
"EcommerceHelp": "Pokud zapnete Cíle, tak hlášení bude mít novou sekci Obchod.",
"EnableEcommerce": "Obchod zapnutý",
+ "EnableSiteSearch": "Sledování vyhledávání na stránkách je povoleno",
+ "EnableSiteSpecificUserAgentExclude": "Povolit vynechání user agentů specifické pro stránky.",
+ "EnableSiteSpecificUserAgentExclude_Help": "Pokud pro různé webové stránky potÅ™ebujete vylouÄit různé uživatelské agenty, zaÅ¡krtnÄ›te toto pole, kliknÄ›te na uložit a pak %1$spÅ™idejte uživatelské agenty výše%2$s.",
"ExceptionDeleteSite": "Není možné vymazat toto Web, protože je jediné registrované. Nejprve přidejte nový web, poté jej vymažte.",
"ExceptionEmptyName": "Jméno Webu nemůže zůstat prázdné.",
"ExceptionInvalidCurrency": "Měna %s je neplatná. Prosím zadejte platný symbol měny. (např.: %s)",
@@ -990,11 +1601,20 @@
"ExceptionNoUrl": "Musíte zadat alespoň jednu URL pro web.",
"ExcludedIps": "Vynechané IP adresy",
"ExcludedParameters": "Vynechané parametry",
+ "ExcludedUserAgents": "VylouÄení uživatelÅ¡tí agenti",
+ "GlobalExcludedUserAgentHelp1": "Vložte seznam uživatelských agentů, které mají být vylouÄeny ze sledování Piwikem.",
+ "GlobalExcludedUserAgentHelp2": "Tuto funkci můžete využít k vylouÄení nÄ›kterých robotů ze sledování.",
"GlobalListExcludedIps": "Globální seznam vynechaných IP adres",
"GlobalListExcludedQueryParameters": "Globální seznam vynechaných URL parametrů",
+ "GlobalListExcludedUserAgents": "Globální seznam uživatelských agentů k vylouÄení",
+ "GlobalListExcludedUserAgents_Desc": "Pokud Å™etÄ›zec uživatelského agenta obsahuje nÄ›který ze zadaných Å™etÄ›zců, tento návÅ¡tÄ›vník bude vylouÄen z Piwiku.",
"GlobalWebsitesSettings": "Globální nastavení sídel",
"HelpExcludedIps": "Zatejte seznam IP adrese, jednu na řádek, které chcete vynechat ze záznamů Piwiku. Můžete použít zástupné znaky např. %1$s nebo %2$s",
"JsTrackingTagHelp": "Zde je JavaScriptový zaznamenávací tag pro vložení na všechny vaše stránky",
+ "KeepURLFragments": "Sledování URL fragmentů stránek",
+ "KeepURLFragmentsHelp": "Pokud je pole níže odškrtnuté, bude při sledování z URL fragment (všechno po znaku %1$s) odstraněn: %2$s bude zaznamenáno jako %3$s",
+ "KeepURLFragmentsHelp2": "Toto nastavení můžete také výše nastavit pro konkrétní stránky.",
+ "KeepURLFragmentsLong": "Zachovat URL fragmenty stránek při sledování",
"ListOfIpsToBeExcludedOnAllWebsites": "IP adresy uvedené níže budou vynechány ze záznamu pro všechny weby.",
"ListOfQueryParametersToBeExcludedOnAllWebsites": "URL parametry uvedené níže budou vynechány z URL pro všechny www adresy",
"ListOfQueryParametersToExclude": "Zadejte seznam URL parametrů, jeden na řádek, které budou vynechány z hlášení Piwiku",
@@ -1006,12 +1626,23 @@
"PiwikOffersEcommerceAnalytics": "Piwik povolen pro rozšířenou analytiku a měření stránek typu Obchod. Číst o %s analytice %s více.",
"PiwikWillAutomaticallyExcludeCommonSessionParameters": "Piwik automaticky vynechá běžné parametry sezení (%s)",
"PluginDescription": "Správa sídel v Piwiku: Přidat nový web, Upravit existující, Zobrazit JavaScriptový kód při umístění na stránky. Všechny akce jsou k dispozici také přes API.",
+ "SearchCategoryDesc": "Piwik může také sledovat kategorii vyhledávánípro každé klíÄové slovo interního vyhledávání.",
+ "SearchCategoryLabel": "Parametr kategorie",
+ "SearchCategoryParametersDesc": "Můžete zadat seznam parametrů dotazu oddÄ›lených Äárkou, které urÄují kategorii.",
+ "SearchKeywordLabel": "Parametr dotazu",
+ "SearchKeywordParametersDesc": "Vložte seznam vÅ¡ech parametrů dotazu oddÄ›lených Äárkou, které obsahují klíÄové slovo stránek.",
+ "SearchParametersNote": "Poznámka: Parametry dotazu a kategorie budou pouze pro webové stránky, které mají vyhledávání na stránkách povolené, ale tyto parametry jsou prázdné.",
+ "SearchParametersNote2": "Pokud chcete zakázat vyhledávání na stránkách pro nové stránky, nechte tato dvě pole prázdná.",
+ "SearchUseDefault": "Použít %svýchozí%s parametry vyhledávání na stránkách",
"SelectACity": "Zvolte město",
"SelectDefaultCurrency": "Můžete zvolit výchozí měnu pro nové weby",
"SelectDefaultTimezone": "Můžete zvolit výchozí Äasovou zónu pro nové weby",
"ShowTrackingTag": "zobrazit zaznamenávací tagy",
"Sites": "Weby",
+ "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.",
+ "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",
@@ -1019,8 +1650,43 @@
"YouCurrentlyHaveAccessToNWebsites": "Momentálně máte přístup k %s stránce\/stránkám.",
"YourCurrentIpAddressIs": "VaÅ¡e souÄasná IP adresa je %s"
},
+ "Transitions": {
+ "BouncesInline": "%s odrazů",
+ "DirectEntries": "Přímé záznamy",
+ "ErrorBack": "Přejít k předchozí akci",
+ "ExitsInline": "%s východy",
+ "FromCampaigns": "Z kampaní",
+ "FromPreviousPages": "Z interních stránek",
+ "FromPreviousPagesInline": "%s z interních stránek",
+ "FromPreviousSiteSearches": "Z interního vyhledávání",
+ "FromPreviousSiteSearchesInline": "%s z interních vyhledávání",
+ "FromSearchEngines": "Z vyhledávaÄů",
+ "FromWebsites": "Z webových stránek",
+ "IncomingTraffic": "Příchozí provoz",
+ "LoopsInline": "%s obnovení stránky",
+ "NoDataForAction": "Pro %s nejsou žádná data",
+ "NoDataForActionDetails": "BuÄ akce nemÄ›la za období %s žádné zobrazení stránky, nebo je neplatná.",
+ "OutgoingTraffic": "Odchozí provoz",
+ "PluginDescription": "Hlášení o předchozích a následujících akcích pro každou URL stránky.",
+ "ShareOfAllPageviews": "Tato stránka měla %s zobrazení (%s všech zobrazení)",
+ "ToFollowingPages": "Na interní stránky",
+ "ToFollowingPagesInline": "%s na interní stránky",
+ "ToFollowingSiteSearches": "Interní vyhledávání",
+ "ToFollowingSiteSearchesInline": "%s interních vyhledávání",
+ "XOfAllPageviews": "%s ze všech zobrazení této stránky",
+ "XOutOfYVisits": "%s (z %s)"
+ },
"UserCountry": {
+ "AssumingNonApache": "Nelze nalézt funkci apache_get_modules,př edpokládám jiný server než Apache.",
+ "CannotFindGeoIPDatabaseInArchive": "V tar archivu %2$s se nepodařilo najít soubor %1$s!",
+ "CannotFindGeoIPServerVar": "Proměnná %s není nastavena. Váš webový server nemusí být správně nakonfigurován.",
+ "CannotFindPeclGeoIPDb": "Nepodařilo se najít databázi zemí, regionů nebo měst pro GEOIP modul PECl. Ujistěte se, že vaše GEOIP databáze je umísěna v adresáři %1$s a je pojmenována %2$s nebo %3$s, jinak si jí GEOIP modul PECl nevšimne.",
+ "CannotListContent": "Nepodařilo se vypsat obsah pro %1$s: %2$s",
+ "CannotLocalizeLocalIP": "IP adresa %s je místní a enemůže být geolokována.",
+ "CannotSetupGeoIPAutoUpdating": "Vypadá to, že vaše GEOIP databáze ukládáte vně Piwiku (víme to, protože v podadresáři misc žádné databáze nejsou, ale gEOIP funguje). Piwik nemůže automaticky aktualizovat GEOIP databázi, když není uložena v podadresáři misc.",
+ "CannotUnzipDatFile": "Nepodařilo se rozbalit dat soubor v %1$s: %2$s",
"City": "Město",
+ "CityAndCountry": "%1$s, %2$s",
"Continent": "Kontinent",
"continent_afr": "Afrika",
"continent_amc": "Středná Amerika",
@@ -1304,44 +1970,112 @@
"country_zm": "Zambia",
"country_zr": "Zaire",
"country_zw": "Zimbabwe",
+ "CurrentLocationIntro": "Podle tohoto poskytovatele je vaše aktuální umístění",
+ "DefaultLocationProviderDesc1": "Výchozí poskytovatel umístění odhaduje zemi návštěvníka na základě použitého jazyka.",
+ "DefaultLocationProviderDesc2": "To není příliÅ¡ pÅ™esné, proto doporuÄujeme %1$sinstalovat a používat %2$sGEOIP%3$s.%4$s",
+ "DefaultLocationProviderExplanation": "Používáte výchozího poskytovatele umístÄ›ní, což znamená, že se Piwik pokusí odhadnout zemi návÅ¡tÄ›vníka na základÄ› použitého jazyka. %1$sPÅ™eÄtÄ›te si%2$s, jak nastavit pÅ™esnÄ›jší geolokaci.",
"DistinctCountries": "%s jedineÄných států",
"DownloadingDb": "Stahování %s",
+ "DownloadNewDatabasesEvery": "Aktualizovat databáze každých",
+ "FatalErrorDuringDownload": "PÅ™i stahování souboru doÅ¡lo k fatální chybÄ›. NÄ›co může být Å¡patnÄ› s vaším internetovým pÅ™ipojením, staženou GEOIP databází, nebo s Piwikem. Zkuste ji stáhnout a nainstalovat ruÄnÄ›.",
"FoundApacheModules": "Piwik našel tyto Apache moduly",
+ "FromDifferentCities": "různá města",
+ "GeoIPCannotFindMbstringExtension": "Nelze najít funkci %1$s. Ujistěte se, že je modul %2$s nainstalován a povolen.",
"GeoIPDatabases": "Databáze GeoIP",
+ "GeoIPDocumentationSuffix": "Pokud chcete vidÄ›t toto hlášení, musíte nastavit GEOIP v administraci na záložce geolokace. KomerÄní %1$sMaxmind%2$s GeoIP databáze mají vÄ›tší pÅ™esnost než volnÄ› Å¡iÅ™itelné. Pokud chcete vidÄ›t, jak pÅ™esné jsou, kliknÄ›te %3$szde%4$s.",
+ "GeoIPImplHasAccessTo": "Tato implementace GeoIP má přístup kn následujícím typům databází.",
+ "GeoIPIncorrectDatabaseFormat": "Vypadá to, že vaše GeoIP databáze má nesprávný formát. Může být poškozena. Ujistěte se, že používáte binární formát a zkuste ji nahradit jinou kopií.",
+ "GeoIpLocationProviderDesc_Pecl1": "Tento poskytovatel umístění používá GeoIP databázi a PECl modul k přesnému a efektivnímu nalezení umístění vašich návštěvníků.",
+ "GeoIpLocationProviderDesc_Pecl2": "Tento poskytovatel nemá žádná omezení, takže to je ten, kterého doporuÄujeme používat.",
+ "GeoIpLocationProviderDesc_Php1": "Tento poskytovatel umístÄ›ní je nejjednodušší na instalaci, protože nevyžaduje žádnou konfiguraci serveru (ideální pro sdílené hostingy). K pÅ™esnému urÄení umístÄ›ní návÅ¡tÄ›vníků používá GeoIP databázi a MaxMind php API.",
+ "GeoIpLocationProviderDesc_Php2": "Pokud mají vaše webové stránky velký provoz, můžete zjistit, že je tento poskytovatel polohy pomalý. V takovém případě nainstalujte %1$srozšíření PECl%2$s nebo %3$sserverový modul%4$s.",
+ "GeoIpLocationProviderDesc_ServerBased1": "Tento poskytovatel umístÄ›ní využívá GeoIP modul, který byl instalován ve vaÅ¡em HTTP serveru. Tento poskytovatel je pÅ™esný a rychlý, ale může být použit pouze s %1$snormálním sledování prohlížeÄů.%2$s",
+ "GeoIpLocationProviderDesc_ServerBased2": "Pokud musíte importovat logy nebo dÄ›lat nÄ›co jiného, co vyžaduje nastavování IP adres, použijte %1$sPECl implementaci GeoIP (doporuÄeno%2$s nebo %3$sPHP implementaci GeoIP.%4$s",
+ "GeoIpLocationProviderDesc_ServerBasedAnonWarn": "Poznámka: Anonimizace IP adres nemá vliv na umístění hlášené tímto poskytovatelem. Před jeho používáním ověřte, že to neodporuje žádným zákonům.",
+ "GeoIpLocationProviderNotRecomnended": "Geolokace funguje, ale nepoužíváte doporuÄeného poskytovatele umístÄ›ní.",
+ "GeoIPNoServerVars": "Piwik nemůže najít žádné GeoIP %s proměnné",
+ "GeoIPPeclCustomDirNotSet": "PHP ini možnost %s není nastavena.",
+ "GeoIPServerVarsFound": "Piwik detekuje následující GeoIP %s proměnné",
+ "GeoIPUpdaterIntro": "Piwik aktuálně spravuje aktualizace pro následující GeoIP databáze",
+ "GeoLiteCityLink": "Pokud používáte databázi GeoLite, použijte následující odkaz: %1$s%2$s%3$s.",
"Geolocation": "Geolokace",
+ "GeolocationPageDesc": "Na této stránce můžete zmÄ›nit, jak Piwik urÄuje umístÄ›ní návÅ¡tÄ›vníků.",
+ "getCityDocumentation": "Toto hlášení zobrazuje města návštěvníků, když přistoupili k vašim stránkám.",
+ "getContinentDocumentation": "Toto hlášení zobrazuje, na kterém kontinentu byli návštěvníci při přístupu k vašim stránkám.",
+ "getCountryDocumentation": "Toto hlášení zobrazuje zemi, ve které byli návštěvníci, když přistoupili k vašim stránkám.",
+ "getRegionDocumentation": "Toto hlášení zobrazuje region, ve kterém byli návštěvníci, když přistupovali k vašim stránkám.",
"HowToInstallApacheModule": "Jak nainstalovat GeoIP modul na Apache?",
+ "HowToInstallGeoIPDatabases": "Jak získám GeoIP databáze?",
"HowToInstallGeoIpPecl": "Jak nainstalovat GeoIP PECL rozšíření?",
"HowToInstallNginxModule": "Jak nainstalovat GeoIP modul pro Nginx?",
+ "HowToSetupGeoIP": "Jak nastavit přesnou geolokaci s GeoIP",
+ "HowToSetupGeoIP_Step1": "%1$sstáhnout%2$s databázi měst GeoLite od %3$sMaxMind%4$s.",
+ "HowToSetupGeoIP_Step2": "Rozbalte tento soubor a zkopírujte výsledek, %1$s, do podadresáře %2$smisc%3$s Piwiku (můžete to provést buÄ pomocí FTP nebo SSH).",
+ "HowToSetupGeoIP_Step3": "Obnovte tuto obrazovku. %1$sPHP GeoIP%2$s poskytovatel bude %3$snainstalovaný%4$s. Vyberte ho.",
+ "HowToSetupGeoIP_Step4": "A je hotovo. To znamená, že nyní uvidíte mÄ›sto a region vaÅ¡ich návÅ¡tÄ›vníků spolu s velmi pÅ™esným urÄení jejich zemÄ›.",
+ "HowToSetupGeoIPIntro": "Vypadá to, že nemáte nastavenou pÅ™esnou geolokaci. Je to užiteÄná vlastnost a bez ní neuvidíte pÅ™esné a kompletní informace o umístÄ›ní vaÅ¡ich návÅ¡tÄ›vníků. Zde je, jak s ní můžete rychle zaÄít:",
+ "HttpServerModule": "Modul HTTP serveru",
+ "InvalidGeoIPUpdatePeriod": "Neplatná doba pro aktualizovaÄ GeoIP databáze: %1$s. Platné hodnoty jsou %2$s.",
+ "IPurchasedGeoIPDBs": "Zakoupil jsem více %1$spřesné databáze od MaxMind%2$s a chci nastavit automatické katualizace.",
"ISPDatabase": "Databáze ISP",
+ "IWantToDownloadFreeGeoIP": "Chci stáhnout volnou GeoIP databázi...",
"Latitude": "Zeměpisná šířka",
"Location": "Místo",
+ "LocationDatabase": "Databáze umístění",
+ "LocationDatabaseHint": "Databáze umístění je databáze zemí, regionů, nebo měst.",
+ "LocationProvider": "Poskytovatel umístění",
"Longitude": "Zeměpisná délka",
+ "NoDataForGeoIPReport1": "Pro toto hlášení nejsou k dispozici žádná data, protože buÄ nejsou k dispozici GeoIP data, nebo nemohly být geolokovány IP adresy návÅ¡tÄ›vníků.",
+ "NoDataForGeoIPReport2": "Pokud chcete umožnit přesnou geolokaci, změňte nastavení %1$szde%2$s a použijte %3$sdatabázi na úrovni měst%4$s.",
"Organization": "SpoleÄnost",
+ "OrgDatabase": "Databáze organizací",
+ "PeclGeoIPNoDBDir": "PECl modul hledá geoIP databáze v adresáři %1$s, ale ten neexistuje. Vytvořte ho a umístěte do něho databáze, nebo nastavte php.ini možnost %2$s na správný adresář.",
+ "PeclGeoLiteError": "Vaše GeoIP databáze v adresáři %1$s je pojmenována %2$s. Bohužel, PECl modul ji pod tímto názvem nenajde. Přejmenujte ji na %3$s.",
+ "PiwikNotManagingGeoIPDBs": "Piwik aktuálně nespravuje žádné GeoIP databáze.",
"PluginDescription": "Zobrazí státy návštěvníků",
"Region": "Region",
- "SubmenuLocations": "Umístění"
+ "SetupAutomaticUpdatesOfGeoIP": "Nastavit automatické aktualizace GeoIP databází",
+ "SubmenuLocations": "Umístění",
+ "TestIPLocatorFailed": "Piwik se pokusil zjistit místění námé IP adresy %1$s, ale server odpověděl %2$s. Kdyby byl tento poskytovatel nastaven správně, odpověděl by %3$s.",
+ "ThisUrlIsNotAValidGeoIPDB": "Stažený soubor není platná GeoIP databáze. Zkontrolujte URL, nebo soubor stáhnÄ›te ruÄnÄ›.",
+ "ToGeolocateOldVisits": "Pokud chcete získat data o umístění pro staré návštěvy, použijte skript popisovaný %1$szde%2$s.",
+ "UnsupportedArchiveType": "Nalezen nepodporovaný typ archivu %1$s.",
+ "UpdaterHasNotBeenRun": "Aktualizátor nebyl nikdy spuštěn.",
+ "UpdaterIsNotScheduledToRun": "Není plánováno, že v budoucnu poběží.",
+ "UpdaterScheduledForNextRun": "Je plánováno, že poběží při příštím provedení cron příkazu core:archive.",
+ "UpdaterWasLastRun": "Aktualizátor byl naposledy spuštěn v %s.",
+ "UpdaterWillRunNext": "Další spuštění je naplánováno na %s.",
+ "WidgetLocation": "Umístění návštěvníka"
},
"UserCountryMap": {
+ "AndNOthers": "a %s dalších",
"Cities": "Města",
"Countries": "ZemÄ›",
"DaysAgo": "před %s dny",
+ "GoalConversions": "%s konverzí cíle",
"Hours": "hodin",
"HoursAgo": "před %s hodinami",
"map": "mapa",
"Minutes": "minut",
"MinutesAgo": "před %s minutami",
+ "None": "Nic",
"NoVisit": "Žádná návštěva",
"RealTimeMap": "Mapa v reálném Äase",
"Regions": "Regiony",
"Searches": "%s vyhledávání",
"Seconds": "sekund",
"SecondsAgo": "před %s sekundami",
+ "ShowingVisits": "Geolokované návštěvy posledních",
+ "Unlocated": "<b>%s<\/b> %p z návštěv z %c nebylo možné geolokovat.",
"VisitorMap": "Mapa návštěvníků",
"WorldWide": "Celostvětová"
},
"UserSettings": {
"BrowserFamilies": "Rodiny Web prohlížeÄů",
+ "BrowserLanguage": "Jazyk prohlížeÄe",
"Browsers": "Web prohlížeÄe",
+ "BrowserWithNoPluginsEnabled": "%1$s bez povolených zásuvných modulů",
+ "BrowserWithPluginsEnabled": "%1$s s povolenými zásuvnými moduly %2$s",
"ColumnBrowser": "Web prohlížeÄ",
"ColumnBrowserFamily": "Rodina Web prohlížeÄe",
"ColumnBrowserVersion": "Verze prohlížeÄe",
@@ -1419,6 +2153,7 @@
"Language_id": "indonéština",
"Language_ie": "interlingue",
"Language_ig": "igboština",
+ "Language_ii": "Jazyk Yi",
"Language_ik": "inupiakština",
"Language_io": "ido",
"Language_is": "islandština",
@@ -1544,11 +2279,15 @@
"VisitorSettings": "Nastavení návštěvníků",
"WideScreen": "Širokoúhlá obrazovka",
"WidgetBrowserFamilies": "ProhlížeÄe podle rodiny",
+ "WidgetBrowserFamiliesDocumentation": "Tento graf zobrazuje prohlížeÄe vaÅ¡ich návÅ¡tÄ›vníků odle prodin prohlížeÄů. %s NejdůležitÄ›jší informací pro webové vývojáře je to, jaká vykreslovací jádra návÅ¡tÄ›vníci používají. Název vykreslovacího jádra je v popisku následován v závorkách nejÄastÄ›jším prohlížeÄem, který ho používá.",
"WidgetBrowsers": "Web prohlížeÄe návÅ¡tÄ›vníků",
+ "WidgetBrowsersDocumentation": "Toto hlášení obsahuje informace o tom, jaký druh prohlížeÄe vaÅ¡i návÅ¡tÄ›vníci použili. Každá verze je poÄítána samostatnÄ›.",
"WidgetBrowserVersion": "Verze webového prohlížeÄe",
"WidgetGlobalVisitors": "Hlavní nastavení návštěvníků",
+ "WidgetGlobalVisitorsDocumentation": "Toto hlášení zobrazuje nejÄastÄ›jší konfigurace, které vaÅ¡i návÅ¡tÄ›vníci mÄ›li. Konfigurace je kombinace operaÄního systému, prohlížeÄe a rozliÅ¡ení.",
"WidgetOperatingSystems": "OperaÄní systémy",
"WidgetPlugins": "Seznam zásuvných modulů",
+ "WidgetPluginsDocumentation": "Toto hlášení zobrazuje zásuvné moduly, které měli vaši návštěvníci povoleny. Tato informace může být důležitá při rozhodování o tom, jakým způsobem prezentovat obsah.",
"WidgetResolutions": "Rozlišení obrazovky",
"WidgetWidescreen": "Normální \/ Širokoúhlá"
},
@@ -1557,37 +2296,56 @@
"Alias": "Alias",
"AllWebsites": "VÅ¡echny weby",
"AnonymousUserHasViewAccess": "Poznámka: %1$s uživatel má právo k přístupu k %2$s",
+ "AnonymousUserHasViewAccess2": "Vaše analytická hlášení a informace o návštěvnících je veřejně dostupná.",
"ApplyToAllWebsites": "Použít na všechny weby",
"ChangeAllConfirm": "Jste si jistí, že chcete změnit '%s' oprávnění pro všechny weby?",
+ "ChangePasswordConfirm": "ZmÄ›na hesla také zmÄ›ní uživatelův token_auth. Opravdu chcete pokraÄovat?",
"ClickHereToDeleteTheCookie": "Klinětě zde pro vymazání cookie a zaznamenávání vaších návštěv",
"ClickHereToSetTheCookieOnDomain": "Klikněte zde pro nastavení cookie, která vynechá vaše návštěvy na webech monitorováných Piwikem na %s",
+ "ConfirmGrantSuperUserAccess": "Opravdu chcete uživateli %s povolit super uživatelský přístup?",
+ "ConfirmProhibitMySuperUserAccess": "%s, opravdu chcete odstranit svůjvlastn í super uživatelský přístup? Přijdete o všechna oprávnění a o přístup k datům stránek a budete odhlášen z Piwiku.",
+ "ConfirmProhibitOtherUsersSuperUserAccess": "Opravdu chcete odstranit super uživatelský přístup pro %s? Tento uživatel přijde o všechna práva a o přístup ke všem stránkám. Nezapomeňte mu povolit přístup k těm, které potřebuje, je-li to nutné.",
"DeleteConfirm": "Jste si jistí, že chcete vymazat uživatele %s?",
"Email": "E-mail",
+ "EmailYourAdministrator": "%1$sPošlete administrátorovi e-mail o tomto problému%2$s.",
"ExceptionAccessValues": "Parametr přístupu musí mít jednu z následujících hodnot : [ %s ]",
"ExceptionAdminAnonymous": "Nemůžete dát 'admin' přístup 'anonymous' uživateli.",
"ExceptionDeleteDoesNotExist": "Uživatel '%s' neexistuje a proto nemůže být vymazán.",
+ "ExceptionDeleteOnlyUserWithSuperUserAccess": "Smazání uživatele %s není možné.",
"ExceptionEditAnonymous": "'Anonymous' uživatel nemůže být upraven, nebo vymazán. Je použit Piwikem k definici uživatele, který ještě není přihlášen. Například můžete zveřejnit vaše statistiky udělením oprávnění 'view' uživateli 'anonymous'.",
"ExceptionEmailExists": "Uživatel s emailem '%s' již existuje.",
"ExceptionInvalidEmail": "Email nemá platný formát.",
"ExceptionInvalidLoginFormat": "PÅ™ihlaÅ¡ovací jméno musí obsahovat mezi %1$s a %2$s znaky a obsahovat pouze písmena, Äísla, nebo znaky '_' nebo '-' nebo '.'",
+ "ExceptionInvalidPassword": "Délka hesla musí být mezi %1$s a %2$s znaky.",
"ExceptionLoginExists": "Uživatelské jméno '%s' již existuje.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth oÄekává heslo v podobÄ› MD5 hashe (32 znaků dlouhého Å™etÄ›zce). Prosím nejprve zavoltejte metodu md5() na tomto hesle.",
+ "ExceptionRemoveSuperUserAccessOnlySuperUser": "Odstranění super uživatelského přístupu uživateli %s není možné.",
+ "ExceptionSuperUserAccess": "Tento uživatel již má super uživatelský přístup, takže má přístup k datům všech stránek. Můžete super uživatelský přístup odstranit a zkusit to znovu.",
"ExceptionUserDoesNotExist": "Uživatel '%s' neexistuje.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Musí zůstat alespoň jeden uživatel se super uživatelským přístupem. Nejdříve ho někomu přidělte.",
"ExcludeVisitsViaCookie": "Vynechat vaše navštěvy pomocí cookie",
"ForAnonymousUsersReportDateToLoadByDefault": "Datum hlášení, které se má naÄíst jako výchozí pro anonymní uživatele",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Pokud chcete změnit heslo, zapiště jej. Jinak jej nevyplňujte.",
+ "InjectedHostCannotChangePwd": "Aktuálně navštěvujete Piwik s neznámým hostitelem %1$s. Dokud tento problém nevyřešíte, nemůžete změnit heslo.",
+ "LastSeen": "Naposledy spatřen",
"MainDescription": "Nastavení, kteří uživatelé mají přístup k Piwik statistikám na vaších stránkách. Můžete také nastavit oprávnění ke všem stránkám najednou.",
"ManageAccess": "Správa přístupu",
"MenuAnonymousUserSettings": "Nastavení anonymního uživatele",
"MenuUsers": "Uživatelé",
"MenuUserSettings": "Nastavení uživatele",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Poznámka: Nemůžete měnit nastavení v této sekci, protože žádná z vašich stránek nemůže být zobrazena anonymním uživatelem.",
+ "NoUsersExist": "Zatím nejsou žádní uživatelé.",
"PluginDescription": "Správa uživatelů v Piwiku: přidat nového uživatele, upravit existujícícho, aktualizace oprávnění. Všechny akce jsou k dizpozici přes API",
"PrivAdmin": "Administrátor",
"PrivNone": "Žádné oprávnění",
"PrivView": "Zobrazení",
"ReportDateToLoadByDefault": "Datum hlášení, které se má naÄíst jako výchozí",
"ReportToLoadByDefault": "Hlášení, které se má naÄíst jako výchozí",
+ "SuperUserAccessManagement": "Spravovat super uživatelský přístup",
+ "SuperUserAccessManagementGrantMore": "Zde můžete přidělit super uživatelský přístup jiným uživatelům Piwiku. Používejte tuto funkci opatrně.",
+ "SuperUserAccessManagementMainDescription": "Super uživatelé mají nejvyšší oprávnění. Mohou vykonávat všechny administrativní operace, jako je přidávání stránek k monitorování, přidávání uživatelů, změna uživatelských oprávnění, povolování a zakazování zásuvných modulů, dokonce jejich instalace z obchodu.",
"TheLoginScreen": "Přihlašovací obrazovka",
+ "ThereAreCurrentlyNRegisteredUsers": "Aktuálně je %s registrovaných uživatelů.",
"TypeYourPasswordAgain": "Zapiště vaše nové heslo znova",
"User": "Uživatel",
"UsersManagement": "Správa uživatelů",
@@ -1601,14 +2359,19 @@
"ColumnActionsByReturningVisits": "Akcí za opakovanou návštěvu",
"ColumnAverageVisitDurationForReturningVisitors": "Průměrná délka návštěvy pro navracejících se návštěvnících (v sekundách)",
"ColumnAvgActionsPerReturningVisit": "PromÄ›rnů poÄet akcí pro navracející se návÅ¡tÄ›vníky",
+ "ColumnBounceCountForReturningVisits": "PoÄet odrazů pro vracející se návÅ¡tÄ›vy",
"ColumnBounceRateForReturningVisits": "Frekvence odchodů pro opakované návštěvy",
+ "ColumnMaxActionsInReturningVisit": "Maximum akcí v jedné vracející se návštěvě",
+ "ColumnNbReturningVisitsConverted": "PoÄet zkonvertovaných vracejících se návÅ¡tÄ›v",
"ColumnReturningVisits": "Opětovných návštěv",
+ "ColumnSumVisitLengthReturning": "Celkový Äas strávený vracejícími se návÅ¡tÄ›vníky (v sekundách)",
"ColumnUniqueReturningVisitors": "Unikátní vracející se návštěvníci",
"PluginDescription": "Hlásí různé statistiky o navracejících se versus nových návštěvnících",
"ReturnActions": "%s akcí za opakovanou návštěvu",
"ReturnAverageVisitDuration": "%s průměrná dělka návštěvy pro navracející se návštěvníky",
"ReturnAvgActions": "%s akcí na navracejících se návštěvníka",
"ReturnBounceRate": "%s opakujících se návštěv odešlo (opustilo web po jedné stránce)",
+ "ReturningVisitDocumentation": "Vracející se návštěva je návštěvník, který již stránku aspoň jednou navštívil.",
"ReturningVisitsDocumentation": "Toto je přehled vracejících se návštěvníků.",
"ReturnVisits": "%s opakujících se návštěv",
"SubmenuFrequency": "Frekvence",
@@ -1632,10 +2395,15 @@
"VisitsPerDuration": "Návštěv za dobu návštěvy",
"VisitsPerNbOfPages": "NávÅ¡tÄ›v za poÄet stránek",
"WidgetLengths": "Doba návštěv",
+ "WidgetLengthsDocumentation": "V tomto hlášení vidíte, kolik návÅ¡tÄ›v mÄ›lo urÄitou celkovou délku. Nejdříve je toto hlášení zobrazeno jako tag cloud, ÄastÄ›jší doby jsou vÄ›tším písmem.",
"WidgetPages": "Stránek za návštěvu",
- "WidgetVisitsByDaysSinceLastDocumentation": "V hlášení můžete vidět kolik návstěv bylo od návstěvníků, kteří již v minulosti po několika dnech stránku navstívili."
+ "WidgetPagesDocumentation": "V tomto hlášení je zobrazeno, kolik návÅ¡tÄ›v provedlo urÄité množství zobrazení stránek. Nejdříve je toto hlášení zobrazeno jako tag cloud, ÄastÄ›jší Äísla mají vÄ›tší písmo.",
+ "WidgetVisitsByDaysSinceLast": "Návštěvy podle dnů od poslední návštěvy",
+ "WidgetVisitsByDaysSinceLastDocumentation": "V hlášení můžete vidět kolik návstěv bylo od návstěvníků, kteří již v minulosti po několika dnech stránku navstívili.",
+ "WidgetVisitsByNumDocumentation": "V tomto hlášení vidíte, kolik návštěv bylo n-tou návštěvou, t. j. návštěvníky, kteří navštívili vaše stránky aspoň n-krát."
},
"VisitsSummary": {
+ "AverageGenerationTime": "%s průmÄ›rný Äas generování",
"AverageVisitDuration": "%s průměrná doba návštěvy",
"GenerateQueries": "%s provedeno dotazů",
"GenerateTime": "%s sekund k vygenerování stránky",
@@ -1646,6 +2414,7 @@
"NbKeywordsDescription": "%s unikátní klíÄová slova",
"NbOutlinksDescription": "%s externích odkazů",
"NbPageviewsDescription": "%s zobrazení",
+ "NbSearchesDescription": "Celkem %s vyhledávání na vašich stránkách",
"NbUniqueDownloadsDescription": "%s unikátních stražení",
"NbUniqueOutlinksDescription": "%s unikátních externích odkazů",
"NbUniquePageviewsDescription": "%s unikátních zobrazení",
@@ -1668,6 +2437,7 @@
"ServerTime": "NávÅ¡tÄ›vy podle serverového Äasu",
"SubmenuTimes": "ÄŒasy",
"VisitsByDayOfWeek": "Návštěvy podle dnů v týdnu",
+ "WidgetByDayOfWeekDocumentation": "Tento graf zobrazuje, kolik návštěv obdržela vaše stránka každý den v týdnu.",
"WidgetLocalTime": "NávÅ¡tÄ›vy podle lokálního Äasu",
"WidgetLocalTimeDocumentation": "Tento graf ukazuje Äas v %s návÅ¡tÄ›vníkovo Äasové zónÄ› %s bÄ›hem jÄ›ho návÅ¡tÄ›vy.",
"WidgetServerTime": "NávÅ¡tÄ›vy podle serverového Äasu",
@@ -1675,6 +2445,7 @@
},
"Widgetize": {
"OpenInNewWindow": "Otevřít nové okno",
- "PluginDescription": "Tento zásuvný modul zjednodušuje export widgetů Piwiku na váš blog, web nebo Igoogle a Netvibes!"
+ "PluginDescription": "Tento zásuvný modul zjednodušuje export widgetů Piwiku na váš blog, web nebo Igoogle a Netvibes!",
+ "TopLinkTooltip": "Exportujte své Piwik hlášení jako widgety a použijte eje e vaší aplikaci jako iframe."
}
} \ No newline at end of file
diff --git a/lang/da.json b/lang/da.json
index 0bec0dcb26..7770291eeb 100644
--- a/lang/da.json
+++ b/lang/da.json
@@ -1086,6 +1086,8 @@
"PasswordDoNotMatch": "adgangskoder stemmer ikke overens",
"PasswordRepeat": "Gentag adgangskode",
"PercentDone": "%s %% udført",
+ "PiwikOrgNewsletter": "e-mail mig de vigtigste Piwik community opdateringer",
+ "PiwikProNewsletter": "Jeg er interesseret i %sPiwik PRO%s tjenester (ikke mere end 1 e-mail om måneden)",
"PleaseFixTheFollowingErrors": "Ret følgende fejl",
"PluginDescription": "Installation af Piwik. Installationen sker som regel kun én gang. Hvis konfigurationsfilen config\/config.inc.php slettes starter installationen igen.",
"Requirements": "Piwik krav",
@@ -1136,6 +1138,7 @@
"SystemCheckPdoAndMysqliHelp": "På en linux-server kan php kompileres med følgende valg: %1$sn i php.ini, tilføj følgende linjer: %2$s",
"SystemCheckPhp": "PHP version",
"SystemCheckPhpPdoAndMysqli": "Mere information på: %1$sPHP PDO%2$s og %3$sMYSQLI%4$s.",
+ "SystemCheckSessionAutostart": "For at forhindre nogle problemer, indstil følgende i php.ini filen: session.auto_start = 0",
"SystemCheckSplHelp": "Konfigurer og genstart PHP med standard PHP Biblioteket (SPL) aktiveret (som standard).",
"SystemCheckSummaryNoProblems": "Sådan! Der er ingen problemer med din Piwik opsætning. Giv dig selv et klap på skulderen.",
"SystemCheckSummaryThereWereErrors": "Ups! Piwik har opdaget nogle %1$skritiske problemer%2$s med din Piwik opsætning. %3$sDisse problemer skal løses øjeblikkeligt.%4$s",
diff --git a/lang/el.json b/lang/el.json
index 5fd1315868..2fe13a93f9 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -1084,6 +1084,8 @@
"PasswordDoNotMatch": "ο κωδικός δεν ταιÏιάζει",
"PasswordRepeat": "Επανάληψη ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης",
"PercentDone": "%s %% ΟλοκληÏώθηκε",
+ "PiwikOrgNewsletter": "στείλε μου e-mail για μεγάλες ενημεÏώσεις της κοινοτικής έκδοσης του Piwik",
+ "PiwikProNewsletter": "ΕνδιαφέÏομαι για υπηÏεσίες του %sPiwik PRO%s (όχι πεÏισσότεÏα από 1 e-mail το μήνα)",
"PleaseFixTheFollowingErrors": "ΔιοÏθώστε τα ακόλουθα σφάλματα",
"PluginDescription": "Διαδικασία εγκατάστασης του Piwik. Η Εγκατάσταση γίνεται συνήθως μόνο μια φοÏά. Αν το αÏχείο Ïυθμίσεων config\/config.inc.php έχει διαγÏαφεί, η εγκατάσταση θα ξεκινήσει από την αÏχή.",
"Requirements": "Απαιτήσεις Piwik",
@@ -1134,6 +1136,7 @@
"SystemCheckPdoAndMysqliHelp": "Σε διακομιστή Linux μποÏείτε να Ïυθμίσετε την php με τις ακόλουθες επιλογές: %1$s στο αÏχείο php.ini, Ï€Ïοσθέστε τις ακόλουθες γÏαμμές: %2$s",
"SystemCheckPhp": "Έκδοση PHP",
"SystemCheckPhpPdoAndMysqli": "ΠεÏισσότεÏες πληÏοφοÏίες στο: %1$sPHP PDO%2$s και %3$sMYSQLI%4$s.",
+ "SystemCheckSessionAutostart": "Για την αποφυγή οÏισμένων Ï€Ïοβλημάτων, οÏίστε την παÏακάτω τιμή στο php.ini αÏχείο: session.auto_start=0",
"SystemCheckSplHelp": "ΠÏέπει να Ïυθμίσετε και ξαναεγκαταστήσετε την PHP με τη Βασική Βιβλιοθήκη PHP (SPL) ενεÏγοποιήμένη (ως Ï€Ïοεπιλογή).",
"SystemCheckSummaryNoProblems": "Δεν υπάÏχουν Ï€Ïοβλήματα με την εγκατάσταση του Piwik. Όλα καλά!",
"SystemCheckSummaryThereWereErrors": "Îωχ, το Piwik εντόπισε %1$sκÏίσιμα θέματα%2$s με την εγκατάσταση του Piwik. %3$sΑυτά τα θέματα Ï€Ïέπει να διοÏθωθοÏν άμεσα.%4$s",
diff --git a/lang/en.json b/lang/en.json
index 9d45aeb686..3f9f4a6aed 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -141,6 +141,7 @@
"LatestBetaRelease": "The latest beta release",
"LatestStableRelease": "The latest stable release",
"LogoNotWriteableInstruction": "To use your custom logo instead of the default Piwik logo, give write permission to this directory: %1$s Piwik needs write access for your logos stored in the files %2$s.",
+ "FileUploadDisabled": "Uploading files is not enabled in your PHP configuration. To upload your custom logo please set %s in php.ini and restart your webserver.",
"LogoUpload": "Select a Logo to upload",
"FaviconUpload": "Select a Favicon to upload",
"LogoUploadHelp": "Please upload a file in %s formats with a minimum height of %s pixels.",
@@ -1172,7 +1173,9 @@
"WeHopeYouWillEnjoyPiwik": "We hope you will enjoy using Piwik as much as we enjoy making it.",
"Welcome": "Welcome!",
"WelcomeHelp": "<p>Piwik is a free/libre web analytics software that makes it easy to get the information you want from your visitors.<\/p><p>This process is split up into %s easy steps and will take around 5 minutes.<\/p>",
- "WelcomeToCommunity": "Welcome to the Piwik community!"
+ "WelcomeToCommunity": "Welcome to the Piwik community!",
+ "CannotConnectToDb": "Cannot connect to the database",
+ "CannotConnectToDbResolvingExplanation": "This may be a temporary issue, try %1$srefreshing the page%2$s. If the problem persists please contact your Piwik administrator."
},
"LanguagesManager": {
"AboutPiwikTranslations": "About Piwik translations",
diff --git a/lang/fr.json b/lang/fr.json
index 4292695d61..1c689e60a2 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -104,6 +104,7 @@
"CustomLogoHelpText": "Vous pouvez personnaliser le logo Piwik qui sera affichée dans l'interface utilisateur et les rapports par courriel.",
"DevelopmentProcess": "Bien que notre %sprocessus de développement%s inclue des milliers de tests automatisés, les béta testeurs jouent un rôle clef dans la réalisation de la \"politique zéro bug\" de Piwik.",
"EmailServerSettings": "Paramètres du serveur mail",
+ "FaviconUpload": "Sélectionnez un favicon à télécharger",
"ForBetaTestersOnly": "Pour les bêta testeurs uniquement",
"ImageTracking": "Suivi par Image",
"ImageTrackingIntro1": "Quand un visiteur désactive JavaScript, ou quand JavaScript ne peut être utilisé, vous pouvez utiliser le lien de suivi par image pour suivre les visiteurs.",
@@ -154,6 +155,7 @@
"PiwikIsInstalledAt": "Piwik est installé à l'adresse",
"PluginDescription": "Zone d'administration de Piwik.",
"PluginSettingChangeNotAllowed": "Vous n'êtes pas autorisé(e) à modifier la valeur du paramètre \"%s\" du plugin \"%s\"",
+ "PluginSettingReadNotAllowed": "Vous n'êtes pas autorisé(e) à voir la valeur du paramètre \"%s\" dans le plugin \"%s\"",
"PluginSettings": "Paramètres du composant",
"PluginSettingsIntro": "Vous pouvez ici modifier les paramètres des composants tierce partie suivants :",
"PluginSettingsValueNotAllowed": "La valeur pour le champ \"%s\" du composant \"%s\" n'est pas autorisée.",
@@ -446,17 +448,26 @@
"Feedback": {
"ContactThePiwikTeam": "Contactez l’Équipe Piwik!",
"DoYouHaveBugReportOrFeatureRequest": "Avez-vous un bug à rapporter ou une fonctionnalité à demander?",
+ "GetInTouch": "Nous apprécions vos commentaires et lisons tous les messages. Peut-être voudriez vous nous informer d'une opportunité commerciale, employer un consultant, nous raconter un succès ou simplement dire bonjour!",
"HowToCreateIssue": "Merci de lire la documentation sur la bonne manière d'écrire un %1$srapport de bug%2$s ou %3$sune demande de nouvelle fonctionnalité%4$s. Ensuite, %5$senregistrez-vous%6$s ou %7$sconnectez-vous%8$s sur notre gestionnaire d'incidents puis créez un %9$snouveau ticket%10$s.",
"IWantTo": "Je veux:",
"LearnWaysToParticipate": "Renseignez vous sur les manières dont vous pouvez %s participer%s",
"ManuallySendEmailTo": "Merci d'envoyer manuellement votre message à",
"PluginDescription": "Envoie vos retours à l’Équipe Piwik. Partagez vos idées et suggestions avec nous!",
+ "PrivacyClaim": "Piwik respecte votre %1$svie privée%2$s et vous donne un contrôle total sur vos données.",
+ "RateFeatureLeaveMessageDislike": "Nous sommes désolés de voir que vous n'aimez pas ça. N'hésitez pas à nous dire comme nous pouvons améliorer.",
+ "RateFeatureLeaveMessageLike": "Nous sommes heureux de savoir que vous l'aimez ! S'il vous plaît laissez-nous savoir ce que vous aimez le plus ou si vous avez une demande de fonctionnalité.",
"RateFeatureSendFeedbackInformation": "Voter installation Piwik nous enverra (l'équipe Piwik) un e-mail (contenant votre adresse e-mail) afin que nous puissions entrer en contact avec vous si vous avez des questions.",
+ "RateFeatureThankYouTitle": "Merci d'avoir noté \"%s\" !",
+ "RateFeatureTitle": "Est-ce que vous aimez la fonctionnalité \"%s\" ? Notez la et laissez un commentaire",
"SendFeedback": "Envoyer le retour",
"SpecialRequest": "Avez-vous une demande spéciale pour l’Équipe Piwik?",
"ThankYou": "Merci d'avoir aidé à améliorer Piwik!",
"TopLinkTooltip": "Dites nous ce que vous en pensez, ou demandez un Support Professionnel.",
- "VisitTheForums": "Visitez les %s Forums%s"
+ "ViewAnswersToFAQ": "Voir les réponses aux %squestions fréquemment posées%s",
+ "ViewUserGuides": "Apprenez comment configurer Piwik et comment analyser de manière efficaces vos données avec notre %1$sguide utilisateur%2$s",
+ "VisitTheForums": "Visitez les %s Forums%s",
+ "WantToThankConsiderDonating": "Vous pensez que Piwik est génial et voulez nous remercier?"
},
"General": {
"AbandonedCarts": "Paniers abandonnés",
@@ -624,6 +635,7 @@
"ExceptionUnableToStartSession": "Impossible de démarrer une session.",
"ExceptionUndeletableFile": "Impossible de supprimer %s",
"ExceptionUnreadableFileDisabledMethod": "Le fichier de configuration {%s} n'a pas pu être lu. votre hébergeur a probablement désactivé %s.",
+ "ExpandDataTableFooter": "Modifier la visualisation ou configurer le rapport",
"Export": "Exporter",
"ExportAsImage": "Exporter au format Image",
"ExportThisReport": "Exporter ce jeu de données dans d'autres formats",
@@ -757,6 +769,7 @@
"Password": "Mot de passe",
"Period": "Période",
"Piechart": "Camembert",
+ "PiwikXIsAvailablePleaseNotifyPiwikAdmin": "%1$s est disponible. Veuillez informer %2$sl'administrateur Piwik%3$s.",
"PiwikXIsAvailablePleaseUpdateNow": "Piwik %1$s est maintenant disponible. %2$s Merci de mettre à jour!%3$s (voir %4$s les modifications%5$s).",
"PleaseSpecifyValue": "Merci de spécifier une valeur pour %s",
"PleaseUpdatePiwik": "Merci de mettre à jour Piwik",
@@ -998,11 +1011,24 @@
"PluginDescription": "Génère de magnifiques graphiques en image PNG statique pour tous vos rapports Piwik."
},
"Insights": {
+ "ControlComparedToDescription": "Croissance comparée à",
+ "ControlFilterByDescription": "Tout afficher, seulement les déplacés, seulement nouveaux ou seulement disparus",
+ "DatePeriodCombinationNotSupported": "Il n'est pas possible de générer des indicateurs pour cette combinaison de date et de période.",
"DayComparedToPreviousDay": "jour précédent",
"DayComparedToPreviousWeek": "même jour de la semaine précédente",
"DayComparedToPreviousYear": "même jour de l'année précédente",
+ "Filter": "Filtrer",
+ "FilterIncreaserAndDecreaser": "Augmentateur & réducteur",
+ "FilterOnlyDecreaser": "Réducteur uniquement",
+ "FilterOnlyDisappeared": "Disparus uniquement",
+ "FilterOnlyIncreaser": "Augmentateur uniquement",
+ "FilterOnlyMovers": "Déplaceurs uniquement",
+ "FilterOnlyNew": "Nouveaux uniquement",
+ "IgnoredChanges": "Les modifications affectant moins de %s ont été ignorées.",
"MonthComparedToPreviousMonth": "mois précédent",
"MonthComparedToPreviousYear": "même mois de l'année précédente",
+ "MoversAndShakersWidgetTitle": "Déplaceurs et Shakers",
+ "NoResultMatchesCriteria": "Aucune ligne ne correspond aux critères",
"OverviewWidgetTitle": "Aperçu des idées",
"WeekComparedToPreviousWeek": "semaine précédente",
"WidgetCategory": "Idées",
diff --git a/lang/it.json b/lang/it.json
index 50b39708ae..e9cdc1dcb7 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -1084,6 +1084,8 @@
"PasswordDoNotMatch": "Le Password non coincidono",
"PasswordRepeat": "Password (ripeti)",
"PercentDone": "%s %% Fatto",
+ "PiwikOrgNewsletter": "Inviami per email gli aggiornamenti importanti della comunità di Piwik",
+ "PiwikProNewsletter": "Sono interessato ai servizi di %sPiwik PRO%s (non più di 1 email al mese)",
"PleaseFixTheFollowingErrors": "Per favore, risolvi i seguenti errori",
"PluginDescription": "Processo di installazione di Piwik. L'installazione è di solito fatta una sola volta. Se il file di configurazione (config\/config.inc.php) viene cancellato, l'installazione partirà di nuovo.",
"Requirements": "Requisiti di Piwik",
@@ -1134,6 +1136,7 @@
"SystemCheckPdoAndMysqliHelp": "Su un server Linux puoi compilare PHP con le seguenti opzioni: %1$s Nel tuo php.ini, aggiungi le seguenti linee: %2$s",
"SystemCheckPhp": "Versione PHP",
"SystemCheckPhpPdoAndMysqli": "Maggiori informazioni a riguardo: %1$sPHP PDO%2$s e %3$sMYSQLI%4$s.",
+ "SystemCheckSessionAutostart": "Per prevenire alcuni problemi, imposta quanto segue nel tuo file php.ini: session.auto_start=0",
"SystemCheckSplHelp": "Devi configurare e ricostruire il PHP con la libreria Standard PHP abilitata (di default).",
"SystemCheckSummaryNoProblems": "Evviva! Non ci sono problemi con le impostazioni di Piwik. Datti una pacca sulla spalla.",
"SystemCheckSummaryThereWereErrors": "Piwik ha rilevato alcuni %1$sproblemi critici%2$s con la configurazione di Piwik. %3$sQuesti problemi devono essere risolti immediatamente.%4$s",
diff --git a/lang/nb.json b/lang/nb.json
index 101e3ebb31..74517aca08 100644
--- a/lang/nb.json
+++ b/lang/nb.json
@@ -113,17 +113,20 @@
"ShortWeekFormat": "%dayFrom% %shortMonthFrom% - %dayTo% %shortMonthTo% %shortYearTo%",
"ShowJSCode": "Vis JavaScript-koden til å sette inn på din nettside.",
"SupportPiwik": "Støtt Piwik!",
+ "TableNoData": "Ingen data for denne tabellen.",
"ThereIsNoDataForThisReport": "Det fins ingen data for denne rapporten.",
"WebAnalyticsReports": "Nettstatistikkrapporter",
"YouAreUsingTheLatestVersion": "Du bruker den nyeste versjonen av Piwik!"
},
"CorePluginsAdmin": {
+ "ActionActivatePlugin": "Aktiver tillegg",
"ActionInstall": "Installer",
"ActionUninstall": "Avinstaller",
"Activate": "Slå på",
"Activated": "Påslått",
"Active": "PÃ¥",
"Activity": "Aktivitet",
+ "ByInstallingNewPluginFromMarketplace": "ved å %sinstallere ett nytt tillegg fra markedsplassen%s",
"ByXDevelopers": "av %s utviklere",
"Changelog": "Endringslogg",
"Deactivate": "Slå av",
@@ -134,6 +137,7 @@
"InstallingPlugin": "Installerer %s",
"LastUpdated": "Sist oppdatert",
"MainDescription": "Tillegg kan utvide eller begrense funksjonaliteten i Piwik. Når et tillegg har blitt installert, kan du slå det av eller på her.",
+ "Marketplace": "Markedsplass",
"NumDownloadsLatestVersion": "Siste versjon: %s nedlastinger",
"NumUpdatesAvailable": "%s oppdatering(er) tilgjengelig",
"PluginDescription": "Grensesnitt for administrasjon av tillegg",
@@ -145,6 +149,7 @@
"Screenshots": "Skjermbilder",
"SortByNewest": "nyeste",
"Status": "Status",
+ "StepDownloadingPluginFromMarketplace": "Laster ned tillegg fra markedsplassen",
"Support": "Støtte",
"Updated": "Oppdatert",
"UpdatingPlugin": "Oppdaterer %s",
@@ -346,6 +351,7 @@
"ExceptionInvalidDateFormat": "Datoformatet må være %s eller et nøkkelord støttet av %s-funksjonen (se %s for mer informasjon).",
"ExceptionInvalidDateRange": "Datoen «%s» er ikke et gyldig datointervall. Riktig format er: %s",
"ExceptionInvalidPeriod": "Perioden «%s» er ikke støttet. Prøv en av følgende istedenfor: %s",
+ "ExceptionInvalidToken": "Token er ikke gyldig.",
"ExceptionLanguageFileNotFound": "Fant ikke språkfila «%s».",
"ExceptionMissingFile": "Mangler fil: %s",
"ExceptionUndeletableFile": "Klarte ikke slette %s",
@@ -598,6 +604,7 @@
"UpdateGoal": "Oppdater mål",
"URL": "URL",
"ViewAndEditGoals": "Vis og rediger mål",
+ "ViewGoalsBy": "Vis mål etter %s",
"WhenVisitors": "når besøkende"
},
"Insights": {
@@ -631,6 +638,7 @@
"NfsFilesystemWarning": "Din tjeneren bruker et NFS filsystem.",
"NfsFilesystemWarningSuffixAdmin": "Dette betyr Piwik vil være svært treg når du bruker filbaserte økter.",
"NoConfigFound": "Klarte ikke finne konfigurasjonsfilen for Piwik, og du prøver å få tilgang til en Piwik-side. <br \/><b>  »Du kan <a href='index.php'>installere Piwik nå<\/a><\/b><br \/><small>Hvis du prøvde å installere Piwik tidligere og har noen tabeller i databasen, kan du ta det med ro. Du kan bruke de gamle tabellene og beholde dine eksisterende data!<\/small>",
+ "NotSupported": "støttes ikke",
"Optional": "Valgfritt",
"Password": "passord",
"PasswordDoNotMatch": "passordene stemmer ikke overens",
@@ -741,11 +749,15 @@
"LoginCredentials": "PÃ¥loggingsinformasjon",
"LoginUseHttps": "Bruk HTTPS",
"NavigationBack": "Tilbake",
+ "NetworkError": "Nettverksfeil",
+ "NetworkErrorWithStatusCodeShort": "Nettverksfeil %s",
"NetworkNotReachable": "Nettverk kan ikke nås",
"NoDataShort": "Ingen data",
+ "NoReportsShort": "Ingen rapporter",
"PullDownToRefresh": "Trekk ned for å oppdatere...",
"RatingNotNow": "Ikke nå",
"ReleaseToRefresh": "Slipp for å oppdatere...",
+ "ShowAll": "Vis alle",
"VerifyLoginData": "Sørg for at ditt brukernavn- og passordkombinasjon er riktig."
},
"MobileMessaging": {
@@ -823,6 +835,7 @@
"WidgetKeywords": "Liste over nøkkelord"
},
"RowEvolution": {
+ "ComparingRecords": "Sammenligner %s rader",
"MetricBetweenText": "mellom %s og %s"
},
"ScheduledReports": {
@@ -1427,6 +1440,7 @@
"WideScreen": "Widescreen",
"WidgetBrowserFamilies": "Nettlesere etter familie",
"WidgetBrowsers": "Besøkendes nettlesere",
+ "WidgetBrowserVersion": "Nettleserversjon",
"WidgetGlobalVisitors": "Besøkendes konfigurasjon",
"WidgetOperatingSystems": "Operativsystemer",
"WidgetPlugins": "Liste over tillegg",
diff --git a/lang/nl.json b/lang/nl.json
index 6658bf3c4e..a236a4a651 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -103,6 +103,7 @@
"CustomLogoHelpText": "U kunt het Piwik logo aanpassen dat wordt weergegeven in de gebruikersinterface en in de e-mail rapportages.",
"DevelopmentProcess": "Hoewel ons %s ontwikkel process %s duizenden automatisch tests omvat, spelen Beta testers een belangrijke rol in het \"No bug beleid\" in Piwik.",
"EmailServerSettings": "E-mail server instellingen",
+ "FaviconUpload": "Selecteer een favicon om up te loaden",
"ForBetaTestersOnly": "Alleen voor beta testers",
"ImageTracking": "Afbeelding tracking",
"ImageTrackingIntro1": "Wanneer een bezoeker javaScript heeft uitgeschakeld, of wanneer JavaScript niet kan worden gebruikt, kun je een tracking afbeelding gebruiken om bezoekers te volgen.",
@@ -156,6 +157,7 @@
"PluginSettingsIntro": "Hier kunt u instellingen aanpassen voor de volgende plugins van derden:",
"PluginSettingsValueNotAllowed": "De waarde voor veld \"%s\" in plugin \"%s\" is niet toegestaan",
"SendPluginUpdateCommunication": "Stuur mij een email melding als er een nieuwe plugin update is",
+ "SendPluginUpdateCommunicationHelp": "Een email wordt verstuurd naar de Super User wanneer er een nieuwe versie voor de plugin is.",
"StableReleases": "Indien Piwik een essentieel onderdeel is van uw zaak, dan raaden wij aan om de laatste stabiele versie te draaien. Indien je de laatste beta gebruikt en je ontdekt bugs of hebt een suggestie, %skijk dan hier%s.",
"TrackAGoal": "Hou een doel bij.",
"TrackingCode": "Tracking code.",
@@ -285,6 +287,7 @@
"PluginHomepage": "Plugins",
"PluginKeywords": "Sleutelwoorden",
"PluginNotCompatibleWith": "%1$s plugin is niet compatibel met %2$s.",
+ "PluginRequirement": "%1$s vereist %2$s.",
"PluginsManagement": "Plugin manager",
"PluginUpdateAvailable": "U gebruikt versie %s en een nieuwe versie %s is beschikbaar.",
"PluginVersionInfo": "%1$s van %2$s",
@@ -339,9 +342,11 @@
"ExceptionArchiveEmpty": "Leeg archief.",
"ExceptionArchiveIncompatible": "Incompatibel archief: %s",
"ExceptionArchiveIncomplete": "Archief is onvolledig. Sommige bestanden ontbreken (zoals %s)",
+ "FeedbackRequest": "Voel je vrij om je ideeën en suggesties te delen met het Piwik team:",
"HelpMessageContent": "Controleer de %1$s Piwik FAQ %2$s waarin de meest voorkomende upgrade foutmeldingen worden uitgelegd. %3$s Vraag uw systeem beheerder - deze kan u wellicht helpen met deze fout die waarschijnlijk gerelateerd is aan de configuratie van uw webserver of MySQL-database.",
"HelpMessageIntroductionWhenError": "Hierboven staat de foutmelding. Hierin zou de oorzaak naar voren moeten komen, mocht u desondanks nog vragen hebben:",
"HelpMessageIntroductionWhenWarning": "De upgrade is voltooid, maar met fouten tijdens het proces. Lees de omschrijvingen hierboven voor meer informatie. Voor verdere hulp:",
+ "IncompatbilePluginsWillBeDisabledInfo": "Let op: sommige plugins zijn niet compitable met Piwik %s. Deze worden uitgeschakeld bij een upgrade.",
"InstallingTheLatestVersion": "Bezig om de laatste versie te installeren",
"MajorUpdateWarning1": "Dit is een ingrijpende update! Het zal langer dan normaal duren.",
"MajorUpdateWarning2": "Het volgende advies vooral voor grote installaties bedoelt.",
diff --git a/lang/ro.json b/lang/ro.json
index fe5a30e981..5d9626b458 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -155,6 +155,7 @@
"PiwikIsInstalledAt": "Piwik este instalat în",
"PluginDescription": "Zona de administrare Piwik.",
"PluginSettingChangeNotAllowed": "Nu iti este permis sa schimbi valoarea setarii \"%s\" in plugin \"%s\"",
+ "PluginSettingReadNotAllowed": "Nu se poate citi valoare setării \"%s\" din modulul \"%s\"",
"PluginSettings": "Setarile pluginului",
"PluginSettingsIntro": "Aici poti schimba setarile pentru urmatoarele pluginuri terte (3rd party):",
"PluginSettingsValueNotAllowed": "Valoarea pentru campul \"%s\" in plugin \"%s\" nu este permisa",
@@ -861,7 +862,7 @@
"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>",
+ "TranslatorName": "astonsoftware, <a href=\"http:\/\/inboxtranslations.com\">Inbox Translation<\/a>, <a href=\"http:\/\/marcelbejgu.ro\">Marcel Bejgu<\/a>",
"UniquePurchases": "Cumparaturi unice",
"Unknown": "Necunoscut",
"Upload": "Incarca",
@@ -1079,6 +1080,8 @@
"PasswordDoNotMatch": "Parola nu se potriveste",
"PasswordRepeat": "Parolă (repetă)",
"PercentDone": "%s %% Done",
+ "PiwikOrgNewsletter": "trimite-mi email-uri cu noutăți importante legate de comunitatea Piwik",
+ "PiwikProNewsletter": "Sunt interesat(ă) de serviciile %sPiwik PRO%s (nu mai mult de 1 email pe lună)",
"PleaseFixTheFollowingErrors": "Vă rugăm să reparati următoarele erori",
"PluginDescription": "Procesul de instalare a Piwik.Instalarea se face de obicei o singură dată. În cazul în care fișierul de configurare de configurare\/config.inc.php este șters, instalarea va începe din nou.",
"Requirements": "Piwik Cerințe",
@@ -1129,6 +1132,7 @@
"SystemCheckPdoAndMysqliHelp": "Pe un server Linux, puteți compila php cu următoarele opțiuni: %1$s în php.ini dvs., adăugați următoarele linii: %2$s",
"SystemCheckPhp": "PHP version",
"SystemCheckPhpPdoAndMysqli": "Mai multe informatii pe:%1$sPHP PDO%2$s si %3$sMYSQLI%4$s.",
+ "SystemCheckSessionAutostart": "Pentru a evita unele probleme pune la începutul fișierului php.ini: session.auto_start=0",
"SystemCheckSplHelp": "Aveți nevoie pentru a configura și reconstrui PHP cu PHP Biblioteca Standard (SPL) activata (implicit).",
"SystemCheckSummaryNoProblems": "Huzzah! Nu există probleme cu configurarea Piwik. Dă-ți o palma pe spate.",
"SystemCheckSummaryThereWereErrors": "Uh-oh! Piwik a detectat unele probleme %1$s critic %2$s cu configurarea Piwik. %3$s Aceste probleme ar trebui să fie fixate imediat.%4$s",
diff --git a/lang/tr.json b/lang/tr.json
index cdaff970c3..818460c858 100644
--- a/lang/tr.json
+++ b/lang/tr.json
@@ -33,6 +33,7 @@
"ExitPageTitles": "Çıkış sayfası başlıkları",
"ExitPageTitlesReportDocumentation": "Bu rapor, belirli bir süre içinde meydana gelen çıkış sayfalarının başlıkları hakkında bilgi içerir.",
"LearnMoreAboutSiteSearchLink": "Ziyaretçilerinizin Arama motoru nasıl kullandığı hakkında daha fazla bilgi edinin.",
+ "OneSearch": "1 arama",
"OutlinkDocumentation": "Bu dış bağlantı linki ziyaretçilerinizin sitenizden uzaklaştığı diğer alan adlarını kapsar.",
"OutlinksReportDocumentation": "Bu rapor, ziyaretçilerin tıkladıkları dış linklerin hiyerarşik listesini gösterir.",
"PagesReportDocumentation": "Bu rapor ziyaret edilen sayfa URL'leri hakkında bilgi içerir. %s Tablo hiyerarşik olarak düzenlenmiştir, URL'ler klasör yapısı ile görüntülenmektedir.",
@@ -92,6 +93,7 @@
},
"CoreAdminHome": {
"Administration": "Yönetici",
+ "ArchivingSettings": "Arşivleme ayarları",
"BrandingSettings": "Marka ayarları",
"CheckReleaseGetVersion": "Yeni sürüm kontrolü yapılırken her zaman ulaşın.",
"ClickHereToOptIn": "İzin vermek için tıklayınız.",
@@ -100,6 +102,7 @@
"CustomLogoHelpText": "E-posta raporlarında ve kullanıcı arayüzünde kullanılacak olan Piwik logosunu değiştirebilirsiniz.",
"DevelopmentProcess": "%sdevelopment process%s sırasında binlerce otomasyon testleri Piwik'te beta testerleriniz hatasız kullanım politikası yürütebilir",
"EmailServerSettings": "E-Posta sunucusu ayarları",
+ "FaviconUpload": "Yüklemek için Favicon seçin",
"ForBetaTestersOnly": "Yalnızca beta test edenler için",
"ImageTracking": "Resimle Ä°zleme",
"ImageTrackingIntro1": "Ziyaretçi JavaScript'i devre dışı bıraktığında veya JavaScript kullanılamadığında, ziyaretçileri takip etmek için resim kullanabilirsiniz.",
@@ -124,11 +127,14 @@
"JSTracking_PageCustomVarsDesc": "Örneğin, değişken adı \"Kategori\" ve değer \"Beyaz Sayfalar\".",
"JSTracking_VisitorCustomVars": "Bu ziyaretçi için özel değişkenler kullan",
"JSTracking_VisitorCustomVarsDesc": "Örneğin, değişken adı \"Tür\" ve değer \"Müşteri\".",
+ "JSTrackingIntro1": "Ziyaretçilerinizi birkaç farklı yolla izleyebilirsiniz. Önerilen yöntem javascript metodudur. Bu metodu kullanmak için buradan oluşturacağınız javascript kodunun, bütün sayfalarınızda yer aldığından emin olun.",
"JSTrackingIntro2": "Piwik ile izlemek istediğiniz sitenin tüm sayfalarına Javascript izleme kodunu yapıştırmanız gerekmektedir.",
"JSTrackingIntro4": "Eğer Javascript izleme kodu kullanmak istemiyorsanız aşağıdaki%2$s linke tıklayarak izleme resmi oluşturabilirsiniz%1$s.",
+ "JSTrackingIntro5": "Eğer daha fazla sayfa görüntülenme sayısını takip etmek istiyorsanız, lütfen %1$sPiwik javascript izleme dökümantasyonunda %2$s listelenen uygun fonksiyonlara göz gezdirin. Bu fonksiyonları kullanarak hedefleri, özel değerleri, e-ticaret siparişlerini, terkedilen sepetler ve daha fazlasını takip edebilirsiniz.",
"LatestBetaRelease": "En son beta sürümü",
"LatestStableRelease": "En son kararlı sürüm",
"LogoUpload": "Yüklemek için logo seçiniz",
+ "LogoUploadHelp": "Lütfen %s formatlarında ve minimum %s piksel yüksekliğinde bir dosya yükleyin.",
"MenuDiagnostic": "tehÅŸis",
"MenuGeneralSettings": "Genel Ayarlar",
"MenuManage": "yönetmek",
@@ -137,23 +143,49 @@
"OptOutForYourVisitors": "ziyaretciniz için Piwiki devre dışı bırakmak",
"PiwikIsInstalledAt": "Piwikde yüklenir",
"PluginDescription": "Piwik yönetici arenasi.",
+ "PluginSettingChangeNotAllowed": "Bu ayarların \"%s\" değerlerini değiştirmek için \"%s\" eklentisinde gerekli izniniz yok.",
+ "PluginSettings": "Eklenti ayarları",
+ "PluginSettingsIntro": "Buradan aşağıdaki 3. parti eklentiler için ayarları değiştirebilirsiniz:",
+ "SendPluginUpdateCommunication": "Yeni bir eklenti güncellemesi olduğunda beni e-posta ile bilgilendir",
+ "StableReleases": "Eğer Piwik işiniz için kritik bir parçaysa, son ve stabil olan versiyonu kullanmanızı öneririz. Eğer en son güncel betayı kullanıyorsanız ve bir hata bulur ya da öneriniz olursa, lütfen şuraya%s bakın%s.",
"TrackAGoal": "Bir hedef izleme",
"TrackingCode": "Ä°zleme Kodu",
"TrustedHostConfirm": "Güvenilir alan adınızı değiştirmek istediğinizden emin misiniz?",
"TrustedHostSettings": "Güvenilir Piwik Sunucu adı",
+ "UpdateSettings": "Ayarları güncelle",
"UseCustomLogo": "Özel logo kullan",
"ValidPiwikHostname": "Geçerli Alanadı",
+ "WithOptionalRevenue": "opsiyonel gelir ile",
"YouAreOptedIn": "Şuanda kayıt altındasınız",
+ "YouAreOptedOut": "Şu anda dışarıdasınız.",
"YouMayOptOut": "Bu web sitesinde toplanan verilerin analizi için ziyaretçi bilgisayarına kaydedilen çerezin daha farklı olmasını tercih edebilirsiniz."
},
"CoreHome": {
"CategoryNoData": "Bu kategoride veri yok. \"Eklenmiş tüm populasyon\" deneyiniz.",
"CheckForUpdates": "Güncellemeleri kontrol et",
+ "CheckPiwikOut": "Piwik'e göz atın!",
+ "CloseWidgetDirections": "Widget üstündeki 'X' simgesine tıklayarak bu widgeti kapatabilirsiniz.",
+ "DataForThisReportHasBeenPurged": "Bu raporda yer alan veriler %s aydan öncesine ait ve rapora dahil edilmemiştir.",
+ "DataTableExcludeAggregateRows": "Tüm satırlar gösteriliyor %s Gizle",
+ "DataTableIncludeAggregateRows": "Bütün satırlar gizlendi %s Göster",
+ "DateFormat": "%longDay% %day% %longMonth% %longYear%",
"Default": "varsayılan",
+ "DonateCall1": "Piwik'i kullanmak için hiçbir maliyetiniz olmayacak, ama bu bize bu ürünü geliştirmek için hiçbir maliyeti olmadığı anlamına gelmiyor.",
"DonateCall2": "Piwikin gelişmesi ve ilerlemesi için size sürekli ihtiyacı var",
+ "DonateFormInstructions": "Miktar seçmek için kaydırıcıyı tıklayın, sonra bağış düğmesini tıklatın.",
+ "ExcludeRowsWithLowPopulation": "Tüm satırlar gösteriliyor %s Az veri olanları çıkart",
+ "ExternalHelp": "Yardım (yeni sekmede açılır)",
+ "FlattenDataTable": "Rapor hiyerarşik yapıda %s Düz yap",
"HowMuchIsPiwikWorth": "Piwikin değeri sizin için ne kadar?",
+ "IncludeRowsWithLowPopulation": "Az veriye sahip satırlar gizlendi %s Satırları göster",
+ "InjectedHostEmailBody": "Merhaba, bugün Piwik'e erişmeye çalıştım ve bilinmeyen host uyarısı ile karşılaştım.",
"InjectedHostEmailSubject": "Bilinmeyen bir sunucu Piwik'e eriÅŸti: %s",
+ "InjectedHostWarningIntro": "Şu anda Piwik'e %1$s 'den giriş yapıyorsunuz ama Piwik şu adreste çalışması için ayarlandı: %2$s.",
+ "LongMonthFormat": "%longYear%, %longMonth%",
+ "LongWeekFormat": "%dayFrom% %longMonthFrom% - %dayTo% %longMonthTo% %longYearTo%",
+ "MakeADifference": "Farklılık yarat: Piwik 2.0'ı finanse etmek için şimdi %1$s bağışla %2$s",
"MakeOneTimeDonation": "Onun yerine bir defalık bağış yapın",
+ "OnlyForSuperUserAccess": "Bu widget sadece Super User seviyesinde olan kullanıcılara görüntülenir.",
"PageOf": "%1$s nin %2$s",
"PeriodDay": "Gün",
"PeriodDays": "gün",
@@ -167,26 +199,89 @@
"PluginDescription": "Web istatistik rapor yapısı.",
"ReportGeneratedOn": "%s tarihinde oluÅŸturulan Rapor",
"ReportGeneratedXAgo": "%s kadar önce oluşturulan Rapor",
+ "SharePiwikShort": "Piwik! Ãœcretsiz web takibi ve analizi. Kendi verilerinizle.",
"ShareThis": "paylaÅŸ",
+ "ShortDateFormat": "%shortDay% %day% %shortMonth%",
+ "ShortDateFormatWithYear": "%day% %shortMonth% %shortYear%",
+ "ShortMonthFormat": "%shortMonth% %longYear%",
+ "ShortWeekFormat": "%dayFrom% %shortMonthFrom% - %dayTo% %shortMonthTo% %shortYearTo%",
"ShowJSCode": "Eklenecek JavaScript kodu göster",
+ "SubscribeAndBecomePiwikSupporter": "Piwik Destekçisi olmak için güvenli bir kredi kartı ödeme sayfasına (Paypal) geçin!",
"SupportPiwik": "Piwike destek ol",
+ "TableNoData": "Bu tablo için bir data yok.",
"ThereIsNoDataForThisReport": "Bu rapor için veri yok.",
- "WebAnalyticsReports": "Web Analiz Raporları"
+ "ViewAllPiwikVideoTutorials": "Tüm Piwik Yardım Videolarına Bak",
+ "WebAnalyticsReports": "Web Analiz Raporları",
+ "YouAreUsingTheLatestVersion": "Piwik'in son versiyonunu kullanıyorsunuz!"
},
"CorePluginsAdmin": {
+ "ActionActivatePlugin": "Eklentiyi etkinleÅŸtir",
+ "ActionActivateTheme": "Temayı aktif et",
+ "ActionInstall": "Kur",
+ "ActionUninstall": "Kaldır",
"Activate": "Aktive et",
"Activated": "Aktive edildi",
"Active": "Aktif",
+ "Activity": "Aktivite",
+ "AllowedUploadFormats": "Bu sayfa üzerinden .zip formatında bir eklenti veya tema yükleyebilirsiniz.",
"AuthorHomepage": "Yazar Ana sayfası",
+ "Authors": "Yazarlar",
+ "BackToExtendPiwik": "Markete geri dön",
+ "BeCarefulUsingPlugins": "İncelemediğimiz için Piwik ekibi tarafından hazırlanmayan eklentiler dikkatli kullanılmalıdır.",
+ "ByXDevelopers": "şu geliştiriciler tarafından %s",
+ "Changelog": "DeÄŸiÅŸiklikler",
"Deactivate": "Devre dışı",
+ "Developer": "GeliÅŸtirici",
+ "DoMoreContactPiwikAdmins": "Yeni bir eklenti yada tema kurmak için lütfen Piwik yöneticileri iletişime geçiniz.",
+ "GetNewFunctionality": "Yeni fonskiyonlara sahip olun",
+ "History": "Geçmiş",
"Inactive": "Pasif",
+ "InfoPluginUpdateIsRecommended": "Son gelişmelerden faydalanmak için şimdi eklentileri güncelleyin.",
+ "InfoThemeUpdateIsRecommended": "Son versiyonun keyfini çıkarmak için temanızı güncelleyin.",
+ "InstallingPlugin": "Kuruluyor %s",
+ "InstallNewPlugins": "Yeni eklenti kur",
+ "InstallNewThemes": "Yeni tema kur",
+ "LastCommitTime": "(son iÅŸlem %s)",
+ "LastUpdated": "Son Güncelleme",
"LicenseHomepage": "Lisans Ana sayfası",
+ "Marketplace": "Pazaryeri",
+ "MarketplaceSellPluginSubject": "Pazaryeri - Eklenti Sat",
+ "MenuPlatform": "Platform",
+ "NoPluginsFound": "Eklenti bulunamadı",
+ "NoThemesFound": "Tema bulunamadı",
+ "NoZipFileSelected": "Lütfen bir ZIP dosyası seçin.",
+ "NumDownloadsLatestVersion": "Son versiyon: %s Ä°ndir",
+ "NumUpdatesAvailable": "Uygun %s Güncelleme",
+ "OriginCore": "Çekirdek",
+ "OriginThirdParty": "Üçüncü parti",
"PluginDescription": "Eklenti yönetim arabirimi.",
"PluginHomepage": "Eklenti Sayfası",
+ "PluginKeywords": "Anahtar Kelimeler",
"PluginsManagement": "Eklenti Yönetimi",
+ "PluginUpdateAvailable": "Şuanda %s versiyonunu kullanıyorsunuz ve yeni %s versiyon mevcut.",
+ "PluginWebsite": "Eklenti Sitesi",
+ "Screenshots": "Ekran Görüntüleri",
+ "SortByAlpha": "alfa",
+ "SortByNewest": "en yeni",
+ "SortByPopular": "popüler",
"Status": "Durum",
+ "StepDownloadingPluginFromMarketplace": "Pazaryerinden eklenti indirin",
+ "StepDownloadingThemeFromMarketplace": "Pazaryerinden tema indirin",
+ "StepReplaceExistingTheme": "Mevcut temayla yer deÄŸiÅŸtir",
+ "StepThemeSuccessfullyUpdated": "Temanızı başarılı bir şekilde güncellediniz %1$s %2$s.",
+ "StepUnzippingPlugin": "Eklenti çıkarılıyor",
+ "StepUnzippingTheme": "Tema çıkarılıyor",
+ "Support": "Destek",
+ "TeaserExtendPiwik": "Piwik'i Eklenti ve Temalarla GeniÅŸlet",
"Theme": "Tema",
- "Version": "Versiyon"
+ "Themes": "Temalar",
+ "ThemesManagement": "Temaları Yönet",
+ "Updated": "Güncellendi",
+ "UpdatingPlugin": "Güncelleniyor %s",
+ "UploadZipFile": "ZIP dosyası yükle",
+ "Version": "Versiyon",
+ "ViewRepositoryChangelog": "DeÄŸiÅŸikliklere bak",
+ "Websites": "Web siteler"
},
"CoreUpdater": {
"ClickHereToViewSqlQueries": "Çalıştırılacak olan SQL sorgularının listesini görmek ve kopyalamak için tıklayın",
@@ -204,6 +299,10 @@
"InstallingTheLatestVersion": "Son versiyon yükleniyor",
"MajorUpdateWarning1": "Bu büyük bir güncelleştirme. Alışkın olduğunuz süreden daha uzun sürecektir.",
"NoteForLargePiwikInstances": "Büyük Piwik güncellemesi için önemli not",
+ "NotificationClickToUpdatePlugins": "Eklentileriniz güncellemek için burayı tıklayın:",
+ "NotificationClickToUpdateThemes": "Temanızı şimdi güncellemek için burayı tıklayın:",
+ "NotificationSubjectAvailableCoreUpdate": "Yeni Piwik %s hazır",
+ "NotificationSubjectAvailablePluginUpdate": "Piwik eklentileriniz için yeni güncellemeler var",
"PiwikHasBeenSuccessfullyUpgraded": "Piwik başarıyla güncellendi!",
"PiwikUpdatedSuccessfully": "Piwik başarıyla güncellendi!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Piwik veritabanı %1$s versiyonundan %2$s versiyonuna güncellenecektir.",
@@ -211,6 +310,7 @@
"ReadyToGo": "Hazır mısınız?",
"TheFollowingPluginsWillBeUpgradedX": "Aşağıdaki eklentiler güncellenecektir: %s.",
"ThereIsNewVersionAvailableForUpdate": "Piwik'i güncellemek için yeni bir sürümü mevcut",
+ "TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Veritabanı güncelleme işlemi biraz vakit alabilir, bu yüzden lütfen sabırlı olun.",
"UnpackingTheUpdate": "Güncelleme dosyaları açılıyor",
"UpdateAutomatically": "Otomatik Güncelleme",
"UpdateHasBeenCancelledExplanation": "Piwik Tek Tık Güncellemesi iptal edildi. Eğer aşağıdali hatayı düzeltemiyorsanız, Piwik'i elle güncellemeniz gerekmektedir. Başlamak için %1$s lütfen Güncelleme Dökümanını %3$skontrol edin!%2$s",
@@ -239,7 +339,9 @@
"Dashboard": "Pano",
"DashboardCopied": "Panel başarılı şekilde seçilen kullanıcı için kopyalandı",
"DashboardName": "Panel adı:",
+ "DefaultDashboard": "Varsayılan panel - Varsayılan widget seçimleri ve sütunları kullanın",
"DeleteWidgetConfirm": "Bu Bileşenı panodan silmek istediğinize emin misiniz?",
+ "EmptyDashboard": "Boş panel - Favori widgetlarınızı seçin",
"LoadingWidget": "Bileşen yükleniyor, lütfen bekleyin...",
"ManageDashboard": "Paneli düzenle",
"Maximise": "Maksimize",
@@ -269,12 +371,15 @@
"VisitTheForums": "%sForumları%s ziyaret edin"
},
"General": {
+ "AbandonedCarts": "Terkedilen Sepetler",
"AboutPiwikX": "Piwik %s Hakkında",
"Action": "Eylem",
"Actions": "Eylemler",
"Add": "Ekle",
"AfterEntry": "buraya girdikten sonra",
+ "All": "Hepsi",
"AllWebsitesDashboard": "Tüm Websitelerin Panosu",
+ "And": "ve",
"API": "API",
"ApplyDateRange": "Tarih Aralığını Uygula",
"AuthenticationMethodSmtp": "SMTP için kimlik doğrulama yöntemi",
@@ -293,6 +398,7 @@
"ClickToChangePeriod": "Aralığı değiştirmek için tekrar tıklayın.",
"Close": "Kapat",
"ColumnActionsPerVisit": "Ziyaret başına eylemler",
+ "ColumnAverageGenerationTime": "Ortalama oluşturma süresi",
"ColumnAverageTimeOnPage": "Sayfada geçirilen ort. süre",
"ColumnAvgTimeOnSite": "Sitede geçirilen ortalama süre",
"ColumnAvgTimeOnSiteDocumentation": "Bir ziyaretin ortalama süresi.",
@@ -305,6 +411,7 @@
"ColumnExitRate": "Çıkış oranı",
"ColumnExits": "Çıkışlar",
"ColumnExitsDocumentation": "Bu sayfada biten ziyaret sayısı",
+ "ColumnGenerationTime": "Oluşturma süresi",
"ColumnKeyword": "Anahtar Kelime",
"ColumnLabel": "Etiket",
"ColumnMaxActions": "Tek ziyarette maksimum eylem",
@@ -321,6 +428,7 @@
"ColumnUniqueExits": "Tekil çıkışlar",
"ColumnUniquePageviews": "Tekil sayfa gösterimleri",
"ColumnValuePerVisit": "Ziyaret başına değer",
+ "ColumnViewedAfterSearch": "Arama sonuçlarından tıklanan",
"ColumnVisitDuration": "Ziyaret Süresi (saniye bazında)",
"ColumnVisitsWithConversions": "Sitenize gelen ve (alışveriş, mail listesine kayıt gibi) aktiviteler gösteren ziyaretçileri gör.",
"Continue": "Devam",
@@ -329,6 +437,7 @@
"CurrentWeek": "Bu hafta",
"CurrentYear": "Bu yıl",
"Daily": "Günlük",
+ "DailyReport": "günlük",
"DailyReports": "Günlük raporlar",
"DailySum": "günlük toplam",
"DashboardForASpecificWebsite": "Belirli bir websitesi için Pano",
@@ -350,14 +459,18 @@
"DayTu": "Sa",
"DayWe": "Ça",
"Default": "Varsayılan",
+ "DefaultAppended": "(varsayılan)",
"Delete": "Sil",
"Description": "Açıklama",
"Desktop": "Masaüstü",
"Details": "Detaylar",
"Discount": "Ä°ndirim",
"DisplaySimpleTable": "Basit tablo göster",
+ "Documentation": "Dokümantasyon",
+ "Donate": "Bağışla",
"Done": "Yapıldı",
"Download": "Ä°ndir",
+ "DownloadFail_FileExists": "Dosya %s zaten var!",
"Downloads": "Ä°ndirilenler",
"EcommerceOrders": "ETicaret SipariÅŸleri",
"Edit": "Düzenle",
@@ -386,8 +499,11 @@
"FileIntegrityWarningExplanation": "Dosya bütünlük kontrolü başarısız oldu ve hatalar raporlandı. Bu durum genellikle Piwik dosyalarının yüklenmesinde oluşan hatalardan meydana gelmektedir. Sorunu çözmek için tüm Piwik dosyalarını sunucunuza tekrar yüklemeniz ve sayfayı yenilemeniz gerekmektedir.",
"First": "Ä°lk",
"ForExampleShort": "Örneğin",
+ "Forums": "Forum",
"FromReferrer": "ÅŸuradan",
+ "GeneralInformation": "Genel Bilgiler",
"GeneralSettings": "Genel Ayarlar",
+ "GetStarted": "BaÅŸla",
"GiveUsYourFeedback": "Geri Bildirim Verin!",
"Goal": "Hedef",
"GoTo": "%s'e git",
@@ -397,9 +513,11 @@
"Hide": "gizle",
"HoursMinutes": "%1$s saat %2$s dak",
"Id": "No",
+ "InfoFor": "%s için bilgi",
"Installed": "Yüklendi",
"InvalidDateRange": "Geçersiz Tarih Aralığı, Lütfen Tekrar Deneyin",
"InvalidResponse": "Alınan veriler başarısız.",
+ "IP": "IP",
"JsTrackingTag": "JavaScript Takip Kodu",
"Language": "Dil",
"LastDays": "Son %s gün (bugün dahil)",
@@ -431,11 +549,19 @@
"LongMonth_9": "Eylül",
"MainMetrics": "Ana ölçümler",
"Metadata": "Meta verisi",
+ "Metrics": "Metrikler",
"MinutesSeconds": "%1$s dak %2$ss",
+ "Mobile": "Mobil",
"Monthly": "Aylık",
+ "MonthlyReport": "aylık",
+ "MonthlyReports": "Aylık raporlar",
+ "More": "Daha fazla",
+ "MoreDetails": "Daha Fazla Detay",
+ "MoreLowerCase": "daha fazla",
"MultiSitesSummary": "Tüm Siteler",
"Name": "Ä°sim",
"NbActions": "Eylem Sayısı",
+ "NbSearches": "Site içi Arama Sayısı",
"NDays": "%s gün",
"Never": "Asla",
"NewUpdatePiwikX": "Yeni Güncelleme: Piwik %s",
@@ -455,12 +581,17 @@
"NumberOfVisits": "Ziyaret sayısı",
"NVisits": "%s ziyaret",
"Ok": "Tamam",
+ "OneAction": "1 aksiyon",
"OneDay": "1 gün",
"OneMinute": "1 dakika",
"OneVisit": "1 ziyaret",
"OnlyEnterIfRequired": "SMTP sunucusu için gerekli olan kullanıcı adını giriniz.",
"OnlyEnterIfRequiredPassword": "SMTP sunucusu için gerekli olan şifreyi giriniz.",
"OpenSourceWebAnalytics": "Açık kaynak kodlu Web İstatistik Servisi",
+ "OperationContains": "İçerir",
+ "OperationDoesNotContain": "İçermez",
+ "OperationEquals": "EÅŸittir",
+ "OperationIsNot": "DeÄŸil",
"OptionalSmtpPort": "İsteğe bağlıdır. Şifresiz 25 için TLS SMTP ve güvenli bağlantı için SSL SMTP 465",
"OrCancel": "veya %s Ä°ptal %s",
"OriginalLanguageName": "Türkçe",
@@ -502,6 +633,7 @@
"Save": "Kaydet",
"SaveImageOnYourComputer": "Resmi bilgisayarınıza kaydetmek için, resme sağ tıklayıp \"Farklı kaydet...\" deyin",
"Search": "Arama",
+ "SearchNoResults": "Sonuç yok",
"Seconds": "%ssn",
"Settings": "Ayarlar",
"Shipping": "Teslimat",
@@ -532,9 +664,11 @@
"SmtpUsername": "SMTP kullanıcı adı",
"Source": "Kaynak",
"Subtotal": "Ara toplam",
+ "Summary": "Özet",
"Table": "Tablo",
"TagCloud": "Etiket bulutu",
"Tax": "Vergi",
+ "TimeOnPage": "Sayfadaki süre",
"Today": "Bugün",
"Total": "Toplam",
"TotalRevenue": "Toplam Kazanç",
diff --git a/misc/package/build.sh b/misc/package/build.sh
index bf1b22d86f..de6ae59d99 100755
--- a/misc/package/build.sh
+++ b/misc/package/build.sh
@@ -182,6 +182,7 @@ else
for i in zip tar.gz; do
ln -sf $HTTP_PATH/piwik-$VERSION.$i $HTTP_PATH/latest.$i
ln -sf $HTTP_PATH/piwik-$VERSION.$i $HTTP_PATH/piwik-latest.$i
+ ln -sf $HTTP_PATH/piwik-$VERSION.$i $HTTP_PATH/piwik.$i
done
# record filesize in Mb
@@ -211,7 +212,7 @@ If you have any question, feel free to ask. \n\n\
Thank you,\n\n\
Piwik team" | mail -s"New Piwik Version $VERSION" "appgal@microsoft.com,hello@piwik.org"
- echo "build finished! http://builds.piwik.org/piwik-latest.zip"
+ echo "build finished! http://builds.piwik.org/piwik.zip"
fi
diff --git a/piwik.js b/piwik.js
index bbcf30af2c..1b654e4c58 100644
--- a/piwik.js
+++ b/piwik.js
@@ -15,21 +15,21 @@ return typeof f==="function"?m({"":n},""):n}throw new SyntaxError("JSON2.parse")
}while(Q.getTimeAlias()<i)}}function K(){var Q;if(!n){n=true;J("load");for(Q=0;Q<A.length;Q++){A[Q]()}}return true}function m(){var R;if(s.addEventListener){O(s,"DOMContentLoaded",function Q(){s.removeEventListener("DOMContentLoaded",Q,false);K()})}else{if(s.attachEvent){s.attachEvent("onreadystatechange",function Q(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",Q);K()}});if(s.documentElement.doScroll&&C===C.top){(function Q(){if(!n){try{s.documentElement.doScroll("left")}catch(S){setTimeout(Q,0);return}K()}}())}}}if((new RegExp("WebKit")).test(e.userAgent)){R=setInterval(function(){if(n||/loaded|complete/.test(s.readyState)){clearInterval(R);K()}},10)}O(C,"load",K,false)}function h(S,R){var Q=s.createElement("script");Q.type="text/javascript";Q.src=S;if(Q.readyState){Q.onreadystatechange=function(){var T=this.readyState;if(T==="loaded"||T==="complete"){Q.onreadystatechange=null;R()}}}else{Q.onload=R}s.getElementsByTagName("head")[0].appendChild(Q)}function v(){var Q="";
try{Q=C.top.document.referrer}catch(S){if(C.parent){try{Q=C.parent.document.referrer}catch(R){Q=""}}}if(Q===""){Q=s.referrer}return Q}function j(Q){var S=new RegExp("^([a-z]+):"),R=S.exec(Q);return R?R[1]:null}function b(Q){var S=new RegExp("^(?:(?:https?|ftp):)/*(?:[^@]+@)?([^:/#]+)"),R=S.exec(Q);return R?R[1]:Q}function D(S,R){var Q="[\\?&#]"+R+"=([^&#]*)";var U=new RegExp(Q);var T=U.exec(S);return T?B(T[1]):""}function q(Q){return g(k(Q))}function N(ag){var S=function(al,W){return(al<<W)|(al>>>(32-W))},ah=function(an){var al="",am,W;for(am=7;am>=0;am--){W=(an>>>(am*4))&15;al+=W.toString(16)}return al},V,aj,ai,R=[],aa=1732584193,Y=4023233417,X=2562383102,U=271733878,T=3285377520,af,ae,ad,ac,ab,ak,Q,Z=[];ag=q(ag);Q=ag.length;for(aj=0;aj<Q-3;aj+=4){ai=ag.charCodeAt(aj)<<24|ag.charCodeAt(aj+1)<<16|ag.charCodeAt(aj+2)<<8|ag.charCodeAt(aj+3);Z.push(ai)}switch(Q&3){case 0:aj=2147483648;break;case 1:aj=ag.charCodeAt(Q-1)<<24|8388608;break;case 2:aj=ag.charCodeAt(Q-2)<<24|ag.charCodeAt(Q-1)<<16|32768;
break;case 3:aj=ag.charCodeAt(Q-3)<<24|ag.charCodeAt(Q-2)<<16|ag.charCodeAt(Q-1)<<8|128;break}Z.push(aj);while((Z.length&15)!==14){Z.push(0)}Z.push(Q>>>29);Z.push((Q<<3)&4294967295);for(V=0;V<Z.length;V+=16){for(aj=0;aj<16;aj++){R[aj]=Z[V+aj]}for(aj=16;aj<=79;aj++){R[aj]=S(R[aj-3]^R[aj-8]^R[aj-14]^R[aj-16],1)}af=aa;ae=Y;ad=X;ac=U;ab=T;for(aj=0;aj<=19;aj++){ak=(S(af,5)+((ae&ad)|(~ae&ac))+ab+R[aj]+1518500249)&4294967295;ab=ac;ac=ad;ad=S(ae,30);ae=af;af=ak}for(aj=20;aj<=39;aj++){ak=(S(af,5)+(ae^ad^ac)+ab+R[aj]+1859775393)&4294967295;ab=ac;ac=ad;ad=S(ae,30);ae=af;af=ak}for(aj=40;aj<=59;aj++){ak=(S(af,5)+((ae&ad)|(ae&ac)|(ad&ac))+ab+R[aj]+2400959708)&4294967295;ab=ac;ac=ad;ad=S(ae,30);ae=af;af=ak}for(aj=60;aj<=79;aj++){ak=(S(af,5)+(ae^ad^ac)+ab+R[aj]+3395469782)&4294967295;ab=ac;ac=ad;ad=S(ae,30);ae=af;af=ak}aa=(aa+af)&4294967295;Y=(Y+ae)&4294967295;X=(X+ad)&4294967295;U=(U+ac)&4294967295;T=(T+ab)&4294967295}ak=ah(aa)+ah(Y)+ah(X)+ah(U)+ah(T);return ak.toLowerCase()}function I(S,Q,R){if(S==="translate.googleusercontent.com"){if(R===""){R=Q
-}Q=D(Q,"u");S=b(Q)}else{if(S==="cc.bingj.com"||S==="webcache.googleusercontent.com"||S.slice(0,5)==="74.6."){Q=s.links[0].href;S=b(Q)}}return[S,Q,R]}function w(R){var Q=R.length;if(R.charAt(--Q)==="."){R=R.slice(0,Q)}if(R.slice(0,2)==="*."){R=R.slice(1)}return R}function P(R){R=R&&R.text?R.text:R;if(!l(R)){var Q=s.getElementsByTagName("title");if(Q&&u(Q[0])){R=Q[0].text}}return R}function y(Q,R){if(R){return R}if(Q.slice(-9)==="piwik.php"){Q=Q.slice(0,Q.length-9)}return Q}function x(U){var Q="Piwik_Overlay";var X=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)$");var S=X.exec(s.referrer);if(S){var T=S[1];if(T!==String(U)){return false}var W=S[2],R=S[3];C.name=Q+"###"+W+"###"+R}var V=C.name.split("###");return V.length===3&&V[0]===Q}function H(R,W,T){var V=C.name.split("###"),U=V[1],Q=V[2],S=y(R,W);h(S+"plugins/Overlay/client/client.js?v=1",function(){Piwik_Overlay_Client.initialize(S,T,U,Q)})}function z(ao,aP){var W=I(s.domain,C.location.href,v()),a9=w(W[0]),bo=W[1],aW=W[2],bp=false,aU="GET",U=ao||"",al="",aR="",be=aP||"",aG,aw=s.title,ay="7z|aac|apk|ar[cj]|as[fx]|avi|azw3|bin|csv|deb|dmg|docx?|epub|exe|flv|gif|gz|gzip|hqx|jar|jpe?g|js|mobi|mp(2|3|4|e?g)|mov(ie)?|ms[ip]|od[bfgpst]|og[gv]|pdf|phps|png|pptx?|qtm?|ra[mr]?|rpm|sea|sit|tar|t?bz2?|tgz|torrent|txt|wav|wm[av]|wpd||xlsx?|xml|z|zip",aS=[a9],Z=[],aK=[],an=[],aQ=500,aa,ap,ab,ad,aA=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],av=["pk_kwd","piwik_kwd","utm_term"],bm="_pk_",ag,bn,ae=false,bh,aC,aF,ak=63072000000,am=1800000,aH=15768000000,aD=true,ar=0,Y=false,aL={},V={},bi=200,a2={},bf={},aZ=false,aX=false,aV,aM,ah,az=N,aY,aE;
-function a4(by,bv,bu,bx,bt,bw){if(ae){return}var bs;if(bu){bs=new Date();bs.setTime(bs.getTime()+bu)}s.cookie=by+"="+k(bv)+(bu?";expires="+bs.toGMTString():"")+";path="+(bx||"/")+(bt?";domain="+bt:"")+(bw?";secure":"")}function aj(bu){if(ae){return 0}var bs=new RegExp("(^|;)[ ]*"+bu+"=([^;]*)"),bt=bs.exec(s.cookie);return bt?B(bt[2]):0}function bj(bs){var bt;if(ab){bt=new RegExp("#.*");return bs.replace(bt,"")}return bs}function a8(bu,bs){var bv=j(bs),bt;if(bv){return bs}if(bs.slice(0,1)==="/"){return j(bu)+"://"+b(bu)+bs}bu=bj(bu);bt=bu.indexOf("?");if(bt>=0){bu=bu.slice(0,bt)}bt=bu.lastIndexOf("/");if(bt!==bu.length-1){bu=bu.slice(0,bt+1)}return bu+bs}function aT(bv){var bt,bs,bu;for(bt=0;bt<aS.length;bt++){bs=w(aS[bt].toLowerCase());if(bv===bs){return true}if(bs.slice(0,1)==="."){if(bv===bs.slice(1)){return true}bu=bv.length-bs.length;if((bu>0)&&(bv.slice(bu)===bs)){return true}}}return false}function br(bs){var bt=new Image(1,1);bt.onload=function(){r=0};bt.src=U+(U.indexOf("?")<0?"?":"&")+bs
-}function a5(bs){try{var bu=C.XMLHttpRequest?new C.XMLHttpRequest():C.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;bu.open("POST",U,true);bu.onreadystatechange=function(){if(this.readyState===4&&this.status!==200){br(bs)}};bu.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");bu.send(bs)}catch(bt){br(bs)}}function aB(bu,bt){var bs=new Date();if(!bh){if(aU==="POST"){a5(bu)}else{br(bu)}i=bs.getTime()+bt}}function a3(bs){return bm+bs+"."+be+"."+aY}function X(){if(ae){return"0"}if(!u(e.cookieEnabled)){var bs=a3("testcookie");a4(bs,"1");return aj(bs)==="1"?"1":"0"}return e.cookieEnabled?"1":"0"}function aN(){aY=az((ag||a9)+(bn||"/")).slice(0,4)}function ai(){var bt=a3("cvar"),bs=aj(bt);if(bs.length){bs=JSON2.parse(bs);if(E(bs)){return bs}}return{}}function T(){if(Y===false){Y=ai()}}function bd(){var bs=new Date();aV=bs.getTime()}function af(bw,bt,bs,bv,bu,bx){a4(a3("id"),bw+"."+bt+"."+bs+"."+bv+"."+bu+"."+bx,ak,bn,ag)}function S(){var bt=new Date(),bs=Math.round(bt.getTime()/1000),bv=aj(a3("id")),bu;
-if(bv){bu=bv.split(".");bu.unshift("0")}else{if(!aE){aE=az((e.userAgent||"")+(e.platform||"")+JSON2.stringify(bf)+bt.getTime()+Math.random()).slice(0,16)}bu=["1",aE,bs,0,bs,"",""]}return bu}function Q(){var bs=aj(a3("ref"));if(bs.length){try{bs=JSON2.parse(bs);if(E(bs)){return bs}}catch(bt){}}return["","",0,""]}function R(){var bs=ae;ae=false;a4(a3("id"),"",-86400,bn,ag);a4(a3("ses"),"",-86400,bn,ag);a4(a3("cvar"),"",-86400,bn,ag);a4(a3("ref"),"",-86400,bn,ag);ae=bs}function bc(bw){if(!bw||!E(bw)){return}var bv=[];var bu;for(bu in bw){if(Object.prototype.hasOwnProperty.call(bw,bu)){bv.push(bu)}}var bx={};bv.sort();var bs=bv.length;var bt;for(bt=0;bt<bs;bt++){bx[bv[bt]]=bw[bv[bt]]}return bx}function ax(bu,bS,bT,bv){var bQ,bt=new Date(),bC=Math.round(bt.getTime()/1000),bW,bR,bx,bI,bN,bB,bL,by,bP,bw=1024,bY,bF,bM=Y,bD=a3("ses"),bE=a3("ref"),bZ=a3("cvar"),bJ=S(),bH=aj(bD),bO=Q(),bV=aG||bo,bz,bs;if(ae){R()}if(bh){return""}bW=bJ[0];bR=bJ[1];bI=bJ[2];bx=bJ[3];bN=bJ[4];bB=bJ[5];if(!u(bJ[6])){bJ[6]=""
-}bL=bJ[6];if(!u(bv)){bv=""}var bG=s.characterSet||s.charset;if(!bG||bG.toLowerCase()==="utf-8"){bG=null}bz=bO[0];bs=bO[1];by=bO[2];bP=bO[3];if(!bH){var bU=am/1000;if(!bB||(bC-bB)>bU){bx++;bB=bN}if(!aF||!bz.length){for(bQ in aA){if(Object.prototype.hasOwnProperty.call(aA,bQ)){bz=D(bV,aA[bQ]);if(bz.length){break}}}for(bQ in av){if(Object.prototype.hasOwnProperty.call(av,bQ)){bs=D(bV,av[bQ]);if(bs.length){break}}}}bY=b(aW);bF=bP.length?b(bP):"";if(bY.length&&!aT(bY)&&(!aF||!bF.length||aT(bF))){bP=aW}if(bP.length||bz.length){by=bC;bO=[bz,bs,by,bj(bP.slice(0,bw))];a4(bE,JSON2.stringify(bO),aH,bn,ag)}}bu+="&idsite="+be+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+bt.getHours()+"&m="+bt.getMinutes()+"&s="+bt.getSeconds()+"&url="+k(bj(bV))+(aW.length?"&urlref="+k(bj(aW)):"")+"&_id="+bR+"&_idts="+bI+"&_idvc="+bx+"&_idn="+bW+(bz.length?"&_rcn="+k(bz):"")+(bs.length?"&_rck="+k(bs):"")+"&_refts="+by+"&_viewts="+bB+(String(bL).length?"&_ects="+bL:"")+(String(bP).length?"&_ref="+k(bj(bP.slice(0,bw))):"")+(bG?"&cs="+k(bG):"");
-for(bQ in bf){if(Object.prototype.hasOwnProperty.call(bf,bQ)){bu+="&"+bQ+"="+bf[bQ]}}if(bS){bu+="&data="+k(JSON2.stringify(bS))}else{if(ad){bu+="&data="+k(JSON2.stringify(ad))}}function bA(b0,b1){var b2=JSON2.stringify(b0);if(b2.length>2){return"&"+b1+"="+k(b2)}return""}var bX=bc(aL);var bK=bc(V);bu+=bA(bX,"cvar");bu+=bA(bK,"e_cvar");if(Y){bu+=bA(Y,"_cvar");for(bQ in bM){if(Object.prototype.hasOwnProperty.call(bM,bQ)){if(Y[bQ][0]===""||Y[bQ][1]===""){delete Y[bQ]}}}a4(bZ,JSON2.stringify(Y),am,bn,ag)}if(aD){if(ar){bu+="&gt_ms="+ar}else{if(f&&f.timing&&f.timing.requestStart&&f.timing.responseEnd){bu+="&gt_ms="+(f.timing.responseEnd-f.timing.requestStart)}}}af(bR,bI,bx,bC,bB,u(bv)&&String(bv).length?bv:bL);a4(bD,"*",am,bn,ag);bu+=J(bT);if(aR.length){bu+="&"+aR}return bu}function a7(bv,bu,bz,bw,bs,bC){var bx="idgoal=0",by,bt=new Date(),bA=[],bB;if(String(bv).length){bx+="&ec_id="+k(bv);by=Math.round(bt.getTime()/1000)}bx+="&revenue="+bu;if(String(bz).length){bx+="&ec_st="+bz}if(String(bw).length){bx+="&ec_tx="+bw
-}if(String(bs).length){bx+="&ec_sh="+bs}if(String(bC).length){bx+="&ec_dt="+bC}if(a2){for(bB in a2){if(Object.prototype.hasOwnProperty.call(a2,bB)){if(!u(a2[bB][1])){a2[bB][1]=""}if(!u(a2[bB][2])){a2[bB][2]=""}if(!u(a2[bB][3])||String(a2[bB][3]).length===0){a2[bB][3]=0}if(!u(a2[bB][4])||String(a2[bB][4]).length===0){a2[bB][4]=1}bA.push(a2[bB])}}bx+="&ec_items="+k(JSON2.stringify(bA))}bx=ax(bx,ad,"ecommerce",by);aB(bx,aQ)}function a6(bs,bw,bv,bu,bt,bx){if(String(bs).length&&u(bw)){a7(bs,bw,bv,bu,bt,bx)}}function bl(bs){if(u(bs)){a7("",bs,"","","","")}}function aJ(bv,bw){var bs=new Date(),bu=ax("action_name="+k(P(bv||aw)),bw,"log");aB(bu,aQ);if(aa&&ap&&!aX){aX=true;O(s,"click",bd);O(s,"mouseup",bd);O(s,"mousedown",bd);O(s,"mousemove",bd);O(s,"mousewheel",bd);O(C,"DOMMouseScroll",bd);O(C,"scroll",bd);O(s,"keypress",bd);O(s,"keydown",bd);O(s,"keyup",bd);O(C,"resize",bd);O(C,"focus",bd);O(C,"blur",bd);aV=bs.getTime();setTimeout(function bt(){var bx;bs=new Date();if((aV+ap)>bs.getTime()){if(aa<bs.getTime()){bx=ax("ping=1",bw,"ping");
-aB(bx,aQ)}setTimeout(bt,ap)}},ap)}}function ac(bu,bw,bs,bv,bx){if(String(bu).length===0||String(bw).length===0){return false}var bt=ax("e_c="+k(bu)+"&e_a="+k(bw)+(u(bs)?"&e_n="+k(bs):"")+(u(bv)?"&e_v="+k(bv):""),bx,"event");aB(bt,aQ)}function au(bs,bv,bt,bw){var bu=ax("search="+k(bs)+(bv?"&search_cat="+k(bv):"")+(u(bt)?"&search_count="+bt:""),bw,"sitesearch");aB(bu,aQ)}function aO(bs,bv,bu){var bt=ax("idgoal="+bs+(bv?"&revenue="+bv:""),bu,"goal");aB(bt,aQ)}function bb(bt,bs,bv){var bu=ax(bs+"="+k(bj(bt)),bv,"link");aB(bu,aQ)}function bg(bt,bs){if(bt!==""){return bt+bs.charAt(0).toUpperCase()+bs.slice(1)}return bs}function at(bx){var bw,bs,bv=["","webkit","ms","moz"],bu;if(!aC){for(bs=0;bs<bv.length;bs++){bu=bv[bs];if(Object.prototype.hasOwnProperty.call(s,bg(bu,"hidden"))){if(s[bg(bu,"visibilityState")]==="prerender"){bw=true}break}}}if(bw){O(s,bu+"visibilitychange",function bt(){s.removeEventListener(bu+"visibilitychange",bt,false);bx()});return}bx()}function aq(bu,bt){var bv,bs="(^| )(piwik[_-]"+bt;
-if(bu){for(bv=0;bv<bu.length;bv++){bs+="|"+bu[bv]}}bs+=")( |$)";return new RegExp(bs)}function ba(bv,bs,bw){var bu=aq(aK,"download"),bt=aq(an,"link"),bx=new RegExp("\\.("+ay+")([?&#]|$)","i");return bt.test(bv)?"link":(bu.test(bv)||bx.test(bs)?"download":(bw?0:"link"))}function a1(bx){var bv,bt,bs;bv=bx.parentNode;while(bv!==null&&u(bv)){bt=bx.tagName.toUpperCase();if(bt==="A"||bt==="AREA"){break}bx=bv;bv=bx.parentNode}if(u(bx.href)){var by=bx.hostname||b(bx.href),bz=by.toLowerCase(),bu=bx.href.replace(by,bz),bw=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto):","i");if(!bw.test(bu)){bs=ba(bx.className,bu,aT(bz));if(bs){bu=g(bu);bb(bu,bs)}}}}function bq(bs){var bt,bu;bs=bs||C.event;bt=bs.which||bs.button;bu=bs.target||bs.srcElement;if(bs.type==="click"){if(bu){a1(bu)}}else{if(bs.type==="mousedown"){if((bt===1||bt===2)&&bu){aM=bt;ah=bu}else{aM=ah=null}}else{if(bs.type==="mouseup"){if(bt===aM&&bu===ah){a1(bu)}aM=ah=null}}}}function a0(bt,bs){if(bs){O(bt,"mouseup",bq,false);
-O(bt,"mousedown",bq,false)}else{O(bt,"click",bq,false)}}function aI(bt){if(!aZ){aZ=true;var bu,bs=aq(Z,"ignore"),bv=s.links;if(bv){for(bu=0;bu<bv.length;bu++){if(!bs.test(bv[bu].className)){a0(bv[bu],bt)}}}}}function bk(){var bt,bu,bv={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",dir:"application/x-director",fla:"application/x-shockwave-flash",java:"application/x-java-vm",gears:"application/x-googlegears",ag:"application/x-silverlight"},bs=(new RegExp("Mac OS X.*Safari/")).test(e.userAgent)?C.devicePixelRatio||1:1;if(!((new RegExp("MSIE")).test(e.userAgent))){if(e.mimeTypes&&e.mimeTypes.length){for(bt in bv){if(Object.prototype.hasOwnProperty.call(bv,bt)){bu=e.mimeTypes[bv[bt]];bf[bt]=(bu&&bu.enabledPlugin)?"1":"0"}}}if(typeof navigator.javaEnabled!=="unknown"&&u(e.javaEnabled)&&e.javaEnabled()){bf.java="1"}if(o(C.GearsFactory)){bf.gears="1"}bf.cookie=X()}bf.res=F.width*bs+"x"+F.height*bs}bk();aN();return{getVisitorId:function(){return(S())[1]
-},getVisitorInfo:function(){return S()},getAttributionInfo:function(){return Q()},getAttributionCampaignName:function(){return Q()[0]},getAttributionCampaignKeyword:function(){return Q()[1]},getAttributionReferrerTimestamp:function(){return Q()[2]},getAttributionReferrerUrl:function(){return Q()[3]},setTrackerUrl:function(bs){U=bs},setSiteId:function(bs){be=bs},setCustomData:function(bs,bt){if(E(bs)){ad=bs}else{if(!ad){ad=[]}ad[bs]=bt}},getCustomData:function(){return ad},appendToTrackingUrl:function(bs){aR=bs},getRequest:function(bs){return ax(bs)},setCustomVariable:function(bt,bs,bw,bu){var bv;if(!u(bu)){bu="visit"}if(!u(bs)){return}if(!u(bw)){bw=""}if(bt>0){bs=!l(bs)?String(bs):bs;bw=!l(bw)?String(bw):bw;bv=[bs.slice(0,bi),bw.slice(0,bi)];if(bu==="visit"||bu===2){T();Y[bt]=bv}else{if(bu==="page"||bu===3){aL[bt]=bv}else{if(bu==="event"){V[bt]=bv}}}}},getCustomVariable:function(bt,bu){var bs;if(!u(bu)){bu="visit"}if(bu==="page"||bu===3){bs=aL[bt]}else{if(bu==="event"){bs=V[bt]}else{if(bu==="visit"||bu===2){T();
-bs=Y[bt]}}}if(!u(bs)||(bs&&bs[0]==="")){return false}return bs},deleteCustomVariable:function(bs,bt){if(this.getCustomVariable(bs,bt)){this.setCustomVariable(bs,"","",bt)}},setLinkTrackingTimer:function(bs){aQ=bs},setDownloadExtensions:function(bs){ay=bs},addDownloadExtensions:function(bs){ay+="|"+bs},setDomains:function(bs){aS=l(bs)?[bs]:bs;aS.push(a9)},setIgnoreClasses:function(bs){Z=l(bs)?[bs]:bs},setRequestMethod:function(bs){aU=bs||"GET"},setReferrerUrl:function(bs){aW=bs},setCustomUrl:function(bs){aG=a8(bo,bs)},setDocumentTitle:function(bs){aw=bs},setAPIUrl:function(bs){al=bs},setDownloadClasses:function(bs){aK=l(bs)?[bs]:bs},setLinkClasses:function(bs){an=l(bs)?[bs]:bs},setCampaignNameKey:function(bs){aA=l(bs)?[bs]:bs},setCampaignKeywordKey:function(bs){av=l(bs)?[bs]:bs},discardHashTag:function(bs){ab=bs},setCookieNamePrefix:function(bs){bm=bs;Y=ai()},setCookieDomain:function(bs){ag=w(bs);aN()},setCookiePath:function(bs){bn=bs;aN()},setVisitorCookieTimeout:function(bs){ak=bs*1000
-},setSessionCookieTimeout:function(bs){am=bs*1000},setReferralCookieTimeout:function(bs){aH=bs*1000},setConversionAttributionFirstReferrer:function(bs){aF=bs},disableCookies:function(){ae=true;bf.cookie="0"},deleteCookies:function(){R()},setDoNotTrack:function(bt){var bs=e.doNotTrack||e.msDoNotTrack;bh=bt&&(bs==="yes"||bs==="1");if(bh){this.disableCookies()}},addListener:function(bt,bs){a0(bt,bs)},enableLinkTracking:function(bs){if(n){aI(bs)}else{A.push(function(){aI(bs)})}},enableJSErrorTracking:function(){if(bp){return}bp=true;var bs=C.onerror;C.onerror=function(bx,bv,bu,bw,bt){at(function(){var by="JavaScript Errors";var bz=bv+":"+bu;if(bw){bz+=":"+bw}ac(by,bz,bx)});if(bs){return bs(bx,bv,bu,bw,bt)}return false}},disablePerformanceTracking:function(){aD=false},setGenerationTimeMs:function(bs){ar=parseInt(bs,10)},setHeartBeatTimer:function(bu,bt){var bs=new Date();aa=bs.getTime()+bu*1000;ap=bt*1000},killFrame:function(){if(C.location!==C.top.location){C.top.location=C.location}},redirectFile:function(bs){if(C.location.protocol==="file:"){C.location=bs
-}},setCountPreRendered:function(bs){aC=bs},trackGoal:function(bs,bu,bt){at(function(){aO(bs,bu,bt)})},trackLink:function(bt,bs,bu){at(function(){bb(bt,bs,bu)})},trackPageView:function(bs,bt){if(x(be)){at(function(){H(U,al,be)})}else{at(function(){aJ(bs,bt)})}},trackEvent:function(bt,bv,bs,bu){at(function(){ac(bt,bv,bs,bu)})},trackSiteSearch:function(bs,bu,bt){at(function(){au(bs,bu,bt)})},setEcommerceView:function(bv,bs,bu,bt){if(!u(bu)||!bu.length){bu=""}else{if(bu instanceof Array){bu=JSON2.stringify(bu)}}aL[5]=["_pkc",bu];if(u(bt)&&String(bt).length){aL[2]=["_pkp",bt]}if((!u(bv)||!bv.length)&&(!u(bs)||!bs.length)){return}if(u(bv)&&bv.length){aL[3]=["_pks",bv]}if(!u(bs)||!bs.length){bs=""}aL[4]=["_pkn",bs]},addEcommerceItem:function(bw,bs,bu,bt,bv){if(bw.length){a2[bw]=[bw,bs,bu,bt,bv]}},trackEcommerceOrder:function(bs,bw,bv,bu,bt,bx){a6(bs,bw,bv,bu,bt,bx)},trackEcommerceCartUpdate:function(bs){bl(bs)}}}function t(){return{push:L}}O(C,"beforeunload",M,false);m();Date.prototype.getTimeAlias=Date.prototype.getTime;
-G=new z();var p={setTrackerUrl:1,setAPIUrl:1,setSiteId:1};var d;for(r=0;r<_paq.length;r++){d=_paq[r][0];if(p[d]){L(_paq[r]);delete _paq[r];if(p[d]>1){if(console!==undefined&&console&&console.error){console.error("The method "+d+' 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/api-reference/tracking-javascript#multiple-piwik-trackers')}}p[d]++}}for(r=0;r<_paq.length;r++){if(_paq[r]){L(_paq[r])}}_paq=new t();c={addPlugin:function(Q,R){a[Q]=R},getTracker:function(Q,R){return new z(Q,R)},getAsyncTracker:function(){return G}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return c})}return c}())}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()}};
+}Q=D(Q,"u");S=b(Q)}else{if(S==="cc.bingj.com"||S==="webcache.googleusercontent.com"||S.slice(0,5)==="74.6."){Q=s.links[0].href;S=b(Q)}}return[S,Q,R]}function w(R){var Q=R.length;if(R.charAt(--Q)==="."){R=R.slice(0,Q)}if(R.slice(0,2)==="*."){R=R.slice(1)}return R}function P(R){R=R&&R.text?R.text:R;if(!l(R)){var Q=s.getElementsByTagName("title");if(Q&&u(Q[0])){R=Q[0].text}}return R}function y(Q,R){if(R){return R}if(Q.slice(-9)==="piwik.php"){Q=Q.slice(0,Q.length-9)}return Q}function x(U){var Q="Piwik_Overlay";var X=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)$");var S=X.exec(s.referrer);if(S){var T=S[1];if(T!==String(U)){return false}var W=S[2],R=S[3];C.name=Q+"###"+W+"###"+R}var V=C.name.split("###");return V.length===3&&V[0]===Q}function H(R,W,T){var V=C.name.split("###"),U=V[1],Q=V[2],S=y(R,W);h(S+"plugins/Overlay/client/client.js?v=1",function(){Piwik_Overlay_Client.initialize(S,T,U,Q)})}function z(ap,aS){var W=I(s.domain,C.location.href,v()),bd=w(W[0]),bs=W[1],a0=W[2],bt=false,aW="GET",aY=aW,aK="application/x-www-form-urlencoded; charset=UTF-8",au=aK,U=ap||"",am="",aU="",bi=aS||"",aI,ay=s.title,aA="7z|aac|apk|ar[cj]|as[fx]|avi|azw3|bin|csv|deb|dmg|docx?|epub|exe|flv|gif|gz|gzip|hqx|jar|jpe?g|js|mobi|mp(2|3|4|e?g)|mov(ie)?|ms[ip]|od[bfgpst]|og[gv]|pdf|phps|png|pptx?|qtm?|ra[mr]?|rpm|sea|sit|tar|t?bz2?|tgz|torrent|txt|wav|wm[av]|wpd||xlsx?|xml|z|zip",aV=[bd],Z=[],aN=[],ao=[],aT=500,aa,aq,ab,ad,aC=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],ax=["pk_kwd","piwik_kwd","utm_term"],bq="_pk_",ag,br,ae=false,bl,aE,aH,al=63072000000,an=1800000,aJ=15768000000,aF=true,at=0,Y=false,aj,aO={},V={},bm=200,a6={},bj={},a3=false,a1=false,aZ,aP,ah,aB=N,a2,aG;
+function a8(bC,bz,by,bB,bx,bA){if(ae){return}var bw;if(by){bw=new Date();bw.setTime(bw.getTime()+by)}s.cookie=bC+"="+k(bz)+(by?";expires="+bw.toGMTString():"")+";path="+(bB||"/")+(bx?";domain="+bx:"")+(bA?";secure":"")}function ak(by){if(ae){return 0}var bw=new RegExp("(^|;)[ ]*"+by+"=([^;]*)"),bx=bw.exec(s.cookie);return bx?B(bx[2]):0}function bn(bw){var bx;if(ab){bx=new RegExp("#.*");return bw.replace(bx,"")}return bw}function bc(by,bw){var bz=j(bw),bx;if(bz){return bw}if(bw.slice(0,1)==="/"){return j(by)+"://"+b(by)+bw}by=bn(by);bx=by.indexOf("?");if(bx>=0){by=by.slice(0,bx)}bx=by.lastIndexOf("/");if(bx!==by.length-1){by=by.slice(0,bx+1)}return by+bw}function aX(bz){var bx,bw,by;for(bx=0;bx<aV.length;bx++){bw=w(aV[bx].toLowerCase());if(bz===bw){return true}if(bw.slice(0,1)==="."){if(bz===bw.slice(1)){return true}by=bz.length-bw.length;if((by>0)&&(bz.slice(by)===bw)){return true}}}return false}function bv(bw){var bx=new Image(1,1);bx.onload=function(){r=0};bx.src=U+(U.indexOf("?")<0?"?":"&")+bw
+}function a9(bw){try{var by=C.XMLHttpRequest?new C.XMLHttpRequest():C.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;by.open("POST",U,true);by.onreadystatechange=function(){if(this.readyState===4&&this.status!==200){bv(bw)}};by.setRequestHeader("Content-Type",au);by.send(bw)}catch(bx){bv(bw)}}function aD(by,bx){var bw=new Date();if(!bl){if(aY==="POST"){a9(by)}else{bv(by)}i=bw.getTime()+bx}}function a7(bw){return bq+bw+"."+bi+"."+a2}function X(){if(ae){return"0"}if(!u(e.cookieEnabled)){var bw=a7("testcookie");a8(bw,"1");return ak(bw)==="1"?"1":"0"}return e.cookieEnabled?"1":"0"}function aQ(){a2=aB((ag||bd)+(br||"/")).slice(0,4)}function ai(){var bx=a7("cvar"),bw=ak(bx);if(bw.length){bw=JSON2.parse(bw);if(E(bw)){return bw}}return{}}function T(){if(Y===false){Y=ai()}}function bh(){var bw=new Date();aZ=bw.getTime()}function af(bA,bx,bw,bz,by,bB){a8(a7("id"),bA+"."+bx+"."+bw+"."+bz+"."+by+"."+bB,al,br,ag)}function S(){var bx=new Date(),bw=Math.round(bx.getTime()/1000),bz=ak(a7("id")),by;
+if(bz){by=bz.split(".");by.unshift("0")}else{if(!aG){aG=aB((e.userAgent||"")+(e.platform||"")+JSON2.stringify(bj)+bx.getTime()+Math.random()).slice(0,16)}by=["1",aG,bw,0,bw,"",""]}return by}function R(){var bw=ak(a7("ref"));if(bw.length){try{bw=JSON2.parse(bw);if(E(bw)){return bw}}catch(bx){}}return["","",0,""]}function Q(){var bw=ae;ae=false;a8(a7("id"),"",-86400,br,ag);a8(a7("ses"),"",-86400,br,ag);a8(a7("cvar"),"",-86400,br,ag);a8(a7("ref"),"",-86400,br,ag);ae=bw}function bg(bA){if(!bA||!E(bA)){return}var bz=[];var by;for(by in bA){if(Object.prototype.hasOwnProperty.call(bA,by)){bz.push(by)}}var bB={};bz.sort();var bw=bz.length;var bx;for(bx=0;bx<bw;bx++){bB[bz[bx]]=bA[bz[bx]]}return bB}function az(by,bW,bX,bz){var bU,bx=new Date(),bG=Math.round(bx.getTime()/1000),b0,bV,bB,bM,bR,bF,bP,bC,bT,bA=1024,b2,bJ,bQ=Y,bH=a7("ses"),bI=a7("ref"),b3=a7("cvar"),bN=S(),bL=ak(bH),bS=R(),bZ=aI||bs,bD,bw;if(ae){Q()}if(bl){return""}b0=bN[0];bV=bN[1];bM=bN[2];bB=bN[3];bR=bN[4];bF=bN[5];if(!u(bN[6])){bN[6]=""
+}bP=bN[6];if(!u(bz)){bz=""}var bK=s.characterSet||s.charset;if(!bK||bK.toLowerCase()==="utf-8"){bK=null}bD=bS[0];bw=bS[1];bC=bS[2];bT=bS[3];if(!bL){var bY=an/1000;if(!bF||(bG-bF)>bY){bB++;bF=bR}if(!aH||!bD.length){for(bU in aC){if(Object.prototype.hasOwnProperty.call(aC,bU)){bD=D(bZ,aC[bU]);if(bD.length){break}}}for(bU in ax){if(Object.prototype.hasOwnProperty.call(ax,bU)){bw=D(bZ,ax[bU]);if(bw.length){break}}}}b2=b(a0);bJ=bT.length?b(bT):"";if(b2.length&&!aX(b2)&&(!aH||!bJ.length||aX(bJ))){bT=a0}if(bT.length||bD.length){bC=bG;bS=[bD,bw,bC,bn(bT.slice(0,bA))];a8(bI,JSON2.stringify(bS),aJ,br,ag)}}by+="&idsite="+bi+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+bx.getHours()+"&m="+bx.getMinutes()+"&s="+bx.getSeconds()+"&url="+k(bn(bZ))+(a0.length?"&urlref="+k(bn(a0)):"")+"&_id="+bV+"&_idts="+bM+"&_idvc="+bB+"&_idn="+b0+(bD.length?"&_rcn="+k(bD):"")+(bw.length?"&_rck="+k(bw):"")+"&_refts="+bC+"&_viewts="+bF+(String(bP).length?"&_ects="+bP:"")+(String(bT).length?"&_ref="+k(bn(bT.slice(0,bA))):"")+(bK?"&cs="+k(bK):"");
+for(bU in bj){if(Object.prototype.hasOwnProperty.call(bj,bU)){by+="&"+bU+"="+bj[bU]}}if(bW){by+="&data="+k(JSON2.stringify(bW))}else{if(ad){by+="&data="+k(JSON2.stringify(ad))}}function bE(b4,b5){var b6=JSON2.stringify(b4);if(b6.length>2){return"&"+b5+"="+k(b6)}return""}var b1=bg(aO);var bO=bg(V);by+=bE(b1,"cvar");by+=bE(bO,"e_cvar");if(Y){by+=bE(Y,"_cvar");for(bU in bQ){if(Object.prototype.hasOwnProperty.call(bQ,bU)){if(Y[bU][0]===""||Y[bU][1]===""){delete Y[bU]}}}a8(b3,JSON2.stringify(Y),an,br,ag)}if(aF){if(at){by+="&gt_ms="+at}else{if(f&&f.timing&&f.timing.requestStart&&f.timing.responseEnd){by+="&gt_ms="+(f.timing.responseEnd-f.timing.requestStart)}}}af(bV,bM,bB,bG,bF,u(bz)&&String(bz).length?bz:bP);a8(bH,"*",an,br,ag);by+=J(bX);if(aU.length){by+="&"+aU}if(o(aj)){by=aj(by)}return by}function bb(bz,by,bD,bA,bw,bG){var bB="idgoal=0",bC,bx=new Date(),bE=[],bF;if(String(bz).length){bB+="&ec_id="+k(bz);bC=Math.round(bx.getTime()/1000)}bB+="&revenue="+by;if(String(bD).length){bB+="&ec_st="+bD
+}if(String(bA).length){bB+="&ec_tx="+bA}if(String(bw).length){bB+="&ec_sh="+bw}if(String(bG).length){bB+="&ec_dt="+bG}if(a6){for(bF in a6){if(Object.prototype.hasOwnProperty.call(a6,bF)){if(!u(a6[bF][1])){a6[bF][1]=""}if(!u(a6[bF][2])){a6[bF][2]=""}if(!u(a6[bF][3])||String(a6[bF][3]).length===0){a6[bF][3]=0}if(!u(a6[bF][4])||String(a6[bF][4]).length===0){a6[bF][4]=1}bE.push(a6[bF])}}bB+="&ec_items="+k(JSON2.stringify(bE))}bB=az(bB,ad,"ecommerce",bC);aD(bB,aT)}function ba(bw,bA,bz,by,bx,bB){if(String(bw).length&&u(bA)){bb(bw,bA,bz,by,bx,bB)}}function bp(bw){if(u(bw)){bb("",bw,"","","","")}}function aM(bz,bA){var bw=new Date(),by=az("action_name="+k(P(bz||ay)),bA,"log");aD(by,aT);if(aa&&aq&&!a1){a1=true;O(s,"click",bh);O(s,"mouseup",bh);O(s,"mousedown",bh);O(s,"mousemove",bh);O(s,"mousewheel",bh);O(C,"DOMMouseScroll",bh);O(C,"scroll",bh);O(s,"keypress",bh);O(s,"keydown",bh);O(s,"keyup",bh);O(C,"resize",bh);O(C,"focus",bh);O(C,"blur",bh);aZ=bw.getTime();setTimeout(function bx(){var bB;bw=new Date();
+if((aZ+aq)>bw.getTime()){if(aa<bw.getTime()){bB=az("ping=1",bA,"ping");aD(bB,aT)}setTimeout(bx,aq)}},aq)}}function ac(by,bA,bw,bz,bB){if(String(by).length===0||String(bA).length===0){return false}var bx=az("e_c="+k(by)+"&e_a="+k(bA)+(u(bw)?"&e_n="+k(bw):"")+(u(bz)?"&e_v="+k(bz):""),bB,"event");aD(bx,aT)}function aw(bw,bz,bx,bA){var by=az("search="+k(bw)+(bz?"&search_cat="+k(bz):"")+(u(bx)?"&search_count="+bx:""),bA,"sitesearch");aD(by,aT)}function aR(bw,bz,by){var bx=az("idgoal="+bw+(bz?"&revenue="+bz:""),by,"goal");aD(bx,aT)}function bf(bx,bw,bz){var by=az(bw+"="+k(bn(bx)),bz,"link");aD(by,aT)}function bk(bx,bw){if(bx!==""){return bx+bw.charAt(0).toUpperCase()+bw.slice(1)}return bw}function av(bB){var bA,bw,bz=["","webkit","ms","moz"],by;if(!aE){for(bw=0;bw<bz.length;bw++){by=bz[bw];if(Object.prototype.hasOwnProperty.call(s,bk(by,"hidden"))){if(s[bk(by,"visibilityState")]==="prerender"){bA=true}break}}}if(bA){O(s,by+"visibilitychange",function bx(){s.removeEventListener(by+"visibilitychange",bx,false);
+bB()});return}bB()}function ar(by,bx){var bz,bw="(^| )(piwik[_-]"+bx;if(by){for(bz=0;bz<by.length;bz++){bw+="|"+by[bz]}}bw+=")( |$)";return new RegExp(bw)}function be(bz,bw,bA){var by=ar(aN,"download"),bx=ar(ao,"link"),bB=new RegExp("\\.("+aA+")([?&#]|$)","i");return bx.test(bz)?"link":(by.test(bz)||bB.test(bw)?"download":(bA?0:"link"))}function a5(bB){var bz,bx,bw;bz=bB.parentNode;while(bz!==null&&u(bz)){bx=bB.tagName.toUpperCase();if(bx==="A"||bx==="AREA"){break}bB=bz;bz=bB.parentNode}if(u(bB.href)){var bC=bB.hostname||b(bB.href),bD=bC.toLowerCase(),by=bB.href.replace(bC,bD),bA=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto):","i");if(!bA.test(by)){bw=be(bB.className,by,aX(bD));if(bw){by=g(by);bf(by,bw)}}}}function bu(bw){var bx,by;bw=bw||C.event;bx=bw.which||bw.button;by=bw.target||bw.srcElement;if(bw.type==="click"){if(by){a5(by)}}else{if(bw.type==="mousedown"){if((bx===1||bx===2)&&by){aP=bx;ah=by}else{aP=ah=null}}else{if(bw.type==="mouseup"){if(bx===aP&&by===ah){a5(by)
+}aP=ah=null}}}}function a4(bx,bw){if(bw){O(bx,"mouseup",bu,false);O(bx,"mousedown",bu,false)}else{O(bx,"click",bu,false)}}function aL(bx){if(!a3){a3=true;var by,bw=ar(Z,"ignore"),bz=s.links;if(bz){for(by=0;by<bz.length;by++){if(!bw.test(bz[by].className)){a4(bz[by],bx)}}}}}function bo(){var bx,by,bz={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",dir:"application/x-director",fla:"application/x-shockwave-flash",java:"application/x-java-vm",gears:"application/x-googlegears",ag:"application/x-silverlight"},bw=(new RegExp("Mac OS X.*Safari/")).test(e.userAgent)?C.devicePixelRatio||1:1;if(!((new RegExp("MSIE")).test(e.userAgent))){if(e.mimeTypes&&e.mimeTypes.length){for(bx in bz){if(Object.prototype.hasOwnProperty.call(bz,bx)){by=e.mimeTypes[bz[bx]];bj[bx]=(by&&by.enabledPlugin)?"1":"0"}}}if(typeof navigator.javaEnabled!=="unknown"&&u(e.javaEnabled)&&e.javaEnabled()){bj.java="1"}if(o(C.GearsFactory)){bj.gears="1"}bj.cookie=X()}bj.res=F.width*bw+"x"+F.height*bw
+}bo();aQ();return{getVisitorId:function(){return(S())[1]},getVisitorInfo:function(){return S()},getAttributionInfo:function(){return R()},getAttributionCampaignName:function(){return R()[0]},getAttributionCampaignKeyword:function(){return R()[1]},getAttributionReferrerTimestamp:function(){return R()[2]},getAttributionReferrerUrl:function(){return R()[3]},setTrackerUrl:function(bw){U=bw},setSiteId:function(bw){bi=bw},setCustomData:function(bw,bx){if(E(bw)){ad=bw}else{if(!ad){ad=[]}ad[bw]=bx}},getCustomData:function(){return ad},setCustomRequestProcessing:function(bw){aj=bw},appendToTrackingUrl:function(bw){aU=bw},getRequest:function(bw){return az(bw)},addPlugin:function(bw,bx){a[bw]=bx},setCustomVariable:function(bx,bw,bA,by){var bz;if(!u(by)){by="visit"}if(!u(bw)){return}if(!u(bA)){bA=""}if(bx>0){bw=!l(bw)?String(bw):bw;bA=!l(bA)?String(bA):bA;bz=[bw.slice(0,bm),bA.slice(0,bm)];if(by==="visit"||by===2){T();Y[bx]=bz}else{if(by==="page"||by===3){aO[bx]=bz}else{if(by==="event"){V[bx]=bz}}}}},getCustomVariable:function(bx,by){var bw;
+if(!u(by)){by="visit"}if(by==="page"||by===3){bw=aO[bx]}else{if(by==="event"){bw=V[bx]}else{if(by==="visit"||by===2){T();bw=Y[bx]}}}if(!u(bw)||(bw&&bw[0]==="")){return false}return bw},deleteCustomVariable:function(bw,bx){if(this.getCustomVariable(bw,bx)){this.setCustomVariable(bw,"","",bx)}},setLinkTrackingTimer:function(bw){aT=bw},setDownloadExtensions:function(bw){aA=bw},addDownloadExtensions:function(bw){aA+="|"+bw},setDomains:function(bw){aV=l(bw)?[bw]:bw;aV.push(bd)},setIgnoreClasses:function(bw){Z=l(bw)?[bw]:bw},setRequestMethod:function(bw){aY=bw||aW},setRequestContentType:function(bw){au=bw||aK},setReferrerUrl:function(bw){a0=bw},setCustomUrl:function(bw){aI=bc(bs,bw)},setDocumentTitle:function(bw){ay=bw},setAPIUrl:function(bw){am=bw},setDownloadClasses:function(bw){aN=l(bw)?[bw]:bw},setLinkClasses:function(bw){ao=l(bw)?[bw]:bw},setCampaignNameKey:function(bw){aC=l(bw)?[bw]:bw},setCampaignKeywordKey:function(bw){ax=l(bw)?[bw]:bw},discardHashTag:function(bw){ab=bw},setCookieNamePrefix:function(bw){bq=bw;
+Y=ai()},setCookieDomain:function(bw){ag=w(bw);aQ()},setCookiePath:function(bw){br=bw;aQ()},setVisitorCookieTimeout:function(bw){al=bw*1000},setSessionCookieTimeout:function(bw){an=bw*1000},setReferralCookieTimeout:function(bw){aJ=bw*1000},setConversionAttributionFirstReferrer:function(bw){aH=bw},disableCookies:function(){ae=true;bj.cookie="0"},deleteCookies:function(){Q()},setDoNotTrack:function(bx){var bw=e.doNotTrack||e.msDoNotTrack;bl=bx&&(bw==="yes"||bw==="1");if(bl){this.disableCookies()}},addListener:function(bx,bw){a4(bx,bw)},enableLinkTracking:function(bw){if(n){aL(bw)}else{A.push(function(){aL(bw)})}},enableJSErrorTracking:function(){if(bt){return}bt=true;var bw=C.onerror;C.onerror=function(bB,bz,by,bA,bx){av(function(){var bC="JavaScript Errors";var bD=bz+":"+by;if(bA){bD+=":"+bA}ac(bC,bD,bB)});if(bw){return bw(bB,bz,by,bA,bx)}return false}},disablePerformanceTracking:function(){aF=false},setGenerationTimeMs:function(bw){at=parseInt(bw,10)},setHeartBeatTimer:function(by,bx){var bw=new Date();
+aa=bw.getTime()+by*1000;aq=bx*1000},killFrame:function(){if(C.location!==C.top.location){C.top.location=C.location}},redirectFile:function(bw){if(C.location.protocol==="file:"){C.location=bw}},setCountPreRendered:function(bw){aE=bw},trackGoal:function(bw,by,bx){av(function(){aR(bw,by,bx)})},trackLink:function(bx,bw,by){av(function(){bf(bx,bw,by)})},trackPageView:function(bw,bx){if(x(bi)){av(function(){H(U,am,bi)})}else{av(function(){aM(bw,bx)})}},trackEvent:function(bx,bz,bw,by){av(function(){ac(bx,bz,bw,by)})},trackSiteSearch:function(bw,by,bx){av(function(){aw(bw,by,bx)})},setEcommerceView:function(bz,bw,by,bx){if(!u(by)||!by.length){by=""}else{if(by instanceof Array){by=JSON2.stringify(by)}}aO[5]=["_pkc",by];if(u(bx)&&String(bx).length){aO[2]=["_pkp",bx]}if((!u(bz)||!bz.length)&&(!u(bw)||!bw.length)){return}if(u(bz)&&bz.length){aO[3]=["_pks",bz]}if(!u(bw)||!bw.length){bw=""}aO[4]=["_pkn",bw]},addEcommerceItem:function(bA,bw,by,bx,bz){if(bA.length){a6[bA]=[bA,bw,by,bx,bz]}},trackEcommerceOrder:function(bw,bA,bz,by,bx,bB){ba(bw,bA,bz,by,bx,bB)
+},trackEcommerceCartUpdate:function(bw){bp(bw)}}}function t(){return{push:L}}O(C,"beforeunload",M,false);m();Date.prototype.getTimeAlias=Date.prototype.getTime;G=new z();var p={setTrackerUrl:1,setAPIUrl:1,setSiteId:1};var d;for(r=0;r<_paq.length;r++){d=_paq[r][0];if(p[d]){L(_paq[r]);delete _paq[r];if(p[d]>1){if(console!==undefined&&console&&console.error){console.error("The method "+d+' 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/api-reference/tracking-javascript#multiple-piwik-trackers')}}p[d]++}}for(r=0;r<_paq.length;r++){if(_paq[r]){L(_paq[r])}}_paq=new t();c={addPlugin:function(Q,R){a[Q]=R},getTracker:function(Q,R){return new z(Q,R)},getAsyncTracker:function(){return G}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return c})}return c}())}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 */
}; \ No newline at end of file
diff --git a/plugins/API/API.php b/plugins/API/API.php
index 9b2e24b7d7..7e4f7eb62d 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -16,13 +16,12 @@ use Piwik\DataTable;
use Piwik\DataTable\Filter\ColumnDelete;
use Piwik\DataTable\Row;
use Piwik\Date;
+use Piwik\IP;
use Piwik\Metrics;
use Piwik\Period;
use Piwik\Period\Range;
use Piwik\Piwik;
-use Piwik\Plugin\Dimension\ActionDimension;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Dimension\ConversionDimension;
use Piwik\Plugins\CoreAdminHome\CustomLogo;
use Piwik\Translate;
use Piwik\Version;
@@ -61,6 +60,18 @@ class API extends \Piwik\Plugin\API
}
/**
+ * Returns the most accurate IP address availble for the current user, in
+ * IPv4 format. This could be the proxy client's IP address.
+ *
+ * @return string IP address in presentation format.
+ */
+ public function getIpFromHeader()
+ {
+ Piwik::checkUserHasSomeViewAccess();
+ return IP::getIpFromHeader();
+ }
+
+ /**
* Returns the section [APISettings] if defined in config.ini.php
* @return array
*/
diff --git a/plugins/API/Menu.php b/plugins/API/Menu.php
index 25df939d35..330fdd2519 100644
--- a/plugins/API/Menu.php
+++ b/plugins/API/Menu.php
@@ -39,7 +39,7 @@ class Menu extends \Piwik\Plugin\Menu
}
if (!class_exists("DeviceDetector\\DeviceDetector")) {
- throw new \Exception("DeviceDetector could not be found, maybe you are using Piwik from git and need to have update Composer. <br>php composer.phar update");
+ throw new \Exception("DeviceDetector could not be found, maybe you are using Piwik from git and need to update Composer. Execute this command: php composer.phar update");
}
$ua = new OperatingSystem($_SERVER['HTTP_USER_AGENT']);
diff --git a/plugins/CoreAdminHome/API.php b/plugins/CoreAdminHome/API.php
index afd4b1b81e..d651c8f1ca 100644
--- a/plugins/CoreAdminHome/API.php
+++ b/plugins/CoreAdminHome/API.php
@@ -133,6 +133,10 @@ class API extends \Piwik\Plugin\API
}
}
+ if(empty($minDate)) {
+ throw new Exception("Check the 'dates' parameter is a valid date.");
+ }
+
// In each table, invalidate day/week/month/year containing this date
$archiveTables = ArchiveTableCreator::getTablesArchivesInstalled();
foreach ($archiveTables as $table) {
@@ -204,4 +208,15 @@ class API extends \Piwik\Plugin\API
return array();
}
+ /**
+ * Return true if plugin is activated, false otherwise
+ *
+ * @param string $pluginName
+ * @return bool
+ */
+ public function isPluginActivated($pluginName)
+ {
+ Piwik::checkUserHasSomeViewAccess();
+ return \Piwik\Plugin\Manager::getInstance()->isPluginActivated($pluginName);
+ }
}
diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php
index 85486b52ed..e50451fd84 100644
--- a/plugins/CoreAdminHome/Controller.php
+++ b/plugins/CoreAdminHome/Controller.php
@@ -53,12 +53,13 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$view->trustedHosts = Url::getTrustedHostsFromConfig();
$logo = new CustomLogo();
- $view->branding = array('use_custom_logo' => $logo->isEnabled());
- $view->logosWriteable = $logo->isCustomLogoWritable();
- $view->pathUserLogo = CustomLogo::getPathUserLogo();
- $view->pathUserFavicon = CustomLogo::getPathUserFavicon();
- $view->pathUserLogoSmall = CustomLogo::getPathUserLogoSmall();
- $view->pathUserLogoSVG = CustomLogo::getPathUserSvgLogo();
+ $view->branding = array('use_custom_logo' => $logo->isEnabled());
+ $view->fileUploadEnabled = $logo->isFileUploadEnabled();
+ $view->logosWriteable = $logo->isCustomLogoWritable();
+ $view->pathUserLogo = CustomLogo::getPathUserLogo();
+ $view->pathUserFavicon = CustomLogo::getPathUserFavicon();
+ $view->pathUserLogoSmall = CustomLogo::getPathUserLogoSmall();
+ $view->pathUserLogoSVG = CustomLogo::getPathUserSvgLogo();
$view->pathUserLogoDirectory = realpath(dirname($view->pathUserLogo) . '/');
}
diff --git a/plugins/CoreAdminHome/CustomLogo.php b/plugins/CoreAdminHome/CustomLogo.php
index 413141136b..fe7e78ac6e 100644
--- a/plugins/CoreAdminHome/CustomLogo.php
+++ b/plugins/CoreAdminHome/CustomLogo.php
@@ -78,6 +78,14 @@ class CustomLogo
/**
* @return bool
*/
+ public function isFileUploadEnabled()
+ {
+ return ini_get('file_uploads') == 1;
+ }
+
+ /**
+ * @return bool
+ */
public function isCustomLogoWritable()
{
if(Config::getInstance()->General['enable_custom_logo_check'] == 0) {
@@ -95,8 +103,7 @@ class CustomLogo
&& is_writeable(PIWIK_DOCUMENT_ROOT . '/' . $this->getPathUserSvgLogo())
&& is_writeable(PIWIK_DOCUMENT_ROOT . '/' . $this->getPathUserLogoSmall());;
- $serverUploadEnabled = ini_get('file_uploads') == 1;
- $isCustomLogoWritable = ($logoFilesWriteable || $directoryWritable) && $serverUploadEnabled;
+ $isCustomLogoWritable = ($logoFilesWriteable || $directoryWritable) && $this->isFileUploadEnabled();
return $isCustomLogoWritable;
}
diff --git a/plugins/CoreAdminHome/Tasks.php b/plugins/CoreAdminHome/Tasks.php
index f32cbe5a32..649579dc10 100644
--- a/plugins/CoreAdminHome/Tasks.php
+++ b/plugins/CoreAdminHome/Tasks.php
@@ -8,6 +8,7 @@
*/
namespace Piwik\Plugins\CoreAdminHome;
+use Piwik\DataAccess\ArchivePurger;
use Piwik\DataAccess\ArchiveSelector;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
@@ -33,7 +34,7 @@ class Tasks extends \Piwik\Plugin\Tasks
// Somehow we may have archive tables created with older dates, prevent exception from being thrown
if($year > 1990) {
- ArchiveSelector::purgeOutdatedArchives(Date::factory("$year-$month-15"));
+ ArchivePurger::purgeOutdatedArchives(Date::factory("$year-$month-15"));
}
}
}
diff --git a/plugins/CoreAdminHome/templates/generalSettings.twig b/plugins/CoreAdminHome/templates/generalSettings.twig
index 78b2f87f7a..8edbb14cf4 100644
--- a/plugins/CoreAdminHome/templates/generalSettings.twig
+++ b/plugins/CoreAdminHome/templates/generalSettings.twig
@@ -235,41 +235,56 @@
<div id='logoSettings'>
<form id="logoUploadForm" method="post" enctype="multipart/form-data" action="index.php?module=CoreAdminHome&format=json&action=uploadCustomLogo">
<table class="adminTable" style='width:550px;'>
- {% if logosWriteable %}
- <tr>
- <td>
- <label for="customLogo">{{ 'CoreAdminHome_LogoUpload'|translate }}:<br/>
- <span class="form-description">{{ 'CoreAdminHome_LogoUploadHelp'|translate("JPG / PNG / GIF", 110) }}</span>
- </label>
- </td>
- <td style="width:200px;">
- <input name="customLogo" type="file" id="customLogo"/>
- <img src="{{ pathUserLogo }}?r={{ random() }}" id="currentLogo" height="150"/>
- </td>
- </tr>
- <tr>
- <td>
- <label for="customLogo">{{ 'CoreAdminHome_FaviconUpload'|translate }}:<br/>
- <span class="form-description">{{ 'CoreAdminHome_LogoUploadHelp'|translate("JPG / PNG / GIF", 16) }}</span>
- </label>
- </td>
- <td style="width:200px;">
- <input name="customFavicon" type="file" id="customFavicon"/>
- <img src="{{ pathUserFavicon }}?r={{ random() }}" id="currentFavicon" width="16" height="16"/>
- </td>
- </tr>
+ {% if fileUploadEnabled %}
+ {% if logosWriteable %}
+ <tr>
+ <td>
+ <label for="customLogo">{{ 'CoreAdminHome_LogoUpload'|translate }}:<br/>
+ <span class="form-description">{{ 'CoreAdminHome_LogoUploadHelp'|translate("JPG / PNG / GIF", 110) }}</span>
+ </label>
+ </td>
+ <td style="width:200px;">
+ <input name="customLogo" type="file" id="customLogo"/>
+ <img src="{{ pathUserLogo }}?r={{ random() }}" id="currentLogo" height="150"/>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <label for="customLogo">{{ 'CoreAdminHome_FaviconUpload'|translate }}:<br/>
+ <span class="form-description">{{ 'CoreAdminHome_LogoUploadHelp'|translate("JPG / PNG / GIF", 16) }}</span>
+ </label>
+ </td>
+ <td style="width:200px;">
+ <input name="customFavicon" type="file" id="customFavicon"/>
+ <img src="{{ pathUserFavicon }}?r={{ random() }}" id="currentFavicon" width="16" height="16"/>
+ </td>
+ </tr>
+ {% else %}
+ <tr>
+ <td>
+ <div style="display:inline-block;margin-top:10px;" id="CoreAdminHome_LogoNotWriteable">
+ {{ 'CoreAdminHome_LogoNotWriteableInstruction'
+ |translate("<strong>"~pathUserLogoDirectory~"</strong><br/>", pathUserLogo ~", "~ pathUserLogoSmall ~", "~ pathUserLogoSVG ~"")
+ |notification({'placeAt': '#CoreAdminHome_LogoNotWriteable', 'noclear': true, 'context': 'warning', 'raw': true}) }}
+
+
+ </div>
+ </td>
+ </tr>
+ {% endif %}
{% else %}
<tr>
<td>
- <div style="display:inline-block;margin-top:10px;" id="CoreAdminHome_LogoNotWriteable">
- {{ 'CoreAdminHome_LogoNotWriteableInstruction'
- |translate("<strong>"~pathUserLogoDirectory~"</strong><br/>", pathUserLogo ~", "~ pathUserLogoSmall ~", "~ pathUserLogoSVG ~"")
- |notification({'placeAt': '#CoreAdminHome_LogoNotWriteable', 'noclear': true, 'context': 'warning', 'raw': true}) }}
+ <div style="display:inline-block;margin-top:10px;" id="CoreAdminHome_FileUploadDisabled">
+ {{ 'CoreAdminHome_FileUploadDisabled'
+ |translate("file_uploads=1")
+ |notification({'placeAt': '#CoreAdminHome_FileUploadDisabled', 'noclear': true, 'context': 'warning', 'raw': true}) }}
</div>
</td>
</tr>
+
{% endif %}
</table>
</form>
diff --git a/plugins/CoreConsole/Commands/CoreArchiver.php b/plugins/CoreConsole/Commands/CoreArchiver.php
index 71c5d0cfb4..570b1dc74d 100644
--- a/plugins/CoreConsole/Commands/CoreArchiver.php
+++ b/plugins/CoreConsole/Commands/CoreArchiver.php
@@ -9,6 +9,7 @@ namespace Piwik\Plugins\CoreConsole\Commands;
use Piwik\Common;
use Piwik\CronArchive;
+use Piwik\Log;
use Piwik\Plugin\ConsoleCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
@@ -34,6 +35,10 @@ class CoreArchiver extends ConsoleCommand
throw new \InvalidArgumentException('No valid URL given. If you have specified a valid URL try --piwik-domain instead of --url');
}
+ if($input->getOption('verbose')) {
+ Log::getInstance()->setLogLevel(Log::VERBOSE);
+ }
+
include PIWIK_INCLUDE_PATH . '/misc/cron/archive.php';
}
@@ -43,21 +48,24 @@ class CoreArchiver extends ConsoleCommand
$command->setName('core:archive');
$command->setDescription("Runs the CLI archiver. It is an important tool for general maintenance and to keep Piwik very fast.");
$command->setHelp("* It is recommended to run the script with the option --url=[piwik-server-url] only. Other options are not required.
- Try --piwik-domain if --url does not work for you
+ Try --piwik-domain if --url does not work for you.
* This script should be executed every hour via crontab, or as a daemon.
* You can also run it via http:// by specifying the Super User &token_auth=XYZ as a parameter ('Web Cron'),
but it is recommended to run it via command line/CLI instead.
-* If you have any suggestion about this script, please let the team know at hello@piwik.org
+* If you have any suggestion about this script, please let the team know at feedback@piwik.org
* Enjoy!");
$command->addOption('url', null, InputOption::VALUE_REQUIRED, "Mandatory option as an alternative to '--piwik-domain'. Must be set to the Piwik base URL.\nFor example: --url=http://analytics.example.org/ or --url=https://example.org/piwik/");
$command->addOption('force-all-websites', null, InputOption::VALUE_NONE, "If specified, the script will trigger archiving on all websites.\nUse with --force-all-periods=[seconds] to also process those websites\nthat had visits in the last [seconds] seconds.");
$command->addOption('force-all-periods', null, InputOption::VALUE_OPTIONAL, "Limits archiving to websites with some traffic in the last [seconds] seconds. \nFor example --force-all-periods=86400 will archive websites that had visits in the last 24 hours. \nIf [seconds] is not specified, all websites with visits in the last " . CronArchive::ARCHIVE_SITES_WITH_TRAFFIC_SINCE . "\n seconds (" . round(CronArchive::ARCHIVE_SITES_WITH_TRAFFIC_SINCE / 86400) . " days) will be archived.");
$command->addOption('force-timeout-for-periods', null, InputOption::VALUE_OPTIONAL, "The current week/ current month/ current year will be processed at most every [seconds].\nIf not specified, defaults to " . CronArchive::SECONDS_DELAY_BETWEEN_PERIOD_ARCHIVES . ".");
- $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-idsites', null, InputOption::VALUE_OPTIONAL, 'If specified, archiving will be processed only for these Sites Ids (comma separated)');
$command->addOption('skip-idsites', null, InputOption::VALUE_OPTIONAL, 'If specified, archiving will be skipped for these websites (in case these website ids would have been archived).');
+ $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)");
+ $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, "If specified, archiving will be processed only for periods included in this date range. Format: YYYY-MM-DD,YYYY-MM-DD");
+ $command->addOption('concurrent-requests-per-website', null, InputOption::VALUE_OPTIONAL, "When processing a website and its segments, number of requests to process in parallel", CronArchive::MAX_CONCURRENT_API_REQUESTS);
$command->addOption('disable-scheduled-tasks', null, InputOption::VALUE_NONE, "Skips executing Scheduled tasks (sending scheduled reports, db optimization, etc.).");
- $command->addOption('xhprof', null, InputOption::VALUE_NONE, "Enables XHProf profiler for this archive.php run. Requires XHPRof (see tests/README.xhprof.md).");
$command->addOption('accept-invalid-ssl-certificate', null, InputOption::VALUE_NONE, "It is _NOT_ recommended to use this argument. Instead, you should use a valid SSL certificate!\nIt can be useful if you specified --url=https://... or if you are using Piwik with force_ssl=1");
+ $command->addOption('xhprof', null, InputOption::VALUE_NONE, "Enables XHProf profiler for this archive.php run. Requires XHPRof (see tests/README.xhprof.md).");
}
} \ No newline at end of file
diff --git a/plugins/CoreConsole/Commands/DevelopmentSyncUITestScreenshots.php b/plugins/CoreConsole/Commands/DevelopmentSyncUITestScreenshots.php
index 4caa7ceea4..593faf0f17 100644
--- a/plugins/CoreConsole/Commands/DevelopmentSyncUITestScreenshots.php
+++ b/plugins/CoreConsole/Commands/DevelopmentSyncUITestScreenshots.php
@@ -78,5 +78,31 @@ class DevelopmentSyncUITestScreenshots extends ConsoleCommand
PIWIK_DOCUMENT_ROOT . "/" . $downloadTo);
}
}
+
+ $this->displayGitInstructions($output);
+
+ }
+
+ /**
+ * @param OutputInterface $output
+ */
+ protected function displayGitInstructions(OutputInterface $output)
+ {
+ $output->writeln('');
+ $output->writeln('--------------');
+ $output->writeln('');
+ $output->writeln("If all downloaded screenshots are valid you may push them with these commands:");
+ $output->writeln('');
+ $commands = "cd tests/PHPUnit/UI/
+git add expected-ui-screenshots/
+git pull
+git commit -m'' # WRITE A COMMIT MESSAGE
+git push
+cd ..
+git add UI
+git commit -m'' #WRITE A COMMIT MESSAGE
+git pull
+git push";
+ $output->writeln($commands);
}
}
diff --git a/plugins/CoreConsole/Commands/TestsSetupFixture.php b/plugins/CoreConsole/Commands/TestsSetupFixture.php
index 5aaa7c83da..c04d057217 100644
--- a/plugins/CoreConsole/Commands/TestsSetupFixture.php
+++ b/plugins/CoreConsole/Commands/TestsSetupFixture.php
@@ -53,6 +53,8 @@ class TestsSetupFixture extends ConsoleCommand
"Used by UI tests. Creates symlinks to root directory in tests/PHPUnit/proxy.");
$this->addOption('server-global', null, InputOption::VALUE_REQUIRED,
"Used by UI tests. Sets the \$_SERVER global variable from a JSON string.");
+ $this->addOption('plugins', null, InputOption::VALUE_REQUIRED,
+ "Used by UI tests. Comma separated list of plugin names to activate and install when setting up a fixture.");
}
protected function execute(InputInterface $input, OutputInterface $output)
@@ -108,6 +110,11 @@ class TestsSetupFixture extends ConsoleCommand
$fixture->resetPersistedFixture = true;
}
+ $extraPluginsToLoad = $input->getOption('plugins');
+ if ($extraPluginsToLoad) {
+ $fixture->extraPluginsToLoad = explode(',', $extraPluginsToLoad);
+ }
+
if($fixture->createConfig) {
Config::getInstance()->setTestEnvironment();
}
diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php
index cd4741f83e..18ad9f68c2 100644
--- a/plugins/CoreHome/CoreHome.php
+++ b/plugins/CoreHome/CoreHome.php
@@ -99,6 +99,7 @@ class CoreHome extends \Piwik\Plugin
$jsFiles[] = "plugins/CoreHome/angularjs/common/filters/evolution.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/filters/length.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/filters/trim.js";
+ $jsFiles[] = "plugins/CoreHome/angularjs/common/filters/pretty-url.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/directive.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/autocomplete-matched.js";
@@ -196,5 +197,16 @@ class CoreHome extends \Piwik\Plugin
$translationKeys[] = 'General_Search';
$translationKeys[] = 'General_MoreDetails';
$translationKeys[] = 'General_Help';
+ $translationKeys[] = 'General_MoreDetails';
+ $translationKeys[] = 'General_Help';
+ $translationKeys[] = 'General_Id';
+ $translationKeys[] = 'General_Name';
+ $translationKeys[] = 'General_JsTrackingTag';
+ $translationKeys[] = 'General_Yes';
+ $translationKeys[] = 'General_No';
+ $translationKeys[] = 'General_Edit';
+ $translationKeys[] = 'General_Delete';
+ $translationKeys[] = 'General_Default';
+ $translationKeys[] = 'General_LoadingData';
}
}
diff --git a/plugins/CoreHome/angularjs/common/directives/dialog.js b/plugins/CoreHome/angularjs/common/directives/dialog.js
index 86762db83f..71157aeb71 100644
--- a/plugins/CoreHome/angularjs/common/directives/dialog.js
+++ b/plugins/CoreHome/angularjs/common/directives/dialog.js
@@ -15,7 +15,7 @@
* </div>
* Will execute the "executeMyFunction" function in the current scope once the yes button is pressed.
*/
-angular.module('piwikApp.directive').directive('piwikDialog', function(piwik) {
+angular.module('piwikApp.directive').directive('piwikDialog', function(piwik, $parse) {
return {
restrict: 'A',
@@ -24,7 +24,7 @@ angular.module('piwikApp.directive').directive('piwikDialog', function(piwik) {
element.css('display', 'none');
element.on( "dialogclose", function() {
- scope.$eval(attrs.piwikDialog+'=false');
+ scope.$apply($parse(attrs.piwikDialog).assign(scope, false));
});
scope.$watch(attrs.piwikDialog, function(newValue, oldValue) {
diff --git a/plugins/CoreHome/angularjs/common/filters/pretty-url.js b/plugins/CoreHome/angularjs/common/filters/pretty-url.js
new file mode 100644
index 0000000000..f46a64bfaf
--- /dev/null
+++ b/plugins/CoreHome/angularjs/common/filters/pretty-url.js
@@ -0,0 +1,12 @@
+/*!
+ * Piwik - Web Analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+angular.module('piwikApp.filter').filter('prettyUrl', function() {
+ return function(input) {
+ return input.trim().replace('http://', '');
+ };
+});
diff --git a/plugins/CoreHome/angularjs/common/services/piwik-api.js b/plugins/CoreHome/angularjs/common/services/piwik-api.js
index 31a7c60085..18a635306e 100644
--- a/plugins/CoreHome/angularjs/common/services/piwik-api.js
+++ b/plugins/CoreHome/angularjs/common/services/piwik-api.js
@@ -162,7 +162,7 @@ angular.module('piwikApp.service').factory('piwikApi', function ($http, $q, $roo
*/
piwikApi.fetch = function (getParams) {
- getParams.module = 'API';
+ getParams.module = getParams.module || 'API';
getParams.format = 'JSON';
addParams(getParams, 'GET');
diff --git a/plugins/CoreHome/angularjs/http404check.js b/plugins/CoreHome/angularjs/http404check.js
index 472b0861ff..0748fa42c6 100644
--- a/plugins/CoreHome/angularjs/http404check.js
+++ b/plugins/CoreHome/angularjs/http404check.js
@@ -12,12 +12,12 @@ angular.module('piwikApp').factory('http404CheckInterceptor', function($q) {
return {
'responseError': function(rejection) {
- if (rejection
- && isClientError(rejection)
- && rejection.config
- && rejection.config.url
- && -1 !== rejection.config.url.indexOf('.html')
- && -1 !== rejection.config.url.indexOf('plugins')) {
+ if (rejection &&
+ isClientError(rejection) &&
+ rejection.config &&
+ rejection.config.url &&
+ -1 !== rejection.config.url.indexOf('.html') &&
+ -1 !== rejection.config.url.indexOf('plugins')) {
var posEndUrl = rejection.config.url.indexOf('.html') + 5;
var url = rejection.config.url.substr(0, posEndUrl);
@@ -41,4 +41,4 @@ angular.module('piwikApp').factory('http404CheckInterceptor', function($q) {
angular.module('piwikApp').config(['$httpProvider',function($httpProvider) {
$httpProvider.interceptors.push('http404CheckInterceptor');
-}]); \ No newline at end of file
+}]);
diff --git a/plugins/CoreHome/javascripts/calendar.js b/plugins/CoreHome/javascripts/calendar.js
index cf886ee6bd..e96e67374c 100644
--- a/plugins/CoreHome/javascripts/calendar.js
+++ b/plugins/CoreHome/javascripts/calendar.js
@@ -354,10 +354,6 @@
}
});
- // Hack to get around firefox bug. When double clicking a label in firefox, the 'click'
- // event of its associated input will not be fired twice. We want to change the period
- // if clicking the select period's label OR input, so we catch the click event on the
- // label & the input.
var reloading = false;
var changePeriodOnClick = function (periodInput) {
if (reloading) // if a click event resulted in reloading, don't reload again
@@ -382,7 +378,7 @@
return false;
};
- $("#otherPeriods").find("label").on('click', function (e) {
+ $("#otherPeriods").find("label,input").on('dblclick', function (e) {
var id = $(e.target).attr('for');
changePeriodOnClick($('#' + id));
});
diff --git a/plugins/CoreHome/javascripts/corehome.js b/plugins/CoreHome/javascripts/corehome.js
index e9b443af20..0dbfd48cb1 100755
--- a/plugins/CoreHome/javascripts/corehome.js
+++ b/plugins/CoreHome/javascripts/corehome.js
@@ -149,7 +149,7 @@
}
loading.hide();
- report.html($(response)).css('display', 'inline-block');
+ report.css('display', 'inline-block').html($(response));
// scroll to report
piwikHelper.lazyScrollTo(report, 400);
diff --git a/plugins/CoreHome/javascripts/dataTable_rowactions.js b/plugins/CoreHome/javascripts/dataTable_rowactions.js
index 37b6d31ec2..b5e7140b8e 100644
--- a/plugins/CoreHome/javascripts/dataTable_rowactions.js
+++ b/plugins/CoreHome/javascripts/dataTable_rowactions.js
@@ -161,11 +161,10 @@ DataTable_RowAction.prototype.initTr = function (tr) {
DataTable_RowAction.prototype.trigger = function (tr, e, subTableLabel) {
var label = this.getLabelFromTr(tr);
- label = label.trim();
// if we have received the event from the sub table, add the label
if (subTableLabel) {
var separator = ' > '; // LabelFilter::SEPARATOR_RECURSIVE_LABEL
- label += separator + subTableLabel.trim();
+ label += separator + subTableLabel;
}
// handle sub tables in nested reports: forward to parent
@@ -214,8 +213,16 @@ DataTable_RowAction.prototype.getLabelFromTr = function (tr) {
value = label.text();
}
value = value.trim();
+ value = encodeURIComponent(value);
- return encodeURIComponent(value);
+ // if tr is a terminal node, we add a '%20' to signfy this. Piwik will notice this and make sure to
+ // look for a terminal, even if there's a sibling branch node w/ the same label. this is a workaround
+ // for #4363.
+ if (!tr.hasClass('subDataTable')) {
+ value = value + '%20';
+ }
+
+ return value;
};
/**
diff --git a/plugins/CoreHome/templates/_dataTableCell.twig b/plugins/CoreHome/templates/_dataTableCell.twig
index cff58d705e..0b040fe86b 100644
--- a/plugins/CoreHome/templates/_dataTableCell.twig
+++ b/plugins/CoreHome/templates/_dataTableCell.twig
@@ -2,7 +2,7 @@
{% set tooltipIndex = column ~ '_tooltip' %}
{% if row.getMetadata(tooltipIndex) %}<span class="cell-tooltip" data-tooltip="{{ row.getMetadata(tooltipIndex) }}">{% endif %}
{% if not row.getIdSubDataTable() and column=='label' and row.getMetadata('url') %}
- <a target="_blank" href='{% if row.getMetadata('url')|slice(0,4) not in ['http','ftp:'] %}http://{% endif %}{{ row.getMetadata('url')|raw }}'>
+ <a target="_blank" href='{% if row.getMetadata('url')|slice(0,4) not in ['http','ftp:'] %}http://{% endif %}{{ row.getMetadata('url')|rawSafeDecoded }}'>
{% if not row.getMetadata('logo') %}
<img class="link" width="10" height="9" src="plugins/Morpheus/images/link.gif"/>
{% endif %}
diff --git a/plugins/CoreUpdater/Controller.php b/plugins/CoreUpdater/Controller.php
index d586c50a51..c2977088aa 100644
--- a/plugins/CoreUpdater/Controller.php
+++ b/plugins/CoreUpdater/Controller.php
@@ -163,7 +163,7 @@ class Controller extends \Piwik\Plugin\Controller
}
if (function_exists('opcache_reset')) {
- opcache_reset(); // reset the opcode cache (php 5.5.0+)
+ @opcache_reset(); // reset the opcode cache (php 5.5.0+)
}
}
diff --git a/plugins/CoreVisualizations/JqplotDataGenerator.php b/plugins/CoreVisualizations/JqplotDataGenerator.php
index 53771355b5..fc7cdde8a6 100644
--- a/plugins/CoreVisualizations/JqplotDataGenerator.php
+++ b/plugins/CoreVisualizations/JqplotDataGenerator.php
@@ -138,7 +138,10 @@ class JqplotDataGenerator
// the bar charts contain the labels a first series
// this series has to be removed from the units
- if ($this->graphType == 'bar') {
+ reset($units);
+ if ($this->graphType == 'bar'
+ && key($units) == 'label'
+ ) {
array_shift($units);
}
diff --git a/plugins/CoreVisualizations/javascripts/jqplot.js b/plugins/CoreVisualizations/javascripts/jqplot.js
index 15d2889e6c..66cef5a96e 100644
--- a/plugins/CoreVisualizations/javascripts/jqplot.js
+++ b/plugins/CoreVisualizations/javascripts/jqplot.js
@@ -633,7 +633,7 @@ RowEvolutionSeriesToggle.prototype.attachEvents = function () {
this.seriesPickers.each(function (i) {
var el = $(this);
- el.click(function (e) {
+ el.off('click').on('click', function (e) {
if (e.shiftKey) {
self.toggleSeries(i);
diff --git a/plugins/DBStats/lang/cs.json b/plugins/DBStats/lang/cs.json
index 9be5ed7444..a74efdea5c 100644
--- a/plugins/DBStats/lang/cs.json
+++ b/plugins/DBStats/lang/cs.json
@@ -15,6 +15,7 @@
"ReportTables": "Hlášení tabulek",
"RowCount": "PoÄet řádků",
"Table": "Tabulka",
- "TotalSize": "Celková velikost"
+ "TotalSize": "Celková velikost",
+ "TrackerTables": "Sledovací tabulky"
}
} \ No newline at end of file
diff --git a/plugins/DBStats/lang/tr.json b/plugins/DBStats/lang/tr.json
index 65d80dd984..fb95054e05 100644
--- a/plugins/DBStats/lang/tr.json
+++ b/plugins/DBStats/lang/tr.json
@@ -5,12 +5,17 @@
"DBSize": "Veritabanı boyutu",
"EstimatedSize": "Tahmin edilen boyut",
"IndexSize": "Dizin boyutu",
+ "LearnMore": "Piwik'in verileri nasıl işlediğini ve orta ve yüksek trafiğe sahip sitelerde nasıl iyi çalıştığını öğrenmek için şu dokümana bakın: %s.",
"MainDescription": "Piwik tüm web istatistiklerinizi MySQL veritabanında saklar. Piwik tabloları %s kullanıyor.",
+ "MetricDataByYear": "Yıla Göre Metrik Tablosu",
+ "MetricTables": "Metrik Tabloları",
"OtherTables": "DiÄŸer Tablolar",
"PluginDescription": "Bu eklenti Piwik tabloları ile MySQL veritabanı kullanım raporu.",
+ "ReportDataByYear": "Yıla Göre Rapor Tabloları",
"ReportTables": "Rapor Tabloları",
"RowCount": "Satır sayısı",
"Table": "Tablo",
- "TotalSize": "Toplam boyut"
+ "TotalSize": "Toplam boyut",
+ "TrackerTables": "İzleyici Tabloları"
}
} \ No newline at end of file
diff --git a/plugins/DBStats/tests/Mocks/MockDataAccess.php b/plugins/DBStats/tests/Mocks/MockDataAccess.php
index 2e52870799..a3b32cefdd 100644
--- a/plugins/DBStats/tests/Mocks/MockDataAccess.php
+++ b/plugins/DBStats/tests/Mocks/MockDataAccess.php
@@ -28,7 +28,8 @@ class MockDataAccess
'option' => array(200, 16000, 8192),
'session' => array(0, 8192, 8192),
'archive_numeric' => array(8000, 16000, 16000),
- 'archive_blob' => array(8000, 128000, 1024)
+ 'archive_blob' => array(8000, 128000, 1024),
+ 'segment' => array(3, 4048, 8192),
);
public static $numericRowCountsByArchiveName = array(
@@ -119,9 +120,9 @@ class MockDataAccess
public function getTableNameKey($tableName)
{
$result = Common::unprefixTable($tableName);
- if (strpos($tableName, "archive_numeric")) {
+ if (strpos($tableName, "archive_numeric") !== false) {
$result = "archive_numeric";
- } else if (strpos($tableName, "archive_blob")) {
+ } else if (strpos($tableName, "archive_blob") !== false) {
$result = "archive_blob";
}
return $result;
@@ -129,7 +130,7 @@ class MockDataAccess
public function getRowCountsByArchiveName($tableName, $extraCols)
{
- if (strpos($tableName, "achive_numeric")) {
+ if (strpos($tableName, "achive_numeric") !== false) {
return self::$numericRowCountsByArchiveName;
} else {
return self::$blobRowCountsByArchiveName;
diff --git a/plugins/Dashboard/Controller.php b/plugins/Dashboard/Controller.php
index a0530b6782..f1f6e3a3bd 100644
--- a/plugins/Dashboard/Controller.php
+++ b/plugins/Dashboard/Controller.php
@@ -14,6 +14,7 @@ use Piwik\Piwik;
use Piwik\Session\SessionNamespace;
use Piwik\View;
use Piwik\WidgetsList;
+use Piwik\FrontController;
/**
* Dashboard Controller
@@ -42,7 +43,10 @@ class Controller extends \Piwik\Plugin\Controller
$view->availableLayouts = $this->getAvailableLayouts();
$view->dashboardId = Common::getRequestVar('idDashboard', 1, 'int');
- $view->dashboardLayout = $this->getLayout($view->dashboardId);
+
+ // get the layout via FrontController so controller events are posted
+ $view->dashboardLayout = FrontController::getInstance()->dispatch('Dashboard', 'getDashboardLayout',
+ array($checkToken = false));
return $view;
}
@@ -74,9 +78,11 @@ class Controller extends \Piwik\Plugin\Controller
return Common::json_encode(WidgetsList::get());
}
- public function getDashboardLayout()
+ public function getDashboardLayout($checkToken = true)
{
- $this->checkTokenInUrl();
+ if ($checkToken) {
+ $this->checkTokenInUrl();
+ }
$idDashboard = Common::getRequestVar('idDashboard', 1, 'int');
diff --git a/plugins/Dashboard/Dashboard.php b/plugins/Dashboard/Dashboard.php
index 5e11051548..4fcbeb086d 100644
--- a/plugins/Dashboard/Dashboard.php
+++ b/plugins/Dashboard/Dashboard.php
@@ -88,6 +88,18 @@ class Dashboard extends \Piwik\Plugin
]';
}
+ /**
+ * Allows other plugins to modify the default dashboard layout.
+ *
+ * @param string &$defaultLayout JSON encoded string of the default dashboard layout. Contains an
+ * array of columns where each column is an array of widgets. Each
+ * widget is an associative array w/ the following elements:
+ *
+ * * **uniqueId**: The widget's unique ID.
+ * * **parameters**: The array of query parameters that should be used to get this widget's report.
+ */
+ Piwik::postEvent("Dashboard.changeDefaultDashboardLayout", array(&$defaultLayout));
+
$defaultLayout = $this->removeDisabledPluginFromLayout($defaultLayout);
return $defaultLayout;
diff --git a/plugins/DevicesDetection/lang/cs.json b/plugins/DevicesDetection/lang/cs.json
index d4fd5865bb..381ca725d2 100644
--- a/plugins/DevicesDetection/lang/cs.json
+++ b/plugins/DevicesDetection/lang/cs.json
@@ -1,11 +1,29 @@
{
"DevicesDetection": {
+ "BrowserVersions": "Verze prohlížeÄů",
+ "Camera": "Fotoaparát",
+ "CarBrowser": "ProhlížeÄ v autÄ›",
+ "Console": "Konzole",
"dataTableLabelBrands": "ZnaÄka",
+ "dataTableLabelBrowserFamily": "Rodina prohlížeÄe",
"dataTableLabelModels": "Model",
+ "dataTableLabelSystemVersion": "Verze operaÄního systému",
"dataTableLabelTypes": "Typ",
+ "Device": "Zařízení",
"DeviceBrand": "ZnaÄka zařízení",
+ "DeviceDetection": "Detekce zařízení",
"DeviceModel": "Model zařízení",
"DevicesDetection": "Zařízení návštěvníků",
- "submenu": "Zařízení"
+ "DeviceType": "Typ zařízení",
+ "FeaturePhone": "Ukázkový telefon",
+ "OperatingSystemFamilies": "Rodiny operaÄních systémů",
+ "OperatingSystemVersions": "Verze operaÄního systému",
+ "PluginDescription": "Tento zásuvný modul poskytuje rozšířené informace o mobilních iařízeních, jako např. výrobce, model (verze zařízení), vylepšenou detekci typu zařízení (TV, konzole, Chytré telefony, PC) a další. Tento zásuvný modul přidává nové hlášení v sekci návštěvníci > zařízení.",
+ "SmartDisplay": "Chytrý displej",
+ "Smartphone": "Chytrý telefon",
+ "submenu": "Zařízení",
+ "Tablet": "Tablet",
+ "TV": "Tv",
+ "UserAgent": "User-Agent"
}
} \ No newline at end of file
diff --git a/plugins/DevicesDetection/lang/tr.json b/plugins/DevicesDetection/lang/tr.json
new file mode 100644
index 0000000000..dc576b511c
--- /dev/null
+++ b/plugins/DevicesDetection/lang/tr.json
@@ -0,0 +1,22 @@
+{
+ "DevicesDetection": {
+ "BrowserVersions": "Tarayıcı versiyonları",
+ "Camera": "Kamera",
+ "CarBrowser": "Araba tarayıcısı",
+ "Console": "Konsol",
+ "dataTableLabelBrands": "Marka",
+ "dataTableLabelBrowserFamily": "Tarayıcı ailesi",
+ "dataTableLabelModels": "Model",
+ "dataTableLabelSystemVersion": "Ä°ÅŸletim Sistemi versiyonu",
+ "dataTableLabelTypes": "Tip",
+ "Device": "Cihaz",
+ "DeviceBrand": "Cihaz markası",
+ "DeviceDetection": "Cihaz algılama",
+ "DeviceModel": "Cihaz modeli",
+ "DevicesDetection": "Ziyaretçi Cihazları",
+ "DeviceType": "Cihaz tipi",
+ "Tablet": "Tablet",
+ "TV": "Tv",
+ "UserAgent": "User-Agent"
+ }
+} \ No newline at end of file
diff --git a/plugins/Events/lang/cs.json b/plugins/Events/lang/cs.json
new file mode 100644
index 0000000000..1632851039
--- /dev/null
+++ b/plugins/Events/lang/cs.json
@@ -0,0 +1,31 @@
+{
+ "Events": {
+ "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",
+ "Event": "Událost",
+ "EventAction": "Akce události",
+ "EventActions": "Akce události",
+ "EventCategories": "Kategorie událostí",
+ "EventCategory": "Kategorie události",
+ "EventName": "Jméno události",
+ "EventNames": "Jména událostí",
+ "Events": "Události",
+ "EventsWithValue": "Události s hodnotou",
+ "EventsWithValueDocumentation": "PoÄet událostí s nastavenou hodnotou",
+ "EventValue": "Hodnota události",
+ "EventValueTooltip": "Celková hodnota události je souÄet %s hodnot událostí %s mezi minimem %s a maximem %s.",
+ "MaxValue": "Maximální hodnota",
+ "MaxValueDocumentation": "Maximální hodnota pro tuto událost",
+ "MinValue": "Minimální hodnota",
+ "MinValueDocumentation": "Minimální hodnota pro tuto událost",
+ "SecondaryDimension": "Sekundární dimenze je %s.",
+ "SwitchToSecondaryDimension": "Přepnout na %s",
+ "TopEvents": "NejÄastÄ›jší události",
+ "TotalEvents": "Celkem událostí",
+ "TotalEventsDocumentation": "Celkový poÄet událostí",
+ "TotalValue": "Celková hodnota",
+ "TotalValueDocumentation": "SouÄet hodnot událostí",
+ "ViewEvents": "Zobrazit události"
+ }
+} \ No newline at end of file
diff --git a/plugins/Events/lang/fr.json b/plugins/Events/lang/fr.json
index 560de78cc7..894a70bf48 100644
--- a/plugins/Events/lang/fr.json
+++ b/plugins/Events/lang/fr.json
@@ -1,14 +1,31 @@
{
"Events": {
+ "AvgEventValue": "La valeur moyenne de l'évènement est : %s",
"AvgValue": "Valeur moyenne",
+ "AvgValueDocumentation": "Moyenne de toutes les valeurs pour cet évènement",
"Event": "Evènement",
"EventAction": "Action de l'évènement",
+ "EventActions": "Actions de l'évènement",
+ "EventCategories": "Catégories d'évènement",
"EventCategory": "Catégorie d'évènement",
"EventName": "Nom d'évènement",
+ "EventNames": "Noms d'évènement",
"Events": "Evènements",
+ "EventsWithValue": "Evènements avec une valeur",
+ "EventsWithValueDocumentation": "Nombre d'évènements qui ont une valeur de définie",
"EventValue": "Valeur d'évènement",
+ "EventValueTooltip": "La valeur totale de l'évènement est la somme des %s valeurs d'évènements %s entre un minimum de %s et un maximum de %s.",
"MaxValue": "Valeur maximum",
+ "MaxValueDocumentation": "Valeur maximale pour cet évènement",
"MinValue": "Valeur minimum",
- "TotalValue": "Valeur totale"
+ "MinValueDocumentation": "Valeur minimale pour cet évènement",
+ "SecondaryDimension": "La seconde dimension est %s.",
+ "SwitchToSecondaryDimension": "Passer à %s",
+ "TopEvents": "Principaux évènements",
+ "TotalEvents": "Nombre total d'évènements",
+ "TotalEventsDocumentation": "Nombre total des évènements",
+ "TotalValue": "Valeur totale",
+ "TotalValueDocumentation": "Somme des valeurs d'évènement",
+ "ViewEvents": "Afficher les évènements"
}
} \ No newline at end of file
diff --git a/plugins/Events/lang/nl.json b/plugins/Events/lang/nl.json
index f04206e860..53bdcb1647 100644
--- a/plugins/Events/lang/nl.json
+++ b/plugins/Events/lang/nl.json
@@ -11,11 +11,13 @@
"EventNames": "Gebeurtenis Namen",
"Events": "Gebeurtenissen",
"EventsWithValue": "Gebeurtenissen met een waarde",
+ "EventsWithValueDocumentation": "Aantal events waar een Event waarde is bepaald",
"EventValue": "Gebeurtenis Waarde",
"MaxValue": "Maximale waarde",
"MaxValueDocumentation": "De maximale waarde voor deze gebeurtenis",
"MinValue": "Minimale waarde",
"MinValueDocumentation": "De minimale waarde voor deze gebeurtenis",
+ "SecondaryDimension": "Tweede dimensie is %s.",
"SwitchToSecondaryDimension": "Omschakelen naar %s",
"TopEvents": "Top Gebeurtenissen",
"TotalEvents": "Totaal gebeurtenissen",
diff --git a/plugins/Events/lang/tr.json b/plugins/Events/lang/tr.json
new file mode 100644
index 0000000000..880b0d3d0b
--- /dev/null
+++ b/plugins/Events/lang/tr.json
@@ -0,0 +1,26 @@
+{
+ "Events": {
+ "AvgEventValue": "Ortalama etkinlik deÄŸeri: %s",
+ "AvgValue": "Ortalama deÄŸer",
+ "AvgValueDocumentation": "Bu etkinlik için ortalama tüm değerler",
+ "Event": "Etkinlik",
+ "EventAction": "Etkinlik Aksiyonu",
+ "EventActions": "Etkinlik Aksiyonu",
+ "EventCategories": "Etkinlik Kategorileri",
+ "EventCategory": "Etkinlik Kategorisi",
+ "EventName": "Etkinlik Adı",
+ "EventNames": "Etkinlik Adı",
+ "Events": "Etkinlikler",
+ "EventsWithValue": "DeÄŸeri olan etkinlikler",
+ "EventsWithValueDocumentation": "Etkinlik değeri ayarlanmış olan etkinlik sayısı",
+ "EventValue": "Etkinlik DeÄŸeri",
+ "MaxValue": "Maksimum deÄŸer",
+ "MaxValueDocumentation": "Bu etkinlik için maksimum değer",
+ "MinValue": "Minimum deÄŸer",
+ "MinValueDocumentation": "Bu etkinlik için minimum değer",
+ "SecondaryDimension": "Ä°kincil boyut %s.",
+ "TopEvents": "Top Etkinlikler",
+ "TotalEvents": "Toplam etkinlikler",
+ "TotalEventsDocumentation": "Toplam etkinlik sayısı"
+ }
+} \ No newline at end of file
diff --git a/plugins/ExampleUI/Menu.php b/plugins/ExampleUI/Menu.php
index dade4ad9a6..8714c3eddc 100644
--- a/plugins/ExampleUI/Menu.php
+++ b/plugins/ExampleUI/Menu.php
@@ -10,6 +10,7 @@ namespace Piwik\Plugins\ExampleUI;
use Piwik\Menu\MenuReporting;
use Piwik\Menu\MenuTop;
+use Piwik\Menu\MenuUser;
use Piwik\Plugin\Manager as PluginManager;
/**
@@ -32,12 +33,13 @@ class Menu extends \Piwik\Plugin\Menu
}
}
- public function configureTopMenu(MenuTop $menu)
+ public function configureUserMenu(MenuUser $menu)
{
$urlParams = array('module' => 'ExampleUI', 'action' => 'notifications');
- $menu->add('UI Notifications', null, $urlParams, $displayedForCurrentUser = true, $order = 3);
+ $menu->add('CorePluginsAdmin_MenuPlatform', 'UI Notifications', $urlParams, $displayedForCurrentUser = true, $order = 3);
}
+
private function addSubMenu(MenuReporting $menu, $subMenu, $action, $order)
{
$menu->add('UI Framework', $subMenu, array('module' => 'ExampleUI', 'action' => $action), true, $order);
diff --git a/plugins/Feedback/Feedback.php b/plugins/Feedback/Feedback.php
index 6f56fdc2a4..329f4cccc1 100644
--- a/plugins/Feedback/Feedback.php
+++ b/plugins/Feedback/Feedback.php
@@ -51,5 +51,6 @@ class Feedback extends \Piwik\Plugin
$translationKeys[] = 'Feedback_SendFeedback';
$translationKeys[] = 'Feedback_RateFeatureSendFeedbackInformation';
$translationKeys[] = 'General_Ok';
+ $translationKeys[] = 'General_Cancel';
}
}
diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php
index bde21ee5d8..c7d64fe9ac 100644
--- a/plugins/Goals/Goals.php
+++ b/plugins/Goals/Goals.php
@@ -270,5 +270,9 @@ class Goals extends \Piwik\Plugin
$translationKeys[] = 'Goals_AddGoal';
$translationKeys[] = 'Goals_UpdateGoal';
$translationKeys[] = 'Goals_DeleteGoalConfirm';
+ $translationKeys[] = 'Goals_UpdateGoal';
+ $translationKeys[] = 'Goals_DeleteGoalConfirm';
+ $translationKeys[] = 'Goals_Ecommerce';
+ $translationKeys[] = 'Goals_Optional';
}
}
diff --git a/plugins/Installation/Installation.php b/plugins/Installation/Installation.php
index 24e1a767e1..efbf904212 100644
--- a/plugins/Installation/Installation.php
+++ b/plugins/Installation/Installation.php
@@ -14,6 +14,7 @@ use Piwik\FrontController;
use Piwik\Menu\MenuAbstract;
use Piwik\Piwik;
use Piwik\Translate;
+use Piwik\View as PiwikView;
/**
*
@@ -30,12 +31,21 @@ class Installation extends \Piwik\Plugin
$hooks = array(
'Config.NoConfigurationFile' => 'dispatch',
'Config.badConfigurationFile' => 'dispatch',
+ 'Db.cannotConnectToDb' => 'displayDbConnectionMessage',
'Request.dispatch' => 'dispatchIfNotInstalledYet',
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
);
return $hooks;
}
+ public function displayDbConnectionMessage($exception = null)
+ {
+ $view = new PiwikView("@Installation/cannotConnectToDb");
+ $view->exceptionMessage = $exception->getMessage();
+
+ Piwik_ExitWithMessage($view->render());
+ }
+
public function dispatchIfNotInstalledYet(&$module, &$action, &$parameters)
{
$general = Config::getInstance()->General;
diff --git a/plugins/Installation/templates/cannotConnectToDb.twig b/plugins/Installation/templates/cannotConnectToDb.twig
new file mode 100644
index 0000000000..1408a050bc
--- /dev/null
+++ b/plugins/Installation/templates/cannotConnectToDb.twig
@@ -0,0 +1,5 @@
+<p>{{ 'Installation_CannotConnectToDb'|translate }}:</p>
+
+<p><strong>{{ exceptionMessage }}</strong></p>
+
+<p>{{ 'Installation_CannotConnectToDbResolvingExplanation'|translate('<a href="javascript:window.location.reload()">', '</a>')|raw }}</p> \ No newline at end of file
diff --git a/plugins/LeftMenu/LeftMenu.php b/plugins/LeftMenu/LeftMenu.php
index 67d906787c..00b40d9a6f 100755
--- a/plugins/LeftMenu/LeftMenu.php
+++ b/plugins/LeftMenu/LeftMenu.php
@@ -19,7 +19,7 @@ class LeftMenu extends \Piwik\Plugin
);
}
- public function addClassToBody($str, $layout)
+ public function addClassToBody(&$str, $layout)
{
if (API::getInstance()->isEnabled() && 'dashboard' === $layout) {
$str .= ' leftMenuPlugin';
diff --git a/plugins/LeftMenu/lang/cs.json b/plugins/LeftMenu/lang/cs.json
new file mode 100644
index 0000000000..222664d7d9
--- /dev/null
+++ b/plugins/LeftMenu/lang/cs.json
@@ -0,0 +1,10 @@
+{
+ "LeftMenu": {
+ "GlobalSettingDescription": "Definuje systémovou výchozí hodnotu pro všechny uživatele.",
+ "GlobalSettingInlineHelp": "Uživatelé si mohou zakázat\/povolit levé menu nezávisle na systémové výchozí hodnotě.",
+ "GlobalSettingTitle": "Levé menu je ve výchozím stavu povoleno",
+ "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.",
+ "UserSettingInlineHelp": "Toto povolí nebo zakáže levé menu jen pro vás bez ohledu na jiné uživatele. Super uživatel může nastavit výchozí systémovou hodnotu.",
+ "UserSettingTitle": "Povolit levé menu hlášení"
+ }
+} \ No newline at end of file
diff --git a/plugins/LeftMenu/lang/ro.json b/plugins/LeftMenu/lang/ro.json
new file mode 100644
index 0000000000..64a829c25d
--- /dev/null
+++ b/plugins/LeftMenu/lang/ro.json
@@ -0,0 +1,10 @@
+{
+ "LeftMenu": {
+ "GlobalSettingDescription": "Definește valoarea implicită pentru toți utilizatorii.",
+ "GlobalSettingInlineHelp": "Utilizatorii pot dezactiva\/activa meniul din stânga independet de valoare implicită.",
+ "GlobalSettingTitle": "Meniul din stânnga este activat implicit",
+ "SettingsIntroduction": "Modulul meniului din stânga va muta meniul de raportare din partea de sus în partea stângă dacă este activat. Acesta este folositor în special în cazul ecranelor mari.",
+ "UserSettingInlineHelp": "Acesta va activa sau dezactiva meniul din stânga doar pentru dumneavoastra și nu va afecta alți utilizatori. Un Super Utilizator va putea schimba modul implicit pentru toți utilizatorii.",
+ "UserSettingTitle": "Activează meniul de raportare din stânga"
+ }
+} \ No newline at end of file
diff --git a/plugins/Live/templates/getVisitorProfilePopup.twig b/plugins/Live/templates/getVisitorProfilePopup.twig
index a96b60ecea..101ca43875 100644
--- a/plugins/Live/templates/getVisitorProfilePopup.twig
+++ b/plugins/Live/templates/getVisitorProfilePopup.twig
@@ -1,3 +1,6 @@
+{% if not visitorData %}
+ <div class="pk-emptyDataTable">{{ 'CoreHome_ThereIsNoDataForThisReport'|translate }}</div>
+{% else %}
<div class="visitor-profile"
data-visitor-id="{{ visitorData.lastVisits.getFirstRow().getColumn('visitorId') }}"
data-next-visitor="{{ visitorData.nextVisitorId }}"
@@ -146,4 +149,5 @@
</div>
<script type="text/javascript">
$(function() { require('piwik/UI').VisitorProfileControl.initElements(); });
-</script> \ No newline at end of file
+</script>
+{% endif %} \ No newline at end of file
diff --git a/plugins/Login/Controller.php b/plugins/Login/Controller.php
index ae4d3e1e4b..395c26d7b4 100644
--- a/plugins/Login/Controller.php
+++ b/plugins/Login/Controller.php
@@ -284,6 +284,11 @@ class Controller extends \Piwik\Plugin\Controller
$fromEmailName = Config::getInstance()->General['login_password_recovery_email_name'];
$fromEmailAddress = Config::getInstance()->General['login_password_recovery_email_address'];
$mail->setFrom($fromEmailAddress, $fromEmailName);
+
+ $replytoEmailName = Config::getInstance()->General['login_password_recovery_replyto_email_name'];
+ $replytoEmailAddress = Config::getInstance()->General['login_password_recovery_replyto_email_address'];
+ $mail->setReplyTo($replytoEmailAddress, $replytoEmailName);
+
@$mail->send();
}
diff --git a/plugins/Login/stylesheets/login.css b/plugins/Login/stylesheets/login.css
index fd473bb18a..f24a1982da 100644
--- a/plugins/Login/stylesheets/login.css
+++ b/plugins/Login/stylesheets/login.css
@@ -75,7 +75,10 @@
text-align: center;
color: #666;
margin: 0 0 30px 0;
- font: normal 26px/1 Verdana, Helvetica;
+ font-style: normal;
+ font-weight: normal;
+ font-size: 26px;
+ line-height: 1;
position: relative;
}
diff --git a/plugins/Morpheus/javascripts/morpheus.js b/plugins/Morpheus/javascripts/morpheus.js
index 8e517fb2da..4b7a295c49 100644
--- a/plugins/Morpheus/javascripts/morpheus.js
+++ b/plugins/Morpheus/javascripts/morpheus.js
@@ -6,7 +6,9 @@ $(document).ready(function () {
function initICheck()
{
- $('input').iCheck({
+ $('input').filter(function () {
+ return !$(this).parent().is('.form-radio');
+ }).iCheck({
checkboxClass: 'form-checkbox',
radioClass: 'form-radio',
checkedClass: 'checked',
diff --git a/plugins/Morpheus/stylesheets/base.less b/plugins/Morpheus/stylesheets/base.less
index 2712c435bc..c994155077 100644
--- a/plugins/Morpheus/stylesheets/base.less
+++ b/plugins/Morpheus/stylesheets/base.less
@@ -1,11 +1,11 @@
/* base.less is a standalone Less file */
/* Variables */
-@import "less/_colors";
+@import "less/_colors.less";
-@import "less/_variables";
+@import "less/_variables.less";
-@import "less/_mixins";
+@import "less/_mixins.less";
/* General styles */
@import "general/_default.less";
diff --git a/plugins/Morpheus/stylesheets/theme.less b/plugins/Morpheus/stylesheets/theme.less
index d0e9345c10..582d3c4d58 100644
--- a/plugins/Morpheus/stylesheets/theme.less
+++ b/plugins/Morpheus/stylesheets/theme.less
@@ -877,13 +877,6 @@ table#users {
}
}
-table#editSites {
- .editSite:hover > span,
- .deleteSite:hover > span {
- text-decoration: underline;
- }
-}
-
// previous style overrides
#header_message a {
text-decoration: underline;
diff --git a/plugins/MultiSites/angularjs/dashboard/dashboard-model.js b/plugins/MultiSites/angularjs/dashboard/dashboard-model.js
index fbe2b51472..802e1dfe8f 100644
--- a/plugins/MultiSites/angularjs/dashboard/dashboard-model.js
+++ b/plugins/MultiSites/angularjs/dashboard/dashboard-model.js
@@ -130,8 +130,8 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp
if (allSitesUnordered && allSitesUnordered.length) {
for (var index in allSitesUnordered) {
var site = allSitesUnordered[index];
- if (site && site['nb_pageviews']) {
- totalActions += parseInt(site['nb_pageviews'], 10);
+ if (site && site.nb_pageviews) {
+ totalActions += parseInt(site.nb_pageviews, 10);
}
}
}
@@ -208,6 +208,8 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp
{
var filteredSites = [];
+ term = term.toLowerCase();
+
for (var index in sitesByGroup) {
var site = sitesByGroup[index];
if (site.isGroup) {
diff --git a/plugins/PrivacyManager/DoNotTrackHeaderChecker.php b/plugins/PrivacyManager/DoNotTrackHeaderChecker.php
index 5ee5642fdd..b8e37a4771 100644
--- a/plugins/PrivacyManager/DoNotTrackHeaderChecker.php
+++ b/plugins/PrivacyManager/DoNotTrackHeaderChecker.php
@@ -26,9 +26,13 @@ class DoNotTrackHeaderChecker
*/
public function checkHeaderInTracker(&$exclude)
{
- if (!$this->isActive()
- || $exclude
- ) {
+ if($exclude) {
+ Common::printDebug("Visit is already excluded, no need to check DoNotTrack support.");
+ return;
+ }
+
+ if (!$this->isActive()) {
+ Common::printDebug("DoNotTrack support is not enabled, skip check");
return;
}
@@ -43,8 +47,9 @@ class DoNotTrackHeaderChecker
return;
}
+ Common::printDebug("DoNotTrack header found!");
+
$exclude = true;
- Common::printDebug("DoNotTrack found.");
$trackingCookie = IgnoreCookie::getTrackingCookie();
$trackingCookie->delete();
@@ -53,6 +58,8 @@ class DoNotTrackHeaderChecker
// /.well-known/dnt
// per Tracking Preference Expression (draft)
header('Tk: 1');
+ } else {
+ Common::printDebug("DoNotTrack header not found");
}
}
diff --git a/plugins/ScheduledReports/ScheduledReports.php b/plugins/ScheduledReports/ScheduledReports.php
index 26c3ef5ecc..41d8306c10 100644
--- a/plugins/ScheduledReports/ScheduledReports.php
+++ b/plugins/ScheduledReports/ScheduledReports.php
@@ -16,10 +16,12 @@ use Piwik\Mail;
use Piwik\Piwik;
use Piwik\Plugins\MobileMessaging\MobileMessaging;
use Piwik\Plugins\UsersManager\API as APIUsersManager;
+use Piwik\Plugins\UsersManager\Model as UserModel;
use Piwik\ReportRenderer;
use Piwik\ScheduledTime;
use Piwik\View;
use Zend_Mime;
+use Piwik\Config;
/**
*
@@ -267,6 +269,8 @@ class ScheduledReports extends \Piwik\Plugin
$mail->setSubject($subject);
$attachmentName = $subject;
+ $this->setReplyToAsSender($mail, $report);
+
$displaySegmentInfo = false;
$segmentInfo = null;
$segment = API::getSegment($report['idsegment']);
@@ -602,4 +606,16 @@ class ScheduledReports extends \Piwik\Plugin
ScheduledTime::PERIOD_RANGE => Piwik::translate('General_RangeReports'),
);
}
+
+ protected function setReplyToAsSender(Mail $mail, array $report)
+ {
+ if (Config::getInstance()->General['scheduled_reports_replyto_is_user_email_and_alias']) {
+ if (isset($report['login'])) {
+ $userModel = new UserModel();
+ $user = $userModel->getUser($report['login']);
+
+ $mail->setReplyTo($user['email'], $user['alias']);
+ }
+ }
+ }
}
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index d669bb781c..c44a269b91 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -311,12 +311,19 @@ class API extends \Piwik\Plugin\API
* Returns the list of websites with the 'admin' access for the current user.
* For the superUser it returns all the websites in the database.
*
+ * @param bool $fetchAliasUrls
* @return array for each site, an array of information (idsite, name, main_url, etc.)
*/
- public function getSitesWithAdminAccess()
+ public function getSitesWithAdminAccess($fetchAliasUrls = false)
{
$sitesId = $this->getSitesIdWithAdminAccess();
- return $this->getSitesFromIds($sitesId);
+ $sites = $this->getSitesFromIds($sitesId);
+
+ if ($fetchAliasUrls)
+ foreach ($sites as &$site)
+ $site['alias_urls'] = API::getInstance()->getSiteUrlsFromId($site['idsite']);
+
+ return $sites;
}
/**
@@ -1185,7 +1192,7 @@ class API extends \Piwik\Plugin\API
*
* @ignore
*/
- public function updateSiteCreatedTime($idSites, $minDate)
+ public function updateSiteCreatedTime($idSites, Date $minDate)
{
$idSites = Site::getIdSitesFromIdSitesString($idSites);
Piwik::checkUserHasAdminAccess($idSites);
@@ -1241,6 +1248,17 @@ class API extends \Piwik\Plugin\API
}
/**
+ * Return true if Timezone support is enabled on server
+ *
+ * @return bool
+ */
+ public function isTimezoneSupportEnabled()
+ {
+ Piwik::checkUserHasSomeViewAccess();
+ return SettingsServer::isTimezoneSupportEnabled();
+ }
+
+ /**
* Returns the list of timezones supported.
* Used for addSite and updateSite
*
diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php
index d17232c2db..34fe1cc2a3 100644
--- a/plugins/SitesManager/Controller.php
+++ b/plugins/SitesManager/Controller.php
@@ -31,49 +31,30 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
{
$view = new View('@SitesManager/index');
- Site::clearCache();
- $sites = API::getInstance()->getSitesWithAdminAccess();
-
- foreach ($sites as &$site) {
- $site['alias_urls'] = API::getInstance()->getSiteUrlsFromId($site['idsite']);
- $site['excluded_ips'] = explode(',', $site['excluded_ips']);
- $site['excluded_parameters'] = explode(',', $site['excluded_parameters']);
- $site['excluded_user_agents'] = explode(',', $site['excluded_user_agents']);
- }
- $view->adminSites = $sites;
- $view->adminSitesCount = count($sites);
-
- $timezones = API::getInstance()->getTimezonesList();
- $view->timezoneSupported = SettingsServer::isTimezoneSupportEnabled();
- $view->timezones = Common::json_encode($timezones);
- $view->defaultTimezone = API::getInstance()->getDefaultTimezone();
-
- $view->currencies = Common::json_encode(API::getInstance()->getCurrencyList());
- $view->defaultCurrency = API::getInstance()->getDefaultCurrency();
+ $this->setBasicVariablesView($view);
- $view->utcTime = Date::now()->getDatetime();
- $excludedIpsGlobal = API::getInstance()->getExcludedIpsGlobal();
- $view->globalExcludedIps = str_replace(',', "\n", $excludedIpsGlobal);
- $excludedQueryParametersGlobal = API::getInstance()->getExcludedQueryParametersGlobal();
- $view->globalExcludedQueryParameters = str_replace(',', "\n", $excludedQueryParametersGlobal);
+ return $view->render();
+ }
- $globalExcludedUserAgents = API::getInstance()->getExcludedUserAgentsGlobal();
- $view->globalExcludedUserAgents = str_replace(',', "\n", $globalExcludedUserAgents);
+ public function getGlobalSettings() {
- $view->globalSearchKeywordParameters = API::getInstance()->getSearchKeywordParametersGlobal();
- $view->globalSearchCategoryParameters = API::getInstance()->getSearchCategoryParametersGlobal();
- $view->isSearchCategoryTrackingEnabled = \Piwik\Plugin\Manager::getInstance()->isPluginActivated('CustomVariables');
- $view->allowSiteSpecificUserAgentExclude =
- API::getInstance()->isSiteSpecificUserAgentExcludeEnabled();
+ Piwik::checkUserHasSomeViewAccess();
- $view->globalKeepURLFragments = API::getInstance()->getKeepURLFragmentsGlobal();
+ $response = new ResponseBuilder(Common::getRequestVar('format'));
- $view->currentIpAddress = IP::getIpFromHeader();
+ $globalSettings = array();
- $view->showAddSite = (boolean)Common::getRequestVar('showaddsite', false);
+ $globalSettings['keepURLFragmentsGlobal'] = API::getInstance()->getKeepURLFragmentsGlobal();
+ $globalSettings['siteSpecificUserAgentExcludeEnabled'] = API::getInstance()->isSiteSpecificUserAgentExcludeEnabled();
+ $globalSettings['defaultCurrency'] = API::getInstance()->getDefaultCurrency();
+ $globalSettings['searchKeywordParametersGlobal'] = API::getInstance()->getSearchKeywordParametersGlobal();
+ $globalSettings['searchCategoryParametersGlobal'] = API::getInstance()->getSearchCategoryParametersGlobal();
+ $globalSettings['defaultTimezone'] = API::getInstance()->getDefaultTimezone();
+ $globalSettings['excludedIpsGlobal'] = API::getInstance()->getExcludedIpsGlobal();
+ $globalSettings['excludedQueryParametersGlobal'] = API::getInstance()->getExcludedQueryParametersGlobal();
+ $globalSettings['excludedUserAgentsGlobal'] = API::getInstance()->getExcludedUserAgentsGlobal();
- $this->setBasicVariablesView($view);
- return $view->render();
+ return $response->getResponse($globalSettings);
}
/**
diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index a5107cc051..edd72bdb4c 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -44,7 +44,10 @@ class SitesManager extends \Piwik\Plugin
*/
public function getJsFiles(&$jsFiles)
{
- $jsFiles[] = "plugins/SitesManager/javascripts/SitesManager.js";
+ $jsFiles[] = "plugins/SitesManager/javascripts/sites-manager-recipes.js";
+ $jsFiles[] = "plugins/SitesManager/javascripts/sites-manager-directives.js";
+ $jsFiles[] = "plugins/SitesManager/javascripts/sites-manager-controller.js";
+ $jsFiles[] = "plugins/SitesManager/javascripts/sites-manager-site-controller.js";
}
/**
@@ -200,5 +203,61 @@ class SitesManager extends \Piwik\Plugin
$translationKeys[] = "General_OrCancel";
$translationKeys[] = "SitesManager_OnlyOneSiteAtTime";
$translationKeys[] = "SitesManager_DeleteConfirm";
+ $translationKeys[] = "SitesManager_Urls";
+ $translationKeys[] = "SitesManager_ExcludedIps";
+ $translationKeys[] = "SitesManager_ExcludedParameters";
+ $translationKeys[] = "SitesManager_ExcludedUserAgents";
+ $translationKeys[] = "SitesManager_Timezone";
+ $translationKeys[] = "SitesManager_Currency";
+ $translationKeys[] = "SitesManager_ShowTrackingTag";
+ $translationKeys[] = "SitesManager_AliasUrlHelp";
+ $translationKeys[] = "SitesManager_KeepURLFragmentsLong";
+ $translationKeys[] = "SitesManager_HelpExcludedIps";
+ $translationKeys[] = "SitesManager_ListOfQueryParametersToExclude";
+ $translationKeys[] = "SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters";
+ $translationKeys[] = "SitesManager_GlobalExcludedUserAgentHelp1";
+ $translationKeys[] = "SitesManager_GlobalListExcludedUserAgents_Desc";
+ $translationKeys[] = "SitesManager_GlobalExcludedUserAgentHelp2";
+ $translationKeys[] = "SitesManager_WebsitesManagement";
+ $translationKeys[] = "SitesManager_MainDescription";
+ $translationKeys[] = "SitesManager_YouCurrentlyHaveAccessToNWebsites";
+ $translationKeys[] = "SitesManager_SuperUserAccessCan";
+ $translationKeys[] = "SitesManager_EnableSiteSearch";
+ $translationKeys[] = "SitesManager_DisableSiteSearch";
+ $translationKeys[] = "SitesManager_SearchUseDefault";
+ $translationKeys[] = "SitesManager_SiteSearchUse";
+ $translationKeys[] = "SitesManager_SearchKeywordLabel";
+ $translationKeys[] = "SitesManager_SearchCategoryLabel";
+ $translationKeys[] = "SitesManager_YourCurrentIpAddressIs";
+ $translationKeys[] = "SitesManager_SearchKeywordParametersDesc";
+ $translationKeys[] = "SitesManager_SearchCategoryParametersDesc";
+ $translationKeys[] = "SitesManager_CurrencySymbolWillBeUsedForGoals";
+ $translationKeys[] = "SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward";
+ $translationKeys[] = "SitesManager_AdvancedTimezoneSupportNotFound";
+ $translationKeys[] = "SitesManager_ChooseCityInSameTimezoneAsYou";
+ $translationKeys[] = "SitesManager_UTCTimeIs";
+ $translationKeys[] = "SitesManager_EnableEcommerce";
+ $translationKeys[] = "SitesManager_NotAnEcommerceSite";
+ $translationKeys[] = "SitesManager_EcommerceHelp";
+ $translationKeys[] = "SitesManager_PiwikOffersEcommerceAnalytics";
+ $translationKeys[] = "SitesManager_GlobalWebsitesSettings";
+ $translationKeys[] = "SitesManager_GlobalListExcludedIps";
+ $translationKeys[] = "SitesManager_ListOfIpsToBeExcludedOnAllWebsites";
+ $translationKeys[] = "SitesManager_GlobalListExcludedQueryParameters";
+ $translationKeys[] = "SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites";
+ $translationKeys[] = "SitesManager_GlobalListExcludedUserAgents";
+ $translationKeys[] = "SitesManager_EnableSiteSpecificUserAgentExclude_Help";
+ $translationKeys[] = "SitesManager_EnableSiteSpecificUserAgentExclude";
+ $translationKeys[] = "SitesManager_KeepURLFragments";
+ $translationKeys[] = "SitesManager_KeepURLFragmentsHelp";
+ $translationKeys[] = "SitesManager_KeepURLFragmentsHelp2";
+ $translationKeys[] = "SitesManager_TrackingSiteSearch";
+ $translationKeys[] = "SitesManager_SearchParametersNote";
+ $translationKeys[] = "SitesManager_SearchParametersNote2";
+ $translationKeys[] = "SitesManager_SearchCategoryDesc";
+ $translationKeys[] = "SitesManager_DefaultTimezoneForNewWebsites";
+ $translationKeys[] = "SitesManager_SelectDefaultTimezone";
+ $translationKeys[] = "SitesManager_DefaultCurrencyForNewWebsites";
+ $translationKeys[] = "SitesManager_SelectDefaultCurrency";
}
}
diff --git a/plugins/SitesManager/javascripts/SitesManager.js b/plugins/SitesManager/javascripts/SitesManager.js
deleted file mode 100644
index b8ad4c325d..0000000000
--- a/plugins/SitesManager/javascripts/SitesManager.js
+++ /dev/null
@@ -1,473 +0,0 @@
-/*!
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-// NOTE: if you cannot find the definition of a variable here, look in index.twig
-function SitesManager(_timezones, _currencies, _defaultTimezone, _defaultCurrency) {
-
- var timezones = _timezones;
- var currencies = _currencies;
- var defaultTimezone = _defaultTimezone;
- var defaultCurrency = _defaultCurrency;
- var siteBeingEdited = false;
- var siteBeingEditedName = '';
-
- function sendDeleteSiteAJAX(idSite) {
- var ajaxHandler = new ajaxHelper();
- ajaxHandler.addParams({
- idSite: idSite,
- module: 'API',
- format: 'json',
- method: 'SitesManager.deleteSite'
- }, 'GET');
- ajaxHandler.redirectOnSuccess();
- ajaxHandler.setLoadingElement();
- ajaxHandler.send(true);
- }
-
- function sendAddSiteAJAX(row) {
- var siteName = $(row).find('input#name').val();
- var urls = $(row).find('textarea#urls').val();
- urls = urls.trim().split("\n");
- var excludedIps = $(row).find('textarea#excludedIps').val();
- excludedIps = piwikHelper.getApiFormatTextarea(excludedIps);
- var timezone = $(row).find('#timezones option:selected').val();
- var currency = $(row).find('#currencies option:selected').val();
- var excludedQueryParameters = $(row).find('textarea#excludedQueryParameters').val();
- excludedQueryParameters = piwikHelper.getApiFormatTextarea(excludedQueryParameters);
- var excludedUserAgents = $(row).find('textarea#excludedUserAgents').val();
- excludedUserAgents = piwikHelper.getApiFormatTextarea(excludedUserAgents);
- var keepURLFragments = $('#keepURLFragmentSelect', row).val();
- var ecommerce = $(row).find('#ecommerce option:selected').val();
- var sitesearch = $(row).find('#sitesearch option:selected').val();
- var searchKeywordParameters = $('input#searchKeywordParameters').val();
- var searchCategoryParameters = $('input#searchCategoryParameters').val();
-
- var ajaxHandler = new ajaxHelper();
- ajaxHandler.addParams({
- module: 'API',
- format: 'json',
- method: 'SitesManager.addSite'
- }, 'GET');
- ajaxHandler.addParams({
- siteName: siteName,
- timezone: timezone,
- currency: currency,
- ecommerce: ecommerce,
- excludedIps: excludedIps,
- excludedQueryParameters: excludedQueryParameters,
- excludedUserAgents: excludedUserAgents,
- keepURLFragments: keepURLFragments,
- siteSearch: sitesearch,
- searchKeywordParameters: searchKeywordParameters,
- searchCategoryParameters: searchCategoryParameters,
- urls: urls
- }, 'POST');
- ajaxHandler.redirectOnSuccess();
- ajaxHandler.setLoadingElement();
- ajaxHandler.send(true);
- }
-
- function sendUpdateSiteAJAX(row) {
- var siteName = $(row).find('input#siteName').val();
- var idSite = $(row).children('#idSite').html();
- var urls = $(row).find('textarea#urls').val();
- urls = urls.trim().split("\n");
- var excludedIps = $(row).find('textarea#excludedIps').val();
- excludedIps = piwikHelper.getApiFormatTextarea(excludedIps);
-
- var excludedQueryParameters = $(row).find('textarea#excludedQueryParameters').val();
- excludedQueryParameters = piwikHelper.getApiFormatTextarea(excludedQueryParameters);
- var excludedUserAgents = $(row).find('textarea#excludedUserAgents').val();
- excludedUserAgents = piwikHelper.getApiFormatTextarea(excludedUserAgents);
- var keepURLFragments = $('#keepURLFragmentSelect', row).val();
- var timezone = $(row).find('#timezones option:selected').val();
- var currency = $(row).find('#currencies option:selected').val();
- var ecommerce = $(row).find('#ecommerce option:selected').val();
- var sitesearch = $(row).find('#sitesearch option:selected').val();
- var searchKeywordParameters = $('input#searchKeywordParameters').val();
- var searchCategoryParameters = $('input#searchCategoryParameters').val();
-
- var ajaxHandler = new ajaxHelper();
- ajaxHandler.addParams({
- module: 'API',
- format: 'json',
- method: 'SitesManager.updateSite',
- idSite: idSite
- }, 'GET');
- ajaxHandler.addParams({
- siteName: siteName,
- timezone: timezone,
- currency: currency,
- ecommerce: ecommerce,
- excludedIps: excludedIps,
- excludedQueryParameters: excludedQueryParameters,
- excludedUserAgents: excludedUserAgents,
- keepURLFragments: keepURLFragments,
- siteSearch: sitesearch,
- searchKeywordParameters: searchKeywordParameters,
- searchCategoryParameters: searchCategoryParameters,
- urls: urls
- }, 'POST');
- ajaxHandler.redirectOnSuccess();
- ajaxHandler.setLoadingElement();
- ajaxHandler.send(true);
- }
-
- function sendGlobalSettingsAJAX() {
- var timezone = $('#defaultTimezone').find('option:selected').val();
- var currency = $('#defaultCurrency').find('option:selected').val();
- var excludedIps = $('textarea#globalExcludedIps').val();
- excludedIps = piwikHelper.getApiFormatTextarea(excludedIps);
- var excludedQueryParameters = $('textarea#globalExcludedQueryParameters').val();
- excludedQueryParameters = piwikHelper.getApiFormatTextarea(excludedQueryParameters);
- var globalExcludedUserAgents = $('textarea#globalExcludedUserAgents').val();
- globalExcludedUserAgents = piwikHelper.getApiFormatTextarea(globalExcludedUserAgents);
- var globalKeepURLFragments = $('#globalKeepURLFragments').is(':checked') ? 1 : 0;
- var searchKeywordParameters = $('input#globalSearchKeywordParameters').val();
- var searchCategoryParameters = $('input#globalSearchCategoryParameters').val();
- var enableSiteUserAgentExclude = $('input#enableSiteUserAgentExclude').is(':checked') ? 1 : 0;
-
- var ajaxHandler = new ajaxHelper();
- ajaxHandler.addParams({
- module: 'SitesManager',
- format: 'json',
- action: 'setGlobalSettings'
- }, 'GET');
- ajaxHandler.addParams({
- timezone: timezone,
- currency: currency,
- excludedIps: excludedIps,
- excludedQueryParameters: excludedQueryParameters,
- excludedUserAgents: globalExcludedUserAgents,
- keepURLFragments: globalKeepURLFragments,
- enableSiteUserAgentExclude: enableSiteUserAgentExclude,
- searchKeywordParameters: searchKeywordParameters,
- searchCategoryParameters: searchCategoryParameters
- }, 'POST');
- ajaxHandler.redirectOnSuccess();
- ajaxHandler.setLoadingElement('#ajaxLoadingGlobalSettings');
- ajaxHandler.setErrorElement('#ajaxErrorGlobalSettings');
- ajaxHandler.send(true);
- }
-
- this.init = function () {
- $('.addRowSite').click(function () {
- piwikHelper.hideAjaxError();
- $('.addRowSite').toggle();
-
- var excludedUserAgentCell = '';
- if ($('#exclude-user-agent-header').is(':visible')) {
- excludedUserAgentCell = '<td><textarea cols="20" rows="4" id="excludedUserAgents"></textarea><br />' + excludedUserAgentsHelp + '</td>';
- }
-
- var numberOfRows = $('table#editSites')[0].rows.length;
- var newRowId = 'rowNew' + numberOfRows;
- var submitButtonHtml = '<input type="submit" class="addsite submit" value="' + _pk_translate('General_Save') + '" />';
- $($.parseHTML(' <tr id="' + newRowId + '">\
- <td>&nbsp;</td>\
- <td><input id="name" value="Name" size="15" /><br/><br/><br/>' + submitButtonHtml + '</td>\
- <td><textarea cols="25" rows="3" id="urls">http://siteUrl.com/\nhttp://siteUrl2.com/</textarea><br />' + aliasUrlsHelp + keepURLFragmentSelectHTML + '</td>\
- <td><textarea cols="20" rows="4" id="excludedIps"></textarea><br />' + excludedIpHelp + '</td>\
- <td><textarea cols="20" rows="4" id="excludedQueryParameters"></textarea><br />' + excludedQueryParametersHelp + '</td>' +
- excludedUserAgentCell +
- '<td>' + getSitesearchSelector(false) + '</td>\
- <td>' + getTimezoneSelector(defaultTimezone) + '<br />' + timezoneHelp + '</td>\
- <td>' + getCurrencySelector(defaultCurrency) + '<br />' + currencyHelp + '</td>\
- <td>' + getEcommerceSelector(0) + '<br />' + ecommerceHelp + '</td>\
- <td>' + submitButtonHtml + '</td>\
- <td><span class="cancel link_but">' + sprintf(_pk_translate('General_OrCancel'), "", "") + '</span></td>\
- </tr>'))
- .appendTo('#editSites')
- ;
-
- piwikHelper.lazyScrollTo('#' + newRowId);
-
- $('.addsite').click(function () {
- sendAddSiteAJAX($('tr#' + newRowId));
- });
-
- $('.cancel').click(function () {
- piwikHelper.hideAjaxError();
- $(this).parents('tr').remove();
- $('.addRowSite').toggle();
- });
- return false;
- });
-
- // when click on deleteuser, the we ask for confirmation and then delete the user
- $('.deleteSite').click(function () {
- piwikHelper.hideAjaxError();
- var idRow = $(this).attr('id');
- var nameToDelete = $(this).parent().parent().find('input#siteName').val() || $(this).parent().parent().find('td#siteName').html();
- var idsiteToDelete = $(this).parent().parent().find('#idSite').html();
-
- $('#confirm').find('h2').text(sprintf(_pk_translate('SitesManager_DeleteConfirm'), '"' + nameToDelete + '" (idSite = ' + idsiteToDelete + ')'));
- piwikHelper.modalConfirm('#confirm', { yes: function () {
-
- sendDeleteSiteAJAX(idsiteToDelete);
- }});
- }
- );
-
- var alreadyEdited = [];
- $('.editSite')
- .click(function () {
- piwikHelper.hideAjaxError();
- var idRow = $(this).attr('id');
- if (alreadyEdited[idRow] == 1) return;
- if (siteBeingEdited) {
- $('#alert').find('h2').text(sprintf(_pk_translate('SitesManager_OnlyOneSiteAtTime'), '"' + $("<div/>").html(siteBeingEditedName).text() + '"'));
- piwikHelper.modalConfirm('#alert', {});
- return;
- }
- siteBeingEdited = true;
-
- alreadyEdited[idRow] = 1;
- $('tr#' + idRow + ' .editableSite').each(
- // make the fields editable
- // change the EDIT button to VALID button
- function (i, n) {
- var contentBefore = $(n).html();
-
- var idName = $(n).attr('id');
- if (idName == 'siteName') {
- siteBeingEditedName = contentBefore;
- var contentAfter = '<input id="' + idName + '" value="' + piwikHelper.htmlEntities( piwikHelper.htmlDecode(contentBefore))+ '" size="15" />';
-
- var inputSave = $('<br/><input style="margin-top:50px" type="submit" class="submit" value="' + _pk_translate('General_Save') + '" />')
- .click(function () { submitUpdateSite($(this).parent()); });
- var spanCancel = $('<div><br/>' + sprintf(_pk_translate('General_OrCancel'), "", "") + '</div>')
- .click(function () { piwikHelper.refreshAfter(0); });
- $(n)
- .html(contentAfter)
- .keypress(submitSiteOnEnter)
- .append(inputSave)
- .append(spanCancel);
- }
- else if (idName == 'urls') {
- var keepURLFragmentsForSite = $(this).closest('tr').attr('data-keep-url-fragments');
- var contentAfter = '<textarea cols="25" rows="3" id="urls">' + contentBefore.replace(/<br *\/? *> */gi, "\n") + '</textarea>';
- contentAfter += '<br />' + aliasUrlsHelp + keepURLFragmentSelectHTML;
- $(n).html(contentAfter).find('select').val(keepURLFragmentsForSite);
- }
- else if (idName == 'excludedIps') {
- var contentAfter = '<textarea cols="20" rows="4" id="excludedIps">' + contentBefore.replace(/<br *\/? *>/gi, "\n") + '</textarea>';
- contentAfter += '<br />' + excludedIpHelp;
- $(n).html(contentAfter);
- }
- else if (idName == 'excludedQueryParameters') {
- var contentAfter = '<textarea cols="20" rows="4" id="excludedQueryParameters">' + contentBefore.replace(/<br *\/? *>/gi, "\n") + '</textarea>';
- contentAfter += '<br />' + excludedQueryParametersHelp;
- $(n).html(contentAfter);
- }
- else if (idName == 'excludedUserAgents') {
- var contentAfter = '<textarea cols="20" rows="4" id="excludedUserAgents">' +
- contentBefore.replace(/<br *\/? *>/gi, "\n") + '</textarea><br />' + excludedUserAgentsHelp;
- $(n).html(contentAfter);
- }
- else if (idName == 'timezone') {
- var contentAfter = getTimezoneSelector(contentBefore);
- contentAfter += '<br />' + timezoneHelp;
- $(n).html(contentAfter);
- }
- else if (idName == 'currency') {
- var contentAfter = getCurrencySelector(contentBefore);
- contentAfter += '<br />' + currencyHelp;
- $(n).html(contentAfter);
- }
- else if (idName == 'ecommerce') {
- var ecommerceActive = contentBefore.indexOf("ecommerceActive") > 0 ? 1 : 0;
- contentAfter = getEcommerceSelector(ecommerceActive) + '<br />' + ecommerceHelp;
- $(n).html(contentAfter);
- }
- else if (idName == 'sitesearch') {
- contentAfter = getSitesearchSelector(contentBefore);
- $(n).html(contentAfter);
- onClickSiteSearchUseDefault();
- }
- }
- );
- $(this)
- .toggle()
- .parent()
- .prepend($('<input type="submit" class="updateSite submit" value="' + _pk_translate('General_Save') + '" />')
- .click(function () { sendUpdateSiteAJAX($('tr#' + idRow)); })
- );
- });
-
- $('#globalSettingsSubmit').click(function () {
- sendGlobalSettingsAJAX();
- });
-
- $('#defaultTimezone').html(getTimezoneSelector(defaultTimezone));
- $('#defaultCurrency').html(getCurrencySelector(defaultCurrency));
-
- $('td.editableSite').click(function (event) {
- $(this).parent().find('.editSite').click();
- });
- };
-
- function getSitesearchSelector(contentBefore) {
- var globalKeywordParameters = $('input#globalSearchKeywordParameters').val().trim();
- var globalCategoryParameters = $('input#globalSearchCategoryParameters').val().trim();
- if (contentBefore) {
- var enabled = contentBefore.indexOf("sitesearchActive") > 0 ? 1 : 0;
- var spanSearch = $(contentBefore).filter('.sskp');
- var searchKeywordParameters = spanSearch.attr('sitesearch_keyword_parameters').trim();
- var searchCategoryParameters = spanSearch.attr('sitesearch_category_parameters').trim();
- var checked = globalKeywordParameters.length && !searchKeywordParameters.trim().length;
- } else {
- var searchKeywordParameters = globalKeywordParameters;
- var searchCategoryParameters = globalCategoryParameters;
- var enabled = searchKeywordParameters.length || searchCategoryParameters.length; // default is enabled
- var checked = enabled;
- }
-
- var searchGlobalHasValues = globalKeywordParameters.trim().length;
- var html = '<select id="sitesearch" onchange="return onClickSiteSearchUseDefault();">';
- var selected = ' selected="selected" ';
- html += '<option ' + (enabled ? selected : '') + ' value="1">' + sitesearchEnabled + '</option>';
- html += '<option ' + (enabled ? '' : selected) + ' value="0">' + sitesearchDisabled + '</option>';
- html += '</select>';
- html += '<span style="font-size: 11px;"><br/>';
-
- if (searchGlobalHasValues) {
- var checkedStr = checked ? ' checked ' : '';
- html += '<span id="sitesearchUseDefault"' + (!enabled ? ' style="display:none" ' : '') + '><input type="checkbox" '
- + checkedStr + ' id="sitesearchUseDefaultCheck" onclick="return onClickSiteSearchUseDefault();"> '
- + sitesearchUseDefault + ' </span>';
- + '</label>';
-
- html += '<div ' + ((checked && enabled) ? '' : 'style="display-none"') + ' class="searchDisplayParams form-description">'
- + searchKeywordLabel + ' (' + strDefault + ') ' + ': '
- + piwikHelper.htmlEntities( globalKeywordParameters )
- + (globalCategoryParameters.length ? ', ' + searchCategoryLabel + ': ' + piwikHelper.htmlEntities(globalCategoryParameters) : '')
- + '</div>';
- }
- html += '<div id="sitesearchIntro">' + sitesearchIntro + '</div>';
-
- html += '<div id="searchSiteParameters">';
- html += '<br/><label><div style="margin-bottom:3px">'
- + piwikHelper.htmlEntities(searchKeywordLabel)
- + '</div><input type="text" size="22" id="searchKeywordParameters" value="'
- + piwikHelper.htmlEntities(searchKeywordParameters)
- + '" style="font-size:9pt;font-family:monospace"></input>'
- + searchKeywordHelp + '</label>';
-
- // if custom var plugin is disabled, category tracking not supported
- if (globalCategoryParameters != 'globalSearchCategoryParametersIsDisabled') {
- html += '<br/><label><div style="margin-bottom:3px">' + searchCategoryLabel + '</div><input type="text" size="22" id="searchCategoryParameters" value="' + searchCategoryParameters + '" style="font-size:9pt;font-family:monospace"></input>' + searchCategoryHelp + '</label>';
- }
- html += '</div></span>';
-
- return html;
- }
-
- function getEcommerceSelector(enabled) {
- var html = '<select id="ecommerce">';
- var selected = ' selected="selected" ';
- html += '<option ' + (enabled ? '' : selected) + ' value="0">' + ecommerceDisabled + '</option>';
- html += '<option ' + (enabled ? selected : '') + ' value="1">' + ecommerceEnabled + '</option>';
- html += '</select>';
- return html;
- }
-
- function getTimezoneSelector(selectedTimezone) {
- var html = '<select id="timezones">';
- for (var continent in timezones) {
- html += '<optgroup label="' + continent + '">';
- for (var timezoneId in timezones[continent]) {
- var selected = '';
- if (timezoneId == selectedTimezone) {
- selected = ' selected="selected" ';
- }
- html += '<option ' + selected + ' value="' + timezoneId + '">' + timezones[continent][timezoneId] + '</option>';
- }
- html += "</optgroup>\n";
- }
- html += '</select>';
- return html;
- }
-
-
- function getCurrencySelector(selectedCurrency) {
- var html = '<select id="currencies">';
- for (var currency in currencies) {
- var selected = '';
- if (currency == selectedCurrency) {
- selected = ' selected="selected" ';
- }
- html += '<option ' + selected + ' value="' + currency + '">' + currencies[currency] + '</option>';
- }
- html += '</select>';
- return html;
- }
-
- function submitSiteOnEnter(e) {
- var key = e.keyCode || e.which;
- if (key == 13) {
- submitUpdateSite(this);
- $(this).find('.addsite').click();
- }
- }
-
- function submitUpdateSite(self) {
- $(self).parent().find('.updateSite').click();
- }
-}
-
-function onClickSiteSearchUseDefault() {
- // Site Search enabled
- if ($('select#sitesearch').val() == "1") {
- $('#sitesearchUseDefault').show();
-
- // Use default is checked
- if ($('#sitesearchUseDefaultCheck').is(':checked')) {
- $('#searchSiteParameters').hide();
- $('#sitesearchIntro').show();
- $('#searchKeywordParameters,#searchCategoryParameters').val('');
- $('.searchDisplayParams').show();
- // Use default is unchecked
-
- } else {
- $('#sitesearchIntro').hide();
- $('.searchDisplayParams').hide();
- $('#searchSiteParameters').show();
- }
- } else {
- $('.searchDisplayParams').hide();
- $('#sitesearchUseDefault').hide();
- $('#searchSiteParameters').hide();
- $('#sitesearchIntro').show();
- }
-}
-
-$(function () {
-
- // when code element is clicked, select the text
- $('.trackingHelp code').click(function() {
- // credit where credit is due:
- // http://stackoverflow.com/questions/1173194/select-all-div-text-with-single-mouse-click
- var range;
- if (document.body.createTextRange) // MSIE
- {
- range = document.body.createTextRange();
- range.moveToElementText(this);
- range.select();
- }
- else if (window.getSelection) // others
- {
- range = document.createRange();
- range.selectNodeContents(this);
-
- var selection = window.getSelection();
- selection.removeAllRanges();
- selection.addRange(range);
- }
- })
- .click();
-});
diff --git a/plugins/SitesManager/javascripts/sites-manager-controller.js b/plugins/SitesManager/javascripts/sites-manager-controller.js
new file mode 100644
index 0000000000..6da2f511e4
--- /dev/null
+++ b/plugins/SitesManager/javascripts/sites-manager-controller.js
@@ -0,0 +1,244 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+angular.module('piwikApp').controller('SitesManagerController', function ($scope, $filter, coreAPI, coreAdminAPI, sitesManagerAPI, piwik, sitesManagerApiHelper) {
+
+ var translate = $filter('translate');
+
+ var init = function () {
+
+ initModel();
+ initActions();
+ };
+
+ var initModel = function() {
+
+ $scope.sites = [];
+ $scope.hasSuperUserAccess = piwik.hasSuperUserAccess;
+ $scope.redirectParams = {showaddsite: false};
+
+ initSelectLists();
+ initUtcTime();
+ initUserIP();
+ initCustomVariablesActivated();
+ initIsTimezoneSupportEnabled();
+ initGlobalParams();
+ };
+
+ var initActions = function () {
+
+ $scope.cancelEditSite = cancelEditSite;
+ $scope.addSite = addSite;
+ $scope.saveGlobalSettings = saveGlobalSettings;
+
+ $scope.informSiteIsBeingEdited = informSiteIsBeingEdited;
+ $scope.lookupCurrentEditSite = lookupCurrentEditSite;
+ };
+
+ var informSiteIsBeingEdited = function() {
+
+ $scope.siteIsBeingEdited = true;
+ };
+
+ var initSelectLists = function() {
+
+ initSiteSearchSelectOptions();
+ initEcommerceSelectOptions();
+ initCurrencyList();
+ initTimezones();
+ };
+
+ var initGlobalParams = function() {
+
+ showLoading();
+
+ sitesManagerAPI.getGlobalSettings(function(globalSettings) {
+
+ $scope.globalSettings = globalSettings;
+
+ $scope.globalSettings.searchKeywordParametersGlobal = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.globalSettings.searchKeywordParametersGlobal);
+ $scope.globalSettings.searchCategoryParametersGlobal = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.globalSettings.searchCategoryParametersGlobal);
+ $scope.globalSettings.excludedIpsGlobal = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.globalSettings.excludedIpsGlobal);
+ $scope.globalSettings.excludedQueryParametersGlobal = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.globalSettings.excludedQueryParametersGlobal);
+ $scope.globalSettings.excludedUserAgentsGlobal = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.globalSettings.excludedUserAgentsGlobal);
+
+ initKeepURLFragmentsList();
+
+ initSiteList();
+
+ triggerAddSiteIfRequested();
+ });
+ };
+
+ var triggerAddSiteIfRequested = function() {
+
+ if(piwikHelper.getArrayFromQueryString(String(window.location.search))['showaddsite'] == 1)
+ addSite();
+ };
+
+ var initEcommerceSelectOptions = function() {
+
+ $scope.eCommerceptions = [
+ {key: '0', value: translate('SitesManager_NotAnEcommerceSite')},
+ {key: '1', value: translate('SitesManager_EnableEcommerce')}
+ ];
+ };
+
+ var initUtcTime = function() {
+
+ var currentDate = new Date();
+
+ $scope.utcTime = new Date(
+ currentDate.getUTCFullYear(),
+ currentDate.getUTCMonth(),
+ currentDate.getUTCDate(),
+ currentDate.getUTCHours(),
+ currentDate.getUTCMinutes(),
+ currentDate.getUTCSeconds()
+ );
+ };
+
+ var initIsTimezoneSupportEnabled = function() {
+
+ sitesManagerAPI.isTimezoneSupportEnabled(function (timezoneSupportEnabled) {
+ $scope.timezoneSupportEnabled = timezoneSupportEnabled;
+ });
+ };
+
+ var initTimezones = function() {
+
+ sitesManagerAPI.getTimezonesList(
+
+ function (timezones) {
+
+ $scope.timezones = [];
+
+ angular.forEach(timezones, function(groupTimezones, timezoneGroup) {
+
+ angular.forEach(groupTimezones, function(label, code) {
+
+ $scope.timezones.push({
+ group: timezoneGroup,
+ code: code,
+ label: label
+ });
+ });
+ });
+ }
+ );
+ };
+
+ var initCustomVariablesActivated = function() {
+
+ coreAdminAPI.isPluginActivated(
+
+ function (customVariablesActivated) {
+ $scope.customVariablesActivated = customVariablesActivated;
+ },
+
+ {pluginName: 'CustomVariables'}
+ );
+ };
+
+ var initUserIP = function() {
+
+ coreAPI.getIpFromHeader(function(ip) {
+ $scope.currentIpAddress = ip;
+ });
+ };
+
+ var initSiteSearchSelectOptions = function() {
+
+ $scope.siteSearchOptions = [
+ {key: '1', value: translate('SitesManager_EnableSiteSearch')},
+ {key: '0', value: translate('SitesManager_DisableSiteSearch')}
+ ];
+ };
+
+ var initKeepURLFragmentsList = function() {
+
+ $scope.keepURLFragmentsOptions = {
+ 0: ($scope.globalSettings.keepURLFragmentsGlobal ? translate('General_Yes') : translate('General_No')) + ' (' + translate('General_Default') + ')',
+ 1: translate('General_Yes'),
+ 2: translate('General_No')
+ };
+ };
+
+ var addSite = function() {
+ $scope.sites.push({});
+ };
+
+ var saveGlobalSettings = function() {
+
+ var ajaxHandler = new ajaxHelper();
+
+ ajaxHandler.addParams({
+ module: 'SitesManager',
+ format: 'json',
+ action: 'setGlobalSettings'
+ }, 'GET');
+
+ ajaxHandler.addParams({
+ timezone: $scope.globalSettings.defaultTimezone,
+ currency: $scope.globalSettings.defaultCurrency,
+ excludedIps: $scope.globalSettings.excludedIpsGlobal.join(','),
+ excludedQueryParameters: $scope.globalSettings.excludedQueryParametersGlobal.join(','),
+ excludedUserAgents: $scope.globalSettings.excludedUserAgentsGlobal.join(','),
+ keepURLFragments: $scope.globalSettings.keepURLFragmentsGlobal ? 1 : 0,
+ enableSiteUserAgentExclude: $scope.globalSettings.siteSpecificUserAgentExcludeEnabled ? 1 : 0,
+ searchKeywordParameters: $scope.globalSettings.searchKeywordParametersGlobal.join(','),
+ searchCategoryParameters: $scope.globalSettings.searchCategoryParametersGlobal.join(',')
+ }, 'POST');
+
+ ajaxHandler.redirectOnSuccess($scope.redirectParams);
+ ajaxHandler.setLoadingElement();
+ ajaxHandler.send(true);
+ };
+
+ var cancelEditSite = function ($event) {
+ $event.stopPropagation();
+ piwikHelper.redirect($scope.redirectParams);
+ };
+
+ var lookupCurrentEditSite = function () {
+
+ var sitesInEditMode = $scope.sites.filter(function(site) {
+ return site.editMode;
+ });
+
+ return sitesInEditMode[0];
+ };
+
+ var initSiteList = function () {
+
+ sitesManagerAPI.getSitesWithAdminAccess(function (sites) {
+
+ angular.forEach(sites, function(site) {
+ $scope.sites.push(site);
+ });
+
+ hideLoading();
+ });
+ };
+
+ var initCurrencyList = function () {
+
+ sitesManagerAPI.getCurrencyList(function (currencies) {
+ $scope.currencies = currencies;
+ });
+ };
+
+ var showLoading = function() {
+ $scope.loading = true;
+ };
+
+ var hideLoading = function() {
+ $scope.loading = false;
+ };
+
+ init();
+});
diff --git a/plugins/SitesManager/javascripts/sites-manager-directives.js b/plugins/SitesManager/javascripts/sites-manager-directives.js
new file mode 100644
index 0000000000..2357d3da60
--- /dev/null
+++ b/plugins/SitesManager/javascripts/sites-manager-directives.js
@@ -0,0 +1,85 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+angular.module('piwikApp').directive('sitesManagerMultilineField', function () {
+
+ return {
+ restrict: 'A',
+ replace: true,
+ scope: {
+ managedValue: '=field',
+ rows: '@?',
+ cols: '@?'
+ },
+ templateUrl: 'plugins/SitesManager/templates/directives/multiline-field.html?cb=' + piwik.cacheBuster,
+ link: function (scope) {
+
+ var separator = '\n';
+
+ var init = function () {
+
+ scope.field = {};
+ scope.onChange = updateManagedScopeValue;
+
+ scope.$watch('managedValue', updateInputValue);
+ };
+
+ var updateManagedScopeValue = function () {
+ scope.managedValue = scope.field.value.trim().split(separator);
+ };
+
+ var updateInputValue = function () {
+
+ if(angular.isUndefined(scope.managedValue))
+ return;
+
+ scope.field.value = scope.managedValue.join(separator);
+ };
+
+ init();
+ }
+ };
+});
+
+angular.module('piwikApp').directive('sitesManagerEditTrigger', function () {
+
+ return {
+ restrict: 'A',
+ link: function (scope, element) {
+
+ element.bind('click', function(){
+
+ if(!scope.site.editMode)
+ scope.$apply(scope.editSite());
+ });
+
+ scope.$watch('site.editMode', function() {
+
+ element.toggleClass('editable-site-field', !scope.site.editMode);
+ });
+ }
+ };
+});
+
+angular.module('piwikApp').directive('sitesManagerScroll', function () {
+
+ return {
+ restrict: 'A',
+ link: function (scope, element) {
+
+ scope.$watch('site.editMode', function() {
+
+ if(scope.site.editMode)
+ scrollToSite();
+ });
+
+ var scrollToSite = function() {
+ piwikHelper.lazyScrollTo(element[0], 500, true);
+ };
+ }
+ };
+});
diff --git a/plugins/SitesManager/javascripts/sites-manager-recipes.js b/plugins/SitesManager/javascripts/sites-manager-recipes.js
new file mode 100644
index 0000000000..a95fc8bef3
--- /dev/null
+++ b/plugins/SitesManager/javascripts/sites-manager-recipes.js
@@ -0,0 +1,95 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+angular.module('piwikApp').factory('sitesManagerAPI', function SitesManagerAPIFactory(sitesManagerApiHelper) {
+
+ var api = sitesManagerApiHelper;
+
+ return {
+ getCurrencyList: api.fetchApi('SitesManager.getCurrencyList', api.singleObjectAdaptor),
+ getSitesWithAdminAccess: api.fetchApi('SitesManager.getSitesWithAdminAccess', api.noop, {fetchAliasUrls: true}),
+ getTimezonesList: api.fetchApi('SitesManager.getTimezonesList', api.noop),
+ isTimezoneSupportEnabled: api.fetchApi('SitesManager.isTimezoneSupportEnabled', api.valueAdaptor),
+ getGlobalSettings: api.fetchAction('SitesManager', 'getGlobalSettings', api.singleObjectAdaptor)
+ };
+});
+
+// can probably be shared
+angular.module('piwikApp').factory('coreAPI', function CoreAPIFactory(sitesManagerApiHelper) {
+
+ var api = sitesManagerApiHelper;
+
+ return {
+ getIpFromHeader: api.fetchApi('API.getIpFromHeader', api.valueAdaptor)
+ };
+});
+
+// can probably be shared
+angular.module('piwikApp').factory('coreAdminAPI', function CoreAdminAPIFactory(sitesManagerApiHelper) {
+
+ var api = sitesManagerApiHelper;
+
+ return {
+ isPluginActivated: api.fetchApi('CoreAdminHome.isPluginActivated', api.valueAdaptor)
+ };
+});
+
+// can probably be renamed and shared
+angular.module('piwikApp').factory('sitesManagerApiHelper', function SitesManagerAPIHelperFactory(piwikApi) {
+
+ return {
+
+ fetch: function (endpoint, jsonResponseAdaptor, params) {
+
+ return function (clientHandover, additionalParams) {
+
+ params = angular.extend(params || {}, additionalParams || {});
+
+ var requestDefinition = angular.extend(endpoint, params);
+
+ var responseHandler = function (response) {
+
+ response = jsonResponseAdaptor(response);
+
+ clientHandover(response);
+ };
+
+ piwikApi.fetch(requestDefinition).then(responseHandler);
+ }
+ },
+
+ commaDelimitedFieldToArray: function(value) {
+
+ if(value == null || value == '')
+ return [];
+
+ return value.split(',');
+ },
+
+ fetchApi: function (apiMethod, jsonResponseAdaptor, params) {
+
+ return this.fetch({method: apiMethod}, jsonResponseAdaptor, params);
+ },
+
+ fetchAction: function (module, action, jsonResponseAdaptor, params) {
+
+ return this.fetch({module: module, action: action}, jsonResponseAdaptor, params);
+ },
+
+ singleObjectAdaptor: function (response) {
+ return response[0];
+ },
+
+ valueAdaptor: function (response) {
+ return response.value;
+ },
+
+ noop: function (response) {
+ return response;
+ }
+ };
+});
diff --git a/plugins/SitesManager/javascripts/sites-manager-site-controller.js b/plugins/SitesManager/javascripts/sites-manager-site-controller.js
new file mode 100644
index 0000000000..c6ea22e45d
--- /dev/null
+++ b/plugins/SitesManager/javascripts/sites-manager-site-controller.js
@@ -0,0 +1,164 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+angular.module('piwikApp').controller('SitesManagerSiteController', function ($scope, $filter, sitesManagerApiHelper) {
+
+ var translate = $filter('translate');
+
+ var init = function () {
+
+ initModel();
+ initActions();
+ };
+
+ var initActions = function () {
+
+ $scope.editSite = editSite;
+ $scope.saveSite = saveSite;
+ $scope.openDeleteDialog = openDeleteDialog;
+ $scope.site.delete = deleteSite;
+ };
+
+ var initModel = function() {
+
+ if(siteIsNew())
+ initNewSite();
+ else
+ initExistingSite();
+
+ $scope.site.editDialog = {};
+ $scope.site.removeDialog = {};
+ };
+
+ var editSite = function () {
+
+ if ($scope.siteIsBeingEdited) {
+
+ $scope.site.editDialog.show = true;
+ $scope.site.editDialog.title = translate('SitesManager_OnlyOneSiteAtTime', '"' + $scope.lookupCurrentEditSite().name + '"');
+
+ } else {
+
+ $scope.site.editMode = true;
+ $scope.informSiteIsBeingEdited();
+ }
+ };
+
+ var saveSite = function() {
+
+ var sendSiteSearchKeywordParams = $scope.site.sitesearch == '1' && !$scope.site.useDefaultSiteSearchParams;
+ var sendSearchCategoryParameters = sendSiteSearchKeywordParams && $scope.customVariablesActivated;
+
+ var ajaxHandler = new ajaxHelper();
+ ajaxHandler.addParams({
+ module: 'API',
+ format: 'json'
+ }, 'GET');
+
+ if(siteIsNew()) {
+
+ ajaxHandler.addParams({
+ method: 'SitesManager.addSite'
+ }, 'GET');
+
+ } else {
+
+ ajaxHandler.addParams({
+ idSite: $scope.site.idsite,
+ method: 'SitesManager.updateSite'
+ }, 'GET');
+ }
+
+ ajaxHandler.addParams({
+ siteName: $scope.site.name,
+ timezone: $scope.site.timezone,
+ currency: $scope.site.currency,
+ ecommerce: $scope.site.ecommerce,
+ excludedIps: $scope.site.excluded_ips.join(','),
+ excludedQueryParameters: $scope.site.excluded_parameters.join(','),
+ excludedUserAgents: $scope.site.excluded_user_agents.join(','),
+ keepURLFragments: $scope.site.keep_url_fragment,
+ siteSearch: $scope.site.sitesearch,
+ searchKeywordParameters: sendSiteSearchKeywordParams ? $scope.site.sitesearch_keyword_parameters.join(',') : null,
+ searchCategoryParameters: sendSearchCategoryParameters ? $scope.site.sitesearch_category_parameters.join(',') : null,
+ urls: $scope.site.alias_urls
+ }, 'POST');
+
+ ajaxHandler.redirectOnSuccess($scope.redirectParams);
+ ajaxHandler.setLoadingElement();
+ ajaxHandler.send(true);
+ };
+
+ var siteIsNew = function() {
+ return angular.isUndefined($scope.site.idsite);
+ };
+
+ var initNewSite = function() {
+
+ $scope.informSiteIsBeingEdited();
+
+ $scope.site.editMode = true;
+ $scope.site.name = "Name";
+ $scope.site.alias_urls = [
+ "http://siteUrl.com/",
+ "http://siteUrl2.com/"
+ ];
+ $scope.site.keep_url_fragment = "0";
+ $scope.site.excluded_ips = [];
+ $scope.site.excluded_parameters = [];
+ $scope.site.excluded_user_agents = [];
+ $scope.site.sitesearch_keyword_parameters = [];
+ $scope.site.sitesearch_category_parameters = [];
+ $scope.site.sitesearch = $scope.globalSettings.searchKeywordParametersGlobal.length ? "1" : "0";
+ $scope.site.timezone = $scope.globalSettings.defaultTimezone;
+ $scope.site.currency = $scope.globalSettings.defaultCurrency;
+ $scope.site.ecommerce = "0";
+
+ updateSiteWithSiteSearchConfig();
+ };
+
+ var initExistingSite = function() {
+
+ $scope.site.excluded_ips = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.site.excluded_ips);
+ $scope.site.excluded_parameters = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.site.excluded_parameters);
+ $scope.site.excluded_user_agents = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.site.excluded_user_agents);
+ $scope.site.sitesearch_keyword_parameters = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.site.sitesearch_keyword_parameters);
+ $scope.site.sitesearch_category_parameters = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.site.sitesearch_category_parameters);
+
+ updateSiteWithSiteSearchConfig();
+ };
+
+ var updateSiteWithSiteSearchConfig = function() {
+
+ $scope.site.useDefaultSiteSearchParams =
+ $scope.globalSettings.searchKeywordParametersGlobal.length && !$scope.site.sitesearch_keyword_parameters.length;
+ };
+
+ var openDeleteDialog = function() {
+
+ $scope.site.removeDialog.title = translate('SitesManager_DeleteConfirm', '"' + $scope.site.name + '" (idSite = ' + $scope.site.idsite + ')');
+ $scope.site.removeDialog.show = true;
+ };
+
+ var deleteSite = function() {
+
+ var ajaxHandler = new ajaxHelper();
+
+ ajaxHandler.addParams({
+ idSite: $scope.site.idsite,
+ module: 'API',
+ format: 'json',
+ method: 'SitesManager.deleteSite'
+ }, 'GET');
+
+ ajaxHandler.redirectOnSuccess($scope.redirectParams);
+ ajaxHandler.setLoadingElement();
+ ajaxHandler.send(true);
+ };
+
+ init();
+});
diff --git a/plugins/SitesManager/stylesheets/SitesManager.less b/plugins/SitesManager/stylesheets/SitesManager.less
index 3ff7fee967..de6c74f990 100644
--- a/plugins/SitesManager/stylesheets/SitesManager.less
+++ b/plugins/SitesManager/stylesheets/SitesManager.less
@@ -25,45 +25,14 @@
vertical-align: middle;
}
-#editSites {
- vertical-align: top;
-}
-
-#editSites h4 {
- font-size: .8em;
- margin: 1em 0 1em 0;
- font-weight: bold;
-}
-
-#editSites .entityTable tr td {
- vertical-align: top;
- padding-top: 7px;
-}
-
-#editSites .addRowSite:hover,
-#editSites .editableSite:hover,
-#editSites .addsite:hover,
-#editSites .cancel:hover,
-#editSites .deleteSite:hover,
-#editSites .editSite:hover,
-#editSites .updateSite:hover {
+td.editable-site-field:hover {
cursor: pointer;
}
-#editSites .addRowSite a {
- text-decoration: none;
-}
-
-#editSites .addRowSite {
- padding: 1em;
- font-weight: bold;
-}
-
-.ecommerceInactive,
-.sitesearchInactive {
- color: @theme-color-text-lighter;
+.link_but:hover {
+ cursor: pointer;
}
-#searchSiteParameters {
- display: none;
+.link_but:hover > span {
+ text-decoration: underline;
} \ No newline at end of file
diff --git a/plugins/SitesManager/templates/dialogs/dialogs.html b/plugins/SitesManager/templates/dialogs/dialogs.html
new file mode 100644
index 0000000000..476505e7bf
--- /dev/null
+++ b/plugins/SitesManager/templates/dialogs/dialogs.html
@@ -0,0 +1,3 @@
+<div ng-include="'plugins/SitesManager/templates/dialogs/edit-dialog.html'"></div>
+
+<div ng-include="'plugins/SitesManager/templates/dialogs/remove-dialog.html'"></div>
diff --git a/plugins/SitesManager/templates/dialogs/edit-dialog.html b/plugins/SitesManager/templates/dialogs/edit-dialog.html
new file mode 100644
index 0000000000..afb9910869
--- /dev/null
+++ b/plugins/SitesManager/templates/dialogs/edit-dialog.html
@@ -0,0 +1,6 @@
+<div class="ui-confirm" piwik-dialog="site.editDialog.show">
+
+ <h2>{{ site.editDialog.title }}</h2>
+
+ <input role="no" type="button" value="{{ 'General_Ok'|translate }}"/>
+</div>
diff --git a/plugins/SitesManager/templates/dialogs/remove-dialog.html b/plugins/SitesManager/templates/dialogs/remove-dialog.html
new file mode 100644
index 0000000000..fee3d6ae89
--- /dev/null
+++ b/plugins/SitesManager/templates/dialogs/remove-dialog.html
@@ -0,0 +1,7 @@
+<div class="ui-confirm" piwik-dialog="site.removeDialog.show" yes="site.delete()">
+
+ <h2>{{ site.removeDialog.title }}</h2>
+
+ <input type="button" value="{{ 'General_Yes'|translate }}" role="yes"/>
+ <input type="button" value="{{ 'General_No'|translate }}" role="no" />
+</div>
diff --git a/plugins/SitesManager/templates/directives/multiline-field.html b/plugins/SitesManager/templates/directives/multiline-field.html
new file mode 100644
index 0000000000..fed8822dc1
--- /dev/null
+++ b/plugins/SitesManager/templates/directives/multiline-field.html
@@ -0,0 +1,7 @@
+<textarea
+ cols="{{ cols }}"
+ rows="{{ rows }}"
+ ng-model="field.value"
+ ng-change="onChange()">
+
+</textarea>
diff --git a/plugins/SitesManager/templates/global-settings.html b/plugins/SitesManager/templates/global-settings.html
new file mode 100644
index 0000000000..049d7b5386
--- /dev/null
+++ b/plugins/SitesManager/templates/global-settings.html
@@ -0,0 +1,189 @@
+<div ng-show="hasSuperUserAccess">
+
+ <br/>
+
+ <h2 id="globalSettings">{{ 'SitesManager_GlobalWebsitesSettings' | translate }}</h2>
+
+ <br/>
+
+ <table style="width:600px;" class="adminTable">
+
+ <tr>
+ <td colspan="2">
+ <strong>{{ 'SitesManager_GlobalListExcludedIps'|translate }}</strong>
+
+ <p>{{ 'SitesManager_ListOfIpsToBeExcludedOnAllWebsites'|translate }} </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div sites-manager-multiline-field field="globalSettings.excludedIpsGlobal" cols="30" rows="3" id="excludedIpsGlobal"></div>
+ </td>
+ <td>
+ <label for="excludedIpsGlobal" ng-include="'plugins/SitesManager/templates/help/excluded-ip-help.html'">
+ </label>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <strong>{{ 'SitesManager_GlobalListExcludedQueryParameters'|translate }}</strong>
+
+ <p>{{ 'SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites'|translate }} </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <div sites-manager-multiline-field field="globalSettings.excludedQueryParametersGlobal" cols="30" rows="3" id="excludedQueryParametersGlobal"></div>
+ </td>
+ <td>
+ <label for="excludedQueryParametersGlobal" ng-include="'plugins/SitesManager/templates/help/excluded-query-parameters-help.html'">
+ </label>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <strong>{{ 'SitesManager_GlobalListExcludedUserAgents'|translate }}</strong>
+
+ <p>{{ 'SitesManager_GlobalListExcludedUserAgents_Desc'|translate }}</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <div sites-manager-multiline-field field="globalSettings.excludedUserAgentsGlobal" cols="30" rows="3" id="excludedUserAgentsGlobal"></div>
+ </td>
+
+ <td>
+ <label for="excludedUserAgentsGlobal" ng-include="'plugins/SitesManager/templates/help/excluded-user-agents-help.html'">
+ </label>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <input type="checkbox" id="siteSpecificUserAgentExcludeEnabled" ng-model="globalSettings.siteSpecificUserAgentExcludeEnabled">
+
+ <label for="siteSpecificUserAgentExcludeEnabled">
+ {{ 'SitesManager_EnableSiteSpecificUserAgentExclude'|translate }}
+ </label>
+ </td>
+ <td>
+ <div class="ui-inline-help" ng-bind-html="'SitesManager_EnableSiteSpecificUserAgentExclude_Help'|translate:'<a href=\'#excludedUserAgentsGlobal\'>':'</a>'"></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <strong>{{ 'SitesManager_KeepURLFragments'|translate }}</strong>
+
+ <p ng-bind-html="'SitesManager_KeepURLFragmentsHelp'|translate:'<em>#</em>':'<em>example.org/index.html#first_section</em>':'<em>example.org/index.html</em>'"></p>
+
+ <input type="checkbox" id="keepURLFragmentsGlobal" ng-model="globalSettings.keepURLFragmentsGlobal">
+
+ <label for="keepURLFragmentsGlobal">{{ 'SitesManager_KeepURLFragmentsLong'|translate }}</label>
+
+ <p>{{ 'SitesManager_KeepURLFragmentsHelp2'|translate }}</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+
+ <strong>{{ 'SitesManager_TrackingSiteSearch'|translate }}</strong>
+
+ <p>{{ 'SitesManager_SiteSearchUse' | translate }}</p>
+
+ <span class="form-description" style="font-size:8pt;">
+ {{ 'SitesManager_SearchParametersNote'|translate }} {{ 'SitesManager_SearchParametersNote2'|translate }}
+ </span>
+
+ <br/>
+ <br/>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <label>{{ 'SitesManager_SearchKeywordLabel' | translate }} &nbsp;
+ <input ng-list size="15" ng-model="globalSettings.searchKeywordParametersGlobal">
+ </label>
+ </td>
+ <td>
+ <div class="ui-inline-help" style='width: 200px;'>
+ {{ 'SitesManager_SearchKeywordParametersDesc' | translate }}
+ </div>
+
+ <br/>
+ <br/>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <span ng-hide="customVariablesActivated" class='form-description'>Note: you could also track your Internal Search Engine Categories, but the plugin Custom Variables is required. Please enable the plugin CustomVariables (or ask your Piwik admin).</span>
+ <span ng-show="customVariablesActivated"> {{ 'Goals_Optional'|translate }} {{ 'SitesManager_SearchCategoryDesc'|translate }} <br/> </span>
+
+ <br/>
+ </td>
+ </tr>
+
+ <tr ng-show="customVariablesActivated">
+ <td>
+ <label>{{ 'SitesManager_SearchCategoryLabel' | translate }} &nbsp;
+ <input ng-list size="15" ng-model="globalSettings.searchCategoryParametersGlobal">
+ </label>
+ </td>
+ <td>
+ <div class="ui-inline-help" style='width: 200px;'>
+ {{ 'Goals_Optional'|translate }} {{ 'SitesManager_SearchCategoryParametersDesc'|translate }}
+ </div>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <strong>{{ 'SitesManager_DefaultTimezoneForNewWebsites'|translate }}</strong>
+
+ <p>{{ 'SitesManager_SelectDefaultTimezone'|translate }} </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <select
+ ng-model="globalSettings.defaultTimezone"
+ ng-options="t.code as t.label group by t.group for t in timezones">
+ </select>
+ </td>
+ <td ng-include="'plugins/SitesManager/templates/help/timezone-help.html'">
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <strong>{{ 'SitesManager_DefaultCurrencyForNewWebsites'|translate }}</strong>
+
+ <p>{{ 'SitesManager_SelectDefaultCurrency'|translate }}</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <select
+ ng-model="globalSettings.defaultCurrency"
+ ng-options="k as v for (k, v) in currencies">
+ </select>
+ </td>
+ <td>
+ <div class="ui-inline-help">{{ 'SitesManager_CurrencySymbolWillBeUsedForGoals' | translate }}</div>
+ </td>
+ </tr>
+ </table>
+
+ <span style="margin-left:20px;">
+ <input type="submit" class="submit" ng-click="saveGlobalSettings()" value="{{ 'General_Save'|translate }}"/>
+ </span>
+
+</div>
diff --git a/plugins/SitesManager/templates/global-settings.twig b/plugins/SitesManager/templates/global-settings.twig
deleted file mode 100644
index 2d69ee15e3..0000000000
--- a/plugins/SitesManager/templates/global-settings.twig
+++ /dev/null
@@ -1,178 +0,0 @@
-{% if isSuperUser %}
- <br/>
-
- <h2 id="globalSettings">{{ 'SitesManager_GlobalWebsitesSettings'|translate }}</h2>
- <br/>
- <table style="width:600px;" class="adminTable">
-
- <tr>
- <td colspan="2">
- <strong>{{ 'SitesManager_GlobalListExcludedIps'|translate }}</strong>
-
- <p>{{ 'SitesManager_ListOfIpsToBeExcludedOnAllWebsites'|translate }} </p>
- </td>
- </tr>
- <tr>
- <td>
- <textarea cols="30" rows="3" id="globalExcludedIps">
- {{- globalExcludedIps -}}
- </textarea>
- </td>
- <td>
- <label for="globalExcludedIps">{{ excludedIpHelp }}</label>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <strong>{{ 'SitesManager_GlobalListExcludedQueryParameters'|translate }}</strong>
-
- <p>{{ 'SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites'|translate }} </p>
- </td>
- </tr>
-
- <tr>
- <td>
- <textarea cols="30" rows="3" id="globalExcludedQueryParameters">
- {{- globalExcludedQueryParameters -}}
- </textarea>
- </td>
- <td>
- <label for="globalExcludedQueryParameters">{{ excludedQueryParametersHelp }}</label>
- </td>
- </tr>
-
- {# global excluded user agents #}
- <tr>
- <td colspan="2">
- <strong>{{ 'SitesManager_GlobalListExcludedUserAgents'|translate }}</strong>
-
- <p>{{ 'SitesManager_GlobalListExcludedUserAgents_Desc'|translate }}</p>
- </td>
- </tr>
-
- <tr>
- <td>
- <textarea cols="30" rows="3" id="globalExcludedUserAgents">
- {{- globalExcludedUserAgents -}}
- </textarea>
- </td>
- <td><label for="globalExcludedUserAgents">{{ excludedUserAgentsHelp }}</label>
- </td>
- </tr>
-
- <tr>
- <td>
- <input type="checkbox" id="enableSiteUserAgentExclude" name="enableSiteUserAgentExclude"
- {% if allowSiteSpecificUserAgentExclude %}checked="checked"{% endif %}/>
- <label for="enableSiteUserAgentExclude">
- {{ 'SitesManager_EnableSiteSpecificUserAgentExclude'|translate }}
- </label>
- <span id="enableSiteUserAgentExclude-loading" class="loadingPiwik" style="display:none;">
- <img src="plugins/Morpheus/images/loading-blue.gif"/>
- </span>
- </td>
- <td>
- {{ piwik.inlineHelp('SitesManager_EnableSiteSpecificUserAgentExclude_Help'|translate('<a href="#editSites">','</a>'))|raw }}
- </td>
- </tr>
-
- {# global keep URL fragments #}
- <tr>
- <td colspan="2">
- <strong>{{ 'SitesManager_KeepURLFragments'|translate }}</strong>
-
- <p>{{ 'SitesManager_KeepURLFragmentsHelp'|translate("<em>#</em>","<em>example.org/index.html#first_section</em>","<em>example.org/index.html</em>")|raw }}
- </p>
- <input type="checkbox" id="globalKeepURLFragments" name="globalKeepURLFragments"
- {% if globalKeepURLFragments %}checked="checked"{% endif %}/>
- <label for="globalKeepURLFragments">{{ 'SitesManager_KeepURLFragmentsLong'|translate }}</label>
-
- <p>{{ 'SitesManager_KeepURLFragmentsHelp2'|translate }}</p>
- </td>
- </tr>
-
- {# global site search #}
- <tr>
- <td colspan="2">
- <strong id="globalSiteSearch">{{ 'SitesManager_TrackingSiteSearch'|translate }}</strong>
-
- <p>{{ sitesearchIntro }}</p>
- <span class="form-description" style="font-size:8pt;">
- {{ 'SitesManager_SearchParametersNote'|translate }} {{ 'SitesManager_SearchParametersNote2'|translate }}
- </span>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <label>{{ searchKeywordLabel }} &nbsp;
- <input type="text" size="15" id="globalSearchKeywordParameters"
- value="{{ globalSearchKeywordParameters|raw }}"/>
-
- <div style='width: 200px;float:right;'>{{ searchKeywordHelp }}</div>
- </label>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- {% if not isSearchCategoryTrackingEnabled %}
- <input value='globalSearchCategoryParametersIsDisabled' id="globalSearchCategoryParameters"
- type='hidden'/>
- <span class='form-description'>Note: you could also track your Internal Search Engine Categories, but the plugin Custom Variables is required. Please enable the plugin CustomVariables (or ask your Piwik admin).</span>
- {% else %}
- {{ 'Goals_Optional'|translate }} {{ 'SitesManager_SearchCategoryDesc'|translate }} <br/>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <label>{{ searchCategoryLabel }} &nbsp;
- <input type="text" size="15" id="globalSearchCategoryParameters"
- value="{{ globalSearchCategoryParameters|raw }}"/>
-
- <div style='width: 200px;float:right;'>{{ searchCategoryHelp }}</div>
- </label>
- {% endif %}
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <strong>{{ 'SitesManager_DefaultTimezoneForNewWebsites'|translate }}</strong>
-
- <p>{{ 'SitesManager_SelectDefaultTimezone'|translate }} </p>
- </td>
- </tr>
- <tr>
- <td>
- <div id='defaultTimezone'></div>
- </td>
- <td>
- {{ defaultTimezoneHelp }}
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <strong>{{ 'SitesManager_DefaultCurrencyForNewWebsites'|translate }}</strong>
-
- <p>{{ 'SitesManager_SelectDefaultCurrency'|translate }}</p>
- </td>
- </tr>
- <tr>
- <td>
- <div id='defaultCurrency'></div>
- </td>
- <td>
- {{ currencyHelpPlain }}
- </td>
- </tr>
- </table>
-
- <span style="margin-left:20px;">
- <input type="submit" class="submit" id='globalSettingsSubmit' value="{{ 'General_Save'|translate }}"/>
- </span>
-
- {{ ajax.errorDiv('ajaxErrorGlobalSettings') }}
- {{ ajax.loadingDiv('ajaxLoadingGlobalSettings') }}
-{% endif %}
diff --git a/plugins/SitesManager/templates/help/excluded-ip-help.html b/plugins/SitesManager/templates/help/excluded-ip-help.html
new file mode 100644
index 0000000000..d652d1d4d1
--- /dev/null
+++ b/plugins/SitesManager/templates/help/excluded-ip-help.html
@@ -0,0 +1,8 @@
+<div class="ui-inline-help">
+
+ {{ 'SitesManager_HelpExcludedIps' | translate : '1.2.3.*' : '1.2.*.*' }}
+
+ <br/><br/>
+
+ <span ng-bind-html="'SitesManager_YourCurrentIpAddressIs'|translate:'<i>' + currentIpAddress + '</i>'"></span>
+</div>
diff --git a/plugins/SitesManager/templates/help/excluded-query-parameters-help.html b/plugins/SitesManager/templates/help/excluded-query-parameters-help.html
new file mode 100644
index 0000000000..33b09e91c9
--- /dev/null
+++ b/plugins/SitesManager/templates/help/excluded-query-parameters-help.html
@@ -0,0 +1,8 @@
+<div class="ui-inline-help">
+
+ {{ 'SitesManager_ListOfQueryParametersToExclude'|translate }}
+
+ <br/><br/>
+
+ {{ 'SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters'|translate:'phpsessid, sessionid, ...' }}
+</div>
diff --git a/plugins/SitesManager/templates/help/excluded-user-agents-help.html b/plugins/SitesManager/templates/help/excluded-user-agents-help.html
new file mode 100644
index 0000000000..d85fd6a79c
--- /dev/null
+++ b/plugins/SitesManager/templates/help/excluded-user-agents-help.html
@@ -0,0 +1,8 @@
+<div class="ui-inline-help">
+
+ {{ 'SitesManager_GlobalExcludedUserAgentHelp1'|translate }}
+
+ <br/><br/>
+
+ {{ 'SitesManager_GlobalListExcludedUserAgents_Desc'|translate }} {{ 'SitesManager_GlobalExcludedUserAgentHelp2'|translate }}
+</div>
diff --git a/plugins/SitesManager/templates/help/timezone-help.html b/plugins/SitesManager/templates/help/timezone-help.html
new file mode 100644
index 0000000000..1787541516
--- /dev/null
+++ b/plugins/SitesManager/templates/help/timezone-help.html
@@ -0,0 +1,21 @@
+<div class="ui-inline-help">
+
+ <span ng-switch="timezoneSupportEnabled">
+
+ <span ng-switch-default>
+ {{ 'SitesManager_AdvancedTimezoneSupportNotFound'|translate }}
+ </span>
+
+ <span ng-switch-when="true">
+ {{ 'SitesManager_ChooseCityInSameTimezoneAsYou'|translate }}
+ </span>
+ </span>
+
+ <br/><br/>
+
+ {{ 'SitesManager_UTCTimeIs'| translate : (utcTime | date : 'yyyy-MM-dd HH:mm:ss') }}
+
+ <br/><br/>
+
+ {{ 'SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward'|translate }}
+</div>
diff --git a/plugins/SitesManager/templates/index.html b/plugins/SitesManager/templates/index.html
new file mode 100644
index 0000000000..9ecd346dff
--- /dev/null
+++ b/plugins/SitesManager/templates/index.html
@@ -0,0 +1,11 @@
+<div ng-controller="SitesManagerController">
+
+ <div ng-include="'plugins/SitesManager/templates/sites-manager-header.html'"></div>
+
+ <div ng-include="'plugins/SitesManager/templates/loading.html'"></div>
+
+ <div ng-include="'plugins/SitesManager/templates/sites-list/sites-list.html'"></div>
+
+ <div ng-include="'plugins/SitesManager/templates/global-settings.html'"></div>
+
+</div>
diff --git a/plugins/SitesManager/templates/index.twig b/plugins/SitesManager/templates/index.twig
index 0720410640..40cf84c0f2 100644
--- a/plugins/SitesManager/templates/index.twig
+++ b/plugins/SitesManager/templates/index.twig
@@ -2,65 +2,6 @@
{% block content %}
- {% import 'macros.twig' as piwik %}
- {% import 'ajaxMacros.twig' as ajax %}
-
- {% set excludedIpHelp %}
- {{ 'SitesManager_HelpExcludedIps'|translate("1.2.3.*","1.2.*.*") }}
- <br/><br/>
- {{ 'SitesManager_YourCurrentIpAddressIs'|translate("<i>" ~ currentIpAddress ~ "</i>")|raw }}
- {% endset %}
- {% set excludedIpHelp=piwik.inlineHelp(excludedIpHelp) %}
-
- {% set defaultTimezoneHelpPlain %}
- {% if timezoneSupported %}
- {{ 'SitesManager_ChooseCityInSameTimezoneAsYou'|translate }}
- {% else %}
- {{ 'SitesManager_AdvancedTimezoneSupportNotFound'|translate }}
- {% endif %}
- <br/><br/>
- {{ 'SitesManager_UTCTimeIs'|translate(utcTime) }}
- {% endset %}
- {% set defaultTimezoneHelp=piwik.inlineHelp(defaultTimezoneHelpPlain) %}
-
- {% set currencyHelpPlain %}
- {{ piwik.inlineHelp('SitesManager_CurrencySymbolWillBeUsedForGoals'|translate) }}
- {% endset %}
-
- {% set excludedQueryParametersHelp %}
- {{ 'SitesManager_ListOfQueryParametersToExclude'|translate }}
- <br/><br/>
- {{ 'SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters'|translate("phpsessid, sessionid, ...") }}
- {% endset %}
- {% set excludedQueryParametersHelp=piwik.inlineHelp(excludedQueryParametersHelp) %}
-
- {% set excludedUserAgentsHelp %}
- {{ 'SitesManager_GlobalExcludedUserAgentHelp1'|translate }}
- <br/><br/>
- {{ 'SitesManager_GlobalListExcludedUserAgents_Desc'|translate }} {{ 'SitesManager_GlobalExcludedUserAgentHelp2'|translate }}
- {% endset %}
- {% set excludedUserAgentsHelp=piwik.inlineHelp(excludedUserAgentsHelp) %}
-
- {% set searchCategoryHelpText %}
- {{ 'Goals_Optional'|translate }} {{ 'SitesManager_SearchCategoryParametersDesc'|translate }}
- {% endset %}
-
- {% set searchCategoryHelp=piwik.inlineHelp(searchCategoryHelpText) %}
-
- {% set searchCategoryLabel='SitesManager_SearchCategoryLabel'|translate %}
-
- {% set searchKeywordHelp=piwik.inlineHelp('SitesManager_SearchKeywordParametersDesc'|translate) %}
-
- {% set sitesearchIntro='SitesManager_SiteSearchUse'|translate %}
-
- {% set searchKeywordLabel='SitesManager_SearchKeywordLabel'|translate %}
-
- {% include '@SitesManager/sites-manager-heading.twig' %}
-
- {% include '@SitesManager/sites-management.twig' %}
-
- {% include '@SitesManager/global-settings.twig' %}
-
- {% include '@SitesManager/init-script.twig' %}
+ <div ng-include="'plugins/SitesManager/templates/index.html'"></div>
{% endblock %}
diff --git a/plugins/SitesManager/templates/init-script.twig b/plugins/SitesManager/templates/init-script.twig
deleted file mode 100644
index 98a1a5e1dd..0000000000
--- a/plugins/SitesManager/templates/init-script.twig
+++ /dev/null
@@ -1,63 +0,0 @@
-{% set ecommerceHelpPlain %}
- {{ 'SitesManager_EcommerceHelp'|translate }}
- <br/>
- {{ 'SitesManager_PiwikOffersEcommerceAnalytics'|translate("<a href='http://piwik.org/docs/ecommerce-analytics/' target='_blank'>","</a>")|raw }}
-{% endset %}
-
-{% set timezoneHelpPlain %}
- {{ defaultTimezoneHelpPlain }}
- <br/><br/>
- {{ 'SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward'|translate }}
-{% endset %}
-
-{% set keepURLFragmentSelectHTML %}
- <h4 style="display:inline-block;">{{ 'SitesManager_KeepURLFragmentsLong'|translate }}</h4>
-
- <select id="keepURLFragmentSelect">
- <option value="0"> {% if globalKeepURLFragments %}{{ 'General_Yes'|translate }}{% else %}{{ 'General_No'|translate }}{% endif %}
- ({{ 'General_Default'|translate }})
- </option>
- <option value="1">{{ 'General_Yes'|translate }}</option>
- <option value="2">{{ 'General_No'|translate }}</option>
- </select>
-{% endset %}
-
-<script type="text/javascript">
-
- var excludedIpHelp = '{{ excludedIpHelp|e('js') }}';
- var aliasUrlsHelp = '{{ piwik.inlineHelp('SitesManager_AliasUrlHelp'|translate)|e('js') }}';
- var excludedQueryParametersHelp = '{{ excludedQueryParametersHelp|e('js') }}';
- var excludedUserAgentsHelp = '{{ excludedUserAgentsHelp|e('js') }}';
- var timezoneHelp = '{{ piwik.inlineHelp(timezoneHelpPlain)|e('js') }}';
- var currencyHelp = '{{ currencyHelpPlain|e('js') }}';
- var ecommerceHelp = '{{ piwik.inlineHelp(ecommerceHelpPlain)|e('js') }}';
- var searchKeywordHelp = '{{ searchKeywordHelp|e('js') }}';
- var searchCategoryHelp = '{{ searchCategoryHelp|e('js') }}';
- var sitesearchDesc = '{{ 'SitesManager_TrackingSiteSearch'|translate|e('js') }}';
-
- var ecommerceEnabled = '{{ 'SitesManager_EnableEcommerce'|translate|e('js') }}';
- var ecommerceDisabled = '{{ 'SitesManager_NotAnEcommerceSite'|translate|e('js') }}';
- var sitesearchEnabled = '{{ 'SitesManager_EnableSiteSearch'|translate|e('js') }}';
- var sitesearchDisabled = '{{ 'SitesManager_DisableSiteSearch'|translate|e('js') }}';
-
- var keepURLFragmentSelectHTML = '{{ keepURLFragmentSelectHTML|e('js') }}';
-
- var searchKeywordLabel = '{{ searchKeywordLabel|e('js') }}';
- var searchCategoryLabel = '{{ searchCategoryLabel|e('js') }}';
-
- var sitesearchIntro = '{{ piwik.inlineHelp(sitesearchIntro)|e('js') }}';
- var sitesearchUseDefault = '{% if isSuperUser %}{{ 'SitesManager_SearchUseDefault'|translate('<a href="#globalSiteSearch">','</a>')|e('js') }}{% else %}{{ 'SitesManager_SearchUseDefault'|translate('','')|e('js') }}{% endif %}';
- var strDefault = '{{ 'General_Default'|translate|e('js') }}';
-
- var sitesManager = new SitesManager({{ timezones|raw }}, {{ currencies|raw }}, '{{ defaultTimezone|raw }}', '{{ defaultCurrency|raw }}');
-
- $(function () {
- sitesManager.init();
- });
-
- {% if showAddSite %}
- $(document).ready(function () {
- $('.addRowSite:first').trigger('click');
- });
- {% endif %}
-</script> \ No newline at end of file
diff --git a/plugins/SitesManager/templates/loading.html b/plugins/SitesManager/templates/loading.html
new file mode 100644
index 0000000000..6aaa13d436
--- /dev/null
+++ b/plugins/SitesManager/templates/loading.html
@@ -0,0 +1,6 @@
+<div ng-show="loading">
+ <div class="loadingPiwik">
+ <img src="plugins/Morpheus/images/loading-blue.gif" alt="{{ 'General_LoadingData'|translate }}" />
+ {{ 'General_LoadingData'|translate }}
+ </div>
+</div> \ No newline at end of file
diff --git a/plugins/SitesManager/templates/sites-list/add-site-link.html b/plugins/SitesManager/templates/sites-list/add-site-link.html
new file mode 100644
index 0000000000..fd17255269
--- /dev/null
+++ b/plugins/SitesManager/templates/sites-list/add-site-link.html
@@ -0,0 +1,3 @@
+<a ng-show="hasSuperUserAccess && !siteIsBeingEdited" class="addRowSite" ng-click="addSite()">
+ {{ 'SitesManager_AddSite'|translate }}
+</a>
diff --git a/plugins/SitesManager/templates/sites-list/alias-urls-field.html b/plugins/SitesManager/templates/sites-list/alias-urls-field.html
new file mode 100644
index 0000000000..456f64c446
--- /dev/null
+++ b/plugins/SitesManager/templates/sites-list/alias-urls-field.html
@@ -0,0 +1,23 @@
+<span ng-switch-default>
+ <div ng-repeat="url in site.alias_urls">
+ {{ url | prettyUrl }}
+ </div>
+</span>
+
+<span ng-switch-when="true">
+
+ <div sites-manager-multiline-field field="site.alias_urls" cols="25" rows="3"></div>
+
+ <div class="ui-inline-help">
+ {{ 'SitesManager_AliasUrlHelp' | translate }}
+ </div>
+
+ <h4 style="display:inline-block;">
+ {{ 'SitesManager_KeepURLFragmentsLong'|translate }}
+ </h4>
+
+ <select ng-options="key as value for (key, value) in keepURLFragmentsOptions"
+ ng-model="site.keep_url_fragment"
+ >
+ </select>
+</span>
diff --git a/plugins/SitesManager/templates/sites-list/site-fields.html b/plugins/SitesManager/templates/sites-list/site-fields.html
new file mode 100644
index 0000000000..7e8e2d4587
--- /dev/null
+++ b/plugins/SitesManager/templates/sites-list/site-fields.html
@@ -0,0 +1,182 @@
+<td sites-manager-edit-trigger>
+ {{ site.idsite }}
+</td>
+
+<td ng-switch="site.editMode" sites-manager-edit-trigger>
+
+ <span ng-switch-default>
+ {{ site.name }}
+ </span>
+
+ <span ng-switch-when="true">
+
+ <input type="text" ng-model="site.name"/>
+
+ <br/>
+ <br/>
+
+ <input type="submit" class="submit" value="{{ 'General_Save' | translate }}" ng-click="saveSite()"/>
+
+ <br/>
+ <br/>
+
+ <span class="link_but" ng-click="cancelEditSite($event)">
+ <span>{{ 'General_OrCancel' | translate:'':'' }}</span>
+ </span>
+ </span>
+
+</td>
+
+<td
+ sites-manager-edit-trigger
+ ng-include="'plugins/SitesManager/templates/sites-list/alias-urls-field.html'"
+ ng-switch="site.editMode">
+</td>
+
+<td ng-switch="site.editMode" sites-manager-edit-trigger>
+
+ <span ng-switch-default>
+ <div ng-repeat="ip in site.excluded_ips">
+ {{ ip }}
+ </div>
+ </span>
+
+ <span ng-switch-when="true">
+
+ <div sites-manager-multiline-field field="site.excluded_ips" cols="20" rows="4"></div>
+
+ <div ng-include="'plugins/SitesManager/templates/help/excluded-ip-help.html'"></div>
+ </span>
+
+</td>
+
+<td ng-switch="site.editMode" sites-manager-edit-trigger>
+
+ <span ng-switch-default>
+ <div ng-repeat="parameter in site.excluded_parameters">
+ {{ parameter }}
+ </div>
+ </span>
+
+ <span ng-switch-when="true">
+
+ <div sites-manager-multiline-field field="site.excluded_parameters" cols="20" rows="4"></div>
+
+ <div ng-include="'plugins/SitesManager/templates/help/excluded-query-parameters-help.html'"></div>
+ </span>
+
+</td>
+
+<td ng-show="globalSettings.siteSpecificUserAgentExcludeEnabled" ng-switch="site.editMode" sites-manager-edit-trigger>
+
+ <span ng-switch-default>
+ <div ng-repeat="userAgent in site.excluded_user_agents">
+ {{ userAgent }}
+ </div>
+ </span>
+
+ <span ng-switch-when="true">
+
+ <div sites-manager-multiline-field field="site.excluded_user_agents" cols="20" rows="4"></div>
+
+ <div ng-include="'plugins/SitesManager/templates/help/excluded-user-agents-help.html'"></div>
+ </span>
+
+</td>
+
+<td
+ sites-manager-edit-trigger
+ ng-include="'plugins/SitesManager/templates/sites-list/site-search-field.html'"
+ ng-switch="site.editMode">
+</td>
+
+
+<td ng-switch="site.editMode" sites-manager-edit-trigger>
+
+ <span ng-switch-default>
+ {{ site.timezone }}
+ </span>
+
+ <span ng-switch-when="true">
+ <select
+ ng-model="site.timezone"
+ ng-options="t.code as t.label group by t.group for t in timezones">
+ </select>
+
+ <div ng-include="'plugins/SitesManager/templates/help/timezone-help.html'"></div>
+
+ </span>
+</td>
+
+<td ng-switch="site.editMode" sites-manager-edit-trigger>
+
+ <span ng-switch-default>
+ {{ site.currency }}
+ </span>
+
+ <span ng-switch-when="true">
+
+ <select
+ ng-model="site.currency"
+ ng-options="k as v for (k, v) in currencies">
+ </select>
+
+ <div class="ui-inline-help">
+ {{ 'SitesManager_CurrencySymbolWillBeUsedForGoals' | translate }}
+ </div>
+
+ </span>
+</td>
+
+<td ng-switch="site.editMode" sites-manager-edit-trigger>
+
+ <span ng-switch-default ng-switch="site.ecommerce">
+
+ <span ng-switch-default>-</span>
+ <span ng-switch-when="1">{{ 'General_Yes'|translate }}</span>
+ </span>
+
+ <span ng-switch-when="true">
+
+ <select ng-options="option.key as option.value for option in eCommerceptions" ng-model="site.ecommerce">
+ </select>
+
+ <div class="ui-inline-help">
+ {{ 'SitesManager_EcommerceHelp' | translate }}
+ <br/>
+ <span ng-bind-html="'SitesManager_PiwikOffersEcommerceAnalytics'|translate:'<a href=\'http://piwik.org/docs/ecommerce-analytics/\' target=\'_blank\'>':'</a>'"></span>
+ </div>
+ </span>
+</td>
+
+<td ng-switch="site.editMode">
+
+ <span ng-switch-default class="link_but" ng-click="editSite()">
+ <img src='plugins/Morpheus/images/ico_edit.png'
+ title="{{ 'General_Edit'|translate }}"
+ border="0"
+ />
+ <span>{{ 'General_Edit'|translate }}</span>
+ </span>
+
+ <span ng-switch-when="true">
+
+ <input type="submit" class="submit" value="{{ 'General_Save' | translate }}" ng-click="saveSite()"/>
+ </span>
+</td>
+
+<td>
+ <span ng-show="site.idsite" class="link_but" ng-click="openDeleteDialog()">
+ <img
+ src='plugins/Morpheus/images/ico_delete.png'
+ title="{{ 'General_Delete'|translate }}"
+ border="0"/>
+ <span>{{ 'General_Delete'|translate }}</span>
+ </span>
+</td>
+
+<td>
+ <a ng-show="site.idsite" href="?module=CoreAdminHome&action=trackingCodeGenerator&idSite={{ site.idsite }}&updated=false">
+ {{ 'SitesManager_ShowTrackingTag'|translate }}
+ </a>
+</td>
diff --git a/plugins/SitesManager/templates/sites-list/site-search-field.html b/plugins/SitesManager/templates/sites-list/site-search-field.html
new file mode 100644
index 0000000000..c6754804e2
--- /dev/null
+++ b/plugins/SitesManager/templates/sites-list/site-search-field.html
@@ -0,0 +1,73 @@
+<span ng-switch-default ng-switch="site.sitesearch">
+ <span ng-switch-when="1">{{ 'General_Yes'|translate }}</span>
+ <span ng-switch-default>-</span>
+</span>
+
+<span ng-switch-when="true">
+
+ <select ng-options="option.key as option.value for option in siteSearchOptions" ng-model="site.sitesearch">
+ </select>
+
+ <div ng-show="site.sitesearch" style="font-size: 11px;">
+
+ <div ng-show="globalSettings.searchKeywordParametersGlobal.length">
+
+ <input type="checkbox" ng-model="site.useDefaultSiteSearchParams">
+
+ <span
+ ng-show="hasSuperUserAccess"
+ ng-bind-html="'SitesManager_SearchUseDefault'|translate:'<a href=\'#globalSettings\'>':'</a>'">
+ </span>
+ <span ng-hide="hasSuperUserAccess">
+ {{ 'SitesManager_SearchUseDefault' | translate:'':'' }}
+ </span>
+
+ <span ng-show="site.useDefaultSiteSearchParams" class="form-description">
+
+ {{ 'SitesManager_SearchKeywordLabel' | translate }}
+ ({{ 'General_Default' | translate }}) :
+
+ <span ng-repeat="param in globalSettings.searchKeywordParametersGlobal">
+ {{ param }}<span ng-show="!$last">, </span>
+ </span>
+
+ <span ng-show="globalSettings.searchCategoryParametersGlobal.length">
+ & {{ 'SitesManager_SearchCategoryLabel' | translate }} :
+ <span ng-repeat="param in globalSettings.searchCategoryParametersGlobal">
+ {{ param }}<span ng-show="!$last">, </span>
+ </span>
+ </span>
+
+ </span>
+
+ </div>
+
+ <div ng-hide="site.useDefaultSiteSearchParams">
+
+ <br/>
+
+ <label>
+ {{ 'SitesManager_SearchKeywordLabel' | translate }}
+ <input ng-list ng-model="site.sitesearch_keyword_parameters">
+ <div class="ui-inline-help">
+ {{ 'SitesManager_SearchKeywordParametersDesc' | translate }}
+ </div>
+ </label>
+
+ <label ng-show="customVariablesActivated">
+ {{ 'SitesManager_SearchCategoryLabel' | translate }}
+ <input ng-list ng-model="site.sitesearch_category_parameters">
+ <div class="ui-inline-help">
+ {{ 'Goals_Optional' | translate }} {{ 'SitesManager_SearchCategoryParametersDesc' | translate }}
+ </div>
+ </label>
+
+ </div>
+
+ </div>
+
+ <div class="ui-inline-help" ng-show="site.sitesearch == 0 || site.useDefaultSiteSearchParams">
+ {{ 'SitesManager_SiteSearchUse' | translate }}
+ </div>
+
+</span>
diff --git a/plugins/SitesManager/templates/sites-list/sites-list.html b/plugins/SitesManager/templates/sites-list/sites-list.html
new file mode 100644
index 0000000000..8252585d22
--- /dev/null
+++ b/plugins/SitesManager/templates/sites-list/sites-list.html
@@ -0,0 +1,39 @@
+<div class="entityContainer">
+
+ <div ng-repeat="site in sites" ng-include="'plugins/SitesManager/templates/dialogs/dialogs.html'"></div>
+
+ <div ng-include="'plugins/SitesManager/templates/sites-list/add-site-link.html'"></div>
+
+ <table class="entityTable dataTable">
+ <thead>
+ <tr>
+ <th>{{ 'General_Id'|translate }}</th>
+ <th>{{ 'General_Name'|translate }}</th>
+ <th>{{ 'SitesManager_Urls'|translate }}</th>
+ <th>{{ 'SitesManager_ExcludedIps'|translate }}</th>
+ <th>{{ 'SitesManager_ExcludedParameters'|translate }}</th>
+ <th ng-show="globalSettings.siteSpecificUserAgentExcludeEnabled">
+ {{ 'SitesManager_ExcludedUserAgents'|translate }}
+ </th>
+ <th>{{ 'Actions_SubmenuSitesearch'|translate }}</th>
+ <th>{{ 'SitesManager_Timezone'|translate }}</th>
+ <th>{{ 'SitesManager_Currency'|translate }}</th>
+ <th>{{ 'Goals_Ecommerce'|translate }}</th>
+ <th></th>
+ <th></th>
+ <th>{{ 'General_JsTrackingTag'|translate }}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr
+ sites-manager-scroll
+ ng-controller="SitesManagerSiteController"
+ ng-repeat="site in sites"
+ ng-include="'plugins/SitesManager/templates/sites-list/site-fields.html'">
+ </tr>
+ </tbody>
+ </table>
+
+ <div ng-include="'plugins/SitesManager/templates/sites-list/add-site-link.html'"></div>
+
+</div>
diff --git a/plugins/SitesManager/templates/sites-management.twig b/plugins/SitesManager/templates/sites-management.twig
deleted file mode 100644
index 70fcf31d0a..0000000000
--- a/plugins/SitesManager/templates/sites-management.twig
+++ /dev/null
@@ -1,125 +0,0 @@
-{{ ajax.errorDiv() }}
-{{ ajax.loadingDiv() }}
-
-{% set createNewWebsite %}
-<a href="javascript:" class="addRowSite">
- {{ 'SitesManager_AddSite'|translate }}
-</a>
-{% endset %}
-
-{% if adminSites|length == 0 %}
- {{ 'SitesManager_NoWebsites'|translate }}
-{% else %}
-
- <div class="ui-confirm" id="confirm">
- <h2></h2>
- <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
- <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
- </div>
- <div class="entityContainer">
- {% if isSuperUser %}
- {{ createNewWebsite }}
- {% endif %}
- <table class="entityTable dataTable" id="editSites">
- <thead>
- <tr>
- <th>{{ 'General_Id'|translate }}</th>
- <th>{{ 'General_Name'|translate }}</th>
- <th>{{ 'SitesManager_Urls'|translate }}</th>
- <th>{{ 'SitesManager_ExcludedIps'|translate }}</th>
- <th>{{ 'SitesManager_ExcludedParameters'|translate|replace({" ":"<br />"})|raw }}</th>
- <th id='exclude-user-agent-header'
- {% if not allowSiteSpecificUserAgentExclude %}style="display:none;"{% endif %}>{{ 'SitesManager_ExcludedUserAgents'|translate }}</th>
- <th>{{ 'Actions_SubmenuSitesearch'|translate }}</th>
- <th>{{ 'SitesManager_Timezone'|translate }}</th>
- <th>{{ 'SitesManager_Currency'|translate }}</th>
- <th>{{ 'Goals_Ecommerce'|translate }}</th>
- <th></th>
- <th></th>
- <th>{{ 'General_JsTrackingTag'|translate }}</th>
- </tr>
- </thead>
- <tbody>
- {% for i,site in adminSites %}
- <tr id="row{{ site.idsite }}" data-keep-url-fragments="{{ site.keep_url_fragment }}">
- <td id="idSite">{{ site.idsite }}</td>
- <td id="siteName" class="editableSite">
- {{- site.name|raw -}}
- </td>
- <td id="urls" class="editableSite">
- {%- for url in site.alias_urls -%}
- {{- url|trim|replace({'http://': ''})|raw -}}<br />
- {%- endfor -%}
- </td>
- <td id="excludedIps" class="editableSite">
- {%- for ip in site.excluded_ips -%}
- {{- ip -}}<br/>
- {%- endfor -%}
- </td>
- <td id="excludedQueryParameters" class="editableSite">
- {%- for parameter in site.excluded_parameters -%}
- {{- parameter|raw -}}<br />
- {%- endfor -%}
- </td>
- <td id="excludedUserAgents" class="editableSite"
- {% if not allowSiteSpecificUserAgentExclude %}style="display:none;"{% endif %}>
- {%- for ua in site.excluded_user_agents -%}
- {{- ua|raw -}}<br />
- {%- endfor -%}
- </td>
- <td id="sitesearch" class="editableSite">
- {% if site.sitesearch %}
- <span class="sitesearchActive">{{ 'General_Yes'|translate }}</span>
- {% else %}
- <span class="sitesearchInactive">-</span>
- {% endif %}
- <span class="sskp" sitesearch_keyword_parameters="{{- site.sitesearch_keyword_parameters -}}"
- sitesearch_category_parameters="{{- site.sitesearch_category_parameters -}}"
- id="sitesearch_parameters">
- </span>
- </td>
- <td id="timezone" class="editableSite">{{ site.timezone }}</td>
- <td id="currency" class="editableSite">{{ site.currency }}</td>
- <td id="ecommerce" class="editableSite">
- {% if site.ecommerce %}
- <span class='ecommerceActive'>{{ 'General_Yes'|translate }}</span>
- {% else %}
- <span class='ecommerceInactive'>-</span>
- {% endif %}
- </td>
- <td>
- <span id="row{{ site.idsite }}" class='editSite link_but'>
- <img src='plugins/Morpheus/images/ico_edit.png' title="{{ 'General_Edit'|translate }}"
- border="0"/>
- <span>{{ 'General_Edit'|translate }}</span>
- </span>
- </td>
- <td>
- <span id="row{{ site.idsite }}" class="deleteSite link_but">
- <img src='plugins/Morpheus/images/ico_delete.png' title="{{ 'General_Delete'|translate }}"
- border="0"/>
- <span>{{ 'General_Delete'|translate }}</span>
- </span>
- </td>
- <td>
- <a href='{{ linkTo({'module':'CoreAdminHome','action':'trackingCodeGenerator','idSite':site.idsite,'updated':false }) }}'>
- {{ 'SitesManager_ShowTrackingTag'|translate }}
- </a>
- </td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- {% if isSuperUser %}
- {{ createNewWebsite }}
- {% endif %}
- </div>
-{% endif %}
-
-{# Admin users use these values for Site Search column, when editing websites #}
-{% if not isSuperUser %}
- <input type="hidden" size="15" id="globalSearchKeywordParameters"
- value="{{ globalSearchKeywordParameters }}"/>
- <input type="hidden" size="15" id="globalSearchCategoryParameters"
- value="{{ globalSearchCategoryParameters }}"/>
-{% endif %}
diff --git a/plugins/SitesManager/templates/sites-manager-header.html b/plugins/SitesManager/templates/sites-manager-header.html
new file mode 100644
index 0000000000..968947182f
--- /dev/null
+++ b/plugins/SitesManager/templates/sites-manager-header.html
@@ -0,0 +1,18 @@
+<h2
+ piwik-enriched-headline
+ help-url="http://piwik.org/docs/manage-websites/"
+ feature-name="{{ 'SitesManager_WebsitesManagement'|translate }}">
+
+ {{ 'SitesManager_WebsitesManagement'|translate }}
+</h2>
+
+<p>
+ {{ 'SitesManager_MainDescription'|translate }}
+
+ <span ng-bind-html="'SitesManager_YouCurrentlyHaveAccessToNWebsites'|translate:'<strong>' + sites.length + '</strong>'"></span>
+
+ <span ng-show="hasSuperUserAccess">
+ <br/>
+ <span ng-bind-html="'SitesManager_SuperUserAccessCan'|translate:'<a href=\'#globalSettings\'>':'</a>'"></span>
+ </span>
+</p>
diff --git a/plugins/SitesManager/templates/sites-manager-heading.twig b/plugins/SitesManager/templates/sites-manager-heading.twig
deleted file mode 100644
index da72ec0c53..0000000000
--- a/plugins/SitesManager/templates/sites-manager-heading.twig
+++ /dev/null
@@ -1,12 +0,0 @@
-<h2 piwik-enriched-headline help-url="http://piwik.org/docs/manage-websites/">
- {{ 'SitesManager_WebsitesManagement'|translate }}
-</h2>
-
-<p>
- {{ 'SitesManager_MainDescription'|translate }}
- {{ 'SitesManager_YouCurrentlyHaveAccessToNWebsites'|translate("<strong>" ~ adminSitesCount ~ "</strong>")|raw }}
- {% if isSuperUser %}
- <br/>
- {{ 'SitesManager_SuperUserAccessCan'|translate("<a href='#globalSettings'>","</a>")|raw }}
- {% endif %}
-</p> \ No newline at end of file
diff --git a/tests/PHPUnit/Core/HttpTest.php b/tests/PHPUnit/Core/HttpTest.php
index e7cc44beef..5589a5c358 100644
--- a/tests/PHPUnit/Core/HttpTest.php
+++ b/tests/PHPUnit/Core/HttpTest.php
@@ -7,6 +7,9 @@
*/
use Piwik\Http;
+/**
+ * @group HttpTest
+ */
class HttpTest extends PHPUnit_Framework_TestCase
{
/**
@@ -57,14 +60,13 @@ class HttpTest extends PHPUnit_Framework_TestCase
/**
* @group Core
- *
* @dataProvider getMethodsToTest
*/
public function testCustomByteRange($method)
{
$result = Http::sendHttpRequestBy(
$method,
- 'http://builds.piwik.org/piwik-latest.zip',
+ 'http://localhost/piwik.js',
30,
$userAgent = null,
$destinationPath = null,
@@ -80,7 +82,7 @@ class HttpTest extends PHPUnit_Framework_TestCase
$this->assertEquals(206, $result['status']);
$this->assertTrue(isset($result['headers']['Content-Range']));
$this->assertEquals('bytes 10-20/', substr($result['headers']['Content-Range'], 0, 12));
- $this->assertEquals('application/zip', $result['headers']['Content-Type']);
+ $this->assertEquals('application/x-javascript', $result['headers']['Content-Type']);
}
}
diff --git a/tests/PHPUnit/Fixture.php b/tests/PHPUnit/Fixture.php
index bb6ce31018..c8e3529365 100644
--- a/tests/PHPUnit/Fixture.php
+++ b/tests/PHPUnit/Fixture.php
@@ -70,6 +70,7 @@ class Fixture extends PHPUnit_Framework_Assert
public $printToScreen = false;
public $testCaseClass = false;
+ public $extraPluginsToLoad = array();
public $testEnvironment = null;
@@ -182,7 +183,7 @@ class Fixture extends PHPUnit_Framework_Assert
Cache::deleteTrackerCache();
- static::loadAllPlugins($this->getTestEnvironment(), $this->testCaseClass);
+ static::loadAllPlugins($this->getTestEnvironment(), $this->testCaseClass, $this->extraPluginsToLoad);
$updater = new Updater();
$componentsWithUpdateFile = CoreUpdater::getComponentUpdates($updater);
@@ -285,20 +286,26 @@ class Fixture extends PHPUnit_Framework_Assert
Translate::unloadEnglishTranslation();
}
- public static function loadAllPlugins($testEnvironment = null, $testCaseClass = false)
+ public static function loadAllPlugins($testEnvironment = null, $testCaseClass = false, $extraPluginsToLoad = array())
{
+
$message = 'Load all plugins ';
Log::getInstance()->customLogToFileForDebuggingIfYouStillSeeThisHereRemoveIt($message, false);
+
+ if (empty($testEnvironment)) {
+ $testEnvironment = new Piwik_TestingEnvironment();
+ }
+
DbHelper::createTables();
$pluginsManager = \Piwik\Plugin\Manager::getInstance();
- $plugins = $pluginsManager->getPluginsToLoadDuringTests();
+ $plugins = $testEnvironment->getCoreAndSupportedPlugins();
// make sure the plugin that executed this method is included in the plugins to load
- $extraPlugins = array(
+ $extraPlugins = array_merge($extraPluginsToLoad, array(
\Piwik\Plugin::getPluginNameFromBacktrace(debug_backtrace()),
\Piwik\Plugin::getPluginNameFromNamespace($testCaseClass)
- );
+ ));
foreach ($extraPlugins as $pluginName) {
if (empty($pluginName)) {
continue;
diff --git a/tests/PHPUnit/Integration/ArchiveCronTest.php b/tests/PHPUnit/Integration/ArchiveCronTest.php
index 63778ce34c..25c8ff418a 100644
--- a/tests/PHPUnit/Integration/ArchiveCronTest.php
+++ b/tests/PHPUnit/Integration/ArchiveCronTest.php
@@ -15,6 +15,7 @@ use Piwik\Plugins\SitesManager\API;
* This tests that, when archiving is disabled,
* then Piwik API will return data that was pre-processed during archive.php run
*
+ * @group ArchiveCronTest
*/
class Test_Piwik_Integration_ArchiveCronTest extends IntegrationTestCase
{
diff --git a/tests/PHPUnit/Integration/ArchiveWebTest.php b/tests/PHPUnit/Integration/ArchiveWebTest.php
index 49c61792c7..c284a1ab12 100644
--- a/tests/PHPUnit/Integration/ArchiveWebTest.php
+++ b/tests/PHPUnit/Integration/ArchiveWebTest.php
@@ -11,6 +11,7 @@ use Piwik\Option;
/**
* Tests to call the archive.php script via web and check there is no error,
* @group Integration
+ * @group ArchiveWebTest
*/
class Test_Piwik_Integration_ArchiveWebTest extends IntegrationTestCase
{
@@ -21,7 +22,7 @@ class Test_Piwik_Integration_ArchiveWebTest extends IntegrationTestCase
if(self::isMysqli() && self::isTravisCI()) {
$this->markTestSkipped('Skipping on Mysqli as it randomly fails.');
}
- self::$fixture->setUp();
+
self::deleteArchiveTables();
$host = Fixture::getRootUrl();
@@ -30,7 +31,7 @@ class Test_Piwik_Integration_ArchiveWebTest extends IntegrationTestCase
$urlTmp = Option::get('piwikUrl');
Option::set('piwikUrl', $host . 'tests/PHPUnit/proxy/index.php');
- $streamContext = stream_context_create(array('http' => array('timeout' => 180)));
+ $streamContext = stream_context_create(array('http' => array('timeout' => 600)));
$url = $host . 'tests/PHPUnit/proxy/archive.php?token_auth=' . $token . '&forcelogtoscreen=1';
$output = file_get_contents($url, 0, $streamContext);
diff --git a/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php b/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php
index 12d3ab1868..da23211edf 100644
--- a/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php
+++ b/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php
@@ -14,6 +14,8 @@ use Piwik\Updater;
/**
* Tests that Piwik 2.0 works w/ data from Piwik 1.12.
+ *
+ * @group BackwardsCompatibility1XTest
*/
class Test_Piwik_Integration_BackwardsCompatibility1XTest extends IntegrationTestCase
{
@@ -119,4 +121,4 @@ class Test_Piwik_Integration_BackwardsCompatibility1XTest extends IntegrationTes
Test_Piwik_Integration_BackwardsCompatibility1XTest::$fixture = new Piwik_Test_Fixture_SqlDump();
Test_Piwik_Integration_BackwardsCompatibility1XTest::$fixture->dumpUrl =
PIWIK_INCLUDE_PATH . Test_Piwik_Integration_BackwardsCompatibility1XTest::FIXTURE_LOCATION;
-Test_Piwik_Integration_BackwardsCompatibility1XTest::$fixture->tablesPrefix = 'piwiktests_'; \ No newline at end of file
+Test_Piwik_Integration_BackwardsCompatibility1XTest::$fixture->tablesPrefix = ''; \ No newline at end of file
diff --git a/tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php b/tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php
index e14dfedae3..7b6b233ef4 100644
--- a/tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php
+++ b/tests/PHPUnit/Integration/Core/TravisEnvironmentTest.php
@@ -20,12 +20,13 @@ class Core_TravisEnvironmentTest extends DatabaseTestCase
return;
}
- $this->assertTrue(in_array($mysqlAdapter, array('PDO_MYSQL', 'MYSQLI')));
+ $this->assertTrue(in_array($mysqlAdapter, array('PDO_MYSQL', 'PDO\MYSQL', 'MYSQLI')));
$db = Piwik\Db::get();
switch ($mysqlAdapter) {
case 'PDO_MYSQL':
+ case 'PDO\MYSQL':
$this->assertInstanceOf('\Piwik\Db\Adapter\Pdo\Mysql', $db);
break;
case 'MYSQLI':
diff --git a/tests/PHPUnit/Integration/LabelFilterTest.php b/tests/PHPUnit/Integration/LabelFilterTest.php
index 5cdfe146a0..b8695f274b 100644
--- a/tests/PHPUnit/Integration/LabelFilterTest.php
+++ b/tests/PHPUnit/Integration/LabelFilterTest.php
@@ -9,6 +9,8 @@
/**
* Tests the class LabelFilter.
* This is not possible as unit test, since it loads data from the archive.
+ *
+ * @group LabelFilterTest
*/
class Test_Piwik_Integration_LabelFilter extends IntegrationTestCase
{
diff --git a/tests/PHPUnit/Integration/PrivacyManagerTest.php b/tests/PHPUnit/Integration/PrivacyManagerTest.php
index 04a1c65faa..c8a6d975b0 100644
--- a/tests/PHPUnit/Integration/PrivacyManagerTest.php
+++ b/tests/PHPUnit/Integration/PrivacyManagerTest.php
@@ -65,12 +65,12 @@ class PrivacyManagerTest extends IntegrationTestCase
// Temporarily disable the purge of old archives so that getNumeric('nb_visits')
// in _addReportData does not trigger the data purge of data we've just imported
- Rules::$purgeDisabledByTests = true;
+ \Piwik\ArchiveProcessor\Rules::disablePurgeOutdatedArchives();
self::_addLogData();
self::_addReportData();
- Rules::$purgeDisabledByTests = false;
+ \Piwik\ArchiveProcessor\Rules::enablePurgeOutdatedArchives();
self::$dbData = self::getDbTablesWithData();
}
diff --git a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getIpFromHeader.xml b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getIpFromHeader.xml
new file mode 100644
index 0000000000..7c42ec92e0
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getIpFromHeader.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>127.0.0.1</result> \ No newline at end of file
diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php
index 8ca26efcff..aa4ca74026 100755
--- a/tests/PHPUnit/IntegrationTestCase.php
+++ b/tests/PHPUnit/IntegrationTestCase.php
@@ -17,6 +17,7 @@ use Piwik\DbHelper;
use Piwik\ReportRenderer;
use Piwik\Translate;
use Piwik\UrlHelper;
+use Piwik\Log;
require_once PIWIK_INCLUDE_PATH . '/libs/PiwikTracker/PiwikTracker.php';
@@ -72,6 +73,8 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
public static function setUpBeforeClass()
{
+ Log::debug("Setting up " . get_called_class());
+
if (!isset(static::$fixture)) {
$fixture = new Fixture();
} else {
@@ -89,6 +92,8 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
public static function tearDownAfterClass()
{
+ Log::debug("Tearing down " . get_called_class());
+
if (!isset(static::$fixture)) {
$fixture = new Fixture();
} else {
@@ -537,7 +542,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
}
}
- protected function _testApiUrl($testName, $apiId, $requestUrl, $compareAgainst)
+ protected function _testApiUrl($testName, $apiId, $requestUrl, $compareAgainst, $xmlFieldsToRemove = array())
{
$isTestLogImportReverseChronological = strpos($testName, 'ImportedInRandomOrderTest') === false;
$isLiveMustDeleteDates = (strpos($requestUrl, 'Live.getLastVisits') !== false
@@ -561,6 +566,10 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
}
$response = $this->normalizePdfContent($response);
+ if (!empty($xmlFieldsToRemove)) {
+ $response = $this->removeXmlFields($response, $xmlFieldsToRemove);
+ }
+
$expected = $this->loadExpectedFile($expectedFilePath);
$expectedContent = $expected;
$expected = $this->normalizePdfContent($expected);
@@ -675,6 +684,11 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
'prettyDate',
'serverDateTimePrettyFirstAction'
);
+ return $this->removeXmlFields($input, $toRemove);
+ }
+
+ protected function removeXmlFields($input, $toRemove)
+ {
foreach ($toRemove as $xml) {
$input = $this->removeXmlElement($input, $xml);
}
@@ -815,7 +829,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
{
// make sure that the reports we process here are not directly deleted in ArchiveProcessor/PluginsArchiver
// (because we process reports in the past, they would sometimes be invalid, and would have been deleted)
- Rules::$purgeDisabledByTests = true;
+ \Piwik\ArchiveProcessor\Rules::disablePurgeOutdatedArchives();
$testName = 'test_' . static::getOutputPrefix();
$this->missingExpectedFiles = array();
@@ -860,6 +874,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
isset($params['fileExtension']) ? $params['fileExtension'] : false);
$compareAgainst = isset($params['compareAgainst']) ? ('test_' . $params['compareAgainst']) : false;
+ $xmlFieldsToRemove = @$params['xmlFieldsToRemove'];
foreach ($requestUrls as $apiId => $requestUrl) {
// this is a hack
@@ -869,11 +884,11 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
}
}
- $this->_testApiUrl($testName . $testSuffix, $apiId, $requestUrl, $compareAgainst);
+ $this->_testApiUrl($testName . $testSuffix, $apiId, $requestUrl, $compareAgainst, $xmlFieldsToRemove);
}
// Restore normal purge behavior
- Rules::$purgeDisabledByTests = false;
+ \Piwik\ArchiveProcessor\Rules::enablePurgeOutdatedArchives();
// change the language back to en
if ($this->lastLanguage != 'en') {
@@ -940,7 +955,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
{
$result = array();
foreach (DbHelper::getTablesInstalled() as $tableName) {
- $result[$tableName] = Db::fetchAll("SELECT * FROM $tableName");
+ $result[$tableName] = Db::fetchAll("SELECT * FROM `$tableName`");
}
return $result;
}
@@ -992,7 +1007,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
$rowsSql[] = "(" . implode(',', $values) . ")";
}
- $sql = "INSERT INTO $table VALUES " . implode(',', $rowsSql);
+ $sql = "INSERT INTO `$table` VALUES " . implode(',', $rowsSql);
Db::query($sql, $bind);
}
}
@@ -1003,7 +1018,9 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
public static function deleteArchiveTables()
{
foreach (ArchiveTableCreator::getTablesArchivesInstalled() as $table) {
- Db::query("DROP TABLE IF EXISTS $table");
+ Log::debug("Dropping table $table");
+
+ Db::query("DROP TABLE IF EXISTS `$table`");
}
ArchiveTableCreator::refreshTableList($forceReload = true);
diff --git a/tests/PHPUnit/TestingEnvironment.php b/tests/PHPUnit/TestingEnvironment.php
index 363c8a89b9..d2e8ad5c76 100644
--- a/tests/PHPUnit/TestingEnvironment.php
+++ b/tests/PHPUnit/TestingEnvironment.php
@@ -4,6 +4,7 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Piwik;
use Piwik\Option;
+use Piwik\Plugin\Manager as PluginManager;
require_once PIWIK_INCLUDE_PATH . "/core/Config.php";
@@ -69,6 +70,8 @@ class Piwik_TestingEnvironment
public function save()
{
+ @mkdir(PIWIK_INCLUDE_PATH . '/tmp');
+
$overridePath = PIWIK_INCLUDE_PATH . '/tmp/testingPathOverride.json';
file_put_contents($overridePath, json_encode($this->behaviorOverrideProperties));
}
@@ -82,7 +85,9 @@ class Piwik_TestingEnvironment
public function logVariables()
{
try {
- if (isset($_SERVER['QUERY_STRING'])) {
+ if (isset($_SERVER['QUERY_STRING'])
+ && !$this->dontUseTestConfig
+ ) {
\Piwik\Log::verbose("Test Environment Variables for (%s):\n%s", $_SERVER['QUERY_STRING'], print_r($this->behaviorOverrideProperties, true));
}
} catch (Exception $ex) {
@@ -90,6 +95,27 @@ class Piwik_TestingEnvironment
}
}
+ public function getCoreAndSupportedPlugins()
+ {
+ $disabledPlugins = PluginManager::getInstance()->getCorePluginsDisabledByDefault();
+ $disabledPlugins[] = 'LoginHttpAuth';
+ $disabledPlugins[] = 'ExampleVisualization';
+ $disabledPlugins[] = 'PleineLune';
+
+ $disabledPlugins = array_diff($disabledPlugins, array(
+ 'DBStats', 'ExampleUI', 'ExampleCommand', 'ExampleSettingsPlugin'
+ ));
+
+ return array_filter(PluginManager::getInstance()->readPluginsDirectory(), function ($pluginName) use ($disabledPlugins) {
+ if (in_array($pluginName, $disabledPlugins)) {
+ return false;
+ }
+
+ return PluginManager::getInstance()->isPluginBundledWithCore($pluginName)
+ || PluginManager::getInstance()->isPluginOfficialAndNotBundledWithCore($pluginName);
+ });
+ }
+
public static function addHooks()
{
$testingEnvironment = new Piwik_TestingEnvironment();
@@ -128,7 +154,7 @@ class Piwik_TestingEnvironment
}
$manager = \Piwik\Plugin\Manager::getInstance();
- $pluginsToLoad = $manager->getPluginsToLoadDuringTests();
+ $pluginsToLoad = $testingEnvironment->getCoreAndSupportedPlugins();
if (!empty($testingEnvironment->pluginsToLoad)) {
$pluginsToLoad = array_unique(array_merge($pluginsToLoad, $testingEnvironment->pluginsToLoad));
}
@@ -137,7 +163,7 @@ class Piwik_TestingEnvironment
$config->Plugins = array('Plugins' => $pluginsToLoad);
- $trackerPluginsToLoad = array_filter($pluginsToLoad, function ($plugin) use ($manager) {
+ $trackerPluginsToLoad = array_filter($config->Plugins['Plugins'], function ($plugin) use ($manager) {
return $manager->isTrackerPlugin($manager->loadPlugin($plugin));
});
@@ -164,6 +190,10 @@ class Piwik_TestingEnvironment
});
}
Piwik::addAction('Request.dispatch', function() use ($testingEnvironment) {
+ if (empty($_GET['ignoreClearAllViewDataTableParameters'])) { // TODO: should use testingEnvironment variable, not query param
+ \Piwik\ViewDataTable\Manager::clearAllViewDataTableParameters();
+ }
+
if ($testingEnvironment->optionsOverride) {
foreach ($testingEnvironment->optionsOverride as $name => $value) {
Option::set($name, $value);
diff --git a/tests/PHPUnit/UI b/tests/PHPUnit/UI
-Subproject 9f85062d38add9dc867aacd023e9e25879c98a7
+Subproject d1e74f222b172c6c6498c4f35168a07a952c9dd
diff --git a/tests/PHPUnit/config.ini.travis.php b/tests/PHPUnit/config.ini.travis.php
index c82be7b22b..40ca106158 100644
--- a/tests/PHPUnit/config.ini.travis.php
+++ b/tests/PHPUnit/config.ini.travis.php
@@ -7,8 +7,9 @@ host = localhost
username = root
password =
dbname = piwik_tests
-adapter = PDO_MYSQL
-tables_prefix = piwiktests_
+adapter = PDO\MYSQL
+; no table prefix for tests on travis
+tables_prefix =
;charset = utf8
[database_tests]
@@ -16,8 +17,9 @@ host = localhost
username = root
password =
dbname = piwik_tests
-adapter = PDO_MYSQL
-tables_prefix = piwiktests_
+adapter = PDO\MYSQL
+; no table prefix for tests on travis
+tables_prefix =
[log]
log_writers[] = file
diff --git a/tests/PHPUnit/proxy/includes.php b/tests/PHPUnit/proxy/includes.php
index 3530b26934..6e3acc8af5 100644
--- a/tests/PHPUnit/proxy/includes.php
+++ b/tests/PHPUnit/proxy/includes.php
@@ -31,5 +31,5 @@ require_once $vendorDirectory . '/piwik/device-detector/DeviceDetector.php';
// Make sure Data processed in cron core:archive command is not being purged instantly (useful for: Integration/ArchiveCronTest)
if(\Piwik\SettingsServer::isArchivePhpTriggered()) {
- \Piwik\ArchiveProcessor\Rules::$purgeDisabledByTests = true;
+ \Piwik\ArchiveProcessor\Rules::disablePurgeOutdatedArchives();
} \ No newline at end of file
diff --git a/tests/PHPUnit/proxy/index.php b/tests/PHPUnit/proxy/index.php
index 7d199a5615..594ad5da36 100644
--- a/tests/PHPUnit/proxy/index.php
+++ b/tests/PHPUnit/proxy/index.php
@@ -8,10 +8,6 @@ require realpath(dirname(__FILE__)) . "/includes.php";
Piwik_TestingEnvironment::addHooks();
-if (empty($_GET['ignoreClearAllViewDataTableParameters'])) {
- \Piwik\ViewDataTable\Manager::clearAllViewDataTableParameters();
-}
-
\Piwik\Profiler::setupProfilerXHProf();
include PIWIK_INCLUDE_PATH . '/index.php'; \ No newline at end of file
diff --git a/tests/PHPUnit/travis-helper.sh b/tests/PHPUnit/travis-helper.sh
index 97db77f841..f8bc0fec89 100644
--- a/tests/PHPUnit/travis-helper.sh
+++ b/tests/PHPUnit/travis-helper.sh
@@ -47,6 +47,9 @@ local count=0
while [ $count -lt $timeout ]; do
count=$(($count + 1))
#echo -ne "Still running ($count of $timeout): $@\r"
+
+ # print invisible character
+ echo -ne "\xE2\x80\x8B"
sleep 60
done
diff --git a/tests/angularjs/scripts/install-ubuntu.sh b/tests/angularjs/scripts/install-ubuntu.sh
index d0e319d81b..7f9e9a1cd9 100755
--- a/tests/angularjs/scripts/install-ubuntu.sh
+++ b/tests/angularjs/scripts/install-ubuntu.sh
@@ -26,8 +26,9 @@ cd $DIR
travis_retry sudo apt-get -qq install python-software-properties
travis_retry sudo apt-add-repository -y ppa:chris-lea/node.js > /dev/null
travis_retry sudo apt-get -qq update
-travis_retry sudo apt-get -qq install nodejs
-travis_retry sudo apt-get -qq install npm
+#travis_retry sudo apt-get -qq install nodejs
+#travis_retry sudo apt-get -qq install npm
+
cd ..
-sudo npm config set loglevel error
-sudo npm install . \ No newline at end of file
+npm config set loglevel error
+npm install . \ No newline at end of file
diff --git a/tests/javascript/index.php b/tests/javascript/index.php
index dd0cdefe4c..3a9b383362 100644
--- a/tests/javascript/index.php
+++ b/tests/javascript/index.php
@@ -8,37 +8,37 @@
require_once(dirname(__FILE__).'/SQLite.php');
if(file_exists("stub.tpl")) {
- echo file_get_contents("stub.tpl");
+ echo file_get_contents("stub.tpl");
}
?>
<script type="text/javascript">
function getToken() {
- return "<?php $token = md5(uniqid(mt_rand(), true)); echo $token; ?>";
+ return "<?php $token = md5(uniqid(mt_rand(), true)); echo $token; ?>";
}
<?php
$sqlite = false;
if (file_exists("enable_sqlite")) {
- if (class_exists('SQLite')) {
- $sqlite = true;
- }
+ if (class_exists('SQLite')) {
+ $sqlite = true;
+ }
}
if(!$sqlite) {
- echo 'alert("WARNING: Javascript integration tests require sqlite, \n1) ensure this PHP extension is enabled to make sure you run all tests \napt-get install php5-sqlite \n2) Then please create an empty file enable_sqlite in tests/javascript/enable_sqlite \n3) Re-execute this page and make sure this popup does not display ");';
+ echo 'alert("WARNING: Javascript integration tests require sqlite, \n1) ensure this PHP extension is enabled to make sure you run all tests \napt-get install php5-sqlite \n2) Then please create an empty file enable_sqlite in tests/javascript/enable_sqlite \n3) Re-execute this page and make sure this popup does not display ");';
}
if ($sqlite) {
echo '
var _paq = _paq || [];
function testCallingTrackPageViewBeforeSetTrackerUrlWorks() {
- _paq.push(["setCustomData", { "token" : getToken() }]);
- _paq.push(["trackPageView", "Asynchronous Tracker ONE"]);
- _paq.push(["setSiteId", 1]);
- _paq.push(["setTrackerUrl", "piwik.php"]);
+ _paq.push(["setCustomData", { "token" : getToken() }]);
+ _paq.push(["trackPageView", "Asynchronous Tracker ONE"]);
+ _paq.push(["setSiteId", 1]);
+ _paq.push(["setTrackerUrl", "piwik.php"]);
}
function testTrackPageViewAsync() {
- _paq.push(["trackPageView", "Asynchronous tracking TWO"]);
+ _paq.push(["trackPageView", "Asynchronous tracking TWO"]);
}
testCallingTrackPageViewBeforeSetTrackerUrlWorks();
@@ -57,96 +57,96 @@ testTrackPageViewAsync();
<script src="jslint/jslint.js" type="text/javascript"></script>
<script type="text/javascript">
function _e(id){
- if (document.getElementById)
- return document.getElementById(id);
- if (document.layers)
- return document[id];
- if (document.all)
- return document.all[id];
+ if (document.getElementById)
+ return document.getElementById(id);
+ if (document.layers)
+ return document[id];
+ if (document.all)
+ return document.all[id];
}
function loadJash() {
- var jashDiv = _e('jashDiv');
+ var jashDiv = _e('jashDiv');
- jashDiv.innerHTML = '';
- document.body.appendChild(document.createElement('script')).src='jash/Jash.js';
+ jashDiv.innerHTML = '';
+ document.body.appendChild(document.createElement('script')).src='jash/Jash.js';
}
function dropCookie(cookieName, path, domain) {
- var expiryDate = new Date();
-
- expiryDate.setTime(expiryDate.getTime() - 3600);
- document.cookie = cookieName + '=;expires=' + expiryDate.toGMTString() +
- ';path=' + (path ? path : '') +
- (domain ? ';domain=' + domain : '');
- document.cookie = cookieName + ';expires=' + expiryDate.toGMTString() +
- ';path=' + (path ? path : '') +
- (domain ? ';domain=' + domain : '');
+ var expiryDate = new Date();
+
+ expiryDate.setTime(expiryDate.getTime() - 3600);
+ document.cookie = cookieName + '=;expires=' + expiryDate.toGMTString() +
+ ';path=' + (path ? path : '') +
+ (domain ? ';domain=' + domain : '');
+ document.cookie = cookieName + ';expires=' + expiryDate.toGMTString() +
+ ';path=' + (path ? path : '') +
+ (domain ? ';domain=' + domain : '');
}
function deleteCookies() {
- // aggressively delete cookies
-
- // 1. get all cookies
- var
- cookies = (document.cookie).split(';'),
- aCookie,
- cookiePattern = new RegExp('^ *([^=]*)='),
- cookieMatch,
- cookieName,
- domain,
- domains = [],
- path,
- paths = [];
-
- cookies.push( '=' );
-
- // 2. construct list of domains
- domain = document.domain;
- if (domain.substring(0, 1) !== '.') {
- domain = '.' + domain;
- }
- domains.push( domain );
- while ((i = domain.indexOf('.')) >= 0) {
- domain = domain.substring(i+1);
- domains.push( domain );
- }
- domains.push( '' );
- domains.push( null );
-
- // 3. construct list of paths
- path = window.location.pathname;
- while ((i = path.lastIndexOf('/')) >= 0) {
- paths.push(path + '/');
- paths.push(path);
- path = path.substring(0, i);
- }
- paths.push( '/' );
- paths.push( '' );
- paths.push( null );
-
- // 4. iterate through cookies
- for (aCookie in cookies) {
- if (Object.prototype.hasOwnProperty.call(cookies, aCookie)) {
-
- // 5. extract cookie name
- cookieMatch = cookiePattern.exec(cookies[aCookie]);
- if (cookieMatch) {
- cookieName = cookieMatch[1];
-
- // 6. iterate through domains
- for (i = 0; i < domains.length; i++) {
-
- // 7. iterate through paths
- for (j = 0; j < paths.length; j++) {
-
- // 8. drop cookie
- dropCookie(cookieName, paths[j], domains[i]);
- }
- }
- }
- }
- }
+ // aggressively delete cookies
+
+ // 1. get all cookies
+ var
+ cookies = (document.cookie).split(';'),
+ aCookie,
+ cookiePattern = new RegExp('^ *([^=]*)='),
+ cookieMatch,
+ cookieName,
+ domain,
+ domains = [],
+ path,
+ paths = [];
+
+ cookies.push( '=' );
+
+ // 2. construct list of domains
+ domain = document.domain;
+ if (domain.substring(0, 1) !== '.') {
+ domain = '.' + domain;
+ }
+ domains.push( domain );
+ while ((i = domain.indexOf('.')) >= 0) {
+ domain = domain.substring(i+1);
+ domains.push( domain );
+ }
+ domains.push( '' );
+ domains.push( null );
+
+ // 3. construct list of paths
+ path = window.location.pathname;
+ while ((i = path.lastIndexOf('/')) >= 0) {
+ paths.push(path + '/');
+ paths.push(path);
+ path = path.substring(0, i);
+ }
+ paths.push( '/' );
+ paths.push( '' );
+ paths.push( null );
+
+ // 4. iterate through cookies
+ for (aCookie in cookies) {
+ if (Object.prototype.hasOwnProperty.call(cookies, aCookie)) {
+
+ // 5. extract cookie name
+ cookieMatch = cookiePattern.exec(cookies[aCookie]);
+ if (cookieMatch) {
+ cookieName = cookieMatch[1];
+
+ // 6. iterate through domains
+ for (i = 0; i < domains.length; i++) {
+
+ // 7. iterate through paths
+ for (j = 0; j < paths.length; j++) {
+
+ // 8. drop cookie
+ dropCookie(cookieName, paths[j], domains[i]);
+ }
+ }
+ }
+ }
+ }
}
</script>
</head>
@@ -188,239 +188,242 @@ var hasLoaded = false;
function PiwikTest() {
hasLoaded = true;
- module('externals');
+ module('externals');
- test("JSLint", function() {
- expect(1);
- var src = '<?php
- $src = file_get_contents('../../js/piwik.js');
- $src = strtr($src, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/'));
- echo "$src"; ?>';
- ok( JSLINT(src), "JSLint" );
-// alert(JSLINT.report(true));
- });
+ test("JSLint", function() {
+ expect(1);
+ var src = '<?php
+ $src = file_get_contents('../../js/piwik.js');
+ $src = strtr($src, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/'));
+ echo "$src"; ?>';
+ ok( JSLINT(src), "JSLint" );
+// alert(JSLINT.report(true));
+ });
+
+ test("JSON", function() {
+ expect(49);
+
+ var tracker = Piwik.getTracker(), dummy;
+
+ equal( typeof JSON2.stringify, 'function', 'JSON.stringify function' );
+ equal( typeof JSON2.stringify(dummy), 'undefined', 'undefined' );
+
+ equal( JSON2.stringify(null), 'null', 'null' );
+ equal( JSON2.stringify(true), 'true', 'true' );
+ equal( JSON2.stringify(false), 'false', 'false' );
+ ok( JSON2.stringify(0) === '0', 'Number 0' );
+ ok( JSON2.stringify(1) === '1', 'Number 1' );
+ ok( JSON2.stringify(-1) === '-1', 'Number -1' );
+ ok( JSON2.stringify(42) === '42', 'Number 42' );
+
+ ok( JSON2.stringify(1.0) === '1.0'
+ || JSON2.stringify(1.0) === '1', 'float 1.0' );
+
+ equal( JSON2.stringify(1.1), '1.1', 'float 1.1' );
+ equal( JSON2.stringify(""), '""', 'empty string' );
+ equal( JSON2.stringify('"'), '"' + '\\' + '"' + '"', 'string "' );
+ equal( JSON2.stringify('\\'), '"' + '\\\\' + '"', 'string \\' );
+
+ equal( JSON2.stringify("1"), '"1"', 'string "1"' );
+ equal( JSON2.stringify("ABC"), '"ABC"', 'string ABC' );
+ equal( JSON2.stringify("\x40\x41\x42\x43"), '"@ABC"', '\\x hex string @ABC' );
+
+ ok( JSON2.stringify("\u60a8\u597d") == '"您好"'
+ || JSON2.stringify("\u60a8\u597d") == '"\\u60a8\\u597d"', '\\u Unicode string 您好' );
+
+ ok( JSON2.stringify("ßéàêö您好") == '"ßéàêö您好"'
+ || JSON2.stringify("ßéàêö您好") == '"\\u00df\\u00e9\\u00e0\\u00ea\\u00f6\\u60a8\\u597d"', 'string non-ASCII text' );
+
+ equal( JSON2.stringify("20060228T08:00:00"), '"20060228T08:00:00"', 'string "20060228T08:00:00"' );
+
+ var d = new Date();
+ d.setTime(1240013340000);
+ ok( JSON2.stringify(d) === '"2009-04-18T00:09:00Z"'
+ || JSON2.stringify(d) === '"2009-04-18T00:09:00.000Z"', 'Date');
- test("JSON", function() {
- expect(49);
+ equal( JSON2.stringify([1, 2, 3]), '[1,2,3]', 'Array of numbers' );
+ equal( JSON2.stringify({'key' : 'value'}), '{"key":"value"}', 'Object (members)' );
+ equal( JSON2.stringify(
+ [ {'domains' : ['example.com', 'example.ca']},
+ {'names' : ['Sean', 'Cathy'] } ]
+ ), '[{"domains":["example.com","example.ca"]},{"names":["Sean","Cathy"]}]', 'Nested members' );
- var tracker = Piwik.getTracker(), dummy;
+ equal( typeof eval('('+dummy+')'), 'undefined', 'eval undefined' );
- equal( typeof JSON2.stringify, 'function', 'JSON.stringify function' );
- equal( typeof JSON2.stringify(dummy), 'undefined', 'undefined' );
+ equal( typeof JSON2.parse, 'function', 'JSON.parse function' );
- equal( JSON2.stringify(null), 'null', 'null' );
- equal( JSON2.stringify(true), 'true', 'true' );
- equal( JSON2.stringify(false), 'false', 'false' );
- ok( JSON2.stringify(0) === '0', 'Number 0' );
- ok( JSON2.stringify(1) === '1', 'Number 1' );
- ok( JSON2.stringify(-1) === '-1', 'Number -1' );
- ok( JSON2.stringify(42) === '42', 'Number 42' );
+ // these throw a SyntaxError
+// equal( typeof JSON2.parse('undefined'), 'undefined', 'undefined' );
+// equal( typeof JSON2.parse(dummy), 'undefined', 'undefined' );
+// equal( JSON2.parse('undefined'), dummy, 'undefined' );
+// equal( JSON2.parse('undefined'), undefined, 'undefined' );
- ok( JSON2.stringify(1.0) === '1.0'
- || JSON2.stringify(1.0) === '1', 'float 1.0' );
+ strictEqual( JSON2.parse('null'), null, 'null' );
+ strictEqual( JSON2.parse('true'), true, 'true' );
+ strictEqual( JSON2.parse('false'), false, 'false' );
- equal( JSON2.stringify(1.1), '1.1', 'float 1.1' );
- equal( JSON2.stringify(""), '""', 'empty string' );
- equal( JSON2.stringify('"'), '"' + '\\' + '"' + '"', 'string "' );
- equal( JSON2.stringify('\\'), '"' + '\\\\' + '"', 'string \\' );
+ equal( JSON2.parse('0'), 0, 'Number 0' );
+ equal( JSON2.parse('1'), 1, 'Number 1' );
+ equal( JSON2.parse('-1'), -1, 'Number -1' );
+ equal( JSON2.parse('42'), 42, 'Number 42' );
- equal( JSON2.stringify("1"), '"1"', 'string "1"' );
- equal( JSON2.stringify("ABC"), '"ABC"', 'string ABC' );
- equal( JSON2.stringify("\x40\x41\x42\x43"), '"@ABC"', '\\x hex string @ABC' );
+ ok( JSON2.parse('1.0') === 1.0
+ || JSON2.parse('1.0') === 1, 'float 1.0' );
- ok( JSON2.stringify("\u60a8\u597d") == '"您好"'
- || JSON2.stringify("\u60a8\u597d") == '"\\u60a8\\u597d"', '\\u Unicode string 您好' );
+ equal( JSON2.parse('1.1'), 1.1, 'float 1.1' );
+ equal( JSON2.parse('""'), "", 'empty string' );
+ equal( JSON2.parse('"' + '\\' + '"' + '"'), '"', 'string "' );
+ equal( JSON2.parse('"\\\\"'), '\\', 'string \\' );
- ok( JSON2.stringify("ßéàêö您好") == '"ßéàêö您好"'
- || JSON2.stringify("ßéàêö您好") == '"\\u00df\\u00e9\\u00e0\\u00ea\\u00f6\\u60a8\\u597d"', 'string non-ASCII text' );
+ equal( JSON2.parse('"1"'), "1", 'string "1"' );
+ equal( JSON2.parse('"ABC"'), "ABC", 'string ABC' );
+ equal( JSON2.parse('"@ABC"'), "\x40\x41\x42\x43", 'Hex string @ABC' );
- equal( JSON2.stringify("20060228T08:00:00"), '"20060228T08:00:00"', 'string "20060228T08:00:00"' );
+ ok( JSON2.parse('"您好"') == "\u60a8\u597d"
+ && JSON2.parse('"\\u60a8\\u597d"') == "您好", 'Unicode string 您好' );
- var d = new Date();
- d.setTime(1240013340000);
- ok( JSON2.stringify(d) === '"2009-04-18T00:09:00Z"'
- || JSON2.stringify(d) === '"2009-04-18T00:09:00.000Z"', 'Date');
+ ok( JSON2.parse('"ßéàêö您好"') == "ßéàêö您好"
+ && JSON2.parse('"\\u00df\\u00e9\\u00e0\\u00ea\\u00f6\\u60a8\\u597d"') == "ßéàêö您好", 'string non-ASCII text' );
- equal( JSON2.stringify([1, 2, 3]), '[1,2,3]', 'Array of numbers' );
- equal( JSON2.stringify({'key' : 'value'}), '{"key":"value"}', 'Object (members)' );
- equal( JSON2.stringify(
- [ {'domains' : ['example.com', 'example.ca']},
- {'names' : ['Sean', 'Cathy'] } ]
- ), '[{"domains":["example.com","example.ca"]},{"names":["Sean","Cathy"]}]', 'Nested members' );
+ equal( JSON2.parse('"20060228T08:00:00"'), "20060228T08:00:00", 'string "20060228T08:00:00"' );
- equal( typeof eval('('+dummy+')'), 'undefined', 'eval undefined' );
+ // these aren't converted back to Date objects
+ equal( JSON2.parse('"2009-04-18T00:09:00Z"'), "2009-04-18T00:09:00Z", 'string "2009-04-18T00:09:00Z"' );
+ equal( JSON2.parse('"2009-04-18T00:09:00.000Z"'), "2009-04-18T00:09:00.000Z", 'string "2009-04-18T00:09:00.000Z"' );
- equal( typeof JSON2.parse, 'function', 'JSON.parse function' );
-
- // these throw a SyntaxError
-// equal( typeof JSON2.parse('undefined'), 'undefined', 'undefined' );
-// equal( typeof JSON2.parse(dummy), 'undefined', 'undefined' );
-// equal( JSON2.parse('undefined'), dummy, 'undefined' );
-// equal( JSON2.parse('undefined'), undefined, 'undefined' );
-
- strictEqual( JSON2.parse('null'), null, 'null' );
- strictEqual( JSON2.parse('true'), true, 'true' );
- strictEqual( JSON2.parse('false'), false, 'false' );
-
- equal( JSON2.parse('0'), 0, 'Number 0' );
- equal( JSON2.parse('1'), 1, 'Number 1' );
- equal( JSON2.parse('-1'), -1, 'Number -1' );
- equal( JSON2.parse('42'), 42, 'Number 42' );
-
- ok( JSON2.parse('1.0') === 1.0
- || JSON2.parse('1.0') === 1, 'float 1.0' );
-
- equal( JSON2.parse('1.1'), 1.1, 'float 1.1' );
- equal( JSON2.parse('""'), "", 'empty string' );
- equal( JSON2.parse('"' + '\\' + '"' + '"'), '"', 'string "' );
- equal( JSON2.parse('"\\\\"'), '\\', 'string \\' );
-
- equal( JSON2.parse('"1"'), "1", 'string "1"' );
- equal( JSON2.parse('"ABC"'), "ABC", 'string ABC' );
- equal( JSON2.parse('"@ABC"'), "\x40\x41\x42\x43", 'Hex string @ABC' );
-
- ok( JSON2.parse('"您好"') == "\u60a8\u597d"
- && JSON2.parse('"\\u60a8\\u597d"') == "您好", 'Unicode string 您好' );
-
- ok( JSON2.parse('"ßéàêö您好"') == "ßéàêö您好"
- && JSON2.parse('"\\u00df\\u00e9\\u00e0\\u00ea\\u00f6\\u60a8\\u597d"') == "ßéàêö您好", 'string non-ASCII text' );
-
- equal( JSON2.parse('"20060228T08:00:00"'), "20060228T08:00:00", 'string "20060228T08:00:00"' );
-
- // these aren't converted back to Date objects
- equal( JSON2.parse('"2009-04-18T00:09:00Z"'), "2009-04-18T00:09:00Z", 'string "2009-04-18T00:09:00Z"' );
- equal( JSON2.parse('"2009-04-18T00:09:00.000Z"'), "2009-04-18T00:09:00.000Z", 'string "2009-04-18T00:09:00.000Z"' );
-
- deepEqual( JSON2.parse('[1,2,3]'), [1, 2, 3], 'Array of numbers' );
- deepEqual( JSON2.parse('{"key":"value"}'), {'key' : 'value'}, 'Object (members)' );
- deepEqual( JSON2.parse('[{"domains":["example.com","example.ca"]},{"names":["Sean","Cathy"]}]'),
- [ {'domains' : ['example.com', 'example.ca']}, {'names' : ['Sean', 'Cathy'] } ], 'Nested members' );
- });
-
- module("core");
-
- test("Basic requirements", function() {
- expect(3);
-
- equal( typeof encodeURIComponent, 'function', 'encodeURIComponent' );
- ok( RegExp, "RegExp" );
- ok( Piwik, "Piwik" );
- });
-
- test("Test API - addPlugin(), getTracker(), getHook(), and hook", function() {
- expect(6);
-
- ok( Piwik.addPlugin, "Piwik.addPlugin" );
-
- var tracker = Piwik.getTracker();
-
- equal( typeof tracker, 'object', "Piwik.getTracker()" );
- equal( typeof tracker.getHook, 'function', "test Tracker getHook" );
- equal( typeof tracker.hook, 'object', "test Tracker hook" );
- equal( typeof tracker.getHook('test'), 'object', "test Tracker getHook('test')" );
- equal( typeof tracker.hook.test, 'object', "test Tracker hook.test" );
- });
-
- test("API methods", function() {
- expect(54);
-
- equal( typeof Piwik.addPlugin, 'function', 'addPlugin' );
- equal( typeof Piwik.getTracker, 'function', 'getTracker' );
- equal( typeof Piwik.getAsyncTracker, 'function', 'getAsyncTracker' );
-
- var tracker;
-
- tracker = Piwik.getAsyncTracker();
- ok(tracker instanceof Object, 'getAsyncTracker');
-
- tracker = Piwik.getTracker();
- ok(tracker instanceof Object, 'getTracker');
-
- equal( typeof tracker.getVisitorId, 'function', 'getVisitorId' );
- equal( typeof tracker.getVisitorInfo, 'function', 'getVisitorInfo' );
- equal( typeof tracker.getAttributionInfo, 'function', 'getAttributionInfo' );
- equal( typeof tracker.getAttributionReferrerTimestamp, 'function', 'getAttributionReferrerTimestamp' );
- equal( typeof tracker.getAttributionReferrerUrl, 'function', 'getAttributionReferrerUrl' );
- equal( typeof tracker.getAttributionCampaignName, 'function', 'getAttributionCampaignName' );
- equal( typeof tracker.getAttributionCampaignKeyword, 'function', 'getAttributionCampaignKeyword' );
- equal( typeof tracker.setTrackerUrl, 'function', 'setTrackerUrl' );
- equal( typeof tracker.getRequest, 'function', 'getRequest' );
- equal( typeof tracker.setSiteId, 'function', 'setSiteId' );
- equal( typeof tracker.setCustomData, 'function', 'setCustomData' );
- equal( typeof tracker.getCustomData, 'function', 'getCustomData' );
- equal( typeof tracker.setCustomVariable, 'function', 'setCustomVariable' );
- equal( typeof tracker.getCustomVariable, 'function', 'getCustomVariable' );
- equal( typeof tracker.deleteCustomVariable, 'function', 'deleteCustomVariable' );
- equal( typeof tracker.setLinkTrackingTimer, 'function', 'setLinkTrackingTimer' );
- equal( typeof tracker.setDownloadExtensions, 'function', 'setDownloadExtensions' );
- equal( typeof tracker.addDownloadExtensions, 'function', 'addDownloadExtensions' );
- equal( typeof tracker.setDomains, 'function', 'setDomains' );
- equal( typeof tracker.setIgnoreClasses, 'function', 'setIgnoreClasses' );
- equal( typeof tracker.setRequestMethod, 'function', 'setRequestMethod' );
- equal( typeof tracker.setReferrerUrl, 'function', 'setReferrerUrl' );
- equal( typeof tracker.setCustomUrl, 'function', 'setCustomUrl' );
- equal( typeof tracker.setDocumentTitle, 'function', 'setDocumentTitle' );
- equal( typeof tracker.setDownloadClasses, 'function', 'setDownloadClasses' );
- equal( typeof tracker.setLinkClasses, 'function', 'setLinkClasses' );
- equal( typeof tracker.setCampaignNameKey, 'function', 'setCampaignNameKey' );
- equal( typeof tracker.setCampaignKeywordKey, 'function', 'setCampaignKeywordKey' );
- equal( typeof tracker.discardHashTag, 'function', 'discardHashTag' );
- equal( typeof tracker.setCookieNamePrefix, 'function', 'setCookieNamePrefix' );
- equal( typeof tracker.setCookieDomain, 'function', 'setCookieDomain' );
- equal( typeof tracker.setCookiePath, 'function', 'setCookiePath' );
- equal( typeof tracker.setVisitorCookieTimeout, 'function', 'setVisitorCookieTimeout' );
- equal( typeof tracker.setSessionCookieTimeout, 'function', 'setSessionCookieTimeout' );
- equal( typeof tracker.setReferralCookieTimeout, 'function', 'setReferralCookieTimeout' );
- equal( typeof tracker.setConversionAttributionFirstReferrer, 'function', 'setConversionAttributionFirstReferrer' );
- equal( typeof tracker.addListener, 'function', 'addListener' );
- equal( typeof tracker.enableLinkTracking, 'function', 'enableLinkTracking' );
- equal( typeof tracker.setHeartBeatTimer, 'function', 'setHeartBeatTimer' );
- equal( typeof tracker.killFrame, 'function', 'killFrame' );
- equal( typeof tracker.redirectFile, 'function', 'redirectFile' );
- equal( typeof tracker.setCountPreRendered, 'function', 'setCountPreRendered' );
- equal( typeof tracker.trackGoal, 'function', 'trackGoal' );
- equal( typeof tracker.trackLink, 'function', 'trackLink' );
- equal( typeof tracker.trackPageView, 'function', 'trackPageView' );
- // ecommerce
- equal( typeof tracker.setEcommerceView, 'function', 'setEcommerceView' );
- equal( typeof tracker.addEcommerceItem, 'function', 'addEcommerceItem' );
- equal( typeof tracker.trackEcommerceOrder, 'function', 'trackEcommerceOrder' );
- equal( typeof tracker.trackEcommerceCartUpdate, 'function', 'trackEcommerceCartUpdate' );
- });
-
- module("API and internals");
-
- test("Tracker is_a functions", function() {
- expect(22);
-
- var tracker = Piwik.getTracker();
-
- equal( typeof tracker.hook.test._isDefined, 'function', 'isDefined' );
- ok( tracker.hook.test._isDefined(tracker), 'isDefined true' );
- ok( tracker.hook.test._isDefined(tracker.hook), 'isDefined(obj.exists) true' );
- ok( !tracker.hook.test._isDefined(tracker.non_existant_property), 'isDefined(obj.missing) false' );
-
- equal( typeof tracker.hook.test._isFunction, 'function', 'isFunction' );
- ok( tracker.hook.test._isFunction(tracker.hook.test._isFunction), 'isFunction(isFunction)' );
- ok( tracker.hook.test._isFunction(function () { }), 'isFunction(function)' );
-
- equal( typeof tracker.hook.test._isObject, 'function', 'isObject' );
- ok( tracker.hook.test._isObject(null), 'isObject(null)' ); // null is an object!
- ok( tracker.hook.test._isObject(new Object), 'isObject(Object)' );
- ok( tracker.hook.test._isObject(window), 'isObject(window)' );
- ok( !tracker.hook.test._isObject('string'), 'isObject("string")' );
- ok( tracker.hook.test._isObject(new String), 'isObject(String)' ); // String is an object!
-
- equal( typeof tracker.hook.test._isString, 'function', 'isString' );
- ok( tracker.hook.test._isString(''), 'isString(emptyString)' );
- ok( tracker.hook.test._isString('abc'), 'isString("abc")' );
- ok( tracker.hook.test._isString('123'), 'isString("123")' );
- ok( !tracker.hook.test._isString(123), 'isString(123)' );
- ok( !tracker.hook.test._isString(null), 'isString(null)' );
- ok( !tracker.hook.test._isString(window), 'isString(window)' );
- ok( !tracker.hook.test._isString(function () { }), 'isString(function)' );
- ok( tracker.hook.test._isString(new String), 'isString(String)' ); // String is a string
- });
+ deepEqual( JSON2.parse('[1,2,3]'), [1, 2, 3], 'Array of numbers' );
+ deepEqual( JSON2.parse('{"key":"value"}'), {'key' : 'value'}, 'Object (members)' );
+ deepEqual( JSON2.parse('[{"domains":["example.com","example.ca"]},{"names":["Sean","Cathy"]}]'),
+ [ {'domains' : ['example.com', 'example.ca']}, {'names' : ['Sean', 'Cathy'] } ], 'Nested members' );
+ });
+
+ module("core");
+
+ test("Basic requirements", function() {
+ expect(3);
+
+ equal( typeof encodeURIComponent, 'function', 'encodeURIComponent' );
+ ok( RegExp, "RegExp" );
+ ok( Piwik, "Piwik" );
+ });
+
+ test("Test API - addPlugin(), getTracker(), getHook(), and hook", function() {
+ expect(6);
+
+ ok( Piwik.addPlugin, "Piwik.addPlugin" );
+
+ var tracker = Piwik.getTracker();
+
+ equal( typeof tracker, 'object', "Piwik.getTracker()" );
+ equal( typeof tracker.getHook, 'function', "test Tracker getHook" );
+ equal( typeof tracker.hook, 'object', "test Tracker hook" );
+ equal( typeof tracker.getHook('test'), 'object', "test Tracker getHook('test')" );
+ equal( typeof tracker.hook.test, 'object', "test Tracker hook.test" );
+ });
+
+ test("API methods", function() {
+ expect(57);
+
+ equal( typeof Piwik.addPlugin, 'function', 'addPlugin' );
+ equal( typeof Piwik.getTracker, 'function', 'getTracker' );
+ equal( typeof Piwik.getAsyncTracker, 'function', 'getAsyncTracker' );
+
+ var tracker;
+
+ tracker = Piwik.getAsyncTracker();
+ ok(tracker instanceof Object, 'getAsyncTracker');
+
+ tracker = Piwik.getTracker();
+ ok(tracker instanceof Object, 'getTracker');
+
+ equal( typeof tracker.getVisitorId, 'function', 'getVisitorId' );
+ equal( typeof tracker.getVisitorInfo, 'function', 'getVisitorInfo' );
+ equal( typeof tracker.getAttributionInfo, 'function', 'getAttributionInfo' );
+ equal( typeof tracker.getAttributionReferrerTimestamp, 'function', 'getAttributionReferrerTimestamp' );
+ equal( typeof tracker.getAttributionReferrerUrl, 'function', 'getAttributionReferrerUrl' );
+ equal( typeof tracker.getAttributionCampaignName, 'function', 'getAttributionCampaignName' );
+ equal( typeof tracker.getAttributionCampaignKeyword, 'function', 'getAttributionCampaignKeyword' );
+ equal( typeof tracker.setTrackerUrl, 'function', 'setTrackerUrl' );
+ equal( typeof tracker.getRequest, 'function', 'getRequest' );
+ equal( typeof tracker.addPlugin, 'function', 'addPlugin' );
+ equal( typeof tracker.setSiteId, 'function', 'setSiteId' );
+ equal( typeof tracker.setCustomData, 'function', 'setCustomData' );
+ equal( typeof tracker.getCustomData, 'function', 'getCustomData' );
+ equal( typeof tracker.setCustomRequestProcessing, 'function', 'setCustomRequestProcessing' );
+ equal( typeof tracker.setCustomVariable, 'function', 'setCustomVariable' );
+ equal( typeof tracker.getCustomVariable, 'function', 'getCustomVariable' );
+ equal( typeof tracker.deleteCustomVariable, 'function', 'deleteCustomVariable' );
+ equal( typeof tracker.setLinkTrackingTimer, 'function', 'setLinkTrackingTimer' );
+ equal( typeof tracker.setDownloadExtensions, 'function', 'setDownloadExtensions' );
+ equal( typeof tracker.addDownloadExtensions, 'function', 'addDownloadExtensions' );
+ equal( typeof tracker.setDomains, 'function', 'setDomains' );
+ equal( typeof tracker.setIgnoreClasses, 'function', 'setIgnoreClasses' );
+ equal( typeof tracker.setRequestMethod, 'function', 'setRequestMethod' );
+ equal( typeof tracker.setRequestContentType, 'function', 'setRequestContentType' );
+ equal( typeof tracker.setReferrerUrl, 'function', 'setReferrerUrl' );
+ equal( typeof tracker.setCustomUrl, 'function', 'setCustomUrl' );
+ equal( typeof tracker.setDocumentTitle, 'function', 'setDocumentTitle' );
+ equal( typeof tracker.setDownloadClasses, 'function', 'setDownloadClasses' );
+ equal( typeof tracker.setLinkClasses, 'function', 'setLinkClasses' );
+ equal( typeof tracker.setCampaignNameKey, 'function', 'setCampaignNameKey' );
+ equal( typeof tracker.setCampaignKeywordKey, 'function', 'setCampaignKeywordKey' );
+ equal( typeof tracker.discardHashTag, 'function', 'discardHashTag' );
+ equal( typeof tracker.setCookieNamePrefix, 'function', 'setCookieNamePrefix' );
+ equal( typeof tracker.setCookieDomain, 'function', 'setCookieDomain' );
+ equal( typeof tracker.setCookiePath, 'function', 'setCookiePath' );
+ equal( typeof tracker.setVisitorCookieTimeout, 'function', 'setVisitorCookieTimeout' );
+ equal( typeof tracker.setSessionCookieTimeout, 'function', 'setSessionCookieTimeout' );
+ equal( typeof tracker.setReferralCookieTimeout, 'function', 'setReferralCookieTimeout' );
+ equal( typeof tracker.setConversionAttributionFirstReferrer, 'function', 'setConversionAttributionFirstReferrer' );
+ equal( typeof tracker.addListener, 'function', 'addListener' );
+ equal( typeof tracker.enableLinkTracking, 'function', 'enableLinkTracking' );
+ equal( typeof tracker.setHeartBeatTimer, 'function', 'setHeartBeatTimer' );
+ equal( typeof tracker.killFrame, 'function', 'killFrame' );
+ equal( typeof tracker.redirectFile, 'function', 'redirectFile' );
+ equal( typeof tracker.setCountPreRendered, 'function', 'setCountPreRendered' );
+ equal( typeof tracker.trackGoal, 'function', 'trackGoal' );
+ equal( typeof tracker.trackLink, 'function', 'trackLink' );
+ equal( typeof tracker.trackPageView, 'function', 'trackPageView' );
+ // ecommerce
+ equal( typeof tracker.setEcommerceView, 'function', 'setEcommerceView' );
+ equal( typeof tracker.addEcommerceItem, 'function', 'addEcommerceItem' );
+ equal( typeof tracker.trackEcommerceOrder, 'function', 'trackEcommerceOrder' );
+ equal( typeof tracker.trackEcommerceCartUpdate, 'function', 'trackEcommerceCartUpdate' );
+ });
+
+ module("API and internals");
+
+ test("Tracker is_a functions", function() {
+ expect(22);
+
+ var tracker = Piwik.getTracker();
+
+ equal( typeof tracker.hook.test._isDefined, 'function', 'isDefined' );
+ ok( tracker.hook.test._isDefined(tracker), 'isDefined true' );
+ ok( tracker.hook.test._isDefined(tracker.hook), 'isDefined(obj.exists) true' );
+ ok( !tracker.hook.test._isDefined(tracker.non_existant_property), 'isDefined(obj.missing) false' );
+
+ equal( typeof tracker.hook.test._isFunction, 'function', 'isFunction' );
+ ok( tracker.hook.test._isFunction(tracker.hook.test._isFunction), 'isFunction(isFunction)' );
+ ok( tracker.hook.test._isFunction(function () { }), 'isFunction(function)' );
+
+ equal( typeof tracker.hook.test._isObject, 'function', 'isObject' );
+ ok( tracker.hook.test._isObject(null), 'isObject(null)' ); // null is an object!
+ ok( tracker.hook.test._isObject(new Object), 'isObject(Object)' );
+ ok( tracker.hook.test._isObject(window), 'isObject(window)' );
+ ok( !tracker.hook.test._isObject('string'), 'isObject("string")' );
+ ok( tracker.hook.test._isObject(new String), 'isObject(String)' ); // String is an object!
+
+ equal( typeof tracker.hook.test._isString, 'function', 'isString' );
+ ok( tracker.hook.test._isString(''), 'isString(emptyString)' );
+ ok( tracker.hook.test._isString('abc'), 'isString("abc")' );
+ ok( tracker.hook.test._isString('123'), 'isString("123")' );
+ ok( !tracker.hook.test._isString(123), 'isString(123)' );
+ ok( !tracker.hook.test._isString(null), 'isString(null)' );
+ ok( !tracker.hook.test._isString(window), 'isString(window)' );
+ ok( !tracker.hook.test._isString(function () { }), 'isString(function)' );
+ ok( tracker.hook.test._isString(new String), 'isString(String)' ); // String is a string
+ });
test("AnalyticsTracker alias", function() {
@@ -432,56 +435,56 @@ function PiwikTest() {
- test("Tracker encode, decode, urldecode wrappers", function() {
- expect(6);
-
- var tracker = Piwik.getTracker();
-
- equal( typeof tracker.hook.test._encode, 'function', 'encodeWrapper' );
- equal( typeof tracker.hook.test._decode, 'function', 'decodeWrapper' );
- equal( typeof tracker.hook.test._urldecode, 'function', 'urldecodeWrapper' );
+ test("Tracker encode, decode, urldecode wrappers", function() {
+ expect(6);
- equal( tracker.hook.test._encode("&=?;/#"), '%26%3D%3F%3B%2F%23', 'encodeWrapper()' );
- equal( tracker.hook.test._decode("%26%3D%3F%3B%2F%23"), '&=?;/#', 'decodeWrapper()' );
- equal( tracker.hook.test._urldecode("mailto:%69%6e%66%6f@%65%78%61%6d%70%6c%65.%63%6f%6d"), 'mailto:info@example.com', 'decodeWrapper()' );
- });
+ var tracker = Piwik.getTracker();
- test("Tracker getHostName(), getParameter(), urlFixup(), domainFixup(), titleFixup() and purify()", function() {
- expect(57);
+ equal( typeof tracker.hook.test._encode, 'function', 'encodeWrapper' );
+ equal( typeof tracker.hook.test._decode, 'function', 'decodeWrapper' );
+ equal( typeof tracker.hook.test._urldecode, 'function', 'urldecodeWrapper' );
- var tracker = Piwik.getTracker();
+ equal( tracker.hook.test._encode("&=?;/#"), '%26%3D%3F%3B%2F%23', 'encodeWrapper()' );
+ equal( tracker.hook.test._decode("%26%3D%3F%3B%2F%23"), '&=?;/#', 'decodeWrapper()' );
+ equal( tracker.hook.test._urldecode("mailto:%69%6e%66%6f@%65%78%61%6d%70%6c%65.%63%6f%6d"), 'mailto:info@example.com', 'decodeWrapper()' );
+ });
- equal( typeof tracker.hook.test._getHostName, 'function', 'getHostName' );
- equal( typeof tracker.hook.test._getParameter, 'function', 'getParameter' );
+ test("Tracker getHostName(), getParameter(), urlFixup(), domainFixup(), titleFixup() and purify()", function() {
+ expect(57);
- equal( tracker.hook.test._getHostName('http://example.com'), 'example.com', 'http://example.com');
- equal( tracker.hook.test._getHostName('http://example.com/'), 'example.com', 'http://example.com/');
- equal( tracker.hook.test._getHostName('http://example.com/index'), 'example.com', 'http://example.com/index');
- equal( tracker.hook.test._getHostName('http://example.com/index?q=xyz'), 'example.com', 'http://example.com/index?q=xyz');
- equal( tracker.hook.test._getHostName('http://example.com/?q=xyz'), 'example.com', 'http://example.com/?q=xyz');
- equal( tracker.hook.test._getHostName('http://example.com/?q=xyz#hash'), 'example.com', 'http://example.com/?q=xyz#hash');
- equal( tracker.hook.test._getHostName('http://example.com#hash'), 'example.com', 'http://example.com#hash');
- equal( tracker.hook.test._getHostName('http://example.com/#hash'), 'example.com', 'http://example.com/#hash');
- equal( tracker.hook.test._getHostName('http://example.com:80'), 'example.com', 'http://example.com:80');
- equal( tracker.hook.test._getHostName('http://example.com:80/'), 'example.com', 'http://example.com:80/');
- equal( tracker.hook.test._getHostName('https://example.com/'), 'example.com', 'https://example.com/');
- equal( tracker.hook.test._getHostName('http://user@example.com/'), 'example.com', 'http://user@example.com/');
- equal( tracker.hook.test._getHostName('http://user:password@example.com/'), 'example.com', 'http://user:password@example.com/');
+ var tracker = Piwik.getTracker();
- equal( tracker.hook.test._getParameter('http://piwik.org/', 'q'), '', 'no query');
- equal( tracker.hook.test._getParameter('http://piwik.org/?q=test', 'q'), 'test', '?q');
- equal( tracker.hook.test._getParameter('http://piwik.org/?q=test#aq=not', 'q'), 'test', '?q');
- equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2', 'q'), 'test2', '&q');
+ equal( typeof tracker.hook.test._getHostName, 'function', 'getHostName' );
+ equal( typeof tracker.hook.test._getParameter, 'function', 'getParameter' );
+
+ equal( tracker.hook.test._getHostName('http://example.com'), 'example.com', 'http://example.com');
+ equal( tracker.hook.test._getHostName('http://example.com/'), 'example.com', 'http://example.com/');
+ equal( tracker.hook.test._getHostName('http://example.com/index'), 'example.com', 'http://example.com/index');
+ equal( tracker.hook.test._getHostName('http://example.com/index?q=xyz'), 'example.com', 'http://example.com/index?q=xyz');
+ equal( tracker.hook.test._getHostName('http://example.com/?q=xyz'), 'example.com', 'http://example.com/?q=xyz');
+ equal( tracker.hook.test._getHostName('http://example.com/?q=xyz#hash'), 'example.com', 'http://example.com/?q=xyz#hash');
+ equal( tracker.hook.test._getHostName('http://example.com#hash'), 'example.com', 'http://example.com#hash');
+ equal( tracker.hook.test._getHostName('http://example.com/#hash'), 'example.com', 'http://example.com/#hash');
+ equal( tracker.hook.test._getHostName('http://example.com:80'), 'example.com', 'http://example.com:80');
+ equal( tracker.hook.test._getHostName('http://example.com:80/'), 'example.com', 'http://example.com:80/');
+ equal( tracker.hook.test._getHostName('https://example.com/'), 'example.com', 'https://example.com/');
+ equal( tracker.hook.test._getHostName('http://user@example.com/'), 'example.com', 'http://user@example.com/');
+ equal( tracker.hook.test._getHostName('http://user:password@example.com/'), 'example.com', 'http://user:password@example.com/');
+
+ equal( tracker.hook.test._getParameter('http://piwik.org/', 'q'), '', 'no query');
+ equal( tracker.hook.test._getParameter('http://piwik.org/?q=test', 'q'), 'test', '?q');
+ equal( tracker.hook.test._getParameter('http://piwik.org/?q=test#aq=not', 'q'), 'test', '?q');
+ equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2', 'q'), 'test2', '&q');
// getParameter in hash tag
equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#aq=not', 'q'), 'test2', '&q');
- equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#aq=not', 'aq'), 'not', '#aq');
- equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#bq=yes&aq=not', 'bq'), 'yes', '#bq');
- equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#pk_campaign=campaign', 'pk_campaign'), 'campaign', '#pk_campaign');
- equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#bq=yes&aq=not', 'q'), 'test2', '#q');
+ equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#aq=not', 'aq'), 'not', '#aq');
+ equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#bq=yes&aq=not', 'bq'), 'yes', '#bq');
+ equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#pk_campaign=campaign', 'pk_campaign'), 'campaign', '#pk_campaign');
+ equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#bq=yes&aq=not', 'q'), 'test2', '#q');
// URL decoded
- equal( tracker.hook.test._getParameter('http://piwik.org/?q=http%3a%2f%2flocalhost%2f%3fr%3d1%26q%3dfalse', 'q'), 'http://localhost/?r=1&q=false', 'url');
+ equal( tracker.hook.test._getParameter('http://piwik.org/?q=http%3a%2f%2flocalhost%2f%3fr%3d1%26q%3dfalse', 'q'), 'http://localhost/?r=1&q=false', 'url');
equal( tracker.hook.test._getParameter('http://piwik.org/?q=http%3a%2f%2flocalhost%2f%3fr%3d1%26q%3dfalse&notq=not', 'q'), 'http://localhost/?r=1&q=false', 'url');
// non existing parameters
@@ -489,237 +492,237 @@ function PiwikTest() {
equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#bq=yes&aq=not', 'bq='), "", '#q');
equal( tracker.hook.test._getParameter('http://piwik.org/?p=test1&q=test2#bq=yes&aq=not', 'sp='), "", '#q');
- equal( typeof tracker.hook.test._urlFixup, 'function', 'urlFixup' );
-
- deepEqual( tracker.hook.test._urlFixup( 'webcache.googleusercontent.com', 'http://webcache.googleusercontent.com/search?q=cache:CD2SncROLs4J:piwik.org/blog/2010/04/piwik-0-6-security-advisory/+piwik+security&cd=1&hl=en&ct=clnk', '' ),
- ['piwik.org', 'http://piwik.org/qa', ''], 'webcache.googleusercontent.com' );
-
- deepEqual( tracker.hook.test._urlFixup( 'cc.bingj.com', 'http://cc.bingj.com/cache.aspx?q=web+analytics&d=5020318678516316&mkt=en-CA&setlang=en-CA&w=6ea8ea88,ff6c44df', '' ),
- ['piwik.org', 'http://piwik.org/qa', ''], 'cc.bingj.com' );
+ equal( typeof tracker.hook.test._urlFixup, 'function', 'urlFixup' );
+
+ deepEqual( tracker.hook.test._urlFixup( 'webcache.googleusercontent.com', 'http://webcache.googleusercontent.com/search?q=cache:CD2SncROLs4J:piwik.org/blog/2010/04/piwik-0-6-security-advisory/+piwik+security&cd=1&hl=en&ct=clnk', '' ),
+ ['piwik.org', 'http://piwik.org/qa', ''], 'webcache.googleusercontent.com' );
+
+ deepEqual( tracker.hook.test._urlFixup( 'cc.bingj.com', 'http://cc.bingj.com/cache.aspx?q=web+analytics&d=5020318678516316&mkt=en-CA&setlang=en-CA&w=6ea8ea88,ff6c44df', '' ),
+ ['piwik.org', 'http://piwik.org/qa', ''], 'cc.bingj.com' );
+
+ deepEqual( tracker.hook.test._urlFixup( '74.6.239.185', 'http://74.6.239.185/search/srpcache?ei=UTF-8&p=piwik&fr=yfp-t-964&fp_ip=ca&u=http://cc.bingj.com/cache.aspx?q=piwik&d=4770519086662477&mkt=en-US&setlang=en-US&w=f4bc05d8,8c8af2e3&icp=1&.intl=us&sig=PXmPDNqapxSQ.scsuhIpZA--', '' ),
+ ['piwik.org', 'http://piwik.org/qa', ''], 'yahoo cache (1)' );
+
+ deepEqual( tracker.hook.test._urlFixup( '74.6.239.84', 'http://74.6.239.84/search/srpcache?ei=UTF-8&p=web+analytics&fr=yfp-t-715&u=http://cc.bingj.com/cache.aspx?q=web+analytics&d=5020318680482405&mkt=en-CA&setlang=en-CA&w=a68d7af0,873cfeb0&icp=1&.intl=ca&sig=x6MgjtrDYvsxi8Zk2ZX.tw--', '' ),
+ ['piwik.org', 'http://piwik.org/qa', ''], 'yahoo cache (2)' );
+
+ deepEqual( tracker.hook.test._urlFixup( 'translate.googleusercontent.com', 'http://translate.googleusercontent.com/translate_c?hl=en&ie=UTF-8&sl=en&tl=fr&u=http://piwik.org/&prev=_t&rurl=translate.google.com&twu=1&usg=ALkJrhirI_ijXXT7Ja_aDGndEJbE7pJqpQ', '' ),
+ ['piwik.org', 'http://piwik.org/', 'http://translate.googleusercontent.com/translate_c?hl=en&ie=UTF-8&sl=en&tl=fr&u=http://piwik.org/&prev=_t&rurl=translate.google.com&twu=1&usg=ALkJrhirI_ijXXT7Ja_aDGndEJbE7pJqpQ'], 'translate.googleusercontent.com' );
- deepEqual( tracker.hook.test._urlFixup( '74.6.239.185', 'http://74.6.239.185/search/srpcache?ei=UTF-8&p=piwik&fr=yfp-t-964&fp_ip=ca&u=http://cc.bingj.com/cache.aspx?q=piwik&d=4770519086662477&mkt=en-US&setlang=en-US&w=f4bc05d8,8c8af2e3&icp=1&.intl=us&sig=PXmPDNqapxSQ.scsuhIpZA--', '' ),
- ['piwik.org', 'http://piwik.org/qa', ''], 'yahoo cache (1)' );
+ equal( typeof tracker.hook.test._domainFixup, 'function', 'domainFixup' );
- deepEqual( tracker.hook.test._urlFixup( '74.6.239.84', 'http://74.6.239.84/search/srpcache?ei=UTF-8&p=web+analytics&fr=yfp-t-715&u=http://cc.bingj.com/cache.aspx?q=web+analytics&d=5020318680482405&mkt=en-CA&setlang=en-CA&w=a68d7af0,873cfeb0&icp=1&.intl=ca&sig=x6MgjtrDYvsxi8Zk2ZX.tw--', '' ),
- ['piwik.org', 'http://piwik.org/qa', ''], 'yahoo cache (2)' );
+ equal( tracker.hook.test._domainFixup( 'localhost' ), 'localhost', 'domainFixup: localhost' );
+ equal( tracker.hook.test._domainFixup( 'localhost.' ), 'localhost', 'domainFixup: localhost.' );
+ equal( tracker.hook.test._domainFixup( 'localhost.localdomain' ), 'localhost.localdomain', 'domainFixup: localhost.localdomain' );
+ equal( tracker.hook.test._domainFixup( 'localhost.localdomain.' ), 'localhost.localdomain', 'domainFixup: localhost.localdomain.' );
+ equal( tracker.hook.test._domainFixup( '127.0.0.1' ), '127.0.0.1', 'domainFixup: 127.0.0.1' );
+ equal( tracker.hook.test._domainFixup( 'www.example.com' ), 'www.example.com', 'domainFixup: www.example.com' );
+ equal( tracker.hook.test._domainFixup( 'www.example.com.' ), 'www.example.com', 'domainFixup: www.example.com.' );
+ equal( tracker.hook.test._domainFixup( '.example.com' ), '.example.com', 'domainFixup: .example.com' );
+ equal( tracker.hook.test._domainFixup( '.example.com.' ), '.example.com', 'domainFixup: .example.com.' );
+ equal( tracker.hook.test._domainFixup( '*.example.com' ), '.example.com', 'domainFixup: *.example.com' );
+ equal( tracker.hook.test._domainFixup( '*.example.com.' ), '.example.com', 'domainFixup: *.example.com.' );
+
+ equal( typeof tracker.hook.test._titleFixup, 'function', 'titleFixup' );
+ equal( tracker.hook.test._titleFixup( 'hello' ), 'hello', 'hello string' );
+ equal( tracker.hook.test._titleFixup( document.title ), 'piwik.js: Unit Tests', 'hello string' );
+
+ equal( typeof tracker.hook.test._purify, 'function', 'purify' );
+
+ equal( tracker.hook.test._purify('http://example.com'), 'http://example.com', 'http://example.com');
+ equal( tracker.hook.test._purify('http://example.com#hash'), 'http://example.com#hash', 'http://example.com#hash');
+ equal( tracker.hook.test._purify('http://example.com/?q=xyz#hash'), 'http://example.com/?q=xyz#hash', 'http://example.com/?q=xyz#hash');
+
+ tracker.discardHashTag(true);
+
+ equal( tracker.hook.test._purify('http://example.com'), 'http://example.com', 'http://example.com');
+ equal( tracker.hook.test._purify('http://example.com#hash'), 'http://example.com', 'http://example.com#hash');
+ equal( tracker.hook.test._purify('http://example.com/?q=xyz#hash'), 'http://example.com/?q=xyz', 'http://example.com/?q=xyz#hash');
+ });
- deepEqual( tracker.hook.test._urlFixup( 'translate.googleusercontent.com', 'http://translate.googleusercontent.com/translate_c?hl=en&ie=UTF-8&sl=en&tl=fr&u=http://piwik.org/&prev=_t&rurl=translate.google.com&twu=1&usg=ALkJrhirI_ijXXT7Ja_aDGndEJbE7pJqpQ', '' ),
- ['piwik.org', 'http://piwik.org/', 'http://translate.googleusercontent.com/translate_c?hl=en&ie=UTF-8&sl=en&tl=fr&u=http://piwik.org/&prev=_t&rurl=translate.google.com&twu=1&usg=ALkJrhirI_ijXXT7Ja_aDGndEJbE7pJqpQ'], 'translate.googleusercontent.com' );
+ // support for setCustomUrl( relativeURI )
+ test("getProtocolScheme and resolveRelativeReference", function() {
+ expect(27);
- equal( typeof tracker.hook.test._domainFixup, 'function', 'domainFixup' );
+ var tracker = Piwik.getTracker();
- equal( tracker.hook.test._domainFixup( 'localhost' ), 'localhost', 'domainFixup: localhost' );
- equal( tracker.hook.test._domainFixup( 'localhost.' ), 'localhost', 'domainFixup: localhost.' );
- equal( tracker.hook.test._domainFixup( 'localhost.localdomain' ), 'localhost.localdomain', 'domainFixup: localhost.localdomain' );
- equal( tracker.hook.test._domainFixup( 'localhost.localdomain.' ), 'localhost.localdomain', 'domainFixup: localhost.localdomain.' );
- equal( tracker.hook.test._domainFixup( '127.0.0.1' ), '127.0.0.1', 'domainFixup: 127.0.0.1' );
- equal( tracker.hook.test._domainFixup( 'www.example.com' ), 'www.example.com', 'domainFixup: www.example.com' );
- equal( tracker.hook.test._domainFixup( 'www.example.com.' ), 'www.example.com', 'domainFixup: www.example.com.' );
- equal( tracker.hook.test._domainFixup( '.example.com' ), '.example.com', 'domainFixup: .example.com' );
- equal( tracker.hook.test._domainFixup( '.example.com.' ), '.example.com', 'domainFixup: .example.com.' );
- equal( tracker.hook.test._domainFixup( '*.example.com' ), '.example.com', 'domainFixup: *.example.com' );
- equal( tracker.hook.test._domainFixup( '*.example.com.' ), '.example.com', 'domainFixup: *.example.com.' );
-
- equal( typeof tracker.hook.test._titleFixup, 'function', 'titleFixup' );
- equal( tracker.hook.test._titleFixup( 'hello' ), 'hello', 'hello string' );
- equal( tracker.hook.test._titleFixup( document.title ), 'piwik.js: Unit Tests', 'hello string' );
-
- equal( typeof tracker.hook.test._purify, 'function', 'purify' );
+ equal( typeof tracker.hook.test._getProtocolScheme, 'function', "getProtocolScheme" );
+
+ ok( tracker.hook.test._getProtocolScheme('http://example.com') === 'http', 'http://' );
+ ok( tracker.hook.test._getProtocolScheme('https://example.com') === 'https', 'https://' );
+ ok( tracker.hook.test._getProtocolScheme('file://somefile.txt') === 'file', 'file://' );
+ ok( tracker.hook.test._getProtocolScheme('mailto:somebody@example.com') === 'mailto', 'mailto:' );
+ ok( tracker.hook.test._getProtocolScheme('javascript:alert(document.cookie)') === 'javascript', 'javascript:' );
+ ok( tracker.hook.test._getProtocolScheme('') === null, 'empty string' );
+ ok( tracker.hook.test._getProtocolScheme(':') === null, 'unspecified scheme' );
+ ok( tracker.hook.test._getProtocolScheme('scheme') === null, 'missing colon' );
+
+
+ equal( typeof tracker.hook.test._resolveRelativeReference, 'function', 'resolveRelativeReference' );
+
+ var i, j, data = [
+ // unsupported
+// ['http://example.com/index.php/pathinfo?query', 'test.php', 'http://example.com/test.php'],
+// ['http://example.com/subdir/index.php', '../test.php', 'http://example.com/test.php'],
+
+ // already absolute
+ ['http://example.com/', 'http://example.com', 'http://example.com'],
+ ['http://example.com/', 'https://example.com/', 'https://example.com/'],
+ ['http://example.com/', 'http://example.com/index', 'http://example.com/index'],
+
+ // relative to root
+ ['http://example.com/', '', 'http://example.com/'],
+ ['http://example.com/', '/', 'http://example.com/'],
+ ['http://example.com/', '/test.php', 'http://example.com/test.php'],
+ ['http://example.com/index', '/test.php', 'http://example.com/test.php'],
+ ['http://example.com/index?query=x', '/test.php', 'http://example.com/test.php'],
+ ['http://example.com/index?query=x#hash', '/test.php', 'http://example.com/test.php'],
+ ['http://example.com/?query', '/test.php', 'http://example.com/test.php'],
+ ['http://example.com/#hash', '/test.php', 'http://example.com/test.php'],
+
+ // relative to current document
+ ['http://example.com/subdir/', 'test.php', 'http://example.com/subdir/test.php'],
+ ['http://example.com/subdir/index', 'test.php', 'http://example.com/subdir/test.php'],
+ ['http://example.com/subdir/index?query=x', 'test.php', 'http://example.com/subdir/test.php'],
+ ['http://example.com/subdir/index?query=x#hash', 'test.php', 'http://example.com/subdir/test.php'],
+ ['http://example.com/subdir/?query', 'test.php', 'http://example.com/subdir/test.php'],
+ ['http://example.com/subdir/#hash', 'test.php', 'http://example.com/subdir/test.php']
+ ];
+
+ for (i = 0; i < data.length; i++) {
+ j = data[i];
+ equal( tracker.hook.test._resolveRelativeReference(j[0], j[1]), j[2], j[2] );
+ }
+ });
- equal( tracker.hook.test._purify('http://example.com'), 'http://example.com', 'http://example.com');
- equal( tracker.hook.test._purify('http://example.com#hash'), 'http://example.com#hash', 'http://example.com#hash');
- equal( tracker.hook.test._purify('http://example.com/?q=xyz#hash'), 'http://example.com/?q=xyz#hash', 'http://example.com/?q=xyz#hash');
+ test("Tracker setDomains() and isSiteHostName()", function() {
+ expect(13);
- tracker.discardHashTag(true);
+ var tracker = Piwik.getTracker();
- equal( tracker.hook.test._purify('http://example.com'), 'http://example.com', 'http://example.com');
- equal( tracker.hook.test._purify('http://example.com#hash'), 'http://example.com', 'http://example.com#hash');
- equal( tracker.hook.test._purify('http://example.com/?q=xyz#hash'), 'http://example.com/?q=xyz', 'http://example.com/?q=xyz#hash');
- });
+ equal( typeof tracker.hook.test._isSiteHostName, 'function', "isSiteHostName" );
- // support for setCustomUrl( relativeURI )
- test("getProtocolScheme and resolveRelativeReference", function() {
- expect(27);
+ // test wildcards
+ tracker.setDomains( ['*.Example.com'] );
- var tracker = Piwik.getTracker();
+ // skip test if testing on localhost
+ ok( window.location.hostname != 'localhost' ? !tracker.hook.test._isSiteHostName('localhost') : true, '!isSiteHostName("localhost")' );
- equal( typeof tracker.hook.test._getProtocolScheme, 'function', "getProtocolScheme" );
+ ok( !tracker.hook.test._isSiteHostName('google.com'), '!isSiteHostName("google.com")' );
+ ok( tracker.hook.test._isSiteHostName('example.com'), 'isSiteHostName("example.com")' );
+ ok( tracker.hook.test._isSiteHostName('www.example.com'), 'isSiteHostName("www.example.com")' );
+ ok( tracker.hook.test._isSiteHostName('www.sub.example.com'), 'isSiteHostName("www.sub.example.com")' );
- ok( tracker.hook.test._getProtocolScheme('http://example.com') === 'http', 'http://' );
- ok( tracker.hook.test._getProtocolScheme('https://example.com') === 'https', 'https://' );
- ok( tracker.hook.test._getProtocolScheme('file://somefile.txt') === 'file', 'file://' );
- ok( tracker.hook.test._getProtocolScheme('mailto:somebody@example.com') === 'mailto', 'mailto:' );
- ok( tracker.hook.test._getProtocolScheme('javascript:alert(document.cookie)') === 'javascript', 'javascript:' );
- ok( tracker.hook.test._getProtocolScheme('') === null, 'empty string' );
- ok( tracker.hook.test._getProtocolScheme(':') === null, 'unspecified scheme' );
- ok( tracker.hook.test._getProtocolScheme('scheme') === null, 'missing colon' );
+ tracker.setDomains( 'dev.piwik.org' );
+ ok( !tracker.hook.test._isSiteHostName('piwik.org'), '!isSiteHostName("piwik.org")' );
+ ok( tracker.hook.test._isSiteHostName('dev.piwik.org'), 'isSiteHostName("dev.piwik.org")' );
+ ok( !tracker.hook.test._isSiteHostName('piwik.example.org'), '!isSiteHostName("piwik.example.org")');
+ ok( !tracker.hook.test._isSiteHostName('dev.piwik.org.com'), '!isSiteHostName("dev.piwik.org.com")');
+ tracker.setDomains( '.piwik.org' );
+ ok( tracker.hook.test._isSiteHostName('piwik.org'), 'isSiteHostName("piwik.org")' );
+ ok( tracker.hook.test._isSiteHostName('dev.piwik.org'), 'isSiteHostName("dev.piwik.org")' );
+ ok( !tracker.hook.test._isSiteHostName('piwik.org.com'), '!isSiteHostName("piwik.org.com")');
+ });
- equal( typeof tracker.hook.test._resolveRelativeReference, 'function', 'resolveRelativeReference' );
+ test("Tracker getClassesRegExp()", function() {
+ expect(3);
- var i, j, data = [
- // unsupported
-// ['http://example.com/index.php/pathinfo?query', 'test.php', 'http://example.com/test.php'],
-// ['http://example.com/subdir/index.php', '../test.php', 'http://example.com/test.php'],
+ var tracker = Piwik.getTracker();
- // already absolute
- ['http://example.com/', 'http://example.com', 'http://example.com'],
- ['http://example.com/', 'https://example.com/', 'https://example.com/'],
- ['http://example.com/', 'http://example.com/index', 'http://example.com/index'],
+ equal( typeof tracker.hook.test._getClassesRegExp, 'function', "getClassesRegExp" );
- // relative to root
- ['http://example.com/', '', 'http://example.com/'],
- ['http://example.com/', '/', 'http://example.com/'],
- ['http://example.com/', '/test.php', 'http://example.com/test.php'],
- ['http://example.com/index', '/test.php', 'http://example.com/test.php'],
- ['http://example.com/index?query=x', '/test.php', 'http://example.com/test.php'],
- ['http://example.com/index?query=x#hash', '/test.php', 'http://example.com/test.php'],
- ['http://example.com/?query', '/test.php', 'http://example.com/test.php'],
- ['http://example.com/#hash', '/test.php', 'http://example.com/test.php'],
+ var download = tracker.hook.test._getClassesRegExp([], 'download');
+ ok( download.test('piwik_download'), 'piwik_download (default)' );
- // relative to current document
- ['http://example.com/subdir/', 'test.php', 'http://example.com/subdir/test.php'],
- ['http://example.com/subdir/index', 'test.php', 'http://example.com/subdir/test.php'],
- ['http://example.com/subdir/index?query=x', 'test.php', 'http://example.com/subdir/test.php'],
- ['http://example.com/subdir/index?query=x#hash', 'test.php', 'http://example.com/subdir/test.php'],
- ['http://example.com/subdir/?query', 'test.php', 'http://example.com/subdir/test.php'],
- ['http://example.com/subdir/#hash', 'test.php', 'http://example.com/subdir/test.php']
- ];
+ var outlink = tracker.hook.test._getClassesRegExp([], 'link');
+ ok( outlink.test('piwik_link'), 'piwik_link (default)' );
- for (i = 0; i < data.length; i++) {
- j = data[i];
- equal( tracker.hook.test._resolveRelativeReference(j[0], j[1]), j[2], j[2] );
- }
- });
+ });
- test("Tracker setDomains() and isSiteHostName()", function() {
- expect(13);
-
- var tracker = Piwik.getTracker();
+ test("Tracker setIgnoreClasses() and getClassesRegExp(ignore)", function() {
+ expect(14);
- equal( typeof tracker.hook.test._isSiteHostName, 'function', "isSiteHostName" );
-
- // test wildcards
- tracker.setDomains( ['*.Example.com'] );
-
- // skip test if testing on localhost
- ok( window.location.hostname != 'localhost' ? !tracker.hook.test._isSiteHostName('localhost') : true, '!isSiteHostName("localhost")' );
-
- ok( !tracker.hook.test._isSiteHostName('google.com'), '!isSiteHostName("google.com")' );
- ok( tracker.hook.test._isSiteHostName('example.com'), 'isSiteHostName("example.com")' );
- ok( tracker.hook.test._isSiteHostName('www.example.com'), 'isSiteHostName("www.example.com")' );
- ok( tracker.hook.test._isSiteHostName('www.sub.example.com'), 'isSiteHostName("www.sub.example.com")' );
-
- tracker.setDomains( 'dev.piwik.org' );
- ok( !tracker.hook.test._isSiteHostName('piwik.org'), '!isSiteHostName("piwik.org")' );
- ok( tracker.hook.test._isSiteHostName('dev.piwik.org'), 'isSiteHostName("dev.piwik.org")' );
- ok( !tracker.hook.test._isSiteHostName('piwik.example.org'), '!isSiteHostName("piwik.example.org")');
- ok( !tracker.hook.test._isSiteHostName('dev.piwik.org.com'), '!isSiteHostName("dev.piwik.org.com")');
-
- tracker.setDomains( '.piwik.org' );
- ok( tracker.hook.test._isSiteHostName('piwik.org'), 'isSiteHostName("piwik.org")' );
- ok( tracker.hook.test._isSiteHostName('dev.piwik.org'), 'isSiteHostName("dev.piwik.org")' );
- ok( !tracker.hook.test._isSiteHostName('piwik.org.com'), '!isSiteHostName("piwik.org.com")');
- });
-
- test("Tracker getClassesRegExp()", function() {
- expect(3);
-
- var tracker = Piwik.getTracker();
-
- equal( typeof tracker.hook.test._getClassesRegExp, 'function', "getClassesRegExp" );
-
- var download = tracker.hook.test._getClassesRegExp([], 'download');
- ok( download.test('piwik_download'), 'piwik_download (default)' );
-
- var outlink = tracker.hook.test._getClassesRegExp([], 'link');
- ok( outlink.test('piwik_link'), 'piwik_link (default)' );
-
- });
-
- test("Tracker setIgnoreClasses() and getClassesRegExp(ignore)", function() {
- expect(14);
-
- var tracker = Piwik.getTracker();
-
- var ignore = tracker.hook.test._getClassesRegExp([], 'ignore');
- ok( ignore.test('piwik_ignore'), '[1] piwik_ignore' );
- ok( !ignore.test('pk_ignore'), '[1] !pk_ignore' );
- ok( !ignore.test('apiwik_ignore'), '!apiwik_ignore' );
- ok( !ignore.test('piwik_ignorez'), '!piwik_ignorez' );
- ok( ignore.test('abc piwik_ignore xyz'), 'abc piwik_ignore xyz' );
-
- tracker.setIgnoreClasses( 'my_download' );
- ignore = tracker.hook.test._getClassesRegExp(['my_download'], 'ignore');
- ok( ignore.test('piwik_ignore'), '[2] piwik_ignore' );
- ok( !ignore.test('pk_ignore'), '[2] !pk_ignore' );
- ok( ignore.test('my_download'), 'my_download' );
- ok( ignore.test('abc piwik_ignore xyz'), 'abc piwik_ignore xyz' );
- ok( ignore.test('abc my_download xyz'), 'abc my_download xyz' );
-
- tracker.setIgnoreClasses( ['my_download', 'my_outlink'] );
- ignore = tracker.hook.test._getClassesRegExp(['my_download','my_outlink'], 'ignore');
- ok( ignore.test('piwik_ignore'), '[3] piwik_ignore' );
- ok( !ignore.test('pk_ignore'), '[3] !pk_ignore' );
- ok( ignore.test('my_download'), 'my_download' );
- ok( ignore.test('my_outlink'), 'my_outlink' );
- });
-
- test("Tracker hasCookies(), getCookie(), setCookie()", function() {
- expect(2);
-
- var tracker = Piwik.getTracker();
-
- ok( tracker.hook.test._hasCookies() == '1', 'hasCookies()' );
-
- var cookieName = '_pk_test_harness' + Math.random(),
- expectedValue = String(Math.random());
- tracker.hook.test._setCookie( cookieName, expectedValue );
- equal( tracker.hook.test._getCookie( cookieName ), expectedValue, 'getCookie(), setCookie()' );
- });
-
- test("Tracker setDownloadExtensions(), addDownloadExtensions(), setDownloadClasses(), setLinkClasses(), and getLinkType()", function() {
- expect(25);
+ var tracker = Piwik.getTracker();
- var tracker = Piwik.getTracker();
+ var ignore = tracker.hook.test._getClassesRegExp([], 'ignore');
+ ok( ignore.test('piwik_ignore'), '[1] piwik_ignore' );
+ ok( !ignore.test('pk_ignore'), '[1] !pk_ignore' );
+ ok( !ignore.test('apiwik_ignore'), '!apiwik_ignore' );
+ ok( !ignore.test('piwik_ignorez'), '!piwik_ignorez' );
+ ok( ignore.test('abc piwik_ignore xyz'), 'abc piwik_ignore xyz' );
+
+ tracker.setIgnoreClasses( 'my_download' );
+ ignore = tracker.hook.test._getClassesRegExp(['my_download'], 'ignore');
+ ok( ignore.test('piwik_ignore'), '[2] piwik_ignore' );
+ ok( !ignore.test('pk_ignore'), '[2] !pk_ignore' );
+ ok( ignore.test('my_download'), 'my_download' );
+ ok( ignore.test('abc piwik_ignore xyz'), 'abc piwik_ignore xyz' );
+ ok( ignore.test('abc my_download xyz'), 'abc my_download xyz' );
+
+ tracker.setIgnoreClasses( ['my_download', 'my_outlink'] );
+ ignore = tracker.hook.test._getClassesRegExp(['my_download','my_outlink'], 'ignore');
+ ok( ignore.test('piwik_ignore'), '[3] piwik_ignore' );
+ ok( !ignore.test('pk_ignore'), '[3] !pk_ignore' );
+ ok( ignore.test('my_download'), 'my_download' );
+ ok( ignore.test('my_outlink'), 'my_outlink' );
+ });
- equal( typeof tracker.hook.test._getLinkType, 'function', 'getLinkType' );
+ test("Tracker hasCookies(), getCookie(), setCookie()", function() {
+ expect(2);
- equal( tracker.hook.test._getLinkType('something', 'goofy.html', false), 'link', 'implicit link' );
- equal( tracker.hook.test._getLinkType('something', 'goofy.pdf', false), 'download', 'external PDF files are downloads' );
- equal( tracker.hook.test._getLinkType('something', 'goofy.pdf', true), 'download', 'local PDF are downloads' );
- equal( tracker.hook.test._getLinkType('something', 'goofy-with-dash.pdf', true), 'download', 'local PDF are downloads' );
+ var tracker = Piwik.getTracker();
- equal( tracker.hook.test._getLinkType('piwik_download', 'piwiktest.ext', true), 'download', 'piwik_download' );
- equal( tracker.hook.test._getLinkType('abc piwik_download xyz', 'piwiktest.ext', true), 'download', 'abc piwik_download xyz' );
- equal( tracker.hook.test._getLinkType('piwik_link', 'piwiktest.asp', true), 'link', 'piwik_link' );
- equal( tracker.hook.test._getLinkType('abc piwik_link xyz', 'piwiktest.asp', true), 'link', 'abc piwik_link xyz' );
- equal( tracker.hook.test._getLinkType('something', 'piwiktest.txt', true), 'download', 'download extension' );
- equal( tracker.hook.test._getLinkType('something', 'piwiktest.ext', true), 0, '[1] link (default)' );
+ ok( tracker.hook.test._hasCookies() == '1', 'hasCookies()' );
- equal( tracker.hook.test._getLinkType('something', 'file.zip', true), 'download', 'download file.zip' );
- equal( tracker.hook.test._getLinkType('something', 'index.php?name=file.zip#anchor', true), 'download', 'download file.zip (anchor)' );
- equal( tracker.hook.test._getLinkType('something', 'index.php?name=file.zip&redirect=yes', true), 'download', 'download file.zip (is param)' );
- equal( tracker.hook.test._getLinkType('something', 'file.zip?mirror=true', true), 'download', 'download file.zip (with param)' );
+ var cookieName = '_pk_test_harness' + Math.random(),
+ expectedValue = String(Math.random());
+ tracker.hook.test._setCookie( cookieName, expectedValue );
+ equal( tracker.hook.test._getCookie( cookieName ), expectedValue, 'getCookie(), setCookie()' );
+ });
- tracker.setDownloadExtensions('pk');
- equal( tracker.hook.test._getLinkType('something', 'piwiktest.pk', true), 'download', '[1] .pk == download extension' );
- equal( tracker.hook.test._getLinkType('something', 'piwiktest.txt', true), 0, '.txt =! download extension' );
-
- tracker.addDownloadExtensions('xyz');
- equal( tracker.hook.test._getLinkType('something', 'piwiktest.pk', true), 'download', '[2] .pk == download extension' );
- equal( tracker.hook.test._getLinkType('something', 'piwiktest.xyz', true), 'download', '.xyz == download extension' );
+ test("Tracker setDownloadExtensions(), addDownloadExtensions(), setDownloadClasses(), setLinkClasses(), and getLinkType()", function() {
+ expect(25);
- tracker.setDownloadClasses(['a', 'b']);
- equal( tracker.hook.test._getLinkType('abc piwik_download', 'piwiktest.ext', true), 'download', 'download (default)' );
- equal( tracker.hook.test._getLinkType('abc a', 'piwiktest.ext', true), 'download', 'download (a)' );
- equal( tracker.hook.test._getLinkType('b abc', 'piwiktest.ext', true), 'download', 'download (b)' );
+ var tracker = Piwik.getTracker();
- tracker.setLinkClasses(['c', 'd']);
- equal( tracker.hook.test._getLinkType('abc piwik_link', 'piwiktest.ext', true), 'link', 'link (default)' );
- equal( tracker.hook.test._getLinkType('abc c', 'piwiktest.ext', true), 'link', 'link (c)' );
- equal( tracker.hook.test._getLinkType('d abc', 'piwiktest.ext', true), 'link', 'link (d)' );
- });
+ equal( typeof tracker.hook.test._getLinkType, 'function', 'getLinkType' );
+
+ equal( tracker.hook.test._getLinkType('something', 'goofy.html', false), 'link', 'implicit link' );
+ equal( tracker.hook.test._getLinkType('something', 'goofy.pdf', false), 'download', 'external PDF files are downloads' );
+ equal( tracker.hook.test._getLinkType('something', 'goofy.pdf', true), 'download', 'local PDF are downloads' );
+ equal( tracker.hook.test._getLinkType('something', 'goofy-with-dash.pdf', true), 'download', 'local PDF are downloads' );
+
+ equal( tracker.hook.test._getLinkType('piwik_download', 'piwiktest.ext', true), 'download', 'piwik_download' );
+ equal( tracker.hook.test._getLinkType('abc piwik_download xyz', 'piwiktest.ext', true), 'download', 'abc piwik_download xyz' );
+ equal( tracker.hook.test._getLinkType('piwik_link', 'piwiktest.asp', true), 'link', 'piwik_link' );
+ equal( tracker.hook.test._getLinkType('abc piwik_link xyz', 'piwiktest.asp', true), 'link', 'abc piwik_link xyz' );
+ equal( tracker.hook.test._getLinkType('something', 'piwiktest.txt', true), 'download', 'download extension' );
+ equal( tracker.hook.test._getLinkType('something', 'piwiktest.ext', true), 0, '[1] link (default)' );
+
+ equal( tracker.hook.test._getLinkType('something', 'file.zip', true), 'download', 'download file.zip' );
+ equal( tracker.hook.test._getLinkType('something', 'index.php?name=file.zip#anchor', true), 'download', 'download file.zip (anchor)' );
+ equal( tracker.hook.test._getLinkType('something', 'index.php?name=file.zip&redirect=yes', true), 'download', 'download file.zip (is param)' );
+ equal( tracker.hook.test._getLinkType('something', 'file.zip?mirror=true', true), 'download', 'download file.zip (with param)' );
+
+ tracker.setDownloadExtensions('pk');
+ equal( tracker.hook.test._getLinkType('something', 'piwiktest.pk', true), 'download', '[1] .pk == download extension' );
+ equal( tracker.hook.test._getLinkType('something', 'piwiktest.txt', true), 0, '.txt =! download extension' );
+
+ tracker.addDownloadExtensions('xyz');
+ equal( tracker.hook.test._getLinkType('something', 'piwiktest.pk', true), 'download', '[2] .pk == download extension' );
+ equal( tracker.hook.test._getLinkType('something', 'piwiktest.xyz', true), 'download', '.xyz == download extension' );
+
+ tracker.setDownloadClasses(['a', 'b']);
+ equal( tracker.hook.test._getLinkType('abc piwik_download', 'piwiktest.ext', true), 'download', 'download (default)' );
+ equal( tracker.hook.test._getLinkType('abc a', 'piwiktest.ext', true), 'download', 'download (a)' );
+ equal( tracker.hook.test._getLinkType('b abc', 'piwiktest.ext', true), 'download', 'download (b)' );
+
+ tracker.setLinkClasses(['c', 'd']);
+ equal( tracker.hook.test._getLinkType('abc piwik_link', 'piwiktest.ext', true), 'link', 'link (default)' );
+ equal( tracker.hook.test._getLinkType('abc c', 'piwiktest.ext', true), 'link', 'link (c)' );
+ equal( tracker.hook.test._getLinkType('d abc', 'piwiktest.ext', true), 'link', 'link (d)' );
+ });
test("utf8_encode(), sha1()", function() {
expect(6);
@@ -744,179 +747,263 @@ function PiwikTest() {
equal( tracker.getRequest('hello=world').indexOf('hello=world&idsite=&rec=1&r='), 0);
});
- test("prefixPropertyName()", function() {
- expect(3);
-
- var tracker = Piwik.getTracker();
-
- equal( typeof tracker.hook.test._prefixPropertyName, 'function', 'prefixPropertyName' );
- equal( tracker.hook.test._prefixPropertyName('', 'hidden'), 'hidden', 'no prefix' );
- equal( tracker.hook.test._prefixPropertyName('webkit', 'hidden'), 'webkitHidden', 'webkit prefix' );
- });
-
- test("Internal timers and setLinkTrackingTimer()", function() {
- expect(5);
-
- var tracker = Piwik.getTracker();
-
- ok( ! ( _paq instanceof Array ), "async tracker proxy not an array" );
- equal( typeof tracker, typeof _paq, "async tracker proxy" );
-
- var startTime, stopTime;
-
- equal( typeof tracker.hook.test._beforeUnloadHandler, 'function', 'beforeUnloadHandler' );
-
- startTime = new Date();
- tracker.hook.test._beforeUnloadHandler();
- stopTime = new Date();
- ok( (stopTime.getTime() - startTime.getTime()) < 500, 'beforeUnloadHandler()' );
-
- tracker.setLinkTrackingTimer(2000);
- startTime = new Date();
- tracker.trackPageView();
- tracker.hook.test._beforeUnloadHandler();
- stopTime = new Date();
- ok( (stopTime.getTime() - startTime.getTime()) >= 2000, 'setLinkTrackingTimer()' );
- });
-
- test("Overlay URL Normalizer", function() {
- expect(11);
-
- var test = function(testCases) {
- for (var i = 0; i < testCases.length; i++) {
- var observed = Piwik_Overlay_UrlNormalizer.normalize(testCases[i][0]);
- var expected = testCases[i][1];
- equal(observed, expected, testCases[i][0]);
- }
- };
-
- Piwik_Overlay_UrlNormalizer.initialize();
- Piwik_Overlay_UrlNormalizer.setExcludedParameters(['excluded1', 'excluded2', 'excluded3']);
-
- Piwik_Overlay_UrlNormalizer.setBaseHref(false);
-
- Piwik_Overlay_UrlNormalizer.setCurrentDomain('example.com');
- Piwik_Overlay_UrlNormalizer.setCurrentUrl('https://www.example.com/current/test.html?asdfasdf');
-
- test([
- [
- 'relative/path/',
- 'example.com/current/relative/path/'
- ], [
- 'http://www.example2.com/path/foo.html',
- 'example2.com/path/foo.html'
- ]
- ]);
-
- Piwik_Overlay_UrlNormalizer.setCurrentDomain('www.example3.com');
- Piwik_Overlay_UrlNormalizer.setCurrentUrl('http://example3.com/current/folder/');
-
- test([[
- 'relative.html',
- 'example3.com/current/folder/relative.html'
- ]]);
-
-
- Piwik_Overlay_UrlNormalizer.setBaseHref('http://example.com/base/');
-
- test([
- [
- 'http://www.example2.com/my/test/path.html?id=2&excluded2=foo#MyAnchor',
- 'example2.com/my/test/path.html?id=2#MyAnchor'
- ], [
- '/my/test/foo/../path.html?excluded1=foo&excluded2=foo&excluded3=foo',
- 'example3.com/my/test/path.html'
- ], [
- 'path/./test//test///foo.bar?excluded2=foo&id=3',
- 'example.com/base/path/test/test/foo.bar?id=3'
- ], [
- 'path/./test//test///foo.bar?excluded2=foo#Anchor',
- 'example.com/base/path/test/test/foo.bar#Anchor'
- ], [
- 'https://example2.com//test.html?id=3&excluded1=foo&bar=baz#asdf',
- 'example2.com/test.html?id=3&bar=baz#asdf'
- ], [
- '#',
- ''
- ], [
- '#Anchor',
- ''
- ], [
- '/',
- 'example3.com/'
- ]
- ]);
- });
+ // support for setCustomRequestProcessing( customRequestContentProcessingLogic )
+ test("Tracker setCustomRequestProcessing() and getRequest()", function() {
+ expect(4);
+
+ var tracker = Piwik.getTracker("trackerUrl", "42");
+
+ tracker.setCustomRequestProcessing(function(request){
+ var pairs = request.split('&');
+ var result = {};
+ pairs.forEach(function(pair) {
+ pair = pair.split('=');
+ result[pair[0]] = decodeURIComponent(pair[1] || '');
+ });
+ return JSON.stringify(result);
+ });
+
+ var json = JSON.parse(tracker.getRequest('hello=world'));
+ equal( json.hello, 'world');
+ equal( json.idsite, '42' );
+ equal( json.rec, 1);
+ ok( json.r.length > 0 );
+ });
+
+ // support for addPlugin( pluginName, pluginObj )
+ test("Tracker addPlugin() and getRequest()", function() {
+ expect(12);
+
+ var tracker = Piwik.getTracker();
+
+ var litp = (function() {
+ var lastInteractionType = "";
+ function ecommerce() { lastInteractionType = "ecommerce"; }
+ function event() { lastInteractionType = "event"; }
+ function goal() { lastInteractionType = "goal"; }
+ function link() { lastInteractionType = "link"; }
+ function load() { lastInteractionType = "load"; }
+ function log() { lastInteractionType = "log"; }
+ function ping() { lastInteractionType = "ping"; }
+ function sitesearch() { lastInteractionType = "sitesearch"; }
+ function unload() { lastInteractionType = "unload"; }
+ function getLastInteractionType() { return lastInteractionType; }
+
+ return {
+ ecommerce: ecommerce,
+ event : event,
+ goal : goal,
+ link : link,
+ load : load,
+ log : log,
+ ping: ping,
+ sitesearch : sitesearch,
+ unload : unload,
+ getLastInteractionType: getLastInteractionType
+ };
+ })();
+
+ tracker.addPlugin("interactionTypePlugin", litp);
+
+ ok(litp.getLastInteractionType() !== 'ecommerce');
+ tracker.trackEcommerceOrder("ORDER ID YES", 666.66);
+ ok(litp.getLastInteractionType() === 'ecommerce');
+
+ ok(litp.getLastInteractionType() !== 'event');
+ tracker.trackEvent("Event Category", "Event Action");
+ ok(litp.getLastInteractionType() === 'event');
+
+ ok(litp.getLastInteractionType() !== 'goal');
+ tracker.trackGoal(42);
+ ok(litp.getLastInteractionType() === 'goal');
+
+ ok(litp.getLastInteractionType() !== 'link');
+ tracker.trackLink("http://example.ca", "link");
+ ok(litp.getLastInteractionType() === 'link');
+
+ ok(litp.getLastInteractionType() !== 'log');
+ tracker.trackPageView();
+ ok(litp.getLastInteractionType() === 'log');
+
+ ok(litp.getLastInteractionType() !== 'sitesearch');
+ tracker.trackSiteSearch("search Keyword");
+ ok(litp.getLastInteractionType() === 'sitesearch');
+ });
+
+ test("prefixPropertyName()", function() {
+ expect(3);
+
+ var tracker = Piwik.getTracker();
+
+ equal( typeof tracker.hook.test._prefixPropertyName, 'function', 'prefixPropertyName' );
+ equal( tracker.hook.test._prefixPropertyName('', 'hidden'), 'hidden', 'no prefix' );
+ equal( tracker.hook.test._prefixPropertyName('webkit', 'hidden'), 'webkitHidden', 'webkit prefix' );
+ });
+
+ test("Internal timers and setLinkTrackingTimer()", function() {
+ expect(5);
+
+ var tracker = Piwik.getTracker();
+
+ ok( ! ( _paq instanceof Array ), "async tracker proxy not an array" );
+ equal( typeof tracker, typeof _paq, "async tracker proxy" );
+
+ var startTime, stopTime;
+
+ equal( typeof tracker.hook.test._beforeUnloadHandler, 'function', 'beforeUnloadHandler' );
+
+ startTime = new Date();
+ tracker.hook.test._beforeUnloadHandler();
+ stopTime = new Date();
+ var msSinceStarted = (stopTime.getTime() - startTime.getTime());
+ ok( msSinceStarted < 510, 'beforeUnloadHandler(): ' + msSinceStarted + ' was greater than 510 ' );
+
+ tracker.setLinkTrackingTimer(2000);
+ startTime = new Date();
+ tracker.trackPageView();
+ tracker.hook.test._beforeUnloadHandler();
+ stopTime = new Date();
+ ok( (stopTime.getTime() - startTime.getTime()) >= 2000, 'setLinkTrackingTimer()' );
+ });
+
+ test("Overlay URL Normalizer", function() {
+ expect(11);
+
+ var test = function(testCases) {
+ for (var i = 0; i < testCases.length; i++) {
+ var observed = Piwik_Overlay_UrlNormalizer.normalize(testCases[i][0]);
+ var expected = testCases[i][1];
+ equal(observed, expected, testCases[i][0]);
+ }
+ };
+
+ Piwik_Overlay_UrlNormalizer.initialize();
+ Piwik_Overlay_UrlNormalizer.setExcludedParameters(['excluded1', 'excluded2', 'excluded3']);
+
+ Piwik_Overlay_UrlNormalizer.setBaseHref(false);
+
+ Piwik_Overlay_UrlNormalizer.setCurrentDomain('example.com');
+ Piwik_Overlay_UrlNormalizer.setCurrentUrl('https://www.example.com/current/test.html?asdfasdf');
+
+ test([
+ [
+ 'relative/path/',
+ 'example.com/current/relative/path/'
+ ], [
+ 'http://www.example2.com/path/foo.html',
+ 'example2.com/path/foo.html'
+ ]
+ ]);
+
+ Piwik_Overlay_UrlNormalizer.setCurrentDomain('www.example3.com');
+ Piwik_Overlay_UrlNormalizer.setCurrentUrl('http://example3.com/current/folder/');
+
+ test([[
+ 'relative.html',
+ 'example3.com/current/folder/relative.html'
+ ]]);
+
+
+ Piwik_Overlay_UrlNormalizer.setBaseHref('http://example.com/base/');
+
+ test([
+ [
+ 'http://www.example2.com/my/test/path.html?id=2&excluded2=foo#MyAnchor',
+ 'example2.com/my/test/path.html?id=2#MyAnchor'
+ ], [
+ '/my/test/foo/../path.html?excluded1=foo&excluded2=foo&excluded3=foo',
+ 'example3.com/my/test/path.html'
+ ], [
+ 'path/./test//test///foo.bar?excluded2=foo&id=3',
+ 'example.com/base/path/test/test/foo.bar?id=3'
+ ], [
+ 'path/./test//test///foo.bar?excluded2=foo#Anchor',
+ 'example.com/base/path/test/test/foo.bar#Anchor'
+ ], [
+ 'https://example2.com//test.html?id=3&excluded1=foo&bar=baz#asdf',
+ 'example2.com/test.html?id=3&bar=baz#asdf'
+ ], [
+ '#',
+ ''
+ ], [
+ '#Anchor',
+ ''
+ ], [
+ '/',
+ 'example3.com/'
+ ]
+ ]);
+ });
<?php
if ($sqlite) {
- ?>
-
- module("request", {
- setup: function () {
- ok(true, "request.setup");
-
- deleteCookies();
- ok(document.cookie === "", "deleteCookies");
- },
- teardown: function () {
- ok(true, "request.teardown");
- }
- });
-
- test("tracking", function() {
- expect(97);
-
- /*
- * Prevent Opera and HtmlUnit from performing the default action (i.e., load the href URL)
- */
- var stopEvent = function (evt) {
- evt = evt || window.event;
-
-// evt.cancelBubble = true;
- evt.returnValue = false;
-
- if (evt.preventDefault)
- evt.preventDefault();
-// if (evt.stopPropagation)
-// evt.stopPropagation();
-
-// return false;
- };
-
- var tracker = Piwik.getTracker();
- tracker.setTrackerUrl("piwik.php");
- tracker.setSiteId(1);
-
- function wait(msecs)
- {
- var start = new Date().getTime();
- var cur = start
- while(cur - start < msecs)
- {
- cur = new Date().getTime();
- }
- }
-
- var visitorIdStart = tracker.getVisitorId();
- // need to wait at least 1 second so that the cookie would be different, if it wasnt persisted
- wait(2000);
- var visitorIdStart2 = tracker.getVisitorId();
- ok( visitorIdStart == visitorIdStart2, "getVisitorId() same when called twice with more than 1 second delay");
- var customUrl = "http://localhost.localdomain/?utm_campaign=YEAH&utm_term=RIGHT!";
- tracker.setCustomUrl(customUrl);
-
- tracker.setCustomData({ "token" : getToken() });
- var data = tracker.getCustomData();
- ok( getToken() != "" && data.token == data["token"] && data.token == getToken(), "setCustomData() , getCustomData()" );
-
- // Custom variables with integer/float values
- tracker.setCustomVariable(1, 1, 2, "visit");
- deepEqual( tracker.getCustomVariable(1, "visit"), ["1", "2"], "setCustomVariable() with integer name/value" );
- tracker.setCustomVariable(1, 1, 0, "visit");
- deepEqual( tracker.getCustomVariable(1, "visit"), ["1", "0"], "setCustomVariable() with integer name/value" );
- tracker.setCustomVariable(2, 1.05, 2.11, "visit");
- deepEqual( tracker.getCustomVariable(2, "visit"), ["1.05", "2.11"], "setCustomVariable() with integer name/value" );
+ ?>
+
+ module("request", {
+ setup: function () {
+ ok(true, "request.setup");
+
+ deleteCookies();
+ ok(document.cookie === "", "deleteCookies");
+ },
+ teardown: function () {
+ ok(true, "request.teardown");
+ }
+ });
+
+ test("tracking", function() {
+ expect(97);
+
+ /*
+ * Prevent Opera and HtmlUnit from performing the default action (i.e., load the href URL)
+ */
+ var stopEvent = function (evt) {
+ evt = evt || window.event;
+
+// evt.cancelBubble = true;
+ evt.returnValue = false;
+
+ if (evt.preventDefault)
+ evt.preventDefault();
+// if (evt.stopPropagation)
+// evt.stopPropagation();
+
+// return false;
+ };
+
+ var tracker = Piwik.getTracker();
+ tracker.setTrackerUrl("piwik.php");
+ tracker.setSiteId(1);
+
+ function wait(msecs)
+ {
+ var start = new Date().getTime();
+ var cur = start
+ while(cur - start < msecs)
+ {
+ cur = new Date().getTime();
+ }
+ }
+
+ var visitorIdStart = tracker.getVisitorId();
+ // need to wait at least 1 second so that the cookie would be different, if it wasnt persisted
+ wait(2000);
+ var visitorIdStart2 = tracker.getVisitorId();
+ ok( visitorIdStart == visitorIdStart2, "getVisitorId() same when called twice with more than 1 second delay");
+ var customUrl = "http://localhost.localdomain/?utm_campaign=YEAH&utm_term=RIGHT!";
+ tracker.setCustomUrl(customUrl);
+
+ tracker.setCustomData({ "token" : getToken() });
+ var data = tracker.getCustomData();
+ ok( getToken() != "" && data.token == data["token"] && data.token == getToken(), "setCustomData() , getCustomData()" );
+
+ // Custom variables with integer/float values
+ tracker.setCustomVariable(1, 1, 2, "visit");
+ deepEqual( tracker.getCustomVariable(1, "visit"), ["1", "2"], "setCustomVariable() with integer name/value" );
+ tracker.setCustomVariable(1, 1, 0, "visit");
+ deepEqual( tracker.getCustomVariable(1, "visit"), ["1", "0"], "setCustomVariable() with integer name/value" );
+ tracker.setCustomVariable(2, 1.05, 2.11, "visit");
+ deepEqual( tracker.getCustomVariable(2, "visit"), ["1.05", "2.11"], "setCustomVariable() with integer name/value" );
// custom variables with undefined names or values
tracker.setCustomVariable(5);// setting a custom variable with no name and no value should not error
@@ -926,123 +1013,123 @@ if ($sqlite) {
deepEqual( tracker.getCustomVariable(5), ["new name", ""], "getting a custom variable with no value" );
tracker.deleteCustomVariable(5);
- tracker.setDocumentTitle("PiwikTest");
+ tracker.setDocumentTitle("PiwikTest");
- var referrerUrl = "http://referrer.example.com/page/sub?query=test&test2=test3";
- tracker.setReferrerUrl(referrerUrl);
+ var referrerUrl = "http://referrer.example.com/page/sub?query=test&test2=test3";
+ tracker.setReferrerUrl(referrerUrl);
- referrerTimestamp = Math.round(new Date().getTime() / 1000);
- tracker.trackPageView();
+ referrerTimestamp = Math.round(new Date().getTime() / 1000);
+ tracker.trackPageView();
- tracker.trackPageView("CustomTitleTest");
+ tracker.trackPageView("CustomTitleTest");
- var customUrlShouldNotChangeCampaign = "http://localhost.localdomain/?utm_campaign=NONONONONONONO&utm_term=PLEASE NO!";
- tracker.setCustomUrl(customUrl);
+ var customUrlShouldNotChangeCampaign = "http://localhost.localdomain/?utm_campaign=NONONONONONONO&utm_term=PLEASE NO!";
+ tracker.setCustomUrl(customUrl);
- tracker.trackPageView();
+ tracker.trackPageView();
- tracker.trackLink("http://example.ca", "link", { "token" : getToken() });
+ tracker.trackLink("http://example.ca", "link", { "token" : getToken() });
- // async tracker proxy
- _paq.push(["trackLink", "http://example.fr/async.zip", "download", { "token" : getToken() }]);
+ // async tracker proxy
+ _paq.push(["trackLink", "http://example.fr/async.zip", "download", { "token" : getToken() }]);
- // push function
- _paq.push([ function(t) {
- tracker.trackLink("http://example.de", "link", { "token" : t });
- }, getToken() ]);
+ // push function
+ _paq.push([ function(t) {
+ tracker.trackLink("http://example.de", "link", { "token" : t });
+ }, getToken() ]);
- tracker.setRequestMethod("POST");
- tracker.trackGoal(42, 69, { "token" : getToken(), "boy" : "Michael", "girl" : "Mandy"});
+ tracker.setRequestMethod("POST");
+ tracker.trackGoal(42, 69, { "token" : getToken(), "boy" : "Michael", "girl" : "Mandy"});
- piwik_log("CompatibilityLayer", 1, "piwik.php", { "token" : getToken() });
+ piwik_log("CompatibilityLayer", 1, "piwik.php", { "token" : getToken() });
- tracker.hook.test._addEventListener(_e("click8"), "click", stopEvent);
- QUnit.triggerEvent( _e("click8"), "click" );
+ tracker.hook.test._addEventListener(_e("click8"), "click", stopEvent);
+ QUnit.triggerEvent( _e("click8"), "click" );
- tracker.enableLinkTracking();
+ tracker.enableLinkTracking();
- tracker.setRequestMethod("GET");
- var buttons = new Array("click1", "click2", "click3", "click4", "click5", "click6", "click7");
- for (var i=0; i < buttons.length; i++) {
- tracker.hook.test._addEventListener(_e(buttons[i]), "click", stopEvent);
- QUnit.triggerEvent( _e(buttons[i]), "click" );
- }
+ tracker.setRequestMethod("GET");
+ var buttons = new Array("click1", "click2", "click3", "click4", "click5", "click6", "click7");
+ for (var i=0; i < buttons.length; i++) {
+ tracker.hook.test._addEventListener(_e(buttons[i]), "click", stopEvent);
+ QUnit.triggerEvent( _e(buttons[i]), "click" );
+ }
- var xhr = window.XMLHttpRequest ? new window.XMLHttpRequest() :
- window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") :
- null;
+ var xhr = window.XMLHttpRequest ? new window.XMLHttpRequest() :
+ window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") :
+ null;
- var clickDiv = _e("clickDiv"),
- anchor = document.createElement("a");
+ var clickDiv = _e("clickDiv"),
+ anchor = document.createElement("a");
- anchor.id = "click9";
- anchor.href = "http://example.us";
- clickDiv.innerHTML = "";
- clickDiv.appendChild(anchor);
- tracker.addListener(anchor);
- tracker.hook.test._addEventListener(anchor, "click", stopEvent);
- QUnit.triggerEvent( _e("click9"), "click" );
+ anchor.id = "click9";
+ anchor.href = "http://example.us";
+ clickDiv.innerHTML = "";
+ clickDiv.appendChild(anchor);
+ tracker.addListener(anchor);
+ tracker.hook.test._addEventListener(anchor, "click", stopEvent);
+ QUnit.triggerEvent( _e("click9"), "click" );
- var visitorId1, visitorId2;
+ var visitorId1, visitorId2;
- _paq.push([ function() {
- visitorId1 = Piwik.getAsyncTracker().getVisitorId();
- }]);
- visitorId2 = tracker.getVisitorId();
- ok( visitorId1 && visitorId1 != "" && visitorId2 && visitorId2 != "" && (visitorId1 == visitorId2), "getVisitorId()" );
+ _paq.push([ function() {
+ visitorId1 = Piwik.getAsyncTracker().getVisitorId();
+ }]);
+ visitorId2 = tracker.getVisitorId();
+ ok( visitorId1 && visitorId1 != "" && visitorId2 && visitorId2 != "" && (visitorId1 == visitorId2), "getVisitorId()" );
- var visitorInfo1, visitorInfo2;
+ var visitorInfo1, visitorInfo2;
- // Visitor INFO + Attribution INFO tests
- tracker.setReferrerUrl(referrerUrl);
- _paq.push([ function() {
- visitorInfo1 = Piwik.getAsyncTracker().getVisitorInfo();
- attributionInfo1 = Piwik.getAsyncTracker().getAttributionInfo();
- referrer1 = Piwik.getAsyncTracker().getAttributionReferrerUrl();
- }]);
- visitorInfo2 = tracker.getVisitorInfo();
- ok( visitorInfo1 && visitorInfo2 && visitorInfo1.length == visitorInfo2.length, "getVisitorInfo()" );
- for (var i = 0; i < 6; i++) {
- ok( visitorInfo1[i] == visitorInfo2[i], "(loadVisitorId())["+i+"]" );
- }
+ // Visitor INFO + Attribution INFO tests
+ tracker.setReferrerUrl(referrerUrl);
+ _paq.push([ function() {
+ visitorInfo1 = Piwik.getAsyncTracker().getVisitorInfo();
+ attributionInfo1 = Piwik.getAsyncTracker().getAttributionInfo();
+ referrer1 = Piwik.getAsyncTracker().getAttributionReferrerUrl();
+ }]);
+ visitorInfo2 = tracker.getVisitorInfo();
+ ok( visitorInfo1 && visitorInfo2 && visitorInfo1.length == visitorInfo2.length, "getVisitorInfo()" );
+ for (var i = 0; i < 6; i++) {
+ ok( visitorInfo1[i] == visitorInfo2[i], "(loadVisitorId())["+i+"]" );
+ }
- attributionInfo2 = tracker.getAttributionInfo();
- ok( attributionInfo1 && attributionInfo2 && attributionInfo1.length == attributionInfo2.length, "getAttributionInfo()" );
- referrer2 = tracker.getAttributionReferrerUrl();
- ok( referrer2 == referrerUrl, "getAttributionReferrerUrl()" );
- ok( referrer1 == referrerUrl, "async getAttributionReferrerUrl()" );
- referrerTimestamp2 = tracker.getAttributionReferrerTimestamp();
- ok( referrerTimestamp2 == referrerTimestamp, "tracker.getAttributionReferrerTimestamp()" );
- campaignName2 = tracker.getAttributionCampaignName();
- campaignKeyword2 = tracker.getAttributionCampaignKeyword();
- ok( campaignName2 == "YEAH", "getAttributionCampaignName()");
- ok( campaignKeyword2 == "RIGHT!", "getAttributionCampaignKeyword()");
+ attributionInfo2 = tracker.getAttributionInfo();
+ ok( attributionInfo1 && attributionInfo2 && attributionInfo1.length == attributionInfo2.length, "getAttributionInfo()" );
+ referrer2 = tracker.getAttributionReferrerUrl();
+ ok( referrer2 == referrerUrl, "getAttributionReferrerUrl()" );
+ ok( referrer1 == referrerUrl, "async getAttributionReferrerUrl()" );
+ referrerTimestamp2 = tracker.getAttributionReferrerTimestamp();
+ ok( referrerTimestamp2 == referrerTimestamp, "tracker.getAttributionReferrerTimestamp()" );
+ campaignName2 = tracker.getAttributionCampaignName();
+ campaignKeyword2 = tracker.getAttributionCampaignKeyword();
+ ok( campaignName2 == "YEAH", "getAttributionCampaignName()");
+ ok( campaignKeyword2 == "RIGHT!", "getAttributionCampaignKeyword()");
- // Test visitor ID at the start is the same at the end
- var visitorIdEnd = tracker.getVisitorId();
- ok( visitorIdStart == visitorIdEnd, "tracker.getVisitorId() same at the start and end of process");
+ // Test visitor ID at the start is the same at the end
+ var visitorIdEnd = tracker.getVisitorId();
+ ok( visitorIdStart == visitorIdEnd, "tracker.getVisitorId() same at the start and end of process");
- // Custom variables
- tracker.setCookieNamePrefix("PREFIX");
+ // Custom variables
+ tracker.setCookieNamePrefix("PREFIX");
tracker.setCustomVariable(1, "cookiename", "cookievalue");
- deepEqual( tracker.getCustomVariable(1), ["cookiename", "cookievalue"], "setCustomVariable(cvarExists), getCustomVariable()" );
- tracker.setCustomVariable(2, "cookiename2", "cookievalue2", "visit");
- deepEqual( tracker.getCustomVariable(2), ["cookiename2", "cookievalue2"], "setCustomVariable(cvarExists), getCustomVariable()" );
- deepEqual( tracker.getCustomVariable(2, "visit"), ["cookiename2", "cookievalue2"], "setCustomVariable(cvarExists), getCustomVariable()" );
- deepEqual( tracker.getCustomVariable(2, 2), ["cookiename2", "cookievalue2"], "GA compability - setCustomVariable(cvarExists), getCustomVariable()" );
- tracker.setCustomVariable(2, "cookiename2PAGE", "cookievalue2PAGE", "page");
- deepEqual( tracker.getCustomVariable(2, "page"), ["cookiename2PAGE", "cookievalue2PAGE"], "setCustomVariable(cvarExists), getCustomVariable()" );
- deepEqual( tracker.getCustomVariable(2, 3), ["cookiename2PAGE", "cookievalue2PAGE"], "GA compability - setCustomVariable(cvarExists), getCustomVariable()" );
- tracker.setCustomVariable(2, "cookiename2EVENT", "cookievalue2EVENT", "event");
- deepEqual( tracker.getCustomVariable(2, "event"), ["cookiename2EVENT", "cookievalue2EVENT"], "CustomVariable and event scope" );
-
- tracker.trackPageView("SaveCustomVariableCookie");
-
- // test Site Search
- tracker.trackSiteSearch("No result keyword éà", "Search cat", 0);
- tracker.trackSiteSearch("Keyword with 10 results", false, 10);
- tracker.trackSiteSearch("search Keyword");
+ deepEqual( tracker.getCustomVariable(1), ["cookiename", "cookievalue"], "setCustomVariable(cvarExists), getCustomVariable()" );
+ tracker.setCustomVariable(2, "cookiename2", "cookievalue2", "visit");
+ deepEqual( tracker.getCustomVariable(2), ["cookiename2", "cookievalue2"], "setCustomVariable(cvarExists), getCustomVariable()" );
+ deepEqual( tracker.getCustomVariable(2, "visit"), ["cookiename2", "cookievalue2"], "setCustomVariable(cvarExists), getCustomVariable()" );
+ deepEqual( tracker.getCustomVariable(2, 2), ["cookiename2", "cookievalue2"], "GA compability - setCustomVariable(cvarExists), getCustomVariable()" );
+ tracker.setCustomVariable(2, "cookiename2PAGE", "cookievalue2PAGE", "page");
+ deepEqual( tracker.getCustomVariable(2, "page"), ["cookiename2PAGE", "cookievalue2PAGE"], "setCustomVariable(cvarExists), getCustomVariable()" );
+ deepEqual( tracker.getCustomVariable(2, 3), ["cookiename2PAGE", "cookievalue2PAGE"], "GA compability - setCustomVariable(cvarExists), getCustomVariable()" );
+ tracker.setCustomVariable(2, "cookiename2EVENT", "cookievalue2EVENT", "event");
+ deepEqual( tracker.getCustomVariable(2, "event"), ["cookiename2EVENT", "cookievalue2EVENT"], "CustomVariable and event scope" );
+
+ tracker.trackPageView("SaveCustomVariableCookie");
+
+ // test Site Search
+ tracker.trackSiteSearch("No result keyword éà", "Search cat", 0);
+ tracker.trackSiteSearch("Keyword with 10 results", false, 10);
+ tracker.trackSiteSearch("search Keyword");
// Testing Custom events
tracker.setCustomVariable(1, "cvarEventName", "cvarEventValue", "event");
@@ -1050,70 +1137,70 @@ if ($sqlite) {
tracker.trackEvent("Event Category2", "Event Action2", "Event Name2");
tracker.trackEvent("Event Category3", "Event Action3", "Event Name3", 3.333);
- //Ecommerce views
- tracker.setEcommerceView( "", false, ["CATEGORY1","CATEGORY2"] );
- deepEqual( tracker.getCustomVariable(3, "page"), false, "Ecommerce view SKU");
- tracker.setEcommerceView( "SKUMultiple", false, ["CATEGORY1","CATEGORY2"] );
- deepEqual( tracker.getCustomVariable(4, "page"), ["_pkn",""], "Ecommerce view Name");
- deepEqual( tracker.getCustomVariable(5, "page"), ["_pkc","[\"CATEGORY1\",\"CATEGORY2\"]"], "Ecommerce view Category");
- tracker.trackPageView("MultipleCategories");
-
- var tracker2 = Piwik.getTracker();
- tracker2.setTrackerUrl("piwik.php");
- tracker2.setSiteId(1);
- tracker2.setCustomData({ "token" : getToken() });
- tracker2.setCookieNamePrefix("PREFIX");
- deepEqual( tracker2.getCustomVariable(1), ["cookiename", "cookievalue"], "getCustomVariable(cvarExists) from cookie" );
- ok( /PREFIX/.test( document.cookie ), "setCookieNamePrefix()" );
-
- tracker2.deleteCustomVariable(1);
- //console.log(tracker2.getCustomVariable(1));
- ok( tracker2.getCustomVariable(1) === false, "VISIT deleteCustomVariable(), getCustomVariable() === false" );
- tracker2.deleteCustomVariable(2, "page");
- //console.log(tracker2.getCustomVariable(2, "page"));
- ok( tracker2.getCustomVariable(2, "page") === false, "PAGE deleteCustomVariable(), getCustomVariable() === false" );
- tracker2.trackPageView("DeleteCustomVariableCookie");
-
- var tracker3 = Piwik.getTracker();
- tracker3.setTrackerUrl("piwik.php");
- tracker3.setSiteId(1);
- tracker3.setCustomData({ "token" : getToken() });
- tracker3.setCookieNamePrefix("PREFIX");
- ok( tracker3.getCustomVariable(1) === false, "getCustomVariable(cvarDeleted) from cookie === false" );
-
- // Ecommerce Views
- tracker3.setEcommerceView( "SKU", "NAME HERE", "CATEGORY HERE" );
- deepEqual( tracker3.getCustomVariable(3, "page"), ["_pks","SKU"], "Ecommerce view SKU");
- deepEqual( tracker3.getCustomVariable(4, "page"), ["_pkn","NAME HERE"], "Ecommerce view Name");
- deepEqual( tracker3.getCustomVariable(5, "page"), ["_pkc","CATEGORY HERE"], "Ecommerce view Category");
- tracker3.trackPageView("EcommerceView");
-
- //Ecommerce tests
- tracker3.addEcommerceItem("SKU PRODUCT", "PRODUCT NAME", "PRODUCT CATEGORY", 11.1111, 2);
- tracker3.addEcommerceItem("SKU PRODUCT", "random", "random PRODUCT CATEGORY", 11.1111, 2);
- tracker3.addEcommerceItem("SKU ONLY SKU", "", "", "", "");
- tracker3.addEcommerceItem("SKU ONLY NAME", "PRODUCT NAME 2", "", "");
- tracker3.addEcommerceItem("SKU NO PRICE NO QUANTITY", "PRODUCT NAME 3", "CATEGORY", "", "" );
- tracker3.addEcommerceItem("SKU ONLY" );
- tracker3.trackEcommerceCartUpdate( 555.55 );
- tracker3.trackEcommerceOrder( "ORDER ID YES", 666.66, 333, 222, 111, 1 );
-
- // do not track
- tracker3.setDoNotTrack(false);
-
- // Append tracking url parameter
- tracker3.appendToTrackingUrl("appended=1&appended2=value");
+ //Ecommerce views
+ tracker.setEcommerceView( "", false, ["CATEGORY1","CATEGORY2"] );
+ deepEqual( tracker.getCustomVariable(3, "page"), false, "Ecommerce view SKU");
+ tracker.setEcommerceView( "SKUMultiple", false, ["CATEGORY1","CATEGORY2"] );
+ deepEqual( tracker.getCustomVariable(4, "page"), ["_pkn",""], "Ecommerce view Name");
+ deepEqual( tracker.getCustomVariable(5, "page"), ["_pkc","[\"CATEGORY1\",\"CATEGORY2\"]"], "Ecommerce view Category");
+ tracker.trackPageView("MultipleCategories");
+
+ var tracker2 = Piwik.getTracker();
+ tracker2.setTrackerUrl("piwik.php");
+ tracker2.setSiteId(1);
+ tracker2.setCustomData({ "token" : getToken() });
+ tracker2.setCookieNamePrefix("PREFIX");
+ deepEqual( tracker2.getCustomVariable(1), ["cookiename", "cookievalue"], "getCustomVariable(cvarExists) from cookie" );
+ ok( /PREFIX/.test( document.cookie ), "setCookieNamePrefix()" );
+
+ tracker2.deleteCustomVariable(1);
+ //console.log(tracker2.getCustomVariable(1));
+ ok( tracker2.getCustomVariable(1) === false, "VISIT deleteCustomVariable(), getCustomVariable() === false" );
+ tracker2.deleteCustomVariable(2, "page");
+ //console.log(tracker2.getCustomVariable(2, "page"));
+ ok( tracker2.getCustomVariable(2, "page") === false, "PAGE deleteCustomVariable(), getCustomVariable() === false" );
+ tracker2.trackPageView("DeleteCustomVariableCookie");
+
+ var tracker3 = Piwik.getTracker();
+ tracker3.setTrackerUrl("piwik.php");
+ tracker3.setSiteId(1);
+ tracker3.setCustomData({ "token" : getToken() });
+ tracker3.setCookieNamePrefix("PREFIX");
+ ok( tracker3.getCustomVariable(1) === false, "getCustomVariable(cvarDeleted) from cookie === false" );
+
+ // Ecommerce Views
+ tracker3.setEcommerceView( "SKU", "NAME HERE", "CATEGORY HERE" );
+ deepEqual( tracker3.getCustomVariable(3, "page"), ["_pks","SKU"], "Ecommerce view SKU");
+ deepEqual( tracker3.getCustomVariable(4, "page"), ["_pkn","NAME HERE"], "Ecommerce view Name");
+ deepEqual( tracker3.getCustomVariable(5, "page"), ["_pkc","CATEGORY HERE"], "Ecommerce view Category");
+ tracker3.trackPageView("EcommerceView");
+
+ //Ecommerce tests
+ tracker3.addEcommerceItem("SKU PRODUCT", "PRODUCT NAME", "PRODUCT CATEGORY", 11.1111, 2);
+ tracker3.addEcommerceItem("SKU PRODUCT", "random", "random PRODUCT CATEGORY", 11.1111, 2);
+ tracker3.addEcommerceItem("SKU ONLY SKU", "", "", "", "");
+ tracker3.addEcommerceItem("SKU ONLY NAME", "PRODUCT NAME 2", "", "");
+ tracker3.addEcommerceItem("SKU NO PRICE NO QUANTITY", "PRODUCT NAME 3", "CATEGORY", "", "" );
+ tracker3.addEcommerceItem("SKU ONLY" );
+ tracker3.trackEcommerceCartUpdate( 555.55 );
+ tracker3.trackEcommerceOrder( "ORDER ID YES", 666.66, 333, 222, 111, 1 );
+
+ // do not track
+ tracker3.setDoNotTrack(false);
+
+ // Append tracking url parameter
+ tracker3.appendToTrackingUrl("appended=1&appended2=value");
// Track pageview
- tracker3.trackPageView("DoTrack");
+ tracker3.trackPageView("DoTrack");
- // Firefox 9: navigator.doNotTrack is read-only
- navigator.doNotTrack = "yes";
- if (navigator.doNotTrack === "yes")
- {
- tracker3.setDoNotTrack(true);
- tracker3.trackPageView("DoNotTrack");
- }
+ // Firefox 9: navigator.doNotTrack is read-only
+ navigator.doNotTrack = "yes";
+ if (navigator.doNotTrack === "yes")
+ {
+ tracker3.setDoNotTrack(true);
+ tracker3.trackPageView("DoNotTrack");
+ }
// Testing JavaScriptErrorTracking START
var oldOnError = window.onerror;
@@ -1144,138 +1231,138 @@ if ($sqlite) {
// Testing JavaScriptErrorTracking END
- stop();
- setTimeout(function() {
- xhr.open("GET", "piwik.php?requests=" + getToken(), false);
- xhr.send(null);
- results = xhr.responseText;
- equal( (/<span\>([0-9]+)\<\/span\>/.exec(results))[1], "30", "count tracking events" );
-
- // tracking requests
- ok( /PiwikTest/.test( results ), "trackPageView(), setDocumentTitle()" );
- ok( results.indexOf("tests/javascript/piwik.php?action_name=Asynchronous%20Tracker%20ONE&idsite=1&rec=1") >= 0 , "async trackPageView() called before setTrackerUrl() should work" );
- ok( /Asynchronous%20tracking%20TWO/.test( results ), "async trackPageView() called after another trackPageView()" );
- ok( /CustomTitleTest/.test( results ), "trackPageView(customTitle)" );
- ok( ! /click.example.com/.test( results ), "click: ignore href=javascript" );
- ok( /example.ca/.test( results ), "trackLink()" );
- ok( /example.fr/.test( results ), "async trackLink()" );
- ok( /example.de/.test( results ), "push function" );
- ok( /example.us/.test( results ), "addListener()" );
-
- ok( /example.net/.test( results ), "setRequestMethod(GET), click: implicit outlink (by outbound URL)" );
- ok( /example.html/.test( results ), "click: explicit outlink" );
- ok( /example.pdf/.test( results ), "click: implicit download (by file extension)" );
- ok( /example.word/.test( results ), "click: explicit download" );
-
- ok( ! /example.exe/.test( results ), "enableLinkTracking()" );
- ok( ! /example.php/.test( results ), "click: ignored example.php" );
- ok( ! /example.org/.test( results ), "click: ignored example.org" );
- ok( /idgoal=42.*?revenue=69.*?Michael.*?Mandy/.test( results ), "setRequestMethod(POST), trackGoal()" );
- ok( /CompatibilityLayer/.test( results ), "piwik_log(): compatibility layer" );
- ok( /localhost.localdomain/.test( results ), "setCustomUrl()" );
- ok( /referrer.example.com/.test( results ), "setReferrerUrl()" );
- ok( /cookiename/.test( results ) && /cookievalue/.test( results ), "tracking request contains custom variable" );
- ok( /DeleteCustomVariableCookie/.test( results ), "tracking request deleting custom variable" );
- ok( /DoTrack/.test( results ), "setDoNotTrack(false)" );
- ok( ! /DoNotTrack/.test( results ), "setDoNotTrack(true)" );
-
- // Test Custom variables
- ok( /SaveCustomVariableCookie.*&cvar=%7B%222%22%3A%5B%22cookiename2PAGE%22%2C%22cookievalue2PAGE%22%5D%7D.*&_cvar=%7B%221%22%3A%5B%22cookiename%22%2C%22cookievalue%22%5D%2C%222%22%3A%5B%22cookiename2%22%2C%22cookievalue2%22%5D%7D/.test(results), "test custom vars are set");
-
- // Test campaign parameters set
- ok( /&_rcn=YEAH&_rck=RIGHT!/.test( results), "Test campaign parameters found");
- ok( /&_ref=http%3A%2F%2Freferrer.example.com%2Fpage%2Fsub%3Fquery%3Dtest%26test2%3Dtest3/.test( results), "Test cookie Ref URL found ");
-
- // Test site search
- ok( /search=No%20result%20keyword%20%C3%A9%C3%A0&search_cat=Search%20cat&search_count=0&idsite=1/.test(results), "site search, cat, 0 result ");
- ok( /search=Keyword%20with%2010%20results&search_count=10&idsite=1/.test(results), "site search, no cat, 10 results ");
- ok( /search=search%20Keyword&idsite=1/.test(results), "site search, no cat, no results count ");
-
- // Test events
- ok( /(e_c=Event%20Category&e_a=Event%20Action&idsite=1).*(&e_cvar=%7B%221%22%3A%5B%22cvarEventName%22%2C%22cvarEventValue%22%5D%2C%222%22%3A%5B%22cookiename2EVENT%22%2C%22cookievalue2EVENT%22%5D%7D)/.test(results), "event Category + Action + Custom Variable");
- ok( /e_c=Event%20Category2&e_a=Event%20Action2&e_n=Event%20Name2&idsite=1/.test(results), "event Category + Action + Name");
- ok( /e_c=Event%20Category3&e_a=Event%20Action3&e_n=Event%20Name3&e_v=3.333&idsite=1/.test(results), "event Category + Action + Name + Value");
-
- // ecommerce view
- ok( /(EcommerceView).*(&cvar=%7B%225%22%3A%5B%22_pkc%22%2C%22CATEGORY%20HERE%22%5D%2C%223%22%3A%5B%22_pks%22%2C%22SKU%22%5D%2C%224%22%3A%5B%22_pkn%22%2C%22NAME%20HERE%22%5D%7D)/.test(results)
- || /(EcommerceView).*(&cvar=%7B%223%22%3A%5B%22_pks%22%2C%22SKU%22%5D%2C%224%22%3A%5B%22_pkn%22%2C%22NAME%20HERE%22%5D%2C%225%22%3A%5B%22_pkc%22%2C%22CATEGORY%20HERE%22%5D%7D)/.test(results), "ecommerce view");
-
- // ecommerce view multiple categories
- ok( /(MultipleCategories).*(&cvar=%7B%222%22%3A%5B%22cookiename2PAGE%22%2C%22cookievalue2PAGE%22%5D%2C%225%22%3A%5B%22_pkc%22%2C%22%5B%5C%22CATEGORY1%5C%22%2C%5C%22CATEGORY2%5C%22%5D%22%5D%2C%223%22%3A%5B%22_pks%22%2C%22SKUMultiple%22%5D%2C%224%22%3A%5B%22_pkn%22%2C%22%22%5D%7D)/.test(results)
- || /(MultipleCategories).*(&cvar=%7B%222%22%3A%5B%22cookiename2PAGE%22%2C%22cookievalue2PAGE%22%5D%2C%223%22%3A%5B%22_pks%22%2C%22SKUMultiple%22%5D%2C%224%22%3A%5B%22_pkn%22%2C%22%22%5D%2C%225%22%3A%5B%22_pkc%22%2C%22%5B%5C%22CATEGORY1%5C%22%2C%5C%22CATEGORY2%5C%22%5D%22%5D%7D)/.test(results), "ecommerce view multiple categories");
-
- // Ecommerce order
- ok( /idgoal=0&ec_id=ORDER%20ID%20YES&revenue=666.66&ec_st=333&ec_tx=222&ec_sh=111&ec_dt=1&ec_items=%5B%5B%22SKU%20PRODUCT%22%2C%22random%22%2C%22random%20PRODUCT%20CATEGORY%22%2C11.1111%2C2%5D%2C%5B%22SKU%20ONLY%20SKU%22%2C%22%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%20NAME%22%2C%22PRODUCT%20NAME%202%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20NO%20PRICE%20NO%20QUANTITY%22%2C%22PRODUCT%20NAME%203%22%2C%22CATEGORY%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%22%2C%22%22%2C%22%22%2C0%2C1%5D%5D/.test( results ), "logEcommerceOrder() with items" );
-
- // Not set for the first ecommerce order
- ok( ! /idgoal=0&ec_id=ORDER%20ID.*_ects=1/.test(results), "Ecommerce last timestamp set");
-
- // Ecommerce last timestamp set properly for subsequent page view
- ok( /DoTrack.*_ects=1/.test(results), "Ecommerce last timestamp set");
-
- // Cart update
- ok( /idgoal=0&revenue=555.55&ec_items=%5B%5B%22SKU%20PRODUCT%22%2C%22random%22%2C%22random%20PRODUCT%20CATEGORY%22%2C11.1111%2C2%5D%2C%5B%22SKU%20ONLY%20SKU%22%2C%22%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%20NAME%22%2C%22PRODUCT%20NAME%202%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20NO%20PRICE%20NO%20QUANTITY%22%2C%22PRODUCT%20NAME%203%22%2C%22CATEGORY%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%22%2C%22%22%2C%22%22%2C0%2C1%5D%5D/.test( results ), "logEcommerceCartUpdate() with items" );
-
- // parameters inserted by plugin hooks
- ok( /testlog/.test( results ), "plugin hook log" );
- ok( /testlink/.test( results ), "plugin hook link" );
- ok( /testgoal/.test( results ), "plugin hook goal" );
-
- // Testing the Tracking URL append
- ok( /&appended=1&appended2=value/.test( results ), "appendToTrackingUrl(query) function");
+ stop();
+ setTimeout(function() {
+ xhr.open("GET", "piwik.php?requests=" + getToken(), false);
+ xhr.send(null);
+ results = xhr.responseText;
+ equal( (/<span\>([0-9]+)\<\/span\>/.exec(results))[1], "30", "count tracking events" );
+
+ // tracking requests
+ ok( /PiwikTest/.test( results ), "trackPageView(), setDocumentTitle()" );
+ ok( results.indexOf("tests/javascript/piwik.php?action_name=Asynchronous%20Tracker%20ONE&idsite=1&rec=1") >= 0 , "async trackPageView() called before setTrackerUrl() should work" );
+ ok( /Asynchronous%20tracking%20TWO/.test( results ), "async trackPageView() called after another trackPageView()" );
+ ok( /CustomTitleTest/.test( results ), "trackPageView(customTitle)" );
+ ok( ! /click.example.com/.test( results ), "click: ignore href=javascript" );
+ ok( /example.ca/.test( results ), "trackLink()" );
+ ok( /example.fr/.test( results ), "async trackLink()" );
+ ok( /example.de/.test( results ), "push function" );
+ ok( /example.us/.test( results ), "addListener()" );
+
+ ok( /example.net/.test( results ), "setRequestMethod(GET), click: implicit outlink (by outbound URL)" );
+ ok( /example.html/.test( results ), "click: explicit outlink" );
+ ok( /example.pdf/.test( results ), "click: implicit download (by file extension)" );
+ ok( /example.word/.test( results ), "click: explicit download" );
+
+ ok( ! /example.exe/.test( results ), "enableLinkTracking()" );
+ ok( ! /example.php/.test( results ), "click: ignored example.php" );
+ ok( ! /example.org/.test( results ), "click: ignored example.org" );
+ ok( /idgoal=42.*?revenue=69.*?Michael.*?Mandy/.test( results ), "setRequestMethod(POST), trackGoal()" );
+ ok( /CompatibilityLayer/.test( results ), "piwik_log(): compatibility layer" );
+ ok( /localhost.localdomain/.test( results ), "setCustomUrl()" );
+ ok( /referrer.example.com/.test( results ), "setReferrerUrl()" );
+ ok( /cookiename/.test( results ) && /cookievalue/.test( results ), "tracking request contains custom variable" );
+ ok( /DeleteCustomVariableCookie/.test( results ), "tracking request deleting custom variable" );
+ ok( /DoTrack/.test( results ), "setDoNotTrack(false)" );
+ ok( ! /DoNotTrack/.test( results ), "setDoNotTrack(true)" );
+
+ // Test Custom variables
+ ok( /SaveCustomVariableCookie.*&cvar=%7B%222%22%3A%5B%22cookiename2PAGE%22%2C%22cookievalue2PAGE%22%5D%7D.*&_cvar=%7B%221%22%3A%5B%22cookiename%22%2C%22cookievalue%22%5D%2C%222%22%3A%5B%22cookiename2%22%2C%22cookievalue2%22%5D%7D/.test(results), "test custom vars are set");
+
+ // Test campaign parameters set
+ ok( /&_rcn=YEAH&_rck=RIGHT!/.test( results), "Test campaign parameters found");
+ ok( /&_ref=http%3A%2F%2Freferrer.example.com%2Fpage%2Fsub%3Fquery%3Dtest%26test2%3Dtest3/.test( results), "Test cookie Ref URL found ");
+
+ // Test site search
+ ok( /search=No%20result%20keyword%20%C3%A9%C3%A0&search_cat=Search%20cat&search_count=0&idsite=1/.test(results), "site search, cat, 0 result ");
+ ok( /search=Keyword%20with%2010%20results&search_count=10&idsite=1/.test(results), "site search, no cat, 10 results ");
+ ok( /search=search%20Keyword&idsite=1/.test(results), "site search, no cat, no results count ");
+
+ // Test events
+ ok( /(e_c=Event%20Category&e_a=Event%20Action&idsite=1).*(&e_cvar=%7B%221%22%3A%5B%22cvarEventName%22%2C%22cvarEventValue%22%5D%2C%222%22%3A%5B%22cookiename2EVENT%22%2C%22cookievalue2EVENT%22%5D%7D)/.test(results), "event Category + Action + Custom Variable");
+ ok( /e_c=Event%20Category2&e_a=Event%20Action2&e_n=Event%20Name2&idsite=1/.test(results), "event Category + Action + Name");
+ ok( /e_c=Event%20Category3&e_a=Event%20Action3&e_n=Event%20Name3&e_v=3.333&idsite=1/.test(results), "event Category + Action + Name + Value");
+
+ // ecommerce view
+ ok( /(EcommerceView).*(&cvar=%7B%225%22%3A%5B%22_pkc%22%2C%22CATEGORY%20HERE%22%5D%2C%223%22%3A%5B%22_pks%22%2C%22SKU%22%5D%2C%224%22%3A%5B%22_pkn%22%2C%22NAME%20HERE%22%5D%7D)/.test(results)
+ || /(EcommerceView).*(&cvar=%7B%223%22%3A%5B%22_pks%22%2C%22SKU%22%5D%2C%224%22%3A%5B%22_pkn%22%2C%22NAME%20HERE%22%5D%2C%225%22%3A%5B%22_pkc%22%2C%22CATEGORY%20HERE%22%5D%7D)/.test(results), "ecommerce view");
+
+ // ecommerce view multiple categories
+ ok( /(MultipleCategories).*(&cvar=%7B%222%22%3A%5B%22cookiename2PAGE%22%2C%22cookievalue2PAGE%22%5D%2C%225%22%3A%5B%22_pkc%22%2C%22%5B%5C%22CATEGORY1%5C%22%2C%5C%22CATEGORY2%5C%22%5D%22%5D%2C%223%22%3A%5B%22_pks%22%2C%22SKUMultiple%22%5D%2C%224%22%3A%5B%22_pkn%22%2C%22%22%5D%7D)/.test(results)
+ || /(MultipleCategories).*(&cvar=%7B%222%22%3A%5B%22cookiename2PAGE%22%2C%22cookievalue2PAGE%22%5D%2C%223%22%3A%5B%22_pks%22%2C%22SKUMultiple%22%5D%2C%224%22%3A%5B%22_pkn%22%2C%22%22%5D%2C%225%22%3A%5B%22_pkc%22%2C%22%5B%5C%22CATEGORY1%5C%22%2C%5C%22CATEGORY2%5C%22%5D%22%5D%7D)/.test(results), "ecommerce view multiple categories");
+
+ // Ecommerce order
+ ok( /idgoal=0&ec_id=ORDER%20ID%20YES&revenue=666.66&ec_st=333&ec_tx=222&ec_sh=111&ec_dt=1&ec_items=%5B%5B%22SKU%20PRODUCT%22%2C%22random%22%2C%22random%20PRODUCT%20CATEGORY%22%2C11.1111%2C2%5D%2C%5B%22SKU%20ONLY%20SKU%22%2C%22%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%20NAME%22%2C%22PRODUCT%20NAME%202%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20NO%20PRICE%20NO%20QUANTITY%22%2C%22PRODUCT%20NAME%203%22%2C%22CATEGORY%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%22%2C%22%22%2C%22%22%2C0%2C1%5D%5D/.test( results ), "logEcommerceOrder() with items" );
+
+ // Not set for the first ecommerce order
+ ok( ! /idgoal=0&ec_id=ORDER%20ID.*_ects=1/.test(results), "Ecommerce last timestamp set");
+
+ // Ecommerce last timestamp set properly for subsequent page view
+ ok( /DoTrack.*_ects=1/.test(results), "Ecommerce last timestamp set");
+
+ // Cart update
+ ok( /idgoal=0&revenue=555.55&ec_items=%5B%5B%22SKU%20PRODUCT%22%2C%22random%22%2C%22random%20PRODUCT%20CATEGORY%22%2C11.1111%2C2%5D%2C%5B%22SKU%20ONLY%20SKU%22%2C%22%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%20NAME%22%2C%22PRODUCT%20NAME%202%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20NO%20PRICE%20NO%20QUANTITY%22%2C%22PRODUCT%20NAME%203%22%2C%22CATEGORY%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%22%2C%22%22%2C%22%22%2C0%2C1%5D%5D/.test( results ), "logEcommerceCartUpdate() with items" );
+
+ // parameters inserted by plugin hooks
+ ok( /testlog/.test( results ), "plugin hook log" );
+ ok( /testlink/.test( results ), "plugin hook link" );
+ ok( /testgoal/.test( results ), "plugin hook goal" );
+
+ // Testing the Tracking URL append
+ ok( /&appended=1&appended2=value/.test( results ), "appendToTrackingUrl(query) function");
// Testing the JavaScript Error Tracking
- ok( /e_c=JavaScript%20Errors&e_a=http%3A%2F%2Fpiwik.org%2Fpath%2Fto%2Ffile.js%3Fcb%3D34343%3A44%3A12&e_n=Uncaught%20Error%3A%20The%20message&idsite=1/.test( results ), "enableJSErrorTracking() function with predefined onerror event");
- ok( /e_c=JavaScript%20Errors&e_a=http%3A%2F%2Fpiwik.org%2Fpath%2Fto%2Ffile.js%3Fcb%3D3kfkf%3A45&e_n=Second%20Error%3A%20With%20less%20data&idsite=1/.test( results ), "enableJSErrorTracking() function without predefined onerror event and less parameters");
+ ok( /e_c=JavaScript%20Errors&e_a=http%3A%2F%2Fpiwik.org%2Fpath%2Fto%2Ffile.js%3Fcb%3D34343%3A44%3A12&e_n=Uncaught%20Error%3A%20The%20message&idsite=1/.test( results ), "enableJSErrorTracking() function with predefined onerror event");
+ ok( /e_c=JavaScript%20Errors&e_a=http%3A%2F%2Fpiwik.org%2Fpath%2Fto%2Ffile.js%3Fcb%3D3kfkf%3A45&e_n=Second%20Error%3A%20With%20less%20data&idsite=1/.test( results ), "enableJSErrorTracking() function without predefined onerror event and less parameters");
- start();
- }, 5000);
- });
- <?php
+ start();
+ }, 5000);
+ });
+ <?php
}
?>
}
function addEventListener(element, eventType, eventHandler, useCapture) {
- if (element.addEventListener) {
- element.addEventListener(eventType, eventHandler, useCapture);
- return true;
- }
- if (element.attachEvent) {
- return element.attachEvent('on' + eventType, eventHandler);
- }
- element['on' + eventType] = eventHandler;
+ if (element.addEventListener) {
+ element.addEventListener(eventType, eventHandler, useCapture);
+ return true;
+ }
+ if (element.attachEvent) {
+ return element.attachEvent('on' + eventType, eventHandler);
+ }
+ element['on' + eventType] = eventHandler;
}
(function (f) {
- if (document.addEventListener) {
- addEventListener(document, 'DOMContentLoaded', function ready() {
- document.removeEventListener('DOMContentLoaded', ready, false);
- f();
- });
- } else if (document.attachEvent) {
- document.attachEvent('onreadystatechange', function ready() {
- if (document.readyState === 'complete') {
- document.detachEvent('onreadystatechange', ready);
- f();
- }
- });
-
- if (document.documentElement.doScroll && window === top) {
- (function ready() {
- if (!hasLoaded) {
- try {
- document.documentElement.doScroll('left');
- } catch (error) {
- setTimeout(ready, 0);
- return;
- }
- f();
- }
- }());
- }
- }
- addEventListener(window, 'load', f, false);
+ if (document.addEventListener) {
+ addEventListener(document, 'DOMContentLoaded', function ready() {
+ document.removeEventListener('DOMContentLoaded', ready, false);
+ f();
+ });
+ } else if (document.attachEvent) {
+ document.attachEvent('onreadystatechange', function ready() {
+ if (document.readyState === 'complete') {
+ document.detachEvent('onreadystatechange', ready);
+ f();
+ }
+ });
+
+ if (document.documentElement.doScroll && window === top) {
+ (function ready() {
+ if (!hasLoaded) {
+ try {
+ document.documentElement.doScroll('left');
+ } catch (error) {
+ setTimeout(ready, 0);
+ return;
+ }
+ f();
+ }
+ }());
+ }
+ }
+ addEventListener(window, 'load', f, false);
})(PiwikTest);
</script>
diff --git a/tests/lib/screenshot-testing/support/diff-viewer.js b/tests/lib/screenshot-testing/support/diff-viewer.js
index b78ad64b17..f68eddf8d1 100644
--- a/tests/lib/screenshot-testing/support/diff-viewer.js
+++ b/tests/lib/screenshot-testing/support/diff-viewer.js
@@ -66,7 +66,7 @@ DiffViewerGenerator.prototype.generate = function (callback) {
var expectedHtml = '';
if (!options['assume-artifacts']) {
- expectedUrl = '../expected-ui-screenshots/' + filename;
+ expectedUrl = this.getUrlForPath(entry.expected);
}
expectedHtml += '<a href="' + expectedUrl + '">Expected</a>&nbsp;';
diff --git a/tests/lib/screenshot-testing/support/page-renderer.js b/tests/lib/screenshot-testing/support/page-renderer.js
index 1dc4d06633..960879b655 100644
--- a/tests/lib/screenshot-testing/support/page-renderer.js
+++ b/tests/lib/screenshot-testing/support/page-renderer.js
@@ -229,11 +229,21 @@ PageRenderer.prototype.capture = function (outputPath, callback, selector) {
function setClipRect (page, selector) {
if (!selector) {
-
return;
}
var result = page.evaluate(function(selector) {
+ function isInvalidBoundingRect (rect) {
+ var docWidth = $(document).width(),
+ docHeight = $(document).height();
+
+ return !rect.width || !rect.height
+ || rect.left < 0 || rect.left > docWidth
+ || rect.top < 0 || rect.top > docHeight
+ || rect.right < 0 || rect.right > docWidth
+ || rect.bottom < 0 || rect.bottom > docHeight;
+ }
+
var element = window.jQuery(selector);
if (element && element.length) {
@@ -242,7 +252,7 @@ PageRenderer.prototype.capture = function (outputPath, callback, selector) {
element.each(function (index, node) {
var rect = node.getBoundingClientRect();
- if (!rect.width || !rect.height) {
+ if (isInvalidBoundingRect(rect)) {
// element is not visible
return;
}
diff --git a/tests/lib/screenshot-testing/support/test-environment.js b/tests/lib/screenshot-testing/support/test-environment.js
index 4527b868d4..36807dac89 100644
--- a/tests/lib/screenshot-testing/support/test-environment.js
+++ b/tests/lib/screenshot-testing/support/test-environment.js
@@ -144,6 +144,10 @@ TestingEnvironment.prototype.setupFixture = function (fixtureClass, done) {
droppedOnce = true;
}
+ if (options['plugin']) {
+ args.push('--plugins=' + options['plugin']);
+ }
+
var self = this;
this.executeConsoleCommand('tests:setup-fixture', args, function (code) {
self.reload();
diff --git a/tests/resources/piwik-1.13-dump.sql b/tests/resources/piwik-1.13-dump.sql
index fe38f2ae81..a79143de7a 100644
--- a/tests/resources/piwik-1.13-dump.sql
+++ b/tests/resources/piwik-1.13-dump.sql
@@ -20,13 +20,13 @@
--
--
--- Table structure for table `piwiktests_access`
+-- Table structure for table `access`
--
-DROP TABLE IF EXISTS `piwiktests_access`;
+DROP TABLE IF EXISTS `access`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_access` (
+CREATE TABLE `access` (
`login` varchar(100) NOT NULL,
`idsite` int(10) unsigned NOT NULL,
`access` varchar(10) DEFAULT NULL,
@@ -35,22 +35,22 @@ CREATE TABLE `piwiktests_access` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_access`
+-- Dumping data for table `access`
--
-LOCK TABLES `piwiktests_access` WRITE;
-/*!40000 ALTER TABLE `piwiktests_access` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_access` ENABLE KEYS */;
+LOCK TABLES `access` WRITE;
+/*!40000 ALTER TABLE `access` DISABLE KEYS */;
+/*!40000 ALTER TABLE `access` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_archive_blob_2012_03`
+-- Table structure for table `archive_blob_2012_03`
--
-DROP TABLE IF EXISTS `piwiktests_archive_blob_2012_03`;
+DROP TABLE IF EXISTS `archive_blob_2012_03`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_archive_blob_2012_03` (
+CREATE TABLE `archive_blob_2012_03` (
`idarchive` int(10) unsigned NOT NULL,
`name` varchar(255) NOT NULL,
`idsite` int(10) unsigned DEFAULT NULL,
@@ -65,23 +65,23 @@ CREATE TABLE `piwiktests_archive_blob_2012_03` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_archive_blob_2012_03`
+-- Dumping data for table `archive_blob_2012_03`
--
-LOCK TABLES `piwiktests_archive_blob_2012_03` WRITE;
-/*!40000 ALTER TABLE `piwiktests_archive_blob_2012_03` DISABLE KEYS */;
-INSERT INTO `piwiktests_archive_blob_2012_03` VALUES (1,'Actions_actions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­’ËnÂ0EÅõª]yì„ÇxÙ.Q[A»F&±‚EH*Š*Ä¿×NÌËB°!’­™;wìøh&¸3ÈäŠ>ÒO³5ËÙ›jÔ—šz6©¶§lºY­Ôú\"ஶM©T(º~… œœ -Ô\\TÖ8DúºÐé²Ú4T\Zäv[Ç@H×jP0™!‹@ÄìüsÞ,¸lOomî8!FÞÊÙ!\0?^™´ÁÞm\nîläþ‚÷å¾À!9€AL™®ufl?iLSè§ $WÑÀÐÃñïäþá Ûk^`á!/ÀàÌnκd@;V5ƶÒç]‘wEFCZï-*þT¢ÖCÆUµ4eNTCÕJÿ¨\\“g•+S¾DQtŸÛ%5ÆÅ\rj‡ªˆÏ©%Çä* ñ\0£E<°(¦:­ÊŒ´~Þ’©Õ¦ÈÈ\\“µÎMÝh;VDÕä{2¾fÄ‚‘â7GŠ‡#å„«zà‚Äm5;'),(1,'Actions_actions_26',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ]ŽA‚0 …ÿŠÙÝeÝ\0c{õ¬D½“Bˆ.‚& !†ðßݦÁÅC·~o}¯cÔ8YTt@“¡ÈíhoÅŽŸ|沩‹ãcüÑih[î^§Þ¢Äh>~Fȼœ¢h¸¬An$A±Ê‡®ºroï)¥ ‹Úĵ†|’E£() &ñB\0ýÿjþØDã°@«¾©*€Ž=I é³ÿ(£ÂÉu†ö4»{\r¾y@X¢'),(1,'Actions_actions_url',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­’ÝKÃ0ÀÿÉ»m.×nî‚øⳊó}d6¸bkKÛ±±ÿÝ4ÙGf] !÷™»_NQJÛœ¸|&{ÉWùçìQuêMÍ ={­V\'iº,KÕlm[s°w&¡‹W4éµ)±BÍuÁdK&_œezÍdNÂlð÷QýqÇ͉\\Ú <\"郤}¬ B+ž)v}>åŠCbËÆb‹®«)ŽõZ•u¡£ªùˆ­;Ê\'¹³aÿï lø¡ÿhÑ•¿38\'À8X1P@â¹Cz.³wÙx5{Ä5 %!$L}HµjT©;ÝÜOÕ²Èn²¼­ µùÃáàa8ANcŸßÄwÂØ\n}ÖÄXFÂ…3òŸH§8Lz qï ð\Z_€á˜{ÛU>c|i23â`ÂýŽ±s>ñ…ï^a:WÁØ? ŽO¦ö²Éik;·ôn¡§ñ\rêXZ'),(1,'Actions_actions_url_30',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ]OOÃ0 Å¿‹ï´q¼?¾rÜ\'oŠhD«Viª¦}w’ ¨\'ù9~/yÊ–/ž¼0í^ýÙž4ê‡{wxÏÿô¾ ƒ†`äËœ8(ÓM¯Œ»ÜÞ2ôzt=H\Z!†vZ©ÓÙ5]@<ÛTX×½A’<“‘âc\Z¤M–Jy Øõ-­\Z¸¯Æñ±kjøs5l­ÙÔ°½Ã5ToñS´%””´gèbœ¸mÝ·Sïš1|¶sƒ[¥O$ÏrMûæÃ/ƒ‰k¸'),(1,'Actions_downloads',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœEŒÍ\nÂ0„ßeïJ“ø;{õ¬¢ÞËVŠS*­R$äÝÝEÐÃ ß Ì<rDÅ„è§x¯wò”‹4©­OýôOçW×Éð&8äQ®Ä‚ðÝ Ö.AIš6Ø‚ö7ï‡q„W9Ó‚ÚÚs±(¨•¬ó.Š3Ç{.Â2%'),(1,'Actions_downloads_28',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœuNA‚0üËÞµÒ5Ó«g5ê,†@c‘Jˆþn+‰zñ0³;“ìÌ2$Fƒ•>@­AG3˜[¶cÏÎm‘šá«Î}]sû $»@t%ÍPó=#n\n²œ–t)A±¯—lî²/:¿|\ZGÚ@$¿ø*ÐFê)JžË¨oß¡j ª¼wÂÅg—M[þ+ Jïõæ\"‰Ë #¥KV'),(1,'Actions_outlink',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœµŽ9 Â@…ÿËô†=™ÖZEíÃDY²q%‡ABþ»»`“ÖbóÞ|Œ\Z‹‚Ž¨×\'ÛÛ2ßsËW.œÉϾÿ¹KWU\\\0%M¸ñ|ϘÆ4Cp\\64Âݼ“W|šøúdQ…’±Ôlt,4Æ£À!t1T\Z§ðl\nÁw­³Ï²YD“3šÛ´Ý„¶’t ñ võcÿ'),(1,'Actions_outlink_27',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœMŽ¹Â0Dÿe{rØ ÅlK\rè£\rD`‘Kq¡(ÿŽM„ ˜=f5O+P˜\r\">@oAG3™g¶“^.’—Evj¦ßvªJº!Æl]¡+±@¯yAêÝTJ^”Ä (´cMl œâ©¯©]I“ˆ­AC÷A(Çxô}‹0¼cÐú÷‚¦»¯\\—ѼçÅõMì‡7ε?;'),(1,'Actions_outlink_29',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ]MA‚0üËÞµ@ŘéÕ³\ZõNC¤¡XSJˆ!üÝVŒ\Z;;3Ùad5µ‡\\ƒzÐM±eÏg.MUíðU§¾mÙ=)Æ.\0]H1äüÏÈ£›ƒ —•!.V a}]¹ÂöÞè[CJ# “þÎÇ’š¢æ¹E‚z÷J“ÖÞß!Ä;­[Zwý/ÏRíÔö\"ä «›G³'),(1,'Actions_sitesearch',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(1,'CustomVariables_valueByName',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(1,'DevicesDetection_brands',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-Œ»Â0 EÿÅ;R“¾¯×΀{åÒ‘Z©C”dž ÇÏc <R@Å7¸tgxÏ“ò”%nóãsÒ®^Ä‚ú¯ ›¶ (ˉwT â\0Wð…Z”†Wôš[ÛwÞ”®¨ýOÍÖˆ¾IÙ®®œ5_œ_ÌÐ/«'),(1,'DevicesDetection_browsers',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-Œ»Â0 EÿÅ;R“Ò×+ê¨b¯\\艡•:DùwlšáøylG\n¨øw=Â>ÓU6yÊ—iüj ± >tAoÓe^\"ñªhˆ\\Áj¥WÎüF§¹±}ëMi‹ÚýÕl BÊvuã¬ùä¬ø-U09'),(1,'DevicesDetection_browserVersions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;¨IhZ®WÔPÅ^¹Ð!\"C‘:Dùwbšáøúq,°H\rß`Π{ØÂ{ºÈW2Çe\Z?Á ­¥Ð“Xàv]Ðë¶E™—H¼Âƒ†ÝјŠ­¸B_8ñ ]ÉVïÞªâ«ÚýÕ¬ƒ AÊúuå\\ò`´ùØì1'),(1,'DevicesDetection_models',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-Œ»Â0 EÿÅ;R“¾¯×΀{åÒ‘Z©C”dž ÇÏc <R@Å7¸tgxÏ“ò”%nóãsÒ®^Ä‚ú¯ ›¶ (ˉwT â\0Wð…Z”†Wôš[ÛwÞ”®¨ýOÍÖˆ¾IÙ®®œ5_œ_ÌÐ/«'),(1,'DevicesDetection_os',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;R“Ò×+3­l• \"\"1´R‡(ÿŽ\rŽ¯ÇPñ\0waïé,›ÜdŽËtý쇴j¡\'± þë‚Þ¶\r(ʼDâU/tŒÄ®à µÒ+G~¡ÓlìÞzSÚ¢v?5Û ¨²}]8kœ5_mÕ0­'),(1,'DevicesDetection_osVersions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;R“Ò´\\¯Ì!$ºU.tˆˆÔ¡H¢ü;1d8¾~ ,R@ÃW˜ȇ=¼§³|ä.s\\¦Ûº ÒV\n=‰í_ ºí@Qæ%op ÇèyôĦb+ma(ù…¾d§wgUqUíjÖAÐ eýºp.y0Ú|õ1“'),(1,'DevicesDetection_types',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»ƒ0 EÿÅ; åÑëµs©;2-CÔHZ‰!Ê¿c— ÇëcG\n¨y„»‚aïå&?™eÛ2}v‚Cúj¡\'± 9uÁ`i Š²n‘ØÂ\0Wð…F” ¿ÐkoíÞySº¢ö5Û\"¨‘²}Ý9k¯œ\rXK/#'),(1,'Goal_1_days_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(1,'Goal_1_visits_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊKx–ô­L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßñÊþs›¦zºLPîò„¥q_–yɯÆ$³ŽgI¡lËk¹1Á<úÌýÁ¼\r0(°`ƒEŒ\n,Ú` “K6XƬÀ²\rÖa§À:¬Ç^õXd42h’)¡×ìY´ˆdŸ19gQ$Y~€Ô–Se\" 9ZùµDú„7Žð¤R'),(1,'Goal_2_days_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(1,'Goal_2_visits_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊK\Zx(¤©L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßöÊþSM S=]&(w¹B‚Ò¸/K¿ƒòjLÒëx–ʶ¼–Š æÑÿ`ôó6XÀ xY°Á\"Fm°„I%,cV`Ùë°S`\rÖc¯Àz,2 Hš  4É”Ðkf„,¶ˆdŸ19g±H²ü\0Y[NZ,ÉÑʯ Ò\'¼Žƒ¤R'),(1,'Goal_days_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô= 1 àÿp 4͵w¦›8«ˆ»Tq(8œàpøߊ›%CKH ýà­BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“Np†R…¿Û«Äw7 Œõt¡Lº”&ƒŽXžMH÷™µâ²)ÏOÇ\"¤þCÑŠ\rˆ} F6 Îê°3 ä%L”} ŒÙ€z¨ÇÞ€¨¬GZ:HZSBEé 5fÓòˆ¬B\"š˜GHôz‰‘³õbä‘z4ÎiW†ô.^.ºù'),(1,'Goal_visits_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô= Â@ àÿp \\î«mngq/Wq(*8ÿ»©â&dÉpÇKîàYÂ[™\"/#»r`êŽãs¼õ»ú¨ç:L×þt/³\\pR9|¿Wöë41Lu¸NPfyB‚2r+‡Êk½*;^$…²/¯ÏÄòèÈÛ@Ãrÿ¡`EŒ\nm „I’\r”1+P¶\Zl¨±Zl¨5€\"C‡¤mCg I¦„^Û²hÉ>cršeQY¶\\ªÈ©˜EIFŽ6~«`Hkx¥‘šî'),(1,'Provider_hostnameExt',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-Œ»Â0 EÿÅ;R“¾¯×΀{åÒ‘Z©C”dž ÇÏc <R@Å7¸tgxÏ“ò”%nóãsÒ®^Ä‚ú¯ ›¶ (ˉwT â\0Wð…Z”†Wôš[ÛwÞ”®¨ýOÍÖˆ¾IÙ®®œ5_œ_ÌÐ/«'),(1,'Referers_keywordByCampaign',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(1,'Referers_keywordBySearchEngine',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ]Ž? Â@ Å?‹Ù…æÎû²:«ˆ‹SIµàaá†\nÊ}w{º8$<~y‰Â`q¨änAW7»OwÒ¯Þµ‡îægc™ÖFO…͸‚«h× Qûa$™Ð€úö~GâÀ¥LQ[ô ¯¤µÄ‡fcSf 7Ûþ[5i5‡cqÚìÄA±þ2lm¢ö,g ?@Ô'),(1,'Referers_keywordBySearchEngine_33',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-ŒË\nÂ@ Eÿ%{¡ÓZ7[×*⾤uÀà€â(] óïNê,rO8$WÐ\")\Z>ÁíAgõ1ä#Wƒ.Ï™àb šˆÝÿ\\°3Ûƒ‚Œ>Ç\"èõ}Ow‰žXáê´•]åšo {¶ŦúíÂl!h²½9®œ-?22e'),(1,'Referers_searchEngineByKeyword',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ]ŽÍ\nÂ@ „ß%w¡»u¥\\=«ˆ÷’Ö JWé¡ì»ÛýéÅC2dø2‰@cq¨ø Õ‚.nvÏî(¹I?Úîúš \n‹_\rÄ‚:ãUEÛ€FéíHìÑ€Þßixˆ·Äª”.ZÝó=©áäpØØ”\ZãõvGý­ê´\Z‚CSœ6;q¬… ×&Q;Å\'?öêB'),(1,'Referers_searchEngineByKeyword_35',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-Œ±‚@D¿ÅíM8ÄÙÖZ ±±\" ’¸ñ’+0¡¸Ü¿Ëâ;o2™A‰¨(øwuºêg¸ÊW2úyèÃJpˆË&4 ª]ÐZZƒ¼Œ³\'^Ѐžòá@¬pùÊÌ*óį5ÛŠ¢Éùyg2ˆÉ^nœ6™’Â1)'),(1,'Referers_type',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­;Â0 „ÿKv¤:éƒ^Vf@ˆ½r¡CD$*u¨ú߉C2ðœ;§;ËÃ`v(ìÔBíÝä.݆G>rï‡îpó-<ê¤,g;ƒ\n‘+(Ïýà•uС(UžMê¥=Ç^YI;ÔÙWÉN—ÓKTÇè²8¬“Ò>ù0‹˜·ÑBÿ\01_@šÒ$ª5%–≅~±”ú\rF¤O4+’áuÛx$'),(1,'Referers_urlByWebsite',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœMŽO Â0 Å¿KîÊÒýqK®žUÄûȶ\nÅÁvýî¦k/¡/¿¼TÈÐæ(ã+aCps«{µgùÈCºÑ¶÷yBÚÞZ Ê#.„Y°K‚Q:;+¢ÌbŸv±Ë±Ÿ\'`G˜dRÏU\'UÁÃÞËàW&Œ*¹úÜÃÃüÿí˜6PaØ{Gu²šdÅ-ýšx^ïØùÂþ <·DJ'),(1,'Referers_urlByWebsite_38',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-NM‚0 ý+fw v1^<«1ÞIÁ*‹[X¶)Âwï£ïµIr%dâ|ì*ù®OèñŽ¢úÖ 8Œ.k™@(æu„]LK`\nRL†Î{ijéI–lÒö:5ø¢¤óúhТ>|Q}h¾[¹^ÓÊlÉ1!/È-¶ñøkó*U%â sÍÅ !ƒqŠWg1]óh~oÒD­'),(1,'UserCountry_city',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ}Ž1‚@ …ÿKwz(¯«³\ZãNŠ0\\$qÀ„Ü÷\nœ£Ã»6ׯïUá°r7 [˜Ã«=ëGÚC{ÏÆ2¥‡ž$\n¿á\n.ì»Ú\r#É„DÀ»Ü.ŸtJ*¥Ç1ÕÊæµ3¤Î¸®‡pŽÈ.þçÖ£t­ûƒ°Ä¸ÅYtcKÞ–Ì7¾¬Ì­ù™GHn'),(1,'UserCountry_country',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ}ŽÍ\nÂ@ „ß%w¡Ùm«\\=«ˆ÷’Ú\n‹Á\n=”}w7ýñèa6aóe&\n‡) “3¸]žõQ?zÓ¦ïêëk$0¦!=t\'QøWpfߨצëI†äD7I\0¯r«|Ò!)—ûT ›—ÎrÃÍr>…·ÍÅÿÜZäN¢u–—8‹®lÉÛ’ù¦“£Ñ§™Ù±5_`tIH'),(1,'UserCountry_region',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ}Ž1‚@ …ÿKwz(¯«³\ZãNŠ0\\$qÀ„Ü÷\nœ£Ã»6ׯïUá°r7 [˜Ã«=ëGÚC{ÏÆ2¥‡ž$\n¿á\n.ì»Ú\r#É„DÀ»Ü.ŸtJ*¥Ç1ÕÊæµ3¤Î¸®‡pŽÈ.þçÖ£t­ûƒ°Ä¸ÅYtcKÞ–Ì7¾¬Ì­ù™GHn'),(1,'UserSettings_browser',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;¨IhZ®WÔPÅ^¹Ð!\"C‘:Dùwbšáøúq,°H\rß`Π{ØÂ{ºÈW2Çe\Z?Á ­¥Ð“Xàv]Ðë¶E™—H¼Âƒ†ÝјŠ­¸B_8ñ ]ÉVïÞªâ«ÚýÕ¬ƒ AÊúuå\\ò`´ùØì1'),(1,'UserSettings_browserType',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»ƒ0 EÿÅ{%Ê£×kç¡îÈШŠˆÄ@%†(ÿÞ˜f8öµ},°ˆ?an Á~îò•—ÌÁMãv âž -Ä‚ú¯ zÝ6  ³ Ägþ¸e݈=LÁêLŸ¹ò]îÞ[«J[ÔîT“‚\n1é׃Sî£áüÕ1¹'),(1,'UserSettings_configuration',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹Ë\nÂ@ Eÿ%{afúôf+]jAw%Õ. ](Túï&:‹“ä&\'‚€áø¿õqÏá o¹È8OÃyY 饅îĂ⯠ZÛV YÆi&VCÃõÖs×±w¡ü4uKá3!S(­RòöÊîu0¥ÎjóS7 ‡´Ùב7í;oÃÐÅ3Æ'),(1,'UserSettings_language',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-ŒË\nÂ@ Eÿ%{¡3µo¶®U¤û’j…Á¡ºæßMê,Nž\'x¤€Š¯p\'Ð-lá=žå+ƒLqïŸàV\rô Ô]ÐÛ´E™æH¼ê#z-Ä®à µÒ+G~¢ÓÜؾõ¦´Eív5[#¨²]]8k>8+~Gá0…'),(1,'UserSettings_os',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;R“Ò×+3­l• \"\"1´R‡(ÿŽ\rŽ¯ÇPñ\0waïé,›ÜdŽËtý쇴j¡\'± þë‚Þ¶\r(ʼDâU/tŒÄ®à µÒ+G~¡ÓlìÞzSÚ¢v?5Û ¨²}]8kœ5_mÕ0­'),(1,'UserSettings_plugin',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­ÓÁj1àw™{a“U«“«ç¶Hï2îŽ:nl4ÙºñÝ;êÅ‹0—0Lþð1!!4Ï‚•ûD3Cø’Aºåœzú¦•çå\" €šHº@Ž°¾Ç íµ;Fð´b.éÚ58Aënù\nÜEÐh¶Â³Vµûp—[çuL뵧´}àìÎàF;:Q†VЦ­Dnú3®sT@ÔãÇ_iº^öœAŽ ¦BˆLþàés朔@- ?mÒž[¡ ö½ÌkÝ0Å”ÁMKL©‘$þÄÑËfÛg¨³êD!t¿äÍ\\‹Z[>'),(1,'UserSettings_resolution',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;R“¶I¸^™!öÊ…‘Z©HQþ2?®9¢ã Ìt{|M\'Ùä.sZ¦Û{\'äU =ˆý_„šŽ $ó’ˆW\rÈtvøxˆ#LÃ6z%(?áµõîlU\\SýO-utÈ¥~¹h?˜:|9¿1—'),(1,'UserSettings_wideScreen',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹Á‚0 †ß¥w6dà¿«g5†;)ÊaqJ&–½»-îðµýÛ¯ ‹Pù+Ì t [x\rgþrÏcœ†û¼ Ò*…äõ_gtºm@‘Ç)’_á@Ÿyy³„\0S°…Zè„£¢•ÞèÝYU\\QÛ]Í\ZRÖ¯‹ÏÒF‡C¦2:'),(1,'VisitorInterest_daysSinceLastVisit',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô±j1 àwtXÖÙ—È[)tKK)]§x0=Rèn8òîUÒ¥KAP-F‰#óW¡,[—Pž„öÏ}íÓC=××zœÛôò¹‚l‹ð¥\nÿ´W‰×Û$0×c›¡hÇ(ðØNí«ÎÓ¡­o}éçJ—XnãåÒ…t4Ȧ—C¹Ünþo³@À`À¢FH¿°ðÆ>XÄhÀŒ‘\rXòÁ XöÁ&6ú`³Ûù`#Žlï€\r;$ËÒÈ#R´¦„,žGŒhÍ„Ùäy$IÖ¢QM GšhDS$älZ¡G¤è9§»xo\0‘®Å7¦ëë\''),(1,'VisitorInterest_pageGap',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ò= Â0àÿràxËG?.›8«ˆ{I¥C°àP¡Cé7­‹‹pÃ-á%yááÈ%&â%³‰¦–ášçüìNéîöšKc*< &vßzb»Ý†1õÃq*/@H3Û¸÷K^3Sé\Z^Jrñ×ýF³h0ó³:˜C\'ÀœæÑ 0¯ƒ ,è`Ö‚©0ÏÐ Áhµ‚V2•å—|[£Ä´’éZÎÒÁÒ>JC>'),(1,'VisitorInterest_timeGap',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­ÓÁ\nÂ0 \0Ð x,$m×méM<«ˆ÷щ‡âÀÄÆþÝl^¼{)!¤<’´‰‰xÎŒñÄÔ2œó”Ý!½Ò5õý»<\'`©å€ÄÄîSžØ®ÙŠaHý}€8²g@C1³Û‚¸d&)Fž%rñ—-ó¿&1‘qßþàlΑ \ZÎàCaZç xµLÓ¢±^Ve@ÁŒWuÊ€‚É5`]Ì´*°)\06 ‚jPóÛB¯¦AÚÙ½¢ECkðw‹HW'),(1,'VisitorInterest_visitsByVisitCount',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô±\n1 àw 8šôÚ»K7qVw©âP<pPp8|w£..B†,å§øhéýU(ÉÜ$”Ð(°mv9¬ê½îëq:v×É|ÓNPªÄïx~ï&©Ï”›~B‚Ò„Ëg^ó³ élYS,ëòüì¸`ŒlÀØ‹°ð‹>X‡ë|°„É€%,c6`Ùë±7`½6à`À¬‘,/dtÐ4SB¶¼òhÍœ1‹çQ$Yÿ\0­­`=Ê¤× \r„l=\ZEȼ4€HïðJ8ÄÀ'),(1,'VisitTime_localTime',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­–»jÄ0EÿE}@wlù1nS\'Ë’~Ñ&[˜R$°…ñ¿ÇòªL—SŒ®%ÑÁÅa²[òuö8½ºF§ù>^žóO~Ë×åv9݃Ë×ï} ïaÊÞ<Ú³å4yXòõ¶„ivYYjY­f¯a¯vúð~ÏTÞwVZºÚÚ­[Ùd¾nå«—i;Nþë5±ÅJªG¦š]ÍþÈ?‘ŒøS,R ‹ÔH\r‹”\0¤–Eê\0¤Ä\"õ\0RÇ\"\r\0RÏ\"\0ÒÀ\"‰Pø3þ,p!‡.Âá‚)Ââ‚)Âã‚­)Â䂽)Âå‚Í)Âæ¢ÝIø\\°<ºÑÓ/atƒåi„Ñ\rž€\r™Êa£?©<üî‚ ä'),(1,'VisitTime_serverTime',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­–=kÃ0Eÿ‹ö‚î³å§µs[Bö 4D\r\ZÈüßkÙ¯Öi¡á’lYz:ñ“JÐKVŸ½º—|Îo»ÇtJÛ´Ž»ÍûÙ)ôò1uîÕŤղ<)|™ꆴ?.fJgMl¬¦ÖN­Ž‡y e¾‘ò¨‰¥Òt;—+uñu\0®v/ÕZKǬMõ6µìš`Ʋüi^Jù%,,Ž·,ø–EþÊ‚UÜN\"ÿOÒý âío9¼Áø9Ç2^çðöÊüm¤Š€.RM@.R U\\¤†€Ts‘ZRà\"u¤†‹ÔZ.îøb¬˜:2ÓÚ_1õd&†ÀA68(\n\'Û ‰ƒì\'04²¡À9ÈŽCå`[Š!s°5ÅÐ9Èž†Ï…ì)a]ÈÿšÂ0ºÿ6…at!ýåâPÛ**'),(3,'Referers_keywordByCampaign',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(3,'Referers_keywordBySearchEngine',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœ]Ž±Â0 D¿ïHuB+z^™!¦Ê…JDDÊP¤Uþ&MûäÓóÙ\nƒÙ¡’ ¸]Ýä>ÝI¿z×ÞÝ-LÆ<.ž$\n»â\n®’]ƒ¼öƒ\'Ñ€úaGâÀ¥LQ[ô ¯¬µ¤‡fcsf\n7Ûþ[5y5F‡cqÚÕIƒbù\'ØšŒíYÎQ¬A'),(3,'Referers_keywordBySearchEngine_132',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœ-ŒË\nÂ@ Eÿ%{¡ÓZ7[×*⾤uÀà€â(] óïNê,rO8$WÐ\")\Z>ÁíAgõ1ä#Wƒ.Ï™àb šˆÝÿ\\°3Ûƒ‚Œ>Ç\"èõ}Ow‰žXáê´•]åšo {¶ŦúíÂl!h²½9®œ-?22e'),(3,'Referers_searchEngineByKeyword',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœ]ŽA Â0 …ÿKîÂÚn²½\\=«ˆ÷‘Í‚Å‚b•Fÿ»k×]<$<¾¼D 1;T|‚ê@g7¹G\\eð¶¿<\'‚–F#±À¬¸@UÉn@^ë‰ZÐëûï,±ƒ*¥‹š¢5ß²6œ‚ö›SS¼ÞUWcth‹Ó­N\ZËG±À¦ÎØNñ‘ã7ÎBB'),(3,'Referers_searchEngineByKeyword_134',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœ-Œ±‚@D¿ÅíM8ÄÙÖZ ±±\" ’¸ñ’+0¡¸Ü¿Ëâ;o2™A‰¨(øwuºêg¸ÊW2úyèÃJpˆË&4 ª]ÐZZƒ¼Œ³\'^Ѐžòá@¬pùÊÌ*óį5ÛŠ¢Éùyg2ˆÉ^nœ6™’Â1)'),(3,'Referers_type',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœ]N1Â0 ü‹w¤:¥¨½¬Ì€{åB‹H u¨òwâ4Y:œ}>Ý,pX¿‚ÐM}gùÉC¦0÷ÏB`¬ß4èI^Ðnv7&w  ÓÈ+\\TÞ–}ô¯¼;oiÅ©zs•uºZλ¨ËÑ}Q†M±CÞˆf¾dËüQ=l'),(3,'Referers_urlByWebsite',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Actions_actions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­’ËNÃ0EÅx‹F~¤Œ—°¬\0µ°®œÄJ­¦ jR*Tõß±7‹–M#Ù\ZÏÜñÄGWÂŽ\Zˆx>üªz³z’­|“i©V‹ú0œ–ûíVî¾0P86fÃx×/r›.eªJ,\Z˜~\\«lSï[,40³¨]}À…mÕÀ‰ÈD”Çäçg5œz1gÂÝîdö:΃M¼”‘s@ý\0Ö»àd7 Ž&²AI2\'—¾‰8$A\r\n¤«l§rmúQ«ÛRÝ]†Bg‹!óO¦Â£øa=AÎHw˜âL±©LXWd]‘¸¶3r:ëû`ÏŽ»+\Z²âFƒæu½ÑUd‹ÖõV}ÈB¡{YH]=DQô¯›<Âølç*Æ#ƒ|€1¹ƒß\0F²ˆ§†ÅReu•#ÇàS«\Z¡f]ïË¥\níT¡›Vc!Ù ÷Åü2›„¦bWMÅBSu äO#jƒo¬Ÿ6:'),(5,'Actions_actions_1097',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ]NÍ‚0 ~³»ËºÑöêY‰z\'…]M@B áÝÝPqáÐíûë·1j,*: IP¤¶··lÇO>s^•ÙñÑÿÙ©«kn^‡Ö¢Äh>ûŒx9FQq^V‚\\$B±J»¦¸rkï)¥ ‹Ú\rø™!ß`Ñ(š\n”ù¨š‚‰è¥klƒ¸V!ù©‰èÀ8$ðûÒ&T“™ŒÞfT88dhO£»×àÁo—XÖ'),(5,'Actions_actions_url',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­“_OÂ0À¿Šé»[¯·!\\c|ñYøNŠ4²¸¹eBøî¶+ŒÒ舑%½Ü¿¶w¿Þ¥´ËˆËg±—l}ÎU«ÞÔ<׳×r}²¦«¢Põ–Ю1‚½3©Ý~EëM‰åj®s&2çÅÙ×Bo˜ÌH˜võ\nZ1æF\"—ÝN ‘ØdÙ]\0!Â(èΓ{+”«‰­ê®\n˜[¶mEq¬7ª¨r•õGÌl:Ê\'¹ï¶ý¿}€°àG\0Ѳ-~‡pŽ€ @pŒbà€ÔK?ð0kÔ{†#Æ?ÂñŠö(‰kPJBJ˜ú”*U«B·º¾Ÿ.ËU¾¸YdM•«ífgÃr˜xé‚;ã®3ìA‰‰Œ„ \näç¨ÇP§8Œz sï\rð\Zo€á½iËZ_œÑñ0áþ¶K>†4ô ]ªàGˆþÊÔÿ¡9íºÎ-mSƒÅp –Ç7’º['),(5,'Actions_actions_url_1130',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ]OÁnà ýîK0n³Í¾î¼Umï•[¡-Q\"BÔMUÿ½@·å`ð{~~ð„ ]iþ lHmÜÙ}Þ$È^Ž=l‡ó?ÚÍ}/þGÐeŠ‡:)Âû¾4‰^“êäh;ÅQ‚¤êqö§V&[µ¡WìÈÄ‚T98BÍy_W€«$Eàüd`–S\\ðZÈ.Á¯‘ÎÀX—\0þ¾ôR²Í\\ÓXîùc¶Ùç˜øLª\ra¤º¶ßÒ­ÿYOaðv?\Z ¿ó5ÞOš¾ykì'),(5,'Actions_downloads',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœEŒÁ\nÂ0DÿeïJ“hÅÙ«gõ^¶R$˜Ri•\"!ÿî.‚f˜70#ðÈjÐ1ÎñÞìä)iSל†ùOçWßËø&8äI®Ä‚ðÝ VÖ®AIÚ.OØ‚ö·Æq„W9Ó/µçb(¨5Yç\\¸(,ï¹|\0ïÏ2†'),(5,'Actions_downloads_1163',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœuNA‚0üËÞµÒ5Ó«g5ê,†@c‘Jˆþn ‰ž<ÌìÌ&;³ ‰Ñ`£OP[ÐÙ æ‘Øós[d—fø¹k_×ܾ Æ.ÝI3ÔrÏHã6YÎ Kºƒ” áØW‚K6OaÙ_¿#m ’ˆ¯Pv³›­ž\"ñÒ¦@};§ª=¨òÞA¿]7mù¯%$(}ÔS˜«$ŠañK‡'),(5,'Actions_outlink',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœµŽË‚@ Eÿ¥{É”ÔvËZº\'E‰™0ˆá!1„w†„¸aë¢7½·!M£!ÅGÒ ÁÉ ¦ÌRéä*¹-²s=üÜ¥¯*i>@HcënÀ²Ü E> ¬ä…všà^¼ƒ—\ZÔÍØPè\n}…‹ÑNâHñäBŠF×ùqŸð4Çÿ  ê¾³æY¶«p¸À¡Ú­Âmg¸\rò§/âÎdÎ'),(5,'Actions_outlink_1196',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœEN»Â@ û—ìôq×28+3 `¯R¨àD_º¾„ªþ;w­ƒ;‘­fƒˆOÐ{ÐÙL椗›äe‘]šéï®CU‰ýbÌ#º ô–¤~›‚JÉ‹’¸C\n»±&6P±‡úí(M\"/×/ždëÖ Á®Ê•¼ú¾E>Š1hýAcŸ[±Ëh>òâæ.öâ  ?l'),(5,'Actions_outlink_1197',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ]MA‚0üËÞµ@ŘéÕ³\ZõNC¤¡XSJˆ!üÝŒ&vvf³3ÃÈ0j$ê¹ô ›bÏž¯\\šª8Ûá§.}Û²{RŒ]\0º‘bÈÅÏÈã5.+C*|l@Âúºr…í½Ñ†”F&ó%2B²‹8k5Eà¥F‚z7ÇÉ@kïŸâ×­­»ÿ7³T5…½J#yåóGä'),(5,'Actions_sitesearch',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'CustomVariables_valueByName',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'DevicesDetection_brands',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(5,'DevicesDetection_browsers',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-Œ½Â@ ƒß%;Rs¥?8+ê±W)t8qC+u8Ý»“@‡Ï¶,\'Š€QÉ|ÝâßãYW}è”æñþÙŒ¼˜Ð“DQÿçŠÞÛ”tšÉbhH\"ÂNmôÆQ^è̃ÛÀf­G£Û§Ì¿¢¸(*äâç)æöðYœ0j'),(5,'DevicesDetection_browserVersions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹±Â0CÿåvP/¡iñ­¨# Ä^]¡CD$†\"uˆòï\\ Ã³-ËV8äˆF.à#è\Z×ø\ZOúÑ»Nioï•ÀÈ‹ =Hþ?WôµmAI§9‘, a¿$nýq\':óÖààØ,ÔhtÛ”ùW”*Š¹ÔûYŠùŽkø1@'),(5,'DevicesDetection_models',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(5,'DevicesDetection_os',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹½Â@ ƒß%;Rs¥?8+3T ¶*…\'Nb(R‡Ó½; tølËq9¢’3ø\0\Zâ\Z_ãQ?zÕ)Íãå½y1¡‰¢þϽ·\r(é4\'’Å.t»$a£6zc/OtæÁm`³Ö£ÑmSæ_Q\\rñ÷“ó{øš0Þ'),(5,'DevicesDetection_osVersions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹±\nÂ@Dÿe{!{1—8ÛZë!‚éÂFS¤ˆâÈ¿»§)ÞÌ0Ì(rD%Wð â\ZßÃY?z×1MÃm^ Œ¼˜Ð“DQÿ犮´\r(é8%’ôèƒô$ÂíÔFgå…Ö¼1Ø;6ó%\Zí>eþ[E…¼•ûE6ó—ð5–1Ä'),(5,'DevicesDetection_types',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹;Â@ ƒÿKv¤æJ8+3Eˆ½JÉ“@êpºÿÞ:|¶eÙŠ€QÉ\0¾€îq‹¯ñª_}ê”ÖññÞŒü1¡™DQÿçŠÞÛ”tZ‰—á 6zã, :óÆà6°YëÑèŽ)ó¯(.Š\n¹øý&ÅüÄvƒ|/T'),(5,'Goals_ItemsCategory',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goals_ItemsCategory_Cart',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goals_ItemsName',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goals_ItemsName_Cart',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goals_ItemsSku',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goals_ItemsSku_Cart',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goal_-1_days_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goal_-1_visits_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goal_0_days_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goal_0_visits_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goal_1_days_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(5,'Goal_1_visits_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊKx–ô­L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßñÊþs›¦zºLPîò„¥q_–yɯÆ$³ŽgI¡lËk¹1Á<úÌýÁ¼\r0(°`ƒEŒ\n,Ú` “K6XƬÀ²\rÖa§À:¬Ç^õXd42h’)¡×ìY´ˆdŸ19gQ$Y~€Ô–Se\" 9ZùµDú„7Žð¤R'),(5,'Goal_2_days_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(5,'Goal_2_visits_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊK\Zx(¤©L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßöÊþSM S=]&(w¹B‚Ò¸/K¿ƒòjLÒëx–ʶ¼–Š æÑÿ`ôó6XÀ xY°Á\"Fm°„I%,cV`Ùë°S`\rÖc¯Àz,2 Hš  4É”Ðkf„,¶ˆdŸ19g±H²ü\0Y[NZ,ÉÑʯ Ò\'¼Žƒ¤R'),(5,'Goal_days_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô= 1 àÿp 4͵w¦›8«ˆ»Tq(8œàpøߊ›%CKH ýà­BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“Np†R…¿Û«Äw7 Œõt¡Lº”&ƒŽXžMH÷™µâ²)ÏOÇ\"¤þCÑŠ\rˆ} F6 Îê°3 ä%L”} ŒÙ€z¨ÇÞ€¨¬GZ:HZSBEé 5fÓòˆ¬B\"š˜GHôz‰‘³õbä‘z4ÎiW†ô.^.ºù'),(5,'Goal_visits_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô= Â@ àÿp \\î«mngq/Wq(*8ÿ»©â&dÉpÇKîàYÂ[™\"/#»r`êŽãs¼õ»ú¨ç:L×þt/³\\pR9|¿Wöë41Lu¸NPfyB‚2r+‡Êk½*;^$…²/¯ÏÄòèÈÛ@Ãrÿ¡`EŒ\nm „I’\r”1+P¶\Zl¨±Zl¨5€\"C‡¤mCg I¦„^Û²hÉ>cršeQY¶\\ªÈ©˜EIFŽ6~«`Hkx¥‘šî'),(5,'Provider_hostnameExt',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(5,'Referers_keywordByCampaign',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Referers_keywordBySearchEngine',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ]Ž½\nÂ@„ŸÅí…ìåo¶µV«°Ñ€‡+\"¤÷îÞ]ÎÆbfa˜oX…ÁêPÉlA·¸wÔÞt˜Æþêc£ÑƒDQouW)nA“ãD2£ÝõåýŽÄÁDqT]n#Ï|[I¸CWrÎ[iÔüÖù5\rÁáP[Æx«†dŠøP(”±Mö,\' _Ö&Ao'),(5,'Referers_keywordBySearchEngine_1294',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹M Â0DÿËÞ…¦µ~Ì^=«ˆ÷²­ŠQzùïfkóÞ2ìZ$EÃ\'¸=謳>†ƒ|ä*cðÃå9R, ‰XÐýß;k{PÑâX\nz}ßÓ]¢\'V´%®¤«^ómq϶Wlj¿­v 8\rR¶í‘sñÊÙña£2–'),(5,'Referers_searchEngineByKeyword',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ]ŽÁ\nÂ0DÿeïB7µÚÎ^=«ˆ÷²­ƒ‹Qz(ùw“4^<Ì, 3U,…œÀ\rèlgûhúÖ«vãÐ^ž3±¸`Ô“(ʵ®à\"ÆhÔnIjÐôyõwu‰… â 2ß­ÜÒ­$,v9çD‹XóãóßÔ¤©÷uNš ãµê£)ÂK>¯J³Oƒ\rËQü¾B¨'),(5,'Referers_searchEngineByKeyword_1327',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹±\nÂ@D¿Åí…lb¢Î¶ÖFÄÆ*l4àâÁR÷﹋WÌ{Ë°£¨ •ôà3èf‹}‡‹þô¡£›†»_Œ0\'ЋDÑüߧܶ §ãäHft §~¼ß‘êNiŠòÞÜJ^ºÒ‹yƒÄ E…óö*1yÏùXÁ 1Z'),(5,'Referers_type',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­? Â0Å¿Kv¡—ô}YUĽ\\µC0à`¡CÉw7‰×Á\nº8Ü]x¼÷Èa0;ö\0j¡Žnr·nÇ#Ÿ¹÷CwºO\n„ù—º(Ë‹AE’+(Ïýà•uÐ2ÇÈ-í5ßʦ”C-:åŠÔ¥—RZEuŽ†à°¥•2zYCZŒøRû쥘I#$P­I`Š7úSêšRÿÀÙPz<W8x†'),(5,'Referers_urlByWebsite',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœMNË\nÂ@ ü—Ü•fûÐM®žUÄ{IÛW\nUè¡ì¿›íVð0 ™ÌL\"dhñTð…Ð\\ýìŸíI>r—.¸ö6Î@HË[ ôÀBe– a‘èš Hç°JT3¹‡›Ü´ïÇ°\'£@E©8(*Ö^\'¾1iÕpÊÓq\rMéø;ƒn\\Óª Çèé¸Q6S:dqÌvý-n¾ÒfÇùÌñ ÀDß'),(5,'Referers_urlByWebsite_1392',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ%MM‚0 ý+dw v1^<«1ÞIÁ*‹[X¶)ÂwƒÃ{}mŠPÀ$!Wà`79ÊOsFl5÷adÀarXÇB¹®#ìcZSØ’b\"è`zï\rd™¥Y²i7èÌà›ÒÞë“A‹úøCõ¥Qú>qƒ¦ÄìÈ1!¡àeÀ.`+žË¬b^±ªE|½ÖÑó…Ä !‡iŽç1‡¹áQü°mDÞ'),(5,'UserCountry_city',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ}N»Â@ û—ìHÍõuVf@ˆ½J¡Ã‰J ­Ô¡º\'é••ÁgëbÇQ¬…\\Á-è—øîÎ:ëCûqèÀX\'{èI¢(³]Á…× Qûa$™P€H\"ÂŽÒp2TòÂѸ6pبqéðEÛü[Íû¨Ü9Xº\n’\\ý±°¤”뼺õÐ6ÎÞ” ìâä±Ëf>°‹/æ%HŸ'),(5,'UserCountry_country',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ}NÁ\nÂ0 ý—Ü…¥Ý¦K®žUÄûÈtB± l£ÿnÒΫ‡×÷hÞË‹£5PÅgÂŽà–ðêò‘› qì¯ïiõ;°/v!¬ì»!ˆ2ŒxÖM𜀹\r^qPÔü ½r£ÀÖ¡RkÒ`«ò ø[ŽÛÈoì4];N¦þXS*uVÝY(‹7•½9Yì”Í;4ñ®,Iy'),(5,'UserCountry_region',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ}N»Â@ û—ìHÍõuVf@ˆ½J¡Ã‰J ­Ô¡º\'é••ÁgëbÇQ¬…\\Á-è—øîÎ:ëCûqèÀX\'{èI¢(³]Á…× Qûa$™P€H\"ÂŽÒp2TòÂѸ6pبqéðEÛü[Íû¨Ü9Xº\n’\\ý±°¤”뼺õÐ6ÎÞ” ìâä±Ëf>°‹/æ%HŸ'),(5,'UserSettings_browser',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹±Â0CÿåvP/¡iñ­¨# Ä^]¡CD$†\"uˆòï\\ Ã³-ËV8äˆF.à#è\Z×ø\ZOúÑ»Nioï•ÀÈ‹ =Hþ?WôµmAI§9‘, a¿$nýq\':óÖààØ,ÔhtÛ”ùW”*Š¹ÔûYŠùŽkø1@'),(5,'UserSettings_browserType',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹½\nÃ0ƒßåöBÎi~ª[;·¥t—ÔC†2¿{Ïi†OBR8¤€Jîà è¶0WýêKÇè‡ç²i5¡‰DQÿ犾´\r(êè#Éž?~š’\0wP½q–7:óÆàÖ±Y[¢ÑSæ½ÈER.÷›dó—ð*«1ê'),(5,'UserSettings_configuration',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹½\nÂ@„ße{!{ù¹s¶•”\ZDÐ.l4Åa …B„#ïøff‡Y…CŠ(äÞƒº¸Ägз^t˜Æþ</Fz™ÐDQþçŠÛ\Z4é0N$¶°ãzë¤m… W}|H\"ÜFi£’¼ympãجÉÑðÛ”ùW¬YÒšß²šï8‡/\0¨3÷'),(5,'UserSettings_language',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-ŒÍ\nÂ@ „ß%w¡ÙÚ\'WÏ*⽤ZaqAh…–}wíᛆI9¢’3ø\0ºÄ5¾†£~ô¦cš†ë{%0òbBwEýŸ+zoPÒqJ$‹=¢çL6j£7öò@gÞÜ6k=\ZÝ6eþÅEQ!??I1ß±‡/tt0¶'),(5,'UserSettings_os',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹½Â@ ƒß%;Rs¥?8+3T ¶*…\'Nb(R‡Ó½; tølËq9¢’3ø\0\Zâ\Z_ãQ?zÕ)Íãå½y1¡‰¢þϽ·\r(é4\'’Å.t»$a£6zc/OtæÁm`³Ö£ÑmSæ_Q\\rñ÷“ó{øš0Þ'),(5,'UserSettings_plugin',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­ÓÁj1àw™{a“U«“«ç¶Hï2îŽ:nl4ÙºñÝ;êÅ‹0—0Lþð1!!4Ï‚•ûD3Cø’Aºåœzú¦•çå\" €šHº@Ž°¾Ç íµ;Fð´b.éÚ58Aënù\nÜEÐh¶Â³Vµûp—[çuL뵧´}àìÎàF;:Q†VЦ­Dnú3®sT@ÔãÇ_iº^öœAŽ ¦BˆLþàés朔@- ?mÒž[¡ ö½ÌkÝ0Å”ÁMKL©‘$þÄÑËfÛg¨³êD!t¿äÍ\\‹Z[>'),(5,'UserSettings_resolution',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹Á\nÂ0DÿeïB6m“8¹zVïe«=Z¨òïn´‡73 3‹’`â|]Ó–^ãIV¹Ë”çñöÞŒ²¨Ðƒ¢ ûÏ¡µ(Ë4gŠ‹ÄÆöïÅ»Ó)Aéã^}PØYVs-*~Ÿ2ÿŠÚD`Pj»ŸcU?p _gd1È'),(5,'UserSettings_wideScreen',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹±Â0 DÿÅ;RÒ´\\Vf@ˆ½r¡CD R‹Ô!Ê¿cC‡ww>9¢\ngðt‰k|öGùÈM†4ö×i%0ò¢Bw\n‚ú?tÖ6 $Ø(,ð ÷4¿D·Q+²´êÂÞ±š·¨´Û”ùWA…\\ìýŠúŽ-|qî2k'),(5,'VisitorInterest_daysSinceLastVisit',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô±j1 àwtXÖÙ—È[)tKK)]§x0=Rèn8òîUÒ¥KAP-F‰#óW¡,[—Pž„öÏ}íÓC=××zœÛôò¹‚l‹ð¥\nÿ´W‰×Û$0×c›¡hÇ(ðØNí«ÎÓ¡­o}éçJ—XnãåÒ…t4Ȧ—C¹Ünþo³@À`À¢FH¿°ðÆ>XÄhÀŒ‘\rXòÁ XöÁ&6ú`³Ûù`#Žlï€\r;$ËÒÈ#R´¦„,žGŒhÍ„Ùäy$IÖ¢QM GšhDS$älZ¡G¤è9§»xo\0‘®Å7¦ëë\''),(5,'VisitorInterest_pageGap',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ò= Â0àÿràxËG?.›8«ˆ{I¥C°àP¡Cé7­‹‹pÃ-á%yááÈ%&â%³‰¦–ášçüìNéîöšKc*< &vßzb»Ý†1õÃq*/@H3Û¸÷K^3Sé\Z^Jrñ×ýF³h0ó³:˜C\'ÀœæÑ 0¯ƒ ,è`Ö‚©0ÏÐ Áhµ‚V2•å—|[£Ä´’éZÎÒÁÒ>JC>'),(5,'VisitorInterest_timeGap',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­ÓÁ\nÂ0 \0Ð x,$m×méM<«ˆ÷щ‡âÀÄÆþÝl^¼{)!¤<’´‰‰xÎŒñÄÔ2œó”Ý!½Ò5õý»<\'`©å€ÄÄîSžØ®ÙŠaHý}€8²g@C1³Û‚¸d&)Fž%rñ—-ó¿&1‘qßþàlΑ \ZÎàCaZç xµLÓ¢±^Ve@ÁŒWuÊ€‚É5`]Ì´*°)\06 ‚jPóÛB¯¦AÚÙ½¢ECkðw‹HW'),(5,'VisitorInterest_visitsByVisitCount',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô±\n1 àw 8šôÚ»K7qVw©âP<pPp8|w£..B†,å§øhéýU(ÉÜ$”Ð(°mv9¬ê½îëq:v×É|ÓNPªÄïx~ï&©Ï”›~B‚Ò„Ëg^ó³ élYS,ëòüì¸`ŒlÀØ‹°ð‹>X‡ë|°„É€%,c6`Ùë±7`½6à`À¬‘,/dtÐ4SB¶¼òhÍœ1‹çQ$Yÿ\0­­`=Ê¤× \r„l=\ZEȼ4€HïðJ8ÄÀ'),(5,'VisitTime_localTime',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­–±jÄ0ÿE}@O¶,{ݦNBHè’+L )rp…ñ¿Gò)]ºL±ûÄ\"£ÁÅ°ÙB´m1??›&s/Ëmù<=æk~Ëçõrzýº9“mߥ¹w7gëî׳u\ZÍ­ù|Yݼ˜Bi¿Õ•\ZKõ󇥒±^‚J õX*µ«Ò1ØkËæmÛëçOó~LþÏåÛ;¾aùëž±åÐ2µ<˜üßLøW0S0˜©˜:˜)L=Ì4\0LfJ\0Ó\03\0S‚™&€i„™DÈ|¢¡“‹V¹—Ó2asÑêásÑòatÑúátÑauÑ\náuá%Ì.Ú¢P{ÀbÂí¶h Üè¥8 ›:íöÕÃ@|'),(5,'VisitTime_serverTime',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­–=kÃ0Eÿ‹ö‚î³å§µsB÷ 4D\rZÈüß+Y\n¤qii¸ƒlùYz>ñƒŠÓsT럣šM<Å·Ýcø /a?wÛ÷“Qèù#Ì«ñA›²<(l.;5SØ\'ã£é y’F“FŸFëËÙåz\'ùVçs‡t¹´ÉýpiŒ«Ý¥ÛA[ñóu¨¥±”êãàç²=ÑÌyßÓ²”<r“5j[Ãà[ù- VYðGù”á6‰­Al¥±Kr¾bëK³&û3SC`™©%0 ™É˜\Z2SG`jÉL=É‘™SGf\Z L=™ w|;VPêŽÀ\njdC1T¶ËA‘9ÛR`èlO!t°M†ÒÁvRÝV ­ƒ®+†ØÁö•0Ì.l_ CíÂþû†Û…ýÿ) · ÛíÈ“/\'.Â'),(32,'Actions_actions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­’MoÂ0 †ÿJ–Óv Jâòå·#Ú&ØÎ(´Q‰(íDËЄøïKÓÐnÑ`\"%rì×±òèU8Ä£A&_FH_ÍÁl–OªVoj•ëå¼<ô·Å~»U»/Š•=hB¥BhûrhÒC¤¹ZéœÊ\n\'H×:Ù”ûšJƒÂnÞì.\0Ù´\Z&Sd‡˜ý\\¸ƒîu\'kž|ꥂîˆnäЧæPÈðh#pÆäÉ¥o@\"Ip‹‚˜\"ÙéÔØ~R›:×w—¡ð‰Çâ(ü—¹tã8ýD„@D¤— Ö^Æ´Sal+#ÑE[d®íŒœOºþ\0سc%nÁŠ‡¬ÀjȬ,7¦ÈˆªÉºÜê•ir¯2eŠ‡(Šþu“çÀ\\Áv®B°éå=ŒÑupÓE<¶,:)‹”8ŸFÈ€TërŸ§d¥ÉNg¦ªµ5QyŸÏ.³™²ÀT⪩Dhª6áüÉ`À›àè6-'),(32,'Actions_actions_2200',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ]NÍ‚0 ~³»ËºÑöêY‰z\'…]M@B áÝÝPqáÐíûë·1j,*: IP¤¶··lÇO>s^•ÙñÑÿÙ©«kn^‡Ö¢Äh>ûŒx9FQq^V‚\\$B±J»¦¸rkï)¥ ‹Ú\rø™!ß`Ñ(š\n”ù¨š‚‰è¥klƒ¸V!ù©‰èÀ8$ðûÒ&T“™ŒÞfT88dhO£»×àÁo—XÖ'),(32,'Actions_actions_url',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­“ßOƒ0ÇÿÓw¡×ƒ9®1¾ø¬Æù¾tB„\0˶,ûߥíƺFYŒ#é¥w÷íûôPÓ.\'.Ÿ \'Ä^òuþ9TzS‹\"›¿Vë“7[•¥j¶Œ€vmoØ;“ŠÐ®W”èhL¬P‹¬`²¥~¿0ÿJ³\r“9‰~€Ãµ™òÞ\"—f%„ˆ´AšÀ8ÂÏ¢\0³ŸÜk£ìíت1·€„زëj\nÃl£ÊºÈ‚ªù™–£|’{³ìÿåøõ?–]ù;„s\\à‚c½\0ÄŽüÀ£“!ú31ýŽsi‡’¸¥È§„±Ké¡V*³.kîgËjU¤7iÞÖ…Úþ¡‡p´‡Ðï!€Ä‘ n;ãè¢>36)l’Ÿ£ž^@ã8ê‘Ê7Àk¼úoÐÏÛ®j²‹=š\0#î~`a[ñ 4ø a\0m¥‚\'p8@ GÆîÍig*מ · y|“['),(32,'Actions_actions_url_2209',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ]OÁnà ýîK0n³Í¾î¼Umï•[¡-Q\"BÔMUÿ½@·å`ð{~~ð„ ]iþ lHmÜÙ}Þ$È^Ž=l‡ó?ÚÍ}/þGÐeŠ‡:)Âû¾4‰^“êäh;ÅQ‚¤êqö§V&[µ¡WìÈÄ‚T98BÍy_W€«$Eàüd`–S\\ðZÈ.Á¯‘ÎÀX—\0þ¾ôR²Í\\ÓXîùc¶Ùç˜øLª\ra¤º¶ßÒ­ÿYOaðv?\Z ¿ó5ÞOš¾ykì'),(32,'Actions_downloads',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœEŒÍ\nÂ0„ßeïJ³ñwöêYE½—­ ¦TZ¥HÈ»›EÐà ó\rÌ() ’ü\nt S¸×;}êE›ØÖ§~úÓùÕu:¼ i,FW…ÿî k— ¨MIFlAû›÷Ã$€‹œé|±5K6TTH%YÇì6’ Ìœì%\0ïç2ˆ'),(32,'Actions_downloads_2218',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœuNA‚0üËÞµÒ5Ó«g5ê,†@c‘Jˆþn ‰ž<ÌìÌ&;³ ‰Ñ`£OP[ÐÙ æ‘Øós[d—fø¹k_×ܾ Æ.ÝI3ÔrÏHã6YÎ Kºƒ” áØW‚K6OaÙ_¿#m ’ˆ¯Pv³›­ž\"ñÒ¦@};§ª=¨òÞA¿]7mù¯%$(}ÔS˜«$ŠañK‡'),(32,'Actions_outlink',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœµŽ»\nÂ@EÿezÃ>\r3­µŠÚ‡‰Y²1’‡AÂþ»»Å&­Å\\æÞyp5ÎQoNf2u±ç¯\\Úª8·ÓÏ]Ʀáî(qî½À\rˆã=c\ZÒ ÁrYY ¿¡îÕ;y…§IÛ=€ *_2”ŠF{ÉRA. ξ ¡RjGn‰ÿA§Úq°æY÷«p2ÂI‘¯Âå ÜFÒÜßödÆ'),(32,'Actions_outlink_2227',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœEN»Â@ û—ìôq×28+3 `¯R¨àD_º¾„ªþ;w­ƒ;‘­fƒˆOÐ{ÐÙL椗›äe‘]šéï®CU‰ýbÌ#º ô–¤~›‚JÉ‹’¸C\n»±&6P±‡úí(M\"/×/ždëÖ Á®Ê•¼ú¾E>Š1hýAcŸ[±Ëh>òâæ.öâ  ?l'),(32,'Actions_outlink_2228',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ]MA‚0üËÞµ@ŘéÕ³\ZõNC¤¡XSJˆ!üÝŒ&vvf³3ÃÈ0j$ê¹ô ›bÏž¯\\šª8Ûá§.}Û²{RŒ]\0º‘bÈÅÏÈã5.+C*|l@Âúºr…í½Ñ†”F&ó%2B²‹8k5Eà¥F‚z7ÇÉ@kïŸâ×­­»ÿ7³T5…½J#yåóGä'),(32,'Actions_sitesearch',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'CustomVariables_valueByName',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'DevicesDetection_brands',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(32,'DevicesDetection_browsers',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-Œ½Â@ ƒß%;Rs¥?8+ê±W)t8qC+u8Ý»“@‡Ï¶,\'Š€QÉ|ÝâßãYW}è”æñþÙŒ¼˜Ð“DQÿçŠÞÛ”tšÉbhH\"ÂNmôÆQ^è̃ÛÀf­G£Û§Ì¿¢¸(*äâç)æöðYœ0j'),(32,'DevicesDetection_browserVersions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹±Â0CÿåvP/¡iñ­¨# Ä^]¡CD$†\"uˆòï\\ Ã³-ËV8äˆF.à#è\Z×ø\ZOúÑ»Nioï•ÀÈ‹ =Hþ?WôµmAI§9‘, a¿$nýq\':óÖààØ,ÔhtÛ”ùW”*Š¹ÔûYŠùŽkø1@'),(32,'DevicesDetection_models',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(32,'DevicesDetection_os',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹½Â@ ƒß%;Rs¥?8+3T ¶*…\'Nb(R‡Ó½; tølËq9¢’3ø\0\Zâ\Z_ãQ?zÕ)Íãå½y1¡‰¢þϽ·\r(é4\'’Å.t»$a£6zc/OtæÁm`³Ö£ÑmSæ_Q\\rñ÷“ó{øš0Þ'),(32,'DevicesDetection_osVersions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹±\nÂ@Dÿe{!{1—8ÛZë!‚éÂFS¤ˆâÈ¿»§)ÞÌ0Ì(rD%Wð â\ZßÃY?z×1MÃm^ Œ¼˜Ð“DQÿ犮´\r(é8%’ôèƒô$ÂíÔFgå…Ö¼1Ø;6ó%\Zí>eþ[E…¼•ûE6ó—ð5–1Ä'),(32,'DevicesDetection_types',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹;Â@ ƒÿKv¤æJ8+3Eˆ½JÉ“@êpºÿÞ:|¶eÙŠ€QÉ\0¾€îq‹¯ñª_}ê”ÖññÞŒü1¡™DQÿçŠÞÛ”tZ‰—á 6zã, :óÆà6°YëÑèŽ)ó¯(.Š\n¹øý&ÅüÄvƒ|/T'),(32,'Goals_ItemsCategory',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goals_ItemsCategory_Cart',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goals_ItemsName',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goals_ItemsName_Cart',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goals_ItemsSku',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goals_ItemsSku_Cart',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goal_-1_days_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goal_-1_visits_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goal_0_days_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goal_0_visits_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goal_1_days_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(32,'Goal_1_visits_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊKx–ô­L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßñÊþs›¦zºLPîò„¥q_–yɯÆ$³ŽgI¡lËk¹1Á<úÌýÁ¼\r0(°`ƒEŒ\n,Ú` “K6XƬÀ²\rÖa§À:¬Ç^õXd42h’)¡×ìY´ˆdŸ19gQ$Y~€Ô–Se\" 9ZùµDú„7Žð¤R'),(32,'Goal_2_days_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(32,'Goal_2_visits_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊK\Zx(¤©L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßöÊþSM S=]&(w¹B‚Ò¸/K¿ƒòjLÒëx–ʶ¼–Š æÑÿ`ôó6XÀ xY°Á\"Fm°„I%,cV`Ùë°S`\rÖc¯Àz,2 Hš  4É”Ðkf„,¶ˆdŸ19g±H²ü\0Y[NZ,ÉÑʯ Ò\'¼Žƒ¤R'),(32,'Goal_days_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô= 1 àÿp 4͵w¦›8«ˆ»Tq(8œàpøߊ›%CKH ýà­BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“Np†R…¿Û«Äw7 Œõt¡Lº”&ƒŽXžMH÷™µâ²)ÏOÇ\"¤þCÑŠ\rˆ} F6 Îê°3 ä%L”} ŒÙ€z¨ÇÞ€¨¬GZ:HZSBEé 5fÓòˆ¬B\"š˜GHôz‰‘³õbä‘z4ÎiW†ô.^.ºù'),(32,'Goal_visits_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô= Â@ àÿp \\î«mngq/Wq(*8ÿ»©â&dÉpÇKîàYÂ[™\"/#»r`êŽãs¼õ»ú¨ç:L×þt/³\\pR9|¿Wöë41Lu¸NPfyB‚2r+‡Êk½*;^$…²/¯ÏÄòèÈÛ@Ãrÿ¡`EŒ\nm „I’\r”1+P¶\Zl¨±Zl¨5€\"C‡¤mCg I¦„^Û²hÉ>cršeQY¶\\ªÈ©˜EIFŽ6~«`Hkx¥‘šî'),(32,'Provider_hostnameExt',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(32,'Referers_keywordByCampaign',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Referers_keywordBySearchEngine',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ]Ž½\nÂ@„ŸÅí…ì f¶µŽ\"6Va£)\"¤÷îÞŸÅÌÂ0ß°\nƒÍ¡’3¸]ÜêÞýI?zÓa\Zûë¼ÛŒ$\n›ë\n®b\\ƒ&ƉdAºëkžw$&ˆƒl¹y¦[KÄš’sÚŠ£æ·Î¨I¨÷Ç’´eŒsÕGS„‡|¦Œ©mö,ø/ÕõAk'),(32,'Referers_keywordBySearchEngine_2253',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹M Â0DÿËÞ…¦µ~Ì^=«ˆ÷²­ŠQzùïfkóÞ2ìZ$EÃ\'¸=謳>†ƒ|ä*cðÃå9R, ‰XÐýß;k{PÑâX\nz}ßÓ]¢\'V´%®¤«^ómq϶Wlj¿­v 8\rR¶í‘sñÊÙña£2–'),(32,'Referers_searchEngineByKeyword',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ]ŽÁ\nÂ@ Dÿ%w¡Imi\'WÏ*⽤Zp± X¥‡²ÿîîv½x˜ 3‹C¡p :ºÙÝ»½ílý8t§ÇL`,S0º\Zʵnà\"Æh´~I\'4 ççu¹Ù4:H•ùnõšn¥àPçœ-båÇç¿©¤©÷MNÚ ãµê£ÂK~]‰Ô’Ö½ú/¾xB§'),(32,'Referers_searchEngineByKeyword_2262',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹±\nÂ@D¿Åí…lb¢Î¶ÖFÄÆ*l4àâÁR÷﹋WÌ{Ë°£¨ •ôà3èf‹}‡‹þô¡£›†»_Œ0\'ЋDÑüߧܶ §ãäHft §~¼ß‘êNiŠòÞÜJ^ºÒ‹yƒÄ E…óö*1yÏùXÁ 1Z'),(32,'Referers_type',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­? Â0Å¿Kv¡—ô}YUĽ\\µC0à`¡CÉw7‰×Á\nº8Ü]x¼÷Èa0;ö\0j¡Žnr·nÇ#Ÿ¹÷CwºO\n„ù—º(Ë‹AE’+(Ïýà•uÐ2ÇÈ-í5ßʦ”C-:åŠÔ¥—RZEuŽ†à°¥•2zYCZŒøRû쥘I#$P­I`Š7úSêšRÿÀÙPz<W8x†'),(32,'Referers_urlByWebsite',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœMNË\nÂ@ ü—Ü•fû²ÉÕ³Šx/i»Âb¥°\n=”ýw³»\n&!“™I„ mŽ\n>v·ºG”·Üd˜m]V ¤í¥F`¡2Ë…°ˆtM0Ë`g`•¨ÆÛ»õÖïÇå ìÈ(PQ*ZEÅSêuäW\rÇ<ShLÇßüscJ›¨2‚£Ã—ê2¥C‡l×ßBöÓvɱC>qø\0ûDä'),(32,'Referers_urlByWebsite_2279',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ%MM‚0 ý+dw v1^<«1ÞIÁ*‹[X¶)ÂwƒÃ{}mŠPÀ$!Wà`79ÊOsFl5÷adÀarXÇB¹®#ìcZSØ’b\"è`zï\rd™¥Y²i7èÌà›ÒÞë“A‹úøCõ¥Qú>qƒ¦ÄìÈ1!¡àeÀ.`+žË¬b^±ªE|½ÖÑó…Ä !‡iŽç1‡¹áQü°mDÞ'),(32,'UserCountry_city',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ}N»Â@ û—ìHÍõuVf@ˆ½J¡Ã‰J ­Ô¡º\'é••ÁgëbÇQ¬…\\Á-è—øîÎ:ëCûqèÀX\'{èI¢(³]Á…× Qûa$™P€H\"ÂŽÒp2TòÂѸ6pبqéðEÛü[Íû¨Ü9Xº\n’\\ý±°¤”뼺õÐ6ÎÞ” ìâä±Ëf>°‹/æ%HŸ'),(32,'UserCountry_country',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ}NÁ\nÂ0 ý—Ü…¥Ý¦K®žUÄûÈtB± l£ÿnÒΫ‡×÷hÞË‹£5PÅgÂŽà–ðêò‘› qì¯ïiõ;°/v!¬ì»!ˆ2ŒxÖM𜀹\r^qPÔü ½r£ÀÖ¡RkÒ`«ò ø[ŽÛÈoì4];N¦þXS*uVÝY(‹7•½9Yì”Í;4ñ®,Iy'),(32,'UserCountry_region',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ}N»Â@ û—ìHÍõuVf@ˆ½J¡Ã‰J ­Ô¡º\'é••ÁgëbÇQ¬…\\Á-è—øîÎ:ëCûqèÀX\'{èI¢(³]Á…× Qûa$™P€H\"ÂŽÒp2TòÂѸ6pبqéðEÛü[Íû¨Ü9Xº\n’\\ý±°¤”뼺õÐ6ÎÞ” ìâä±Ëf>°‹/æ%HŸ'),(32,'UserSettings_browser',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹±Â0CÿåvP/¡iñ­¨# Ä^]¡CD$†\"uˆòï\\ Ã³-ËV8äˆF.à#è\Z×ø\ZOúÑ»Nioï•ÀÈ‹ =Hþ?WôµmAI§9‘, a¿$nýq\':óÖààØ,ÔhtÛ”ùW”*Š¹ÔûYŠùŽkø1@'),(32,'UserSettings_browserType',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹½\nÃ0ƒßåöBÎi~ª[;·¥t—ÔC†2¿{Ïi†OBR8¤€Jîà è¶0WýêKÇè‡ç²i5¡‰DQÿ犾´\r(êè#Éž?~š’\0wP½q–7:óÆàÖ±Y[¢ÑSæ½ÈER.÷›dó—ð*«1ê'),(32,'UserSettings_configuration',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹½\nÂ@„ße{!{ù¹s¶•”\ZDÐ.l4Åa …B„#ïøff‡Y…CŠ(äÞƒº¸Ägз^t˜Æþ</Fz™ÐDQþçŠÛ\Z4é0N$¶°ãzë¤m… W}|H\"ÜFi£’¼ympãجÉÑðÛ”ùW¬YÒšß²šï8‡/\0¨3÷'),(32,'UserSettings_language',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-ŒÍ\nÂ@ „ß%w¡ÙÚ\'WÏ*⽤ZaqAh…–}wíᛆI9¢’3ø\0ºÄ5¾†£~ô¦cš†ë{%0òbBwEýŸ+zoPÒqJ$‹=¢çL6j£7öò@gÞÜ6k=\ZÝ6eþÅEQ!??I1ß±‡/tt0¶'),(32,'UserSettings_os',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹½Â@ ƒß%;Rs¥?8+3T ¶*…\'Nb(R‡Ó½; tølËq9¢’3ø\0\Zâ\Z_ãQ?zÕ)Íãå½y1¡‰¢þϽ·\r(é4\'’Å.t»$a£6zc/OtæÁm`³Ö£ÑmSæ_Q\\rñ÷“ó{øš0Þ'),(32,'UserSettings_plugin',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­ÓÁj1àw™{a“U«“«ç¶Hï2îŽ:nl4ÙºñÝ;êÅ‹0—0Lþð1!!4Ï‚•ûD3Cø’Aºåœzú¦•çå\" €šHº@Ž°¾Ç íµ;Fð´b.éÚ58Aënù\nÜEÐh¶Â³Vµûp—[çuL뵧´}àìÎàF;:Q†VЦ­Dnú3®sT@ÔãÇ_iº^öœAŽ ¦BˆLþàés朔@- ?mÒž[¡ ö½ÌkÝ0Å”ÁMKL©‘$þÄÑËfÛg¨³êD!t¿äÍ\\‹Z[>'),(32,'UserSettings_resolution',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹Á\nÂ0DÿeïB6m“8¹zVïe«=Z¨òïn´‡73 3‹’`â|]Ó–^ãIV¹Ë”çñöÞŒ²¨Ðƒ¢ ûÏ¡µ(Ë4gŠ‹ÄÆöïÅ»Ó)Aéã^}PØYVs-*~Ÿ2ÿŠÚD`Pj»ŸcU?p _gd1È'),(32,'UserSettings_wideScreen',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹±Â0 DÿÅ;RÒ´\\Vf@ˆ½r¡CD R‹Ô!Ê¿cC‡ww>9¢\ngðt‰k|öGùÈM†4ö×i%0ò¢Bw\n‚ú?tÖ6 $Ø(,ð ÷4¿D·Q+²´êÂÞ±š·¨´Û”ùWA…\\ìýŠúŽ-|qî2k'),(32,'VisitorInterest_daysSinceLastVisit',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô±j1 àwtXÖÙ—È[)tKK)]§x0=Rèn8òîUÒ¥KAP-F‰#óW¡,[—Pž„öÏ}íÓC=××zœÛôò¹‚l‹ð¥\nÿ´W‰×Û$0×c›¡hÇ(ðØNí«ÎÓ¡­o}éçJ—XnãåÒ…t4Ȧ—C¹Ünþo³@À`À¢FH¿°ðÆ>XÄhÀŒ‘\rXòÁ XöÁ&6ú`³Ûù`#Žlï€\r;$ËÒÈ#R´¦„,žGŒhÍ„Ùäy$IÖ¢QM GšhDS$älZ¡G¤è9§»xo\0‘®Å7¦ëë\''),(32,'VisitorInterest_pageGap',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ò= Â0àÿràxËG?.›8«ˆ{I¥C°àP¡Cé7­‹‹pÃ-á%yááÈ%&â%³‰¦–ášçüìNéîöšKc*< &vßzb»Ý†1õÃq*/@H3Û¸÷K^3Sé\Z^Jrñ×ýF³h0ó³:˜C\'ÀœæÑ 0¯ƒ ,è`Ö‚©0ÏÐ Áhµ‚V2•å—|[£Ä´’éZÎÒÁÒ>JC>'),(32,'VisitorInterest_timeGap',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­ÓÁ\nÂ0 \0Ð x,$m×méM<«ˆ÷щ‡âÀÄÆþÝl^¼{)!¤<’´‰‰xÎŒñÄÔ2œó”Ý!½Ò5õý»<\'`©å€ÄÄîSžØ®ÙŠaHý}€8²g@C1³Û‚¸d&)Fž%rñ—-ó¿&1‘qßþàlΑ \ZÎàCaZç xµLÓ¢±^Ve@ÁŒWuÊ€‚É5`]Ì´*°)\06 ‚jPóÛB¯¦AÚÙ½¢ECkðw‹HW'),(32,'VisitorInterest_visitsByVisitCount',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô±\n1 àw 8šôÚ»K7qVw©âP<pPp8|w£..B†,å§øhéýU(ÉÜ$”Ð(°mv9¬ê½îëq:v×É|ÓNPªÄïx~ï&©Ï”›~B‚Ò„Ëg^ó³ élYS,ëòüì¸`ŒlÀØ‹°ð‹>X‡ë|°„É€%,c6`Ùë±7`½6à`À¬‘,/dtÐ4SB¶¼òhÍœ1‹çQ$Yÿ\0­­`=Ê¤× \r„l=\ZEȼ4€HïðJ8ÄÀ'),(32,'VisitTime_localTime',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­–±jÄ0ÿE}@O¶,{ݦNBHè’+L )rp…ñ¿Gò)]ºL±ûÄ\"£ÁÅ°ÙB´m1??›&s/Ëmù<=æk~Ëçõrzýº9“mߥ¹w7gëî׳u\ZÍ­ù|Yݼ˜Bi¿Õ•\ZKõ󇥒±^‚J õX*µ«Ò1ØkËæmÛëçOó~LþÏåÛ;¾aùëž±åÐ2µ<˜üßLøW0S0˜©˜:˜)L=Ì4\0LfJ\0Ó\03\0S‚™&€i„™DÈ|¢¡“‹V¹—Ó2asÑêásÑòatÑúátÑauÑ\náuá%Ì.Ú¢P{ÀbÂí¶h Üè¥8 ›:íöÕÃ@|'),(32,'VisitTime_serverTime',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­–=kÃ0Eÿ‹ö‚î³å§µsB÷ 4D\rZÈüß+Y\n¤qii¸ƒlùYz>ñƒŠÓsT럣šM<Å·Ýcø /a?wÛ÷“Qèù#Ì«ñA›²<(l.;5SØ\'ã£é y’F“FŸFëËÙåz\'ùVçs‡t¹´ÉýpiŒ«Ý¥ÛA[ñóu¨¥±”êãàç²=ÑÌyßÓ²”<r“5j[Ãà[ù- VYðGù”á6‰­Al¥±Kr¾bëK³&û3SC`™©%0 ™É˜\Z2SG`jÉL=É‘™SGf\Z L=™ w|;VPêŽÀ\njdC1T¶ËA‘9ÛR`èlO!t°M†ÒÁvRÝV ­ƒ®+†ØÁö•0Ì.l_ CíÂþû†Û…ýÿ) · ÛíÈ“/\'.Â');
-/*!40000 ALTER TABLE `piwiktests_archive_blob_2012_03` ENABLE KEYS */;
+LOCK TABLES `archive_blob_2012_03` WRITE;
+/*!40000 ALTER TABLE `archive_blob_2012_03` DISABLE KEYS */;
+INSERT INTO `archive_blob_2012_03` VALUES (1,'Actions_actions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­’ËnÂ0EÅõª]yì„ÇxÙ.Q[A»F&±‚EH*Š*Ä¿×NÌËB°!’­™;wìøh&¸3ÈäŠ>ÒO³5ËÙ›jÔ—šz6©¶§lºY­Ôú\"ஶM©T(º~… œœ -Ô\\TÖ8DúºÐé²Ú4T\Zäv[Ç@H×jP0™!‹@ÄìüsÞ,¸lOomî8!FÞÊÙ!\0?^™´ÁÞm\nîläþ‚÷å¾À!9€AL™®ufl?iLSè§ $WÑÀÐÃñïäþá Ûk^`á!/ÀàÌnκd@;V5ƶÒç]‘wEFCZï-*þT¢ÖCÆUµ4eNTCÕJÿ¨\\“g•+S¾DQtŸÛ%5ÆÅ\rj‡ªˆÏ©%Çä* ñ\0£E<°(¦:­ÊŒ´~Þ’©Õ¦ÈÈ\\“µÎMÝh;VDÕä{2¾fÄ‚‘â7GŠ‡#å„«zà‚Äm5;'),(1,'Actions_actions_26',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ]ŽA‚0 …ÿŠÙÝeÝ\0c{õ¬D½“Bˆ.‚& !†ðßݦÁÅC·~o}¯cÔ8YTt@“¡ÈíhoÅŽŸ|沩‹ãcüÑih[î^§Þ¢Äh>~Fȼœ¢h¸¬An$A±Ê‡®ºroï)¥ ‹Úĵ†|’E£() &ñB\0ýÿjþØDã°@«¾©*€Ž=I é³ÿ(£ÂÉu†ö4»{\r¾y@X¢'),(1,'Actions_actions_url',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­’ÝKÃ0ÀÿÉ»m.×nî‚øⳊó}d6¸bkKÛ±±ÿÝ4ÙGf] !÷™»_NQJÛœ¸|&{ÉWùçìQuêMÍ ={­V\'iº,KÕlm[s°w&¡‹W4éµ)±BÍuÁdK&_œezÍdNÂlð÷QýqÇ͉\\Ú <\"郤}¬ B+ž)v}>åŠCbËÆb‹®«)ŽõZ•u¡£ªùˆ­;Ê\'¹³aÿï lø¡ÿhÑ•¿38\'À8X1P@â¹Cz.³wÙx5{Ä5 %!$L}HµjT©;ÝÜOÕ²Èn²¼­ µùÃáàa8ANcŸßÄwÂØ\n}ÖÄXFÂ…3òŸH§8Lz qï ð\Z_€á˜{ÛU>c|i23â`ÂýŽ±s>ñ…ï^a:WÁØ? ŽO¦ö²Éik;·ôn¡§ñ\rêXZ'),(1,'Actions_actions_url_30',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ]OOÃ0 Å¿‹ï´q¼?¾rÜ\'oŠhD«Viª¦}w’ ¨\'ù9~/yÊ–/ž¼0í^ýÙž4ê‡{wxÏÿô¾ ƒ†`äËœ8(ÓM¯Œ»ÜÞ2ôzt=H\Z!†vZ©ÓÙ5]@<ÛTX×½A’<“‘âc\Z¤M–Jy Øõ-­\Z¸¯Æñ±kjøs5l­ÙÔ°½Ã5ToñS´%””´gèbœ¸mÝ·Sïš1|¶sƒ[¥O$ÏrMûæÃ/ƒ‰k¸'),(1,'Actions_downloads',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœEŒÍ\nÂ0„ßeïJ“ø;{õ¬¢ÞËVŠS*­R$äÝÝEÐÃ ß Ì<rDÅ„è§x¯wò”‹4©­OýôOçW×Éð&8äQ®Ä‚ðÝ Ö.AIš6Ø‚ö7ï‡q„W9Ó‚ÚÚs±(¨•¬ó.Š3Ç{.Â2%'),(1,'Actions_downloads_28',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœuNA‚0üËÞµÒ5Ó«g5ê,†@c‘Jˆþn+‰zñ0³;“ìÌ2$Fƒ•>@­AG3˜[¶cÏÎm‘šá«Î}]sû $»@t%ÍPó=#n\n²œ–t)A±¯—lî²/:¿|\ZGÚ@$¿ø*ÐFê)JžË¨oß¡j ª¼wÂÅg—M[þ+ Jïõæ\"‰Ë #¥KV'),(1,'Actions_outlink',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœµŽ9 Â@…ÿËô†=™ÖZEíÃDY²q%‡ABþ»»`“ÖbóÞ|Œ\Z‹‚Ž¨×\'ÛÛ2ßsËW.œÉϾÿ¹KWU\\\0%M¸ñ|ϘÆ4Cp\\64Âݼ“W|šøúdQ…’±Ôlt,4Æ£À!t1T\Z§ðl\nÁw­³Ï²YD“3šÛ´Ý„¶’t ñ võcÿ'),(1,'Actions_outlink_27',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœMŽ¹Â0Dÿe{rØ ÅlK\rè£\rD`‘Kq¡(ÿŽM„ ˜=f5O+P˜\r\">@oAG3™g¶“^.’—Evj¦ßvªJº!Æl]¡+±@¯yAêÝTJ^”Ä (´cMl œâ©¯©]I“ˆ­AC÷A(Çxô}‹0¼cÐú÷‚¦»¯\\—ѼçÅõMì‡7ε?;'),(1,'Actions_outlink_29',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ]MA‚0üËÞµ@ŘéÕ³\ZõNC¤¡XSJˆ!üÝVŒ\Z;;3Ùad5µ‡\\ƒzÐM±eÏg.MUíðU§¾mÙ=)Æ.\0]H1äüÏÈ£›ƒ —•!.V a}]¹ÂöÞè[CJ# “þÎÇ’š¢æ¹E‚z÷J“ÖÞß!Ä;­[Zwý/ÏRíÔö\"ä «›G³'),(1,'Actions_sitesearch',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(1,'CustomVariables_valueByName',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(1,'DevicesDetection_brands',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-Œ»Â0 EÿÅ;R“¾¯×΀{åÒ‘Z©C”dž ÇÏc <R@Å7¸tgxÏ“ò”%nóãsÒ®^Ä‚ú¯ ›¶ (ˉwT â\0Wð…Z”†Wôš[ÛwÞ”®¨ýOÍÖˆ¾IÙ®®œ5_œ_ÌÐ/«'),(1,'DevicesDetection_browsers',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-Œ»Â0 EÿÅ;R“Ò×+ê¨b¯\\艡•:DùwlšáøylG\n¨øw=Â>ÓU6yÊ—iüj ± >tAoÓe^\"ñªhˆ\\Áj¥WÎüF§¹±}ëMi‹ÚýÕl BÊvuã¬ùä¬ø-U09'),(1,'DevicesDetection_browserVersions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;¨IhZ®WÔPÅ^¹Ð!\"C‘:Dùwbšáøúq,°H\rß`Π{ØÂ{ºÈW2Çe\Z?Á ­¥Ð“Xàv]Ðë¶E™—H¼Âƒ†ÝјŠ­¸B_8ñ ]ÉVïÞªâ«ÚýÕ¬ƒ AÊúuå\\ò`´ùØì1'),(1,'DevicesDetection_models',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-Œ»Â0 EÿÅ;R“¾¯×΀{åÒ‘Z©C”dž ÇÏc <R@Å7¸tgxÏ“ò”%nóãsÒ®^Ä‚ú¯ ›¶ (ˉwT â\0Wð…Z”†Wôš[ÛwÞ”®¨ýOÍÖˆ¾IÙ®®œ5_œ_ÌÐ/«'),(1,'DevicesDetection_os',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;R“Ò×+3­l• \"\"1´R‡(ÿŽ\rŽ¯ÇPñ\0waïé,›ÜdŽËtý쇴j¡\'± þë‚Þ¶\r(ʼDâU/tŒÄ®à µÒ+G~¡ÓlìÞzSÚ¢v?5Û ¨²}]8kœ5_mÕ0­'),(1,'DevicesDetection_osVersions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;R“Ò´\\¯Ì!$ºU.tˆˆÔ¡H¢ü;1d8¾~ ,R@ÃW˜ȇ=¼§³|ä.s\\¦Ûº ÒV\n=‰í_ ºí@Qæ%op ÇèyôĦb+ma(ù…¾d§wgUqUíjÖAÐ eýºp.y0Ú|õ1“'),(1,'DevicesDetection_types',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»ƒ0 EÿÅ; åÑëµs©;2-CÔHZ‰!Ê¿c— ÇëcG\n¨y„»‚aïå&?™eÛ2}v‚Cúj¡\'± 9uÁ`i Š²n‘ØÂ\0Wð…F” ¿ÐkoíÞySº¢ö5Û\"¨‘²}Ý9k¯œ\rXK/#'),(1,'Goal_1_days_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(1,'Goal_1_visits_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊKx–ô­L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßñÊþs›¦zºLPîò„¥q_–yɯÆ$³ŽgI¡lËk¹1Á<úÌýÁ¼\r0(°`ƒEŒ\n,Ú` “K6XƬÀ²\rÖa§À:¬Ç^õXd42h’)¡×ìY´ˆdŸ19gQ$Y~€Ô–Se\" 9ZùµDú„7Žð¤R'),(1,'Goal_2_days_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(1,'Goal_2_visits_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊK\Zx(¤©L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßöÊþSM S=]&(w¹B‚Ò¸/K¿ƒòjLÒëx–ʶ¼–Š æÑÿ`ôó6XÀ xY°Á\"Fm°„I%,cV`Ùë°S`\rÖc¯Àz,2 Hš  4É”Ðkf„,¶ˆdŸ19g±H²ü\0Y[NZ,ÉÑʯ Ò\'¼Žƒ¤R'),(1,'Goal_days_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô= 1 àÿp 4͵w¦›8«ˆ»Tq(8œàpøߊ›%CKH ýà­BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“Np†R…¿Û«Äw7 Œõt¡Lº”&ƒŽXžMH÷™µâ²)ÏOÇ\"¤þCÑŠ\rˆ} F6 Îê°3 ä%L”} ŒÙ€z¨ÇÞ€¨¬GZ:HZSBEé 5fÓòˆ¬B\"š˜GHôz‰‘³õbä‘z4ÎiW†ô.^.ºù'),(1,'Goal_visits_until_conv',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô= Â@ àÿp \\î«mngq/Wq(*8ÿ»©â&dÉpÇKîàYÂ[™\"/#»r`êŽãs¼õ»ú¨ç:L×þt/³\\pR9|¿Wöë41Lu¸NPfyB‚2r+‡Êk½*;^$…²/¯ÏÄòèÈÛ@Ãrÿ¡`EŒ\nm „I’\r”1+P¶\Zl¨±Zl¨5€\"C‡¤mCg I¦„^Û²hÉ>cršeQY¶\\ªÈ©˜EIFŽ6~«`Hkx¥‘šî'),(1,'Provider_hostnameExt',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-Œ»Â0 EÿÅ;R“¾¯×΀{åÒ‘Z©C”dž ÇÏc <R@Å7¸tgxÏ“ò”%nóãsÒ®^Ä‚ú¯ ›¶ (ˉwT â\0Wð…Z”†Wôš[ÛwÞ”®¨ýOÍÖˆ¾IÙ®®œ5_œ_ÌÐ/«'),(1,'Referers_keywordByCampaign',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(1,'Referers_keywordBySearchEngine',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ]Ž? Â@ Å?‹Ù…æÎû²:«ˆ‹SIµàaá†\nÊ}w{º8$<~y‰Â`q¨änAW7»OwÒ¯Þµ‡îægc™ÖFO…͸‚«h× Qûa$™Ð€úö~GâÀ¥LQ[ô ¯¤µÄ‡fcSf 7Ûþ[5i5‡cqÚìÄA±þ2lm¢ö,g ?@Ô'),(1,'Referers_keywordBySearchEngine_33',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-ŒË\nÂ@ Eÿ%{¡ÓZ7[×*⾤uÀà€â(] óïNê,rO8$WÐ\")\Z>ÁíAgõ1ä#Wƒ.Ï™àb šˆÝÿ\\°3Ûƒ‚Œ>Ç\"èõ}Ow‰žXáê´•]åšo {¶ŦúíÂl!h²½9®œ-?22e'),(1,'Referers_searchEngineByKeyword',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ]ŽÍ\nÂ@ „ß%w¡»u¥\\=«ˆ÷’Ö JWé¡ì»ÛýéÅC2dø2‰@cq¨ø Õ‚.nvÏî(¹I?Úîúš \n‹_\rÄ‚:ãUEÛ€FéíHìÑ€Þßixˆ·Äª”.ZÝó=©áäpØØ”\ZãõvGý­ê´\Z‚CSœ6;q¬… ×&Q;Å\'?öêB'),(1,'Referers_searchEngineByKeyword_35',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-Œ±‚@D¿ÅíM8ÄÙÖZ ±±\" ’¸ñ’+0¡¸Ü¿Ëâ;o2™A‰¨(øwuºêg¸ÊW2úyèÃJpˆË&4 ª]ÐZZƒ¼Œ³\'^Ѐžòá@¬pùÊÌ*óį5ÛŠ¢Éùyg2ˆÉ^nœ6™’Â1)'),(1,'Referers_type',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­;Â0 „ÿKv¤:éƒ^Vf@ˆ½r¡CD$*u¨ú߉C2ðœ;§;ËÃ`v(ìÔBíÝä.݆G>rï‡îpó-<ê¤,g;ƒ\n‘+(Ïýà•uС(UžMê¥=Ç^YI;ÔÙWÉN—ÓKTÇè²8¬“Ò>ù0‹˜·ÑBÿ\01_@šÒ$ª5%–≅~±”ú\rF¤O4+’áuÛx$'),(1,'Referers_urlByWebsite',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœMŽO Â0 Å¿KîÊÒýqK®žUÄûȶ\nÅÁvýî¦k/¡/¿¼TÈÐæ(ã+aCps«{µgùÈCºÑ¶÷yBÚÞZ Ê#.„Y°K‚Q:;+¢ÌbŸv±Ë±Ÿ\'`G˜dRÏU\'UÁÃÞËàW&Œ*¹úÜÃÃüÿí˜6PaØ{Gu²šdÅ-ýšx^ïØùÂþ <·DJ'),(1,'Referers_urlByWebsite_38',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-NM‚0 ý+fw v1^<«1ÞIÁ*‹[X¶)Âwï£ïµIr%dâ|ì*ù®OèñŽ¢úÖ 8Œ.k™@(æu„]LK`\nRL†Î{ijéI–lÒö:5ø¢¤óúhТ>|Q}h¾[¹^ÓÊlÉ1!/È-¶ñøkó*U%â sÍÅ !ƒqŠWg1]óh~oÒD­'),(1,'UserCountry_city',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ}Ž1‚@ …ÿKwz(¯«³\ZãNŠ0\\$qÀ„Ü÷\nœ£Ã»6ׯïUá°r7 [˜Ã«=ëGÚC{ÏÆ2¥‡ž$\n¿á\n.ì»Ú\r#É„DÀ»Ü.ŸtJ*¥Ç1ÕÊæµ3¤Î¸®‡pŽÈ.þçÖ£t­ûƒ°Ä¸ÅYtcKÞ–Ì7¾¬Ì­ù™GHn'),(1,'UserCountry_country',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ}ŽÍ\nÂ@ „ß%w¡Ùm«\\=«ˆ÷’Ú\n‹Á\n=”}w7ýñèa6aóe&\n‡) “3¸]žõQ?zÓ¦ïêëk$0¦!=t\'QøWpfߨצëI†äD7I\0¯r«|Ò!)—ûT ›—ÎrÃÍr>…·ÍÅÿÜZäN¢u–—8‹®lÉÛ’ù¦“£Ñ§™Ù±5_`tIH'),(1,'UserCountry_region',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ}Ž1‚@ …ÿKwz(¯«³\ZãNŠ0\\$qÀ„Ü÷\nœ£Ã»6ׯïUá°r7 [˜Ã«=ëGÚC{ÏÆ2¥‡ž$\n¿á\n.ì»Ú\r#É„DÀ»Ü.ŸtJ*¥Ç1ÕÊæµ3¤Î¸®‡pŽÈ.þçÖ£t­ûƒ°Ä¸ÅYtcKÞ–Ì7¾¬Ì­ù™GHn'),(1,'UserSettings_browser',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;¨IhZ®WÔPÅ^¹Ð!\"C‘:Dùwbšáøúq,°H\rß`Π{ØÂ{ºÈW2Çe\Z?Á ­¥Ð“Xàv]Ðë¶E™—H¼Âƒ†ÝјŠ­¸B_8ñ ]ÉVïÞªâ«ÚýÕ¬ƒ AÊúuå\\ò`´ùØì1'),(1,'UserSettings_browserType',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»ƒ0 EÿÅ{%Ê£×kç¡îÈШŠˆÄ@%†(ÿÞ˜f8öµ},°ˆ?an Á~îò•—ÌÁMãv âž -Ä‚ú¯ zÝ6  ³ Ägþ¸e݈=LÁêLŸ¹ò]îÞ[«J[ÔîT“‚\n1é׃Sî£áüÕ1¹'),(1,'UserSettings_configuration',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹Ë\nÂ@ Eÿ%{afúôf+]jAw%Õ. ](Túï&:‹“ä&\'‚€áø¿õqÏá o¹È8OÃyY 饅îĂ⯠ZÛV YÆi&VCÃõÖs×±w¡ü4uKá3!S(­RòöÊîu0¥ÎjóS7 ‡´Ùב7í;oÃÐÅ3Æ'),(1,'UserSettings_language',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-ŒË\nÂ@ Eÿ%{¡3µo¶®U¤û’j…Á¡ºæßMê,Nž\'x¤€Š¯p\'Ð-lá=žå+ƒLqïŸàV\rô Ô]ÐÛ´E™æH¼ê#z-Ä®à µÒ+G~¢ÓÜؾõ¦´Eív5[#¨²]]8k>8+~Gá0…'),(1,'UserSettings_os',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;R“Ò×+3­l• \"\"1´R‡(ÿŽ\rŽ¯ÇPñ\0waïé,›ÜdŽËtý쇴j¡\'± þë‚Þ¶\r(ʼDâU/tŒÄ®à µÒ+G~¡ÓlìÞzSÚ¢v?5Û ¨²}]8kœ5_mÕ0­'),(1,'UserSettings_plugin',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­ÓÁj1àw™{a“U«“«ç¶Hï2îŽ:nl4ÙºñÝ;êÅ‹0—0Lþð1!!4Ï‚•ûD3Cø’Aºåœzú¦•çå\" €šHº@Ž°¾Ç íµ;Fð´b.éÚ58Aënù\nÜEÐh¶Â³Vµûp—[çuL뵧´}àìÎàF;:Q†VЦ­Dnú3®sT@ÔãÇ_iº^öœAŽ ¦BˆLþàés朔@- ?mÒž[¡ ö½ÌkÝ0Å”ÁMKL©‘$þÄÑËfÛg¨³êD!t¿äÍ\\‹Z[>'),(1,'UserSettings_resolution',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹»Â0 EÿÅ;R“¶I¸^™!öÊ…‘Z©HQþ2?®9¢ã Ìt{|M\'Ùä.sZ¦Û{\'äU =ˆý_„šŽ $ó’ˆW\rÈtvøxˆ#LÃ6z%(?áµõîlU\\SýO-utÈ¥~¹h?˜:|9¿1—'),(1,'UserSettings_wideScreen',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ-‹Á‚0 †ß¥w6dà¿«g5†;)ÊaqJ&–½»-îðµýÛ¯ ‹Pù+Ì t [x\rgþrÏcœ†û¼ Ò*…äõ_gtºm@‘Ç)’_á@Ÿyy³„\0S°…Zè„£¢•ÞèÝYU\\QÛ]Í\ZRÖ¯‹ÏÒF‡C¦2:'),(1,'VisitorInterest_daysSinceLastVisit',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô±j1 àwtXÖÙ—È[)tKK)]§x0=Rèn8òîUÒ¥KAP-F‰#óW¡,[—Pž„öÏ}íÓC=××zœÛôò¹‚l‹ð¥\nÿ´W‰×Û$0×c›¡hÇ(ðØNí«ÎÓ¡­o}éçJ—XnãåÒ…t4Ȧ—C¹Ünþo³@À`À¢FH¿°ðÆ>XÄhÀŒ‘\rXòÁ XöÁ&6ú`³Ûù`#Žlï€\r;$ËÒÈ#R´¦„,žGŒhÍ„Ùäy$IÖ¢QM GšhDS$älZ¡G¤è9§»xo\0‘®Å7¦ëë\''),(1,'VisitorInterest_pageGap',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ò= Â0àÿràxËG?.›8«ˆ{I¥C°àP¡Cé7­‹‹pÃ-á%yááÈ%&â%³‰¦–ášçüìNéîöšKc*< &vßzb»Ý†1õÃq*/@H3Û¸÷K^3Sé\Z^Jrñ×ýF³h0ó³:˜C\'ÀœæÑ 0¯ƒ ,è`Ö‚©0ÏÐ Áhµ‚V2•å—|[£Ä´’éZÎÒÁÒ>JC>'),(1,'VisitorInterest_timeGap',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­ÓÁ\nÂ0 \0Ð x,$m×méM<«ˆ÷щ‡âÀÄÆþÝl^¼{)!¤<’´‰‰xÎŒñÄÔ2œó”Ý!½Ò5õý»<\'`©å€ÄÄîSžØ®ÙŠaHý}€8²g@C1³Û‚¸d&)Fž%rñ—-ó¿&1‘qßþàlΑ \ZÎàCaZç xµLÓ¢±^Ve@ÁŒWuÊ€‚É5`]Ì´*°)\06 ‚jPóÛB¯¦AÚÙ½¢ECkðw‹HW'),(1,'VisitorInterest_visitsByVisitCount',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­Ô±\n1 àw 8šôÚ»K7qVw©âP<pPp8|w£..B†,å§øhéýU(ÉÜ$”Ð(°mv9¬ê½îëq:v×É|ÓNPªÄïx~ï&©Ï”›~B‚Ò„Ëg^ó³ élYS,ëòüì¸`ŒlÀØ‹°ð‹>X‡ë|°„É€%,c6`Ùë±7`½6à`À¬‘,/dtÐ4SB¶¼òhÍœ1‹çQ$Yÿ\0­­`=Ê¤× \r„l=\ZEȼ4€HïðJ8ÄÀ'),(1,'VisitTime_localTime',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­–»jÄ0EÿE}@wlù1nS\'Ë’~Ñ&[˜R$°…ñ¿ÇòªL—SŒ®%ÑÁÅa²[òuö8½ºF§ù>^žóO~Ë×åv9݃Ë×ï} ïaÊÞ<Ú³å4yXòõ¶„ivYYjY­f¯a¯vúð~ÏTÞwVZºÚÚ­[Ùd¾nå«—i;Nþë5±ÅJªG¦š]ÍþÈ?‘ŒøS,R ‹ÔH\r‹”\0¤–Eê\0¤Ä\"õ\0RÇ\"\r\0RÏ\"\0ÒÀ\"‰Pø3þ,p!‡.Âá‚)Ââ‚)Âã‚­)Â䂽)Âå‚Í)Âæ¢ÝIø\\°<ºÑÓ/atƒåi„Ñ\rž€\r™Êa£?©<üî‚ ä'),(1,'VisitTime_serverTime',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41','xœ­–=kÃ0Eÿ‹ö‚î³å§µs[Bö 4D\r\ZÈüßkÙ¯Öi¡á’lYz:ñ“JÐKVŸ½º—|Îo»ÇtJÛ´Ž»ÍûÙ)ôò1uîÕŤղ<)|™ꆴ?.fJgMl¬¦ÖN­Ž‡y e¾‘ò¨‰¥Òt;—+uñu\0®v/ÕZKǬMõ6µìš`Ʋüi^Jù%,,Ž·,ø–EþÊ‚UÜN\"ÿOÒý âío9¼Áø9Ç2^çðöÊüm¤Š€.RM@.R U\\¤†€Ts‘ZRà\"u¤†‹ÔZ.îøb¬˜:2ÓÚ_1õd&†ÀA68(\n\'Û ‰ƒì\'04²¡À9ÈŽCå`[Š!s°5ÅÐ9Èž†Ï…ì)a]ÈÿšÂ0ºÿ6…at!ýåâPÛ**'),(3,'Referers_keywordByCampaign',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(3,'Referers_keywordBySearchEngine',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœ]Ž±Â0 D¿ïHuB+z^™!¦Ê…JDDÊP¤Uþ&MûäÓóÙ\nƒÙ¡’ ¸]Ýä>ÝI¿z×ÞÝ-LÆ<.ž$\n»â\n®’]ƒ¼öƒ\'Ñ€úaGâÀ¥LQ[ô ¯¬µ¤‡fcsf\n7Ûþ[5y5F‡cqÚÕIƒbù\'ØšŒíYÎQ¬A'),(3,'Referers_keywordBySearchEngine_132',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœ-ŒË\nÂ@ Eÿ%{¡ÓZ7[×*⾤uÀà€â(] óïNê,rO8$WÐ\")\Z>ÁíAgõ1ä#Wƒ.Ï™àb šˆÝÿ\\°3Ûƒ‚Œ>Ç\"èõ}Ow‰žXáê´•]åšo {¶ŦúíÂl!h²½9®œ-?22e'),(3,'Referers_searchEngineByKeyword',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœ]ŽA Â0 …ÿKîÂÚn²½\\=«ˆ÷‘Í‚Å‚b•Fÿ»k×]<$<¾¼D 1;T|‚ê@g7¹G\\eð¶¿<\'‚–F#±À¬¸@UÉn@^ë‰ZÐëûï,±ƒ*¥‹š¢5ß²6œ‚ö›SS¼ÞUWcth‹Ó­N\ZËG±À¦ÎØNñ‘ã7ÎBB'),(3,'Referers_searchEngineByKeyword_134',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœ-Œ±‚@D¿ÅíM8ÄÙÖZ ±±\" ’¸ñ’+0¡¸Ü¿Ëâ;o2™A‰¨(øwuºêg¸ÊW2úyèÃJpˆË&4 ª]ÐZZƒ¼Œ³\'^Ѐžòá@¬pùÊÌ*óį5ÛŠ¢Éùyg2ˆÉ^nœ6™’Â1)'),(3,'Referers_type',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœ]N1Â0 ü‹w¤:¥¨½¬Ì€{åB‹H u¨òwâ4Y:œ}>Ý,pX¿‚ÐM}gùÉC¦0÷ÏB`¬ß4èI^Ðnv7&w  ÓÈ+\\TÞ–}ô¯¼;oiÅ©zs•uºZλ¨ËÑ}Q†M±CÞˆf¾dËüQ=l'),(3,'Referers_urlByWebsite',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Actions_actions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­’ËNÃ0EÅx‹F~¤Œ—°¬\0µ°®œÄJ­¦ jR*Tõß±7‹–M#Ù\ZÏÜñÄGWÂŽ\Zˆx>üªz³z’­|“i©V‹ú0œ–ûíVî¾0P86fÃx×/r›.eªJ,\Z˜~\\«lSï[,40³¨]}À…mÕÀ‰ÈD”Çäçg5œz1gÂÝîdö:΃M¼”‘s@ý\0Ö»àd7 Ž&²AI2\'—¾‰8$A\r\n¤«l§rmúQ«ÛRÝ]†Bg‹!óO¦Â£øa=AÎHw˜âL±©LXWd]‘¸¶3r:ëû`ÏŽ»+\Z²âFƒæu½ÑUd‹ÖõV}ÈB¡{YH]=DQô¯›<Âølç*Æ#ƒ|€1¹ƒß\0F²ˆ§†ÅReu•#ÇàS«\Z¡f]ïË¥\níT¡›Vc!Ù ÷Åü2›„¦bWMÅBSu äO#jƒo¬Ÿ6:'),(5,'Actions_actions_1097',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ]NÍ‚0 ~³»ËºÑöêY‰z\'…]M@B áÝÝPqáÐíûë·1j,*: IP¤¶··lÇO>s^•ÙñÑÿÙ©«kn^‡Ö¢Äh>ûŒx9FQq^V‚\\$B±J»¦¸rkï)¥ ‹Ú\rø™!ß`Ñ(š\n”ù¨š‚‰è¥klƒ¸V!ù©‰èÀ8$ðûÒ&T“™ŒÞfT88dhO£»×àÁo—XÖ'),(5,'Actions_actions_url',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­“_OÂ0À¿Šé»[¯·!\\c|ñYøNŠ4²¸¹eBøî¶+ŒÒ舑%½Ü¿¶w¿Þ¥´ËˆËg±—l}ÎU«ÞÔ<׳×r}²¦«¢Põ–Ю1‚½3©Ý~EëM‰åj®s&2çÅÙ×Bo˜ÌH˜võ\nZ1æF\"—ÝN ‘ØdÙ]\0!Â(èΓ{+”«‰­ê®\n˜[¶mEq¬7ª¨r•õGÌl:Ê\'¹ï¶ý¿}€°àG\0Ѳ-~‡pŽ€ @pŒbà€ÔK?ð0kÔ{†#Æ?ÂñŠö(‰kPJBJ˜ú”*U«B·º¾Ÿ.ËU¾¸YdM•«ífgÃr˜xé‚;ã®3ìA‰‰Œ„ \näç¨ÇP§8Œz sï\rð\Zo€á½iËZ_œÑñ0áþ¶K>†4ô ]ªàGˆþÊÔÿ¡9íºÎ-mSƒÅp –Ç7’º['),(5,'Actions_actions_url_1130',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ]OÁnà ýîK0n³Í¾î¼Umï•[¡-Q\"BÔMUÿ½@·å`ð{~~ð„ ]iþ lHmÜÙ}Þ$È^Ž=l‡ó?ÚÍ}/þGÐeŠ‡:)Âû¾4‰^“êäh;ÅQ‚¤êqö§V&[µ¡WìÈÄ‚T98BÍy_W€«$Eàüd`–S\\ðZÈ.Á¯‘ÎÀX—\0þ¾ôR²Í\\ÓXîùc¶Ùç˜øLª\ra¤º¶ßÒ­ÿYOaðv?\Z ¿ó5ÞOš¾ykì'),(5,'Actions_downloads',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœEŒÁ\nÂ0DÿeïJ“hÅÙ«gõ^¶R$˜Ri•\"!ÿî.‚f˜70#ðÈjÐ1ÎñÞìä)iSל†ùOçWßËø&8äI®Ä‚ðÝ VÖ®AIÚ.OØ‚ö·Æq„W9Ó/µçb(¨5Yç\\¸(,ï¹|\0ïÏ2†'),(5,'Actions_downloads_1163',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœuNA‚0üËÞµÒ5Ó«g5ê,†@c‘Jˆþn ‰ž<ÌìÌ&;³ ‰Ñ`£OP[ÐÙ æ‘Øós[d—fø¹k_×ܾ Æ.ÝI3ÔrÏHã6YÎ Kºƒ” áØW‚K6OaÙ_¿#m ’ˆ¯Pv³›­ž\"ñÒ¦@};§ª=¨òÞA¿]7mù¯%$(}ÔS˜«$ŠañK‡'),(5,'Actions_outlink',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœµŽË‚@ Eÿ¥{É”ÔvËZº\'E‰™0ˆá!1„w†„¸aë¢7½·!M£!ÅGÒ ÁÉ ¦ÌRéä*¹-²s=üÜ¥¯*i>@HcënÀ²Ü E> ¬ä…všà^¼ƒ—\ZÔÍØPè\n}…‹ÑNâHñäBŠF×ùqŸð4Çÿ  ê¾³æY¶«p¸À¡Ú­Âmg¸\rò§/âÎdÎ'),(5,'Actions_outlink_1196',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœEN»Â@ û—ìôq×28+3 `¯R¨àD_º¾„ªþ;w­ƒ;‘­fƒˆOÐ{ÐÙL椗›äe‘]šéï®CU‰ýbÌ#º ô–¤~›‚JÉ‹’¸C\n»±&6P±‡úí(M\"/×/ždëÖ Á®Ê•¼ú¾E>Š1hýAcŸ[±Ëh>òâæ.öâ  ?l'),(5,'Actions_outlink_1197',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ]MA‚0üËÞµ@ŘéÕ³\ZõNC¤¡XSJˆ!üÝŒ&vvf³3ÃÈ0j$ê¹ô ›bÏž¯\\šª8Ûá§.}Û²{RŒ]\0º‘bÈÅÏÈã5.+C*|l@Âúºr…í½Ñ†”F&ó%2B²‹8k5Eà¥F‚z7ÇÉ@kïŸâ×­­»ÿ7³T5…½J#yåóGä'),(5,'Actions_sitesearch',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'CustomVariables_valueByName',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'DevicesDetection_brands',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(5,'DevicesDetection_browsers',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-Œ½Â@ ƒß%;Rs¥?8+ê±W)t8qC+u8Ý»“@‡Ï¶,\'Š€QÉ|ÝâßãYW}è”æñþÙŒ¼˜Ð“DQÿçŠÞÛ”tšÉbhH\"ÂNmôÆQ^è̃ÛÀf­G£Û§Ì¿¢¸(*äâç)æöðYœ0j'),(5,'DevicesDetection_browserVersions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹±Â0CÿåvP/¡iñ­¨# Ä^]¡CD$†\"uˆòï\\ Ã³-ËV8äˆF.à#è\Z×ø\ZOúÑ»Nioï•ÀÈ‹ =Hþ?WôµmAI§9‘, a¿$nýq\':óÖààØ,ÔhtÛ”ùW”*Š¹ÔûYŠùŽkø1@'),(5,'DevicesDetection_models',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(5,'DevicesDetection_os',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹½Â@ ƒß%;Rs¥?8+3T ¶*…\'Nb(R‡Ó½; tølËq9¢’3ø\0\Zâ\Z_ãQ?zÕ)Íãå½y1¡‰¢þϽ·\r(é4\'’Å.t»$a£6zc/OtæÁm`³Ö£ÑmSæ_Q\\rñ÷“ó{øš0Þ'),(5,'DevicesDetection_osVersions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹±\nÂ@Dÿe{!{1—8ÛZë!‚éÂFS¤ˆâÈ¿»§)ÞÌ0Ì(rD%Wð â\ZßÃY?z×1MÃm^ Œ¼˜Ð“DQÿ犮´\r(é8%’ôèƒô$ÂíÔFgå…Ö¼1Ø;6ó%\Zí>eþ[E…¼•ûE6ó—ð5–1Ä'),(5,'DevicesDetection_types',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹;Â@ ƒÿKv¤æJ8+3Eˆ½JÉ“@êpºÿÞ:|¶eÙŠ€QÉ\0¾€îq‹¯ñª_}ê”ÖññÞŒü1¡™DQÿçŠÞÛ”tZ‰—á 6zã, :óÆà6°YëÑèŽ)ó¯(.Š\n¹øý&ÅüÄvƒ|/T'),(5,'Goals_ItemsCategory',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goals_ItemsCategory_Cart',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goals_ItemsName',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goals_ItemsName_Cart',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goals_ItemsSku',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goals_ItemsSku_Cart',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goal_-1_days_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goal_-1_visits_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goal_0_days_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goal_0_visits_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Goal_1_days_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(5,'Goal_1_visits_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊKx–ô­L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßñÊþs›¦zºLPîò„¥q_–yɯÆ$³ŽgI¡lËk¹1Á<úÌýÁ¼\r0(°`ƒEŒ\n,Ú` “K6XƬÀ²\rÖa§À:¬Ç^õXd42h’)¡×ìY´ˆdŸ19gQ$Y~€Ô–Se\" 9ZùµDú„7Žð¤R'),(5,'Goal_2_days_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(5,'Goal_2_visits_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊK\Zx(¤©L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßöÊþSM S=]&(w¹B‚Ò¸/K¿ƒòjLÒëx–ʶ¼–Š æÑÿ`ôó6XÀ xY°Á\"Fm°„I%,cV`Ùë°S`\rÖc¯Àz,2 Hš  4É”Ðkf„,¶ˆdŸ19g±H²ü\0Y[NZ,ÉÑʯ Ò\'¼Žƒ¤R'),(5,'Goal_days_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô= 1 àÿp 4͵w¦›8«ˆ»Tq(8œàpøߊ›%CKH ýà­BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“Np†R…¿Û«Äw7 Œõt¡Lº”&ƒŽXžMH÷™µâ²)ÏOÇ\"¤þCÑŠ\rˆ} F6 Îê°3 ä%L”} ŒÙ€z¨ÇÞ€¨¬GZ:HZSBEé 5fÓòˆ¬B\"š˜GHôz‰‘³õbä‘z4ÎiW†ô.^.ºù'),(5,'Goal_visits_until_conv',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô= Â@ àÿp \\î«mngq/Wq(*8ÿ»©â&dÉpÇKîàYÂ[™\"/#»r`êŽãs¼õ»ú¨ç:L×þt/³\\pR9|¿Wöë41Lu¸NPfyB‚2r+‡Êk½*;^$…²/¯ÏÄòèÈÛ@Ãrÿ¡`EŒ\nm „I’\r”1+P¶\Zl¨±Zl¨5€\"C‡¤mCg I¦„^Û²hÉ>cršeQY¶\\ªÈ©˜EIFŽ6~«`Hkx¥‘šî'),(5,'Provider_hostnameExt',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(5,'Referers_keywordByCampaign',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(5,'Referers_keywordBySearchEngine',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ]Ž½\nÂ@„ŸÅí…ìåo¶µV«°Ñ€‡+\"¤÷îÞ]ÎÆbfa˜oX…ÁêPÉlA·¸wÔÞt˜Æþêc£ÑƒDQouW)nA“ãD2£ÝõåýŽÄÁDqT]n#Ï|[I¸CWrÎ[iÔüÖù5\rÁáP[Æx«†dŠøP(”±Mö,\' _Ö&Ao'),(5,'Referers_keywordBySearchEngine_1294',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹M Â0DÿËÞ…¦µ~Ì^=«ˆ÷²­ŠQzùïfkóÞ2ìZ$EÃ\'¸=謳>†ƒ|ä*cðÃå9R, ‰XÐýß;k{PÑâX\nz}ßÓ]¢\'V´%®¤«^ómq϶Wlj¿­v 8\rR¶í‘sñÊÙña£2–'),(5,'Referers_searchEngineByKeyword',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ]ŽÁ\nÂ0DÿeïB7µÚÎ^=«ˆ÷²­ƒ‹Qz(ùw“4^<Ì, 3U,…œÀ\rèlgûhúÖ«vãÐ^ž3±¸`Ô“(ʵ®à\"ÆhÔnIjÐôyõwu‰… â 2ß­ÜÒ­$,v9çD‹XóãóßÔ¤©÷uNš ãµê£)ÂK>¯J³Oƒ\rËQü¾B¨'),(5,'Referers_searchEngineByKeyword_1327',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹±\nÂ@D¿Åí…lb¢Î¶ÖFÄÆ*l4àâÁR÷﹋WÌ{Ë°£¨ •ôà3èf‹}‡‹þô¡£›†»_Œ0\'ЋDÑüߧܶ §ãäHft §~¼ß‘êNiŠòÞÜJ^ºÒ‹yƒÄ E…óö*1yÏùXÁ 1Z'),(5,'Referers_type',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­? Â0Å¿Kv¡—ô}YUĽ\\µC0à`¡CÉw7‰×Á\nº8Ü]x¼÷Èa0;ö\0j¡Žnr·nÇ#Ÿ¹÷CwºO\n„ù—º(Ë‹AE’+(Ïýà•uÐ2ÇÈ-í5ßʦ”C-:åŠÔ¥—RZEuŽ†à°¥•2zYCZŒøRû쥘I#$P­I`Š7úSêšRÿÀÙPz<W8x†'),(5,'Referers_urlByWebsite',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœMNË\nÂ@ ü—Ü•fûÐM®žUÄ{IÛW\nUè¡ì¿›íVð0 ™ÌL\"dhñTð…Ð\\ýìŸíI>r—.¸ö6Î@HË[ ôÀBe– a‘èš Hç°JT3¹‡›Ü´ïÇ°\'£@E©8(*Ö^\'¾1iÕpÊÓq\rMéø;ƒn\\Óª Çèé¸Q6S:dqÌvý-n¾ÒfÇùÌñ ÀDß'),(5,'Referers_urlByWebsite_1392',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ%MM‚0 ý+dw v1^<«1ÞIÁ*‹[X¶)ÂwƒÃ{}mŠPÀ$!Wà`79ÊOsFl5÷adÀarXÇB¹®#ìcZSØ’b\"è`zï\rd™¥Y²i7èÌà›ÒÞë“A‹úøCõ¥Qú>qƒ¦ÄìÈ1!¡àeÀ.`+žË¬b^±ªE|½ÖÑó…Ä !‡iŽç1‡¹áQü°mDÞ'),(5,'UserCountry_city',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ}N»Â@ û—ìHÍõuVf@ˆ½J¡Ã‰J ­Ô¡º\'é••ÁgëbÇQ¬…\\Á-è—øîÎ:ëCûqèÀX\'{èI¢(³]Á…× Qûa$™P€H\"ÂŽÒp2TòÂѸ6pبqéðEÛü[Íû¨Ü9Xº\n’\\ý±°¤”뼺õÐ6ÎÞ” ìâä±Ëf>°‹/æ%HŸ'),(5,'UserCountry_country',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ}NÁ\nÂ0 ý—Ü…¥Ý¦K®žUÄûÈtB± l£ÿnÒΫ‡×÷hÞË‹£5PÅgÂŽà–ðêò‘› qì¯ïiõ;°/v!¬ì»!ˆ2ŒxÖM𜀹\r^qPÔü ½r£ÀÖ¡RkÒ`«ò ø[ŽÛÈoì4];N¦þXS*uVÝY(‹7•½9Yì”Í;4ñ®,Iy'),(5,'UserCountry_region',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ}N»Â@ û—ìHÍõuVf@ˆ½J¡Ã‰J ­Ô¡º\'é••ÁgëbÇQ¬…\\Á-è—øîÎ:ëCûqèÀX\'{èI¢(³]Á…× Qûa$™P€H\"ÂŽÒp2TòÂѸ6pبqéðEÛü[Íû¨Ü9Xº\n’\\ý±°¤”뼺õÐ6ÎÞ” ìâä±Ëf>°‹/æ%HŸ'),(5,'UserSettings_browser',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹±Â0CÿåvP/¡iñ­¨# Ä^]¡CD$†\"uˆòï\\ Ã³-ËV8äˆF.à#è\Z×ø\ZOúÑ»Nioï•ÀÈ‹ =Hþ?WôµmAI§9‘, a¿$nýq\':óÖààØ,ÔhtÛ”ùW”*Š¹ÔûYŠùŽkø1@'),(5,'UserSettings_browserType',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹½\nÃ0ƒßåöBÎi~ª[;·¥t—ÔC†2¿{Ïi†OBR8¤€Jîà è¶0WýêKÇè‡ç²i5¡‰DQÿ犾´\r(êè#Éž?~š’\0wP½q–7:óÆàÖ±Y[¢ÑSæ½ÈER.÷›dó—ð*«1ê'),(5,'UserSettings_configuration',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹½\nÂ@„ße{!{ù¹s¶•”\ZDÐ.l4Åa …B„#ïøff‡Y…CŠ(äÞƒº¸Ägз^t˜Æþ</Fz™ÐDQþçŠÛ\Z4é0N$¶°ãzë¤m… W}|H\"ÜFi£’¼ympãجÉÑðÛ”ùW¬YÒšß²šï8‡/\0¨3÷'),(5,'UserSettings_language',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-ŒÍ\nÂ@ „ß%w¡ÙÚ\'WÏ*⽤ZaqAh…–}wíᛆI9¢’3ø\0ºÄ5¾†£~ô¦cš†ë{%0òbBwEýŸ+zoPÒqJ$‹=¢çL6j£7öò@gÞÜ6k=\ZÝ6eþÅEQ!??I1ß±‡/tt0¶'),(5,'UserSettings_os',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹½Â@ ƒß%;Rs¥?8+3T ¶*…\'Nb(R‡Ó½; tølËq9¢’3ø\0\Zâ\Z_ãQ?zÕ)Íãå½y1¡‰¢þϽ·\r(é4\'’Å.t»$a£6zc/OtæÁm`³Ö£ÑmSæ_Q\\rñ÷“ó{øš0Þ'),(5,'UserSettings_plugin',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­ÓÁj1àw™{a“U«“«ç¶Hï2îŽ:nl4ÙºñÝ;êÅ‹0—0Lþð1!!4Ï‚•ûD3Cø’Aºåœzú¦•çå\" €šHº@Ž°¾Ç íµ;Fð´b.éÚ58Aënù\nÜEÐh¶Â³Vµûp—[çuL뵧´}àìÎàF;:Q†VЦ­Dnú3®sT@ÔãÇ_iº^öœAŽ ¦BˆLþàés朔@- ?mÒž[¡ ö½ÌkÝ0Å”ÁMKL©‘$þÄÑËfÛg¨³êD!t¿äÍ\\‹Z[>'),(5,'UserSettings_resolution',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹Á\nÂ0DÿeïB6m“8¹zVïe«=Z¨òïn´‡73 3‹’`â|]Ó–^ãIV¹Ë”çñöÞŒ²¨Ðƒ¢ ûÏ¡µ(Ë4gŠ‹ÄÆöïÅ»Ó)Aéã^}PØYVs-*~Ÿ2ÿŠÚD`Pj»ŸcU?p _gd1È'),(5,'UserSettings_wideScreen',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ-‹±Â0 DÿÅ;RÒ´\\Vf@ˆ½r¡CD R‹Ô!Ê¿cC‡ww>9¢\ngðt‰k|öGùÈM†4ö×i%0ò¢Bw\n‚ú?tÖ6 $Ø(,ð ÷4¿D·Q+²´êÂÞ±š·¨´Û”ùWA…\\ìýŠúŽ-|qî2k'),(5,'VisitorInterest_daysSinceLastVisit',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô±j1 àwtXÖÙ—È[)tKK)]§x0=Rèn8òîUÒ¥KAP-F‰#óW¡,[—Pž„öÏ}íÓC=××zœÛôò¹‚l‹ð¥\nÿ´W‰×Û$0×c›¡hÇ(ðØNí«ÎÓ¡­o}éçJ—XnãåÒ…t4Ȧ—C¹Ünþo³@À`À¢FH¿°ðÆ>XÄhÀŒ‘\rXòÁ XöÁ&6ú`³Ûù`#Žlï€\r;$ËÒÈ#R´¦„,žGŒhÍ„Ùäy$IÖ¢QM GšhDS$älZ¡G¤è9§»xo\0‘®Å7¦ëë\''),(5,'VisitorInterest_pageGap',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ò= Â0àÿràxËG?.›8«ˆ{I¥C°àP¡Cé7­‹‹pÃ-á%yááÈ%&â%³‰¦–ášçüìNéîöšKc*< &vßzb»Ý†1õÃq*/@H3Û¸÷K^3Sé\Z^Jrñ×ýF³h0ó³:˜C\'ÀœæÑ 0¯ƒ ,è`Ö‚©0ÏÐ Áhµ‚V2•å—|[£Ä´’éZÎÒÁÒ>JC>'),(5,'VisitorInterest_timeGap',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­ÓÁ\nÂ0 \0Ð x,$m×méM<«ˆ÷щ‡âÀÄÆþÝl^¼{)!¤<’´‰‰xÎŒñÄÔ2œó”Ý!½Ò5õý»<\'`©å€ÄÄîSžØ®ÙŠaHý}€8²g@C1³Û‚¸d&)Fž%rñ—-ó¿&1‘qßþàlΑ \ZÎàCaZç xµLÓ¢±^Ve@ÁŒWuÊ€‚É5`]Ì´*°)\06 ‚jPóÛB¯¦AÚÙ½¢ECkðw‹HW'),(5,'VisitorInterest_visitsByVisitCount',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­Ô±\n1 àw 8šôÚ»K7qVw©âP<pPp8|w£..B†,å§øhéýU(ÉÜ$”Ð(°mv9¬ê½îëq:v×É|ÓNPªÄïx~ï&©Ï”›~B‚Ò„Ëg^ó³ élYS,ëòüì¸`ŒlÀØ‹°ð‹>X‡ë|°„É€%,c6`Ùë±7`½6à`À¬‘,/dtÐ4SB¶¼òhÍœ1‹çQ$Yÿ\0­­`=Ê¤× \r„l=\ZEȼ4€HïðJ8ÄÀ'),(5,'VisitTime_localTime',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­–±jÄ0ÿE}@O¶,{ݦNBHè’+L )rp…ñ¿Gò)]ºL±ûÄ\"£ÁÅ°ÙB´m1??›&s/Ëmù<=æk~Ëçõrzýº9“mߥ¹w7gëî׳u\ZÍ­ù|Yݼ˜Bi¿Õ•\ZKõ󇥒±^‚J õX*µ«Ò1ØkËæmÛëçOó~LþÏåÛ;¾aùëž±åÐ2µ<˜üßLøW0S0˜©˜:˜)L=Ì4\0LfJ\0Ó\03\0S‚™&€i„™DÈ|¢¡“‹V¹—Ó2asÑêásÑòatÑúátÑauÑ\náuá%Ì.Ú¢P{ÀbÂí¶h Üè¥8 ›:íöÕÃ@|'),(5,'VisitTime_serverTime',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44','xœ­–=kÃ0Eÿ‹ö‚î³å§µsB÷ 4D\rZÈüß+Y\n¤qii¸ƒlùYz>ñƒŠÓsT럣šM<Å·Ýcø /a?wÛ÷“Qèù#Ì«ñA›²<(l.;5SØ\'ã£é y’F“FŸFëËÙåz\'ùVçs‡t¹´ÉýpiŒ«Ý¥ÛA[ñóu¨¥±”êãàç²=ÑÌyßÓ²”<r“5j[Ãà[ù- VYðGù”á6‰­Al¥±Kr¾bëK³&û3SC`™©%0 ™É˜\Z2SG`jÉL=É‘™SGf\Z L=™ w|;VPêŽÀ\njdC1T¶ËA‘9ÛR`èlO!t°M†ÒÁvRÝV ­ƒ®+†ØÁö•0Ì.l_ CíÂþû†Û…ýÿ) · ÛíÈ“/\'.Â'),(32,'Actions_actions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­’MoÂ0 †ÿJ–Óv Jâòå·#Ú&ØÎ(´Q‰(íDËЄøïKÓÐnÑ`\"%rì×±òèU8Ä£A&_FH_ÍÁl–OªVoj•ëå¼<ô·Å~»U»/Š•=hB¥BhûrhÒC¤¹ZéœÊ\n\'H×:Ù”ûšJƒÂnÞì.\0Ù´\Z&Sd‡˜ý\\¸ƒîu\'kž|ꥂîˆnäЧæPÈðh#pÆäÉ¥o@\"Ip‹‚˜\"ÙéÔØ~R›:×w—¡ð‰Çâ(ü—¹tã8ýD„@D¤— Ö^Æ´Sal+#ÑE[d®íŒœOºþ\0سc%nÁŠ‡¬ÀjȬ,7¦ÈˆªÉºÜê•ir¯2eŠ‡(Šþu“çÀ\\Áv®B°éå=ŒÑupÓE<¶,:)‹”8ŸFÈ€TërŸ§d¥ÉNg¦ªµ5QyŸÏ.³™²ÀT⪩Dhª6áüÉ`À›àè6-'),(32,'Actions_actions_2200',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ]NÍ‚0 ~³»ËºÑöêY‰z\'…]M@B áÝÝPqáÐíûë·1j,*: IP¤¶··lÇO>s^•ÙñÑÿÙ©«kn^‡Ö¢Äh>ûŒx9FQq^V‚\\$B±J»¦¸rkï)¥ ‹Ú\rø™!ß`Ñ(š\n”ù¨š‚‰è¥klƒ¸V!ù©‰èÀ8$ðûÒ&T“™ŒÞfT88dhO£»×àÁo—XÖ'),(32,'Actions_actions_url',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­“ßOƒ0ÇÿÓw¡×ƒ9®1¾ø¬Æù¾tB„\0˶,ûߥíƺFYŒ#é¥w÷íûôPÓ.\'.Ÿ \'Ä^òuþ9TzS‹\"›¿Vë“7[•¥j¶Œ€vmoØ;“ŠÐ®W”èhL¬P‹¬`²¥~¿0ÿJ³\r“9‰~€Ãµ™òÞ\"—f%„ˆ´AšÀ8ÂÏ¢\0³ŸÜk£ìíت1·€„زëj\nÃl£ÊºÈ‚ªù™–£|’{³ìÿåøõ?–]ù;„s\\à‚c½\0ÄŽüÀ£“!ú31ýŽsi‡’¸¥È§„±Ké¡V*³.kîgËjU¤7iÞÖ…Úþ¡‡p´‡Ðï!€Ä‘ n;ãè¢>36)l’Ÿ£ž^@ã8ê‘Ê7Àk¼úoÐÏÛ®j²‹=š\0#î~`a[ñ 4ø a\0m¥‚\'p8@ GÆîÍig*מ · y|“['),(32,'Actions_actions_url_2209',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ]OÁnà ýîK0n³Í¾î¼Umï•[¡-Q\"BÔMUÿ½@·å`ð{~~ð„ ]iþ lHmÜÙ}Þ$È^Ž=l‡ó?ÚÍ}/þGÐeŠ‡:)Âû¾4‰^“êäh;ÅQ‚¤êqö§V&[µ¡WìÈÄ‚T98BÍy_W€«$Eàüd`–S\\ðZÈ.Á¯‘ÎÀX—\0þ¾ôR²Í\\ÓXîùc¶Ùç˜øLª\ra¤º¶ßÒ­ÿYOaðv?\Z ¿ó5ÞOš¾ykì'),(32,'Actions_downloads',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœEŒÍ\nÂ0„ßeïJ³ñwöêYE½—­ ¦TZ¥HÈ»›EÐà ó\rÌ() ’ü\nt S¸×;}êE›ØÖ§~úÓùÕu:¼ i,FW…ÿî k— ¨MIFlAû›÷Ã$€‹œé|±5K6TTH%YÇì6’ Ìœì%\0ïç2ˆ'),(32,'Actions_downloads_2218',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœuNA‚0üËÞµÒ5Ó«g5ê,†@c‘Jˆþn ‰ž<ÌìÌ&;³ ‰Ñ`£OP[ÐÙ æ‘Øós[d—fø¹k_×ܾ Æ.ÝI3ÔrÏHã6YÎ Kºƒ” áØW‚K6OaÙ_¿#m ’ˆ¯Pv³›­ž\"ñÒ¦@};§ª=¨òÞA¿]7mù¯%$(}ÔS˜«$ŠañK‡'),(32,'Actions_outlink',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœµŽ»\nÂ@EÿezÃ>\r3­µŠÚ‡‰Y²1’‡AÂþ»»Å&­Å\\æÞyp5ÎQoNf2u±ç¯\\Úª8·ÓÏ]Ʀáî(qî½À\rˆã=c\ZÒ ÁrYY ¿¡îÕ;y…§IÛ=€ *_2”ŠF{ÉRA. ξ ¡RjGn‰ÿA§Úq°æY÷«p2ÂI‘¯Âå ÜFÒÜßödÆ'),(32,'Actions_outlink_2227',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœEN»Â@ û—ìôq×28+3 `¯R¨àD_º¾„ªþ;w­ƒ;‘­fƒˆOÐ{ÐÙL椗›äe‘]šéï®CU‰ýbÌ#º ô–¤~›‚JÉ‹’¸C\n»±&6P±‡úí(M\"/×/ždëÖ Á®Ê•¼ú¾E>Š1hýAcŸ[±Ëh>òâæ.öâ  ?l'),(32,'Actions_outlink_2228',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ]MA‚0üËÞµ@ŘéÕ³\ZõNC¤¡XSJˆ!üÝŒ&vvf³3ÃÈ0j$ê¹ô ›bÏž¯\\šª8Ûá§.}Û²{RŒ]\0º‘bÈÅÏÈã5.+C*|l@Âúºr…í½Ñ†”F&ó%2B²‹8k5Eà¥F‚z7ÇÉ@kïŸâ×­­»ÿ7³T5…½J#yåóGä'),(32,'Actions_sitesearch',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'CustomVariables_valueByName',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'DevicesDetection_brands',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(32,'DevicesDetection_browsers',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-Œ½Â@ ƒß%;Rs¥?8+ê±W)t8qC+u8Ý»“@‡Ï¶,\'Š€QÉ|ÝâßãYW}è”æñþÙŒ¼˜Ð“DQÿçŠÞÛ”tšÉbhH\"ÂNmôÆQ^è̃ÛÀf­G£Û§Ì¿¢¸(*äâç)æöðYœ0j'),(32,'DevicesDetection_browserVersions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹±Â0CÿåvP/¡iñ­¨# Ä^]¡CD$†\"uˆòï\\ Ã³-ËV8äˆF.à#è\Z×ø\ZOúÑ»Nioï•ÀÈ‹ =Hþ?WôµmAI§9‘, a¿$nýq\':óÖààØ,ÔhtÛ”ùW”*Š¹ÔûYŠùŽkø1@'),(32,'DevicesDetection_models',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(32,'DevicesDetection_os',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹½Â@ ƒß%;Rs¥?8+3T ¶*…\'Nb(R‡Ó½; tølËq9¢’3ø\0\Zâ\Z_ãQ?zÕ)Íãå½y1¡‰¢þϽ·\r(é4\'’Å.t»$a£6zc/OtæÁm`³Ö£ÑmSæ_Q\\rñ÷“ó{øš0Þ'),(32,'DevicesDetection_osVersions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹±\nÂ@Dÿe{!{1—8ÛZë!‚éÂFS¤ˆâÈ¿»§)ÞÌ0Ì(rD%Wð â\ZßÃY?z×1MÃm^ Œ¼˜Ð“DQÿ犮´\r(é8%’ôèƒô$ÂíÔFgå…Ö¼1Ø;6ó%\Zí>eþ[E…¼•ûE6ó—ð5–1Ä'),(32,'DevicesDetection_types',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹;Â@ ƒÿKv¤æJ8+3Eˆ½JÉ“@êpºÿÞ:|¶eÙŠ€QÉ\0¾€îq‹¯ñª_}ê”ÖññÞŒü1¡™DQÿçŠÞÛ”tZ‰—á 6zã, :óÆà6°YëÑèŽ)ó¯(.Š\n¹øý&ÅüÄvƒ|/T'),(32,'Goals_ItemsCategory',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goals_ItemsCategory_Cart',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goals_ItemsName',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goals_ItemsName_Cart',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goals_ItemsSku',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goals_ItemsSku_Cart',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goal_-1_days_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goal_-1_visits_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goal_0_days_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goal_0_visits_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Goal_1_days_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(32,'Goal_1_visits_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊKx–ô­L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßñÊþs›¦zºLPîò„¥q_–yɯÆ$³ŽgI¡lËk¹1Á<úÌýÁ¼\r0(°`ƒEŒ\n,Ú` “K6XƬÀ²\rÖa§À:¬Ç^õXd42h’)¡×ìY´ˆdŸ19gQ$Y~€Ô–Se\" 9ZùµDú„7Žð¤R'),(32,'Goal_2_days_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô±\n1 àw 8šæÚ;ÓMœUÄ]ª8Np8|w£..B†,%´6å¯BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“.p†R…¿íUâ{7 Œõt¡Lz”&Cùô”gÒÞ ³V\\6åùÙqÁé °èƒEŒŒ}0F6`ÖagÀ’–0°ìƒe̬÷Ázì\rØà€u’ehKMkJÈÁÀ‘GŠhÍ„ÙäyIÖ¢IM G˜ôú ‘³e‚ä‘(zEÎiWé]¼\0ødÅ'),(32,'Goal_2_visits_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô= 1 àÿp 4ýº»tgq?ª8ÿ»ñ\\\\„ YÊK\Zx(¤©L‘çƮ옆}{¶ë¸©z¬§é2nO`âù.œ¡TßöÊþSM S=]&(w¹B‚Ò¸/K¿ƒòjLÒëx–ʶ¼–Š æÑÿ`ôó6XÀ xY°Á\"Fm°„I%,cV`Ùë°S`\rÖc¯Àz,2 Hš  4É”Ðkf„,¶ˆdŸ19g±H²ü\0Y[NZ,ÉÑʯ Ò\'¼Žƒ¤R'),(32,'Goal_days_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô= 1 àÿp 4͵w¦›8«ˆ»Tq(8œàpøߊ›%CKH ýà­BIæ&¡l…–»öh×ãºÞë¡žÆËq{€Ì“Np†R…¿Û«Äw7 Œõt¡Lº”&ƒŽXžMH÷™µâ²)ÏOÇ\"¤þCÑŠ\rˆ} F6 Îê°3 ä%L”} ŒÙ€z¨ÇÞ€¨¬GZ:HZSBEé 5fÓòˆ¬B\"š˜GHôz‰‘³õbä‘z4ÎiW†ô.^.ºù'),(32,'Goal_visits_until_conv',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô= Â@ àÿp \\î«mngq/Wq(*8ÿ»©â&dÉpÇKîàYÂ[™\"/#»r`êŽãs¼õ»ú¨ç:L×þt/³\\pR9|¿Wöë41Lu¸NPfyB‚2r+‡Êk½*;^$…²/¯ÏÄòèÈÛ@Ãrÿ¡`EŒ\nm „I’\r”1+P¶\Zl¨±Zl¨5€\"C‡¤mCg I¦„^Û²hÉ>cršeQY¶\\ªÈ©˜EIFŽ6~«`Hkx¥‘šî'),(32,'Provider_hostnameExt',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-Œ½Â@ ƒß%;Rs¥?8+3Tˆ½J¡Ã‰“Z©ÃéÞ½ tølËr¢È•ÜÁзø¯ºêS§4ïF`äÅ„^$Šú?WôÞ6 ¤ÓœHT ’ˆpP½q–7:óÆà6°YëÑèŽ)ó¯(.jrñó›ó{Øø‰/Ü'),(32,'Referers_keywordByCampaign',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœK´2´ªÎ´Ò5´ö³®\0\ZÄ'),(32,'Referers_keywordBySearchEngine',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ]Ž½\nÂ@„ŸÅí…ì f¶µŽ\"6Va£)\"¤÷îÞŸÅÌÂ0ß°\nƒÍ¡’3¸]ÜêÞýI?zÓa\Zûë¼ÛŒ$\n›ë\n®b\\ƒ&ƉdAºëkžw$&ˆƒl¹y¦[KÄš’sÚŠ£æ·Î¨I¨÷Ç’´eŒsÕGS„‡|¦Œ©mö,ø/ÕõAk'),(32,'Referers_keywordBySearchEngine_2253',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹M Â0DÿËÞ…¦µ~Ì^=«ˆ÷²­ŠQzùïfkóÞ2ìZ$EÃ\'¸=謳>†ƒ|ä*cðÃå9R, ‰XÐýß;k{PÑâX\nz}ßÓ]¢\'V´%®¤«^ómq϶Wlj¿­v 8\rR¶í‘sñÊÙña£2–'),(32,'Referers_searchEngineByKeyword',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ]ŽÁ\nÂ@ Dÿ%w¡Imi\'WÏ*⽤Zp± X¥‡²ÿîîv½x˜ 3‹C¡p :ºÙÝ»½ílý8t§ÇL`,S0º\Zʵnà\"Æh´~I\'4 ççu¹Ù4:H•ùnõšn¥àPçœ-båÇç¿©¤©÷MNÚ ãµê£ÂK~]‰Ô’Ö½ú/¾xB§'),(32,'Referers_searchEngineByKeyword_2262',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹±\nÂ@D¿Åí…lb¢Î¶ÖFÄÆ*l4àâÁR÷﹋WÌ{Ë°£¨ •ôà3èf‹}‡‹þô¡£›†»_Œ0\'ЋDÑüߧܶ §ãäHft §~¼ß‘êNiŠòÞÜJ^ºÒ‹yƒÄ E…óö*1yÏùXÁ 1Z'),(32,'Referers_type',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­? Â0Å¿Kv¡—ô}YUĽ\\µC0à`¡CÉw7‰×Á\nº8Ü]x¼÷Èa0;ö\0j¡Žnr·nÇ#Ÿ¹÷CwºO\n„ù—º(Ë‹AE’+(Ïýà•uÐ2ÇÈ-í5ßʦ”C-:åŠÔ¥—RZEuŽ†à°¥•2zYCZŒøRû쥘I#$P­I`Š7úSêšRÿÀÙPz<W8x†'),(32,'Referers_urlByWebsite',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœMNË\nÂ@ ü—Ü•fû²ÉÕ³Šx/i»Âb¥°\n=”ýw³»\n&!“™I„ mŽ\n>v·ºG”·Üd˜m]V ¤í¥F`¡2Ë…°ˆtM0Ë`g`•¨ÆÛ»õÖïÇå ìÈ(PQ*ZEÅSêuäW\rÇ<ShLÇßüscJ›¨2‚£Ã—ê2¥C‡l×ßBöÓvɱC>qø\0ûDä'),(32,'Referers_urlByWebsite_2279',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ%MM‚0 ý+dw v1^<«1ÞIÁ*‹[X¶)ÂwƒÃ{}mŠPÀ$!Wà`79ÊOsFl5÷adÀarXÇB¹®#ìcZSØ’b\"è`zï\rd™¥Y²i7èÌà›ÒÞë“A‹úøCõ¥Qú>qƒ¦ÄìÈ1!¡àeÀ.`+žË¬b^±ªE|½ÖÑó…Ä !‡iŽç1‡¹áQü°mDÞ'),(32,'UserCountry_city',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ}N»Â@ û—ìHÍõuVf@ˆ½J¡Ã‰J ­Ô¡º\'é••ÁgëbÇQ¬…\\Á-è—øîÎ:ëCûqèÀX\'{èI¢(³]Á…× Qûa$™P€H\"ÂŽÒp2TòÂѸ6pبqéðEÛü[Íû¨Ü9Xº\n’\\ý±°¤”뼺õÐ6ÎÞ” ìâä±Ëf>°‹/æ%HŸ'),(32,'UserCountry_country',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ}NÁ\nÂ0 ý—Ü…¥Ý¦K®žUÄûÈtB± l£ÿnÒΫ‡×÷hÞË‹£5PÅgÂŽà–ðêò‘› qì¯ïiõ;°/v!¬ì»!ˆ2ŒxÖM𜀹\r^qPÔü ½r£ÀÖ¡RkÒ`«ò ø[ŽÛÈoì4];N¦þXS*uVÝY(‹7•½9Yì”Í;4ñ®,Iy'),(32,'UserCountry_region',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ}N»Â@ û—ìHÍõuVf@ˆ½J¡Ã‰J ­Ô¡º\'é••ÁgëbÇQ¬…\\Á-è—øîÎ:ëCûqèÀX\'{èI¢(³]Á…× Qûa$™P€H\"ÂŽÒp2TòÂѸ6pبqéðEÛü[Íû¨Ü9Xº\n’\\ý±°¤”뼺õÐ6ÎÞ” ìâä±Ëf>°‹/æ%HŸ'),(32,'UserSettings_browser',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹±Â0CÿåvP/¡iñ­¨# Ä^]¡CD$†\"uˆòï\\ Ã³-ËV8äˆF.à#è\Z×ø\ZOúÑ»Nioï•ÀÈ‹ =Hþ?WôµmAI§9‘, a¿$nýq\':óÖààØ,ÔhtÛ”ùW”*Š¹ÔûYŠùŽkø1@'),(32,'UserSettings_browserType',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹½\nÃ0ƒßåöBÎi~ª[;·¥t—ÔC†2¿{Ïi†OBR8¤€Jîà è¶0WýêKÇè‡ç²i5¡‰DQÿ犾´\r(êè#Éž?~š’\0wP½q–7:óÆàÖ±Y[¢ÑSæ½ÈER.÷›dó—ð*«1ê'),(32,'UserSettings_configuration',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹½\nÂ@„ße{!{ù¹s¶•”\ZDÐ.l4Åa …B„#ïøff‡Y…CŠ(äÞƒº¸Ägз^t˜Æþ</Fz™ÐDQþçŠÛ\Z4é0N$¶°ãzë¤m… W}|H\"ÜFi£’¼ympãجÉÑðÛ”ùW¬YÒšß²šï8‡/\0¨3÷'),(32,'UserSettings_language',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-ŒÍ\nÂ@ „ß%w¡ÙÚ\'WÏ*⽤ZaqAh…–}wíᛆI9¢’3ø\0ºÄ5¾†£~ô¦cš†ë{%0òbBwEýŸ+zoPÒqJ$‹=¢çL6j£7öò@gÞÜ6k=\ZÝ6eþÅEQ!??I1ß±‡/tt0¶'),(32,'UserSettings_os',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹½Â@ ƒß%;Rs¥?8+3T ¶*…\'Nb(R‡Ó½; tølËq9¢’3ø\0\Zâ\Z_ãQ?zÕ)Íãå½y1¡‰¢þϽ·\r(é4\'’Å.t»$a£6zc/OtæÁm`³Ö£ÑmSæ_Q\\rñ÷“ó{øš0Þ'),(32,'UserSettings_plugin',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­ÓÁj1àw™{a“U«“«ç¶Hï2îŽ:nl4ÙºñÝ;êÅ‹0—0Lþð1!!4Ï‚•ûD3Cø’Aºåœzú¦•çå\" €šHº@Ž°¾Ç íµ;Fð´b.éÚ58Aënù\nÜEÐh¶Â³Vµûp—[çuL뵧´}àìÎàF;:Q†VЦ­Dnú3®sT@ÔãÇ_iº^öœAŽ ¦BˆLþàés朔@- ?mÒž[¡ ö½ÌkÝ0Å”ÁMKL©‘$þÄÑËfÛg¨³êD!t¿äÍ\\‹Z[>'),(32,'UserSettings_resolution',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹Á\nÂ0DÿeïB6m“8¹zVïe«=Z¨òïn´‡73 3‹’`â|]Ó–^ãIV¹Ë”çñöÞŒ²¨Ðƒ¢ ûÏ¡µ(Ë4gŠ‹ÄÆöïÅ»Ó)Aéã^}PØYVs-*~Ÿ2ÿŠÚD`Pj»ŸcU?p _gd1È'),(32,'UserSettings_wideScreen',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ-‹±Â0 DÿÅ;RÒ´\\Vf@ˆ½r¡CD R‹Ô!Ê¿cC‡ww>9¢\ngðt‰k|öGùÈM†4ö×i%0ò¢Bw\n‚ú?tÖ6 $Ø(,ð ÷4¿D·Q+²´êÂÞ±š·¨´Û”ùWA…\\ìýŠúŽ-|qî2k'),(32,'VisitorInterest_daysSinceLastVisit',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô±j1 àwtXÖÙ—È[)tKK)]§x0=Rèn8òîUÒ¥KAP-F‰#óW¡,[—Pž„öÏ}íÓC=××zœÛôò¹‚l‹ð¥\nÿ´W‰×Û$0×c›¡hÇ(ðØNí«ÎÓ¡­o}éçJ—XnãåÒ…t4Ȧ—C¹Ünþo³@À`À¢FH¿°ðÆ>XÄhÀŒ‘\rXòÁ XöÁ&6ú`³Ûù`#Žlï€\r;$ËÒÈ#R´¦„,žGŒhÍ„Ùäy$IÖ¢QM GšhDS$älZ¡G¤è9§»xo\0‘®Å7¦ëë\''),(32,'VisitorInterest_pageGap',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ò= Â0àÿràxËG?.›8«ˆ{I¥C°àP¡Cé7­‹‹pÃ-á%yááÈ%&â%³‰¦–ášçüìNéîöšKc*< &vßzb»Ý†1õÃq*/@H3Û¸÷K^3Sé\Z^Jrñ×ýF³h0ó³:˜C\'ÀœæÑ 0¯ƒ ,è`Ö‚©0ÏÐ Áhµ‚V2•å—|[£Ä´’éZÎÒÁÒ>JC>'),(32,'VisitorInterest_timeGap',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­ÓÁ\nÂ0 \0Ð x,$m×méM<«ˆ÷щ‡âÀÄÆþÝl^¼{)!¤<’´‰‰xÎŒñÄÔ2œó”Ý!½Ò5õý»<\'`©å€ÄÄîSžØ®ÙŠaHý}€8²g@C1³Û‚¸d&)Fž%rñ—-ó¿&1‘qßþàlΑ \ZÎàCaZç xµLÓ¢±^Ve@ÁŒWuÊ€‚É5`]Ì´*°)\06 ‚jPóÛB¯¦AÚÙ½¢ECkðw‹HW'),(32,'VisitorInterest_visitsByVisitCount',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­Ô±\n1 àw 8šôÚ»K7qVw©âP<pPp8|w£..B†,å§øhéýU(ÉÜ$”Ð(°mv9¬ê½îëq:v×É|ÓNPªÄïx~ï&©Ï”›~B‚Ò„Ëg^ó³ élYS,ëòüì¸`ŒlÀØ‹°ð‹>X‡ë|°„É€%,c6`Ùë±7`½6à`À¬‘,/dtÐ4SB¶¼òhÍœ1‹çQ$Yÿ\0­­`=Ê¤× \r„l=\ZEȼ4€HïðJ8ÄÀ'),(32,'VisitTime_localTime',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­–±jÄ0ÿE}@O¶,{ݦNBHè’+L )rp…ñ¿Gò)]ºL±ûÄ\"£ÁÅ°ÙB´m1??›&s/Ëmù<=æk~Ëçõrzýº9“mߥ¹w7gëî׳u\ZÍ­ù|Yݼ˜Bi¿Õ•\ZKõ󇥒±^‚J õX*µ«Ò1ØkËæmÛëçOó~LþÏåÛ;¾aùëž±åÐ2µ<˜üßLøW0S0˜©˜:˜)L=Ì4\0LfJ\0Ó\03\0S‚™&€i„™DÈ|¢¡“‹V¹—Ó2asÑêásÑòatÑúátÑauÑ\náuá%Ì.Ú¢P{ÀbÂí¶h Üè¥8 ›:íöÕÃ@|'),(32,'VisitTime_serverTime',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46','xœ­–=kÃ0Eÿ‹ö‚î³å§µsB÷ 4D\rZÈüß+Y\n¤qii¸ƒlùYz>ñƒŠÓsT럣šM<Å·Ýcø /a?wÛ÷“Qèù#Ì«ñA›²<(l.;5SØ\'ã£é y’F“FŸFëËÙåz\'ùVçs‡t¹´ÉýpiŒ«Ý¥ÛA[ñóu¨¥±”êãàç²=ÑÌyßÓ²”<r“5j[Ãà[ù- VYðGù”á6‰­Al¥±Kr¾bëK³&û3SC`™©%0 ™É˜\Z2SG`jÉL=É‘™SGf\Z L=™ w|;VPêŽÀ\njdC1T¶ËA‘9ÛR`èlO!t°M†ÒÁvRÝV ­ƒ®+†ØÁö•0Ì.l_ CíÂþû†Û…ýÿ) · ÛíÈ“/\'.Â');
+/*!40000 ALTER TABLE `archive_blob_2012_03` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_archive_blob_2012_04`
+-- Table structure for table `archive_blob_2012_04`
--
-DROP TABLE IF EXISTS `piwiktests_archive_blob_2012_04`;
+DROP TABLE IF EXISTS `archive_blob_2012_04`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_archive_blob_2012_04` (
+CREATE TABLE `archive_blob_2012_04` (
`idarchive` int(10) unsigned NOT NULL,
`name` varchar(255) NOT NULL,
`idsite` int(10) unsigned DEFAULT NULL,
@@ -96,22 +96,22 @@ CREATE TABLE `piwiktests_archive_blob_2012_04` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_archive_blob_2012_04`
+-- Dumping data for table `archive_blob_2012_04`
--
-LOCK TABLES `piwiktests_archive_blob_2012_04` WRITE;
-/*!40000 ALTER TABLE `piwiktests_archive_blob_2012_04` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_archive_blob_2012_04` ENABLE KEYS */;
+LOCK TABLES `archive_blob_2012_04` WRITE;
+/*!40000 ALTER TABLE `archive_blob_2012_04` DISABLE KEYS */;
+/*!40000 ALTER TABLE `archive_blob_2012_04` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_archive_numeric_2012_03`
+-- Table structure for table `archive_numeric_2012_03`
--
-DROP TABLE IF EXISTS `piwiktests_archive_numeric_2012_03`;
+DROP TABLE IF EXISTS `archive_numeric_2012_03`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_archive_numeric_2012_03` (
+CREATE TABLE `archive_numeric_2012_03` (
`idarchive` int(10) unsigned NOT NULL,
`name` varchar(255) NOT NULL,
`idsite` int(10) unsigned DEFAULT NULL,
@@ -127,23 +127,23 @@ CREATE TABLE `piwiktests_archive_numeric_2012_03` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_archive_numeric_2012_03`
+-- Dumping data for table `archive_numeric_2012_03`
--
-LOCK TABLES `piwiktests_archive_numeric_2012_03` WRITE;
-/*!40000 ALTER TABLE `piwiktests_archive_numeric_2012_03` DISABLE KEYS */;
-INSERT INTO `piwiktests_archive_numeric_2012_03` VALUES (1,'Actions_nb_downloads',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Actions_nb_hits_with_time_generation',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',4),(1,'Actions_nb_outlinks',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',3),(1,'Actions_nb_pageviews',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',4),(1,'Actions_nb_uniq_downloads',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Actions_nb_uniq_outlinks',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',2),(1,'Actions_nb_uniq_pageviews',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',4),(1,'Actions_sum_time_generation',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',0.62),(1,'bounce_count',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'bounce_count_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'done',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_1_conversion_rate',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',50),(1,'Goal_1_nb_conversions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_1_nb_visits_converted',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_1_revenue',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',42),(1,'Goal_2_conversion_rate',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',50),(1,'Goal_2_nb_conversions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_2_nb_visits_converted',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_2_revenue',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_conversion_rate',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',100),(1,'Goal_nb_conversions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',2),(1,'Goal_nb_visits_converted',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',2),(1,'Goal_revenue',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',43),(1,'max_actions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',7),(1,'max_actions_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'nb_actions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',8),(1,'nb_actions_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'nb_uniq_visitors',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'nb_uniq_visitors_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'nb_visits',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',2),(1,'nb_visits_converted',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',2),(1,'nb_visits_converted_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'nb_visits_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Referers_distinctKeywords',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Referers_distinctSearchEngines',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Referers_distinctWebsites',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Referers_distinctWebsitesUrls',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'sum_visit_length',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1621),(1,'UserCountry_distinctCountries',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(2,'done',1,'2012-03-05','2012-03-05',1,'2013-10-08 21:55:42',1),(3,'done986ba94bab425ed6e45ffd3f8dc6572d.Referers',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(3,'Referers_distinctKeywords',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(3,'Referers_distinctSearchEngines',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'bounce_count',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'done986ba94bab425ed6e45ffd3f8dc6572d.VisitsSummary',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'max_actions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'nb_actions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'nb_uniq_visitors',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'nb_visits',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'nb_visits_converted',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(5,'Actions_nb_downloads',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Actions_nb_hits_with_time_generation',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',4),(5,'Actions_nb_outlinks',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',3),(5,'Actions_nb_pageviews',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',4),(5,'Actions_nb_uniq_downloads',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Actions_nb_uniq_outlinks',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',2),(5,'Actions_nb_uniq_pageviews',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',4),(5,'Actions_sum_time_generation',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',0.62),(5,'bounce_count',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'bounce_count_returning',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'done',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_1_conversion_rate',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',50),(5,'Goal_1_nb_conversions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_1_nb_visits_converted',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_1_revenue',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',42),(5,'Goal_2_conversion_rate',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',50),(5,'Goal_2_nb_conversions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_2_nb_visits_converted',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_2_revenue',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_conversion_rate',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',100),(5,'Goal_nb_conversions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',2),(5,'Goal_nb_visits_converted',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',2),(5,'Goal_revenue',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',43),(5,'max_actions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',7),(5,'max_actions_returning',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'nb_actions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',8),(5,'nb_actions_returning',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'nb_uniq_visitors',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'nb_visits',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',2),(5,'nb_visits_converted',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',2),(5,'nb_visits_converted_returning',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'nb_visits_returning',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Referers_distinctKeywords',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Referers_distinctSearchEngines',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Referers_distinctWebsites',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Referers_distinctWebsitesUrls',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'sum_visit_length',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1621),(5,'UserCountry_distinctCountries',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(6,'done',1,'2012-03-04','2012-03-04',1,'2013-10-08 21:55:43',1),(7,'done',1,'2012-03-07','2012-03-07',1,'2013-10-08 21:55:43',1),(8,'done',1,'2012-03-08','2012-03-08',1,'2013-10-08 21:55:43',1),(9,'done',1,'2012-03-09','2012-03-09',1,'2013-10-08 21:55:43',1),(10,'done',1,'2012-03-10','2012-03-10',1,'2013-10-08 21:55:43',1),(11,'done',1,'2012-03-11','2012-03-11',1,'2013-10-08 21:55:43',1),(12,'done',1,'2012-03-12','2012-03-12',1,'2013-10-08 21:55:43',1),(13,'done',1,'2012-03-13','2012-03-13',1,'2013-10-08 21:55:43',1),(14,'done',1,'2012-03-14','2012-03-14',1,'2013-10-08 21:55:43',1),(15,'done',1,'2012-03-15','2012-03-15',1,'2013-10-08 21:55:43',1),(16,'done',1,'2012-03-16','2012-03-16',1,'2013-10-08 21:55:43',1),(17,'done',1,'2012-03-17','2012-03-17',1,'2013-10-08 21:55:43',1),(18,'done',1,'2012-03-18','2012-03-18',1,'2013-10-08 21:55:43',1),(19,'done',1,'2012-03-19','2012-03-19',1,'2013-10-08 21:55:43',1),(20,'done',1,'2012-03-20','2012-03-20',1,'2013-10-08 21:55:43',1),(21,'done',1,'2012-03-21','2012-03-21',1,'2013-10-08 21:55:43',1),(22,'done',1,'2012-03-22','2012-03-22',1,'2013-10-08 21:55:43',1),(23,'done',1,'2012-03-23','2012-03-23',1,'2013-10-08 21:55:43',1),(24,'done',1,'2012-03-24','2012-03-24',1,'2013-10-08 21:55:43',1),(25,'done',1,'2012-03-25','2012-03-25',1,'2013-10-08 21:55:43',1),(26,'done',1,'2012-03-26','2012-03-26',1,'2013-10-08 21:55:43',1),(27,'done',1,'2012-03-27','2012-03-27',1,'2013-10-08 21:55:44',1),(28,'done',1,'2012-03-28','2012-03-28',1,'2013-10-08 21:55:44',1),(29,'done',1,'2012-03-29','2012-03-29',1,'2013-10-08 21:55:44',1),(30,'done',1,'2012-03-30','2012-03-30',1,'2013-10-08 21:55:44',1),(31,'done',1,'2012-03-31','2012-03-31',1,'2013-10-08 21:55:44',1),(32,'Actions_nb_downloads',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Actions_nb_hits_with_time_generation',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',4),(32,'Actions_nb_outlinks',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',3),(32,'Actions_nb_pageviews',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',4),(32,'Actions_nb_uniq_downloads',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Actions_nb_uniq_outlinks',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',2),(32,'Actions_nb_uniq_pageviews',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',4),(32,'Actions_sum_time_generation',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',0.62),(32,'bounce_count',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'bounce_count_returning',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'done',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_1_conversion_rate',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',50),(32,'Goal_1_nb_conversions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_1_nb_visits_converted',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_1_revenue',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',42),(32,'Goal_2_conversion_rate',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',50),(32,'Goal_2_nb_conversions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_2_nb_visits_converted',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_2_revenue',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_conversion_rate',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',100),(32,'Goal_nb_conversions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',2),(32,'Goal_nb_visits_converted',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',2),(32,'Goal_revenue',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',43),(32,'max_actions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',7),(32,'max_actions_returning',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'nb_actions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',8),(32,'nb_actions_returning',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'nb_uniq_visitors',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'nb_visits',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',2),(32,'nb_visits_converted',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',2),(32,'nb_visits_converted_returning',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'nb_visits_returning',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Referers_distinctKeywords',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Referers_distinctSearchEngines',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Referers_distinctWebsites',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Referers_distinctWebsitesUrls',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'sum_visit_length',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1621),(32,'UserCountry_distinctCountries',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1);
-/*!40000 ALTER TABLE `piwiktests_archive_numeric_2012_03` ENABLE KEYS */;
+LOCK TABLES `archive_numeric_2012_03` WRITE;
+/*!40000 ALTER TABLE `archive_numeric_2012_03` DISABLE KEYS */;
+INSERT INTO `archive_numeric_2012_03` VALUES (1,'Actions_nb_downloads',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Actions_nb_hits_with_time_generation',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',4),(1,'Actions_nb_outlinks',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',3),(1,'Actions_nb_pageviews',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',4),(1,'Actions_nb_uniq_downloads',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Actions_nb_uniq_outlinks',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',2),(1,'Actions_nb_uniq_pageviews',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',4),(1,'Actions_sum_time_generation',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',0.62),(1,'bounce_count',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'bounce_count_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'done',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_1_conversion_rate',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',50),(1,'Goal_1_nb_conversions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_1_nb_visits_converted',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_1_revenue',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',42),(1,'Goal_2_conversion_rate',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',50),(1,'Goal_2_nb_conversions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_2_nb_visits_converted',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_2_revenue',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Goal_conversion_rate',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',100),(1,'Goal_nb_conversions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',2),(1,'Goal_nb_visits_converted',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',2),(1,'Goal_revenue',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',43),(1,'max_actions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',7),(1,'max_actions_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'nb_actions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',8),(1,'nb_actions_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'nb_uniq_visitors',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'nb_uniq_visitors_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'nb_visits',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',2),(1,'nb_visits_converted',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',2),(1,'nb_visits_converted_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'nb_visits_returning',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Referers_distinctKeywords',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Referers_distinctSearchEngines',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Referers_distinctWebsites',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'Referers_distinctWebsitesUrls',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(1,'sum_visit_length',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1621),(1,'UserCountry_distinctCountries',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:41',1),(2,'done',1,'2012-03-05','2012-03-05',1,'2013-10-08 21:55:42',1),(3,'done986ba94bab425ed6e45ffd3f8dc6572d.Referers',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(3,'Referers_distinctKeywords',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(3,'Referers_distinctSearchEngines',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'bounce_count',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'done986ba94bab425ed6e45ffd3f8dc6572d.VisitsSummary',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'max_actions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'nb_actions',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'nb_uniq_visitors',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'nb_visits',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(4,'nb_visits_converted',1,'2012-03-06','2012-03-06',1,'2013-10-08 21:55:42',1),(5,'Actions_nb_downloads',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Actions_nb_hits_with_time_generation',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',4),(5,'Actions_nb_outlinks',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',3),(5,'Actions_nb_pageviews',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',4),(5,'Actions_nb_uniq_downloads',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Actions_nb_uniq_outlinks',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',2),(5,'Actions_nb_uniq_pageviews',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',4),(5,'Actions_sum_time_generation',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',0.62),(5,'bounce_count',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'bounce_count_returning',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'done',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_1_conversion_rate',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',50),(5,'Goal_1_nb_conversions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_1_nb_visits_converted',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_1_revenue',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',42),(5,'Goal_2_conversion_rate',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',50),(5,'Goal_2_nb_conversions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_2_nb_visits_converted',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_2_revenue',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Goal_conversion_rate',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',100),(5,'Goal_nb_conversions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',2),(5,'Goal_nb_visits_converted',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',2),(5,'Goal_revenue',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',43),(5,'max_actions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',7),(5,'max_actions_returning',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'nb_actions',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',8),(5,'nb_actions_returning',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'nb_uniq_visitors',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'nb_visits',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',2),(5,'nb_visits_converted',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',2),(5,'nb_visits_converted_returning',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'nb_visits_returning',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Referers_distinctKeywords',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Referers_distinctSearchEngines',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Referers_distinctWebsites',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'Referers_distinctWebsitesUrls',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(5,'sum_visit_length',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1621),(5,'UserCountry_distinctCountries',1,'2012-03-01','2012-03-31',3,'2013-10-08 21:55:44',1),(6,'done',1,'2012-03-04','2012-03-04',1,'2013-10-08 21:55:43',1),(7,'done',1,'2012-03-07','2012-03-07',1,'2013-10-08 21:55:43',1),(8,'done',1,'2012-03-08','2012-03-08',1,'2013-10-08 21:55:43',1),(9,'done',1,'2012-03-09','2012-03-09',1,'2013-10-08 21:55:43',1),(10,'done',1,'2012-03-10','2012-03-10',1,'2013-10-08 21:55:43',1),(11,'done',1,'2012-03-11','2012-03-11',1,'2013-10-08 21:55:43',1),(12,'done',1,'2012-03-12','2012-03-12',1,'2013-10-08 21:55:43',1),(13,'done',1,'2012-03-13','2012-03-13',1,'2013-10-08 21:55:43',1),(14,'done',1,'2012-03-14','2012-03-14',1,'2013-10-08 21:55:43',1),(15,'done',1,'2012-03-15','2012-03-15',1,'2013-10-08 21:55:43',1),(16,'done',1,'2012-03-16','2012-03-16',1,'2013-10-08 21:55:43',1),(17,'done',1,'2012-03-17','2012-03-17',1,'2013-10-08 21:55:43',1),(18,'done',1,'2012-03-18','2012-03-18',1,'2013-10-08 21:55:43',1),(19,'done',1,'2012-03-19','2012-03-19',1,'2013-10-08 21:55:43',1),(20,'done',1,'2012-03-20','2012-03-20',1,'2013-10-08 21:55:43',1),(21,'done',1,'2012-03-21','2012-03-21',1,'2013-10-08 21:55:43',1),(22,'done',1,'2012-03-22','2012-03-22',1,'2013-10-08 21:55:43',1),(23,'done',1,'2012-03-23','2012-03-23',1,'2013-10-08 21:55:43',1),(24,'done',1,'2012-03-24','2012-03-24',1,'2013-10-08 21:55:43',1),(25,'done',1,'2012-03-25','2012-03-25',1,'2013-10-08 21:55:43',1),(26,'done',1,'2012-03-26','2012-03-26',1,'2013-10-08 21:55:43',1),(27,'done',1,'2012-03-27','2012-03-27',1,'2013-10-08 21:55:44',1),(28,'done',1,'2012-03-28','2012-03-28',1,'2013-10-08 21:55:44',1),(29,'done',1,'2012-03-29','2012-03-29',1,'2013-10-08 21:55:44',1),(30,'done',1,'2012-03-30','2012-03-30',1,'2013-10-08 21:55:44',1),(31,'done',1,'2012-03-31','2012-03-31',1,'2013-10-08 21:55:44',1),(32,'Actions_nb_downloads',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Actions_nb_hits_with_time_generation',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',4),(32,'Actions_nb_outlinks',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',3),(32,'Actions_nb_pageviews',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',4),(32,'Actions_nb_uniq_downloads',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Actions_nb_uniq_outlinks',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',2),(32,'Actions_nb_uniq_pageviews',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',4),(32,'Actions_sum_time_generation',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',0.62),(32,'bounce_count',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'bounce_count_returning',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'done',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_1_conversion_rate',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',50),(32,'Goal_1_nb_conversions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_1_nb_visits_converted',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_1_revenue',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',42),(32,'Goal_2_conversion_rate',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',50),(32,'Goal_2_nb_conversions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_2_nb_visits_converted',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_2_revenue',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Goal_conversion_rate',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',100),(32,'Goal_nb_conversions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',2),(32,'Goal_nb_visits_converted',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',2),(32,'Goal_revenue',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',43),(32,'max_actions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',7),(32,'max_actions_returning',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'nb_actions',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',8),(32,'nb_actions_returning',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'nb_uniq_visitors',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'nb_visits',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',2),(32,'nb_visits_converted',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',2),(32,'nb_visits_converted_returning',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'nb_visits_returning',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Referers_distinctKeywords',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Referers_distinctSearchEngines',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Referers_distinctWebsites',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'Referers_distinctWebsitesUrls',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1),(32,'sum_visit_length',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1621),(32,'UserCountry_distinctCountries',1,'2012-03-01','2012-03-07',2,'2013-10-08 21:55:46',1);
+/*!40000 ALTER TABLE `archive_numeric_2012_03` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_archive_numeric_2012_04`
+-- Table structure for table `archive_numeric_2012_04`
--
-DROP TABLE IF EXISTS `piwiktests_archive_numeric_2012_04`;
+DROP TABLE IF EXISTS `archive_numeric_2012_04`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_archive_numeric_2012_04` (
+CREATE TABLE `archive_numeric_2012_04` (
`idarchive` int(10) unsigned NOT NULL,
`name` varchar(255) NOT NULL,
`idsite` int(10) unsigned DEFAULT NULL,
@@ -159,23 +159,23 @@ CREATE TABLE `piwiktests_archive_numeric_2012_04` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_archive_numeric_2012_04`
+-- Dumping data for table `archive_numeric_2012_04`
--
-LOCK TABLES `piwiktests_archive_numeric_2012_04` WRITE;
-/*!40000 ALTER TABLE `piwiktests_archive_numeric_2012_04` DISABLE KEYS */;
-INSERT INTO `piwiktests_archive_numeric_2012_04` VALUES (1,'done',1,'2012-04-01','2012-04-30',3,'2013-10-08 21:55:45',1),(2,'done',1,'2012-04-01','2012-04-01',1,'2013-10-08 21:55:45',1),(3,'done',1,'2012-04-02','2012-04-02',1,'2013-10-08 21:55:45',1),(4,'done',1,'2012-04-03','2012-04-03',1,'2013-10-08 21:55:45',1),(5,'done',1,'2012-04-04','2012-04-04',1,'2013-10-08 21:55:45',1),(6,'done',1,'2012-04-05','2012-04-05',1,'2013-10-08 21:55:45',1),(7,'done',1,'2012-04-06','2012-04-06',1,'2013-10-08 21:55:45',1),(8,'done',1,'2012-04-07','2012-04-07',1,'2013-10-08 21:55:45',1),(9,'done',1,'2012-04-08','2012-04-08',1,'2013-10-08 21:55:45',1),(10,'done',1,'2012-04-09','2012-04-09',1,'2013-10-08 21:55:45',1),(11,'done',1,'2012-04-10','2012-04-10',1,'2013-10-08 21:55:45',1),(12,'done',1,'2012-04-11','2012-04-11',1,'2013-10-08 21:55:45',1),(13,'done',1,'2012-04-12','2012-04-12',1,'2013-10-08 21:55:45',1),(14,'done',1,'2012-04-13','2012-04-13',1,'2013-10-08 21:55:45',1),(15,'done',1,'2012-04-14','2012-04-14',1,'2013-10-08 21:55:45',1),(16,'done',1,'2012-04-15','2012-04-15',1,'2013-10-08 21:55:45',1),(17,'done',1,'2012-04-16','2012-04-16',1,'2013-10-08 21:55:45',1),(18,'done',1,'2012-04-17','2012-04-17',1,'2013-10-08 21:55:45',1),(19,'done',1,'2012-04-18','2012-04-18',1,'2013-10-08 21:55:45',1),(20,'done',1,'2012-04-19','2012-04-19',1,'2013-10-08 21:55:45',1),(21,'done',1,'2012-04-20','2012-04-20',1,'2013-10-08 21:55:45',1),(22,'done',1,'2012-04-21','2012-04-21',1,'2013-10-08 21:55:45',1),(23,'done',1,'2012-04-22','2012-04-22',1,'2013-10-08 21:55:45',1),(24,'done',1,'2012-04-23','2012-04-23',1,'2013-10-08 21:55:45',1),(25,'done',1,'2012-04-24','2012-04-24',1,'2013-10-08 21:55:45',1),(26,'done',1,'2012-04-25','2012-04-25',1,'2013-10-08 21:55:45',1),(27,'done',1,'2012-04-26','2012-04-26',1,'2013-10-08 21:55:45',1),(28,'done',1,'2012-04-27','2012-04-27',1,'2013-10-08 21:55:45',1),(29,'done',1,'2012-04-28','2012-04-28',1,'2013-10-08 21:55:45',1),(30,'done',1,'2012-04-29','2012-04-29',1,'2013-10-08 21:55:45',1),(31,'done',1,'2012-04-30','2012-04-30',1,'2013-10-08 21:55:45',1);
-/*!40000 ALTER TABLE `piwiktests_archive_numeric_2012_04` ENABLE KEYS */;
+LOCK TABLES `archive_numeric_2012_04` WRITE;
+/*!40000 ALTER TABLE `archive_numeric_2012_04` DISABLE KEYS */;
+INSERT INTO `archive_numeric_2012_04` VALUES (1,'done',1,'2012-04-01','2012-04-30',3,'2013-10-08 21:55:45',1),(2,'done',1,'2012-04-01','2012-04-01',1,'2013-10-08 21:55:45',1),(3,'done',1,'2012-04-02','2012-04-02',1,'2013-10-08 21:55:45',1),(4,'done',1,'2012-04-03','2012-04-03',1,'2013-10-08 21:55:45',1),(5,'done',1,'2012-04-04','2012-04-04',1,'2013-10-08 21:55:45',1),(6,'done',1,'2012-04-05','2012-04-05',1,'2013-10-08 21:55:45',1),(7,'done',1,'2012-04-06','2012-04-06',1,'2013-10-08 21:55:45',1),(8,'done',1,'2012-04-07','2012-04-07',1,'2013-10-08 21:55:45',1),(9,'done',1,'2012-04-08','2012-04-08',1,'2013-10-08 21:55:45',1),(10,'done',1,'2012-04-09','2012-04-09',1,'2013-10-08 21:55:45',1),(11,'done',1,'2012-04-10','2012-04-10',1,'2013-10-08 21:55:45',1),(12,'done',1,'2012-04-11','2012-04-11',1,'2013-10-08 21:55:45',1),(13,'done',1,'2012-04-12','2012-04-12',1,'2013-10-08 21:55:45',1),(14,'done',1,'2012-04-13','2012-04-13',1,'2013-10-08 21:55:45',1),(15,'done',1,'2012-04-14','2012-04-14',1,'2013-10-08 21:55:45',1),(16,'done',1,'2012-04-15','2012-04-15',1,'2013-10-08 21:55:45',1),(17,'done',1,'2012-04-16','2012-04-16',1,'2013-10-08 21:55:45',1),(18,'done',1,'2012-04-17','2012-04-17',1,'2013-10-08 21:55:45',1),(19,'done',1,'2012-04-18','2012-04-18',1,'2013-10-08 21:55:45',1),(20,'done',1,'2012-04-19','2012-04-19',1,'2013-10-08 21:55:45',1),(21,'done',1,'2012-04-20','2012-04-20',1,'2013-10-08 21:55:45',1),(22,'done',1,'2012-04-21','2012-04-21',1,'2013-10-08 21:55:45',1),(23,'done',1,'2012-04-22','2012-04-22',1,'2013-10-08 21:55:45',1),(24,'done',1,'2012-04-23','2012-04-23',1,'2013-10-08 21:55:45',1),(25,'done',1,'2012-04-24','2012-04-24',1,'2013-10-08 21:55:45',1),(26,'done',1,'2012-04-25','2012-04-25',1,'2013-10-08 21:55:45',1),(27,'done',1,'2012-04-26','2012-04-26',1,'2013-10-08 21:55:45',1),(28,'done',1,'2012-04-27','2012-04-27',1,'2013-10-08 21:55:45',1),(29,'done',1,'2012-04-28','2012-04-28',1,'2013-10-08 21:55:45',1),(30,'done',1,'2012-04-29','2012-04-29',1,'2013-10-08 21:55:45',1),(31,'done',1,'2012-04-30','2012-04-30',1,'2013-10-08 21:55:45',1);
+/*!40000 ALTER TABLE `archive_numeric_2012_04` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_goal`
+-- Table structure for table `goal`
--
-DROP TABLE IF EXISTS `piwiktests_goal`;
+DROP TABLE IF EXISTS `goal`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_goal` (
+CREATE TABLE `goal` (
`idsite` int(11) NOT NULL,
`idgoal` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
@@ -191,23 +191,23 @@ CREATE TABLE `piwiktests_goal` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_goal`
+-- Dumping data for table `goal`
--
-LOCK TABLES `piwiktests_goal` WRITE;
-/*!40000 ALTER TABLE `piwiktests_goal` DISABLE KEYS */;
-INSERT INTO `piwiktests_goal` VALUES (1,1,'triggered js','manually','','',0,0,0,0),(1,2,'matching purchase.htm','url','(.*)store\\/purchase\\.(.*)','regex',0,0,1,0);
-/*!40000 ALTER TABLE `piwiktests_goal` ENABLE KEYS */;
+LOCK TABLES `goal` WRITE;
+/*!40000 ALTER TABLE `goal` DISABLE KEYS */;
+INSERT INTO `goal` VALUES (1,1,'triggered js','manually','','',0,0,0,0),(1,2,'matching purchase.htm','url','(.*)store\\/purchase\\.(.*)','regex',0,0,1,0);
+/*!40000 ALTER TABLE `goal` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_log_action`
+-- Table structure for table `log_action`
--
-DROP TABLE IF EXISTS `piwiktests_log_action`;
+DROP TABLE IF EXISTS `log_action`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_log_action` (
+CREATE TABLE `log_action` (
`idaction` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` text,
`hash` int(10) unsigned NOT NULL,
@@ -219,23 +219,23 @@ CREATE TABLE `piwiktests_log_action` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_log_action`
+-- Dumping data for table `log_action`
--
-LOCK TABLES `piwiktests_log_action` WRITE;
-/*!40000 ALTER TABLE `piwiktests_log_action` DISABLE KEYS */;
-INSERT INTO `piwiktests_log_action` VALUES (1,'incredible title!',1144878801,4,NULL),(2,'example.org/index.htm?parameter=Should display',2166859444,1,0),(3,'Second page view - should be registered as URL',2682029514,4,NULL),(4,'example.org/',1864320163,1,0),(5,'http://dev.piwik.org/svn',2559417213,2,NULL),(6,'http://piwik.org/path/again/latest.zip',28974788,3,NULL),(7,'http://outlinks.org/other_outlink',3160118093,2,NULL),(8,'Looking at homepage (again)...',3922357482,4,NULL),(9,'example.org/index.htm',1534659805,1,0),(10,'Checkout/Purchasing...',2307476306,4,NULL),(11,'example.org/store/purchase.htm',795443427,1,0);
-/*!40000 ALTER TABLE `piwiktests_log_action` ENABLE KEYS */;
+LOCK TABLES `log_action` WRITE;
+/*!40000 ALTER TABLE `log_action` DISABLE KEYS */;
+INSERT INTO `log_action` VALUES (1,'incredible title!',1144878801,4,NULL),(2,'example.org/index.htm?parameter=Should display',2166859444,1,0),(3,'Second page view - should be registered as URL',2682029514,4,NULL),(4,'example.org/',1864320163,1,0),(5,'http://dev.piwik.org/svn',2559417213,2,NULL),(6,'http://piwik.org/path/again/latest.zip',28974788,3,NULL),(7,'http://outlinks.org/other_outlink',3160118093,2,NULL),(8,'Looking at homepage (again)...',3922357482,4,NULL),(9,'example.org/index.htm',1534659805,1,0),(10,'Checkout/Purchasing...',2307476306,4,NULL),(11,'example.org/store/purchase.htm',795443427,1,0);
+/*!40000 ALTER TABLE `log_action` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_log_conversion`
+-- Table structure for table `log_conversion`
--
-DROP TABLE IF EXISTS `piwiktests_log_conversion`;
+DROP TABLE IF EXISTS `log_conversion`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_log_conversion` (
+CREATE TABLE `log_conversion` (
`idvisit` int(10) unsigned NOT NULL,
`idsite` int(10) unsigned NOT NULL,
`idvisitor` binary(8) NOT NULL,
@@ -282,23 +282,23 @@ CREATE TABLE `piwiktests_log_conversion` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_log_conversion`
+-- Dumping data for table `log_conversion`
--
-LOCK TABLES `piwiktests_log_conversion` WRITE;
-/*!40000 ALTER TABLE `piwiktests_log_conversion` DISABLE KEYS */;
-INSERT INTO `piwiktests_log_conversion` VALUES (1,1,'¬¬nÂ5','2012-03-06 11:40:33',NULL,NULL,'2012-03-06',3,'referer.com','',0,1,0,0,'fr',NULL,NULL,NULL,NULL,'http://example.org/',1,0,NULL,NULL,42,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,1,'¬¬nÂ5','2012-03-06 12:22:33',11,8,'2012-03-06',2,'Yahoo!','purchase',1,2,0,0,'fr',NULL,NULL,NULL,NULL,'http://example.org/store/purchase.htm',2,0,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-/*!40000 ALTER TABLE `piwiktests_log_conversion` ENABLE KEYS */;
+LOCK TABLES `log_conversion` WRITE;
+/*!40000 ALTER TABLE `log_conversion` DISABLE KEYS */;
+INSERT INTO `log_conversion` VALUES (1,1,'¬¬nÂ5','2012-03-06 11:40:33',NULL,NULL,'2012-03-06',3,'referer.com','',0,1,0,0,'fr',NULL,NULL,NULL,NULL,'http://example.org/',1,0,NULL,NULL,42,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,1,'¬¬nÂ5','2012-03-06 12:22:33',11,8,'2012-03-06',2,'Yahoo!','purchase',1,2,0,0,'fr',NULL,NULL,NULL,NULL,'http://example.org/store/purchase.htm',2,0,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+/*!40000 ALTER TABLE `log_conversion` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_log_conversion_item`
+-- Table structure for table `log_conversion_item`
--
-DROP TABLE IF EXISTS `piwiktests_log_conversion_item`;
+DROP TABLE IF EXISTS `log_conversion_item`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_log_conversion_item` (
+CREATE TABLE `log_conversion_item` (
`idsite` int(10) unsigned NOT NULL,
`idvisitor` binary(8) NOT NULL,
`server_time` datetime NOT NULL,
@@ -320,22 +320,22 @@ CREATE TABLE `piwiktests_log_conversion_item` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_log_conversion_item`
+-- Dumping data for table `log_conversion_item`
--
-LOCK TABLES `piwiktests_log_conversion_item` WRITE;
-/*!40000 ALTER TABLE `piwiktests_log_conversion_item` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_log_conversion_item` ENABLE KEYS */;
+LOCK TABLES `log_conversion_item` WRITE;
+/*!40000 ALTER TABLE `log_conversion_item` DISABLE KEYS */;
+/*!40000 ALTER TABLE `log_conversion_item` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_log_link_visit_action`
+-- Table structure for table `log_link_visit_action`
--
-DROP TABLE IF EXISTS `piwiktests_log_link_visit_action`;
+DROP TABLE IF EXISTS `log_link_visit_action`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_log_link_visit_action` (
+CREATE TABLE `log_link_visit_action` (
`idlink_va` int(11) unsigned NOT NULL AUTO_INCREMENT,
`idsite` int(10) unsigned NOT NULL,
`idvisitor` binary(8) NOT NULL,
@@ -364,23 +364,23 @@ CREATE TABLE `piwiktests_log_link_visit_action` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_log_link_visit_action`
+-- Dumping data for table `log_link_visit_action`
--
-LOCK TABLES `piwiktests_log_link_visit_action` WRITE;
-/*!40000 ALTER TABLE `piwiktests_log_link_visit_action` DISABLE KEYS */;
-INSERT INTO `piwiktests_log_link_visit_action` VALUES (1,1,'¬¬nÂ5','2012-03-06 11:22:33',1,2,0,1,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,234),(2,1,'¬¬nÂ5','2012-03-06 11:25:33',1,4,2,3,1,180,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,224),(3,1,'¬¬nÂ5','2012-03-06 11:28:33',1,5,4,NULL,3,180,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(4,1,'¬¬nÂ5','2012-03-06 11:34:33',1,6,5,NULL,3,360,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(5,1,'¬¬nÂ5','2012-03-06 11:35:45',1,7,6,NULL,3,72,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(6,1,'¬¬nÂ5','2012-03-06 11:37:33',1,5,7,NULL,3,108,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(7,1,'¬¬nÂ5','2012-03-06 11:49:33',1,9,5,8,3,180,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,23),(8,1,'¬¬nÂ5','2012-03-06 12:22:33',2,11,0,10,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,134);
-/*!40000 ALTER TABLE `piwiktests_log_link_visit_action` ENABLE KEYS */;
+LOCK TABLES `log_link_visit_action` WRITE;
+/*!40000 ALTER TABLE `log_link_visit_action` DISABLE KEYS */;
+INSERT INTO `log_link_visit_action` VALUES (1,1,'¬¬nÂ5','2012-03-06 11:22:33',1,2,0,1,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,234),(2,1,'¬¬nÂ5','2012-03-06 11:25:33',1,4,2,3,1,180,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,224),(3,1,'¬¬nÂ5','2012-03-06 11:28:33',1,5,4,NULL,3,180,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(4,1,'¬¬nÂ5','2012-03-06 11:34:33',1,6,5,NULL,3,360,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(5,1,'¬¬nÂ5','2012-03-06 11:35:45',1,7,6,NULL,3,72,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(6,1,'¬¬nÂ5','2012-03-06 11:37:33',1,5,7,NULL,3,108,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(7,1,'¬¬nÂ5','2012-03-06 11:49:33',1,9,5,8,3,180,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,23),(8,1,'¬¬nÂ5','2012-03-06 12:22:33',2,11,0,10,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,134);
+/*!40000 ALTER TABLE `log_link_visit_action` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_log_profiling`
+-- Table structure for table `log_profiling`
--
-DROP TABLE IF EXISTS `piwiktests_log_profiling`;
+DROP TABLE IF EXISTS `log_profiling`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_log_profiling` (
+CREATE TABLE `log_profiling` (
`query` text NOT NULL,
`count` int(10) unsigned DEFAULT NULL,
`sum_time_ms` float DEFAULT NULL,
@@ -389,22 +389,22 @@ CREATE TABLE `piwiktests_log_profiling` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_log_profiling`
+-- Dumping data for table `log_profiling`
--
-LOCK TABLES `piwiktests_log_profiling` WRITE;
-/*!40000 ALTER TABLE `piwiktests_log_profiling` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_log_profiling` ENABLE KEYS */;
+LOCK TABLES `log_profiling` WRITE;
+/*!40000 ALTER TABLE `log_profiling` DISABLE KEYS */;
+/*!40000 ALTER TABLE `log_profiling` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_log_visit`
+-- Table structure for table `log_visit`
--
-DROP TABLE IF EXISTS `piwiktests_log_visit`;
+DROP TABLE IF EXISTS `log_visit`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_log_visit` (
+CREATE TABLE `log_visit` (
`idvisit` int(10) unsigned NOT NULL AUTO_INCREMENT,
`idsite` int(10) unsigned NOT NULL,
`idvisitor` binary(8) NOT NULL,
@@ -474,23 +474,23 @@ CREATE TABLE `piwiktests_log_visit` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_log_visit`
+-- Dumping data for table `log_visit`
--
-LOCK TABLES `piwiktests_log_visit` WRITE;
-/*!40000 ALTER TABLE `piwiktests_log_visit` DISABLE KEYS */;
-INSERT INTO `piwiktests_log_visit` VALUES (1,1,'¬¬nÂ5','12:34:06',0,1,0,0,0,'2012-03-06 11:22:33','2012-03-06 11:49:33',9,8,2,1,7,0,1621,1,0,3,'referer.com','http://referer.com/page.htm?param=valuewith some spaces','','|hQâ²C^','WXP','XP','FF','3.6',0,NULL,NULL,'1024x768',0,1,1,0,0,0,0,0,0,1,'œ','fr','fr',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,1,'¬¬nÂ5','12:34:06',1,2,0,0,0,'2012-03-06 12:22:33','2012-03-06 12:22:33',11,10,11,10,1,0,0,1,0,2,'Yahoo!','http://search.yahoo.com/search?p=purchase','purchase','|hQâ²C^','WXP','XP','FF','3.6',0,NULL,NULL,'1024x768',0,1,1,0,0,0,0,0,0,1,'œ','fr','fr',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-/*!40000 ALTER TABLE `piwiktests_log_visit` ENABLE KEYS */;
+LOCK TABLES `log_visit` WRITE;
+/*!40000 ALTER TABLE `log_visit` DISABLE KEYS */;
+INSERT INTO `log_visit` VALUES (1,1,'¬¬nÂ5','12:34:06',0,1,0,0,0,'2012-03-06 11:22:33','2012-03-06 11:49:33',9,8,2,1,7,0,1621,1,0,3,'referer.com','http://referer.com/page.htm?param=valuewith some spaces','','|hQâ²C^','WXP','XP','FF','3.6',0,NULL,NULL,'1024x768',0,1,1,0,0,0,0,0,0,1,'œ','fr','fr',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,1,'¬¬nÂ5','12:34:06',1,2,0,0,0,'2012-03-06 12:22:33','2012-03-06 12:22:33',11,10,11,10,1,0,0,1,0,2,'Yahoo!','http://search.yahoo.com/search?p=purchase','purchase','|hQâ²C^','WXP','XP','FF','3.6',0,NULL,NULL,'1024x768',0,1,1,0,0,0,0,0,0,1,'œ','fr','fr',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+/*!40000 ALTER TABLE `log_visit` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_logger_api_call`
+-- Table structure for table `logger_api_call`
--
-DROP TABLE IF EXISTS `piwiktests_logger_api_call`;
+DROP TABLE IF EXISTS `logger_api_call`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_logger_api_call` (
+CREATE TABLE `logger_api_call` (
`idlogger_api_call` int(10) unsigned NOT NULL AUTO_INCREMENT,
`class_name` varchar(255) DEFAULT NULL,
`method_name` varchar(255) DEFAULT NULL,
@@ -505,22 +505,22 @@ CREATE TABLE `piwiktests_logger_api_call` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_logger_api_call`
+-- Dumping data for table `logger_api_call`
--
-LOCK TABLES `piwiktests_logger_api_call` WRITE;
-/*!40000 ALTER TABLE `piwiktests_logger_api_call` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_logger_api_call` ENABLE KEYS */;
+LOCK TABLES `logger_api_call` WRITE;
+/*!40000 ALTER TABLE `logger_api_call` DISABLE KEYS */;
+/*!40000 ALTER TABLE `logger_api_call` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_logger_error`
+-- Table structure for table `logger_error`
--
-DROP TABLE IF EXISTS `piwiktests_logger_error`;
+DROP TABLE IF EXISTS `logger_error`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_logger_error` (
+CREATE TABLE `logger_error` (
`idlogger_error` int(10) unsigned NOT NULL AUTO_INCREMENT,
`timestamp` timestamp NULL DEFAULT NULL,
`message` text,
@@ -533,22 +533,22 @@ CREATE TABLE `piwiktests_logger_error` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_logger_error`
+-- Dumping data for table `logger_error`
--
-LOCK TABLES `piwiktests_logger_error` WRITE;
-/*!40000 ALTER TABLE `piwiktests_logger_error` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_logger_error` ENABLE KEYS */;
+LOCK TABLES `logger_error` WRITE;
+/*!40000 ALTER TABLE `logger_error` DISABLE KEYS */;
+/*!40000 ALTER TABLE `logger_error` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_logger_exception`
+-- Table structure for table `logger_exception`
--
-DROP TABLE IF EXISTS `piwiktests_logger_exception`;
+DROP TABLE IF EXISTS `logger_exception`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_logger_exception` (
+CREATE TABLE `logger_exception` (
`idlogger_exception` int(10) unsigned NOT NULL AUTO_INCREMENT,
`timestamp` timestamp NULL DEFAULT NULL,
`message` text,
@@ -561,22 +561,22 @@ CREATE TABLE `piwiktests_logger_exception` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_logger_exception`
+-- Dumping data for table `logger_exception`
--
-LOCK TABLES `piwiktests_logger_exception` WRITE;
-/*!40000 ALTER TABLE `piwiktests_logger_exception` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_logger_exception` ENABLE KEYS */;
+LOCK TABLES `logger_exception` WRITE;
+/*!40000 ALTER TABLE `logger_exception` DISABLE KEYS */;
+/*!40000 ALTER TABLE `logger_exception` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_logger_message`
+-- Table structure for table `logger_message`
--
-DROP TABLE IF EXISTS `piwiktests_logger_message`;
+DROP TABLE IF EXISTS `logger_message`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_logger_message` (
+CREATE TABLE `logger_message` (
`idlogger_message` int(10) unsigned NOT NULL AUTO_INCREMENT,
`timestamp` timestamp NULL DEFAULT NULL,
`message` text,
@@ -585,22 +585,22 @@ CREATE TABLE `piwiktests_logger_message` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_logger_message`
+-- Dumping data for table `logger_message`
--
-LOCK TABLES `piwiktests_logger_message` WRITE;
-/*!40000 ALTER TABLE `piwiktests_logger_message` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_logger_message` ENABLE KEYS */;
+LOCK TABLES `logger_message` WRITE;
+/*!40000 ALTER TABLE `logger_message` DISABLE KEYS */;
+/*!40000 ALTER TABLE `logger_message` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_option`
+-- Table structure for table `option`
--
-DROP TABLE IF EXISTS `piwiktests_option`;
+DROP TABLE IF EXISTS `option`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_option` (
+CREATE TABLE `option` (
`option_name` varchar(255) NOT NULL,
`option_value` longtext NOT NULL,
`autoload` tinyint(4) NOT NULL DEFAULT '1',
@@ -610,23 +610,23 @@ CREATE TABLE `piwiktests_option` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_option`
+-- Dumping data for table `option`
--
-LOCK TABLES `piwiktests_option` WRITE;
-/*!40000 ALTER TABLE `piwiktests_option` DISABLE KEYS */;
-INSERT INTO `piwiktests_option` VALUES ('lastPurge_piwiktests_archive_blob_2012_03','1381269344',0),('lastPurge_piwiktests_archive_blob_2012_04','1381269345',0),('MobileMessaging_DelegatedManagement','false',0),('SitesManager_EnableSiteSpecificUserAgentExclude','',0),('version_Actions', '1.12',1),('version_Annotations', '1.12',1),('version_API', '1.12',1),('version_core', '1.12',1),('version_CoreAdminHome', '1.12',1),('version_CoreHome', '1.12',1),('version_CorePluginsAdmin', '1.12',1),('version_CoreUpdater', '1.12',1),('version_CustomVariables', '1.12',1),('version_Dashboard', '1.12',1),('version_DoNotTrack', '1.12',1),('version_ExampleAPI', '0.1',1),('version_ExamplePlugin', '0.1',1),('version_ExampleRssWidget', '0.1',1),('version_Feedback', '1.12',1),('version_Goals', '1.12',1),('version_ImageGraph', '1.12',1),('version_Installation', '1.12',1),('version_LanguagesManager', '1.12',1),('version_Live', '1.12',1),('version_Login', '1.12',1),('version_MobileMessaging', '1.12',1),('version_MultiSites', '1.12',1),('version_Overlay', '1.12',1),('version_PDFReports', '1.12',1),('version_PrivacyManager', '1.12',1),('version_Provider', '1.12',1),('version_Proxy', '1.12',1),('version_Referers', '1.12',1),('version_SegmentEditor', '1.12',1),('version_SEO', '1.12',1),('version_SitesManager', '1.12',1),('version_Transitions', '1.12',1),('version_UserCountry', '1.12',1),('version_UserCountryMap', '1.12',1),('version_UserSettings', '1.12',1),('version_UsersManager', '1.12',1),('version_VisitFrequency', '1.12',1),('version_VisitorGenerator', '1.12',1),('version_VisitorInterest', '1.12',1),('version_VisitsSummary', '1.12',1),('version_VisitTime', '1.12',1),('version_Widgetize', '1.12',1);
-/*!40000 ALTER TABLE `piwiktests_option` ENABLE KEYS */;
+LOCK TABLES `option` WRITE;
+/*!40000 ALTER TABLE `option` DISABLE KEYS */;
+INSERT INTO `option` VALUES ('lastPurge_archive_blob_2012_03','1381269344',0),('lastPurge_archive_blob_2012_04','1381269345',0),('MobileMessaging_DelegatedManagement','false',0),('SitesManager_EnableSiteSpecificUserAgentExclude','',0),('version_Actions', '1.12',1),('version_Annotations', '1.12',1),('version_API', '1.12',1),('version_core', '1.12',1),('version_CoreAdminHome', '1.12',1),('version_CoreHome', '1.12',1),('version_CorePluginsAdmin', '1.12',1),('version_CoreUpdater', '1.12',1),('version_CustomVariables', '1.12',1),('version_Dashboard', '1.12',1),('version_DoNotTrack', '1.12',1),('version_ExampleAPI', '0.1',1),('version_ExamplePlugin', '0.1',1),('version_ExampleRssWidget', '0.1',1),('version_Feedback', '1.12',1),('version_Goals', '1.12',1),('version_ImageGraph', '1.12',1),('version_Installation', '1.12',1),('version_LanguagesManager', '1.12',1),('version_Live', '1.12',1),('version_Login', '1.12',1),('version_MobileMessaging', '1.12',1),('version_MultiSites', '1.12',1),('version_Overlay', '1.12',1),('version_PDFReports', '1.12',1),('version_PrivacyManager', '1.12',1),('version_Provider', '1.12',1),('version_Proxy', '1.12',1),('version_Referers', '1.12',1),('version_SegmentEditor', '1.12',1),('version_SEO', '1.12',1),('version_SitesManager', '1.12',1),('version_Transitions', '1.12',1),('version_UserCountry', '1.12',1),('version_UserCountryMap', '1.12',1),('version_UserSettings', '1.12',1),('version_UsersManager', '1.12',1),('version_VisitFrequency', '1.12',1),('version_VisitorGenerator', '1.12',1),('version_VisitorInterest', '1.12',1),('version_VisitsSummary', '1.12',1),('version_VisitTime', '1.12',1),('version_Widgetize', '1.12',1);
+/*!40000 ALTER TABLE `option` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_report`
+-- Table structure for table `report`
--
-DROP TABLE IF EXISTS `piwiktests_report`;
+DROP TABLE IF EXISTS `report`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_report` (
+CREATE TABLE `report` (
`idreport` int(11) NOT NULL AUTO_INCREMENT,
`idsite` int(11) NOT NULL,
`login` varchar(100) NOT NULL,
@@ -646,22 +646,22 @@ CREATE TABLE `piwiktests_report` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_report`
+-- Dumping data for table `report`
--
-LOCK TABLES `piwiktests_report` WRITE;
-/*!40000 ALTER TABLE `piwiktests_report` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_report` ENABLE KEYS */;
+LOCK TABLES `report` WRITE;
+/*!40000 ALTER TABLE `report` DISABLE KEYS */;
+/*!40000 ALTER TABLE `report` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_segment`
+-- Table structure for table `segment`
--
-DROP TABLE IF EXISTS `piwiktests_segment`;
+DROP TABLE IF EXISTS `segment`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_segment` (
+CREATE TABLE `segment` (
`idsegment` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`definition` text NOT NULL,
@@ -677,22 +677,22 @@ CREATE TABLE `piwiktests_segment` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_segment`
+-- Dumping data for table `segment`
--
-LOCK TABLES `piwiktests_segment` WRITE;
-/*!40000 ALTER TABLE `piwiktests_segment` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_segment` ENABLE KEYS */;
+LOCK TABLES `segment` WRITE;
+/*!40000 ALTER TABLE `segment` DISABLE KEYS */;
+/*!40000 ALTER TABLE `segment` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_session`
+-- Table structure for table `session`
--
-DROP TABLE IF EXISTS `piwiktests_session`;
+DROP TABLE IF EXISTS `session`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_session` (
+CREATE TABLE `session` (
`id` char(32) NOT NULL,
`modified` int(11) DEFAULT NULL,
`lifetime` int(11) DEFAULT NULL,
@@ -702,22 +702,22 @@ CREATE TABLE `piwiktests_session` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_session`
+-- Dumping data for table `session`
--
-LOCK TABLES `piwiktests_session` WRITE;
-/*!40000 ALTER TABLE `piwiktests_session` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_session` ENABLE KEYS */;
+LOCK TABLES `session` WRITE;
+/*!40000 ALTER TABLE `session` DISABLE KEYS */;
+/*!40000 ALTER TABLE `session` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_site`
+-- Table structure for table `site`
--
-DROP TABLE IF EXISTS `piwiktests_site`;
+DROP TABLE IF EXISTS `site`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_site` (
+CREATE TABLE `site` (
`idsite` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(90) NOT NULL,
`main_url` varchar(255) NOT NULL,
@@ -738,23 +738,23 @@ CREATE TABLE `piwiktests_site` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_site`
+-- Dumping data for table `site`
--
-LOCK TABLES `piwiktests_site` WRITE;
-/*!40000 ALTER TABLE `piwiktests_site` DISABLE KEYS */;
-INSERT INTO `piwiktests_site` VALUES (1,'new name','http://site.com','2010-03-05 16:22:33',0,0,'','','UTC','USD','','excluded_parameter,anotherParameter','mozilla','',0);
-/*!40000 ALTER TABLE `piwiktests_site` ENABLE KEYS */;
+LOCK TABLES `site` WRITE;
+/*!40000 ALTER TABLE `site` DISABLE KEYS */;
+INSERT INTO `site` VALUES (1,'new name','http://site.com','2010-03-05 16:22:33',0,0,'','','UTC','USD','','excluded_parameter,anotherParameter','mozilla','',0);
+/*!40000 ALTER TABLE `site` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_site_url`
+-- Table structure for table `site_url`
--
-DROP TABLE IF EXISTS `piwiktests_site_url`;
+DROP TABLE IF EXISTS `site_url`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_site_url` (
+CREATE TABLE `site_url` (
`idsite` int(10) unsigned NOT NULL,
`url` varchar(255) NOT NULL,
PRIMARY KEY (`idsite`,`url`)
@@ -762,22 +762,22 @@ CREATE TABLE `piwiktests_site_url` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_site_url`
+-- Dumping data for table `site_url`
--
-LOCK TABLES `piwiktests_site_url` WRITE;
-/*!40000 ALTER TABLE `piwiktests_site_url` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_site_url` ENABLE KEYS */;
+LOCK TABLES `site_url` WRITE;
+/*!40000 ALTER TABLE `site_url` DISABLE KEYS */;
+/*!40000 ALTER TABLE `site_url` ENABLE KEYS */;
UNLOCK TABLES;
--
--- Table structure for table `piwiktests_user`
+-- Table structure for table `user`
--
-DROP TABLE IF EXISTS `piwiktests_user`;
+DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `piwiktests_user` (
+CREATE TABLE `user` (
`login` varchar(100) NOT NULL,
`password` char(32) NOT NULL,
`alias` varchar(45) NOT NULL,
@@ -790,12 +790,12 @@ CREATE TABLE `piwiktests_user` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Dumping data for table `piwiktests_user`
+-- Dumping data for table `user`
--
-LOCK TABLES `piwiktests_user` WRITE;
-/*!40000 ALTER TABLE `piwiktests_user` DISABLE KEYS */;
-/*!40000 ALTER TABLE `piwiktests_user` ENABLE KEYS */;
+LOCK TABLES `user` WRITE;
+/*!40000 ALTER TABLE `user` DISABLE KEYS */;
+/*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
diff --git a/tests/travis/prepare.sh b/tests/travis/prepare.sh
index db6a8f1c58..f6fd159ee9 100755
--- a/tests/travis/prepare.sh
+++ b/tests/travis/prepare.sh
@@ -13,7 +13,7 @@ fi
# Copy Piwik configuration
echo "Install config.ini.php"
-sed "s/PDO_MYSQL/${MYSQL_ADAPTER}/g" ./tests/PHPUnit/config.ini.travis.php > ./config/config.ini.php
+sed "s/PDO\\\MYSQL/${MYSQL_ADAPTER}/g" ./tests/PHPUnit/config.ini.travis.php > ./config/config.ini.php
# Prepare phpunit.xml
echo "Adjusting phpunit.xml"