diff --git a/composer.json b/composer.json
index de87087718e..4347967b196 100644
--- a/composer.json
+++ b/composer.json
@@ -25,7 +25,7 @@
"symfony/console": ">=v2.3.5",
"tedivm/jshrink": "v0.5.1",
"mustangostang/spyc": "0.5.*",
- "piwik/device-detector": "1.0"
+ "piwik/device-detector": "2.*"
},
"require-dev": {
"phpunit/phpunit": "4.*"
diff --git a/composer.lock b/composer.lock
index e6d9aecfb62..d4813ca0996 100644
--- a/composer.lock
+++ b/composer.lock
@@ -3,7 +3,7 @@
"This file locks the dependencies of your project to a known state",
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
],
- "hash": "6d358fe10eaef73ee1323cb06cd0e5c8",
+ "hash": "016b7b6646d1d3ec6d8b574b5a6c5561",
"packages": [
{
"name": "leafo/lessphp",
@@ -95,27 +95,30 @@
},
{
"name": "piwik/device-detector",
- "version": "1.0",
+ "version": "2.0",
"source": {
"type": "git",
"url": "https://github.com/piwik/device-detector.git",
- "reference": "ea7c5d8b76def0d8345a4eba59c5f98ec0109de6"
+ "reference": "863ae43f5c68c15ce110516a0f7b11477e2a01c0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/piwik/device-detector/zipball/ea7c5d8b76def0d8345a4eba59c5f98ec0109de6",
- "reference": "ea7c5d8b76def0d8345a4eba59c5f98ec0109de6",
+ "url": "https://api.github.com/repos/piwik/device-detector/zipball/863ae43f5c68c15ce110516a0f7b11477e2a01c0",
+ "reference": "863ae43f5c68c15ce110516a0f7b11477e2a01c0",
"shasum": ""
},
"require": {
"mustangostang/spyc": "*",
"php": ">=5.3.1"
},
+ "require-dev": {
+ "phpunit/phpunit": "4.0.*"
+ },
"type": "library",
"autoload": {
- "files": [
- "DeviceDetector.php"
- ]
+ "psr-4": {
+ "DeviceDetector\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -135,36 +138,38 @@
"parser",
"useragent"
],
- "time": "2014-04-03 08:59:48"
+ "time": "2014-05-29 20:51:28"
},
{
"name": "symfony/console",
- "version": "v2.4.4",
+ "version": "v2.5.0",
"target-dir": "Symfony/Component/Console",
"source": {
"type": "git",
"url": "https://github.com/symfony/Console.git",
- "reference": "2e452005b1e1d003d23702d227e23614679eb5ca"
+ "reference": "ef4ca73b0b3a10cbac653d3ca482d0cdd4502b2c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Console/zipball/2e452005b1e1d003d23702d227e23614679eb5ca",
- "reference": "2e452005b1e1d003d23702d227e23614679eb5ca",
+ "url": "https://api.github.com/repos/symfony/Console/zipball/ef4ca73b0b3a10cbac653d3ca482d0cdd4502b2c",
+ "reference": "ef4ca73b0b3a10cbac653d3ca482d0cdd4502b2c",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
+ "psr/log": "~1.0",
"symfony/event-dispatcher": "~2.1"
},
"suggest": {
+ "psr/log": "For using the console logger",
"symfony/event-dispatcher": ""
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.4-dev"
+ "dev-master": "2.5-dev"
}
},
"autoload": {
@@ -190,7 +195,7 @@
],
"description": "Symfony Console Component",
"homepage": "http://symfony.com",
- "time": "2014-04-27 13:34:57"
+ "time": "2014-05-22 08:54:24"
},
{
"name": "tedivm/jshrink",
@@ -294,16 +299,16 @@
"packages-dev": [
{
"name": "phpunit/php-code-coverage",
- "version": "2.0.6",
+ "version": "2.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "bccecf50645068b44f49a84009e2a0499a500b99"
+ "reference": "58401826c8cfc8fd689b60026e91c337df374bca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/bccecf50645068b44f49a84009e2a0499a500b99",
- "reference": "bccecf50645068b44f49a84009e2a0499a500b99",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/58401826c8cfc8fd689b60026e91c337df374bca",
+ "reference": "58401826c8cfc8fd689b60026e91c337df374bca",
"shasum": ""
},
"require": {
@@ -355,7 +360,7 @@
"testing",
"xunit"
],
- "time": "2014-04-30 09:01:21"
+ "time": "2014-05-26 14:55:24"
},
{
"name": "phpunit/php-file-iterator",
@@ -542,16 +547,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "4.1.0",
+ "version": "4.1.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "efb1b1334605594417a3bd466477772d06d460a8"
+ "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/efb1b1334605594417a3bd466477772d06d460a8",
- "reference": "efb1b1334605594417a3bd466477772d06d460a8",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/939cb801b3b2aa253aedd0b279f40bb8f35cec91",
+ "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91",
"shasum": ""
},
"require": {
@@ -612,20 +617,20 @@
"testing",
"xunit"
],
- "time": "2014-05-02 07:13:40"
+ "time": "2014-06-11 14:15:47"
},
{
"name": "phpunit/phpunit-mock-objects",
- "version": "2.1.0",
+ "version": "2.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "da0eb04d8ee95ec2898187e407e519c118d3d27c"
+ "reference": "1a894a16b6c15fcdc5ef2b110f0e6233952c9b0f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/da0eb04d8ee95ec2898187e407e519c118d3d27c",
- "reference": "da0eb04d8ee95ec2898187e407e519c118d3d27c",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/1a894a16b6c15fcdc5ef2b110f0e6233952c9b0f",
+ "reference": "1a894a16b6c15fcdc5ef2b110f0e6233952c9b0f",
"shasum": ""
},
"require": {
@@ -669,7 +674,7 @@
"mock",
"xunit"
],
- "time": "2014-05-02 07:04:11"
+ "time": "2014-06-07 16:22:57"
},
{
"name": "sebastian/comparator",
@@ -940,17 +945,17 @@
},
{
"name": "symfony/yaml",
- "version": "v2.4.4",
+ "version": "v2.5.0",
"target-dir": "Symfony/Component/Yaml",
"source": {
"type": "git",
"url": "https://github.com/symfony/Yaml.git",
- "reference": "65539ecde838f9c0d18b006b2101e3deb4b5c9ff"
+ "reference": "b4b09c68ec2f2727574544ef0173684281a5033c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Yaml/zipball/65539ecde838f9c0d18b006b2101e3deb4b5c9ff",
- "reference": "65539ecde838f9c0d18b006b2101e3deb4b5c9ff",
+ "url": "https://api.github.com/repos/symfony/Yaml/zipball/b4b09c68ec2f2727574544ef0173684281a5033c",
+ "reference": "b4b09c68ec2f2727574544ef0173684281a5033c",
"shasum": ""
},
"require": {
@@ -959,7 +964,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.4-dev"
+ "dev-master": "2.5-dev"
}
},
"autoload": {
@@ -985,7 +990,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "http://symfony.com",
- "time": "2014-04-18 20:37:09"
+ "time": "2014-05-16 14:25:18"
}
],
"aliases": [
diff --git a/core/CliMulti.php b/core/CliMulti.php
index af576f685db..8085631feb9 100644
--- a/core/CliMulti.php
+++ b/core/CliMulti.php
@@ -7,6 +7,7 @@
*/
namespace Piwik;
+use Piwik\CliMulti\CliPhp;
use Piwik\CliMulti\Output;
use Piwik\CliMulti\Process;
@@ -157,11 +158,17 @@ private function generateCommandId($command)
* What is missing under windows? Detection whether a process is still running in Process::isProcessStillRunning
* and how to send a process into background in start()
*/
- private function supportsAsync()
+ public function supportsAsync()
{
return Process::isSupported() && $this->findPhpBinary();
}
+ private function findPhpBinary()
+ {
+ $cliPhp = new CliPhp();
+ return $cliPhp->findPhpBinary();
+ }
+
private function cleanup()
{
foreach ($this->processes as $pid) {
@@ -204,36 +211,6 @@ public static function getTmpPath()
return SettingsPiwik::rewriteTmpPathWithInstanceId($dir);
}
- private function findPhpBinary()
- {
- if (defined('PHP_BINARY') && $this->isValidPhpType(PHP_BINARY)) {
- return PHP_BINARY;
- }
-
- $bin = '';
-
- if (!empty($_SERVER['_']) && Common::isPhpCliMode()) {
- $bin = $this->getPhpCommandIfValid($_SERVER['_']);
- }
-
- if (empty($bin) && !empty($_SERVER['argv'][0]) && Common::isPhpCliMode()) {
- $bin = $this->getPhpCommandIfValid($_SERVER['argv'][0]);
- }
-
- if (!$this->isValidPhpType($bin)) {
- $bin = shell_exec('which php');
- }
-
- if (!$this->isValidPhpType($bin)) {
- $bin = shell_exec('which php5');
- }
-
- if ($this->isValidPhpType($bin)) {
- return trim($bin);
- }
-
- return false;
- }
private function executeAsyncCli($url, Output $output, $cmdId)
{
@@ -280,23 +257,6 @@ private function appendTestmodeParamToUrlIfNeeded($url)
return $url;
}
- private function isValidPhpType($path)
- {
- return !empty($path)
- && false === strpos($path, 'fpm')
- && false === strpos($path, 'cgi')
- && false === strpos($path, 'phpunit');
- }
-
- private function getPhpCommandIfValid($path)
- {
- if (!empty($path) && is_executable($path)) {
- if (0 === strpos($path, PHP_BINDIR) && $this->isValidPhpType($path)) {
- return $path;
- }
- }
- }
-
/**
* @param array $piwikUrls
* @return array
@@ -316,4 +276,5 @@ private function requestUrls(array $piwikUrls)
return $results;
}
+
}
diff --git a/core/CliMulti/CliPhp.php b/core/CliMulti/CliPhp.php
new file mode 100644
index 00000000000..c7dd2884ec2
--- /dev/null
+++ b/core/CliMulti/CliPhp.php
@@ -0,0 +1,99 @@
+isValidPhpType(PHP_BINARY)) {
+ return PHP_BINARY;
+ }
+
+ if($this->isHhvmBinary(PHP_BINARY)) {
+ return PHP_BINARY . ' --php';
+ }
+ }
+
+ $bin = '';
+
+ if (!empty($_SERVER['_']) && Common::isPhpCliMode()) {
+ $bin = $this->getPhpCommandIfValid($_SERVER['_']);
+ }
+
+ if (empty($bin) && !empty($_SERVER['argv'][0]) && Common::isPhpCliMode()) {
+ $bin = $this->getPhpCommandIfValid($_SERVER['argv'][0]);
+ }
+
+ if (!$this->isValidPhpType($bin)) {
+ $bin = shell_exec('which php');
+ }
+
+ if (!$this->isValidPhpType($bin)) {
+ $bin = shell_exec('which php5');
+ }
+
+ if (!$this->isValidPhpType($bin)) {
+ return false;
+ }
+
+ $bin = trim($bin);
+
+ if (!$this->isValidPhpVersion($bin)) {
+ return false;
+ }
+ return $bin;
+ }
+
+ private function isHhvmBinary($bin)
+ {
+ return false !== strpos($bin, 'hhvm');
+ }
+
+ private function isValidPhpVersion($bin)
+ {
+ $cliVersion = $this->getPhpVersion($bin);
+ $isCliVersionValid = SystemCheck::isPhpVersionValid($cliVersion);
+ return $isCliVersionValid;
+ }
+
+ private function isValidPhpType($path)
+ {
+ return !empty($path)
+ && false === strpos($path, 'fpm')
+ && false === strpos($path, 'cgi')
+ && false === strpos($path, 'phpunit');
+ }
+
+ private function getPhpCommandIfValid($path)
+ {
+ if (!empty($path) && is_executable($path)) {
+ if (0 === strpos($path, PHP_BINDIR) && $this->isValidPhpType($path)) {
+ return $path;
+ }
+ }
+ }
+
+ /**
+ * @param $bin PHP binary
+ * @return string
+ */
+ private function getPhpVersion($bin)
+ {
+ $command = sprintf("%s -r 'echo phpversion();'", $bin);
+ $version = shell_exec($command);
+ return $version;
+ }
+}
diff --git a/core/CronArchive.php b/core/CronArchive.php
index 0a2903ac576..e9392298dc8 100644
--- a/core/CronArchive.php
+++ b/core/CronArchive.php
@@ -731,7 +731,7 @@ private function initCheckCli()
return;
}
$token_auth = Common::getRequestVar('token_auth', '', 'string');
- if ($token_auth != $this->token_auth
+ if ($token_auth !== $this->token_auth
|| strlen($token_auth) != 32
) {
die('You must specify the Super User token_auth as a parameter to this script, eg. ?token_auth=XYZ
if you wish to run this script through the browser.
diff --git a/core/DataAccess/ArchiveSelector.php b/core/DataAccess/ArchiveSelector.php
index cd7d0a044c2..72fb0faeb3e 100644
--- a/core/DataAccess/ArchiveSelector.php
+++ b/core/DataAccess/ArchiveSelector.php
@@ -146,9 +146,14 @@ protected static function getMostRecentIdArchiveFromResults(Segment $segment, $r
* '2010-01-01' => array(1,2,3)
* )
* )
+ * @throws
*/
static public function getArchiveIds($siteIds, $periods, $segment, $plugins, $isSkipAggregationOfSubTables = false)
{
+ if(empty($siteIds)) {
+ throw new \Exception("Website IDs could not be read from the request, ie. idSite=");
+ }
+
$getArchiveIdsSql = "SELECT idsite, name, date1, date2, MAX(idarchive) as idarchive
FROM %s
WHERE %s
diff --git a/core/DeviceDetectorCache.php b/core/DeviceDetectorCache.php
new file mode 100644
index 00000000000..70a6f68bb7d
--- /dev/null
+++ b/core/DeviceDetectorCache.php
@@ -0,0 +1,65 @@
+cleanupId($id);
+
+ if (array_key_exists($id, self::$staticCache)) {
+ return self::$staticCache[$id];
+ }
+
+ return parent::get($id);
+ }
+
+
+ /**
+ * A function to store content a cache entry.
+ *
+ * @param string $id The cache entry ID
+ * @param array $content The cache content
+ * @throws \Exception
+ * @return bool True if the entry was succesfully stored
+ */
+ public function set($id, $content)
+ {
+ if (empty($id)) {
+ return false;
+ }
+
+ $id = $this->cleanupId($id);
+
+ self::$staticCache[$id] = $content;
+
+ return parent::set($id, $content);
+ }
+}
diff --git a/core/DeviceDetectorFactory.php b/core/DeviceDetectorFactory.php
new file mode 100644
index 00000000000..c61da87a140
--- /dev/null
+++ b/core/DeviceDetectorFactory.php
@@ -0,0 +1,39 @@
+discardBotInformation();
+ $deviceDetector->setCache(new DeviceDetectorCache('tracker', 86400));
+ $deviceDetector->parse();
+
+ self::$deviceDetectorInstances[$userAgent] = $deviceDetector;
+
+ return $deviceDetector;
+ }
+
+}
diff --git a/core/Filechecks.php b/core/Filechecks.php
index ddfade4e6e3..ab25ae7d9d6 100644
--- a/core/Filechecks.php
+++ b/core/Filechecks.php
@@ -84,11 +84,11 @@ public static function dieIfDirectoriesNotWritable($directoriesToCheck = null)
// Also give the chown since the chmod is only 755
if (!SettingsServer::isWindows()) {
$realpath = Filesystem::realpath(PIWIK_INCLUDE_PATH . '/');
- $directoryList = "chown -R www-data:www-data " . $realpath . "
" . $directoryList;
+ $directoryList = "chown -R ". self::getUserAndGroup() ." " . $realpath . "
" . $directoryList;
}
if(function_exists('shell_exec')) {
- $currentUser = trim(shell_exec('whoami'));
+ $currentUser = self::getUser();
if(!empty($currentUser)) {
$optionalUserInfo = " (running as user '" . $currentUser . "')";
}
@@ -178,7 +178,7 @@ public static function getAutoUpdateMakeWritableMessage()
{
$realpath = Filesystem::realpath(PIWIK_INCLUDE_PATH . '/');
$message = '';
- $message .= "chown -R www-data:www-data " . $realpath . "
";
+ $message .= "chown -R ". self::getUserAndGroup() ." " . $realpath . "
";
$message .= "chmod -R 0755 " . $realpath . "
";
$message .= 'After you execute these commands (or change permissions via your FTP software), refresh the page and you should be able to use the "Automatic Update" feature.';
return $message;
@@ -198,9 +198,10 @@ public static function getErrorMessageMissingPermissions($path)
$message .= "On Windows, check that the folder is not read only and is writable.\n
You can try to execute:
";
} else {
- $message .= "For example, on a GNU/Linux server if your Apache httpd user
- is www-data, you can try to execute:
\n"
- . "chown -R www-data:www-data " . $path . "
";
+ $message .= "For example, on a GNU/Linux server if your Apache httpd user is "
+ . self::getUser()
+ . ", you can try to execute:
\n"
+ . "chown -R ". self::getUserAndGroup() ." " . $path . "
";
}
$message .= self::getMakeWritableCommand($path);
@@ -208,6 +209,29 @@ public static function getErrorMessageMissingPermissions($path)
return $message;
}
+ private static function getUserAndGroup()
+ {
+ $user = self::getUser();
+ if(!function_exists('shell_exec')) {
+ return $user . ':' . $user;
+ }
+
+ $group = trim(shell_exec('groups '. $user .' | cut -f3 -d" "'));
+
+ if(empty($group)) {
+ $group = 'www-data';
+ }
+ return $user . ':' . $group;
+ }
+
+ private static function getUser()
+ {
+ if(!function_exists('shell_exec')) {
+ return 'www-data';
+ }
+ return trim(shell_exec('whoami'));
+ }
+
/**
* Returns the help text displayed to suggest which command to run to give writable access to a file or directory
*
diff --git a/core/Plugin.php b/core/Plugin.php
index e9cbe2feaeb..967d23b0ec3 100644
--- a/core/Plugin.php
+++ b/core/Plugin.php
@@ -383,12 +383,29 @@ public static function getPluginNameFromBacktrace($backtrace)
{
foreach ($backtrace as $tracepoint) {
// try and discern the plugin name
- if (isset($tracepoint['class'])
- && preg_match("/Piwik\\\\Plugins\\\\([a-zA-Z_0-9]+)\\\\/", $tracepoint['class'], $matches)
- ) {
- return $matches[1];
+ if (isset($tracepoint['class'])) {
+ $className = self::getPluginNameFromNamespace($tracepoint['class']);
+ if ($className) {
+ return $className;
+ }
}
}
return false;
}
+
+ /**
+ * Extracts the plugin name from a namespace name or a fully qualified class name. Returns `false`
+ * if we can't find one.
+ *
+ * @param string $namespaceOrClassName The namespace or class string.
+ * @return string|false
+ */
+ public static function getPluginNameFromNamespace($namespaceOrClassName)
+ {
+ if (preg_match("/Piwik\\\\Plugins\\\\([a-zA-Z_0-9]+)\\\\/", $namespaceOrClassName, $matches)) {
+ return $matches[1];
+ } else {
+ return false;
+ }
+ }
}
diff --git a/core/Plugin/Controller.php b/core/Plugin/Controller.php
index 43e385f2639..b65823be58d 100644
--- a/core/Plugin/Controller.php
+++ b/core/Plugin/Controller.php
@@ -828,7 +828,9 @@ public function redirectToIndex($moduleToRedirect, $actionToRedirect, $websiteId
*/
protected function checkTokenInUrl()
{
- if (Common::getRequestVar('token_auth', false) != Piwik::getCurrentUserTokenAuth()) {
+ $requestTokenAuth = Common::getRequestVar('token_auth', false);
+ $currentUserTokenAuth = Piwik::getCurrentUserTokenAuth();
+ if ($requestTokenAuth !== $currentUserTokenAuth) {
throw new NoAccessException(Piwik::translate('General_ExceptionInvalidToken'));
}
}
diff --git a/core/Plugin/ControllerAdmin.php b/core/Plugin/ControllerAdmin.php
index 4254cdbb2c3..0212a3769c7 100644
--- a/core/Plugin/ControllerAdmin.php
+++ b/core/Plugin/ControllerAdmin.php
@@ -56,6 +56,7 @@ private static function notifyAnyInvalidPlugin()
$invalidPluginsWarning = Piwik::translate('CoreAdminHome_InvalidPluginsWarning', array(
self::getPiwikVersion(),
'' . implode(', ', $missingPlugins) . ''))
+ . "
"
. Piwik::translate('CoreAdminHome_InvalidPluginsYouCanUninstall', array(
'',
''
diff --git a/core/Plugin/Widgets.php b/core/Plugin/Widgets.php
index c2ea16f7cfd..201fe743f6f 100644
--- a/core/Plugin/Widgets.php
+++ b/core/Plugin/Widgets.php
@@ -1,6 +1,6 @@
socket = $dbInfo['port'];
} else {
$this->host = $dbInfo['host'];
- $this->port = $dbInfo['port'];
+ $this->port = (int)$dbInfo['port'];
$this->socket = null;
}
$this->dbname = $dbInfo['dbname'];
diff --git a/core/Tracker/VisitExcluded.php b/core/Tracker/VisitExcluded.php
index 19fa96dc4f0..586c874a0c7 100644
--- a/core/Tracker/VisitExcluded.php
+++ b/core/Tracker/VisitExcluded.php
@@ -8,8 +8,10 @@
*/
namespace Piwik\Tracker;
+use DeviceDetector\Parser\Bot;
use Piwik\Common;
use Piwik\Config;
+use Piwik\DeviceDetectorFactory;
use Piwik\IP;
use Piwik\Piwik;
@@ -73,9 +75,9 @@ public function isExcluded()
/**
* Triggered on every tracking request.
- *
+ *
* This event can be used to tell the Tracker not to record this particular action or visit.
- *
+ *
* @param bool &$excluded Whether the request should be excluded or not. Initialized
* to `false`. Event subscribers should set it to `true` in
* order to exclude the request.
@@ -147,32 +149,18 @@ protected function isPrefetchDetected()
* As a result, these sophisticated bots exhibit characteristics of
* browsers (cookies enabled, executing JavaScript, etc).
*
+ * @see \DeviceDetector\Parser\Bot
+ *
* @return boolean
*/
protected function isNonHumanBot()
{
$allowBots = $this->request->getParam('bots');
- return !$allowBots
- // Seen in the wild
- && (strpos($this->userAgent, 'Googlebot') !== false // Googlebot
- || strpos($this->userAgent, 'Google Web Preview') !== false // Google Instant
- || strpos($this->userAgent, 'AdsBot-Google') !== false // Google Adwords landing pages
- || strpos($this->userAgent, 'Google Page Speed Insights') !== false // #4049
- || strpos($this->userAgent, 'Google (+https://developers.google.com') !== false // Google Snippet https://developers.google.com/+/web/snippet/
- || strpos($this->userAgent, 'facebookexternalhit') !== false // http://www.facebook.com/externalhit_uatext.php
- || strpos($this->userAgent, 'baidu') !== false // Baidu
- || strpos($this->userAgent, 'bingbot') !== false // Bingbot
- || strpos($this->userAgent, 'BingPreview') !== false // BingPreview
- || strpos($this->userAgent, 'YottaaMonitor') !== false // Yottaa
- || strpos($this->userAgent, 'CloudFlare') !== false // CloudFlare-AlwaysOnline
+ $deviceDetector = DeviceDetectorFactory::getInstance($this->userAgent);
- // Added as they are popular bots
- || strpos($this->userAgent, 'pingdom') !== false // pingdom
- || strpos($this->userAgent, 'yandex') !== false // yandex
- || strpos($this->userAgent, 'exabot') !== false // Exabot
- || strpos($this->userAgent, 'sogou') !== false // Sogou
- || strpos($this->userAgent, 'soso') !== false // Soso
+ return !$allowBots
+ && ($deviceDetector->isBot()
|| IP::isIpInRange($this->ip, $this->getBotIpRanges()));
}
diff --git a/core/testMinimumPhpVersion.php b/core/testMinimumPhpVersion.php
index 206ebd08c08..589ffbaaa6a 100644
--- a/core/testMinimumPhpVersion.php
+++ b/core/testMinimumPhpVersion.php
@@ -66,6 +66,8 @@
}
}
+define('PAGE_TITLE_WHEN_ERROR', 'Piwik › Error');
+
if (!function_exists('Piwik_ExitWithMessage')) {
/**
* Returns true if Piwik should print the backtrace with error messages.
@@ -111,7 +113,7 @@ function Piwik_ExitWithMessage($message, $optionalTrace = false, $optionalLinks
$headerPage = file_get_contents(PIWIK_INCLUDE_PATH . '/plugins/Morpheus/templates/simpleLayoutHeader.tpl');
$footerPage = file_get_contents(PIWIK_INCLUDE_PATH . '/plugins/Morpheus/templates/simpleLayoutFooter.tpl');
- $headerPage = str_replace('{$HTML_TITLE}', 'Piwik › Error', $headerPage);
+ $headerPage = str_replace('{$HTML_TITLE}', PAGE_TITLE_WHEN_ERROR, $headerPage);
$content = '
' . $message . '
' diff --git a/lang/am.json b/lang/am.json index 20666521684..45e288cc74d 100644 --- a/lang/am.json +++ b/lang/am.json @@ -196,7 +196,6 @@ "ColumnConversions": "ልወጣዎች" }, "Installation": { - "CommunityNewsletter": "ከማህበረሰብ አልቅ ጋር ኢ-ሜይል አድርግልኝ(አዲስ ተሰኪዎች, አዲስ ባህርይዎች, ወዘተ.)", "ConfirmDeleteExistingTables": "እርግጠኛ ነህ ይህንን ሰንጠረዥ ከውሂብ ጎታህ ውስጥ : %s መሰረዝ ትፈልጋለህ? ማስጠንቀቂያ: ከዚህ ሰንጠረዥ ውስጥ የጠፉ ውሂቦች ተመልሰው ሊገኙ አይችሉም!", "Congratulations": "እንኳን ደስያለዎ", "CongratulationsHelp": "
እንኳን ደስያለዎ! የፒዊክ መጫንዎ ተሳክቷል።<\/p>
የጃቫ ስክሪፕትዎ ቾድ በሁሉ ገፆች ላይ መግባቱን ያረጋግጡና የመጀመሪያ ጎበኚዎችዎን ይጠብቁ!<\/p>",
@@ -209,7 +208,6 @@
"PasswordDoNotMatch": "የይለፍ ቃሉ አቻ አይደለም",
"PasswordRepeat": "የይለፍ ቃል (ድገም)",
"PercentDone": "%s %% አልቋል",
- "SecurityNewsletter": "ከዋነኛ የፒዊክ ማላቂያዎች እና የጥበቃ ማስጠንቀቂያዎች ጋር ኢ-ሜይል አድርግልኝ",
"SetupWebsite": "ድር ጣቢያ ጫን",
"SetupWebsiteError": "ድር ጣቢያውን በመጫን ጊዜ ስህተት አጋጥሟል",
"SuperUserLogin": "ሊቀ ተገልጋይ ግባ",
diff --git a/lang/ar.json b/lang/ar.json
index 230701c33f0..826e89c6bfb 100644
--- a/lang/ar.json
+++ b/lang/ar.json
@@ -683,7 +683,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "حيث تكون الصفحة تحتوي على استدعاء لجافاسكريبت piwikTracker.trackGoal() (%sتعرف على المزيد%s)"
},
"Installation": {
- "CommunityNewsletter": "راسلني عند وجود تحديثات (إضافات جديدة، خصائص جديدة، وغيرها)",
"ConfigurationHelp": "يبدو أن ملف الإعدادات الخاص بك به خطأ. يمكنك إما حذف config\/config.ini.php ومتابعة التثبيت أو تصحيح إعدادات الاتصال بقاعدة البيانات.",
"ConfirmDeleteExistingTables": "هل ترغب حقاً في حذف الجداول: %s من قاعدة بياناتك؟ تنبيه: لن يمكن إستعادة البيانات من هذه الجداول!",
"Congratulations": "مبروك",
@@ -713,7 +712,6 @@
"PleaseFixTheFollowingErrors": "الرجاء إصلاح الأخطاء التالية",
"PluginDescription": "عملية تثبيت Piwik. عملية التثبيت تتم مرة واحدة عادة. إذا تم حذف ملف الإعدادات config\/config.inc.php فستبدأ عملية التثبيت مرة أخرى.",
"Requirements": "متطلبات Piwik",
- "SecurityNewsletter": "راسلني عند وجود ترقيات وتنبيهات أمنية في Piwik",
"SetupWebsite": "إعداد موقع ويب",
"SetupWebsiteError": "حدث خطأ ما أثناء إضافة الموقع",
"SetupWebSiteName": "اسم موقع ويب",
diff --git a/lang/be.json b/lang/be.json
index 89aa18d13d0..d0f450385a4 100644
--- a/lang/be.json
+++ b/lang/be.json
@@ -583,7 +583,6 @@
"YouCanEnableEcommerceReports": "Вы можаце ўключыць %s для гэтага вэб-сайта ў %s старонкі."
},
"Installation": {
- "CommunityNewsletter": "паведамляць мне пра абнаўленні супольнасці (новыя ўбудовы, новыя функцыі і г.д.) па email",
"ConfigurationHelp": "Ваш Piwik канфігурацыйны файл, няправільна зканфігураваны. Вы можаце альбо выдаліць config\/config.ini.php і працягнуць усталёўку або правільна наладзіць злучэнне з базай дадзеных.",
"ConfirmDeleteExistingTables": "Вы сапраўды жадаеце выдаліць табліцы: %s з базы дадзеных? УВАГА: ВЫДАЛЕНЫЯ ДАДЗЕНЫЯ НЕМАГЧЫМА АДНАВІЦЬ!",
"Congratulations": "Віншуем",
@@ -613,7 +612,6 @@
"PleaseFixTheFollowingErrors": "Калі ласка, выпраўце наступныя памылкі",
"PluginDescription": "Працэс усталёўкі Piwik. Усталёўка звычайна адбывацца толькі адзін раз. Калі канфігурацыйны файл config\/config.inc.php выдалены, ўстаноўка пачнецца зноў.",
"Requirements": "Патрабаванні Piwik",
- "SecurityNewsletter": "паведамляць мяне пра значныя абнаўленні Piwik і памылках бяспекі па email",
"SetupWebsite": "Дадаць сайт",
"SetupWebsiteError": "Паўстала памылка пры даданні сайта",
"SetupWebSiteName": "імя вэб-сайта",
diff --git a/lang/bg.json b/lang/bg.json
index 0239c7e0d67..98e95f17574 100644
--- a/lang/bg.json
+++ b/lang/bg.json
@@ -103,6 +103,7 @@
"CustomLogoFeedbackInfo": "Ако модифицирате Piwik логото, може също да пожелаете да скриете %s връзката в главното меню. За да направите това, можете да изключите добавката за обратна връзка в страницата %sУправление на добавки%s.",
"CustomLogoHelpText": "Можете да модифицирате логото на Piwik, което да се показва в интерфейса на потребителя и имейлите с отчети.",
"EmailServerSettings": "Настройки сървър на е-поща",
+ "FaviconUpload": "Изберете Favicon за качване",
"ForBetaTestersOnly": "Само за бета тестери",
"ImageTracking": "Проследяване на изображенията",
"ImageTrackingIntro1": "Когато посетителят е изключил JavaScript или когато JavaScript не може да бъде използван, може да се използва проследяващата връзка към изображение, за да бъдат проследени посетителите.",
@@ -190,6 +191,8 @@
"InjectedHostSuperUserWarning": "Възможно е конфигурацията на Piwik да е неправилна (това се случва когато Piwik е бил изместен на нов сървър или друг адрес). Вие можете или %1$sда щракнете тук и да добавите %2$s като валиден Piwik адрес (ако сте сигурни в достоверността му)%3$s, или %4$sда щракнете тук и да посетите %5$s, за да достъпите Piwik безпасно%6$s.",
"InjectedHostWarningIntro": "В момента достъпвате Piwik от %1$s, но Piwik е настроен да работи чрез този адрес: %2$s.",
"JavascriptDisabled": "JavaScript трябва да бъде разрешен за да използвате Piwik в стандартен изглед. Õnnitlused! Sinu Piwiku paigaldus on edukalt lõpuni viidud.<\/p> Sisesta JavaScript kood oma lehele ja jää külastusi ootama!<\/p>",
"DatabaseAbilities": "Andmebaasi võimalused",
@@ -766,7 +765,6 @@
"PluginDescription": "Piwiku paigaldusprotsess. Paigaldust tehakse tavaliselt ainult üks kord. Kui konfiguratsioonifail config\/config.ini.php kustutatakse, siis algab paigaldus uuesti.",
"Requirements": "Piwiku nõuded",
"RestartWebServer": "Peale selle muudatuse teostamist, palun taaskäivita oma veebiserver.",
- "SecurityNewsletter": "saada mulle e-postiga suuremad Piwiku uuendused ja turvahoiatused",
"SeeBelowForMoreInfo": "Vaata allapoole täpsema info jaoks.",
"SetupWebsite": "Seadista veebileht",
"SetupWebsiteError": "Veebilehe lisamisel tekkis viga",
diff --git a/lang/eu.json b/lang/eu.json
index 7e7d97ca1d0..d9c225d886e 100644
--- a/lang/eu.json
+++ b/lang/eu.json
@@ -310,7 +310,6 @@
"ViewAndEditGoals": "Ikusi eta editatu helburuak"
},
"Installation": {
- "CommunityNewsletter": "bidal iezadazu e-posta komunitateko eguneraketekin (plugin berriak, ezaugarri berriak, ...)",
"ConfirmDeleteExistingTables": "Ziur zaude ondorengo taulak: %s datu-basetik ezabatu nahi dituzula? OHARRA: TAULA HAUETAKO DATUAK EZINGO DIRA BERRESKURATU!",
"Congratulations": "Zorionak",
"CongratulationsHelp": " Zorionak! Zure Piwik instalazioa osatu da.<\/p> Egiaztatu JavaScript kodea zure orrietan txertatuta dagoela eta ondoren itxaron lehenengo bisitei!<\/p>",
@@ -337,7 +336,6 @@
"PasswordRepeat": "pasahitza (errepikatu)",
"PercentDone": "%% %s eginda",
"Requirements": "Piwik-en beharrak",
- "SecurityNewsletter": "bidal iezadazu e-posta Piwik-en bertsio-berritze eta segurtasun-alerta nagusienekin",
"SetupWebsite": "Konfiguratu webgunea",
"SetupWebsiteError": "Errorea gertatu da webgunea gehitzean",
"SetupWebSiteName": "webgunearen izena",
diff --git a/lang/fa.json b/lang/fa.json
index b909a39a999..cb53d467bdc 100644
--- a/lang/fa.json
+++ b/lang/fa.json
@@ -902,7 +902,6 @@
},
"Installation": {
"CollaborativeProject": "پیویک یک پروژه گروهی است که با عشق و علاقه توسط افرادی از سراسر دنیا ساخته شده است.",
- "CommunityNewsletter": "ایمیل من با به روز رسانی جامعه (پلاگین های جدید، ویژگی های جدید، و غیره)",
"ConfigurationHelp": "فایل پیکربندی Piwik شما به نظر می رسد بد باشد. شما هم می توانید پیکربندی \/ config.ini.php و حذف از سر نصب و راه اندازی و یا اصلاح تنظیمات اتصال پایگاه داده.",
"ConfirmDeleteExistingTables": "آیا شما مطمئن هستید که می خواهید این جدول ها را : %s از پایگاه داده تان حذف کنید؟ هشدار : داده های این جدول ها قابل بازیابی نخواهد بود!",
"Congratulations": "تبریک",
@@ -940,7 +939,6 @@
"PluginDescription": "روند نصب و راه اندازی Piwik. نصب و راه اندازی شده است معمولا فقط یک بار انجام می شود. اگر تنظیمات پیکربندی فایل \/ config.inc.php حذف شده، نصب و راه اندازی دوباره شروع خواهد شد.",
"Requirements": "نیازمندی های پیویک",
"RestartWebServer": "پس از این تغییر، وب سرورتان را دوباره راه اندازی (restart)کنید",
- "SecurityNewsletter": "هشدارهای بزرگ امنیتی و ارتقاهای بزرگ پیویک را به من ایمیل کن",
"SeeBelowForMoreInfo": "برای اطلاعات بیشتر پایین را ببینید.",
"SetupWebsite": "راه اندازی وبسایت",
"SetupWebsiteError": "خطا در هنگام اضافه کردن وب سایت",
diff --git a/lang/fi.json b/lang/fi.json
index fcf1e0e03a9..d71fc5c13cb 100644
--- a/lang/fi.json
+++ b/lang/fi.json
@@ -844,7 +844,7 @@
"TransitionsRowActionTooltip": "Näe mitä kävijät tekivät ennen ja jälkeen tällä sivulla käymistä",
"TransitionsRowActionTooltipTitle": "Avaa muutokset",
"TranslatorEmail": "olli@jarva.fi, sara@alennuskoodia.fi",
- "TranslatorName": "Olli Jarva<\/a>, Sara",
+ "TranslatorName": "Olli Jarva<\/a>, Sara Roshage<\/a>",
"UniquePurchases": "Uniikit ostot",
"Unknown": "Tuntematon",
"Upload": "Lähetä",
@@ -1015,7 +1015,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik on yhteistyöprojekti, jonka parissa ovat työskennelleet ihmiset ympäri maailmaa suurella sydämellä.",
- "CommunityNewsletter": "lähetä sähköpostia kaikista päivityksistä (uusista lisäosista, ominaisuuksista jne.)",
"ConfigurationHelp": "Piwikin asetustiedosto on luotu väärin. Voit joko poistaa tiedoston config\/config.ini.php ja käyttää asennusohjelmaa uudelleen tai korjata tietokannan asetukset.",
"ConfirmDeleteExistingTables": "Haluatko varmasti poistaa seuraavat taulut tietokannasta: %s? VAROITUS: TAULUJEN TIETOJA EI VOI PALAUTTAA EIKÄ POISTAMISTA VOI KUMOTA!",
"Congratulations": "Onnittelut",
@@ -1061,7 +1060,6 @@
"Requirements": "Piwikin vaatimukset",
"RestartWebServer": "Käynnistä web-palvelimesi uudelleen näiden muutosten jälkeen.",
"ReusingTables": "Taulukoiden uudelleenkäyttö",
- "SecurityNewsletter": "lähetä sähköpostia Piwikin suurista päivityksistä ja turvallisuushälytyksistä",
"SeeBelowForMoreInfo": "Katso alempaa lisätietoja.",
"SetupWebsite": "Lisää verkkosivu",
"SetupWebsiteError": "Virhe verkkosivun lisäämisessä",
diff --git a/lang/fr.json b/lang/fr.json
index 12ca43d02a9..4292695d618 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -1010,7 +1010,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik est un projet collaboratif, construit avec amour par des personnes du monde entier.",
- "CommunityNewsletter": "Envoyez-moi un courriel pour les nouveautés de la communauté (nouveaux plugins, nouvelles fonctionnalités, etc.)",
"ConfigurationHelp": "Votre configuration de Piwik semble être erronée. Vous pouvez ou bien supprimer config\/config.inc.php et reprendre l'installation ou corriger les paramètres de connexion.",
"ConfirmDeleteExistingTables": "Êtes vous sûr de vouloir supprimer les tables : %s de votre base de données? ATTENTION: LES DONNÉES SERONT DÉFINITIVEMENT PERDUES!",
"Congratulations": "Félicitations",
@@ -1056,7 +1055,6 @@
"Requirements": "Pré requis Piwik",
"RestartWebServer": "Après avoir effectué ces modifications, redémarrez votre serveur web.",
"ReusingTables": "Réutilisation des Tables",
- "SecurityNewsletter": "Envoyez-moi un courriel pour les mises à jour de versions majeures de piwik ou pour les alertes de sécurité",
"SeeBelowForMoreInfo": "Voir ci-dessous pour plus d'informations.",
"SetupWebsite": "Paramétrer un site",
"SetupWebsiteError": "Une erreur a été rencontrée pendant l'ajout du site",
diff --git a/lang/hi.json b/lang/hi.json
index 0655d82a0c4..4b7a222ac4f 100644
--- a/lang/hi.json
+++ b/lang/hi.json
@@ -868,7 +868,6 @@
"PluginDescription": "किसी भी Piwik रिपोर्ट के लिए सुंदर स्थिर पीएनजी ग्राफ छवियों को उत्पन्न करता है."
},
"Installation": {
- "CommunityNewsletter": "(नए plugins, नई सुविधाओं, आदि) समुदाय अद्यतन के साथ मुझे ईमेल करें",
"ConfigurationHelp": "आपकी Piwik विन्यास फाइल गलत प्रतीत होता है. आप या तो विन्यास \/ config.ini.php हटाने और स्थापना को फिर से शुरू, या डेटाबेस कनेक्शन सेटिंग्स को सही कर सकते हैं.",
"ConfirmDeleteExistingTables": "अपने डेटाबेस से %s: क्या आप तालिकाओं को हटाना चाहते हैं? चेतावनी: इन तालिकाओं से डेटा बरामद नहीं किया जा सकता है!",
"Congratulations": "बधाई हो",
@@ -911,7 +910,6 @@
"PluginDescription": "Piwik की स्थापना की प्रक्रिया. स्थापना आमतौर पर केवल एक बार किया जाता है. विन्यास फाइल विन्यास \/ config.inc.php नष्ट कर दिया जाता है, तो स्थापना फिर से शुरू होगा.",
"Requirements": "Piwik आवश्यकताएँ",
"RestartWebServer": "यह परिवर्तन करने के बाद, अपने वेब सर्वर को पुनरारंभ करें.",
- "SecurityNewsletter": "प्रमुख Piwik उन्नयन और सुरक्षा अलर्ट के साथ मुझे ईमेल करें",
"SeeBelowForMoreInfo": "अधिक जानकारी के लिए नीचे देखें.",
"SetupWebsite": "एक वेबसाइट सेटअप करें",
"SetupWebsiteError": "वेबसाइट जोड़ते समय एक त्रुटि हुई थी",
diff --git a/lang/hu.json b/lang/hu.json
index 5e7a67649e3..1a74caf0445 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -526,7 +526,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "ahol a meglátogatott oldal tartalmaz egy JavaScript hívást a piwikTracker.trackGoal() funkció aktiválására (%stovábbi információ%s)"
},
"Installation": {
- "CommunityNewsletter": "e-mail küldése közösségi hírekről (új bővítmények, új funkciók, stb.)",
"ConfigurationHelp": "Úgy tűnik, a Piwik konfigurációs fájl hibás. Törölheted a config\/config.ini.php fájlt — újrakezdve a telepítést, vagy kijavíthatod az adatbázis-kapcsolathoz szükséges beállításokat.",
"ConfirmDeleteExistingTables": "Biztos vagy benne, hogy törölni akarod a %s táblákat az adatbázisból? FIGYELEM: A TÖRÖLT TÁBLÁK ADATAI NEM ÁLLÍTHATÓK VISSZA!",
"Congratulations": "Gratulálunk",
@@ -556,7 +555,6 @@
"PleaseFixTheFollowingErrors": "Kérjük, javítsd a következő hibákat",
"PluginDescription": "Piwik telepítése. Általában csak egyszer fut le, ha azonban a config\/config.inc.php konfigurációs fájl hiányzik, akkor a telepítés újból fog kezdődni.",
"Requirements": "Piwik Rendszerkövetelmények",
- "SecurityNewsletter": "e-mail küldése főbb Piwik verziók megjelenése és biztonsági riasztások esetén",
"SetupWebsite": "Weboldal beállítása",
"SetupWebsiteError": "Hiba a weboldal hozzáadása közben!",
"SetupWebSiteName": "weboldal neve",
diff --git a/lang/id.json b/lang/id.json
index 7fdf42d3d28..5ce616258a6 100644
--- a/lang/id.json
+++ b/lang/id.json
@@ -866,7 +866,6 @@
"PluginDescription": "Bangkitkan grafik PNG statis indah untuk bermacam laporan Piwik."
},
"Installation": {
- "CommunityNewsletter": "kirimi saya surel atas pembaruan komunitas (pengaya baru, fitur baru, dsb.)",
"ConfigurationHelp": "Tampaknya berkas konfigurasi Piwik Anda terdapat kesalahan. Anda dapat menghapus config\/config.ini.php dan melanjutkan instalasi, atau memperbaiki pengaturan sambungan basisdata.",
"ConfirmDeleteExistingTables": "Apakan Anda yakin menghapus tabel: %s dari basisdata Anda? PERINGATAN: DATA DALAM TABEL TERSEBUT TAK DAPAT DIKEMBALIKAN!",
"Congratulations": "Selesai",
@@ -908,7 +907,6 @@
"PluginDescription": "Proses Instalasi Piwik. Instalasi ini biasanya dilakukan hanya sekali. Bila berkas konfigurasi di config\/config.inc.php terhapus, instalasi akan diulangi.",
"Requirements": "Persyaratan Piwik",
"RestartWebServer": "Setelah membuat perubahan tersebut, muat ulang peladen web Anda.",
- "SecurityNewsletter": "kirimi saya surel atas pembaruan besar Piwik dan peringatan keamanan",
"SeeBelowForMoreInfo": "Lihat di bawah untuk informasi selengkapnya.",
"SetupWebsite": "Atur Situs",
"SetupWebsiteError": "Terdapat galat ketika menambah situs",
diff --git a/lang/it.json b/lang/it.json
index 3a2b9bedd00..50b39708ae8 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -1,6 +1,6 @@
{
"Actions": {
- "AvgGenerationTimeTooltip": "Media basata su %s hit(s) %s tra %s e %s",
+ "AvgGenerationTimeTooltip": "Media basata su %s hits %s tra %s e %s",
"ColumnClickedURL": "URL Cliccate",
"ColumnClicks": "Clic",
"ColumnClicksDocumentation": "Numero di volte che questo link è stato cliccato",
@@ -104,6 +104,7 @@
"CustomLogoHelpText": "È possibile personalizzare il logo Piwik che verrà visualizzato nell'interfaccia utente e nei reports e-mail.",
"DevelopmentProcess": "Poichè il nostro %sprocesso di sviluppo%s include migliaia di test automatizzati, i Beta Tester giocano un ruolo chiave nel raggiungimento in Piwik della \"Politica no bug\".",
"EmailServerSettings": "Impostazioni server e-mail",
+ "FaviconUpload": "Seleziona una Favicon da caricare",
"ForBetaTestersOnly": "Solo per beta tester",
"ImageTracking": "Rilevamento immagine",
"ImageTrackingIntro1": "Quando un visitatore ha disattivato JavaScript o quando JavaScript non può essere utilizzato, è possibile utilizzare un collegamento di tracciamento immagine per tracciare i visitatori.",
@@ -154,6 +155,7 @@
"PiwikIsInstalledAt": "Piwik è installato su",
"PluginDescription": "Area di amministrazione Piwik.",
"PluginSettingChangeNotAllowed": "Non sei abilitato a cambiare il valore dell'impostazione \"%s\" nel plugin \"%s\"",
+ "PluginSettingReadNotAllowed": "Non sei abilitato a leggere il valore dell'impostazione \"%s\" nel plugin \"%s\"",
"PluginSettings": "Impostazioni plugin",
"PluginSettingsIntro": "Qui puoi cambiare le impostazioni dei seguenti plugin di terze parti:",
"PluginSettingsValueNotAllowed": "Il valore del campo \"%s\" nel plugin \"%s\" non è consentito",
@@ -1041,7 +1043,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik è un progetto in collaborazione, costruito con amore da persone di tutto il mondo.",
- "CommunityNewsletter": "Informami via e-mail sugli aggiornamenti della community (nuovi plugin, caratteristiche, ecc.)",
"ConfigurationHelp": "Il tuo file di configurazioni Piwik sembra essere configurato male. Puoi rimuovere il file config\/config.ini.php e ricominciare l'installazione, o correggere i dati di connessione al database.",
"ConfirmDeleteExistingTables": "Sei sicuro di voler cancellare le tabelle %s dal tuo Database? ATTENZIONE: I DATI NON POTRANNO ESSERE RECUPERATI!",
"Congratulations": "Congratulazioni",
@@ -1077,6 +1078,7 @@
"NfsFilesystemWarningSuffixAdmin": "Questo significa che Piwik sarà estremamente lento quando utilizzerà delle sessioni basate sui files.",
"NfsFilesystemWarningSuffixInstall": "L'utilizzo di sessioni basate sui files è estremamente lento, così Piwik userà delle sessioni con database. Se hai molti utenti della dashboard, potresti avere la necessità di aumentare il numero massimo di connessioni dei client al server del database.",
"NoConfigFound": "Il file di configurazione di Piwik non è stato trovato e stai tentando l'accesso ad una pagina di Piwik. Gratulerer! Din Piwik installasjon er fullført.<\/p> Sørg for at JavaScript-koden er lagt inn på dine sider, og vent på dine første besøkende!<\/p>",
@@ -639,7 +638,6 @@
"PercentDone": "%s %% ferdig",
"PleaseFixTheFollowingErrors": "Fiks følgende feil",
"Requirements": "Krav for å kjøre Piwik",
- "SecurityNewsletter": "send meg e-post om viktige Piwik-oppgraderinger og sikkerhetsvarsler",
"SeeBelowForMoreInfo": "Se nedenfor for mer informasjon.",
"SetupWebsite": "Legg til et nettsted",
"SetupWebsiteError": "Det skjedde en feil da nettstedet ble lagt til.",
diff --git a/lang/nl.json b/lang/nl.json
index f8535705133..6658bf3c4eb 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -185,6 +185,7 @@
"DonateCall3": "Als u vindt dat Piwik een grote hulp is voor uw zaak, %1$s overweeg dan een donatie!%2$s",
"DonateFormInstructions": "Klik op de schuifbalk om een bedrag te selecteren, en klik dan subscribe om te doneren.",
"ExcludeRowsWithLowPopulation": "Alle rijen worden getoond %s Verberg de rijen met een lage populatie",
+ "ExternalHelp": "Help (opent in een nieuw tabblad)",
"FlattenDataTable": "De rapportweergave is hierarchisch %s Maak het vlak",
"HowMuchIsPiwikWorth": "Hoeveel is Piwik waard voor jouw?",
"IncludeRowsWithLowPopulation": "Rijen met een lage populatie zijn verborgen %s Laat alle rijen zien",
@@ -282,6 +283,7 @@
"OriginThirdParty": "Derden",
"PluginDescription": "Plugin admin interface",
"PluginHomepage": "Plugins",
+ "PluginKeywords": "Sleutelwoorden",
"PluginNotCompatibleWith": "%1$s plugin is niet compatibel met %2$s.",
"PluginsManagement": "Plugin manager",
"PluginUpdateAvailable": "U gebruikt versie %s en een nieuwe versie %s is beschikbaar.",
@@ -346,12 +348,16 @@
"NoteForLargePiwikInstances": "Belangrijke mededeling voor grote Piwik installaties",
"NoteItIsExpectedThatQueriesFail": "Opmerking: Als u deze query's handmatig uitvoert zullen sommigen niet kunnen worden uitgevoerd. In dat geval kunt u de fouten negeren en de volgende in de lijst uitvoeren.",
"NotificationClickToUpdatePlugins": "Klik hier om nu uw plugins bij te werken:",
+ "NotificationClickToUpdateThemes": "Klik hier om je thema's nu bij te werken:",
+ "NotificationSubjectAvailableCoreUpdate": "Nieuwe Piwik %s is beschikbaar",
+ "NotificationSubjectAvailablePluginUpdate": "Updates beschikbaar voor uw Piwik plugins",
"PiwikHasBeenSuccessfullyUpgraded": "Piwik upgrade was succesvol!",
"PiwikUpdatedSuccessfully": "Piwik is succesvol geüpdatet!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Piwik Database zal ge-upgrade worden van versie %1$s naar de nieuwe versie %2$s",
"PluginDescription": "Piwik updating mechanisme",
"ReadyToGo": "Klaar om te starten?",
"TheFollowingPluginsWillBeUpgradedX": "De volgende plugins zullen ge-upgrade worden: %s.",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Somige plugins die u gebruikt zijn bijgewerkt op de Marktplaats:",
"ThereIsNewVersionAvailableForUpdate": "Er is een nieuwe versie van Piwik beschikbaar als update",
"TheUpgradeProcessMayFailExecuteCommand": "Als u een grote Piwik database heeft, dan kunnen de updates te lang duren om in de browser te worden uitgevoerd. In dat geval, kunt u de updates uitvoeren vanaf de opdrachtprompt: %s",
"TheUpgradeProcessMayTakeAWhilePleaseBePatient": "De upgrade kan enige tijd in beslag nemen, graag uw geduld.",
@@ -770,6 +776,7 @@
"Seconds": "%ss",
"SeeAll": "Bekijk alles",
"SeeTheOfficialDocumentationForMoreInformation": "Zie de %sofficiële documentatie%s voor meer info.",
+ "Segment": "Segment",
"SelectYesIfYouWantToSendEmailsViaServer": "Selecteer \"Ja\" als u wilt dat mail verzonden wordt via een opgegeven server in plaats van de lokale mail functie.",
"Settings": "Instellingen",
"Shipping": "Verzending",
@@ -977,13 +984,13 @@
"MonthComparedToPreviousMonth": "vorige maand",
"MonthComparedToPreviousYear": "zelfde maand vorig jaar",
"NoResultMatchesCriteria": "Er komen geen rijen overeen met de criteria",
+ "TitleRowNewDetails": "'%1$s' is toegenomen met %2$s en is nieuw vergeleken met %3$s.",
"WeekComparedToPreviousWeek": "vorige week",
"WidgetCategory": "Inzichten",
"YearComparedToPreviousYear": "vorig jaar"
},
"Installation": {
"CollaborativeProject": "Piwik is een samenwerkingsproject, met liefde gebouwd door mensen van over de hele wereld.",
- "CommunityNewsletter": "stuur mij e-mails met community updates (nieuwe plugins, nieuwe features, enz.)",
"ConfigurationHelp": "Uw Piwik configuratie bestand is waarschijnlijk niet correct geconfigureerd. U kunt ofwel config\/config.ini.php verwijderen en de installatie vervolgen of de toegangsgegevens voor de database corrigeren.",
"ConfirmDeleteExistingTables": "Bent u zeker dat u de tabellen wilt verwijderen: %s uit uw datbase? WAARSCHUWING: DATA VAN DEZE TABELLEN KAN NIET WORDEN HERSTELD!",
"Congratulations": "Gefeliciteerd",
@@ -1017,6 +1024,7 @@
"NfsFilesystemWarningSuffixAdmin": "Dit betekent dat Piwik extreem traag zal zijn bij gebruik van bestands gebaseerde sessies.",
"NfsFilesystemWarningSuffixInstall": "Gebruik maken van bestands gebaseerde sessies op NFS is extreem traag, dus zal Piwik gebruik maken van database sessies. Indien je veel gelijktijdige dashboard gebruikers hebt, zul je mogelijk het maximum aantal client connecties naar de database server moeten verhogen.",
"NoConfigFound": "Het Piwik configuratiebestand werd niet gevonden. Gratulerer! Piwik-installasjon er ferdig.<\/p> Sjå til at JavaScript-koden er lagt til på sidene dine, og vent på dine fyrste vitjarar!<\/p>",
@@ -607,7 +606,6 @@
"PluginDescription": "Installasjonsprosessen til Piwik. Installasjonen er vanlegvis utførd berre ein gong. Viss konfigurasjonsfila config\/config.inc.php er sletta, vil installasjonen starta på nytt.",
"Requirements": "Piwik-krav",
"RestartWebServer": "Etter denne endringa, start vevtenaren din på nytt.",
- "SecurityNewsletter": "send meg e-post når det kjem oppdateringar og tryggleiksvarslingar",
"SetupWebsite": "Sett opp ein nettstad",
"SetupWebsiteError": "Det skjedde ein feil då nettsiden vart lagt til",
"SetupWebSiteName": "nettstad-namn",
diff --git a/lang/pl.json b/lang/pl.json
index c453cff1cc5..ca540ce55c7 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -695,7 +695,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "gdzie odwiedzona strona zawiera wywołania do metody JavaScript piwikTracker.trackGoal() (%szobacz więcej%s)"
},
"Installation": {
- "CommunityNewsletter": "wysyłaj e-mail z aktualizacjami wprowadzanymi przez społeczność Piwik (z nowymi wtyczkami, z nowymi rozszerzeniami, itd.)",
"ConfigurationHelp": "Twój plik konfiguracyjny Piwik wydaje się nieskonfigurowany. Możesz również usunąć config\/config.ini.php i powtórzyć instalację, lub naprawić konfigurację połączenia z bazą danych.",
"ConfirmDeleteExistingTables": "Czy masz pewność, że chcesz skasować tabele: %s ze swojej bazy danych? OSTRZEŻENIE: DANE Z TYCH TABEL NIE ZOSTANĄ ODTWORZONE CZY ZABEZPIECZONE!",
"Congratulations": "Gratulacje",
@@ -725,7 +724,6 @@
"PleaseFixTheFollowingErrors": "Prosimy naprawić następujące błędy",
"PluginDescription": "Proces instalacji statystyk Piwik. Instalację wykonuje się zazwyczaj tylko raz. Jeżeli plik konfiguracyjny znajdujący się w config\/config.inc.php zostaje skasowany, proces instalacji rozpocznie się od nowa.",
"Requirements": "Wymagania systemu Piwik",
- "SecurityNewsletter": "wysyłaj e-mail z poważniejszą aktualizacją Piwik oraz w przypadku alertu bezpieczeństwa",
"SetupWebsite": "Konfiguracja portalu",
"SetupWebsiteError": "Pojawił się błąd podczas dodawania adresu strony",
"SetupWebSiteName": "nazwa portalu",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index 91682d24e78..28204255cce 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -959,7 +959,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik é um projeto colaborativo, construído com amor por pessoas de todo o mundo.",
- "CommunityNewsletter": "envie-me um email com atualizações da comunidade (novos plugins, novas funções, etc.)",
"ConfigurationHelp": "Seu arquivo de configuração Piwik parece estar desconfigurado. Você pode ou remover config\/config.ini.php e fechar a instalação, ou corrigir as configurações de conexão com banco de dados.",
"ConfirmDeleteExistingTables": "Tem certeza que quer apagar as tabelas: %s do seu banco de dados? AVISO: DADOS DESTAS TABELAS NÃO PODERÃO SER RECUPERADOS!",
"Congratulations": "Parabéns",
@@ -1004,7 +1003,6 @@
"PluginDescription": "Processo de instalação do Piwik. A instalação normalmente é feita apenas uma vez. Se o arquivo de configuração config\/config.inc.php é deletado, a instalação começará novamente.",
"Requirements": "Requerimentos do Piwik",
"RestartWebServer": "Depois de fazer essa alteração, reinicie o seu servidor web.",
- "SecurityNewsletter": "envie-me um email quando houver alertas de segurança e atualizações importantes",
"SeeBelowForMoreInfo": "Veja abaixo para mais informações.",
"SetupWebsite": "Configurar um website",
"SetupWebsiteError": "Ocorreu um erro ao tentar adicionar o website",
diff --git a/lang/pt.json b/lang/pt.json
index aafcc01db37..22b5beac1ef 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -605,7 +605,6 @@
"PluginDescription": "Gera uma imagem de gráfico PNG estática para qualquer relatório Piwik"
},
"Installation": {
- "CommunityNewsletter": "envie-me emails sobre actualizações da comunidade (novos plugins, funcionalidades, etc.)",
"ConfigurationHelp": "O seu ficheiro de configuração Piwik parece estar mal configurado. Pode remover config\/config.ini.php e continuar a instalação, ou corrigir as definições da ligação à base de dados.",
"ConfirmDeleteExistingTables": "Tem a certeza que deseja eliminar as tabelas: %s da sua base de dados? AVISO: DADOS DESTAS TABELAS NÃO PODEM SER RECUPERADOS!",
"Congratulations": "Parabéns",
@@ -635,7 +634,6 @@
"PleaseFixTheFollowingErrors": "Por favor corrija os seguintes erros",
"PluginDescription": "Processo de instalação de Piwik. A Instalação é executada só uma vez. Se o ficheiro de configuração config\/config.inc.php for eliminado, a instalação recomeça.",
"Requirements": "Requisitos do Piwik",
- "SecurityNewsletter": "envie-me emails sobre actualizações Piwik e alertas de segurança",
"SetupWebsite": "Configurar um Website",
"SetupWebsiteError": "Ocorreu um erro ao tentar adicionar o website",
"SetupWebSiteName": "nome do website",
diff --git a/lang/ro.json b/lang/ro.json
index 061032d0151..fe5a30e9810 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -104,6 +104,7 @@
"CustomLogoHelpText": "Poţi personaliza logoul Piwik care va fi afişat în interfaţa de utilizator şi în rapoartele email.",
"DevelopmentProcess": "In timp ce %sprocesul de dezvoltare%s include mii de teste automate, Testerii Beta au un rol esential in a-si insusi \"No bug policy\" in Piwik.",
"EmailServerSettings": "Setările serverului email",
+ "FaviconUpload": "Alege un favicon pentru a fi încărcat",
"ForBetaTestersOnly": "Numai pentru beta-testeri",
"ImageTracking": "Urmărire prin imagine",
"ImageTrackingIntro1": "Cand un visitator are dezactivat JavaScript sau cand JavaScript nu poate fi folosit, poti folosi un link de tracking de tip imagine pentru a inregistra statisticile despre vizitatori.",
@@ -859,8 +860,8 @@
"TotalVisitsPageviewsRevenue": "Total: %s vizite, %s vizualizări de pagină, %s revenire)",
"TransitionsRowActionTooltip": "Vezi ce au făcut vizitatorii până la şi după vizionarea acestei pagini",
"TransitionsRowActionTooltipTitle": "Treceri Deschise",
- "TranslatorEmail": "astonsoftware@gmail.com",
- "TranslatorName": "astonsoftware",
+ "TranslatorEmail": "astonsoftware@gmail.com, flo[at]inboxtranslation[dot]com",
+ "TranslatorName": "astonsoftware, Inbox Translation<\/a>",
"UniquePurchases": "Cumparaturi unice",
"Unknown": "Necunoscut",
"Upload": "Incarca",
@@ -1039,7 +1040,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik este un proiect colaborativ, construit cu dragoste de oameni de pe tot mapamondul.",
- "CommunityNewsletter": "da-mi un e-mail cu noutatile din comunitate (noi plugin-uri, caracteristici, etc)",
"ConfigurationHelp": "Fisierul de configurare Piwik pare să fie configurat greșit. Puteți fie să eliminați config \/ config.ini.php și reluati instalarea, sau a se corecta setările de conexiune de date.",
"ConfirmDeleteExistingTables": "Sigur doriți să ștergeți tabelele: %s din baza de date? AVERTISMENT: DATELE DIN ACESTE TABELE NU POT FI RECUPERATE",
"Congratulations": "Felicitari",
@@ -1073,6 +1073,7 @@
"NfsFilesystemWarningSuffixAdmin": "Acest lucru înseamnă că Piwik va fi extrem de lent atunci când se utilizează sesiuni bazate pe fișiere.",
"NfsFilesystemWarningSuffixInstall": "Folosind sesiuni bazate pe fișiere NFS sunt extrem de lente, astfel Piwik va folosi sesiuni de baze de date. Dacă aveți mai mulți utilizatori de tablou de bord, ar putea fi necesar sa se creasca numărul maxim de conexiuni client la serverul de baze de date.",
"NoConfigFound": "Fișierul de configurare Piwik nu a putut fi găsit și se încearcă să se acceseze o pagină Piwik. Blahoželáme Vám! Inštalácia Piwik je dokončená.<\/p> Uistite sa, že Váš javascript kód je vložený od Vašich stránok a počkajte si na prvých návštevníkov!<\/p>",
@@ -619,7 +618,6 @@
"PasswordDoNotMatch": "heslo nie je zhodné",
"PasswordRepeat": "heslo (zopakovať)",
"PercentDone": "%s %% Dokončené",
- "SecurityNewsletter": "posielať informácie o hlavných aktualizáciách projektu Piwik a bezpečnostné varovania",
"SetupWebsite": "Nastavenie webstránky",
"SetupWebsiteError": "Vyskytla sa chyba pridávaní webstránky",
"SetupWebSiteName": "názov webovej stránky",
diff --git a/lang/sl.json b/lang/sl.json
index 906953068da..fcd1f5fba14 100644
--- a/lang/sl.json
+++ b/lang/sl.json
@@ -618,7 +618,6 @@
"PercentDone": "%s %% Končano",
"PleaseFixTheFollowingErrors": "Prosimo, odpravite sledeče napake",
"Requirements": "Piwik-ovi minimalni pogoji",
- "SecurityNewsletter": "obveščajte me o najpomembnejših varnostnih opozorilh Piwik-a",
"SetupWebsite": "Nastavite spletno stran",
"SetupWebsiteError": "Med dodajanjem spletne strani je prišlo do napake.",
"SetupWebSiteName": "ime spletne strani",
diff --git a/lang/sq.json b/lang/sq.json
index ad6c5f123a7..dcd221e52f8 100644
--- a/lang/sq.json
+++ b/lang/sq.json
@@ -663,7 +663,6 @@
"PluginDescription": "Prodhoni për çfarëdo raporti Piwik figura të mrekullueshme PNG statike Grafikësh."
},
"Installation": {
- "CommunityNewsletter": "njoftomë me email për përditësime nga bashkësia (shtojca të reja, veçori të reja, etj.)",
"ConfigurationHelp": "Kartela juaj për formësimin e Piwik-ut duket se është e keqformësuar. Ose mund të hiqni config\/config.ini.php dhe rinisni instalimin, ose ndreqni rregullimet për lidhjen me bazën e të dhënave.",
"ConfirmDeleteExistingTables": "Jeni i sigurt se doni të fshihen tabelat: %s prej bazës së të dhënave? KUJDES: NUK DO TË MUND TË RIKTHENI TË DHËNAT PREJ KËTYRE TABELAVE!",
"Congratulations": "Urime",
@@ -693,7 +692,6 @@
"PleaseFixTheFollowingErrors": "Ju lutem, ndreqni gabimet vijuese",
"PluginDescription": "Procesi i instalimit të Piwik-ut. Instalimi zakonisht bëhet vetëm një herë. Po u fshi kartela e formësimit config\/config.inc.php, instalimi duhet nisur nga e para.",
"Requirements": "Të domosdoshme për Piwik-un",
- "SecurityNewsletter": "njoftomë me email për përditësime të rëndësishme të Piwik-ut dhe njoftime lidhur me sigurinë",
"SetupWebsite": "Caktoni një \"site\" web",
"SetupWebsiteError": "Pati një gabim gjatë shtimit të një \"site\"-i web",
"SetupWebSiteName": "emër site-i web",
diff --git a/lang/sr.json b/lang/sr.json
index 30c2f233de0..5f8306ae63c 100644
--- a/lang/sr.json
+++ b/lang/sr.json
@@ -1042,7 +1042,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik je saradnički projekat, satkan od ljubavi od strane ljudi diljem celog sveta.",
- "CommunityNewsletter": "pošaljite mi elektronsko pismo sa nadogradnjama od strane Piwik zajednice (novi dodaci, nove opcije, itd.)",
"ConfigurationHelp": "Vaša Piwik podešavanja kao da nisu dobra. Možete ili ukloniti config\/config.ini.php datoteku i nastaviti sa instalacijom, ili ispraviti podešavanja u vezi sa povezivanjem na bazu podataka.",
"ConfirmDeleteExistingTables": "Da li zaista želite da obrišete tabele: %s iz vaše baze? Upozorenje: Podaci iz ovih tabela se ne mogu više povratiti!",
"Congratulations": "Čestitamo",
@@ -1088,7 +1087,6 @@
"Requirements": "Piwik zahtevi",
"RestartWebServer": "Nakon ovih izmena restartujte vaš web server",
"ReusingTables": "Ponovna upotreba tabela",
- "SecurityNewsletter": "pošaljite mi elektronsko pismo sa važnim Piwik nadogradnjama i sigurnosim upozorenjima",
"SeeBelowForMoreInfo": "Pogledajte ispod za više informacija.",
"SetupWebsite": "Podešavanje sajta",
"SetupWebsiteError": "Došlo je do greške prilikom dodavanja sajta",
diff --git a/lang/sv.json b/lang/sv.json
index 5539e623547..ed7e200dfe3 100644
--- a/lang/sv.json
+++ b/lang/sv.json
@@ -1031,7 +1031,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik är ett projekt som arbetats fram av människor från hela världen, med samma mål och mycket kärlek!",
- "CommunityNewsletter": "maila mig angående community-uppdateringar (nya plugins, nya funktioner, etc.)",
"ConfigurationHelp": "Din Piwik konfigurationsfil verkar vara felkonfigurerad. Du kan antingen ta bort config \/ config.ini.php och återuppta installationen, eller korrigera inställningarna för databasanslutningen.",
"ConfirmDeleteExistingTables": "Är du säker på att du vill ta bort tabellerna: %s från din databas? Varning: Data från dessa tabeller kommer inte kunna återskapas!",
"Congratulations": "Grattis",
@@ -1077,7 +1076,6 @@
"Requirements": "Piwik Krav",
"RestartWebServer": "När du har gjort den här ändringen, starta om din webbserver.",
"ReusingTables": "Återanvänder tabellerna",
- "SecurityNewsletter": "maila mig angående stora Piwik uppgraderingar och säkerhetsvarningar",
"SeeBelowForMoreInfo": "Se nedan för mer information.",
"SetupWebsite": "Konfigurera en webbplats",
"SetupWebsiteError": "Det uppstod ett fel när webbplatsen försökte läggas till.",
diff --git a/lang/th.json b/lang/th.json
index 70b31695c61..1d7e555e466 100644
--- a/lang/th.json
+++ b/lang/th.json
@@ -635,7 +635,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "ในหน้าเว็บเพจเมื่อเข้าชมแล้ว จะประกอบไปด้วยวิธีการเรียก JavaScript piwikTracker.trackGoal() และวิธี (%s เรียนรู้เพิ่มเติม %s)"
},
"Installation": {
- "CommunityNewsletter": "ส่งอีเมล์ไปให้ฉัน ด้วยโปรแกรมอัพเดตชุมชน (ปลั๊กอินใหม่ คุณลักษณะใหม่ ฯลฯ)",
"ConfigurationHelp": "ไฟล์การกำหนดค่า Piwik ของคุณปรากฏเป็นผิดพลาด คุณสามารถเอาconfig\/config.ini.php ออกได และดำเนินการติดตั้งต่อ หรือแก้ไขการตั้งค่าการเชื่อมต่อฐานข้อมูล",
"ConfirmDeleteExistingTables": "คุณแน่ใจหรือไม่ว่าต้องการลบตาราง: %s จากฐานข้อมูล? คำเตือน: ข้อมูลในตารางเหล่านี้ไม่สามารถกู้คืนได้",
"Congratulations": "ขอแสดงความยินดี",
@@ -667,7 +666,6 @@
"PleaseFixTheFollowingErrors": "กรุณาแก้ไขข้อผิดพลาดต่อไปนี้",
"PluginDescription": "กระบวนการติดตั้งของ Piwik ที่การติดตั้งมักจะทำเพียงครั้งเดียวเท่านั้น ถ้า config\/config.inc.php ไฟล์การตั้งค่าคอนฟิกจะถูกลบออก การติดตั้งจะเริ่มทำงานอีกครั้ง",
"Requirements": "ความต้องการของ Piwik",
- "SecurityNewsletter": "ส่งอีเมล์ไปให้ฉัน ซึ่ง Piwik จะแจ้งเตือนในการอัพเกรดด้านความปลอดภัย",
"SeeBelowForMoreInfo": "ดูด้านล่างสำหรับรายละเอียดเพิ่มเติม",
"SetupWebsite": "ติดตั้งเว็บไซต์",
"SetupWebsiteError": "เกิดข้อผิดพลาดขณะเพิ่มเว็บไซต์",
diff --git a/lang/tr.json b/lang/tr.json
index 786cd5c038b..cdaff970c37 100644
--- a/lang/tr.json
+++ b/lang/tr.json
@@ -602,7 +602,6 @@
"WhereThe": "Buraya"
},
"Installation": {
- "CommunityNewsletter": "Yeni eklentiler, yeni özellikler gibi güncellemeleri bana eposta ile bildir.",
"Congratulations": "Tebrikler",
"CongratulationsHelp": " Tebrikler! Piwik Başarıyla kuruldu.<\/p> JavaScript kodunu sayfalarınıza yerleştirdiğinizden emin olun ve ilk ziyaretçilerinizi beklemeye başlayın!<\/p>",
"DatabaseCreation": "Veritabaı oluşturma",
@@ -624,7 +623,6 @@
"PasswordRepeat": "Şifre (tekrar)",
"PercentDone": "%s %% tamamlandı",
"Requirements": "Piwik gereklilikleri",
- "SecurityNewsletter": "Piwik yükseltmeleri ve güvenlik uyarılarını bana eposta ile bildir.",
"SetupWebsite": "Web sitesi ekle",
"SetupWebsiteError": "Web site eklenirken bir sorun oluştu.",
"SetupWebSiteName": "Web site adı",
diff --git a/lang/uk.json b/lang/uk.json
index 3b4c14a5d75..4fbf03600e2 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -422,7 +422,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "де відвідана сторінка містить запит методу JavaScript piwikTracker.trackGoal()(%sдізнатись більше%s)"
},
"Installation": {
- "CommunityNewsletter": "Надішліть повідомлення з поновленнями від спільноти (нові плагіни, нові переваги, і т. д.)",
"ConfigurationHelp": "Файл конфігурації Piwik не налаштований. Видаліть файл config\/config.ini.php та перезапустіть інсталяцію, або виправте налаштування підєднання до бази даних.",
"ConfirmDeleteExistingTables": "Впевнені що хочете видалити таблиці: %s з бази даних? ЗАСТЕРЕЖЕННЯ: ДАНІ З ЦИХ ТАБЛИЦЬ НЕМОЖУТЬ БУТИ ВІДНОВЛЕНІ!",
"Congratulations": "Вітання!",
@@ -452,7 +451,6 @@
"PleaseFixTheFollowingErrors": "Виправте наступні помилки",
"PluginDescription": "Процес інсталяції Piwik. Інсталяція зазвичай виконується тільки один раз. Якщо файл конфігурації config\/config.inc.php видалено, інсталяція розпочнеться знову.",
"Requirements": "Системні вимоги Piwik",
- "SecurityNewsletter": "Надішліть повідомлення при виході нових версій Piwik та поновленнях безпеки",
"SetupWebsite": "Налаштувати веб-сайт",
"SetupWebsiteError": "Виникла помилка при додаванні веб-сайту",
"SetupWebSiteName": "назва веб-сайту",
diff --git a/lang/vi.json b/lang/vi.json
index c6406a9fe5e..763d392a50b 100644
--- a/lang/vi.json
+++ b/lang/vi.json
@@ -935,7 +935,6 @@
"PluginDescription": "Tạo ra hình ảnh đồ họa PNG tĩnh đẹp cho các báo cáo Piwik."
},
"Installation": {
- "CommunityNewsletter": "gửi email cho tôi với bản cập nhật chung (bổ sung mới, tính năng mới, vv)",
"ConfigurationHelp": "Tập tin cấu hình Piwik của bạn dường như là sai. Bạn có thể loại bỏ config\/config.ini.php và tiếp tục cài đặt, hoặc sửa chữa các thiết lập kết nối cơ sở dữ liệu.",
"ConfirmDeleteExistingTables": "Bạn có chắc chắn muốn xóa các table (bảng) sau khỏi database của bạn: %s? CHÚ Ý: DỮ LIỆU BỊ XÓA TỪ CÁC TABLE NÀY SẼ KHÔNG THỂ KHÔI PHỤC LẠI ĐƯỢC!",
"Congratulations": "Xin chúc mừng",
@@ -978,7 +977,6 @@
"PluginDescription": "Quá trình cài đặt của Piwik. Cài đặt thường được thực hiện một lần duy nhất. Nếu các tập tin cấu hình config\/config.inc.php bị xóa, việc cài đặt sẽ bắt đầu lại.",
"Requirements": "Piwik yêu cầu",
"RestartWebServer": "Sau khi tạo ra sự thay đổi này, khởi động lại máy chủ web của bạn",
- "SecurityNewsletter": "gửi email cho tôi khi có các bản cập nhật của Piwik và các thông báo về bảo mật",
"SeeBelowForMoreInfo": "Xêm thêm thông tin ở dưới đây",
"SetupWebsite": "Thiết lập một website",
"SetupWebsiteError": "Có lỗi xảy ra khi thêm website",
diff --git a/lang/zh-cn.json b/lang/zh-cn.json
index efd46618013..d7bf8471cd5 100644
--- a/lang/zh-cn.json
+++ b/lang/zh-cn.json
@@ -103,6 +103,7 @@
"CustomLogoHelpText": "您可以定制 Piwik 图标,显示在用户界面和报表邮件上。",
"DevelopmentProcess": "虽然在%s开发过程%s中已进行过成千上万次的自动测试,Beta 版本测试仍然是实现 Piwik \"无错理念\"的很重要的一部分。",
"EmailServerSettings": "邮件服务器设置",
+ "FaviconUpload": "选择上传图标",
"ForBetaTestersOnly": "仅供测试",
"ImageTracking": "图片跟踪",
"ImageTrackingIntro1": "当访客禁用 JavaScript 或者无法使用 JavaScript 时,您也可以使用图片跟踪链接来统计访客。",
@@ -183,6 +184,7 @@
"DonateCall3": "如果 Piwik 对您的业务有很大帮助,%1$s 请考虑捐助!%2$s",
"DonateFormInstructions": "点击下面的滑动条设定金额,然后点 Subscribe 按钮捐款",
"ExcludeRowsWithLowPopulation": "显示了所有的数据 %s 不显示低密度数据",
+ "ExternalHelp": "帮助(在新标签页打开)",
"FlattenDataTable": "本报表已分级显示 %s 改为不分级显示",
"HowMuchIsPiwikWorth": "您觉得 Piwik 值多少?",
"IncludeRowsWithLowPopulation": "没有显示低密度数据 %s 显示所有数据",
@@ -291,6 +293,7 @@
"StepUnzippingPlugin": "正在解压插件",
"StepUnzippingTheme": "正在解压布景",
"Support": "支持",
+ "TeaserExtendPiwik": "使用插件主题来扩展Piwik",
"Theme": "主题",
"Themes": "主题",
"ThemesDescription": "主题可以改变Piwik外观,提供一个全新的视觉体验,让您享受分析报告。",
@@ -330,6 +333,7 @@
"MajorUpdateWarning2": "下面的建议对大型网站很重要。",
"NoteForLargePiwikInstances": "大型 Piwik 网站重要注意事项",
"NoteItIsExpectedThatQueriesFail": "注意: 如果您手动执行这些查询,预计当中会有一些错误。在此情況下,只需忽略错误,然后执行以下列表。",
+ "NotificationClickToUpdatePlugins": "点击这里更新你的插件:",
"PiwikHasBeenSuccessfullyUpgraded": "Piwik 升级成功!",
"PiwikUpdatedSuccessfully": "Piwik 升级成功!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Piwik 数据库将从版本 %1$s 升级到新版本 %2$s。",
@@ -945,7 +949,6 @@
"PluginDescription": "为 Piwik 统计报表生成漂亮的PNG图片。"
},
"Installation": {
- "CommunityNewsletter": "订阅社区更新的邮件通知(如: 新插件、新功能等。)",
"ConfigurationHelp": "您的 Piwik 配置文件可能出错了,您可以删除 config\/config.ini.php 然后继续安裝,或者改正数据库的参数设定。",
"ConfirmDeleteExistingTables": "您确定要从您的数据库中删除表: %s吗?警告: 删除的表中的数据无法恢复!",
"Congratulations": "恭喜您",
@@ -988,7 +991,6 @@
"PluginDescription": "Piwik 的安裝程序。通常只需要安裝一次。如果配置文件 config\/config.inc.php 被刪除,那么将会重新安裝。",
"Requirements": "Piwik 需求",
"RestartWebServer": "做过这个改动之后,请重新启动网络服务器。",
- "SecurityNewsletter": "寄给我重要的 Piwik 更新与安全性警告电子邮件通知",
"SeeBelowForMoreInfo": "更详细的信息请看下面",
"SetupWebsite": "设定一个网站",
"SetupWebsiteError": "增加此网站时出现错误",
diff --git a/lang/zh-tw.json b/lang/zh-tw.json
index d7bfd439aae..52ab18a018f 100644
--- a/lang/zh-tw.json
+++ b/lang/zh-tw.json
@@ -464,7 +464,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "在被訪問的頁面包含一個 JavaScript piwikTracker.trackGoal() 方法(%s知道更多%s)"
},
"Installation": {
- "CommunityNewsletter": "寄給我社群更新的電子郵件通知(如:新外掛、新功能等等。)",
"ConfigurationHelp": "你的 Piwik 設定檔看起來似乎損毀了。你可以移除 config\/config.ini.php 然後重新安裝,或是修正資料庫的連結設定。",
"ConfirmDeleteExistingTables": "你確定要從你的資料庫刪除資料表 %s 嗎? 警告: 這些資料表刪除後將無法復原!",
"Congratulations": "恭喜你",
@@ -493,7 +492,6 @@
"PleaseFixTheFollowingErrors": "請修復以下錯誤",
"PluginDescription": "Piwik 的安裝程式。通常只需要安裝一次。如果設定檔 config\/config.inc.php 被刪除,那麼將會重新安裝。",
"Requirements": "Piwik 需求",
- "SecurityNewsletter": "寄給我重要的 Piwik 更新與安全性警告電子郵件通知",
"SetupWebsite": "設定一個網站",
"SetupWebsiteError": "當增加此網站時發生了一個錯誤",
"SetupWebSiteName": "網站名稱",
diff --git a/libs/UserAgentParser/UserAgentParser.php b/libs/UserAgentParser/UserAgentParser.php
index a57554e4dae..009bc5a7853 100644
--- a/libs/UserAgentParser/UserAgentParser.php
+++ b/libs/UserAgentParser/UserAgentParser.php
@@ -655,9 +655,10 @@ static public function getBrowserNameFromId($browserId)
if (isset(self::$browserIdToName[$browserId])) {
return self::$browserIdToName[$browserId];
}
- if(class_exists('DeviceDetector')) {
- if( !empty(DeviceDetector::$browsers[$browserId])) {
- return DeviceDetector::$browsers[$browserId];
+ if(class_exists('DeviceDetector\\Parser\\Client\\Browser')) {
+ $browsers = DeviceDetector\Parser\Client\Browser::getAvailableBrowsers();
+ if( array_key_exists($browserId, $browsers)) {
+ return $browsers[$browserId];
}
}
return false;
@@ -692,8 +693,11 @@ static public function getOperatingSystemNameFromId($osId)
return self::$operatingSystemsIdToName[$osId];
}
- if(class_exists('DeviceDetector')) {
- return DeviceDetector::getOsNameFromId($osId);
+ if(class_exists('DeviceDetector\\Parser\\OperatingSystem')) {
+ if ($osId == 'BOT') {
+ return 'Bot';
+ }
+ return DeviceDetector\Parser\OperatingSystem::getNameFromId($osId);
}
return false;
}
diff --git a/libs/upgradephp/upgrade.php b/libs/upgradephp/upgrade.php
index c45ee1ca956..5ab68078a83 100644
--- a/libs/upgradephp/upgrade.php
+++ b/libs/upgradephp/upgrade.php
@@ -127,7 +127,11 @@ function mysqli_set_charset($link, $charset)
if(function_exists('parse_ini_file')) {
// provide a wrapper
function _parse_ini_file($filename, $process_sections = false) {
- return file_exists($filename) ? parse_ini_file($filename, $process_sections) : false;
+ if(!file_exists($filename)) {
+ return false;
+ }
+ // Note: INI_SCANNER_RAW is important here!
+ return parse_ini_file($filename, $process_sections, INI_SCANNER_RAW);
}
} else {
// we can't redefine parse_ini_file() if it has been disabled
diff --git a/piwik.php b/piwik.php
index 3e5ef800be2..d992ef56a51 100644
--- a/piwik.php
+++ b/piwik.php
@@ -40,6 +40,13 @@
@ignore_user_abort(true);
+if (file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')) {
+ $vendorDirectory = PIWIK_INCLUDE_PATH . '/vendor';
+} else {
+ $vendorDirectory = PIWIK_INCLUDE_PATH . '/../..';
+}
+require_once $vendorDirectory . '/autoload.php';
+
require_once PIWIK_INCLUDE_PATH . '/core/Plugin/Controller.php';
require_once PIWIK_INCLUDE_PATH . '/core/Plugin/ControllerAdmin.php';
@@ -78,18 +85,6 @@
require_once PIWIK_INCLUDE_PATH . '/core/Cookie.php';
require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
-/*
- * Manually require needed vendor libraries, as composers autorequire would do too much
- */
-if (file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')) {
- $vendorDirectory = PIWIK_INCLUDE_PATH . '/vendor';
-} else {
- $vendorDirectory = PIWIK_INCLUDE_PATH . '/../..';
-}
-require_once $vendorDirectory . '/autoload.php';
-require_once $vendorDirectory . '/mustangostang/spyc/Spyc.php';
-require_once $vendorDirectory . '/piwik/device-detector/DeviceDetector.php';
-
session_cache_limiter('nocache');
@date_default_timezone_set('UTC');
diff --git a/plugins/API/API.php b/plugins/API/API.php
index b0a9147b470..e04d3fea4e3 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -54,6 +54,7 @@ class API extends \Piwik\Plugin\API
public function getPiwikVersion()
{
Piwik::checkUserHasSomeViewAccess();
+ Piwik::checkUserIsNotAnonymous();
return Version::VERSION;
}
diff --git a/plugins/API/Menu.php b/plugins/API/Menu.php
index d9048617edc..a76f87ee0eb 100644
--- a/plugins/API/Menu.php
+++ b/plugins/API/Menu.php
@@ -11,9 +11,12 @@
use Piwik\Menu\MenuTop;
use Piwik\Menu\MenuUser;
use Piwik\Piwik;
+use DeviceDetector\Parser\OperatingSystem;
class Menu extends \Piwik\Plugin\Menu
{
+ const DD_SHORT_NAME_ANDROID = 'AND';
+ const DD_SHORT_NAME_IOS = 'IOS';
public function configureTopMenu(MenuTop $menu)
{
@@ -34,14 +37,13 @@ private function addTopMenuMobileApp(MenuTop $menu)
return;
}
- if (!class_exists("DeviceDetector")) {
+ 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.
Същото е ако JavaScript не е разрешен или браузъра не го поддържа.
За да използвате стандартен изглед разрешете JavaScript от настройките на Вашия браузър и %1$sопитайте отново%2$s.
",
+ "LongMonthFormat": "%longYear%, %longMonth%",
+ "LongWeekFormat": "%dayFrom% %longMonthFrom% - %dayTo% %longMonthTo% %longYearTo%",
"MakeADifference": "Открийте разликата: %1$sДарете%2$s за фонд Piwik 2.0!",
"MakeOneTimeDonation": "Направете еднократно дарение",
"NoPrivilegesAskPiwikAdmin": "Вие се логнахте в като '%s' но изглежда че нямате разрешение от Piwik. %s Попитайте Вашият Piwik администратор (клик на email)%s да Ви даде \"поглед\" достъп до сайта.",
@@ -209,6 +212,10 @@
"SharePiwikLong": "Здравейте! Туко-що открих прекрасен софтуер с отворен код: Piwik! Piwik позволява проследяването на посетителите на даден сайт безплатно. Задължително трябва да го пробвате!",
"SharePiwikShort": "Piwik! Софтуер с отворен код за уеб анализ. Притежавайте вашите собствени данни.",
"ShareThis": "Сподели това",
+ "ShortDateFormat": "%shortDay% %day% %shortMonth%",
+ "ShortDateFormatWithYear": "%day% %shortMonth% %shortYear%",
+ "ShortMonthFormat": "%shortMonth% %longYear%",
+ "ShortWeekFormat": "%dayFrom% %shortMonthFrom% - %dayTo% %shortMonthTo% %shortYearTo%",
"ShowJSCode": "Покажи JavaScript кода за вмъкване в сайта",
"SubscribeAndBecomePiwikSupporter": "Пристъпете към сигурната страница за плащане (PayPal) за да станете Piwik Supporter!",
"SupportPiwik": "Подкрепи Piwik!",
@@ -246,6 +253,7 @@
"Developer": "Разработчик",
"DoMoreContactPiwikAdmins": "За да се инсталира нова добавка или нова тема, трябва да се свържете с вашия администратор, който отговаря за Piwik.",
"DownloadAndInstallPluginsFromMarketplace": "Можете автоматично да свалите и инсталирате нови добавки от %sмагазина за приложения%s.",
+ "EmailToEnquireUpdatedVersion": "Моля, пишете до %1$s и изискайте актуална версия на %2$s.",
"EnjoyAnotherLookAndFeelOfThemes": "Насладете се на друг изглед и усещане",
"FeaturedPlugin": "Препоръчана добавка",
"GetEarlyAccessForPaidPlugins": "Забележка: всички от наличните добавки са безплатни за използване; в бъдеще ще има платена секция в магазина за приложения (%sсвържете се с нас%s за предварителен достъп).",
@@ -435,7 +443,8 @@
"SpecialRequest": "Имате ли специална молба към екипа на Piwik?",
"ThankYou": "Благодаря, че помогнахте да направим Piwik по-добър!",
"TopLinkTooltip": "Може да ни кажете какво мислите, както и да изискате професионална помощ.",
- "VisitTheForums": "Посетете нашият %sФорум%s"
+ "VisitTheForums": "Посетете нашият %sФорум%s",
+ "WantToThankConsiderDonating": "Смятате, че Piwik е страхотен и искате да ни благодарите?"
},
"General": {
"AbandonedCarts": "Отказани колички",
@@ -969,15 +978,16 @@
"PluginDescription": "Генерирайте красиви статични PNG графични изображения за всеки Piwik доклад."
},
"Insights": {
+ "ControlComparedToDescription": "Ръст спрямо",
"DayComparedToPreviousDay": "предишен ден",
"Filter": "Филтър",
"FilterOnlyNew": "Само нови",
+ "TitleRowDisappearedDetails": "'%1$s' намалял с %2$s и изчезна в %3$s сравнено с %4$s.",
"WeekComparedToPreviousWeek": "предишна седмица",
"YearComparedToPreviousYear": "предишна година"
},
"Installation": {
"CollaborativeProject": "Piwik е съвместен проект, изграден с много любов от хора от всички краища на света.",
- "CommunityNewsletter": "изпращай по пощата информация за нови добавки, функции и др.",
"ConfigurationHelp": "Вашият Piwik конфигурационен файл изглежда не добре конфигуриран. Можете да премахнете config\/config.ini.php и да започнете инсталирането, или да поправите настройките за връзка към БД-то.",
"ConfirmDeleteExistingTables": "Наистина ли искате да изтриете следните таблици: %s от базата от данни (БД)? ПРЕДУПРЕЖДЕНИЕ: ДАННИТЕ ОТ ТАЗИ ТАБЛИЦА НЕ МОГАТ ДА БЪДАТ ВЪЗСТАНОВЕНИ!!!",
"Congratulations": "Поздравления",
@@ -1009,6 +1019,7 @@
"NfsFilesystemWarning": "Вашият сървър ползва NFS файлова система.",
"NfsFilesystemWarningSuffixAdmin": "Това означава, че Piwik ще бъде изключително бавен, когато използвате файлови базирани сесии.",
"NoConfigFound": "Piwik конфигурационният файл не е открит.
» Можете да инсталирате Piwik сега<\/a><\/b>
Ако преди това сте инсталирали Piwik и имате в базата от данни (БД) таблици - можете да запазите Вашите данни!<\/small>",
+ "NotSupported": "не се поддържа",
"Optional": "По избор",
"Password": "парола",
"PasswordDoNotMatch": "паролата не съвпада",
@@ -1018,7 +1029,6 @@
"PluginDescription": "Инсталационния процес на Piwik. Инсталацията обикновено се прави само веднъж. Ако конфигурационния файл config\/ config.inc.php е изтрит, инсталацията ще започне отново.",
"Requirements": "Piwik Изисквания",
"RestartWebServer": "След като направите промените, рестартирайте уеб сървара.",
- "SecurityNewsletter": "изпращай на имейл информация за обновленията и сигнали относно сигурността",
"SeeBelowForMoreInfo": "Вижте по-долу за повече информация.",
"SetupWebsite": "Настройки на сайт",
"SetupWebsiteError": "Възникнала е грешка при добавянето на сайт",
@@ -1170,6 +1180,7 @@
"HowtoDeleteAnAccount": "Натиснете продължително, за да изтриете профил.",
"HowtoDeleteAnAccountOniOS": "Плъзнете от ляво на дясно за да изтриете акаунта",
"HowtoLoginAnonymous": "Оставете потребителско име и парола празно за анонимен вход",
+ "HttpTimeout": "HTTP сесията изтече",
"IncompatiblePiwikVersion": "Piwik версията, която използвате не е съвместима с Piwik Mobile 2. Обновете вашата инсталация на Piwik и пробвайте отново или инсталирайте Piwik Mobile 1.",
"LastUpdated": "Последна актуализация: %s",
"LoadingReport": "Зарежда се %s",
@@ -1244,6 +1255,7 @@
"MultiSites": {
"Evolution": "Развитие",
"LoadingWebsites": "Зарежда сайтовете",
+ "Pagination": "%s - %s като %s",
"PluginDescription": "Показва обобщена статистика\/резюме. В момента се поддържа като основна добавка в Piwik.",
"TopLinkTooltip": "Сравнете статистиката за всички ваши уебсайтове."
},
diff --git a/lang/ca.json b/lang/ca.json
index ff8fad2447f..cc3ac28576b 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -777,7 +777,6 @@
"PluginDescription": "Generar belles imatges estàtiques en gràfic PNG per qualsevol informe del Piwik."
},
"Installation": {
- "CommunityNewsletter": "Envieu-me correus-e amb les actualitzacions de la comunitat (nous connectors, funcionalitats, etc.)",
"ConfigurationHelp": "Sembla que el vostre fitxer de configuració del Piwik no està definit correctament. Podeu eliminar el fitxer confi\/config.ini.php i torna a començar la instal·lació o corregir les preferències de connexió a la Base de dades.",
"ConfirmDeleteExistingTables": "Realment voleu esborrar les taules %s de la base de dades? AVÍS: NO ES PODRAN RECUPERAR LES DADES!",
"Congratulations": "Felicitats",
@@ -816,7 +815,6 @@
"PluginDescription": "Procès d'instal·lació del Piwik. El procès d'instal·lació només es dur a temre una vegada. Si el fitxer de configuració config\/config.inc.php s'esborrà es tornarà a iniciar la instal·lació.",
"Requirements": "Requeriments del Piwik",
"RestartWebServer": "Desprès de fer aquest canvi, reinicieu el vostre servidor web.",
- "SecurityNewsletter": "Envieu-me correus-e sobre les actualitzacions grans del Piwik i les alertes de seguretat",
"SeeBelowForMoreInfo": "Llegiu a continuació per més informació.",
"SetupWebsite": "Configura un lloc",
"SetupWebsiteError": "Hi ha hagut un problema en el moment d'afegir el lloc.",
diff --git a/lang/cs.json b/lang/cs.json
index 8b259f7ef90..3e5612f1117 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -718,7 +718,6 @@
"PluginDescription": "Generuje nádherné statické PNG grafy pro jakékoli Piwik hlášení."
},
"Installation": {
- "CommunityNewsletter": "pošli mi e mail s komunitními aktualizacem (nové zásuvné moduly, nové funkce, atd.)",
"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",
@@ -752,7 +751,6 @@
"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.",
- "SecurityNewsletter": "pošli mi e-mail při hlavních aktualizacích a bezpečnostních oznámeních Piwiku",
"SetupWebsite": "Nastavit Web",
"SetupWebsiteError": "Při přidávání Webu se vyskytla chyba",
"SetupWebSiteName": "jméno webu",
diff --git a/lang/da.json b/lang/da.json
index dc3f57fe5c3..0bec0dcb26b 100644
--- a/lang/da.json
+++ b/lang/da.json
@@ -104,6 +104,7 @@
"CustomLogoHelpText": "Du kan tilpasse Piwik logo, der bliver vist i brugergrænsefladen og e-mail rapporter.",
"DevelopmentProcess": "Mens vores%s udviklingsproces%s omfatter tusindvis af automatiske tests, spiller betatestere en nøglerolle i at opnå \"ingen fejl politikken\" i Piwik.",
"EmailServerSettings": "E-mail-server indstillinger",
+ "FaviconUpload": "Vælg Favicon til overførelse",
"ForBetaTestersOnly": "Kun for beta testere",
"ImageTracking": "Sporing vha. et billede",
"ImageTrackingIntro1": "Når en besøgende har deaktiveret JavaScript, eller når JavaScript kan ikke bruges, kan sporing vha. et billede bruges til at spore besøgende.",
@@ -154,11 +155,12 @@
"PiwikIsInstalledAt": "Piwik er installeret på",
"PluginDescription": "Piwik administration.",
"PluginSettingChangeNotAllowed": "Du må ikke ændre værdien \"%s\" i udvidelse \"%s\"",
+ "PluginSettingReadNotAllowed": "Du har ikke tilladelse til at læse værdien af indstillingen \"%s\" i udvidelsen \"%s\"",
"PluginSettings": "Programudvidelses indstilinger",
"PluginSettingsIntro": "Her kan du ændre indstillingerne for følgende 3. parts udvidelsesmoduler:",
"PluginSettingsValueNotAllowed": "Værdien for feltet \"%s\" i udvidelsen \"%s\" er ikke tilladt",
- "SendPluginUpdateCommunication": "Send mig en e-mail når der er en ny opdatering af denne plugin.",
- "SendPluginUpdateCommunicationHelp": "En e-mail vil blive sendt til Superbrugere, når der er en ny version tilgængelig for dette plugin.",
+ "SendPluginUpdateCommunication": "Send mig en e-mail når der er en ny opdatering af denne programudvidelse.",
+ "SendPluginUpdateCommunicationHelp": "En e-mail vil blive sendt til Superbrugere, når der er en ny version tilgængelig for denne programudvidelse.",
"StableReleases": "Hvis Piwik er en kritisk del af virksomheden, anbefaler vi at man bruger den nyeste stabile udgave. Hvis man bruger den nyeste beta, og finder en fejl eller har et forslag, %sse her%s.",
"TrackAGoal": "Spor et mål",
"TrackingCode": "Sporingskode",
@@ -188,6 +190,7 @@
"DonateCall3": "Synes du, at Piwik har tilføjet væsentlig merværdi til dig eller din virksomhed, %1$s overvej at donere!%2$s",
"DonateFormInstructions": "Klik på skyderen for at vælge et beløb, og klik derefter på vælg at donere.",
"ExcludeRowsWithLowPopulation": "Alle rækker vises %s Udeluk lav population",
+ "ExternalHelp": "Hjælp (åbnes i en ny fane)",
"FlattenDataTable": "Rapporten er hierarkisk %s lav den ikke hierakisk",
"HowMuchIsPiwikWorth": "Hvor meget er Piwik værd for dig?",
"IncludeRowsWithLowPopulation": "Rækker med lav population er skjult %s Vis alle rækker",
@@ -260,6 +263,7 @@
"Developer": "Udvikler",
"DoMoreContactPiwikAdmins": "For at installere en ny programudvidelse eller et nyt tema, kontakt Piwik administratoren.",
"DownloadAndInstallPluginsFromMarketplace": "Du kan automatisk hente og installere nye programudvidelser fra %smarkedspladsen%s.",
+ "EmailToEnquireUpdatedVersion": "Send e-mail til %1$s og forespørg om en opdateret version af %2$s.",
"EnjoyAnotherLookAndFeelOfThemes": "Nyd et andet udseende",
"FeaturedPlugin": "Udvalgte programudvidelser",
"GetEarlyAccessForPaidPlugins": "Bemærk: alle programudvidelser er tilgængelige gratis på nuværende tidspunkt; i fremtiden vil vi sætte betalte programudvidelser på markedspladsen (%skontakt os%s for tidlig adgang).",
@@ -297,6 +301,7 @@
"PluginKeywords": "Nøgleord",
"PluginNotCompatibleWith": "%1$s udvidelsesmodul er ikke kompatibelt med %2$s.",
"PluginNotWorkingAlternative": "Hvis du har brugt programudvidelsen,kan du måske finde en nyere version på markedspladen. Hvis ikke, kan du afinstallere den.",
+ "PluginRequirement": "%1$s kræver %2$s",
"PluginsManagement": "Udvidelsesmodul administration",
"PluginUpdateAvailable": "Du bruger version %s en ny version %s er tilgængelig.",
"PluginVersionInfo": "%1$s fra %2$s",
@@ -339,6 +344,7 @@
"CreatingBackupOfConfigurationFile": "Opretter sikkerhedskopi af konfigurationsfiler i %s",
"CriticalErrorDuringTheUpgradeProcess": "Kritisk fejl under opdateringen:",
"DatabaseUpgradeRequired": "Database opdatering er nødvendig",
+ "DisablingIncompatiblePlugins": "Deaktivere inkompatible programudvidelsen: %s",
"DownloadingUpdateFromX": "Henter opdatering fra %s",
"DownloadX": "Hent %s",
"EmptyDatabaseError": "Databasen %s er tom. Redigere eller fjern Piwiks konfigurationsfil.",
@@ -358,22 +364,23 @@
"HelpMessageIntroductionWhenError": "Ovenstående vises fejlmeddelelsen. Den bør hjælpe med at forklare årsagen, men hvis der behøves mere hjælp:",
"HelpMessageIntroductionWhenWarning": "Opdateringen er fuldført, men det var nogle småproblemer under processen. Læs detaljerne ovenfor. For yderligere hjælp:",
"HighTrafficPiwikServerEnableMaintenance": "Hvis du administrerer en Piwik server med høj trafik, anbefaler vi at du %s midlertidigt deaktivere sporing af besøgende og sætte Piwik brugergrænseflade i vedligeholdelsestilstand%s",
+ "IncompatbilePluginsWillBeDisabledInfo": "Bemærk: Nogle udvidelsesmoduler er ikke kompatible med Piwik %s. De vil blive deaktiveret, når du opgraderer:",
"InstallingTheLatestVersion": "Installerer den seneste version",
"MajorUpdateWarning1": "Dette er en stor opdatering! Den vil tage længere tid end normalt.",
"MajorUpdateWarning2": "Det følgende råd er især vigtigt for store installationer.",
"NoteForLargePiwikInstances": "Vigtig bemærkning til store Piwik installationer",
"NoteItIsExpectedThatQueriesFail": "Bemærk: Hvis du manuelt udfører disse forespørgsler, forventes det, at nogle af dem mislykkes. I så fald ignoreres fejlene blot, og køre den næste forespørgsel på listen.",
- "NotificationClickToUpdatePlugins": "Klik her for at opdatere dit plugins nu:",
+ "NotificationClickToUpdatePlugins": "Klik her for at opdatere dit programudvidelser nu:",
"NotificationClickToUpdateThemes": "Klik her for at opdatere dine temaer nu:",
"NotificationSubjectAvailableCoreUpdate": "Ny Piwik %s er nu tilgængelig",
- "NotificationSubjectAvailablePluginUpdate": "En opdatering til tilgængelig for dine Piwik plugins",
+ "NotificationSubjectAvailablePluginUpdate": "En opdatering til tilgængelig for dine Piwik programudvidelser",
"PiwikHasBeenSuccessfullyUpgraded": "Piwik blev opdateret!",
"PiwikUpdatedSuccessfully": "Piwik er opdateret!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Piwik vil blive opgraderet fra version %1$s til den nye version %2$s.",
"PluginDescription": "Piwik ajourføringsmekanisme",
"ReadyToGo": "Klar, parat, start?",
"TheFollowingPluginsWillBeUpgradedX": "Følgende udvidelsesmoduler vil blive opgraderet: %s.",
- "ThereIsNewPluginVersionAvailableForUpdate": "Nogle plugins du bruger er blevet opdateret på markedspladsen:",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Nogle programudvidelser du bruger er blevet opdateret på markedspladsen:",
"ThereIsNewVersionAvailableForUpdate": "Ny version af Piwik er tilgængelig",
"TheUpgradeProcessMayFailExecuteCommand": "Hvis du har en stor Piwik database, kan opdateringer tage for lang tid at køre i browseren. I denne situation, kan du udføre opdateringen fra kommandolinjen: %s",
"TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Database opgraderingen kan tage lidt tid, vær tålmodig.",
@@ -442,6 +449,7 @@
"ContactThePiwikTeam": "Kontakt Piwik holdet",
"DoYouHaveBugReportOrFeatureRequest": "Har du en fejlrapport eller en anmodning om en funktion?",
"GetInTouch": "Vi værdsætter din feedback og læser altid alle meddelelser uanset om du har en forretningsidé, ønsker at finde en Piwik konsulent, fortæl os en succeshistorie eller blot sige hej!",
+ "HowToCreateIssue": "Læs anbefalingerne om at skrive en god %1$sfejlrapport%2$s eller %3$sfunktionsforslag%4$s. Derefter %5$sregister%6$s eller %7$slogind%8$s på vores emne tracker og opret en %9$snyt emne%10$s.",
"IWantTo": "Jeg ønsker at:",
"LearnWaysToParticipate": "Lær om alle de måder, du kan %s bidrage%s",
"ManuallySendEmailTo": "Send din besked manuelt til",
@@ -451,10 +459,13 @@
"RateFeatureLeaveMessageLike": "Vi er glad for du kan lide det! Fortæl os hvad du kan lide mest eller hvis du har forslag til en ny funktion.",
"RateFeatureSendFeedbackInformation": "Piwik vil sende Piwik holdet en e-mail (med din e-mail-adresse), så vi kan komme i kontakt med dig, hvis du har nogen spørgsmål.",
"RateFeatureThankYouTitle": "Tak for din bedømmelse '%s'!",
+ "RateFeatureTitle": "Kan du lide '%s' funktionen? Bedøm og efterlade en kommentar",
"SendFeedback": "Send tilbagemelding",
"SpecialRequest": "Har du en speciel anmodning til Piwik holdet?",
"ThankYou": "Tak, fordi du hjælper med at gøre Piwik bedre!",
"TopLinkTooltip": "Fortæl os hvad du mener eller anmod om professionel support",
+ "ViewAnswersToFAQ": "Se svarene på %sOfte stillede spørgsmål%s",
+ "ViewUserGuides": "Lær at konfigurere Piwik og hvordan man effektivt analyserer data med vores %1$sbrugervejledninger%2$s",
"VisitTheForums": "Besøg %s Forum%s",
"WantToThankConsiderDonating": "Synes du at Piwik er fantastisk og ønsker du at takke os?"
},
@@ -624,6 +635,7 @@
"ExceptionUnableToStartSession": "Kan ikke starte sessionen.",
"ExceptionUndeletableFile": "Kunne ikke slette %s",
"ExceptionUnreadableFileDisabledMethod": "Konfigurationsfilen (%s) kunne ikke læses. Udbyderen kan have deaktiveret %s.",
+ "ExpandDataTableFooter": "Ændre visualiseringen eller konfigurer rapporten",
"Export": "Eksporter",
"ExportAsImage": "Eksporter som billede",
"ExportThisReport": "Eksporter datasættet i andre formater",
@@ -757,6 +769,7 @@
"Password": "Adgangskode",
"Period": "Periode",
"Piechart": "Cirkeldiagram",
+ "PiwikIsACollaborativeProjectYouCanContributeAndDonate": "%1$sPiwik%2$s er et samarbejdsprojekt af %7$sPiwik holdets%8$s medlemmer samt mange andre bidragydere i hele verden. Hvis du er en fan af Piwik, kan du hjælpe med: at finde ud af %3$shvordan du hjælper Piwik%4$s eller %5$sdoner nu%6$s til at hjælpe med at finansiere Piwik 3.0!",
"PiwikXIsAvailablePleaseNotifyPiwikAdmin": "%1$s er tilængelig. Kontakt venligst %2$sPiwik administrator%3$s.",
"PiwikXIsAvailablePleaseUpdateNow": "Piwik %1$s er tilgængelig. %2$sOpdater nu!%3$s (se %4$sændringer%5$s).",
"PleaseSpecifyValue": "Angiv værdi for '%s'.",
@@ -840,6 +853,7 @@
"Table": "Tabel",
"TagCloud": "Emne sky",
"Tax": "Moms",
+ "TimeAgo": "%s siden",
"TimeOnPage": "Tid på siden",
"Today": "I dag",
"Total": "Total",
@@ -998,6 +1012,7 @@
"PluginDescription": "Generere flotte statiske PNG diagrammer til Piwik rapporter."
},
"Insights": {
+ "ControlComparedToDescription": "Vækst i forhold til",
"ControlFilterByDescription": "Vis alle, kun ændringer, kun nye eller kun forsvundne",
"DatePeriodCombinationNotSupported": "Det er ikke muligt at generere rapporter til disse datoer og kombination af perioder.",
"DayComparedToPreviousDay": "Foregående dag",
@@ -1012,11 +1027,24 @@
"FilterOnlyNew": "Kun nye",
"IgnoredChanges": "Ændringer, der påvirker mindre end %s besøgende bliver ignoreret",
"MonthComparedToPreviousMonth": "forrige måned",
- "MonthComparedToPreviousYear": "samme måned forrige år"
+ "MonthComparedToPreviousYear": "samme måned forrige år",
+ "MoversAndShakersWidgetTitle": "Op- og Nedgang",
+ "NoResultMatchesCriteria": "Ingen rækker svarer til kriteriet",
+ "OverviewWidgetTitle": "Indsigtsoversigt",
+ "TitleConsideredInsightsChanges": "Rækkerne steget eller faldet med mindst %1$s besøg (%2$s%% af %3$s samlede antal besøg).",
+ "TitleConsideredInsightsGrowth": "Følgende rækker har en vækst på mindst %1$s%% i forhold til %2$s.",
+ "TitleConsideredMoversAndShakersChanges": "Betragtes kun ændringer, hvis de voksede med mere end %1$s%% besøg eller faldt med mindre end %2$s%% besøg, nye poster hvis de er steget med mere end %3$s%% besøg (%4$s), og er forsvundne rækker, hvis de faldt med mindre end %5$s%% besøg (%6$s).",
+ "TitleConsideredMoversAndShakersGrowth": "%1$s ændret fra %2$s til %3$s i forhold til %4$s. Baseret på dette forventes en videreudvikling for hver række på %5$s%%.",
+ "TitleRowChangeDetails": "'%1$s' ændres fra %2$s (%3$s) til %4$s (%5$s) %6$s.",
+ "TitleRowDisappearedDetails": "'%1$s' faldt med %2$s og er forsvand i %3$s i forhold til %4$s.",
+ "TitleRowMoverAndShaker": "Denne række havde en større effekt end gennemsnittet.",
+ "TitleRowNewDetails": "'%1$s' øget med %2$s og er ny i forhold til %3$s.",
+ "WeekComparedToPreviousWeek": "forrige uge",
+ "WidgetCategory": "Indsigt",
+ "YearComparedToPreviousYear": "forrige år"
},
"Installation": {
"CollaborativeProject": "Piwik er et samarbejdsprojekt, bygget med kærlighed af folk fra hele verden.",
- "CommunityNewsletter": "send e-mail med opdateringer (nye udvidelsesmoduler, nye muligheder m.m.)",
"ConfigurationHelp": "Piwik konfigurationsfil synes at være konfigureret forkert. Fjern enten config\/config.ini.php og genoptage installation eller ret database forbindelsesindstillinger.",
"ConfirmDeleteExistingTables": "Bekræft sletning af tabellerne: %s fra databasen? ADVARSEL: DATA FRA DISSE TABELLER KAN IKKE GENSKABES!",
"Congratulations": "Tillykke",
@@ -1052,6 +1080,7 @@
"NfsFilesystemWarningSuffixAdmin": "Det betyder at Piwik vil være ekstremt langsom når der benyttes filbaserede sessioner.",
"NfsFilesystemWarningSuffixInstall": "Brug af filbaserede sessioner på et NFS filsystem er ekstrem langsomt, så Piwik vil benytte database sessioner. Hvis du har mange samtidige kontrolpanelsbrugere, vil du muligvis være nødt til at hæve det maksimale antal af klient forbindelser til database serveren.",
"NoConfigFound": "Piwik-konfigurationsfil blev ikke fundet og du prøver at få adgang til Piwik.
Se på memory_limit i php.ini filen hvis nødvendig.",
"SystemCheckOpenURL": "Åbn netadresse",
@@ -1307,6 +1339,7 @@
"MultiSites": {
"Evolution": "Udvikling",
"LoadingWebsites": "Loading websites",
+ "Pagination": "%s - %s af %s",
"PluginDescription": "Viser multi-websted resumé\/statistik. Vedligeholdes som et Piwik-kerne udvidelsesmodul.",
"TopLinkTooltip": "Sammenlign analyse statistik for alle hjemmesider."
},
@@ -1522,6 +1555,7 @@
"AutoArchivePreProcessed": "Segmenterede rapporter behandles på forhånd (er hurtigere, kræver archive.php cron)",
"AutoArchiveRealTime": "Segmenterede rapporter behandles tidstro",
"ChooseASegment": "Vælg et segment",
+ "DataAvailableAtLaterDate": "Dine segmenterede analyserapporter vil være tilgængelig senere. Vi undskylder ulejligheden.",
"DefaultAllVisits": "Alle besøg",
"DragDropCondition": "Træk og slip betingelse",
"LoadingSegmentedDataMayTakeSomeTime": "Behandling af segmenterede besøgsdata kan tage et par minutter...",
@@ -1532,10 +1566,13 @@
"SegmentDisplayedThisWebsiteOnly": "kun dette websted",
"SegmentIsDisplayedForWebsite": "og vises for",
"SegmentNotApplied": "Segment '%s' anvendes ikke",
+ "SegmentNotAppliedMessage": "Du beder om data til brugerdefineret segment '%s', Piwik konfigurationen forhindrer tidstro behandling af rapporter pga ydeevne grunde.",
"SelectSegmentOfVisitors": "Vælg et segment af besøgende:",
"ThisSegmentIsVisibleTo": "Segmentet er synligt for:",
"VisibleToAllUsers": "Alle brugere",
"VisibleToMe": "mig",
+ "YouDontHaveAccessToCreateSegments": "Du har ikke det nødvendige adgangsniveau til at oprette og redigere segmenter.",
+ "YouMayChangeSetting": "Alternativt kan du ændre indstillingen i konfigurationsfilen (%s), eller redigere dette segment og vælg '%s'.",
"YouMustBeLoggedInToCreateSegments": "Du skal være logget ind for at oprette og anvende brugerdefinerede besøgssegmenter."
},
"SEO": {
@@ -2304,6 +2341,7 @@
"ForAnonymousUsersReportDateToLoadByDefault": "Standard rapport dato for anonyme brugere",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Hvis du ønsker at ændre adgangskode skriv en ny. Ellers lad være blank.",
"InjectedHostCannotChangePwd": "Du besøger med en ukendt vært (%1$s). Du kan ikke ændre din adgangskode, før problemet er løst.",
+ "LastSeen": "Sidst set",
"MainDescription": "Bestem hvilke brugere der har hvilken Piwik adgang til hjemmesiderne. Adgang kan også sættes på alle hjemmesider på en gang.",
"ManageAccess": "Administrer adgang",
"MenuAnonymousUserSettings": "Anonym bruger indstilling",
diff --git a/lang/de.json b/lang/de.json
index 0f14b4e8661..1ea591646a2 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -104,6 +104,7 @@
"CustomLogoHelpText": "Hier kann das Piwik-Logo angepasst werden, das in der Benutzeroberfläche sowie in E-Mail-Berichten verwendet wird.",
"DevelopmentProcess": "Auch wenn unser %sEntwicklungsprozess%s tausende an automatisierten Tests beinhaltet, haben Beta-Tester eine Schlüsselrolle um die \"No Bug Policy\" in Piwik zu gewährleisten.",
"EmailServerSettings": "E-Mail-Server-Einstellungen",
+ "FaviconUpload": "Wählen Sie ein Favicon für den Upload aus",
"ForBetaTestersOnly": "Nur für Beta-Tester",
"ImageTracking": "Tracking mit Hilfe eines Bildes",
"ImageTrackingIntro1": "Für den Fall, dass ein Besucher JavaScript deaktiviert hat, oder JavaScript nicht verwendet werden kann, können Sie das Tracking mit Hilfe eines Bildes nutzen um Besucher zu tracken.",
@@ -1026,7 +1027,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik ist ein gemeinschaftliches Projekt, geschaffen mit Liebe von Menschen aus der ganzen Welt.",
- "CommunityNewsletter": "Senden Sie mir per E-Mail Community-Aktualisierungen (neue Plugins, neue Funktionen usw.)",
"ConfigurationHelp": "Ihre Konfigurationsdatei enthält Fehler. Sie können entweder die config\/config.php löschen und neu installieren, oder die Einstellung zur Datenbankverbindung korrigieren.",
"ConfirmDeleteExistingTables": "Wollen Sie wirklich die Tabellen: %s aus der Datenbank löschen? WARNUNG: DATEN AUS DIESEN TABELLEN KÖNNEN NICHT WIEDERHERGESTELLT WERDEN!",
"Congratulations": "Glückwunsch",
@@ -1062,6 +1062,7 @@
"NfsFilesystemWarningSuffixAdmin": "Dies bedeutet, dass Piwik extrem langsam arbeitet wenn Dateibasierte Sessions genutzt werden.",
"NfsFilesystemWarningSuffixInstall": "Die Benutzung von dateibasierten Sessions auf NFS ist extrem langsam, deshalb wird Piwik datenbankbasierte Sessions nutzen. Falls es viele gleichzeitige Zugriffe auf das Dashboard gibt sollten Sie möglicherweise die maximal erlaubten Client-Zugriffe auf den Datenbankserver erhöhen.",
"NoConfigFound": "Die Piwik-Konfigurationsdatei konnte nicht gefunden werden und es wird versucht, eine Piwik-Seite aufzurufen.
» Sie können Piwik jetzt installieren<\/a><\/b>
Wenn Sie Piwik zuvor schon installiert haben und noch Tabellen in der Datenbank vorhanden sind: Keine Angst, Sie können diese Tabellen und die enthaltenen Daten weiterhin verwenden!<\/small>",
+ "NotSupported": "nicht unterstützt",
"Optional": "Optional",
"Password": "Passwort",
"PasswordDoNotMatch": "Passwörter stimmen nicht überein",
@@ -1072,7 +1073,6 @@
"Requirements": "Anforderungen für die Piwik-Installation",
"RestartWebServer": "Nach dieser Änderung müssen Sie den Webserver neu starten.",
"ReusingTables": "Tabellen werden wiederverwendet",
- "SecurityNewsletter": "Senden Sie mir per E-Mail Informationen zu wichtigen Piwik-Aktualisierungen sowie Sicherheitswarnungen",
"SeeBelowForMoreInfo": "Unterhalb können Sie weitere Informationen finden.",
"SetupWebsite": "Webseite hinzufügen",
"SetupWebsiteError": "Beim Hinzufügen der Webseite ist ein Fehler aufgetreten",
@@ -1318,6 +1318,7 @@
"MultiSites": {
"Evolution": "Entwicklung",
"LoadingWebsites": "Lade Webseiten",
+ "Pagination": "%s - %s von %s",
"PluginDescription": "Zeigt eine Zusammenfassung über die Statistiken aller Webseiten. Wird derzeit als ein Piwik Core Plugin verwaltet",
"TopLinkTooltip": "Vergleichen Sie Webanalytikstatistiken für alle Ihre Webseiten."
},
@@ -1549,6 +1550,7 @@
"ThisSegmentIsVisibleTo": "Dieses Segment ist sichtbar für:",
"VisibleToAllUsers": "alle Benutzer",
"VisibleToMe": "mich",
+ "YouDontHaveAccessToCreateSegments": "Sie haben nicht die benötigten Berechtigungen um Segmente anzulegen und zu bearbeiten.",
"YouMayChangeSetting": "Alternativ können Sie die Einstellung in der Konfigurationsdatei (%s) ändern, oder ändern Sie dieses Segment und wählen '%s'.",
"YouMustBeLoggedInToCreateSegments": "Sie müssen sich anmelden um eigene Besuchersegmente anzulegen oder zu bearbeiten."
},
diff --git a/lang/el.json b/lang/el.json
index e56b1f309cf..5fd13158682 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -103,6 +103,7 @@
"CustomLogoHelpText": "Μπορείτε να προσαρμόσετε το λογότυπο του Piwik που θα εμφανίζεται στο περιβάλλον εργασίας του χρήστη και στις αναφορές αλληλογραφίας.",
"DevelopmentProcess": "Παρόλο που η %sδιαδικασία μας ανάπτυξης%s περιλαμβάνει χιλιάδες αυτοματοποιημένων ελέγχων, οι χρήστες δοκιμαστές παίζουν ένα κύριο ρόλο στο να πετύχουμε την \"Χωρίς σφάλματα πολιτική\" του Piwik.",
"EmailServerSettings": "Ρυθμίσεις διακομιστή ηλεκτρονικής αλληλογραφίας",
+ "FaviconUpload": "Επιλέξτε ένα favicon για ανέβασμα",
"ForBetaTestersOnly": "Για χρήστες δοκιμαστές μόνο",
"ImageTracking": "Παρακολούθηση Εικόνων",
"ImageTrackingIntro1": "Όταν ένας επισκέπτης έχει απενεργοποιήσει την JavaScript ή όταν η JavaScript δεν μπορεί να χρησιμοποιηθεί, μπορείτε να χρησιμοποιήσετε ένα σύνδεσμο εντοπισμού εικόνων για να παρακολουθείτε τους επισκέπτες.",
@@ -153,6 +154,7 @@
"PiwikIsInstalledAt": "Το Piwik εγκαταστάθηκε στο",
"PluginDescription": "Περιοχή διαχείρισης του Piwik.",
"PluginSettingChangeNotAllowed": "Δεν επιτρέπεται να αλλάξετε την τιμή της ρύθμισης \"%s\" στο πρόσθετο \"%s\"",
+ "PluginSettingReadNotAllowed": "Απαγορεύεται να δείτε την τιμή της ρύθμισης \"%s\" στο πρόσθετο \"%s\"",
"PluginSettings": "Ρυθμίσεις πρόσθετου",
"PluginSettingsIntro": "Εδώ μπορείτε να αλλάξετε τις ρυθμίσεις των παρακάτω πρόσθετων από τρίτους:",
"PluginSettingsValueNotAllowed": "Η τιμή για το πεδίο \"%s\" στο πρόσθετο \"%s\" δεν είναι επιτρεπτή",
@@ -1041,7 +1043,6 @@
},
"Installation": {
"CollaborativeProject": "Το Piwik είναι ένα συνεργατικό έργο, δημιουργημένο με αγάπη από ανθρώπους από όλο τον κόσμο.",
- "CommunityNewsletter": "Ενεργοποίηση αλληλογραφίας για ενημερώσεις της κοινότητας (νέα πρόσθετα, νέα χαρακτηριστικά, κλπ.)",
"ConfigurationHelp": "Οι ρυθμίσεις του Piwik φαίνεται ότι έχουν πρόβλημα. Μπορείτε να απομακρύνετε το config\/config.ini.php και να συνεχίσετε την εγκατάσταση ή διορθώστε τις ρυθμίσεις σύνδεσης της βάσης δεδομένων.",
"ConfirmDeleteExistingTables": "Θέλετε σίγουρα να διαγράψετε τους πίνακες: %s από τη βάση δεδομένων σας; ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ΤΑ ΔΕΔΟΜΕΝΑ ΑΠΟ ΑΥΤΟΥΣ ΤΟΥ ΠΙΝΑΚΕΣ ΔΕΝ ΘΑ ΜΠΟΡΟΥΝ ΝΑ ΑΝΑΚΤΗΘΟΥΝ!",
"Congratulations": "Συγχαρητήρια",
@@ -1077,6 +1078,7 @@
"NfsFilesystemWarningSuffixAdmin": "Αυτό σημαίνει ότι το Piwik θα είναι εξαιρετικά αργό, όταν χρησιμοποιεί το αρχείο συνεδρίες σε αρχεία (file based sessions).",
"NfsFilesystemWarningSuffixInstall": "Οι συνεδρίες αρχείων (file based sessions) στο NFS είναι εξαιρετικά αργές, έτσι το Piwik θα χρησιμοποιήσει συνεδρίες με βάση δεδομένων. Εάν έχετε πολλούς ταυτόχρονους χρήστες, μπορεί να χρειαστεί να αυξήσετε τον μέγιστο αριθμό συνδέσεων προς τον εξυπηρετητή της βάσης δεδομένων.",
"NoConfigFound": "Το αρχείο ρυθμίσεων του Piwik δεν βρέθηκε και προσπαθείτε να ανοίξετε μια σελίδα Piwik.
» Μπορείτε να εγκαταστήσετε το Piwik τώρα<\/a><\/b>
αν έχετε εγκαταστήσει το Piwik προηγούμενα και έχετε κάποιους πίνακες στη βάση δεδομένων σας, μην ανησυχείτε, μπορείτε να χρησιμοποιήσετε ξανά τους ίδιους πίνακες και να διατηρήσετε τα υπάρχοντα δεδομένα σας!<\/small>",
+ "NotSupported": "δεν υποστηρίζεται",
"Optional": "Προαιρετικά",
"Password": "Κωδικός πρόσβασης",
"PasswordDoNotMatch": "ο κωδικός δεν ταιριάζει",
@@ -1087,7 +1089,6 @@
"Requirements": "Απαιτήσεις Piwik",
"RestartWebServer": "Μετά από αυτή την αλλαγή, επανεκκινήστε τον διακομιστή σας.",
"ReusingTables": "Γίνεται χρήση των Πινάκων",
- "SecurityNewsletter": "Ενεργοποίηση αλληλογραφίας για τις βασικές αναβαθμίσεις του Piwik και ειδοποιήσεις ασφάλειας",
"SeeBelowForMoreInfo": "Δείτε παρακάτω για περισσότερες πληροφορίες.",
"SetupWebsite": "Ρύθμιση μιας ιστοσελίδας",
"SetupWebsiteError": "Συνέβη ένα σφάλμα κατά της προσθήκη της ιστοσελίδας",
@@ -1103,6 +1104,8 @@
"SystemCheck": "Έλεγχος συστήματος",
"SystemCheckAutoUpdateHelp": "Σημείωση: Η αναβάθμιση με Ένα Πάτημα του Piwik απαιτεί δικαιώματα εγγραφής στο φάκελο Piwik και στα περιεχόμενά του.",
"SystemCheckCreateFunctionHelp": "Το Piwik χρησιμοποιεί ανώνυμες συναρτήσεις για ανακλήσεις.",
+ "SystemCheckCronArchiveProcess": "Cron αρχειοθέτησης",
+ "SystemCheckCronArchiveProcessCLI": "Διαχείριση εργασιών από CLI",
"SystemCheckDatabaseHelp": "Το Piwik απαιτεί είτε την επέκταση mysqli ή τις επεκτάσεις PDO και pdo_mysql.",
"SystemCheckDebugBacktraceHelp": "Η εντολή View::factory δεν θα μπορεί να δημιουργήσει προβολές για το κληθέν πρότυπο.",
"SystemCheckError": "Συνέβη ένα σφάλμα – πρέπει να διορθωθεί πριν συνεχίσετε",
@@ -1334,6 +1337,7 @@
"MultiSites": {
"Evolution": "Πρόοδος",
"LoadingWebsites": "Γίνεται φόρτωση των ιστοτόπων",
+ "Pagination": "%s - %s από %s",
"PluginDescription": "Προβάλει ενεργή περίληψη\/στατιστικά πολλών ιστοσελίδων. Προς το παρόν διατηρείτε ως πρόσθετο του πυρήνα του Piwik.",
"TopLinkTooltip": "Σύγκριση στατιστικών Ιστού για όλες τις ιστοσελίδες σας."
},
@@ -1565,6 +1569,7 @@
"ThisSegmentIsVisibleTo": "Το τμήμα αυτό είναι ορατό σε:",
"VisibleToAllUsers": "όλους τους χρήστες",
"VisibleToMe": "εμένα",
+ "YouDontHaveAccessToCreateSegments": "Δεν διαθέτετε την απαιτούμενη πρόσβαση ασφαλείας για να δημιουργείτε και να τροποποιείτε τμήματα.",
"YouMayChangeSetting": "Εναλλακτικά, μπορείτε να αλλάξετε τη ρύθμιση στο αρχείο ρυθμίσεων (%s), ή να τροποποιήσετε το Τμήμα αυτό και να επιλέξετε '%s'.",
"YouMustBeLoggedInToCreateSegments": "Θα πρέπει να έχετε κάνει είσοδο για να δημιουργήσετε και να επεξεργαστείτε προσαρμοσμένα τμήματα επισκεπτών."
},
diff --git a/lang/en.json b/lang/en.json
index 55b3e6872b6..a44f85bbb7b 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -1045,7 +1045,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik is a collaborative project, built with love by people from all over the world.",
- "CommunityNewsletter": "email me with community updates (new plugins, new features, etc.)",
"ConfigurationHelp": "Your Piwik configuration file appears to be misconfigured. You can either remove config\/config.ini.php and resume installation, or correct the database connection settings.",
"ConfirmDeleteExistingTables": "Are you sure you want to delete the tables: %s from your database? WARNING: DATA FROM THESE TABLES CANNOT BE RECOVERED!",
"Congratulations": "Congratulations",
@@ -1091,7 +1090,8 @@
"Requirements": "Piwik Requirements",
"RestartWebServer": "After making this change, restart your web server.",
"ReusingTables": "Reusing the Tables",
- "SecurityNewsletter": "email me with major Piwik upgrades and security alerts",
+ "PiwikOrgNewsletter": "email me with major Piwik community updates",
+ "PiwikProNewsletter": "I am interested in %sPiwik PRO%s services (no more than 1 email a month)",
"SeeBelowForMoreInfo": "See below for more information.",
"SetupWebsite": "Setup a Website",
"SetupWebsiteError": "There was an error when adding the website",
@@ -1153,6 +1153,7 @@
"SystemCheckZlibHelp": "You need to configure and rebuild PHP with \"zlib\" support enabled, --with-zlib.",
"SystemCheckCronArchiveProcess": "Archive Cron",
"SystemCheckCronArchiveProcessCLI": "Managing processes via CLI",
+ "SystemCheckSessionAutostart": "To prevent some issues please set the following in your php.ini file: session.auto_start=0",
"NotSupported": "not supported",
"Tables": "Creating the Tables",
"TablesCreatedSuccess": "Tables created with success!",
diff --git a/lang/es.json b/lang/es.json
index 9448e79606e..ed5b80b73f2 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -1043,7 +1043,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik es un proyecto de colaboración, creado con amor por personas de todo el mundo",
- "CommunityNewsletter": "envíeme un email con las actualizaciones de la comunidad (nuevos plugins, nuevas características, etc.)",
"ConfigurationHelp": "Su archivo de configuración de Piwik parece estar desconfigurado. Puede remover el archivo config\/config.ini.php y seguir la instalación, o corregir la configuración de conexión de la base de datos.",
"ConfirmDeleteExistingTables": "¿Está seguro de que desea borrar las tablas: %s de su base de datos? ADVERTENCIA: ¡LOS DATOS DE ESTAS TABLAS NO SE PUEDEN RECUPERAR!",
"Congratulations": "Enhorabuena",
@@ -1087,7 +1086,6 @@
"Requirements": "Requisitos de Piwik",
"RestartWebServer": "Luego de realizar este cambio renicia tu servidor web.",
"ReusingTables": "Reutilizando las tablas",
- "SecurityNewsletter": "envíeme un email con las principales actualizaciones y alertas de seguridad de Piwik",
"SeeBelowForMoreInfo": "Véase más adelante para mayor información.",
"SetupWebsite": "Configurar una página web",
"SetupWebsiteError": "Se ha producido un error al añadir el sitio web",
diff --git a/lang/et.json b/lang/et.json
index 890725a9f3a..f2adbedbb76 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -729,7 +729,6 @@
},
"Installation": {
"CollaborativeProject": "Piwik on koostööprojekt, mis on valminud armastusega inimeste poolt üle kogu maailma.",
- "CommunityNewsletter": "saada mulle e-postiga kommuuni uuendusi (uued pluginad, lisavõimalused jne)",
"Congratulations": "Õnnitleme",
"CongratulationsHelp": "
» Puoi installare Piwik ora.<\/a><\/b>
Se hai già installato in precedenza Piwik e nel tuo Database sono presenti delle tabelle della vecchia installazione, non preoccuparti, puoi riutilizzarle e salvare i dati già esistenti!<\/small>",
+ "NotSupported": "non supportato",
"Optional": "Opzionale",
"Password": "Password",
"PasswordDoNotMatch": "Le Password non coincidono",
@@ -1087,7 +1089,6 @@
"Requirements": "Requisiti di Piwik",
"RestartWebServer": "Dopo aver fatto questa modifica, riavviare il server web.",
"ReusingTables": "Riutilizzo delle Tabelle",
- "SecurityNewsletter": "Informami via e-mail sugli aggiornamenti più importanti di Piwik",
"SeeBelowForMoreInfo": "Guarda sotto per altre informazioni.",
"SetupWebsite": "Configura un sito web",
"SetupWebsiteError": "C'è stato un errore durante l'aggiunta del sito web",
@@ -1103,6 +1104,8 @@
"SystemCheck": "Controllo del sistema",
"SystemCheckAutoUpdateHelp": "Nota: Lo \"One Click update\" di Piwik richiede i permessi di scrittura sulla cartella Piwik e il suo contenuto.",
"SystemCheckCreateFunctionHelp": "Piwik usa funzioni anonime per i callbacks.",
+ "SystemCheckCronArchiveProcess": "Cron-task Archivio",
+ "SystemCheckCronArchiveProcessCLI": "Gestione processi tramite CLI",
"SystemCheckDatabaseHelp": "Piwik necessita dell'estensione mysqli o in alternativa sia l'estensione PDO sia l'estensione pdo_mysql",
"SystemCheckDebugBacktraceHelp": "View::factory non può creare viste (view) per il modulo chiamante.",
"SystemCheckError": "Si è verificato un errore - deve essere corretto prima di proseguire",
@@ -1334,6 +1337,7 @@
"MultiSites": {
"Evolution": "Evoluzione",
"LoadingWebsites": "Caricamento siti web",
+ "Pagination": "%s - %s di %s",
"PluginDescription": "Mostra un sommario delle statistiche per il multi-sito. Attualmente mantenuto come un plugin Piwik del core.",
"TopLinkTooltip": "Compara le statistiche web di tutti i tuoi siti web."
},
@@ -1565,6 +1569,7 @@
"ThisSegmentIsVisibleTo": "Questo segmento è visibile a:",
"VisibleToAllUsers": "tutti gli utenti",
"VisibleToMe": "me",
+ "YouDontHaveAccessToCreateSegments": "Non hai un livello d'accesso adeguato per creare e modificare i segmenti.",
"YouMayChangeSetting": "In alternativa, puoi cambiare le impostazioni nel file di configurazione (%s) o modificare questo Segmento e scegliere '%s'.",
"YouMustBeLoggedInToCreateSegments": "Devi avere effettuato l'accesso per creare e modificare i segmenti personalizzati dei visitatori."
},
diff --git a/lang/ja.json b/lang/ja.json
index 1ecd282957a..e5f49fe0ed6 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -340,7 +340,7 @@
"YouCanUpgradeAutomaticallyOrDownloadPackage": "自動的にバージョン %s にアップデートするか、パッケージをダウンロードして手作業でインストールすることができます:",
"YouCouldManuallyExecuteSqlQueries": "データベースのタイムアウト、ブラウザのタイムアウト、あるいはその他の問題により Piwik がアップグレードに失敗し、さらにコマンドラインアップデータを使用することができない場合は、Piwik をアップデートするために手作業で SQL クエリーを実行することができます。",
"YouMustDownloadPackageOrFixPermissions": "Piwik が現在のインストールに上書きすることができません。 ディレクトリ/ファイルのパーミッションを修正するか、パッケージをダウンロードして手作業でバージョン %s をインストールすることができます:",
- "YourDatabaseIsOutOfDate": "Piwik データベースが旧式のため、継続する前にアップグレードが必要です。"
+ "YourDatabaseIsOutOfDate": "Piwik データベースが古いため、継続する前にアップグレードが必要です。"
},
"CustomVariables": {
"ColumnCustomVariableName": "カスタム変数名",
@@ -586,11 +586,13 @@
"JsTrackingTag": "JavaScript トラッキングタグ",
"Language": "言語",
"LastDays": "最後の %s 日間(今日を含む)",
+ "LastDaysShort": "最後の %s 日間",
"LayoutDirection": "ltr",
"Live": "ライブ",
"Loading": "読み込み中...",
"LoadingData": "データ読み込み中...",
"LoadingPopover": "ロード中 %s...",
+ "LoadingPopoverFor": "ロード中 %s のために",
"Locale": "ja_JP.UTF-8",
"Logout": "ログアウト",
"LongDay_1": "月曜日",
@@ -612,7 +614,7 @@
"LongMonth_7": "7月",
"LongMonth_8": "8月",
"LongMonth_9": "9月",
- "MainMetrics": "主メトリクス",
+ "MainMetrics": "メインメトリクス",
"Matches": "一致",
"MediumToHighTrafficItIsRecommendedTo": "比較的トラフィックの高いウェブサイトでは、今日のリポートの処理間隔を 30分(%s 秒) または 1時間(%s 秒) に設定することをお勧めします。",
"Metadata": "メタデータ",
@@ -623,6 +625,7 @@
"MinutesSeconds": "%1$s 分 %2$s 秒",
"Mobile": "モバイル",
"Monthly": "毎月",
+ "MonthlyReport": "毎月",
"MonthlyReports": "月次リポート",
"More": "以上",
"MoreDetails": "詳細",
@@ -630,6 +633,7 @@
"MultiSitesSummary": "全ウェブサイト",
"Name": "名前",
"NbActions": "アクション数",
+ "NbSearches": "内部検索数",
"NDays": "%s 日間",
"Never": "しない",
"NewReportsWillBeProcessedByCron": "Piwik アーカイブ処理がブラウザによる表示をトリガーとしない場合、新しいリポートは crontab によって処理されます。",
@@ -637,6 +641,7 @@
"NewVisitor": "新規ビジター",
"NewVisits": "新規ビジット",
"Next": "次へ",
+ "NMinutes": "%s 分",
"No": "いいえ",
"NoDataForGraph": "このグラフのデータはありません。",
"NoDataForTagCloud": "このタグクラウドのデータはありません。",
@@ -649,6 +654,7 @@
"NumberOfVisits": "訪問数",
"NVisits": "%s ビジット",
"Ok": "OK",
+ "OneAction": "1アクション",
"OneDay": "1日",
"OneMinute": "1分",
"OneVisit": "1ビジット",
@@ -659,8 +665,13 @@
"OperationAtLeast": "少なくとも",
"OperationAtMost": "最大で",
"OperationContains": "含む",
- "OperationIs": "で",
+ "OperationDoesNotContain": "含まれていない",
+ "OperationEquals": "等しい",
+ "OperationGreaterThan": "より大きい",
+ "OperationIs": "である",
"OperationIsNot": "ではありません",
+ "OperationLessThan": "以下",
+ "OperationNotEquals": "等しくない",
"OptionalSmtpPort": "オプションです。 非暗号化と TLS SMTP では 25 が、SSL SMTP では 465 がデフォルトになります。",
"Options": "オプション",
"OrCancel": "または %s キャンセル %s",
@@ -683,6 +694,7 @@
"PoweredBy": "Powered by",
"Previous": "前へ",
"PreviousDays": "以前の %s 日間(今日は含まない)",
+ "PreviousDaysShort": "以前の %s 日間",
"Price": "価格",
"ProductConversionRate": "製品のコンバージョン率",
"ProductRevenue": "製品の収益",
@@ -760,8 +772,8 @@
"TotalRevenue": "総収益",
"TransitionsRowActionTooltip": "訪問者が、このページの表示前後に何をしていたか見てください",
"TransitionsRowActionTooltipTitle": "トランジションを開く",
- "TranslatorEmail": "imagine@drupal.jp",
- "TranslatorName": "Takafumi\/Drupal Japan - http:\/\/drupal.jp",
+ "TranslatorEmail": "hello@piwik.org",
+ "TranslatorName": "Takafumi\/Drupal Japan - http:\/\/drupal.jp Takeshi Ueda\/Piwik Japan Team - http:\/\/piwikjapan.org",
"UniquePurchases": "ユニークな購入",
"Unknown": "不明",
"Upload": "アップロード",
@@ -901,10 +913,25 @@
"PluginDescription": "Piwikリポートの美しい静的PNGグラフ画像を生成します。"
},
"Insights": {
- "DayComparedToPreviousDay": "前の日"
+ "ControlComparedToDescription": "比較する実績値は",
+ "DayComparedToPreviousDay": "前の日",
+ "DayComparedToPreviousWeek": "前週の同じ日",
+ "DayComparedToPreviousYear": "去年の同じ日",
+ "Filter": "フィルター",
+ "FilterIncreaserAndDecreaser": "増加と減少した値",
+ "FilterOnlyDecreaser": "減少した値のみ",
+ "FilterOnlyDisappeared": "消失した値のみ",
+ "FilterOnlyIncreaser": "増加した値のみ",
+ "FilterOnlyMovers": "変化のあった値のみ",
+ "FilterOnlyNew": "新しい値のみ",
+ "MonthComparedToPreviousMonth": "前の月",
+ "MonthComparedToPreviousYear": "去年の同じ月",
+ "OverviewWidgetTitle": "インサイトの概要",
+ "WeekComparedToPreviousWeek": "前の週",
+ "WidgetCategory": "インサイト",
+ "YearComparedToPreviousYear": "前の年"
},
"Installation": {
- "CommunityNewsletter": "コミュニティアップデート(新しいプラグイン、新機能等)がある場合に、自分宛にメールを送信",
"ConfigurationHelp": "Piwik 設定ファイルが誤設定されているようです。 config\/config.ini.php を削除してインストールを再開するか、データベースの接続設定を修正してください。",
"ConfirmDeleteExistingTables": "本当にデータベースからテーブル %s を削除しますか? 警告: これらのテーブルのデータを復旧することはできません!",
"Congratulations": "おめでとうございます",
@@ -927,6 +954,7 @@
"LargePiwikInstances": "高トラフィック環境で Piwik を使用するためのヒント",
"Legend": "説明",
"NoConfigFound": "Piwik の設定ファイルを見つけることができませんでしたが、あなたは Piwik ページにアクセスしようとしています。
»ただちに Piwik をインストール<\/a>することができます。<\/b>
以前に Piwik をインストールしたことがあり、DB に多少のデータがある場合でも心配しないでください。 既存のデータを保持したまま、同じテーブルを再利用することができます!<\/small>",
+ "NotSupported": "サポートされていません",
"Optional": "オプション",
"Password": "パスワード",
"PasswordDoNotMatch": "パスワードが一致しませんでした",
@@ -936,7 +964,6 @@
"PluginDescription": "Piwik のインストール処理を行います。 インストールは通常1回のみですが、設定ファイル(config\/config.inc.php)が削除された場合は、インストールが再度開始されます。",
"Requirements": "Piwik の動作環境",
"RestartWebServer": "この変更を行った後、ウェブサーバーを再起動してください。",
- "SecurityNewsletter": "Piwik にメジャーアップグレードやセキュリティ警告がある場合に、自分宛にメールを送信",
"SetupWebsite": "ウェブサイトのセットアップ",
"SetupWebsiteError": "ウェブサイトを追加する際にエラーが発生しました",
"SetupWebSiteName": "ウェブサイトの名前",
@@ -1141,6 +1168,7 @@
"SearchEngines": "検索エンジン",
"SearchEnginesDocumentation": "検索エンジンを参照してウェブサイトに来たビジター。詳細のリポートは %s こちら %s",
"SearchEnginesReportDocumentation": "このリポートは、どの検索エンジンがこのウェブサイトにユーザーを呼びこんだかを示しています。 %s テーブル内の行をクリックすると、ユーザーが特定の検索エンジンを使って何を検索していたかを確認できます。",
+ "Socials": "ソーシャルネットワーク",
"SubmenuSearchEngines": "検索エンジンとキーワード",
"SubmenuWebsites": "ウェブサイト",
"Type": "参照元タイプ",
@@ -1280,6 +1308,7 @@
"BouncesInline": "%s のバウンス"
},
"UserCountry": {
+ "City": "都市",
"Continent": "大陸",
"continent_afr": "アフリカ",
"continent_amc": "中央アメリカ",
@@ -1568,7 +1597,7 @@
"Geolocation": "ジオロケーション",
"ISPDatabase": "ISP データベース",
"Latitude": "緯度",
- "Location": "位置",
+ "Location": "場所",
"LocationDatabase": "ロケーションデータベース",
"LocationProvider": "ロケーションプロバイダ",
"Longitude": "経度",
@@ -1576,7 +1605,7 @@
"OrgDatabase": "組織のデータベース",
"PluginDescription": "ビジターの国をリポートします。",
"Region": "地域",
- "SubmenuLocations": "位置"
+ "SubmenuLocations": "場所"
},
"UserCountryMap": {
"Cities": "都市",
diff --git a/lang/ka.json b/lang/ka.json
index b0b8d0bc314..f2caf337e3d 100644
--- a/lang/ka.json
+++ b/lang/ka.json
@@ -422,7 +422,6 @@
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "როდესაც მონახულებული გვედი შეიცავს JavaScript piwikTracker.trackGoal() მეთოდის (%sდამატებითი ინფორმაცია%s) გამოძახებას"
},
"Installation": {
- "CommunityNewsletter": "მაცნობეთ ელ.ფოსტაზე სისტემის განახლებების (ახალი პლაგინები, ახალი ფუნქციები და სხვ.) შესახებ",
"ConfigurationHelp": "თქვენი Piwik კონფიგურაციის ფაილი როგორც ჩანს ცუდადაა კონფიგურირებული. თქვენ შეგიძლიათ ან წაშალოთ config\/config.ini.php და დაასრულოთ ინსტალირება, ან შესაწოროთ მონაცემთა ბაზასთან დაკავშირების პარამეტრები.",
"ConfirmDeleteExistingTables": "დარწმუნებული ხართ, რომ გსურთ ცხრილების წაშლა: %s თქვენი მონაცემთა ბაზიდან?",
"Congratulations": "მილოცვა",
@@ -452,7 +451,6 @@
"PleaseFixTheFollowingErrors": "გთხოვთ, შეასწოროთ შემდეგი შეცდომები",
"PluginDescription": "Piwik–ის დაინსტალირება. ინსტალირება ჩვეულებრივ ხდება მხოლოდ ერთხელ. თუ კონფიგურაციის ფაილი config\/config.inc.php წაიშლება, ინსტალირება თავიდან დაიწყება.",
"Requirements": "Piwik მოთხოვნები",
- "SecurityNewsletter": "მაცნობეთ ელ.ფოსტაზე Piwik–ის მნიშვნელოვანი განახლებების და უსაფრთხოების საკითხების შესახებ",
"SetupWebsite": "ვებ საიტის მოწყობა",
"SetupWebsiteError": "ვებ საიტის დამატების დროს მოხდა შეცდომა",
"SetupWebSiteName": "ვებ საიტის სახელი",
diff --git a/lang/ko.json b/lang/ko.json
index a3d941b8284..deee4f01e5f 100644
--- a/lang/ko.json
+++ b/lang/ko.json
@@ -792,7 +792,6 @@
"PluginDescription": "Piwik 보고서의 아름다운 정적 PNG 그래프 이미지를 생성합니다."
},
"Installation": {
- "CommunityNewsletter": "커뮤니티 업데이트를 이메일로 받기 (새로운 플러그인,새로운 기능 등등)",
"ConfigurationHelp": "Piwik 설정 파일이 잘못 설정되어있는 것 같습니다. config\/config.ini.php를 제거하고 설치를 다시 시작하거나 데이터베이스의 연결 설정을 수정하세요.",
"ConfirmDeleteExistingTables": "테이블 %s 을(를) 데이터베이스로부터 삭제하기를 원합니까? 경고: 이 테이블의 데이터는 복구되지 않습니다!",
"Congratulations": "축하합니다",
@@ -831,7 +830,6 @@
"PluginDescription": "Piwik 설치 작업을 수행합니다. 설치는 보통 한 번 하지만 설정 파일 (config\/config.inc.php)이 삭제된 경우 설치가 다시 시작됩니다.",
"Requirements": "Piwik 요구 사항",
"RestartWebServer": "변경한 후 웹서버를 다시 시작하세요.",
- "SecurityNewsletter": "Piwik의 주요 업그레이드 그리고 보안 경고를 이메일로 받기",
"SeeBelowForMoreInfo": "자세한 내용은 아래를 참조하세요.",
"SetupWebsite": "웹사이트 설정",
"SetupWebsiteError": "웹사이트 추가중에 에러가 있었습니다",
diff --git a/lang/lt.json b/lang/lt.json
index 12e8639767b..f37678df6c7 100644
--- a/lang/lt.json
+++ b/lang/lt.json
@@ -456,7 +456,6 @@
"WhereThe": "kur"
},
"Installation": {
- "CommunityNewsletter": "pranešti man apie bendruomenės atnaujinimus (naujus papildinius, naujas savybes ir pan.)",
"ConfigurationHelp": "Jūsų Piwik konfigūracijos failas sukonfigūruotas netinkamai. Jūs galite ištrinti config\/config.ini.php failą arba pakartoti diegimą, arba pakoreguoti susijungimo su duomenų baze nustatymus.",
"ConfirmDeleteExistingTables": "Ar tikrai norite ištrinti lenteles: %s duombazėje? ĮSPĖJIMAS: ŠIŲ LENTELIŲ DUOMENYS TAPS NEATKURIAMAIS!",
"Congratulations": "Sveikiname",
@@ -486,7 +485,6 @@
"PleaseFixTheFollowingErrors": "Prašome ištaisyti šias klaidas",
"PluginDescription": "Piwik diegimo procesas. Diegimas paprastai atliekamas vieną kartą. Jei konfigūracijos failas config\/config.inc.php ištrinamas, bus paleistas papildomas diegimas.",
"Requirements": "Piwik reikalavimai sistemai",
- "SecurityNewsletter": "pranešti man apie svarbesnius Piwik atnaujinimus bei saugos įspėjimus",
"SetupWebsite": "Svetainės nustatymai",
"SetupWebsiteError": "Rasta klaidų pridedant svetainę",
"SetupWebSiteName": "svetainės pavadinimas",
diff --git a/lang/lv.json b/lang/lv.json
index 6cb70c4490b..39112bfe6a3 100644
--- a/lang/lv.json
+++ b/lang/lv.json
@@ -487,7 +487,6 @@
"PluginDescription": "Ģenerējiet skaistus, statiskus PNG formāta grafikus jebkurai Piwik atskaitei."
},
"Installation": {
- "CommunityNewsletter": "sūtiet epastu par kopienas jaunumiem (jauniem spraudņiem, jaunām iespējām, utt.)",
"Congratulations": "Apsveicam",
"DatabaseCreation": "Datubāzes izveide",
"DatabaseErrorConnect": "Kļūda mēģinot sasniegt datubāzes serveri",
@@ -512,7 +511,6 @@
"PercentDone": "%s %% pabeigts",
"PleaseFixTheFollowingErrors": "Lūdzu izlabojiet sekojošās kļūdas",
"Requirements": "Piwik prasības",
- "SecurityNewsletter": "sūtiet e-pastu par svarīgiem Piwik atjauninājumiem un drošības paziņojumiem",
"SetupWebsite": "Iestatiet vietni",
"SetupWebsiteError": "Vietnes pievienošana izraisīja kļūdu",
"SetupWebSiteName": "vietnes nosaukums",
diff --git a/lang/nb.json b/lang/nb.json
index dddd650400c..101e3ebb31b 100644
--- a/lang/nb.json
+++ b/lang/nb.json
@@ -608,7 +608,6 @@
"YearComparedToPreviousYear": "forrige år"
},
"Installation": {
- "CommunityNewsletter": "send meg e-post med oppdatering fra Piwik-samfunnet (nye tillegg, nye egenskaper, osv)",
"ConfirmDeleteExistingTables": "Er du sikker på at du vil slette tabellene %s fra databasen din? ADVARSEL: DATA FRA DISSE TABELLENE KAN IKKE GJENOPPRETTES!",
"Congratulations": "Gratulerer",
"CongratulationsHelp": "
» U kunt Piwik nu installeren<\/a><\/b>
Wanneer u Piwik al eerder geïnstalleerd heeft en de Piwik tabellen reeds data bevatten: maakt u zich geen zorgen, u kunt dezelfde tabellen blijven gebruiken en uw bestaande data behouden!<\/small>',",
+ "NotSupported": "niet ondersteund",
"Optional": "Optioneel",
"Password": "wachtwoord",
"PasswordDoNotMatch": "wachtwoord komt niet overeen",
@@ -1027,7 +1035,6 @@
"Requirements": "Piwik vereisten",
"RestartWebServer": "Herstart uw webserver na deze aanpassing.",
"ReusingTables": "Hergebruik de tabellen",
- "SecurityNewsletter": "stuur mij e-mails over grote Piwik upgrades en beveiligingswaarschuwingen",
"SeeBelowForMoreInfo": "Zie hieronder voor meer informatie.",
"SetupWebsite": "Configureer een website",
"SetupWebsiteError": "Er heeft zich een fout voorgedaan tijdens het toevoegen van de website",
@@ -1071,7 +1078,7 @@
"SystemCheckSplHelp": "U moet PHP opnieuw configureren en compileren met de standard PHP LIbrary (SPL) ingeschakeld (standaard)",
"SystemCheckSummaryNoProblems": "Hoera! Er zijn geen problemen met je Piwik setup. Geef jezelf een schouderklopje.",
"SystemCheckSummaryThereWereErrors": "Oeps! Piwik heeft enkele %1$skritieke problemen%2$s gedetecteerd in je Piwik setup. %3$sDeze problemen zouden meteen gefixed moeten worden.%4$s",
- "SystemCheckSummaryThereWereWarnings": "Er zijn enkele problemeb met je systeem. Piwik zal werken, maar je kunt enkele kleine problemen ervaren.",
+ "SystemCheckSummaryThereWereWarnings": "Er zijn enkele problemen met je systeem. Piwik zal werken, maar je kunt enkele kleine problemen ervaren.",
"SystemCheckTimeLimitHelp": "Het meten van een website met veel bezoekers kan meer tijd in beslag nemen dan momenteel is toegestaan.
Controleer de directive max_execution_time in uw php.ini file indien noodzakelijk",
"SystemCheckTracker": "Tracker status",
"SystemCheckTrackerHelp": "GET request naar piwik.php mislukt. Probeer deze URL te whitelisten van HTTP Authentication en deactiveer mod_security (wellicht moet u dit vragen aan de beheerder van uw webserver).",
@@ -1265,6 +1272,7 @@
"MultiSites": {
"Evolution": "Evolutie",
"LoadingWebsites": "Websites laden",
+ "Pagination": "%s - %s van %s",
"PluginDescription": "Toont de multi-site uitvoering van de samenvatting\/statistieken. Momenteel onderhouden als een core plugin van Piwik.",
"TopLinkTooltip": "Vergelijk Website statistieken van al je websites."
},
@@ -1395,7 +1403,8 @@
"WidgetGetAll": "Alle Referers",
"WidgetKeywords": "Top zoektermen",
"WidgetSocials": "Lijst van sociale netwerken",
- "WidgetTopKeywordsForPages": "Top sleutelwoorden voor pagina URL"
+ "WidgetTopKeywordsForPages": "Top sleutelwoorden voor pagina URL",
+ "XPercentOfVisits": "%s%% van de bezoeken"
},
"RowEvolution": {
"AvailableMetrics": "Beschikbare gegevens",
@@ -1472,10 +1481,12 @@
"SegmentDisplayedAllWebsites": "alle websites",
"SegmentDisplayedThisWebsiteOnly": "alleen deze website",
"SegmentIsDisplayedForWebsite": "en getoond voor",
+ "SegmentNotApplied": "Segment '%s' niet toegepast",
"SelectSegmentOfVisitors": "Selecteer een segment van bezoekers:",
"ThisSegmentIsVisibleTo": "Dit segment is zichtbaar voor:",
"VisibleToAllUsers": "alle gebruikers",
"VisibleToMe": "mij",
+ "YouDontHaveAccessToCreateSegments": "U heeft niet het benodigde toegangsniveau om segmenten te maken en bewerken.",
"YouMustBeLoggedInToCreateSegments": "Je moet ingelogd zijn om Bezoekers segmenten te bewerken of aan te maken."
},
"SEO": {
@@ -1532,6 +1543,7 @@
"PiwikOffersEcommerceAnalytics": "In Piwik is een geavanceerde Ecommerce Analytics tracking & rapportage mogelijk. Leer meer over %s Ecommerce Analytics%s.",
"PiwikWillAutomaticallyExcludeCommonSessionParameters": "Piwik sluit automatisch veelvoorkomende sessie parameters uit (%s).",
"PluginDescription": "Websitebeheer in Piwik: Voeg een nieuwe website toe, pas een bestaande aan, toon de javascript code om te integreren in uw pagina's. Alle acties zijn ook beschikbaar via de API.",
+ "SearchKeywordParametersDesc": "Voer een komma gescheiden lijst in van alle query parameter namen die het site zoek sleutelwoord bevatten.",
"SelectACity": "Selecteer een stad",
"SelectDefaultCurrency": "U kunt de standaard munteenheid voor nieuwe websites ingeven.",
"SelectDefaultTimezone": "U kunt de standaard tijdzone selecteren voor nieuwe websites.",
@@ -2179,6 +2191,7 @@
"ExcludeVisitsViaCookie": "Sluit uw bezoeken uit met een cookie",
"ForAnonymousUsersReportDateToLoadByDefault": "Voor anonieme gebruikers, Standaard rapport datum bij laden pagina.",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Als u het wachtwoord wilt wijzigen, geef dan een nieuwe op. Laat het anders leeg.",
+ "LastSeen": "Laatst gezien",
"MainDescription": "Stel in welke gebruikers toegang hebben tot de Piwik rapporten van deze website. U kan de toegangsrechten voor alle websites tegelijk bepalen door deze optie te kiezen in de dropdown.",
"ManageAccess": "Toegangsbeheer",
"MenuAnonymousUserSettings": "Anonieme gebruikers instellingen",
diff --git a/lang/nn.json b/lang/nn.json
index b257ba81306..eaa7b351981 100644
--- a/lang/nn.json
+++ b/lang/nn.json
@@ -578,7 +578,6 @@
"PluginDescription": "Opprett vakre statiske grafar som PNG-bilete for ein Piwik-rapport."
},
"Installation": {
- "CommunityNewsletter": "send meg epost når det kjem oppdateringar frå fellesskapet (nye innstikk, funksjonar osb.)",
"ConfirmDeleteExistingTables": "Er du sikker på at du vil sletta tabellane: %s frå databasen? ÅTVARING: DEI KAN IKKJE BLI GJENOPPRETTA!",
"Congratulations": "Gratulerer",
"CongratulationsHelp": "
» Puteți a href='index.php'> instala Piwik acum <\/a><\/b>
php composer.phar update");
}
- $ua = new \DeviceDetector($_SERVER['HTTP_USER_AGENT']);
- $ua->parse();
- $os = $ua->getOs('short_name');
- if ($os && in_array($os, array('AND', 'IOS'))) {
+ $ua = new OperatingSystem($_SERVER['HTTP_USER_AGENT']);
+ $parsedOS = $ua->parse();
+ if (!empty($parsedOS['short_name']) && in_array($parsedOS['short_name'], array(self::DD_SHORT_NAME_ANDROID, self::DD_SHORT_NAME_IOS))) {
$menu->add('Piwik Mobile App', null, array('module' => 'Proxy', 'action' => 'redirect', 'url' => 'http://piwik.org/mobile/'), true, 4);
}
}
diff --git a/plugins/CoreConsole/Commands/GenerateWidget.php b/plugins/CoreConsole/Commands/GenerateWidget.php
index 836ea3970a9..c3360e10fe4 100644
--- a/plugins/CoreConsole/Commands/GenerateWidget.php
+++ b/plugins/CoreConsole/Commands/GenerateWidget.php
@@ -1,6 +1,6 @@
shareText = Piwik::translate('CoreHome_SharePiwikShort');
$view->shareTextLong = Piwik::translate('CoreHome_SharePiwikLong');
- $view->promoVideoUrl = 'http://www.youtube.com/watch?v=OslfF_EH81g';
+ $view->promoVideoUrl = 'https://www.youtube.com/watch?v=OslfF_EH81g';
return $view->render();
}
diff --git a/plugins/CoreHome/DataTableRowAction/RowEvolution.php b/plugins/CoreHome/DataTableRowAction/RowEvolution.php
index 2fb65b40b4a..915139d3000 100644
--- a/plugins/CoreHome/DataTableRowAction/RowEvolution.php
+++ b/plugins/CoreHome/DataTableRowAction/RowEvolution.php
@@ -86,6 +86,9 @@ public function __construct($idSite, $date, $graphType = null)
if (empty($this->apiMethod)) throw new Exception("Parameter apiMethod not set.");
$this->label = ResponseBuilder::getLabelFromRequest($_GET);
+ if(!is_array($this->label)) {
+ throw new Exception("Expected label to be an array, got instead: " . $this->label);
+ }
$this->label = $this->label[0];
if ($this->label === '') throw new Exception("Parameter label not set.");
diff --git a/plugins/CoreHome/Widgets.php b/plugins/CoreHome/Widgets.php
index 5aba86a2cd6..c2bfc764486 100644
--- a/plugins/CoreHome/Widgets.php
+++ b/plugins/CoreHome/Widgets.php
@@ -1,6 +1,6 @@
';
+ embedHtml = '';
$(this).hide();
promoEmbed.height(height).html(embedHtml);
diff --git a/plugins/Dashboard/Menu.php b/plugins/Dashboard/Menu.php
index 95d5a618d46..e972ae7dfd9 100644
--- a/plugins/Dashboard/Menu.php
+++ b/plugins/Dashboard/Menu.php
@@ -15,6 +15,7 @@
use Piwik\Menu\MenuReporting;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
+use Piwik\Plugins\UsersManager\UserPreferences;
use Piwik\Site;
/**
@@ -41,16 +42,18 @@ public function configureReportingMenu(MenuReporting $menu)
public function configureTopMenu(MenuTop $menu)
{
- $tooltip = false;
- try {
- $idSite = Common::getRequestVar('idSite');
- $tooltip = Piwik::translate('Dashboard_TopLinkTooltip', Site::getNameFor($idSite));
- } catch (Exception $ex) {
- // if no idSite parameter, show no tooltip
- }
+ $userPreferences = new UserPreferences();
+ $idSite = $userPreferences->getDefaultWebsiteId();
+
+ $tooltip = Piwik::translate('Dashboard_TopLinkTooltip', Site::getNameFor($idSite));
- $urlParams = array('module' => 'CoreHome', 'action' => 'index');
+ $urlParams = array(
+ 'module' => 'CoreHome',
+ 'action' => 'index',
+ 'idSite' => $idSite,
+ );
$menu->add('Dashboard_Dashboard', null, $urlParams, true, 1, $tooltip);
}
}
+
diff --git a/plugins/DevicesDetection/Controller.php b/plugins/DevicesDetection/Controller.php
index e42006fa65e..57196991fa0 100644
--- a/plugins/DevicesDetection/Controller.php
+++ b/plugins/DevicesDetection/Controller.php
@@ -8,7 +8,7 @@
*/
namespace Piwik\Plugins\DevicesDetection;
-use DeviceDetector;
+use DeviceDetector\DeviceDetector;
use Piwik\Common;
use Piwik\Db;
use Piwik\Piwik;
@@ -74,26 +74,27 @@ public function deviceDetection()
$userAgent = Common::getRequestVar('ua', $_SERVER['HTTP_USER_AGENT'], 'string');
- $parsedUA = DeviceDetector::getInfoFromUserAgent($userAgent);
+ $uaParser = new DeviceDetector($userAgent);
+ $uaParser->parse();
$view->userAgent = $userAgent;
- $view->browser_name = $parsedUA['browser']['name'];
- $view->browser_short_name = $parsedUA['browser']['short_name'];
- $view->browser_version = $parsedUA['browser']['version'];
- $view->browser_logo = getBrowserLogoExtended($parsedUA['browser']['short_name']);
- $view->browser_family = $parsedUA['browser_family'];
- $view->browser_family_logo = getBrowserFamilyLogoExtended($parsedUA['browser_family']);
- $view->os_name = $parsedUA['os']['name'];
- $view->os_logo = getOsLogoExtended($parsedUA['os']['short_name']);
- $view->os_short_name = $parsedUA['os']['short_name'];
- $view->os_family = $parsedUA['os_family'];
- $view->os_family_logo = getOsFamilyLogoExtended($parsedUA['os_family']);
- $view->os_version = $parsedUA['os']['version'];
- $view->device_type = getDeviceTypeLabel($parsedUA['device']['type']);
- $view->device_type_logo = getDeviceTypeLogo($parsedUA['device']['type']);
- $view->device_model = $parsedUA['device']['model'];
- $view->device_brand = getDeviceBrandLabel($parsedUA['device']['brand']);
- $view->device_brand_logo = getBrandLogo($view->device_brand);
+ $view->browser_name = $uaParser->getClient('name');
+ $view->browser_short_name = $uaParser->getClient('short_name');
+ $view->browser_version = $uaParser->getClient('version');
+ $view->browser_logo = getBrowserLogoExtended($uaParser->getClient('short_name'));
+ $view->browser_family = \DeviceDetector\Parser\Client\Browser::getBrowserFamily($uaParser->getClient('short_name'));
+ $view->browser_family_logo = getBrowserFamilyLogoExtended($view->browser_family);
+ $view->os_name = $uaParser->getOs('name');
+ $view->os_logo = getOsLogoExtended($uaParser->getOs('short_name'));
+ $view->os_short_name = $uaParser->getOs('short_name');
+ $view->os_family = \DeviceDetector\Parser\OperatingSystem::getOsFamily($uaParser->getOs('short_name'));
+ $view->os_family_logo = getOsFamilyLogoExtended($view->os_family);
+ $view->os_version = $uaParser->getOs('version');
+ $view->device_type = getDeviceTypeLabel($uaParser->getDeviceName());
+ $view->device_type_logo = getDeviceTypeLogo($uaParser->getDeviceName());
+ $view->device_model = $uaParser->getModel();
+ $view->device_brand = getDeviceBrandLabel($uaParser->getBrand());
+ $view->device_brand_logo = getBrandLogo($uaParser->getBrand());
return $view->render();
}
@@ -110,7 +111,7 @@ public function showList()
switch ($type) {
case 'brands':
- $availableBrands = DeviceDetector::$deviceBrands;
+ $availableBrands = \DeviceDetector\Parser\Device\DeviceParserAbstract::$deviceBrands;
foreach ($availableBrands AS $short => $name) {
if ($name != 'Unknown') {
@@ -120,7 +121,7 @@ public function showList()
break;
case 'browsers':
- $availableBrowsers = DeviceDetector::$browsers;
+ $availableBrowsers = \DeviceDetector\Parser\Client\Browser::getAvailableBrowsers();
foreach ($availableBrowsers AS $short => $name) {
$list[$name] = getBrowserLogoExtended($short);
@@ -128,7 +129,7 @@ public function showList()
break;
case 'browserfamilies':
- $availableBrowserFamilies = DeviceDetector::$browserFamilies;
+ $availableBrowserFamilies = \DeviceDetector\Parser\Client\Browser::getAvailableBrowserFamilies();
foreach ($availableBrowserFamilies AS $name => $browsers) {
$list[$name] = getBrowserFamilyLogoExtended($name);
@@ -136,29 +137,25 @@ public function showList()
break;
case 'os':
- $availableOSs = DeviceDetector::$osShorts;
+ $availableOSs = \DeviceDetector\Parser\OperatingSystem::getAvailableOperatingSystems();
- foreach ($availableOSs AS $name => $short) {
- if ($name != 'Bot') {
- $list[$name] = getOsLogoExtended($short);
- }
+ foreach ($availableOSs AS $short => $name) {
+ $list[$name] = getOsLogoExtended($short);
}
break;
case 'osfamilies':
- $osFamilies = DeviceDetector::$osFamilies;
+ $osFamilies = \DeviceDetector\Parser\OperatingSystem::getAvailableOperatingSystemFamilies();
foreach ($osFamilies AS $name => $oss) {
- if ($name != 'Bot') {
- $list[$name] = getOsFamilyLogoExtended($name);
- }
+ $list[$name] = getOsFamilyLogoExtended($name);
}
break;
case 'devicetypes':
- $deviceTypes = DeviceDetector::$deviceTypes;
+ $deviceTypes = \DeviceDetector\Parser\Device\DeviceParserAbstract::getAvailableDeviceTypes();
- foreach ($deviceTypes AS $name) {
+ foreach ($deviceTypes AS $name => $id) {
$list[$name] = getDeviceTypeLogo($name);
}
break;
diff --git a/plugins/DevicesDetection/functions.php b/plugins/DevicesDetection/functions.php
index 1cf8c87e953..af76162f015 100644
--- a/plugins/DevicesDetection/functions.php
+++ b/plugins/DevicesDetection/functions.php
@@ -9,8 +9,10 @@
namespace Piwik\Plugins\DevicesDetection;
-use DeviceDetector;
use Piwik\Piwik;
+use DeviceDetector\Parser\OperatingSystem AS OperatingSystemParser;
+use DeviceDetector\Parser\Device\DeviceParserAbstract AS DeviceParser;
+use DeviceDetector\Parser\Client\Browser AS BrowserParser;
function getBrandLogo($label)
{
@@ -25,7 +27,7 @@ function getBrandLogo($label)
function getBrowserFamilyFullNameExtended($label)
{
- foreach (DeviceDetector::$browserFamilies as $name => $family) {
+ foreach (BrowserParser::getAvailableBrowserFamilies() as $name => $family) {
if (in_array($label, $family)) {
return $name;
}
@@ -35,8 +37,9 @@ function getBrowserFamilyFullNameExtended($label)
function getBrowserFamilyLogoExtended($label)
{
- if (array_key_exists($label, DeviceDetector::$browserFamilies)) {
- return getBrowserLogoExtended(DeviceDetector::$browserFamilies[$label][0]);
+ $browserFamilies = BrowserParser::getAvailableBrowserFamilies();
+ if (!empty($label) && array_key_exists($label, $browserFamilies)) {
+ return getBrowserLogoExtended($browserFamilies[$label][0]);
}
return getBrowserLogoExtended($label);
}
@@ -45,8 +48,9 @@ function getBrowserNameExtended($label)
{
$short = substr($label, 0, 2);
$ver = substr($label, 3, 10);
- if (array_key_exists($short, DeviceDetector::$browsers)) {
- return trim(ucfirst(DeviceDetector::$browsers[$short]) . ' ' . $ver);
+ $browsers = BrowserParser::getAvailableBrowsers();
+ if (array_key_exists($short, $browsers)) {
+ return trim(ucfirst($browsers[$short]) . ' ' . $ver);
} else {
return Piwik::translate('General_Unknown');
}
@@ -70,8 +74,8 @@ function getBrowserLogoExtended($short)
// If name is given instead of short code, try to find matching shortcode
if (strlen($short) > 2) {
- if (in_array($short, DeviceDetector::$browsers)) {
- $flippedBrowsers = array_flip(DeviceDetector::$browsers);
+ if (in_array($short, BrowserParser::getAvailableBrowsers())) {
+ $flippedBrowsers = array_flip(BrowserParser::getAvailableBrowsers());
$short = $flippedBrowsers[$short];
} else {
$short = substr($short, 0, 2);
@@ -80,18 +84,27 @@ function getBrowserLogoExtended($short)
$family = getBrowserFamilyFullNameExtended($short);
- if (array_key_exists($short, DeviceDetector::$browsers) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) {
+ $browserFamilies = BrowserParser::getAvailableBrowserFamilies();
+
+ if (!empty($short) &&
+ array_key_exists($short, BrowserParser::getAvailableBrowsers()) &&
+ file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) {
+
return sprintf($path, $short);
- } elseif (array_key_exists($family, DeviceDetector::$browserFamilies) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, DeviceDetector::$browserFamilies[$family][0]))) {
- return sprintf($path, DeviceDetector::$browserFamilies[$family][0]);
+
+ } elseif (!empty($short) &&
+ array_key_exists($family, $browserFamilies) &&
+ file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $browserFamilies[$family][0]))) {
+
+ return sprintf($path, $browserFamilies[$family][0]);
}
return sprintf($path, 'UNK');
}
function getDeviceBrandLabel($label)
{
- if (array_key_exists($label, DeviceDetector::$deviceBrands)) {
- return ucfirst(DeviceDetector::$deviceBrands[$label]);
+ if (array_key_exists($label, DeviceParser::$deviceBrands)) {
+ return ucfirst(DeviceParser::$deviceBrands[$label]);
} else {
return Piwik::translate('General_Unknown');
}
@@ -110,8 +123,14 @@ function getDeviceTypeLabel($label)
'smart display' => 'DevicesDetection_SmartDisplay',
'camera' => 'DevicesDetection_Camera'
);
- if (isset(DeviceDetector::$deviceTypes[$label]) && isset($translations[DeviceDetector::$deviceTypes[$label]])) {
- return Piwik::translate($translations[DeviceDetector::$deviceTypes[$label]]);
+
+ $deviceTypes = DeviceParser::getAvailableDeviceTypes();
+
+ if (is_numeric($label) &&
+ in_array($label, $deviceTypes) &&
+ isset($translations[array_search($label, $deviceTypes)])) {
+
+ return Piwik::translate($translations[array_search($label, $deviceTypes)]);
} else if (isset($translations[$label])) {
return Piwik::translate($translations[$label]);
} else {
@@ -121,8 +140,8 @@ function getDeviceTypeLabel($label)
function getDeviceTypeLogo($label)
{
- if (is_numeric($label) && isset(DeviceDetector::$deviceTypes[$label])) {
- $label = DeviceDetector::$deviceTypes[$label];
+ if (is_numeric($label) && in_array($label, DeviceParser::getAvailableDeviceTypes())) {
+ $label = array_search($label, DeviceParser::getAvailableDeviceTypes());
}
$label = strtolower($label);
@@ -156,7 +175,10 @@ function getModelName($label)
function getOSFamilyFullNameExtended($label)
{
- $label = DeviceDetector::getOsFamily($label);
+ if ($label == \Piwik\Tracker\Settings::OS_BOT) {
+ return 'Bot';
+ }
+ $label = OperatingSystemParser::getOsFamily($label);
if($label !== false) {
return $label;
}
@@ -165,18 +187,22 @@ function getOSFamilyFullNameExtended($label)
function getOsFamilyLogoExtended($label)
{
- if (array_key_exists($label, DeviceDetector::$osFamilies)) {
- return getOsLogoExtended(DeviceDetector::$osFamilies[$label][0]);
+ $osFamilies = OperatingSystemParser::getAvailableOperatingSystemFamilies();
+ if (!empty($label) && array_key_exists($label, $osFamilies)) {
+ return getOsLogoExtended($osFamilies[$label][0]);
}
return getOsLogoExtended($label);
}
function getOsFullNameExtended($label)
{
+ if (substr($label, 0, 3) == \Piwik\Tracker\Settings::OS_BOT) {
+ return 'Bot';
+ }
if (!empty($label) && $label != ";") {
$os = substr($label, 0, 3);
$ver = substr($label, 4, 15);
- $name = DeviceDetector::getOsNameFromId($os, $ver);
+ $name = OperatingSystemParser::getNameFromId($os, $ver);
if (!empty($name)) {
return $name;
}
@@ -202,19 +228,27 @@ function getOsLogoExtended($short)
// If name is given instead of short code, try to find matching shortcode
if (strlen($short) > 3) {
- if (array_key_exists($short, DeviceDetector::$osShorts)) {
- $short = DeviceDetector::$osShorts[$short];
+ if (in_array($short, OperatingSystemParser::getAvailableOperatingSystems())) {
+ $short = array_search($short, OperatingSystemParser::getAvailableOperatingSystems());
} else {
$short = substr($short, 0, 3);
}
}
$family = getOsFamilyFullNameExtended($short);
+ $osFamilies = OperatingSystemParser::getAvailableOperatingSystemFamilies();
+
+ if (!empty($short) &&
+ array_key_exists($short, OperatingSystemParser::getAvailableOperatingSystems()) &&
+ file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) {
- if (in_array($short, DeviceDetector::$osShorts) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) {
return sprintf($path, $short);
- } elseif (array_key_exists($family, DeviceDetector::$osFamilies) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, DeviceDetector::$osFamilies[$family][0]))) {
- return sprintf($path, DeviceDetector::$osFamilies[$family][0]);
+
+ } elseif (!empty($family) &&
+ array_key_exists($family, $osFamilies) &&
+ file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $osFamilies[$family][0]))) {
+
+ return sprintf($path, $osFamilies[$family][0]);
}
return sprintf($path, 'UNK');
}
diff --git a/plugins/Events/lang/bg.json b/plugins/Events/lang/bg.json
index 5d62094f7fd..54c4b959c44 100644
--- a/plugins/Events/lang/bg.json
+++ b/plugins/Events/lang/bg.json
@@ -1,5 +1,6 @@
{
"Events": {
+ "AvgValue": "Средна стойност",
"Event": "Събитие",
"EventAction": "Действие на събитието",
"EventCategory": "Категория на събитие",
@@ -10,6 +11,8 @@
"MaxValueDocumentation": "Максималната стойност за това събитие",
"MinValue": "Минимална стойност",
"MinValueDocumentation": "Минималната стойност за това събитие",
+ "SecondaryDimension": "Второстепенното измерение е %s.",
+ "SwitchToSecondaryDimension": "Превключване към %s",
"TopEvents": "Най-важните събития",
"TotalEvents": "Общо събития",
"TotalEventsDocumentation": "Общ брой събития",
diff --git a/plugins/Events/lang/da.json b/plugins/Events/lang/da.json
index a1f8b54c756..db8849014f0 100644
--- a/plugins/Events/lang/da.json
+++ b/plugins/Events/lang/da.json
@@ -1,10 +1,31 @@
{
"Events": {
+ "AvgEventValue": "Genomsnitlig værdi for hændelsen er: %s",
+ "AvgValue": "Gennemsnitsværdi",
+ "AvgValueDocumentation": "Gennemsnittet af alle værdier for denne hændelse",
"Event": "Hændelse",
"EventAction": "Hændelsesaktion",
+ "EventActions": "Hændelsesforløb",
+ "EventCategories": "Hændelseskategorier",
"EventCategory": "Hændelseskategori",
"EventName": "Hændelsesnavn",
+ "EventNames": "Hændelsesnavn",
"Events": "Hændelser",
- "EventValue": "Hændelsesværdi"
+ "EventsWithValue": "Hændelser med en værdi",
+ "EventsWithValueDocumentation": "Antal hændelser, hvor en hændelseværdi blev fastsat",
+ "EventValue": "Hændelsesværdi",
+ "EventValueTooltip": "Samlet hændelsesværdi er summen af %s hændelsesværdier %s mellem mindst %s og maksimalt %s.",
+ "MaxValue": "Max værdi",
+ "MaxValueDocumentation": "Den maksimale værdi for hændelsen",
+ "MinValue": "Min værdi",
+ "MinValueDocumentation": "Den mindste værdi for hændelsen",
+ "SecondaryDimension": "Sekundær dimension er %s.",
+ "SwitchToSecondaryDimension": "Skift til %s",
+ "TopEvents": "Tophændelser",
+ "TotalEvents": "Totale hændelser",
+ "TotalEventsDocumentation": "Total antal hændelser",
+ "TotalValue": "Total værdi",
+ "TotalValueDocumentation": "Summen af hændelserværdier",
+ "ViewEvents": "Vis hændelser"
}
}
\ No newline at end of file
diff --git a/plugins/Events/lang/nl.json b/plugins/Events/lang/nl.json
index 038730d299a..f04206e860a 100644
--- a/plugins/Events/lang/nl.json
+++ b/plugins/Events/lang/nl.json
@@ -16,6 +16,7 @@
"MaxValueDocumentation": "De maximale waarde voor deze gebeurtenis",
"MinValue": "Minimale waarde",
"MinValueDocumentation": "De minimale waarde voor deze gebeurtenis",
+ "SwitchToSecondaryDimension": "Omschakelen naar %s",
"TopEvents": "Top Gebeurtenissen",
"TotalEvents": "Totaal gebeurtenissen",
"TotalEventsDocumentation": "Totaal aantal gebeurtenissen",
diff --git a/plugins/ExampleAPI/API.php b/plugins/ExampleAPI/API.php
index 27dc2f59aaf..f7cb0424cea 100644
--- a/plugins/ExampleAPI/API.php
+++ b/plugins/ExampleAPI/API.php
@@ -28,6 +28,7 @@ class API extends \Piwik\Plugin\API
public function getPiwikVersion()
{
Piwik::checkUserHasSomeViewAccess();
+ Piwik::checkUserIsNotAnonymous();
return Version::VERSION;
}
diff --git a/plugins/ExamplePlugin/Widgets.php b/plugins/ExamplePlugin/Widgets.php
index 6ce0c590dcb..c213d91ee8e 100644
--- a/plugins/ExamplePlugin/Widgets.php
+++ b/plugins/ExamplePlugin/Widgets.php
@@ -1,6 +1,6 @@
getSubmitValue('email'));
$email = $form->getSubmitValue('email');
- $newsletterSecurity = $form->getSubmitValue('subscribe_newsletter_security');
- $newsletterCommunity = $form->getSubmitValue('subscribe_newsletter_community');
- $this->registerNewsletter($email, $newsletterSecurity, $newsletterCommunity);
+ $newsletterPiwikORG = $form->getSubmitValue('subscribe_newsletter_piwikorg');
+ $newsletterPiwikPRO = $form->getSubmitValue('subscribe_newsletter_piwikpro');
+ $this->registerNewsletter($email, $newsletterPiwikORG, $newsletterPiwikPRO);
$this->redirectToNextStep(__FUNCTION__);
} catch (Exception $e) {
@@ -625,6 +625,7 @@ private function setupSystemCheckView($view)
'gzuncompress' => 'Installation_SystemCheckGzuncompressHelp',
'pack' => 'Installation_SystemCheckPackHelp',
'php5-json' => 'Installation_SystemCheckJsonHelp',
+ 'session.auto_start' => 'Installation_SystemCheckSessionAutostart',
);
$view->problemWithSomeDirectories = (false !== array_search(false, $view->infos['directories']));
@@ -665,27 +666,27 @@ private function deleteConfigFileIfNeeded()
/**
* @param $email
- * @param $newsletterSecurity
- * @param $newsletterCommunity
+ * @param $newsletterPiwikORG
+ * @param $newsletterPiwikPRO
*/
- protected function registerNewsletter($email, $newsletterSecurity, $newsletterCommunity)
+ protected function registerNewsletter($email, $newsletterPiwikORG, $newsletterPiwikPRO)
{
$url = Config::getInstance()->General['api_service_url'];
$url .= '/1.0/subscribeNewsletter/';
$params = array(
'email' => $email,
- 'security' => $newsletterSecurity,
- 'community' => $newsletterCommunity,
+ 'piwikorg' => $newsletterPiwikORG,
+ 'piwikpro' => $newsletterPiwikPRO,
'url' => Url::getCurrentUrlWithoutQueryString(),
);
- if ($params['security'] == '1'
- || $params['community'] == '1'
+ if ($params['piwikorg'] == '1'
+ || $params['piwikpro'] == '1'
) {
- if (!isset($params['security'])) {
- $params['security'] = '0';
+ if (!isset($params['piwikorg'])) {
+ $params['piwikorg'] = '0';
}
- if (!isset($params['community'])) {
- $params['community'] = '0';
+ if (!isset($params['piwikpro'])) {
+ $params['piwikpro'] = '0';
}
$url .= '?' . http_build_query($params, '', '&');
try {
diff --git a/plugins/Installation/FormSuperUser.php b/plugins/Installation/FormSuperUser.php
index 68d9dcad14d..aef40d6a405 100644
--- a/plugins/Installation/FormSuperUser.php
+++ b/plugins/Installation/FormSuperUser.php
@@ -53,21 +53,25 @@ function init()
$email->addRule('required', Piwik::translate('General_Required', Piwik::translate('Installation_Email')));
$email->addRule('checkEmail', Piwik::translate('UsersManager_ExceptionInvalidEmail'));
- $this->addElement('checkbox', 'subscribe_newsletter_security', null, array(
- 'content' => ' ' . Piwik::translate('Installation_SecurityNewsletter'),
- ));
+ $this->addElement('checkbox', 'subscribe_newsletter_piwikorg', null,
+ array(
+ 'content' => ' ' . Piwik::translate('Installation_PiwikOrgNewsletter'),
+ ));
- $this->addElement('checkbox', 'subscribe_newsletter_community', null, array(
- 'content' => ' ' . Piwik::translate('Installation_CommunityNewsletter'),
- ));
+ $this->addElement('checkbox', 'subscribe_newsletter_piwikpro', null,
+ array(
+ 'content' => ' ' . Piwik::translate('Installation_PiwikProNewsletter',
+ array("", "")
+ ),
+ ));
$this->addElement('submit', 'submit', array('value' => Piwik::translate('General_Next') . ' »', 'class' => 'submit'));
// default values
$this->addDataSource(new HTML_QuickForm2_DataSource_Array(array(
- 'subscribe_newsletter_community' => 1,
- 'subscribe_newsletter_security' => 1,
- )));
+ 'subscribe_newsletter_piwikorg' => 1,
+ 'subscribe_newsletter_piwikpro' => 0,
+ )));
}
}
diff --git a/plugins/Installation/SystemCheck.php b/plugins/Installation/SystemCheck.php
index 60585cf80ad..c017a19d418 100644
--- a/plugins/Installation/SystemCheck.php
+++ b/plugins/Installation/SystemCheck.php
@@ -8,6 +8,7 @@
*/
namespace Piwik\Plugins\Installation;
+use Piwik\CliMulti;
use Piwik\CliMulti\Process;
use Piwik\Common;
use Piwik\Config;
@@ -59,7 +60,7 @@ public static function getSystemInformation()
$infos['phpVersion_minimum'] = $piwik_minimumPHPVersion;
$infos['phpVersion'] = PHP_VERSION;
- $infos['phpVersion_ok'] = version_compare($piwik_minimumPHPVersion, $infos['phpVersion']) === -1;
+ $infos['phpVersion_ok'] = self::isPhpVersionValid($infos['phpVersion']);
// critical errors
$extensions = @get_loaded_extensions();
@@ -131,7 +132,6 @@ public static function getSystemInformation()
'parse_ini_file',
'glob',
);
- $infos['desired_functions'] = $desired_functions;
$infos['missing_desired_functions'] = array();
foreach ($desired_functions as $desired_function) {
if (!self::functionExists($desired_function)) {
@@ -139,11 +139,20 @@ public static function getSystemInformation()
}
}
+ $sessionAutoStarted = (int)ini_get('session.auto_start');
+ if($sessionAutoStarted) {
+ $infos['missing_desired_functions'][] = 'session.auto_start';
+ }
+
+ $desired_settings = array(
+ 'session.auto_start',
+ );
+ $infos['desired_functions'] = array_merge($desired_functions, $desired_settings);
+
$infos['openurl'] = Http::getTransportMethod();
$infos['gd_ok'] = SettingsServer::isGdExtensionEnabled();
-
$serverSoftware = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '';
$infos['serverVersion'] = addslashes($serverSoftware);
$infos['serverOs'] = @php_uname();
@@ -174,7 +183,9 @@ public static function getSystemInformation()
}
$infos['timezone'] = SettingsServer::isTimezoneSupportEnabled();
- $infos['cli_process_ok'] = Process::isSupported();
+
+ $process = new CliMulti();
+ $infos['cli_process_ok'] = $process->supportsAsync();
$infos['tracker_status'] = Common::getRequestVar('trackerStatus', 0, 'int');
@@ -182,6 +193,7 @@ public static function getSystemInformation()
$infos['is_nfs'] = Filesystem::checkIfFileSystemIsNFS();
$infos = self::enrichSystemChecks($infos);
+
return $infos;
}
@@ -315,4 +327,15 @@ protected static function initServerFilesForSecurity()
ServerFilesGenerator::createWebRootFiles();
}
+ /**
+ * @param $piwik_minimumPHPVersion
+ * @param $infos
+ * @return bool
+ */
+ public static function isPhpVersionValid($phpVersion)
+ {
+ global $piwik_minimumPHPVersion;
+ return version_compare($piwik_minimumPHPVersion, $phpVersion) === -1;
+ }
+
}
\ No newline at end of file
diff --git a/plugins/LeftMenu/lang/bg.json b/plugins/LeftMenu/lang/bg.json
new file mode 100644
index 00000000000..4c5cc8fc367
--- /dev/null
+++ b/plugins/LeftMenu/lang/bg.json
@@ -0,0 +1,5 @@
+{
+ "LeftMenu": {
+ "UserSettingTitle": "Активиране на лявото меню за отчет"
+ }
+}
\ No newline at end of file
diff --git a/plugins/LeftMenu/lang/da.json b/plugins/LeftMenu/lang/da.json
new file mode 100644
index 00000000000..537645be761
--- /dev/null
+++ b/plugins/LeftMenu/lang/da.json
@@ -0,0 +1,10 @@
+{
+ "LeftMenu": {
+ "GlobalSettingDescription": "Definerer systemets standard indstillinger for alle brugerne.",
+ "GlobalSettingInlineHelp": "Brugerne er i stand til at aktivere\/deaktivere venstremenuen uafhængigt af systemets standard indstillinger.",
+ "GlobalSettingTitle": "Venstre menu aktiveret som standard",
+ "SettingsIntroduction": "Venstre menu udvidelsen vil flytte rapportmenuen fra toppen til venstre, hvis aktiveret. Dette er især nyttigt for store skærme.",
+ "UserSettingInlineHelp": "Dette vil kun aktivere eller deaktivere venstre menuen for dig og påvirker ikke andre brugere. En superbruger kan ændre standardindstillingen for alle brugere.",
+ "UserSettingTitle": "Aktiver rapportmenu til venstre"
+ }
+}
\ No newline at end of file
diff --git a/plugins/LeftMenu/lang/el.json b/plugins/LeftMenu/lang/el.json
new file mode 100644
index 00000000000..1c8989026fd
--- /dev/null
+++ b/plugins/LeftMenu/lang/el.json
@@ -0,0 +1,10 @@
+{
+ "LeftMenu": {
+ "GlobalSettingDescription": "Ορίζει την προεπιλογή για όλους τους χρήστες.",
+ "GlobalSettingInlineHelp": "Οι χρήστες μπορούν να απενεργοποιούν\/ενεργοποιούν το αριστερό μενού ανεξάρτητα από την προεπιλεγμένη ρύθμιση του συστήματος.",
+ "GlobalSettingTitle": "Το αριστερό μενού είναι εξ' ορισμού ενεργοποιημένο.",
+ "SettingsIntroduction": "Το πρόσθετο για το αριστερό μενού θα μετακινήσει το μενού αναφορών από την κορυφή προς τα αριστερά αν ενεργοποιηθεί. Αυτό είναι ιδιαίτερα χρήσιμο για μεγάλες οθόνες.",
+ "UserSettingInlineHelp": "Αυτό θα ενεργοποιήσει ή απενεργοποιήσει το αριστερό μενού μόνο για εσάς και δε θα επηρεάσει άλλους χρήστες. Ένας Υπερχρήστης μπορεί να αλλάξει την προκαθορισμένη ρύθμιση για όλους τους χρήστες.",
+ "UserSettingTitle": "Ενεργοποίηση του αριστερού μενού αναφορών"
+ }
+}
\ No newline at end of file
diff --git a/plugins/LeftMenu/lang/it.json b/plugins/LeftMenu/lang/it.json
new file mode 100644
index 00000000000..0b305449d9d
--- /dev/null
+++ b/plugins/LeftMenu/lang/it.json
@@ -0,0 +1,10 @@
+{
+ "LeftMenu": {
+ "GlobalSettingDescription": "Definisce le impostazioni predefinite di sistema per tutti gli utenti.",
+ "GlobalSettingInlineHelp": "Gli utenti possono disabilitare o abilitare il menù di sinistra indipendentemente dalle impostazioni predefinite del sistema.",
+ "GlobalSettingTitle": "Il menù di sinistra è abilitato di default",
+ "SettingsIntroduction": "Il plugin menù di sinistra sposta il menu di segnalazione dalla parte superiore a sinistra, se abilitato. Ciò è particolarmente utile per i display di grandi dimensioni.",
+ "UserSettingInlineHelp": "Questo abilita o disabilita il menù di sinistra solo per te e non ha effetto per gli altri utenti. Un Super User può cambiare per tutti gli utenti le impostazioni predefinite.",
+ "UserSettingTitle": "Abilita il menù di segnalazione di sinistra"
+ }
+}
\ No newline at end of file
diff --git a/plugins/LeftMenu/lang/nl.json b/plugins/LeftMenu/lang/nl.json
new file mode 100644
index 00000000000..e0fa59a255d
--- /dev/null
+++ b/plugins/LeftMenu/lang/nl.json
@@ -0,0 +1,6 @@
+{
+ "LeftMenu": {
+ "GlobalSettingDescription": "Definieert het systeem standaard voor al uw gebruikers.",
+ "GlobalSettingTitle": "Linker menu standaard ingeschakeld"
+ }
+}
\ No newline at end of file
diff --git a/plugins/Live/Widgets.php b/plugins/Live/Widgets.php
index bb07f553974..c216a54841d 100644
--- a/plugins/Live/Widgets.php
+++ b/plugins/Live/Widgets.php
@@ -1,6 +1,6 @@
getUserAgent();
- if (strpos($ua, 'MSIE 10') !== false
- || strpos($ua, 'Trident/7') !== false) {
- Common::printDebug("INTERNET EXPLORER 10 and 11 enable DoNotTrack by default; so Piwik ignores DNT for all IE10 + IE11 browsers...");
+ if (strpos($ua, 'MSIE') !== false
+ || strpos($ua, 'Trident') !== false) {
+ Common::printDebug("INTERNET EXPLORER enable DoNotTrack by default; so Piwik ignores DNT IE browsers...");
return;
}
diff --git a/plugins/Referrers/Widgets.php b/plugins/Referrers/Widgets.php
index f1e78ac7832..0a565ddb8ce 100644
--- a/plugins/Referrers/Widgets.php
+++ b/plugins/Referrers/Widgets.php
@@ -1,6 +1,6 @@
'GEOIP_COUNTRY_CODE',
@@ -96,6 +97,11 @@ public function getLocation($info)
if (!empty($_SERVER[$geoipVarName])) {
$result[$resultKey] = $_SERVER[$geoipVarName];
}
+
+ $geoipVarNameV6 = $geoipVarName . '_V6';
+ if (!empty($_SERVER[$geoipVarNameV6])) {
+ $result[$resultKey] = $_SERVER[$geoipVarNameV6];
+ }
}
foreach (self::$geoIpUtfServerVars as $resultKey => $geoipVarName) {
if (!empty($_SERVER[$geoipVarName])) {
@@ -150,25 +156,27 @@ public function isAvailable()
}
$available = !empty($_SERVER[self::TEST_SERVER_VAR])
- || !empty($_SERVER[self::TEST_SERVER_VAR_ALT]);
+ || !empty($_SERVER[self::TEST_SERVER_VAR_ALT])
+ || !empty($_SERVER[self::TEST_SERVER_VAR_ALT_IPV6])
+ ;
if ($available) {
return true;
- } else // if not available return message w/ extra info
- {
- if (!function_exists('apache_get_modules')) {
- return Piwik::translate('General_Note') . ': ' . Piwik::translate('UserCountry_AssumingNonApache');
- }
+ }
- $message = "" . Piwik::translate('General_Note') . ': '
- . Piwik::translate('UserCountry_FoundApacheModules')
- . ":
\n\n";
- foreach (apache_get_modules() as $name) {
- $message .= "
";
- return $message;
+ // if not available return message w/ extra info
+ if (!function_exists('apache_get_modules')) {
+ return Piwik::translate('General_Note') . ': ' . Piwik::translate('UserCountry_AssumingNonApache');
+ }
+
+ $message = "" . Piwik::translate('General_Note') . ': '
+ . Piwik::translate('UserCountry_FoundApacheModules')
+ . ":
\n\n";
+ foreach (apache_get_modules() as $name) {
+ $message .= "
";
+ return $message;
}
/**
@@ -180,6 +188,7 @@ public function isWorking()
{
if (empty($_SERVER[self::TEST_SERVER_VAR])
&& empty($_SERVER[self::TEST_SERVER_VAR_ALT])
+ && empty($_SERVER[self::TEST_SERVER_VAR_ALT_IPV6])
) {
return Piwik::translate("UserCountry_CannotFindGeoIPServerVar", self::TEST_SERVER_VAR . ' $_SERVER');
}
diff --git a/plugins/VisitFrequency/Widgets.php b/plugins/VisitFrequency/Widgets.php
index cea4a4348d0..1b132c9f450 100644
--- a/plugins/VisitFrequency/Widgets.php
+++ b/plugins/VisitFrequency/Widgets.php
@@ -1,6 +1,6 @@
assertDeprecatedMethodIsRemoved('\Piwik\Period', 'factory', $validTill);
$validTill = '2014-10-01';
diff --git a/tests/PHPUnit/Core/ReleaseCheckListTest.php b/tests/PHPUnit/Core/ReleaseCheckListTest.php
index cb53dde0dc3..67dc9efe289 100644
--- a/tests/PHPUnit/Core/ReleaseCheckListTest.php
+++ b/tests/PHPUnit/Core/ReleaseCheckListTest.php
@@ -211,10 +211,10 @@ public function test_directoriesShouldBeChmod755()
foreach($paths as $pathToTest) {
$chmod = substr(decoct(fileperms($pathToTest)), -3);
- $valid = array('775', '755');
+ $valid = array('777', '775', '755');
$command = "find $pluginsPath -type d -exec chmod 755 {} +";
$this->assertTrue(in_array($chmod, $valid),
- "Some directories within plugins/ are not chmod 755. \n For example: $pathToTest \n\n".
+ "Some directories within plugins/ are not chmod 755 \n\nGot: $chmod for : $pathToTest \n\n".
"Run this command to set all directories to 755: \n$command\n");;
}
}
diff --git a/tests/PHPUnit/Fixture.php b/tests/PHPUnit/Fixture.php
index 3c1651757b7..f651dd1d757 100644
--- a/tests/PHPUnit/Fixture.php
+++ b/tests/PHPUnit/Fixture.php
@@ -67,6 +67,8 @@ class Fixture extends PHPUnit_Framework_Assert
public $resetPersistedFixture = false;
public $printToScreen = false;
+ public $testCaseClass = false;
+
public $testEnvironment = null;
/**
@@ -173,7 +175,7 @@ public function performSetUp($setupEnvironmentOnly = false)
Cache::deleteTrackerCache();
- static::loadAllPlugins();
+ static::loadAllPlugins($this->getTestEnvironment(), $this->testCaseClass);
$_GET = $_REQUEST = array();
$_SERVER['HTTP_REFERER'] = '';
@@ -265,11 +267,31 @@ public function performTearDown()
Translate::unloadEnglishTranslation();
}
- public static function loadAllPlugins()
+ public static function loadAllPlugins($testEnvironment = null, $testCaseClass = false)
{
DbHelper::createTables();
$pluginsManager = \Piwik\Plugin\Manager::getInstance();
+
$plugins = $pluginsManager->getPluginsToLoadDuringTests();
+
+ // make sure the plugin that executed this method is included in the plugins to load
+ $extraPlugins = array(
+ \Piwik\Plugin::getPluginNameFromBacktrace(debug_backtrace()),
+ \Piwik\Plugin::getPluginNameFromNamespace($testCaseClass)
+ );
+ foreach ($extraPlugins as $pluginName) {
+ if (empty($pluginName)) {
+ continue;
+ }
+
+ $plugins[] = $pluginName;
+ if ($testEnvironment) {
+ $testEnvironment->pluginsToLoad = array_merge($testEnvironment->pluginsToLoad ?: array(), array($pluginName));
+ }
+ }
+
+ Log::info("Plugins to load during tests: " . implode(', ', $plugins));
+
$pluginsManager->loadPlugins($plugins);
// Install plugins
@@ -722,7 +744,7 @@ public static function createAccessInstance()
public function dropDatabase($dbName = null)
{
- $dbName = $dbName ?: $this->dbName;
+ $dbName = $dbName ?: $this->dbName ?: Config::getInstance()->database_tests['dbname'];
$this->log("Dropping database '$dbName'...");
diff --git a/tests/PHPUnit/Integration/Core/Tracker/VisitTest.php b/tests/PHPUnit/Integration/Core/Tracker/VisitTest.php
index 5c50a8b0719..9ddf6647e40 100644
--- a/tests/PHPUnit/Integration/Core/Tracker/VisitTest.php
+++ b/tests/PHPUnit/Integration/Core/Tracker/VisitTest.php
@@ -170,6 +170,7 @@ public function testIsVisitor_referrerIsKnownSpam()
$this->assertSame($expectedIsReferrerSpam, $excluded->public_isReferrerSpamExcluded(), $spamUrl);
}
}
+
/**
* @group Core
* @group IpIsKnownBot
@@ -199,6 +200,58 @@ public function testIsVisitor_ipIsKnownBot()
$this->assertSame($isBot, $excluded->public_isNonHumanBot(), $ip);
}
}
+
+ /**
+ * @group Core
+ * @group UserAgentIsKnownBot
+ */
+ public function testIsVisitor_userAgentIsKnownBot()
+ {
+ $isUserAgentBot = array(
+ 'baiduspider' => true,
+ 'bingbot' => true,
+ 'BINGBOT' => true,
+ 'x BingBot x' => true,
+ 'BingPreview' => true,
+ 'facebookexternalhit' => true,
+ 'YottaaMonitor' => true,
+ 'Mozilla/5.0 (compatible; CloudFlare-AlwaysOnline/1.0; +http://www.cloudflare.com/always-online) XXXX' => true,
+ 'Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)' => true,
+ 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)' => true,
+ 'Exabot/2.0' => true,
+ 'sogou spider' => true,
+ 'Mozilla/5.0(compatible;Sosospider/2.0;+http://help.soso.com/webspider.htm)' => true,
+
+
+ 'AdsBot-Google (+http://www.google.com/adsbot.html)' => true,
+ 'Google Page Speed Insights' => true,
+ // Web snippets
+ 'Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0 Google (+https://developers.google.com/+/web/snippet/)' => true,
+ // Google Web Preview
+ 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.51 (KHTML, like Gecko; Google Web Preview) Chrome/12.0.742 Safari/534.51' => true,
+ 'Googlebot-Video/1.0' => true,
+ 'Googlebot' => true,
+
+ 'random' => false,
+ 'hello world' => false,
+ 'this is a user agent' => false,
+ 'Mozilla' => false,
+ );
+
+ $idsite = API::getInstance()->addSite("name", "http://piwik.net/");
+
+ foreach ($isUserAgentBot as $userAgent => $isBot) {
+ $request = new Request(array(
+ 'idsite' => $idsite,
+ 'bots' => 0,
+ 'ua' => $userAgent,
+ ));
+
+ $excluded = new VisitExcluded_public($request);
+
+ $this->assertSame($isBot, $excluded->public_isNonHumanBot(), $userAgent);
+ }
+ }
}
class VisitExcluded_public extends VisitExcluded
diff --git a/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml
index 84105464083..247d5fbf7ab 100644
--- a/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml
+++ b/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml
@@ -1713,9 +1713,9 @@
+
+
+
+ Unknown
+
+ 8
+
+
+ 40
+
+
+ 5
+
+
+ 00:15:01
+
+
+ 0%
+
+
+ 0%
+
+
+
+
+
+
Desktop
- 10
+ 2
- 43
+ 3
- 4.3
+ 1.5
- 00:12:37
+ 00:03:01
- 10%
+ 50%
0%
diff --git a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
index e2fc4d65053..f4e7a9afb53 100644
--- a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
+++ b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
@@ -4869,24 +4869,49 @@
+
+
+
+ Unknown
+
+ 8
+
+
+ 40
+
+
+ 5
+
+
+ 00:15:01
+
+
+ 0%
+
+
+ 0%
+
+
Desktop
- 10
+ 2
- 43
+ 3
- 4.3
+ 1.5
- 00:12:37
+ 00:03:01
- 10%
+ 50%
0%
diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php
index f51bc3e35f0..8ca26efcff2 100755
--- a/tests/PHPUnit/IntegrationTestCase.php
+++ b/tests/PHPUnit/IntegrationTestCase.php
@@ -78,6 +78,8 @@ public static function setUpBeforeClass()
$fixture = static::$fixture;
}
+ $fixture->testCaseClass = get_called_class();
+
try {
$fixture->performSetUp();
} catch (Exception $e) {
diff --git a/tests/PHPUnit/TestingEnvironment.php b/tests/PHPUnit/TestingEnvironment.php
index df7538c63ac..363c8a89b96 100644
--- a/tests/PHPUnit/TestingEnvironment.php
+++ b/tests/PHPUnit/TestingEnvironment.php
@@ -3,6 +3,7 @@
use Piwik\Common;
use Piwik\Config;
use Piwik\Piwik;
+use Piwik\Option;
require_once PIWIK_INCLUDE_PATH . "/core/Config.php";
@@ -61,6 +62,11 @@ public function __set($key, $value)
$this->behaviorOverrideProperties[$key] = $value;
}
+ public function __isset($name)
+ {
+ return isset($this->behaviorOverrideProperties[$name]);
+ }
+
public function save()
{
$overridePath = PIWIK_INCLUDE_PATH . '/tmp/testingPathOverride.json';
@@ -123,6 +129,12 @@ public static function addHooks()
$manager = \Piwik\Plugin\Manager::getInstance();
$pluginsToLoad = $manager->getPluginsToLoadDuringTests();
+ if (!empty($testingEnvironment->pluginsToLoad)) {
+ $pluginsToLoad = array_unique(array_merge($pluginsToLoad, $testingEnvironment->pluginsToLoad));
+ }
+
+ sort($pluginsToLoad);
+
$config->Plugins = array('Plugins' => $pluginsToLoad);
$trackerPluginsToLoad = array_filter($pluginsToLoad, function ($plugin) use ($manager) {
@@ -151,7 +163,13 @@ public static function addHooks()
}
});
}
- Piwik::addAction('Request.dispatch', function() {
+ Piwik::addAction('Request.dispatch', function() use ($testingEnvironment) {
+ if ($testingEnvironment->optionsOverride) {
+ foreach ($testingEnvironment->optionsOverride as $name => $value) {
+ Option::set($name, $value);
+ }
+ }
+
\Piwik\Plugins\CoreVisualizations\Visualizations\Cloud::$debugDisableShuffle = true;
\Piwik\Visualization\Sparkline::$enableSparklineImages = false;
\Piwik\Plugins\ExampleUI\API::$disableRandomness = true;
diff --git a/tests/PHPUnit/UI b/tests/PHPUnit/UI
index 06b7215cfed..ae51df2e125 160000
--- a/tests/PHPUnit/UI
+++ b/tests/PHPUnit/UI
@@ -1 +1 @@
-Subproject commit 06b7215cfeda6fabd3acee2db22dd7805e14ad52
+Subproject commit ae51df2e125f4fad3c59ddf623f98dd5251d8492
diff --git a/tests/PHPUnit/bootstrap.php b/tests/PHPUnit/bootstrap.php
index 429b3d17e6f..ea2d0aa3aa7 100644
--- a/tests/PHPUnit/bootstrap.php
+++ b/tests/PHPUnit/bootstrap.php
@@ -27,6 +27,9 @@
error_reporting(E_ALL | E_NOTICE);
@date_default_timezone_set('UTC');
+require_once file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')
+ ? PIWIK_INCLUDE_PATH . '/vendor/autoload.php' // Piwik is the main project
+ : PIWIK_INCLUDE_PATH . '/../../autoload.php'; // Piwik is installed as a dependency
require_once PIWIK_INCLUDE_PATH . '/libs/upgradephp/upgrade.php';
require_once PIWIK_INCLUDE_PATH . '/core/testMinimumPhpVersion.php';
@@ -38,9 +41,6 @@
require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/FakeAccess.php';
require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/MockPiwikOption.php';
require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/TestingEnvironment.php';
-require_once file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')
- ? PIWIK_INCLUDE_PATH . '/vendor/autoload.php' // Piwik is the main project
- : PIWIK_INCLUDE_PATH . '/../../autoload.php'; // Piwik is installed as a dependency
\Piwik\Profiler::setupProfilerXHProf( $mainRun = true );
diff --git a/tests/PHPUnit/proxy/includes.php b/tests/PHPUnit/proxy/includes.php
index 905fbd0d13a..3530b269340 100644
--- a/tests/PHPUnit/proxy/includes.php
+++ b/tests/PHPUnit/proxy/includes.php
@@ -9,6 +9,10 @@
define('PIWIK_USER_PATH', PIWIK_INCLUDE_PATH);
}
+require_once file_exists(PIWIK_INCLUDE_PATH . '/vendor/autoload.php')
+ ? PIWIK_INCLUDE_PATH . '/vendor/autoload.php' // Piwik is the main project
+ : PIWIK_INCLUDE_PATH . '/../../autoload.php'; // Piwik is installed as a dependency
+
require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
require_once PIWIK_INCLUDE_PATH . '/core/EventDispatcher.php';
require_once PIWIK_INCLUDE_PATH . '/core/Piwik.php';
diff --git a/tests/PHPUnit/travis.sh b/tests/PHPUnit/travis.sh
index 2ba14958d5e..90eff649058 100755
--- a/tests/PHPUnit/travis.sh
+++ b/tests/PHPUnit/travis.sh
@@ -16,6 +16,9 @@ fi
if [ -n "$TEST_SUITE" ]
then
+ echo "Executing tests in test suite $TEST_SUITE..."
+ echo " [ plugin name = $PLUGIN_NAME ]"
+
if [ "$TEST_SUITE" = "AngularJSTests" ]
then
sh ./../angularjs/scripts/travis.sh
diff --git a/tests/lib/screenshot-testing/run-tests.js b/tests/lib/screenshot-testing/run-tests.js
index 62d7a56012b..b9073395771 100644
--- a/tests/lib/screenshot-testing/run-tests.js
+++ b/tests/lib/screenshot-testing/run-tests.js
@@ -27,6 +27,20 @@ require('./support/mocha-loader');
phantom.injectJs(chaiPath);
require('./support/chai-extras');
+// load & configure resemble (for comparison)
+phantom.injectJs(resemblePath);
+
+resemble.outputSettings({
+ errorColor: {
+ red: 255,
+ green: 0,
+ blue: 0,
+ alpha: 125
+ },
+ errorType: 'movement',
+ transparency: 0.3
+});
+
// run script
if (options['help']) {
app.printHelpAndExit();
diff --git a/tests/lib/screenshot-testing/support/chai-extras.js b/tests/lib/screenshot-testing/support/chai-extras.js
index 1253f8fb13b..f2c7f0544d8 100644
--- a/tests/lib/screenshot-testing/support/chai-extras.js
+++ b/tests/lib/screenshot-testing/support/chai-extras.js
@@ -108,6 +108,14 @@ function capture(screenName, compareAgainst, selector, pageSetupFn, done) {
done(error);
};
+ var pass = function () {
+ if (options['print-logs']) {
+ console.log(getPageLogsString(pageRenderer.pageLogs, " "));
+ }
+
+ done();
+ };
+
if (!testInfo.processed) {
fail("Failed to generate screenshot to " + screenshotFileName + ".");
return;
@@ -121,16 +129,20 @@ function capture(screenName, compareAgainst, selector, pageSetupFn, done) {
var expected = fs.read(expectedScreenshotPath),
processed = fs.read(processedScreenshotPath);
- if (expected != processed) {
- fail("Processed screenshot does not match expected for " + screenshotFileName + ".");
+ if (processed == expected) {
+ pass();
return;
}
- if (options['print-logs']) {
- console.log(getPageLogsString(pageRenderer.pageLogs, " "));
- }
+ // if the files are not exact, perform a diff to check if they are truly different
+ resemble("file://" + processedScreenshotPath).compareTo("file://" + expectedScreenshotPath).onComplete(function(data) {
+ if (data.misMatchPercentage != 0) {
+ fail("Processed screenshot does not match expected for " + screenshotFileName + ".");
+ return;
+ }
- done();
+ pass();
+ });
}, selector);
} catch (ex) {
var err = new Error(ex.message);
diff --git a/tests/lib/screenshot-testing/support/globals.js b/tests/lib/screenshot-testing/support/globals.js
index 1cd9b782fd8..53d8d050e5d 100644
--- a/tests/lib/screenshot-testing/support/globals.js
+++ b/tests/lib/screenshot-testing/support/globals.js
@@ -21,6 +21,8 @@ var mochaPath = path.join(testsLibDir, config.mocha, "mocha.js");
var chaiPath = path.join(testsLibDir, config.chai, "chai.js");
+var resemblePath = path.join(testsLibDir, 'resemblejs', 'resemble.js');
+
var expect = function () {
return chai.expect.apply(chai.expect, arguments);
};
diff --git a/tests/lib/screenshot-testing/support/test-environment.js b/tests/lib/screenshot-testing/support/test-environment.js
index e7a0f1f44eb..375408e562f 100644
--- a/tests/lib/screenshot-testing/support/test-environment.js
+++ b/tests/lib/screenshot-testing/support/test-environment.js
@@ -118,6 +118,13 @@ TestingEnvironment.prototype.executeConsoleCommand = function (command, args, ca
child.on("exit", callback);
};
+TestingEnvironment.prototype.addPluginOnCmdLineToTestEnv = function () {
+ if (options.plugin) {
+ this.pluginsToLoad = [options.plugin];
+ this.save();
+ }
+};
+
var droppedOnce = false;
TestingEnvironment.prototype.setupFixture = function (fixtureClass, done) {
console.log(" Setting up fixture " + fixtureClass + "...");
@@ -140,6 +147,7 @@ TestingEnvironment.prototype.setupFixture = function (fixtureClass, done) {
var self = this;
this.executeConsoleCommand('tests:setup-fixture', args, function (code) {
self.reload();
+ self.addPluginOnCmdLineToTestEnv();
console.log();
diff --git a/tests/resources/Config/common.config.ini.php b/tests/resources/Config/common.config.ini.php
index 572f1a937a4..db8cb53d41a 100644
--- a/tests/resources/Config/common.config.ini.php
+++ b/tests/resources/Config/common.config.ini.php
@@ -1,6 +1,9 @@
[Category]
key2 = valueCommon
+; This should not trigger an error if INI_SCANNER_RAW is used
+key3 = "${@piwik(crash))}"
+
[GeneralSection]
password = passwordCommonShouldNotBeOverriden
diff --git a/tests/travis/setup_webserver.sh b/tests/travis/setup_webserver.sh
index 6ab7767d806..66916f6f301 100755
--- a/tests/travis/setup_webserver.sh
+++ b/tests/travis/setup_webserver.sh
@@ -27,6 +27,8 @@ fi
USER=$(whoami)
+echo "php-fpm user = $USER"
+
touch "$PHP_FPM_LOG"
# Adjust php-fpm.ini
@@ -46,5 +48,6 @@ sudo cp "$DIR/piwik_nginx.conf" $NGINX_CONF
# Start daemons
echo "Starting php-fpm"
sudo $PHP_FPM_BIN --fpm-config "$DIR/php-fpm.ini"
+sudo chown www-data:www-data ./tests/travis/php-fpm.sock
echo "Starting nginx"
sudo service nginx start
diff --git a/tests/travis/upload_artifacts.sh b/tests/travis/upload_artifacts.sh
index 991b18b515d..98a3f4fffa0 100755
--- a/tests/travis/upload_artifacts.sh
+++ b/tests/travis/upload_artifacts.sh
@@ -30,7 +30,11 @@ else
base_dir=`pwd`
if [ -n "$PLUGIN_NAME" ];
then
- cd "./plugins/$PLUGIN_NAME/Test/UI"
+ if [ -d "./plugins/$PLUGIN_NAME/Test/UI" ]; then
+ cd "./plugins/$PLUGIN_NAME/Test/UI"
+ else
+ cd "./plugins/$PLUGIN_NAME/tests/UI"
+ fi
else
cd ./tests/PHPUnit/UI
fi