Version Description
Download this release
Release Info
Developer | matomoteam |
Plugin | Matomo Analytics – Ethical Stats. Powerful Insights. |
Version | 1.0.3 |
Comparing to | |
See all releases |
Code changes from version 1.0.2 to 1.0.3
- app/config/environment/dev.php +6 -6
- app/core/API/Request.php +6 -1
- app/core/Archive/ArchiveInvalidator.php +26 -3
- app/core/Cookie.php +3 -6
- app/core/Exception/InvalidRequestParameterException.php +5 -0
- app/core/Plugin/ViewDataTable.php +0 -2
- app/core/Plugin/Visualization.php +6 -3
- app/core/Session.php +14 -4
- app/core/Tracker/GoalManager.php +5 -1
- app/core/Tracker/IgnoreCookie.php +7 -1
- app/core/Tracker/Response.php +2 -1
- app/core/Version.php +1 -1
- app/js/piwik.min.js +1 -1
- app/libs/HTML/QuickForm2/Element/Date.php +1 -1
- app/libs/Zend/Session.php +2 -0
- app/libs/Zend/Validate/Isbn.php +3 -3
- app/libs/bower_components/jquery-mousewheel/ChangeLog.md +0 -147
- app/libs/bower_components/visibilityjs/ChangeLog.md +0 -78
- app/matomo.js +1 -1
- app/piwik.js +1 -1
- app/plugins/CoreVisualizations/Visualizations/HtmlTable.php +5 -3
- app/plugins/CustomPiwikJs/TrackingCode/PluginTrackerFiles.php +17 -31
- app/plugins/GeoIp2/GeoIP2AutoUpdater.php +36 -2
- app/plugins/GeoIp2/LocationProvider/GeoIp2/Php.php +26 -1
- app/plugins/Overlay/Controller.php +7 -0
- app/plugins/VisitFrequency/API.php +4 -1
- app/vendor/autoload.php +1 -1
- app/vendor/composer/autoload_classmap.php +3 -1
- app/vendor/composer/autoload_real.php +7 -7
- app/vendor/composer/autoload_static.php +9 -7
- assets/js/asset_manager_core_js.js +1 -1
- classes/WpMatomo/Admin/SystemReport.php +23 -0
- classes/WpMatomo/Admin/views/marketplace.php +4 -4
- classes/WpMatomo/Ecommerce/Base.php +1 -1
- classes/WpMatomo/Ecommerce/Woocommerce.php +18 -2
- classes/WpMatomo/Paths.php +2 -2
- config/common.config.ini.php +3 -0
- config/config.php +3 -4
- matomo.php +24 -8
- plugins/WordPress/WordPress.php +20 -0
- readme.txt +160 -154
app/config/environment/dev.php
CHANGED
@@ -2,11 +2,11 @@
|
|
2 |
|
3 |
return array(
|
4 |
|
5 |
-
|
6 |
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
|
12 |
-
);
|
2 |
|
3 |
return array(
|
4 |
|
5 |
+
'Piwik\Cache\Backend' => DI\object('Piwik\Cache\Backend\ArrayCache'),
|
6 |
|
7 |
+
'Piwik\Translation\Loader\LoaderInterface' => DI\object('Piwik\Translation\Loader\LoaderCache')
|
8 |
+
->constructor(DI\get('Piwik\Translation\Loader\DevelopmentLoader')),
|
9 |
+
'Piwik\Translation\Loader\DevelopmentLoader' => DI\object()
|
10 |
+
->constructor(DI\get('Piwik\Translation\Loader\JsonFileLoader')),
|
11 |
|
12 |
+
);
|
app/core/API/Request.php
CHANGED
@@ -215,6 +215,8 @@ class Request
|
|
215 |
*/
|
216 |
public function process()
|
217 |
{
|
|
|
|
|
218 |
try {
|
219 |
++self::$nestedApiInvocationCount;
|
220 |
|
@@ -233,7 +235,6 @@ class Request
|
|
233 |
$corsHandler->handle();
|
234 |
|
235 |
$tokenAuth = Common::getRequestVar('token_auth', '', 'string', $this->request);
|
236 |
-
$shouldReloadAuth = false;
|
237 |
|
238 |
// IP check is needed here as we cannot listen to API.Request.authenticate as it would then not return proper API format response.
|
239 |
// We can also not do it by listening to API.Request.dispatch as by then the user is already authenticated and we want to make sure
|
@@ -276,6 +277,10 @@ class Request
|
|
276 |
'ignoreInScreenWriter' => true,
|
277 |
]);
|
278 |
|
|
|
|
|
|
|
|
|
279 |
$toReturn = $response->getResponseException($e);
|
280 |
} finally {
|
281 |
--self::$nestedApiInvocationCount;
|
215 |
*/
|
216 |
public function process()
|
217 |
{
|
218 |
+
$shouldReloadAuth = false;
|
219 |
+
|
220 |
try {
|
221 |
++self::$nestedApiInvocationCount;
|
222 |
|
235 |
$corsHandler->handle();
|
236 |
|
237 |
$tokenAuth = Common::getRequestVar('token_auth', '', 'string', $this->request);
|
|
|
238 |
|
239 |
// IP check is needed here as we cannot listen to API.Request.authenticate as it would then not return proper API format response.
|
240 |
// We can also not do it by listening to API.Request.dispatch as by then the user is already authenticated and we want to make sure
|
277 |
'ignoreInScreenWriter' => true,
|
278 |
]);
|
279 |
|
280 |
+
if (empty($response)) {
|
281 |
+
$response = new ResponseBuilder('console', $this->request);
|
282 |
+
}
|
283 |
+
|
284 |
$toReturn = $response->getResponseException($e);
|
285 |
} finally {
|
286 |
--self::$nestedApiInvocationCount;
|
app/core/Archive/ArchiveInvalidator.php
CHANGED
@@ -16,6 +16,7 @@ use Piwik\DataAccess\ArchiveTableCreator;
|
|
16 |
use Piwik\DataAccess\Model;
|
17 |
use Piwik\Date;
|
18 |
use Piwik\CliMulti\Process;
|
|
|
19 |
use Piwik\Option;
|
20 |
use Piwik\Common;
|
21 |
use Piwik\Piwik;
|
@@ -125,7 +126,6 @@ class ArchiveInvalidator
|
|
125 |
|
126 |
$generalCache = Cache::getCacheGeneral();
|
127 |
if (empty($generalCache[$cacheKey][$idSite][$dateStr])) {
|
128 |
-
Cache::clearCacheGeneral();
|
129 |
return [];
|
130 |
}
|
131 |
|
@@ -178,12 +178,14 @@ class ArchiveInvalidator
|
|
178 |
public function forgetRememberedArchivedReportsToInvalidateForSite($idSite)
|
179 |
{
|
180 |
$id = $this->buildRememberArchivedReportIdForSite($idSite) . '_%';
|
181 |
-
|
182 |
Cache::clearCacheGeneral();
|
183 |
}
|
184 |
|
185 |
/**
|
186 |
* @internal
|
|
|
|
|
187 |
*/
|
188 |
public function forgetRememberedArchivedReportsToInvalidate($idSite, Date $date)
|
189 |
{
|
@@ -191,10 +193,28 @@ class ArchiveInvalidator
|
|
191 |
|
192 |
// The process pid is added to the end of the entry in order to support multiple concurrent transactions.
|
193 |
// So this must be a deleteLike call to get all the entries, where there used to only be one.
|
194 |
-
|
195 |
Cache::clearCacheGeneral();
|
196 |
}
|
197 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
/**
|
199 |
* @param $idSites int[]
|
200 |
* @param $dates Date[]
|
@@ -268,6 +288,7 @@ class ArchiveInvalidator
|
|
268 |
$this->forgetRememberedArchivedReportsToInvalidate($idSite, $date);
|
269 |
}
|
270 |
}
|
|
|
271 |
|
272 |
return $invalidationInfo;
|
273 |
}
|
@@ -310,6 +331,8 @@ class ArchiveInvalidator
|
|
310 |
}
|
311 |
}
|
312 |
|
|
|
|
|
313 |
$archivesToPurge = new ArchivesToPurgeDistributedList();
|
314 |
$archivesToPurge->add($invalidatedMonths);
|
315 |
|
16 |
use Piwik\DataAccess\Model;
|
17 |
use Piwik\Date;
|
18 |
use Piwik\CliMulti\Process;
|
19 |
+
use Piwik\Db;
|
20 |
use Piwik\Option;
|
21 |
use Piwik\Common;
|
22 |
use Piwik\Piwik;
|
126 |
|
127 |
$generalCache = Cache::getCacheGeneral();
|
128 |
if (empty($generalCache[$cacheKey][$idSite][$dateStr])) {
|
|
|
129 |
return [];
|
130 |
}
|
131 |
|
178 |
public function forgetRememberedArchivedReportsToInvalidateForSite($idSite)
|
179 |
{
|
180 |
$id = $this->buildRememberArchivedReportIdForSite($idSite) . '_%';
|
181 |
+
$this->deleteOptionLike($id);
|
182 |
Cache::clearCacheGeneral();
|
183 |
}
|
184 |
|
185 |
/**
|
186 |
* @internal
|
187 |
+
* After calling this method, make sure to call Cache::clearCacheGeneral(); For performance reasons we don't call
|
188 |
+
* this here immediately in case there are multiple invalidations.
|
189 |
*/
|
190 |
public function forgetRememberedArchivedReportsToInvalidate($idSite, Date $date)
|
191 |
{
|
193 |
|
194 |
// The process pid is added to the end of the entry in order to support multiple concurrent transactions.
|
195 |
// So this must be a deleteLike call to get all the entries, where there used to only be one.
|
196 |
+
$this->deleteOptionLike($id);
|
197 |
Cache::clearCacheGeneral();
|
198 |
}
|
199 |
|
200 |
+
private function deleteOptionLike($id)
|
201 |
+
{
|
202 |
+
// we're not using deleteLike since it maybe could cause deadlocks see https://github.com/matomo-org/matomo/issues/15545
|
203 |
+
// we want to reduce number of rows scanned and only delete specific primary key
|
204 |
+
$keys = Option::getLike($id . '%');
|
205 |
+
|
206 |
+
if (empty($keys)) {
|
207 |
+
return;
|
208 |
+
}
|
209 |
+
|
210 |
+
$keys = array_keys($keys);
|
211 |
+
|
212 |
+
$placeholders = Common::getSqlStringFieldsArray($keys);
|
213 |
+
|
214 |
+
$table = Common::prefixTable('option');
|
215 |
+
Db::query('DELETE FROM `' . $table . '` WHERE `option_name` IN (' . $placeholders . ')', $keys);
|
216 |
+
}
|
217 |
+
|
218 |
/**
|
219 |
* @param $idSites int[]
|
220 |
* @param $dates Date[]
|
288 |
$this->forgetRememberedArchivedReportsToInvalidate($idSite, $date);
|
289 |
}
|
290 |
}
|
291 |
+
Cache::clearCacheGeneral();
|
292 |
|
293 |
return $invalidationInfo;
|
294 |
}
|
331 |
}
|
332 |
}
|
333 |
|
334 |
+
Cache::clearCacheGeneral();
|
335 |
+
|
336 |
$archivesToPurge = new ArchivesToPurgeDistributedList();
|
337 |
$archivesToPurge->add($invalidatedMonths);
|
338 |
|
app/core/Cookie.php
CHANGED
@@ -445,14 +445,11 @@ class Cookie
|
|
445 |
$ddFactory = StaticContainer::get(\Piwik\DeviceDetector\DeviceDetectorFactory::class);
|
446 |
$deviceDetector = $ddFactory->makeInstance($userAgent);
|
447 |
$deviceDetector->parse();
|
448 |
-
$browser = $deviceDetector->getClient();
|
449 |
-
if (is_array($browser)) {
|
450 |
-
$browser = $browser['name'];
|
451 |
-
}
|
452 |
|
453 |
-
|
|
|
454 |
$sameSite = 'Lax';
|
455 |
-
} else if ($
|
456 |
$sameSite = '';
|
457 |
}
|
458 |
}
|
445 |
$ddFactory = StaticContainer::get(\Piwik\DeviceDetector\DeviceDetectorFactory::class);
|
446 |
$deviceDetector = $ddFactory->makeInstance($userAgent);
|
447 |
$deviceDetector->parse();
|
|
|
|
|
|
|
|
|
448 |
|
449 |
+
$browserFamily = \DeviceDetector\Parser\Client\Browser::getBrowserFamily($deviceDetector->getClient('short_name'));
|
450 |
+
if ((!ProxyHttp::isHttps()) && $browserFamily === 'Chrome') {
|
451 |
$sameSite = 'Lax';
|
452 |
+
} else if ($browserFamily === 'Safari') {
|
453 |
$sameSite = '';
|
454 |
}
|
455 |
}
|
app/core/Exception/InvalidRequestParameterException.php
CHANGED
@@ -10,4 +10,9 @@ namespace Piwik\Exception;
|
|
10 |
|
11 |
class InvalidRequestParameterException extends Exception
|
12 |
{
|
|
|
|
|
|
|
|
|
|
|
13 |
}
|
10 |
|
11 |
class InvalidRequestParameterException extends Exception
|
12 |
{
|
13 |
+
|
14 |
+
public function __toString()
|
15 |
+
{
|
16 |
+
return $this->getMessage() . ' ' . $this->getFile() . ':' . $this->getLine();
|
17 |
+
}
|
18 |
}
|
app/core/Plugin/ViewDataTable.php
CHANGED
@@ -15,8 +15,6 @@ use Piwik\DataTable;
|
|
15 |
use Piwik\Period;
|
16 |
use Piwik\Piwik;
|
17 |
use Piwik\Plugins\API\Filter\DataComparisonFilter;
|
18 |
-
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparkline;
|
19 |
-
use Piwik\View;
|
20 |
use Piwik\View\ViewInterface;
|
21 |
use Piwik\ViewDataTable\Config as VizConfig;
|
22 |
use Piwik\ViewDataTable\Manager as ViewDataTableManager;
|
15 |
use Piwik\Period;
|
16 |
use Piwik\Piwik;
|
17 |
use Piwik\Plugins\API\Filter\DataComparisonFilter;
|
|
|
|
|
18 |
use Piwik\View\ViewInterface;
|
19 |
use Piwik\ViewDataTable\Config as VizConfig;
|
20 |
use Piwik\ViewDataTable\Manager as ViewDataTableManager;
|
app/core/Plugin/Visualization.php
CHANGED
@@ -332,9 +332,12 @@ class Visualization extends ViewDataTable
|
|
332 |
|
333 |
PluginManager::getInstance()->checkIsPluginActivated($module);
|
334 |
|
335 |
-
$proxyRequestParams =
|
336 |
-
|
337 |
-
|
|
|
|
|
|
|
338 |
|
339 |
$class = ApiRequest::getClassNameAPI($module);
|
340 |
$dataTable = Proxy::getInstance()->call($class, $method, $proxyRequestParams);
|
332 |
|
333 |
PluginManager::getInstance()->checkIsPluginActivated($module);
|
334 |
|
335 |
+
$proxyRequestParams = $request;
|
336 |
+
if ($this->isComparing()) {
|
337 |
+
$proxyRequestParams = array_merge($proxyRequestParams, [
|
338 |
+
'disable_root_datatable_post_processor' => 1,
|
339 |
+
]);
|
340 |
+
}
|
341 |
|
342 |
$class = ApiRequest::getClassNameAPI($module);
|
343 |
$dataTable = Proxy::getInstance()->call($class, $method, $proxyRequestParams);
|
app/core/Session.php
CHANGED
@@ -190,7 +190,15 @@ class Session extends Zend_Session
|
|
190 |
{
|
191 |
$config = Config::getInstance();
|
192 |
$general = $config->General;
|
193 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
return 'None';
|
195 |
}
|
196 |
|
@@ -214,10 +222,10 @@ class Session extends Zend_Session
|
|
214 |
{
|
215 |
$headerStr = 'Set-Cookie: ' . rawurlencode($name) . '=' . rawurlencode($value);
|
216 |
if ($expires) {
|
217 |
-
$headerStr .= '; expires=' .
|
218 |
}
|
219 |
if ($path) {
|
220 |
-
$headerStr .= '; path=' .
|
221 |
}
|
222 |
if ($domain) {
|
223 |
$headerStr .= '; domain=' . rawurlencode($domain);
|
@@ -229,8 +237,10 @@ class Session extends Zend_Session
|
|
229 |
$headerStr .= '; httponly';
|
230 |
}
|
231 |
if ($sameSite) {
|
232 |
-
$headerStr .= '; SameSite=' .
|
233 |
}
|
|
|
|
|
234 |
return $headerStr;
|
235 |
}
|
236 |
}
|
190 |
{
|
191 |
$config = Config::getInstance();
|
192 |
$general = $config->General;
|
193 |
+
|
194 |
+
$module = Piwik::getModule();
|
195 |
+
$action = Piwik::getAction();
|
196 |
+
|
197 |
+
$isOptOutRequest = $module == 'CoreAdminHome' && $action == 'optOut';
|
198 |
+
$isOverlay = $module == 'Overlay';
|
199 |
+
$shouldUseNone = !empty($general['enable_framed_pages']) || $isOptOutRequest || $isOverlay;
|
200 |
+
|
201 |
+
if ($shouldUseNone && ProxyHttp::isHttps()) {
|
202 |
return 'None';
|
203 |
}
|
204 |
|
222 |
{
|
223 |
$headerStr = 'Set-Cookie: ' . rawurlencode($name) . '=' . rawurlencode($value);
|
224 |
if ($expires) {
|
225 |
+
$headerStr .= '; expires=' . $expires;
|
226 |
}
|
227 |
if ($path) {
|
228 |
+
$headerStr .= '; path=' . $path;
|
229 |
}
|
230 |
if ($domain) {
|
231 |
$headerStr .= '; domain=' . rawurlencode($domain);
|
237 |
$headerStr .= '; httponly';
|
238 |
}
|
239 |
if ($sameSite) {
|
240 |
+
$headerStr .= '; SameSite=' . $sameSite;
|
241 |
}
|
242 |
+
|
243 |
+
Common::sendHeader($headerStr);
|
244 |
return $headerStr;
|
245 |
}
|
246 |
}
|
app/core/Tracker/GoalManager.php
CHANGED
@@ -877,10 +877,14 @@ class GoalManager
|
|
877 |
|
878 |
private function getGoalFromVisitor(VisitProperties $visitProperties, Request $request, $action)
|
879 |
{
|
|
|
|
|
|
|
|
|
880 |
$goal = array(
|
881 |
'idvisit' => $visitProperties->getProperty('idvisit'),
|
882 |
'idvisitor' => $visitProperties->getProperty('idvisitor'),
|
883 |
-
'server_time' => Date::getDatetimeFromTimestamp($
|
884 |
);
|
885 |
|
886 |
$visitDimensions = VisitDimension::getAllDimensions();
|
877 |
|
878 |
private function getGoalFromVisitor(VisitProperties $visitProperties, Request $request, $action)
|
879 |
{
|
880 |
+
$lastVisitTime = $visitProperties->getProperty('visit_last_action_time');
|
881 |
+
if (!$lastVisitTime) {
|
882 |
+
$lastVisitTime = $request->getCurrentTimestamp();
|
883 |
+
}
|
884 |
$goal = array(
|
885 |
'idvisit' => $visitProperties->getProperty('idvisit'),
|
886 |
'idvisitor' => $visitProperties->getProperty('idvisitor'),
|
887 |
+
'server_time' => Date::getDatetimeFromTimestamp($lastVisitTime),
|
888 |
);
|
889 |
|
890 |
$visitDimensions = VisitDimension::getAllDimensions();
|
app/core/Tracker/IgnoreCookie.php
CHANGED
@@ -10,6 +10,7 @@ namespace Piwik\Tracker;
|
|
10 |
|
11 |
use Piwik\Config;
|
12 |
use Piwik\Cookie;
|
|
|
13 |
|
14 |
/**
|
15 |
* Tracking cookies.
|
@@ -61,7 +62,12 @@ class IgnoreCookie
|
|
61 |
$ignoreCookie->delete();
|
62 |
} else {
|
63 |
$ignoreCookie->set('ignore', '*');
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
|
67 |
self::deleteThirdPartyCookieUIDIfExists();
|
10 |
|
11 |
use Piwik\Config;
|
12 |
use Piwik\Cookie;
|
13 |
+
use Piwik\ProxyHttp;
|
14 |
|
15 |
/**
|
16 |
* Tracking cookies.
|
62 |
$ignoreCookie->delete();
|
63 |
} else {
|
64 |
$ignoreCookie->set('ignore', '*');
|
65 |
+
if (ProxyHttp::isHttps()) {
|
66 |
+
$ignoreCookie->setSecure(true);
|
67 |
+
$ignoreCookie->save('None');
|
68 |
+
} else {
|
69 |
+
$ignoreCookie->save('Lax');
|
70 |
+
}
|
71 |
}
|
72 |
|
73 |
self::deleteThirdPartyCookieUIDIfExists();
|
app/core/Tracker/Response.php
CHANGED
@@ -89,7 +89,8 @@ class Response
|
|
89 |
|
90 |
if ($tracker->isDebugModeEnabled()
|
91 |
&& $tracker->isDatabaseConnected()
|
92 |
-
&& TrackerDb::isProfilingEnabled()
|
|
|
93 |
$db = Tracker::getDatabase();
|
94 |
$db->recordProfiling();
|
95 |
Profiler::displayDbTrackerProfile($db);
|
89 |
|
90 |
if ($tracker->isDebugModeEnabled()
|
91 |
&& $tracker->isDatabaseConnected()
|
92 |
+
&& TrackerDb::isProfilingEnabled()
|
93 |
+
) {
|
94 |
$db = Tracker::getDatabase();
|
95 |
$db->recordProfiling();
|
96 |
Profiler::displayDbTrackerProfile($db);
|
app/core/Version.php
CHANGED
@@ -20,7 +20,7 @@ final class Version
|
|
20 |
* The current Matomo version.
|
21 |
* @var string
|
22 |
*/
|
23 |
-
const VERSION = '3.13.
|
24 |
|
25 |
public function isStableVersion($version)
|
26 |
{
|
20 |
* The current Matomo version.
|
21 |
* @var string
|
22 |
*/
|
23 |
+
const VERSION = '3.13.3';
|
24 |
|
25 |
public function isStableVersion($version)
|
26 |
{
|
app/js/piwik.min.js
CHANGED
@@ -39,7 +39,7 @@ if(aq&&au.offsetTop){aq=(au.offsetTop+at.height)>0}var ap=ar.clientWidth;if(T.in
|
|
39 |
}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||T.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.search("^[a-zA-Z]{2,11}:")){return ap}if(ap.search(/^\//)!==-1){return this.getLocation().origin+ap}var ao="(.*/)";var aq=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(ao))[0];return aq+ap},isUrlToCurrentDomain:function(ap){var aq=this.toAbsoluteUrl(ap);if(!aq){return false
|
40 |
}var ao=this.getLocation().origin;if(ao===aq){return true}if(0===String(aq).indexOf(ao)){if(":"===String(aq).substr(ao.length,1)){return false}return true}return false},setHrefAttribute:function(ap,ao){if(!ap||!ao){return}ae.setAnyAttribute(ap,"href",ao)},shouldIgnoreInteraction:function(aq){var ap=ae.hasNodeAttribute(aq,this.CONTENT_IGNOREINTERACTION_ATTR);var ao=ae.hasNodeCssClass(aq,this.CONTENT_IGNOREINTERACTION_CLASS);return ap||ao}};function O(ap,at){if(at){return at}ap=v.toAbsoluteUrl(ap);if(z(ap,"?")){var ar=ap.indexOf("?");ap=ap.slice(0,ar)}if(R(ap,"matomo.php")){ap=g(ap,"matomo.php".length)}else{if(R(ap,"piwik.php")){ap=g(ap,"piwik.php".length)}else{if(R(ap,".php")){var ao=ap.lastIndexOf("/");var aq=1;ap=ap.slice(0,ao+aq)}}}if(R(ap,"/js/")){ap=g(ap,"js/".length)}return ap}function N(av){var ax="Piwik_Overlay";var ap=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=.*)?$");var aq=ap.exec(G.referrer);if(aq){var at=aq[1];
|
41 |
if(at!==String(av)){return false}var au=aq[2],ao=aq[3],ar=aq[4];if(!ar){ar=""}else{if(ar.indexOf("&segment=")===0){ar=ar.substr("&segment=".length)}}T.name=ax+"###"+au+"###"+ao+"###"+ar}var aw=T.name.split("###");return aw.length===4&&aw[0]===ax}function Z(ap,aw,ar){var av=T.name.split("###"),au=av[1],ao=av[2],at=av[3],aq=O(ap,aw);o(aq+"plugins/Overlay/client/client.js?v=1",function(){Piwik_Overlay_Client.initialize(aq,ar,au,ao,at)})}function u(){var aq;try{aq=T.frameElement}catch(ap){return true}if(J(aq)){return(aq&&String(aq.nodeName).toLowerCase()==="iframe")?true:false}try{return T.self!==T.top}catch(ao){return true}}function Q(cd,b8){var bH=this,bd="mtm_consent",cK="mtm_consent_removed",b3=aa(G.domain,T.location.href,K()),cT=L(b3[0]),bM=p(b3[1]),bm=p(b3[2]),cR=false,ch="GET",c9=ch,aH="application/x-www-form-urlencoded; charset=UTF-8",cw=aH,aD=cd||"",bG="",cY="",b5=b8||"",bx="",bN="",a4,bi="",c5=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],ax=[cT],by=[],bK=[],a8=[],bI=500,cV=false,cG,a5,bQ,c6=1800,bO,ao,cq=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],bF=["pk_kwd","piwik_kwd","utm_term"],bj="_pk_",av="pk_vid",aZ=180,cW,bo,bR=false,bk=false,cO,be,bu,cH=33955200000,co=1800000,c4=15768000000,a2=true,cm=0,bP=false,aQ=false,ca,bV={},cl={},bl={},bs=200,cZ={},c7={},b9=[],ce=false,cA=false,ap=false,c8=false,cL=false,aN=false,bc=u(),cQ=null,cX=null,cb,aR,bz,b6=am,bn,aK,cr=0,bt=["id","ses","cvar","ref"],cz=false,bA=null,cI=[],aw=U++;
|
42 |
-
try{bi=G.title}catch(cx){bi=""}function dd(dp,dm,dl,dn,dk,dj){if(bk){return}var di;if(dl){di=new Date();di.setTime(di.getTime()+dl)}G.cookie=dp+"="+t(dm)+(dl?";expires="+di.toGMTString():"")+";path="+(dn||"/")+(dk?";domain="+dk:"")+(dj?";secure":"")}function aC(dk){if(bk){return 0}var di=new RegExp("(^|;)[ ]*"+dk+"=([^;]*)"),dj=di.exec(G.cookie);return dj?S(dj[2]):0}bA=!aC(cK);function b1(di){var dj;di=k(di,av);if(bO){dj=new RegExp("#.*");return di.replace(dj,"")}return di}function bU(dk,di){var dl=s(di),dj;if(dl){return di}if(di.slice(0,1)==="/"){return s(dk)+"://"+d(dk)+di}dk=b1(dk);dj=dk.indexOf("?");if(dj>=0){dk=dk.slice(0,dj)}dj=dk.lastIndexOf("/");if(dj!==dk.length-1){dk=dk.slice(0,dj+1)}return dk+di}function cE(dk,di){var dj;dk=String(dk).toLowerCase();di=String(di).toLowerCase();if(dk===di){return true}if(di.slice(0,1)==="."){if(dk===di.slice(1)){return true}dj=dk.length-di.length;if((dj>0)&&(dk.slice(dj)===di)){return true}}return false}function ck(di){var dj=document.createElement("a");
|
43 |
if(di.indexOf("//")!==0&&di.indexOf("http")!==0){if(di.indexOf("*")===0){di=di.substr(1)}if(di.indexOf(".")===0){di=di.substr(1)}di="http://"+di}dj.href=v.toAbsoluteUrl(di);if(dj.pathname){return dj.pathname}return""}function a3(dj,di){if(!aj(di,"/")){di="/"+di}if(!aj(dj,"/")){dj="/"+dj}var dk=(di==="/"||di==="/*");if(dk){return true}if(dj===di){return true}di=String(di).toLowerCase();dj=String(dj).toLowerCase();if(R(di,"*")){di=di.slice(0,-1);dk=(!di||di==="/");if(dk){return true}if(dj===di){return true}return dj.indexOf(di)===0}if(!R(dj,"/")){dj+="/"}if(!R(di,"/")){di+="/"}return dj.indexOf(di)===0}function ar(dm,dp){var dj,di,dk,dl,dn;for(dj=0;dj<ax.length;dj++){dl=L(ax[dj]);dn=ck(ax[dj]);if(cE(dm,dl)&&a3(dp,dn)){return true}}return false}function aV(dl){var dj,di,dk;for(dj=0;dj<ax.length;dj++){di=L(ax[dj].toLowerCase());if(dl===di){return true}if(di.slice(0,1)==="."){if(dl===di.slice(1)){return true}dk=dl.length-di.length;if((dk>0)&&(dl.slice(dk)===di)){return true}}}return false}function cp(di,dk){di=di.replace("send_image=0","send_image=1");
|
44 |
var dj=new Image(1,1);dj.onload=function(){E=0;if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:true})}};dj.onerror=function(){if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:false})}};dj.src=aD+(aD.indexOf("?")<0?"?":"&")+di}function aJ(){return"object"===typeof h&&"function"===typeof h.sendBeacon&&"function"===typeof Blob}function a6(dl,dq){var dk=aJ();if(!dk){return false}var dp={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dn=false;var dj=aD;try{var di=new Blob([dl],dp);if(dl.length<=2000){di=new Blob([],dp);dj=dj+(dj.indexOf("?")<0?"?":"&")+dl}dn=h.sendBeacon(dj,di)}catch(dm){return false}if(dn&&typeof dq==="function"){dq({request:dl,trackerUrl:aD,success:true,isSendBeacon:true})}return dn}function c3(dj,dk,di){if(!J(di)||null===di){di=true}if(m&&a6(dj,dk)){return}setTimeout(function(){if(m&&a6(dj,dk)){return}var dn;try{var dm=T.XMLHttpRequest?new T.XMLHttpRequest():T.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dm.open("POST",aD,true);
|
45 |
dm.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dp=m&&a6(dj,dk);if(!dp&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dk==="function")){dk({request:dj,trackerUrl:aD,success:true,xhr:this})}}};dm.setRequestHeader("Content-Type",cw);dm.withCredentials=true;dm.send(dj)}catch(dl){dn=m&&a6(dj,dk);if(!dn&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false})}}}},50)}function cf(dj){var di=new Date();var dk=di.getTime()+dj;if(!r||dk>r){r=dk}}function cn(di){if(cb||!a5||!bA){return}cb=setTimeout(function dj(){cb=null;if(!bc){bc=(!G.hasFocus||G.hasFocus())}if(!bc){cn(a5);return}if(bQ()){return}var dk=new Date(),dl=a5-(dk.getTime()-cX);dl=Math.min(a5,dl);cn(dl)},di||a5)}function bJ(){if(!cb){return}clearTimeout(cb);cb=null}function ba(){bc=true;cQ=new Date().getTime()}function dc(){var di=new Date().getTime();return !cQ||(di-cQ)>a5
|
39 |
}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||T.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.search("^[a-zA-Z]{2,11}:")){return ap}if(ap.search(/^\//)!==-1){return this.getLocation().origin+ap}var ao="(.*/)";var aq=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(ao))[0];return aq+ap},isUrlToCurrentDomain:function(ap){var aq=this.toAbsoluteUrl(ap);if(!aq){return false
|
40 |
}var ao=this.getLocation().origin;if(ao===aq){return true}if(0===String(aq).indexOf(ao)){if(":"===String(aq).substr(ao.length,1)){return false}return true}return false},setHrefAttribute:function(ap,ao){if(!ap||!ao){return}ae.setAnyAttribute(ap,"href",ao)},shouldIgnoreInteraction:function(aq){var ap=ae.hasNodeAttribute(aq,this.CONTENT_IGNOREINTERACTION_ATTR);var ao=ae.hasNodeCssClass(aq,this.CONTENT_IGNOREINTERACTION_CLASS);return ap||ao}};function O(ap,at){if(at){return at}ap=v.toAbsoluteUrl(ap);if(z(ap,"?")){var ar=ap.indexOf("?");ap=ap.slice(0,ar)}if(R(ap,"matomo.php")){ap=g(ap,"matomo.php".length)}else{if(R(ap,"piwik.php")){ap=g(ap,"piwik.php".length)}else{if(R(ap,".php")){var ao=ap.lastIndexOf("/");var aq=1;ap=ap.slice(0,ao+aq)}}}if(R(ap,"/js/")){ap=g(ap,"js/".length)}return ap}function N(av){var ax="Piwik_Overlay";var ap=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=.*)?$");var aq=ap.exec(G.referrer);if(aq){var at=aq[1];
|
41 |
if(at!==String(av)){return false}var au=aq[2],ao=aq[3],ar=aq[4];if(!ar){ar=""}else{if(ar.indexOf("&segment=")===0){ar=ar.substr("&segment=".length)}}T.name=ax+"###"+au+"###"+ao+"###"+ar}var aw=T.name.split("###");return aw.length===4&&aw[0]===ax}function Z(ap,aw,ar){var av=T.name.split("###"),au=av[1],ao=av[2],at=av[3],aq=O(ap,aw);o(aq+"plugins/Overlay/client/client.js?v=1",function(){Piwik_Overlay_Client.initialize(aq,ar,au,ao,at)})}function u(){var aq;try{aq=T.frameElement}catch(ap){return true}if(J(aq)){return(aq&&String(aq.nodeName).toLowerCase()==="iframe")?true:false}try{return T.self!==T.top}catch(ao){return true}}function Q(cd,b8){var bH=this,bd="mtm_consent",cK="mtm_consent_removed",b3=aa(G.domain,T.location.href,K()),cT=L(b3[0]),bM=p(b3[1]),bm=p(b3[2]),cR=false,ch="GET",c9=ch,aH="application/x-www-form-urlencoded; charset=UTF-8",cw=aH,aD=cd||"",bG="",cY="",b5=b8||"",bx="",bN="",a4,bi="",c5=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],ax=[cT],by=[],bK=[],a8=[],bI=500,cV=false,cG,a5,bQ,c6=1800,bO,ao,cq=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],bF=["pk_kwd","piwik_kwd","utm_term"],bj="_pk_",av="pk_vid",aZ=180,cW,bo,bR=false,bk=false,cO,be,bu,cH=33955200000,co=1800000,c4=15768000000,a2=true,cm=0,bP=false,aQ=false,ca,bV={},cl={},bl={},bs=200,cZ={},c7={},b9=[],ce=false,cA=false,ap=false,c8=false,cL=false,aN=false,bc=u(),cQ=null,cX=null,cb,aR,bz,b6=am,bn,aK,cr=0,bt=["id","ses","cvar","ref"],cz=false,bA=null,cI=[],aw=U++;
|
42 |
+
try{bi=G.title}catch(cx){bi=""}function dd(dp,dm,dl,dn,dk,dj){if(bk){return}var di;if(dl){di=new Date();di.setTime(di.getTime()+dl)}G.cookie=dp+"="+t(dm)+(dl?";expires="+di.toGMTString():"")+";path="+(dn||"/")+(dk?";domain="+dk:"")+(dj?";secure":"")+";SameSite=Lax"}function aC(dk){if(bk){return 0}var di=new RegExp("(^|;)[ ]*"+dk+"=([^;]*)"),dj=di.exec(G.cookie);return dj?S(dj[2]):0}bA=!aC(cK);function b1(di){var dj;di=k(di,av);if(bO){dj=new RegExp("#.*");return di.replace(dj,"")}return di}function bU(dk,di){var dl=s(di),dj;if(dl){return di}if(di.slice(0,1)==="/"){return s(dk)+"://"+d(dk)+di}dk=b1(dk);dj=dk.indexOf("?");if(dj>=0){dk=dk.slice(0,dj)}dj=dk.lastIndexOf("/");if(dj!==dk.length-1){dk=dk.slice(0,dj+1)}return dk+di}function cE(dk,di){var dj;dk=String(dk).toLowerCase();di=String(di).toLowerCase();if(dk===di){return true}if(di.slice(0,1)==="."){if(dk===di.slice(1)){return true}dj=dk.length-di.length;if((dj>0)&&(dk.slice(dj)===di)){return true}}return false}function ck(di){var dj=document.createElement("a");
|
43 |
if(di.indexOf("//")!==0&&di.indexOf("http")!==0){if(di.indexOf("*")===0){di=di.substr(1)}if(di.indexOf(".")===0){di=di.substr(1)}di="http://"+di}dj.href=v.toAbsoluteUrl(di);if(dj.pathname){return dj.pathname}return""}function a3(dj,di){if(!aj(di,"/")){di="/"+di}if(!aj(dj,"/")){dj="/"+dj}var dk=(di==="/"||di==="/*");if(dk){return true}if(dj===di){return true}di=String(di).toLowerCase();dj=String(dj).toLowerCase();if(R(di,"*")){di=di.slice(0,-1);dk=(!di||di==="/");if(dk){return true}if(dj===di){return true}return dj.indexOf(di)===0}if(!R(dj,"/")){dj+="/"}if(!R(di,"/")){di+="/"}return dj.indexOf(di)===0}function ar(dm,dp){var dj,di,dk,dl,dn;for(dj=0;dj<ax.length;dj++){dl=L(ax[dj]);dn=ck(ax[dj]);if(cE(dm,dl)&&a3(dp,dn)){return true}}return false}function aV(dl){var dj,di,dk;for(dj=0;dj<ax.length;dj++){di=L(ax[dj].toLowerCase());if(dl===di){return true}if(di.slice(0,1)==="."){if(dl===di.slice(1)){return true}dk=dl.length-di.length;if((dk>0)&&(dl.slice(dk)===di)){return true}}}return false}function cp(di,dk){di=di.replace("send_image=0","send_image=1");
|
44 |
var dj=new Image(1,1);dj.onload=function(){E=0;if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:true})}};dj.onerror=function(){if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:false})}};dj.src=aD+(aD.indexOf("?")<0?"?":"&")+di}function aJ(){return"object"===typeof h&&"function"===typeof h.sendBeacon&&"function"===typeof Blob}function a6(dl,dq){var dk=aJ();if(!dk){return false}var dp={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dn=false;var dj=aD;try{var di=new Blob([dl],dp);if(dl.length<=2000){di=new Blob([],dp);dj=dj+(dj.indexOf("?")<0?"?":"&")+dl}dn=h.sendBeacon(dj,di)}catch(dm){return false}if(dn&&typeof dq==="function"){dq({request:dl,trackerUrl:aD,success:true,isSendBeacon:true})}return dn}function c3(dj,dk,di){if(!J(di)||null===di){di=true}if(m&&a6(dj,dk)){return}setTimeout(function(){if(m&&a6(dj,dk)){return}var dn;try{var dm=T.XMLHttpRequest?new T.XMLHttpRequest():T.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dm.open("POST",aD,true);
|
45 |
dm.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dp=m&&a6(dj,dk);if(!dp&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dk==="function")){dk({request:dj,trackerUrl:aD,success:true,xhr:this})}}};dm.setRequestHeader("Content-Type",cw);dm.withCredentials=true;dm.send(dj)}catch(dl){dn=m&&a6(dj,dk);if(!dn&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false})}}}},50)}function cf(dj){var di=new Date();var dk=di.getTime()+dj;if(!r||dk>r){r=dk}}function cn(di){if(cb||!a5||!bA){return}cb=setTimeout(function dj(){cb=null;if(!bc){bc=(!G.hasFocus||G.hasFocus())}if(!bc){cn(a5);return}if(bQ()){return}var dk=new Date(),dl=a5-(dk.getTime()-cX);dl=Math.min(a5,dl);cn(dl)},di||a5)}function bJ(){if(!cb){return}clearTimeout(cb);cb=null}function ba(){bc=true;cQ=new Date().getTime()}function dc(){var di=new Date().getTime();return !cQ||(di-cQ)>a5
|
app/libs/HTML/QuickForm2/Element/Date.php
CHANGED
@@ -128,7 +128,7 @@ class HTML_QuickForm2_Element_Date extends HTML_QuickForm2_Container_Group
|
|
128 |
$separator = '';
|
129 |
|
130 |
for ($i = 0, $length = strlen($this->data['format']); $i < $length; $i++) {
|
131 |
-
$sign = $this->data['format']
|
132 |
if ($backslash) {
|
133 |
$backslash = false;
|
134 |
$separator .= $sign;
|
128 |
$separator = '';
|
129 |
|
130 |
for ($i = 0, $length = strlen($this->data['format']); $i < $length; $i++) {
|
131 |
+
$sign = $this->data['format'][$i];
|
132 |
if ($backslash) {
|
133 |
$backslash = false;
|
134 |
$separator .= $sign;
|
app/libs/Zend/Session.php
CHANGED
@@ -523,6 +523,8 @@ class Zend_Session extends Zend_Session_Abstract
|
|
523 |
self::$_sessionStarted = true;
|
524 |
if (self::$_regenerateIdState === -1) {
|
525 |
self::regenerateId();
|
|
|
|
|
526 |
}
|
527 |
|
528 |
if (isset($_SESSION['data']) && is_string($_SESSION['data'])) {
|
523 |
self::$_sessionStarted = true;
|
524 |
if (self::$_regenerateIdState === -1) {
|
525 |
self::regenerateId();
|
526 |
+
} else {
|
527 |
+
self::rewriteSessionCookieWithSameSiteDirective();
|
528 |
}
|
529 |
|
530 |
if (isset($_SESSION['data']) && is_string($_SESSION['data'])) {
|
app/libs/Zend/Validate/Isbn.php
CHANGED
@@ -168,7 +168,7 @@ class Zend_Validate_Isbn extends Zend_Validate_Abstract
|
|
168 |
$isbn10 = str_replace($this->_separator, '', $value);
|
169 |
$sum = 0;
|
170 |
for ($i = 0; $i < 9; $i++) {
|
171 |
-
$sum += (10 - $i) * $isbn10
|
172 |
}
|
173 |
|
174 |
// checksum
|
@@ -186,9 +186,9 @@ class Zend_Validate_Isbn extends Zend_Validate_Abstract
|
|
186 |
$sum = 0;
|
187 |
for ($i = 0; $i < 12; $i++) {
|
188 |
if ($i % 2 == 0) {
|
189 |
-
$sum += $isbn13
|
190 |
} else {
|
191 |
-
$sum += 3 * $isbn13
|
192 |
}
|
193 |
}
|
194 |
// checksum
|
168 |
$isbn10 = str_replace($this->_separator, '', $value);
|
169 |
$sum = 0;
|
170 |
for ($i = 0; $i < 9; $i++) {
|
171 |
+
$sum += (10 - $i) * $isbn10[$i];
|
172 |
}
|
173 |
|
174 |
// checksum
|
186 |
$sum = 0;
|
187 |
for ($i = 0; $i < 12; $i++) {
|
188 |
if ($i % 2 == 0) {
|
189 |
+
$sum += $isbn13[$i];
|
190 |
} else {
|
191 |
+
$sum += 3 * $isbn13[$i];
|
192 |
}
|
193 |
}
|
194 |
// checksum
|
app/libs/bower_components/jquery-mousewheel/ChangeLog.md
DELETED
@@ -1,147 +0,0 @@
|
|
1 |
-
# Mouse Wheel ChangeLog
|
2 |
-
|
3 |
-
## 3.1.13
|
4 |
-
|
5 |
-
* Update copyright notice and license to remove years
|
6 |
-
* Create the correct compressed version
|
7 |
-
* Remove the obsolete jQuery Plugin Registry file
|
8 |
-
|
9 |
-
## 3.1.12
|
10 |
-
|
11 |
-
* Fix possible 0 value for line height when in delta mode 1
|
12 |
-
|
13 |
-
## 3.1.11
|
14 |
-
|
15 |
-
* Fix version number for package managers...
|
16 |
-
|
17 |
-
## 3.1.10
|
18 |
-
|
19 |
-
* Fix issue with calculating line height when using older versions of jQuery
|
20 |
-
* Add offsetX/Y normalization with setting to turn it off
|
21 |
-
* Cleans up data on teardown
|
22 |
-
|
23 |
-
## 3.1.9
|
24 |
-
|
25 |
-
* Fix bower.json file
|
26 |
-
* Updated how the deltas are adjusted for older mousewheel based events that have deltas that are factors of 120.
|
27 |
-
* Add $.event.special.mousewheel.settings.adjustOldDeltas (defaults to true) to turn off adjusting of old deltas that are factors of 120. You'd turn this off if you want to be as close to native scrolling as possible.
|
28 |
-
|
29 |
-
## 3.1.8
|
30 |
-
|
31 |
-
* Even better handling of older browsers that use a wheelDelta based on 120
|
32 |
-
* And fix version reported by `$.event.special.mousewheel`
|
33 |
-
|
34 |
-
## 3.1.7
|
35 |
-
|
36 |
-
* Better handle the `deltaMode` values 1 (lines) and 2 (pages)
|
37 |
-
* Attempt to better handle older browsers that use a wheelDelta based on 120
|
38 |
-
|
39 |
-
## 3.1.6
|
40 |
-
|
41 |
-
* Deprecating `delta`, `deltaX`, and `deltaY` event handler arguments
|
42 |
-
* Update actual event object with normalized `deltaX `and `deltaY` values (`event.deltaX`, `event.deltaY`)
|
43 |
-
* Add `deltaFactor` to the event object (`event.deltaFactor`)
|
44 |
-
* Handle `> 0` but `< 1` deltas better
|
45 |
-
* Do not fire the event if `deltaX` and `deltaY` are `0`
|
46 |
-
* Better handle different devices that give different `lowestDelta` values
|
47 |
-
* Add `$.event.special.mousewheel.version`
|
48 |
-
* Some clean up
|
49 |
-
|
50 |
-
## 3.1.5
|
51 |
-
|
52 |
-
* Bad release because I did not update the new `$.event.special.mousewheel.version`
|
53 |
-
|
54 |
-
## 3.1.4
|
55 |
-
|
56 |
-
* Always set the `deltaY`
|
57 |
-
* Add back in the `deltaX` and `deltaY` support for older Firefox versions
|
58 |
-
|
59 |
-
## 3.1.3
|
60 |
-
|
61 |
-
* Include `MozMousePixelScroll` in the to fix list to avoid inconsistent behavior in older Firefox
|
62 |
-
|
63 |
-
## 3.1.2
|
64 |
-
|
65 |
-
* Include grunt utilities for development purposes (jshint and uglify)
|
66 |
-
* Include support for browserify
|
67 |
-
* Some basic cleaning up
|
68 |
-
|
69 |
-
## 3.1.1
|
70 |
-
|
71 |
-
* Fix rounding issue with deltas less than zero
|
72 |
-
|
73 |
-
|
74 |
-
## 3.1.0
|
75 |
-
|
76 |
-
* Fix Firefox 17+ issues by using new wheel event
|
77 |
-
* Normalize delta values
|
78 |
-
* Adds horizontal support for IE 9+ by using new wheel event
|
79 |
-
* Support AMD loaders
|
80 |
-
|
81 |
-
|
82 |
-
## 3.0.6
|
83 |
-
|
84 |
-
* Fix issue with delta being 0 in Firefox
|
85 |
-
|
86 |
-
|
87 |
-
## 3.0.5
|
88 |
-
|
89 |
-
* jQuery 1.7 compatibility
|
90 |
-
|
91 |
-
|
92 |
-
## 3.0.4
|
93 |
-
|
94 |
-
* Fix IE issue
|
95 |
-
|
96 |
-
|
97 |
-
## 3.0.3
|
98 |
-
|
99 |
-
* Added `deltaX` and `deltaY` for horizontal scrolling support (Thanks to Seamus Leahy)
|
100 |
-
|
101 |
-
|
102 |
-
## 3.0.2
|
103 |
-
|
104 |
-
* Fixed delta being opposite value in latest Opera
|
105 |
-
* No longer fix `pageX`, `pageY` for older Mozilla browsers
|
106 |
-
* Removed browser detection
|
107 |
-
* Cleaned up the code
|
108 |
-
|
109 |
-
|
110 |
-
## 3.0.1
|
111 |
-
|
112 |
-
* Bad release... creating a new release due to plugins.jquery.com issue :(
|
113 |
-
|
114 |
-
|
115 |
-
## 3.0
|
116 |
-
|
117 |
-
* Uses new special events API in jQuery 1.2.2+
|
118 |
-
* You can now treat `mousewheel` as a normal event and use `.bind`, `.unbind` and `.trigger`
|
119 |
-
* Using jQuery.data API for expandos
|
120 |
-
|
121 |
-
|
122 |
-
## 2.2
|
123 |
-
|
124 |
-
* Fixed `pageX`, `pageY`, `clientX` and `clientY` event properties for Mozilla based browsers
|
125 |
-
|
126 |
-
|
127 |
-
## 2.1.1
|
128 |
-
|
129 |
-
* Updated to work with jQuery 1.1.3
|
130 |
-
* Used one instead of bind to do unload event for clean up
|
131 |
-
|
132 |
-
|
133 |
-
## 2.1
|
134 |
-
|
135 |
-
* Fixed an issue with the unload handler
|
136 |
-
|
137 |
-
|
138 |
-
## 2.0
|
139 |
-
|
140 |
-
* Major reduction in code size and complexity (internals have change a whole lot)
|
141 |
-
|
142 |
-
|
143 |
-
## 1.0
|
144 |
-
|
145 |
-
* Fixed Opera issue
|
146 |
-
* Fixed an issue with children elements that also have a mousewheel handler
|
147 |
-
* Added ability to handle multiple handlers
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/libs/bower_components/visibilityjs/ChangeLog.md
DELETED
@@ -1,78 +0,0 @@
|
|
1 |
-
### 1.2.3 “Vanguard 3, 300 years”
|
2 |
-
* Fix Rails support by @dimko.
|
3 |
-
|
4 |
-
### 1.2.2 “Luna 2, impact”
|
5 |
-
* Fix Sprockets 3 support by Waseem Sadiq.
|
6 |
-
* Add Component support by Mitchel Kelonye.
|
7 |
-
|
8 |
-
### 1.2.1 “Discoverer 6, again”
|
9 |
-
* Fix Bower config by Misha Ponizil.
|
10 |
-
|
11 |
-
### 1.2.0 “Discoverer 5, spy”
|
12 |
-
* Allow to use in CommonJS.
|
13 |
-
* Release npm package.
|
14 |
-
* Reduce library size to 10 %.
|
15 |
-
* Allow to use latest version from master in Ruby Bundler.
|
16 |
-
* Method `hidden()` now always return boolean.
|
17 |
-
* Change repository URL to `github.com/ai/visibilityjs`.
|
18 |
-
|
19 |
-
## 1.1.0 “Explorer 6, photo”
|
20 |
-
* Prevent to run timer often, that it’s interval, when visibility was changed.
|
21 |
-
* Allow to install by Bower package manager.
|
22 |
-
* Change license to MIT.
|
23 |
-
* Reduce library size.
|
24 |
-
|
25 |
-
## 1.0.0 “Discoverer 2, stable”
|
26 |
-
* Remove jQuery.Chrono integration.
|
27 |
-
* Remove outdated Firefox prefix.
|
28 |
-
|
29 |
-
## 0.6.2 “Pioneer 4, American Sun”
|
30 |
-
* Decrease files size (by compressible code and UnglifyJS 2).
|
31 |
-
* Remove unnecessary vendor prefixes from fallback.
|
32 |
-
|
33 |
-
## 0.6.1 “Vanguard 2, weather”
|
34 |
-
* Remove unnecessary vendor prefixes.
|
35 |
-
|
36 |
-
## 0.6 “Luna 1, Mechta”
|
37 |
-
* Methods onVisible and afterPrerendering return listener ID (by mcfedr).
|
38 |
-
* Fix documentation (by Erwänn Mest).
|
39 |
-
|
40 |
-
## 0.5 “SCORE, communication”
|
41 |
-
* Split library to core and timers modules.
|
42 |
-
* Allow to unbind change listener.
|
43 |
-
* Use common logic in change(), afterPrerendering() and onVisible().
|
44 |
-
|
45 |
-
## 0.4.5 “Pioneer 3, closer”
|
46 |
-
* Fix gem assets directory.
|
47 |
-
* Update development dependencies.
|
48 |
-
|
49 |
-
## 0.4.4 “Pioneer 1, deeper into space”
|
50 |
-
* Remove non-ASCII symbols from gemspec.
|
51 |
-
* Print testing URL in test task.
|
52 |
-
|
53 |
-
## 0.4.3 “Explorer 4, short”
|
54 |
-
* Fix gemspec issue with Bundler.
|
55 |
-
|
56 |
-
## 0.4.2 “Sputnik 3, real”
|
57 |
-
* Reorder code to show first public and common methods.
|
58 |
-
* Use node.js Cake instead of Ruby’s Rake to build tasks.
|
59 |
-
* Move to Mocha, Chai and Sinon.JS for tests.
|
60 |
-
* Move autogenerated minified to GitHub downloads.
|
61 |
-
|
62 |
-
## 0.4.1 “Explorer 3, repeat”
|
63 |
-
* Fix documentation and gemspec.
|
64 |
-
|
65 |
-
## 0.4 “Vanguard 1, alternative”
|
66 |
-
* Add fallback API support by focus/blur hack to all browsers.
|
67 |
-
|
68 |
-
## 0.3 “Explorer 1, answer”
|
69 |
-
* Rename gem to visibilityjs.
|
70 |
-
* Fix gem integration with Asset Pipeline paths.
|
71 |
-
|
72 |
-
## 0.2 “Sputnik 2, Laika”
|
73 |
-
* Rename support() to isSupported() and notPrerender() to afterPrerendering().
|
74 |
-
* Fix IE 6 and 7 support.
|
75 |
-
* Documentation fixes by Peter Zotov.
|
76 |
-
|
77 |
-
## 0.1 “Sputnik 1, the first”
|
78 |
-
* Initial release.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/matomo.js
CHANGED
@@ -39,7 +39,7 @@ if(aq&&au.offsetTop){aq=(au.offsetTop+at.height)>0}var ap=ar.clientWidth;if(T.in
|
|
39 |
}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||T.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.search("^[a-zA-Z]{2,11}:")){return ap}if(ap.search(/^\//)!==-1){return this.getLocation().origin+ap}var ao="(.*/)";var aq=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(ao))[0];return aq+ap},isUrlToCurrentDomain:function(ap){var aq=this.toAbsoluteUrl(ap);if(!aq){return false
|
40 |
}var ao=this.getLocation().origin;if(ao===aq){return true}if(0===String(aq).indexOf(ao)){if(":"===String(aq).substr(ao.length,1)){return false}return true}return false},setHrefAttribute:function(ap,ao){if(!ap||!ao){return}ae.setAnyAttribute(ap,"href",ao)},shouldIgnoreInteraction:function(aq){var ap=ae.hasNodeAttribute(aq,this.CONTENT_IGNOREINTERACTION_ATTR);var ao=ae.hasNodeCssClass(aq,this.CONTENT_IGNOREINTERACTION_CLASS);return ap||ao}};function O(ap,at){if(at){return at}ap=v.toAbsoluteUrl(ap);if(z(ap,"?")){var ar=ap.indexOf("?");ap=ap.slice(0,ar)}if(R(ap,"matomo.php")){ap=g(ap,"matomo.php".length)}else{if(R(ap,"piwik.php")){ap=g(ap,"piwik.php".length)}else{if(R(ap,".php")){var ao=ap.lastIndexOf("/");var aq=1;ap=ap.slice(0,ao+aq)}}}if(R(ap,"/js/")){ap=g(ap,"js/".length)}return ap}function N(av){var ax="Piwik_Overlay";var ap=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=.*)?$");var aq=ap.exec(G.referrer);if(aq){var at=aq[1];
|
41 |
if(at!==String(av)){return false}var au=aq[2],ao=aq[3],ar=aq[4];if(!ar){ar=""}else{if(ar.indexOf("&segment=")===0){ar=ar.substr("&segment=".length)}}T.name=ax+"###"+au+"###"+ao+"###"+ar}var aw=T.name.split("###");return aw.length===4&&aw[0]===ax}function Z(ap,aw,ar){var av=T.name.split("###"),au=av[1],ao=av[2],at=av[3],aq=O(ap,aw);o(aq+"plugins/Overlay/client/client.js?v=1",function(){Piwik_Overlay_Client.initialize(aq,ar,au,ao,at)})}function u(){var aq;try{aq=T.frameElement}catch(ap){return true}if(J(aq)){return(aq&&String(aq.nodeName).toLowerCase()==="iframe")?true:false}try{return T.self!==T.top}catch(ao){return true}}function Q(cd,b8){var bH=this,bd="mtm_consent",cK="mtm_consent_removed",b3=aa(G.domain,T.location.href,K()),cT=L(b3[0]),bM=p(b3[1]),bm=p(b3[2]),cR=false,ch="GET",c9=ch,aH="application/x-www-form-urlencoded; charset=UTF-8",cw=aH,aD=cd||"",bG="",cY="",b5=b8||"",bx="",bN="",a4,bi="",c5=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],ax=[cT],by=[],bK=[],a8=[],bI=500,cV=false,cG,a5,bQ,c6=1800,bO,ao,cq=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],bF=["pk_kwd","piwik_kwd","utm_term"],bj="_pk_",av="pk_vid",aZ=180,cW,bo,bR=false,bk=false,cO,be,bu,cH=33955200000,co=1800000,c4=15768000000,a2=true,cm=0,bP=false,aQ=false,ca,bV={},cl={},bl={},bs=200,cZ={},c7={},b9=[],ce=false,cA=false,ap=false,c8=false,cL=false,aN=false,bc=u(),cQ=null,cX=null,cb,aR,bz,b6=am,bn,aK,cr=0,bt=["id","ses","cvar","ref"],cz=false,bA=null,cI=[],aw=U++;
|
42 |
-
try{bi=G.title}catch(cx){bi=""}function dd(dp,dm,dl,dn,dk,dj){if(bk){return}var di;if(dl){di=new Date();di.setTime(di.getTime()+dl)}G.cookie=dp+"="+t(dm)+(dl?";expires="+di.toGMTString():"")+";path="+(dn||"/")+(dk?";domain="+dk:"")+(dj?";secure":"")}function aC(dk){if(bk){return 0}var di=new RegExp("(^|;)[ ]*"+dk+"=([^;]*)"),dj=di.exec(G.cookie);return dj?S(dj[2]):0}bA=!aC(cK);function b1(di){var dj;di=k(di,av);if(bO){dj=new RegExp("#.*");return di.replace(dj,"")}return di}function bU(dk,di){var dl=s(di),dj;if(dl){return di}if(di.slice(0,1)==="/"){return s(dk)+"://"+d(dk)+di}dk=b1(dk);dj=dk.indexOf("?");if(dj>=0){dk=dk.slice(0,dj)}dj=dk.lastIndexOf("/");if(dj!==dk.length-1){dk=dk.slice(0,dj+1)}return dk+di}function cE(dk,di){var dj;dk=String(dk).toLowerCase();di=String(di).toLowerCase();if(dk===di){return true}if(di.slice(0,1)==="."){if(dk===di.slice(1)){return true}dj=dk.length-di.length;if((dj>0)&&(dk.slice(dj)===di)){return true}}return false}function ck(di){var dj=document.createElement("a");
|
43 |
if(di.indexOf("//")!==0&&di.indexOf("http")!==0){if(di.indexOf("*")===0){di=di.substr(1)}if(di.indexOf(".")===0){di=di.substr(1)}di="http://"+di}dj.href=v.toAbsoluteUrl(di);if(dj.pathname){return dj.pathname}return""}function a3(dj,di){if(!aj(di,"/")){di="/"+di}if(!aj(dj,"/")){dj="/"+dj}var dk=(di==="/"||di==="/*");if(dk){return true}if(dj===di){return true}di=String(di).toLowerCase();dj=String(dj).toLowerCase();if(R(di,"*")){di=di.slice(0,-1);dk=(!di||di==="/");if(dk){return true}if(dj===di){return true}return dj.indexOf(di)===0}if(!R(dj,"/")){dj+="/"}if(!R(di,"/")){di+="/"}return dj.indexOf(di)===0}function ar(dm,dp){var dj,di,dk,dl,dn;for(dj=0;dj<ax.length;dj++){dl=L(ax[dj]);dn=ck(ax[dj]);if(cE(dm,dl)&&a3(dp,dn)){return true}}return false}function aV(dl){var dj,di,dk;for(dj=0;dj<ax.length;dj++){di=L(ax[dj].toLowerCase());if(dl===di){return true}if(di.slice(0,1)==="."){if(dl===di.slice(1)){return true}dk=dl.length-di.length;if((dk>0)&&(dl.slice(dk)===di)){return true}}}return false}function cp(di,dk){di=di.replace("send_image=0","send_image=1");
|
44 |
var dj=new Image(1,1);dj.onload=function(){E=0;if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:true})}};dj.onerror=function(){if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:false})}};dj.src=aD+(aD.indexOf("?")<0?"?":"&")+di}function aJ(){return"object"===typeof h&&"function"===typeof h.sendBeacon&&"function"===typeof Blob}function a6(dl,dq){var dk=aJ();if(!dk){return false}var dp={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dn=false;var dj=aD;try{var di=new Blob([dl],dp);if(dl.length<=2000){di=new Blob([],dp);dj=dj+(dj.indexOf("?")<0?"?":"&")+dl}dn=h.sendBeacon(dj,di)}catch(dm){return false}if(dn&&typeof dq==="function"){dq({request:dl,trackerUrl:aD,success:true,isSendBeacon:true})}return dn}function c3(dj,dk,di){if(!J(di)||null===di){di=true}if(m&&a6(dj,dk)){return}setTimeout(function(){if(m&&a6(dj,dk)){return}var dn;try{var dm=T.XMLHttpRequest?new T.XMLHttpRequest():T.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dm.open("POST",aD,true);
|
45 |
dm.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dp=m&&a6(dj,dk);if(!dp&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dk==="function")){dk({request:dj,trackerUrl:aD,success:true,xhr:this})}}};dm.setRequestHeader("Content-Type",cw);dm.withCredentials=true;dm.send(dj)}catch(dl){dn=m&&a6(dj,dk);if(!dn&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false})}}}},50)}function cf(dj){var di=new Date();var dk=di.getTime()+dj;if(!r||dk>r){r=dk}}function cn(di){if(cb||!a5||!bA){return}cb=setTimeout(function dj(){cb=null;if(!bc){bc=(!G.hasFocus||G.hasFocus())}if(!bc){cn(a5);return}if(bQ()){return}var dk=new Date(),dl=a5-(dk.getTime()-cX);dl=Math.min(a5,dl);cn(dl)},di||a5)}function bJ(){if(!cb){return}clearTimeout(cb);cb=null}function ba(){bc=true;cQ=new Date().getTime()}function dc(){var di=new Date().getTime();return !cQ||(di-cQ)>a5
|
39 |
}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||T.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.search("^[a-zA-Z]{2,11}:")){return ap}if(ap.search(/^\//)!==-1){return this.getLocation().origin+ap}var ao="(.*/)";var aq=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(ao))[0];return aq+ap},isUrlToCurrentDomain:function(ap){var aq=this.toAbsoluteUrl(ap);if(!aq){return false
|
40 |
}var ao=this.getLocation().origin;if(ao===aq){return true}if(0===String(aq).indexOf(ao)){if(":"===String(aq).substr(ao.length,1)){return false}return true}return false},setHrefAttribute:function(ap,ao){if(!ap||!ao){return}ae.setAnyAttribute(ap,"href",ao)},shouldIgnoreInteraction:function(aq){var ap=ae.hasNodeAttribute(aq,this.CONTENT_IGNOREINTERACTION_ATTR);var ao=ae.hasNodeCssClass(aq,this.CONTENT_IGNOREINTERACTION_CLASS);return ap||ao}};function O(ap,at){if(at){return at}ap=v.toAbsoluteUrl(ap);if(z(ap,"?")){var ar=ap.indexOf("?");ap=ap.slice(0,ar)}if(R(ap,"matomo.php")){ap=g(ap,"matomo.php".length)}else{if(R(ap,"piwik.php")){ap=g(ap,"piwik.php".length)}else{if(R(ap,".php")){var ao=ap.lastIndexOf("/");var aq=1;ap=ap.slice(0,ao+aq)}}}if(R(ap,"/js/")){ap=g(ap,"js/".length)}return ap}function N(av){var ax="Piwik_Overlay";var ap=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=.*)?$");var aq=ap.exec(G.referrer);if(aq){var at=aq[1];
|
41 |
if(at!==String(av)){return false}var au=aq[2],ao=aq[3],ar=aq[4];if(!ar){ar=""}else{if(ar.indexOf("&segment=")===0){ar=ar.substr("&segment=".length)}}T.name=ax+"###"+au+"###"+ao+"###"+ar}var aw=T.name.split("###");return aw.length===4&&aw[0]===ax}function Z(ap,aw,ar){var av=T.name.split("###"),au=av[1],ao=av[2],at=av[3],aq=O(ap,aw);o(aq+"plugins/Overlay/client/client.js?v=1",function(){Piwik_Overlay_Client.initialize(aq,ar,au,ao,at)})}function u(){var aq;try{aq=T.frameElement}catch(ap){return true}if(J(aq)){return(aq&&String(aq.nodeName).toLowerCase()==="iframe")?true:false}try{return T.self!==T.top}catch(ao){return true}}function Q(cd,b8){var bH=this,bd="mtm_consent",cK="mtm_consent_removed",b3=aa(G.domain,T.location.href,K()),cT=L(b3[0]),bM=p(b3[1]),bm=p(b3[2]),cR=false,ch="GET",c9=ch,aH="application/x-www-form-urlencoded; charset=UTF-8",cw=aH,aD=cd||"",bG="",cY="",b5=b8||"",bx="",bN="",a4,bi="",c5=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],ax=[cT],by=[],bK=[],a8=[],bI=500,cV=false,cG,a5,bQ,c6=1800,bO,ao,cq=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],bF=["pk_kwd","piwik_kwd","utm_term"],bj="_pk_",av="pk_vid",aZ=180,cW,bo,bR=false,bk=false,cO,be,bu,cH=33955200000,co=1800000,c4=15768000000,a2=true,cm=0,bP=false,aQ=false,ca,bV={},cl={},bl={},bs=200,cZ={},c7={},b9=[],ce=false,cA=false,ap=false,c8=false,cL=false,aN=false,bc=u(),cQ=null,cX=null,cb,aR,bz,b6=am,bn,aK,cr=0,bt=["id","ses","cvar","ref"],cz=false,bA=null,cI=[],aw=U++;
|
42 |
+
try{bi=G.title}catch(cx){bi=""}function dd(dp,dm,dl,dn,dk,dj){if(bk){return}var di;if(dl){di=new Date();di.setTime(di.getTime()+dl)}G.cookie=dp+"="+t(dm)+(dl?";expires="+di.toGMTString():"")+";path="+(dn||"/")+(dk?";domain="+dk:"")+(dj?";secure":"")+";SameSite=Lax"}function aC(dk){if(bk){return 0}var di=new RegExp("(^|;)[ ]*"+dk+"=([^;]*)"),dj=di.exec(G.cookie);return dj?S(dj[2]):0}bA=!aC(cK);function b1(di){var dj;di=k(di,av);if(bO){dj=new RegExp("#.*");return di.replace(dj,"")}return di}function bU(dk,di){var dl=s(di),dj;if(dl){return di}if(di.slice(0,1)==="/"){return s(dk)+"://"+d(dk)+di}dk=b1(dk);dj=dk.indexOf("?");if(dj>=0){dk=dk.slice(0,dj)}dj=dk.lastIndexOf("/");if(dj!==dk.length-1){dk=dk.slice(0,dj+1)}return dk+di}function cE(dk,di){var dj;dk=String(dk).toLowerCase();di=String(di).toLowerCase();if(dk===di){return true}if(di.slice(0,1)==="."){if(dk===di.slice(1)){return true}dj=dk.length-di.length;if((dj>0)&&(dk.slice(dj)===di)){return true}}return false}function ck(di){var dj=document.createElement("a");
|
43 |
if(di.indexOf("//")!==0&&di.indexOf("http")!==0){if(di.indexOf("*")===0){di=di.substr(1)}if(di.indexOf(".")===0){di=di.substr(1)}di="http://"+di}dj.href=v.toAbsoluteUrl(di);if(dj.pathname){return dj.pathname}return""}function a3(dj,di){if(!aj(di,"/")){di="/"+di}if(!aj(dj,"/")){dj="/"+dj}var dk=(di==="/"||di==="/*");if(dk){return true}if(dj===di){return true}di=String(di).toLowerCase();dj=String(dj).toLowerCase();if(R(di,"*")){di=di.slice(0,-1);dk=(!di||di==="/");if(dk){return true}if(dj===di){return true}return dj.indexOf(di)===0}if(!R(dj,"/")){dj+="/"}if(!R(di,"/")){di+="/"}return dj.indexOf(di)===0}function ar(dm,dp){var dj,di,dk,dl,dn;for(dj=0;dj<ax.length;dj++){dl=L(ax[dj]);dn=ck(ax[dj]);if(cE(dm,dl)&&a3(dp,dn)){return true}}return false}function aV(dl){var dj,di,dk;for(dj=0;dj<ax.length;dj++){di=L(ax[dj].toLowerCase());if(dl===di){return true}if(di.slice(0,1)==="."){if(dl===di.slice(1)){return true}dk=dl.length-di.length;if((dk>0)&&(dl.slice(dk)===di)){return true}}}return false}function cp(di,dk){di=di.replace("send_image=0","send_image=1");
|
44 |
var dj=new Image(1,1);dj.onload=function(){E=0;if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:true})}};dj.onerror=function(){if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:false})}};dj.src=aD+(aD.indexOf("?")<0?"?":"&")+di}function aJ(){return"object"===typeof h&&"function"===typeof h.sendBeacon&&"function"===typeof Blob}function a6(dl,dq){var dk=aJ();if(!dk){return false}var dp={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dn=false;var dj=aD;try{var di=new Blob([dl],dp);if(dl.length<=2000){di=new Blob([],dp);dj=dj+(dj.indexOf("?")<0?"?":"&")+dl}dn=h.sendBeacon(dj,di)}catch(dm){return false}if(dn&&typeof dq==="function"){dq({request:dl,trackerUrl:aD,success:true,isSendBeacon:true})}return dn}function c3(dj,dk,di){if(!J(di)||null===di){di=true}if(m&&a6(dj,dk)){return}setTimeout(function(){if(m&&a6(dj,dk)){return}var dn;try{var dm=T.XMLHttpRequest?new T.XMLHttpRequest():T.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dm.open("POST",aD,true);
|
45 |
dm.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dp=m&&a6(dj,dk);if(!dp&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dk==="function")){dk({request:dj,trackerUrl:aD,success:true,xhr:this})}}};dm.setRequestHeader("Content-Type",cw);dm.withCredentials=true;dm.send(dj)}catch(dl){dn=m&&a6(dj,dk);if(!dn&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false})}}}},50)}function cf(dj){var di=new Date();var dk=di.getTime()+dj;if(!r||dk>r){r=dk}}function cn(di){if(cb||!a5||!bA){return}cb=setTimeout(function dj(){cb=null;if(!bc){bc=(!G.hasFocus||G.hasFocus())}if(!bc){cn(a5);return}if(bQ()){return}var dk=new Date(),dl=a5-(dk.getTime()-cX);dl=Math.min(a5,dl);cn(dl)},di||a5)}function bJ(){if(!cb){return}clearTimeout(cb);cb=null}function ba(){bc=true;cQ=new Date().getTime()}function dc(){var di=new Date().getTime();return !cQ||(di-cQ)>a5
|
app/piwik.js
CHANGED
@@ -39,7 +39,7 @@ if(aq&&au.offsetTop){aq=(au.offsetTop+at.height)>0}var ap=ar.clientWidth;if(T.in
|
|
39 |
}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||T.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.search("^[a-zA-Z]{2,11}:")){return ap}if(ap.search(/^\//)!==-1){return this.getLocation().origin+ap}var ao="(.*/)";var aq=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(ao))[0];return aq+ap},isUrlToCurrentDomain:function(ap){var aq=this.toAbsoluteUrl(ap);if(!aq){return false
|
40 |
}var ao=this.getLocation().origin;if(ao===aq){return true}if(0===String(aq).indexOf(ao)){if(":"===String(aq).substr(ao.length,1)){return false}return true}return false},setHrefAttribute:function(ap,ao){if(!ap||!ao){return}ae.setAnyAttribute(ap,"href",ao)},shouldIgnoreInteraction:function(aq){var ap=ae.hasNodeAttribute(aq,this.CONTENT_IGNOREINTERACTION_ATTR);var ao=ae.hasNodeCssClass(aq,this.CONTENT_IGNOREINTERACTION_CLASS);return ap||ao}};function O(ap,at){if(at){return at}ap=v.toAbsoluteUrl(ap);if(z(ap,"?")){var ar=ap.indexOf("?");ap=ap.slice(0,ar)}if(R(ap,"matomo.php")){ap=g(ap,"matomo.php".length)}else{if(R(ap,"piwik.php")){ap=g(ap,"piwik.php".length)}else{if(R(ap,".php")){var ao=ap.lastIndexOf("/");var aq=1;ap=ap.slice(0,ao+aq)}}}if(R(ap,"/js/")){ap=g(ap,"js/".length)}return ap}function N(av){var ax="Piwik_Overlay";var ap=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=.*)?$");var aq=ap.exec(G.referrer);if(aq){var at=aq[1];
|
41 |
if(at!==String(av)){return false}var au=aq[2],ao=aq[3],ar=aq[4];if(!ar){ar=""}else{if(ar.indexOf("&segment=")===0){ar=ar.substr("&segment=".length)}}T.name=ax+"###"+au+"###"+ao+"###"+ar}var aw=T.name.split("###");return aw.length===4&&aw[0]===ax}function Z(ap,aw,ar){var av=T.name.split("###"),au=av[1],ao=av[2],at=av[3],aq=O(ap,aw);o(aq+"plugins/Overlay/client/client.js?v=1",function(){Piwik_Overlay_Client.initialize(aq,ar,au,ao,at)})}function u(){var aq;try{aq=T.frameElement}catch(ap){return true}if(J(aq)){return(aq&&String(aq.nodeName).toLowerCase()==="iframe")?true:false}try{return T.self!==T.top}catch(ao){return true}}function Q(cd,b8){var bH=this,bd="mtm_consent",cK="mtm_consent_removed",b3=aa(G.domain,T.location.href,K()),cT=L(b3[0]),bM=p(b3[1]),bm=p(b3[2]),cR=false,ch="GET",c9=ch,aH="application/x-www-form-urlencoded; charset=UTF-8",cw=aH,aD=cd||"",bG="",cY="",b5=b8||"",bx="",bN="",a4,bi="",c5=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],ax=[cT],by=[],bK=[],a8=[],bI=500,cV=false,cG,a5,bQ,c6=1800,bO,ao,cq=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],bF=["pk_kwd","piwik_kwd","utm_term"],bj="_pk_",av="pk_vid",aZ=180,cW,bo,bR=false,bk=false,cO,be,bu,cH=33955200000,co=1800000,c4=15768000000,a2=true,cm=0,bP=false,aQ=false,ca,bV={},cl={},bl={},bs=200,cZ={},c7={},b9=[],ce=false,cA=false,ap=false,c8=false,cL=false,aN=false,bc=u(),cQ=null,cX=null,cb,aR,bz,b6=am,bn,aK,cr=0,bt=["id","ses","cvar","ref"],cz=false,bA=null,cI=[],aw=U++;
|
42 |
-
try{bi=G.title}catch(cx){bi=""}function dd(dp,dm,dl,dn,dk,dj){if(bk){return}var di;if(dl){di=new Date();di.setTime(di.getTime()+dl)}G.cookie=dp+"="+t(dm)+(dl?";expires="+di.toGMTString():"")+";path="+(dn||"/")+(dk?";domain="+dk:"")+(dj?";secure":"")}function aC(dk){if(bk){return 0}var di=new RegExp("(^|;)[ ]*"+dk+"=([^;]*)"),dj=di.exec(G.cookie);return dj?S(dj[2]):0}bA=!aC(cK);function b1(di){var dj;di=k(di,av);if(bO){dj=new RegExp("#.*");return di.replace(dj,"")}return di}function bU(dk,di){var dl=s(di),dj;if(dl){return di}if(di.slice(0,1)==="/"){return s(dk)+"://"+d(dk)+di}dk=b1(dk);dj=dk.indexOf("?");if(dj>=0){dk=dk.slice(0,dj)}dj=dk.lastIndexOf("/");if(dj!==dk.length-1){dk=dk.slice(0,dj+1)}return dk+di}function cE(dk,di){var dj;dk=String(dk).toLowerCase();di=String(di).toLowerCase();if(dk===di){return true}if(di.slice(0,1)==="."){if(dk===di.slice(1)){return true}dj=dk.length-di.length;if((dj>0)&&(dk.slice(dj)===di)){return true}}return false}function ck(di){var dj=document.createElement("a");
|
43 |
if(di.indexOf("//")!==0&&di.indexOf("http")!==0){if(di.indexOf("*")===0){di=di.substr(1)}if(di.indexOf(".")===0){di=di.substr(1)}di="http://"+di}dj.href=v.toAbsoluteUrl(di);if(dj.pathname){return dj.pathname}return""}function a3(dj,di){if(!aj(di,"/")){di="/"+di}if(!aj(dj,"/")){dj="/"+dj}var dk=(di==="/"||di==="/*");if(dk){return true}if(dj===di){return true}di=String(di).toLowerCase();dj=String(dj).toLowerCase();if(R(di,"*")){di=di.slice(0,-1);dk=(!di||di==="/");if(dk){return true}if(dj===di){return true}return dj.indexOf(di)===0}if(!R(dj,"/")){dj+="/"}if(!R(di,"/")){di+="/"}return dj.indexOf(di)===0}function ar(dm,dp){var dj,di,dk,dl,dn;for(dj=0;dj<ax.length;dj++){dl=L(ax[dj]);dn=ck(ax[dj]);if(cE(dm,dl)&&a3(dp,dn)){return true}}return false}function aV(dl){var dj,di,dk;for(dj=0;dj<ax.length;dj++){di=L(ax[dj].toLowerCase());if(dl===di){return true}if(di.slice(0,1)==="."){if(dl===di.slice(1)){return true}dk=dl.length-di.length;if((dk>0)&&(dl.slice(dk)===di)){return true}}}return false}function cp(di,dk){di=di.replace("send_image=0","send_image=1");
|
44 |
var dj=new Image(1,1);dj.onload=function(){E=0;if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:true})}};dj.onerror=function(){if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:false})}};dj.src=aD+(aD.indexOf("?")<0?"?":"&")+di}function aJ(){return"object"===typeof h&&"function"===typeof h.sendBeacon&&"function"===typeof Blob}function a6(dl,dq){var dk=aJ();if(!dk){return false}var dp={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dn=false;var dj=aD;try{var di=new Blob([dl],dp);if(dl.length<=2000){di=new Blob([],dp);dj=dj+(dj.indexOf("?")<0?"?":"&")+dl}dn=h.sendBeacon(dj,di)}catch(dm){return false}if(dn&&typeof dq==="function"){dq({request:dl,trackerUrl:aD,success:true,isSendBeacon:true})}return dn}function c3(dj,dk,di){if(!J(di)||null===di){di=true}if(m&&a6(dj,dk)){return}setTimeout(function(){if(m&&a6(dj,dk)){return}var dn;try{var dm=T.XMLHttpRequest?new T.XMLHttpRequest():T.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dm.open("POST",aD,true);
|
45 |
dm.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dp=m&&a6(dj,dk);if(!dp&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dk==="function")){dk({request:dj,trackerUrl:aD,success:true,xhr:this})}}};dm.setRequestHeader("Content-Type",cw);dm.withCredentials=true;dm.send(dj)}catch(dl){dn=m&&a6(dj,dk);if(!dn&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false})}}}},50)}function cf(dj){var di=new Date();var dk=di.getTime()+dj;if(!r||dk>r){r=dk}}function cn(di){if(cb||!a5||!bA){return}cb=setTimeout(function dj(){cb=null;if(!bc){bc=(!G.hasFocus||G.hasFocus())}if(!bc){cn(a5);return}if(bQ()){return}var dk=new Date(),dl=a5-(dk.getTime()-cX);dl=Math.min(a5,dl);cn(dl)},di||a5)}function bJ(){if(!cb){return}clearTimeout(cb);cb=null}function ba(){bc=true;cQ=new Date().getTime()}function dc(){var di=new Date().getTime();return !cQ||(di-cQ)>a5
|
39 |
}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||T.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.search("^[a-zA-Z]{2,11}:")){return ap}if(ap.search(/^\//)!==-1){return this.getLocation().origin+ap}var ao="(.*/)";var aq=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(ao))[0];return aq+ap},isUrlToCurrentDomain:function(ap){var aq=this.toAbsoluteUrl(ap);if(!aq){return false
|
40 |
}var ao=this.getLocation().origin;if(ao===aq){return true}if(0===String(aq).indexOf(ao)){if(":"===String(aq).substr(ao.length,1)){return false}return true}return false},setHrefAttribute:function(ap,ao){if(!ap||!ao){return}ae.setAnyAttribute(ap,"href",ao)},shouldIgnoreInteraction:function(aq){var ap=ae.hasNodeAttribute(aq,this.CONTENT_IGNOREINTERACTION_ATTR);var ao=ae.hasNodeCssClass(aq,this.CONTENT_IGNOREINTERACTION_CLASS);return ap||ao}};function O(ap,at){if(at){return at}ap=v.toAbsoluteUrl(ap);if(z(ap,"?")){var ar=ap.indexOf("?");ap=ap.slice(0,ar)}if(R(ap,"matomo.php")){ap=g(ap,"matomo.php".length)}else{if(R(ap,"piwik.php")){ap=g(ap,"piwik.php".length)}else{if(R(ap,".php")){var ao=ap.lastIndexOf("/");var aq=1;ap=ap.slice(0,ao+aq)}}}if(R(ap,"/js/")){ap=g(ap,"js/".length)}return ap}function N(av){var ax="Piwik_Overlay";var ap=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=.*)?$");var aq=ap.exec(G.referrer);if(aq){var at=aq[1];
|
41 |
if(at!==String(av)){return false}var au=aq[2],ao=aq[3],ar=aq[4];if(!ar){ar=""}else{if(ar.indexOf("&segment=")===0){ar=ar.substr("&segment=".length)}}T.name=ax+"###"+au+"###"+ao+"###"+ar}var aw=T.name.split("###");return aw.length===4&&aw[0]===ax}function Z(ap,aw,ar){var av=T.name.split("###"),au=av[1],ao=av[2],at=av[3],aq=O(ap,aw);o(aq+"plugins/Overlay/client/client.js?v=1",function(){Piwik_Overlay_Client.initialize(aq,ar,au,ao,at)})}function u(){var aq;try{aq=T.frameElement}catch(ap){return true}if(J(aq)){return(aq&&String(aq.nodeName).toLowerCase()==="iframe")?true:false}try{return T.self!==T.top}catch(ao){return true}}function Q(cd,b8){var bH=this,bd="mtm_consent",cK="mtm_consent_removed",b3=aa(G.domain,T.location.href,K()),cT=L(b3[0]),bM=p(b3[1]),bm=p(b3[2]),cR=false,ch="GET",c9=ch,aH="application/x-www-form-urlencoded; charset=UTF-8",cw=aH,aD=cd||"",bG="",cY="",b5=b8||"",bx="",bN="",a4,bi="",c5=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],ax=[cT],by=[],bK=[],a8=[],bI=500,cV=false,cG,a5,bQ,c6=1800,bO,ao,cq=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],bF=["pk_kwd","piwik_kwd","utm_term"],bj="_pk_",av="pk_vid",aZ=180,cW,bo,bR=false,bk=false,cO,be,bu,cH=33955200000,co=1800000,c4=15768000000,a2=true,cm=0,bP=false,aQ=false,ca,bV={},cl={},bl={},bs=200,cZ={},c7={},b9=[],ce=false,cA=false,ap=false,c8=false,cL=false,aN=false,bc=u(),cQ=null,cX=null,cb,aR,bz,b6=am,bn,aK,cr=0,bt=["id","ses","cvar","ref"],cz=false,bA=null,cI=[],aw=U++;
|
42 |
+
try{bi=G.title}catch(cx){bi=""}function dd(dp,dm,dl,dn,dk,dj){if(bk){return}var di;if(dl){di=new Date();di.setTime(di.getTime()+dl)}G.cookie=dp+"="+t(dm)+(dl?";expires="+di.toGMTString():"")+";path="+(dn||"/")+(dk?";domain="+dk:"")+(dj?";secure":"")+";SameSite=Lax"}function aC(dk){if(bk){return 0}var di=new RegExp("(^|;)[ ]*"+dk+"=([^;]*)"),dj=di.exec(G.cookie);return dj?S(dj[2]):0}bA=!aC(cK);function b1(di){var dj;di=k(di,av);if(bO){dj=new RegExp("#.*");return di.replace(dj,"")}return di}function bU(dk,di){var dl=s(di),dj;if(dl){return di}if(di.slice(0,1)==="/"){return s(dk)+"://"+d(dk)+di}dk=b1(dk);dj=dk.indexOf("?");if(dj>=0){dk=dk.slice(0,dj)}dj=dk.lastIndexOf("/");if(dj!==dk.length-1){dk=dk.slice(0,dj+1)}return dk+di}function cE(dk,di){var dj;dk=String(dk).toLowerCase();di=String(di).toLowerCase();if(dk===di){return true}if(di.slice(0,1)==="."){if(dk===di.slice(1)){return true}dj=dk.length-di.length;if((dj>0)&&(dk.slice(dj)===di)){return true}}return false}function ck(di){var dj=document.createElement("a");
|
43 |
if(di.indexOf("//")!==0&&di.indexOf("http")!==0){if(di.indexOf("*")===0){di=di.substr(1)}if(di.indexOf(".")===0){di=di.substr(1)}di="http://"+di}dj.href=v.toAbsoluteUrl(di);if(dj.pathname){return dj.pathname}return""}function a3(dj,di){if(!aj(di,"/")){di="/"+di}if(!aj(dj,"/")){dj="/"+dj}var dk=(di==="/"||di==="/*");if(dk){return true}if(dj===di){return true}di=String(di).toLowerCase();dj=String(dj).toLowerCase();if(R(di,"*")){di=di.slice(0,-1);dk=(!di||di==="/");if(dk){return true}if(dj===di){return true}return dj.indexOf(di)===0}if(!R(dj,"/")){dj+="/"}if(!R(di,"/")){di+="/"}return dj.indexOf(di)===0}function ar(dm,dp){var dj,di,dk,dl,dn;for(dj=0;dj<ax.length;dj++){dl=L(ax[dj]);dn=ck(ax[dj]);if(cE(dm,dl)&&a3(dp,dn)){return true}}return false}function aV(dl){var dj,di,dk;for(dj=0;dj<ax.length;dj++){di=L(ax[dj].toLowerCase());if(dl===di){return true}if(di.slice(0,1)==="."){if(dl===di.slice(1)){return true}dk=dl.length-di.length;if((dk>0)&&(dl.slice(dk)===di)){return true}}}return false}function cp(di,dk){di=di.replace("send_image=0","send_image=1");
|
44 |
var dj=new Image(1,1);dj.onload=function(){E=0;if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:true})}};dj.onerror=function(){if(typeof dk==="function"){dk({request:di,trackerUrl:aD,success:false})}};dj.src=aD+(aD.indexOf("?")<0?"?":"&")+di}function aJ(){return"object"===typeof h&&"function"===typeof h.sendBeacon&&"function"===typeof Blob}function a6(dl,dq){var dk=aJ();if(!dk){return false}var dp={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dn=false;var dj=aD;try{var di=new Blob([dl],dp);if(dl.length<=2000){di=new Blob([],dp);dj=dj+(dj.indexOf("?")<0?"?":"&")+dl}dn=h.sendBeacon(dj,di)}catch(dm){return false}if(dn&&typeof dq==="function"){dq({request:dl,trackerUrl:aD,success:true,isSendBeacon:true})}return dn}function c3(dj,dk,di){if(!J(di)||null===di){di=true}if(m&&a6(dj,dk)){return}setTimeout(function(){if(m&&a6(dj,dk)){return}var dn;try{var dm=T.XMLHttpRequest?new T.XMLHttpRequest():T.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dm.open("POST",aD,true);
|
45 |
dm.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dp=m&&a6(dj,dk);if(!dp&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dk==="function")){dk({request:dj,trackerUrl:aD,success:true,xhr:this})}}};dm.setRequestHeader("Content-Type",cw);dm.withCredentials=true;dm.send(dj)}catch(dl){dn=m&&a6(dj,dk);if(!dn&&di){cp(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aD,success:false})}}}},50)}function cf(dj){var di=new Date();var dk=di.getTime()+dj;if(!r||dk>r){r=dk}}function cn(di){if(cb||!a5||!bA){return}cb=setTimeout(function dj(){cb=null;if(!bc){bc=(!G.hasFocus||G.hasFocus())}if(!bc){cn(a5);return}if(bQ()){return}var dk=new Date(),dl=a5-(dk.getTime()-cX);dl=Math.min(a5,dl);cn(dl)},di||a5)}function bJ(){if(!cb){return}clearTimeout(cb);cb=null}function ba(){bc=true;cQ=new Date().getTime()}function dc(){var di=new Date().getTime();return !cQ||(di-cQ)>a5
|
app/plugins/CoreVisualizations/Visualizations/HtmlTable.php
CHANGED
@@ -235,9 +235,11 @@ class HtmlTable extends Visualization
|
|
235 |
|
236 |
$reportTotal = isset($totals[$column]) ? $totals[$column] : 0;
|
237 |
|
238 |
-
|
239 |
-
|
240 |
-
|
|
|
|
|
241 |
|
242 |
if ($siteTotalRow) {
|
243 |
$siteTotal = $siteTotalRow->getColumn($column) ?: 0;
|
235 |
|
236 |
$reportTotal = isset($totals[$column]) ? $totals[$column] : 0;
|
237 |
|
238 |
+
if (is_numeric($value)) {
|
239 |
+
$percentageColumnName = $column . '_row_percentage';
|
240 |
+
$rowPercentage = $formatter->formatPercent(Piwik::getPercentageSafe($value, $reportTotal, $precision = 1), $precision);
|
241 |
+
$row->setMetadata($percentageColumnName, $rowPercentage);
|
242 |
+
}
|
243 |
|
244 |
if ($siteTotalRow) {
|
245 |
$siteTotal = $siteTotalRow->getColumn($column) ?: 0;
|
app/plugins/CustomPiwikJs/TrackingCode/PluginTrackerFiles.php
CHANGED
@@ -16,11 +16,6 @@ class PluginTrackerFiles
|
|
16 |
const TRACKER_FILE = 'tracker.js';
|
17 |
const MIN_TRACKER_FILE = 'tracker.min.js';
|
18 |
|
19 |
-
/**
|
20 |
-
* @var string
|
21 |
-
*/
|
22 |
-
protected $dir;
|
23 |
-
|
24 |
/**
|
25 |
* @var Plugin\Manager
|
26 |
*/
|
@@ -33,7 +28,6 @@ class PluginTrackerFiles
|
|
33 |
|
34 |
public function __construct()
|
35 |
{
|
36 |
-
$this->dir = PIWIK_DOCUMENT_ROOT . '/plugins/';
|
37 |
$this->pluginManager = Plugin\Manager::getInstance();
|
38 |
}
|
39 |
|
@@ -42,6 +36,18 @@ class PluginTrackerFiles
|
|
42 |
$this->ignoreMinified = true;
|
43 |
}
|
44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
/**
|
46 |
* @return File[]
|
47 |
*/
|
@@ -49,25 +55,11 @@ class PluginTrackerFiles
|
|
49 |
{
|
50 |
$jsFiles = array();
|
51 |
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
$
|
57 |
-
if ($this->isPluginActivated($plugin)) {
|
58 |
-
$jsFiles[$plugin] = new File($trackerFile);
|
59 |
-
}
|
60 |
-
}
|
61 |
-
}
|
62 |
-
|
63 |
-
$trackerFiles = \_glob($this->dir . '*/' . self::TRACKER_FILE);
|
64 |
-
|
65 |
-
foreach ($trackerFiles as $trackerFile) {
|
66 |
-
$plugin = $this->getPluginNameFromFile($trackerFile);
|
67 |
-
if (!isset($jsFiles[$plugin])) {
|
68 |
-
if ($this->isPluginActivated($plugin)) {
|
69 |
-
$jsFiles[$plugin] = new File($trackerFile);
|
70 |
-
}
|
71 |
}
|
72 |
}
|
73 |
|
@@ -101,10 +93,4 @@ class PluginTrackerFiles
|
|
101 |
{
|
102 |
return $this->pluginManager->isPluginActivated($pluginName);
|
103 |
}
|
104 |
-
|
105 |
-
protected function getPluginNameFromFile($file)
|
106 |
-
{
|
107 |
-
$file = str_replace(array($this->dir, self::TRACKER_FILE, self::MIN_TRACKER_FILE), '', $file);
|
108 |
-
return trim($file, '/');
|
109 |
-
}
|
110 |
}
|
16 |
const TRACKER_FILE = 'tracker.js';
|
17 |
const MIN_TRACKER_FILE = 'tracker.min.js';
|
18 |
|
|
|
|
|
|
|
|
|
|
|
19 |
/**
|
20 |
* @var Plugin\Manager
|
21 |
*/
|
28 |
|
29 |
public function __construct()
|
30 |
{
|
|
|
31 |
$this->pluginManager = Plugin\Manager::getInstance();
|
32 |
}
|
33 |
|
36 |
$this->ignoreMinified = true;
|
37 |
}
|
38 |
|
39 |
+
protected function getDirectoriesToLook()
|
40 |
+
{
|
41 |
+
$dirs = array();
|
42 |
+
$manager = Plugin\Manager::getInstance();
|
43 |
+
foreach ($manager->getPluginsLoadedAndActivated() as $pluginName => $plugin) {
|
44 |
+
if ($plugin->isTrackerPlugin()) {
|
45 |
+
$dirs[$pluginName] = rtrim(Plugin\Manager::getPluginDirectory($pluginName), '/') . '/';
|
46 |
+
}
|
47 |
+
}
|
48 |
+
return $dirs;
|
49 |
+
}
|
50 |
+
|
51 |
/**
|
52 |
* @return File[]
|
53 |
*/
|
55 |
{
|
56 |
$jsFiles = array();
|
57 |
|
58 |
+
foreach ($this->getDirectoriesToLook() as $pluginName => $pluginDir) {
|
59 |
+
if (!$this->ignoreMinified && file_exists($pluginDir . self::MIN_TRACKER_FILE)) {
|
60 |
+
$jsFiles[$pluginName] = new File($pluginDir . self::MIN_TRACKER_FILE);
|
61 |
+
} elseif (file_exists($pluginDir . self::TRACKER_FILE)) {
|
62 |
+
$jsFiles[$pluginName] = new File($pluginDir . self::TRACKER_FILE);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
}
|
64 |
}
|
65 |
|
93 |
{
|
94 |
return $this->pluginManager->isPluginActivated($pluginName);
|
95 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
}
|
app/plugins/GeoIp2/GeoIP2AutoUpdater.php
CHANGED
@@ -130,7 +130,10 @@ class GeoIP2AutoUpdater extends Task
|
|
130 |
$logger = StaticContainer::get(LoggerInterface::class);
|
131 |
|
132 |
$url = trim($url);
|
133 |
-
|
|
|
|
|
|
|
134 |
$url = $this->getDbIpUrlWithLatestDate($url);
|
135 |
}
|
136 |
|
@@ -731,7 +734,7 @@ class GeoIP2AutoUpdater extends Task
|
|
731 |
return LocationProviderGeoIp2::$dbNames[$dbType][0] . '.' . $ext;
|
732 |
}
|
733 |
|
734 |
-
|
735 |
{
|
736 |
$today = Date::today();
|
737 |
return preg_replace('/-\d{4}-\d{2}\./', '-' . $today->toString('Y-m') . '.', $url);
|
@@ -741,4 +744,35 @@ class GeoIP2AutoUpdater extends Task
|
|
741 |
{
|
742 |
return !! preg_match('/db-ip\.com/', $url);
|
743 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
744 |
}
|
130 |
$logger = StaticContainer::get(LoggerInterface::class);
|
131 |
|
132 |
$url = trim($url);
|
133 |
+
|
134 |
+
if (self::isPaidDbIpUrl($url)) {
|
135 |
+
$url = $this->fetchPaidDbIpUrl($url);
|
136 |
+
} else if (self::isDbIpUrl($url)) {
|
137 |
$url = $this->getDbIpUrlWithLatestDate($url);
|
138 |
}
|
139 |
|
734 |
return LocationProviderGeoIp2::$dbNames[$dbType][0] . '.' . $ext;
|
735 |
}
|
736 |
|
737 |
+
protected function getDbIpUrlWithLatestDate($url)
|
738 |
{
|
739 |
$today = Date::today();
|
740 |
return preg_replace('/-\d{4}-\d{2}\./', '-' . $today->toString('Y-m') . '.', $url);
|
744 |
{
|
745 |
return !! preg_match('/db-ip\.com/', $url);
|
746 |
}
|
747 |
+
|
748 |
+
protected static function isPaidDbIpUrl($url)
|
749 |
+
{
|
750 |
+
return !! preg_match('/db-ip\.com\/account\/[0-9a-z]+\/db/', $url);
|
751 |
+
}
|
752 |
+
|
753 |
+
protected function fetchPaidDbIpUrl($url)
|
754 |
+
{
|
755 |
+
$content = trim($this->fetchUrl($url));
|
756 |
+
|
757 |
+
if (0 === strpos($content, 'http')) {
|
758 |
+
return $content;
|
759 |
+
}
|
760 |
+
|
761 |
+
$content = json_decode($content, true);
|
762 |
+
|
763 |
+
if (!empty($content['mmdb']['url'])) {
|
764 |
+
return $content['mmdb']['url'];
|
765 |
+
}
|
766 |
+
|
767 |
+
if (!empty($content['url'])) {
|
768 |
+
return $content['url'];
|
769 |
+
}
|
770 |
+
|
771 |
+
throw new Exception('Unable to determine download url');
|
772 |
+
}
|
773 |
+
|
774 |
+
protected function fetchUrl($url)
|
775 |
+
{
|
776 |
+
return Http::fetchRemoteFile($url);
|
777 |
+
}
|
778 |
}
|
app/plugins/GeoIp2/LocationProvider/GeoIp2/Php.php
CHANGED
@@ -11,6 +11,7 @@ namespace Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
|
|
11 |
use GeoIp2\Database\Reader;
|
12 |
use GeoIp2\Exception\AddressNotFoundException;
|
13 |
use MaxMind\Db\Reader\InvalidDatabaseException;
|
|
|
14 |
use Piwik\Log;
|
15 |
use Piwik\Piwik;
|
16 |
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
|
@@ -238,11 +239,35 @@ class Php extends GeoIp2
|
|
238 |
if (is_array($lookupResult->subdivisions) && count($lookupResult->subdivisions) > 0) {
|
239 |
$subdivisions = $lookupResult->subdivisions;
|
240 |
$subdivision = $this->determinSubdivision($subdivisions, $result[self::COUNTRY_CODE_KEY]);
|
241 |
-
$result[self::REGION_CODE_KEY] = strtoupper($subdivision->isoCode);
|
242 |
$result[self::REGION_NAME_KEY] = $subdivision->name;
|
243 |
}
|
244 |
}
|
245 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
246 |
protected function determinSubdivision($subdivisions, $countryCode)
|
247 |
{
|
248 |
if (in_array($countryCode, ['GB'])) {
|
11 |
use GeoIp2\Database\Reader;
|
12 |
use GeoIp2\Exception\AddressNotFoundException;
|
13 |
use MaxMind\Db\Reader\InvalidDatabaseException;
|
14 |
+
use Piwik\Common;
|
15 |
use Piwik\Log;
|
16 |
use Piwik\Piwik;
|
17 |
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
|
239 |
if (is_array($lookupResult->subdivisions) && count($lookupResult->subdivisions) > 0) {
|
240 |
$subdivisions = $lookupResult->subdivisions;
|
241 |
$subdivision = $this->determinSubdivision($subdivisions, $result[self::COUNTRY_CODE_KEY]);
|
242 |
+
$result[self::REGION_CODE_KEY] = strtoupper($subdivision->isoCode) ?: $this->determineRegionIsoCodeByNameAndCountryCode($subdivision->name, $result[self::COUNTRY_CODE_KEY]);
|
243 |
$result[self::REGION_NAME_KEY] = $subdivision->name;
|
244 |
}
|
245 |
}
|
246 |
|
247 |
+
/**
|
248 |
+
* Try to determine the ISO region code based on the region name and country code
|
249 |
+
*
|
250 |
+
* @param string $regionName
|
251 |
+
* @param string $countryCode
|
252 |
+
* @return string
|
253 |
+
*/
|
254 |
+
protected function determineRegionIsoCodeByNameAndCountryCode($regionName, $countryCode)
|
255 |
+
{
|
256 |
+
$regionNames = self::getRegionNames();
|
257 |
+
|
258 |
+
if (empty($regionNames[$countryCode])) {
|
259 |
+
return '';
|
260 |
+
}
|
261 |
+
|
262 |
+
foreach ($regionNames[$countryCode] as $isoCode => $name) {
|
263 |
+
if (Common::mb_strtolower($name) === Common::mb_strtolower($regionName)) {
|
264 |
+
return $isoCode;
|
265 |
+
}
|
266 |
+
}
|
267 |
+
|
268 |
+
return '';
|
269 |
+
}
|
270 |
+
|
271 |
protected function determinSubdivision($subdivisions, $countryCode)
|
272 |
{
|
273 |
if (in_array($countryCode, ['GB'])) {
|
app/plugins/Overlay/Controller.php
CHANGED
@@ -20,6 +20,7 @@ use Piwik\Plugins\SegmentEditor\SegmentFormatter;
|
|
20 |
use Piwik\Plugins\SitesManager\API as APISitesManager;
|
21 |
use Piwik\ProxyHttp;
|
22 |
use Piwik\Segment;
|
|
|
23 |
use Piwik\Tracker\Action;
|
24 |
use Piwik\Tracker\PageUrl;
|
25 |
use Piwik\View;
|
@@ -43,6 +44,12 @@ class Controller extends \Piwik\Plugin\Controller
|
|
43 |
{
|
44 |
Piwik::checkUserHasViewAccess($this->idSite);
|
45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
$template = '@Overlay/index';
|
47 |
if (Config::getInstance()->General['overlay_disable_framed_mode']) {
|
48 |
$template = '@Overlay/index_noframe';
|
20 |
use Piwik\Plugins\SitesManager\API as APISitesManager;
|
21 |
use Piwik\ProxyHttp;
|
22 |
use Piwik\Segment;
|
23 |
+
use Piwik\Session;
|
24 |
use Piwik\Tracker\Action;
|
25 |
use Piwik\Tracker\PageUrl;
|
26 |
use Piwik\View;
|
44 |
{
|
45 |
Piwik::checkUserHasViewAccess($this->idSite);
|
46 |
|
47 |
+
// Overlay needs to send requests w/ the session cookie from within the tracked website, which means
|
48 |
+
// we can't use SameSite=Lax. So, we regenerate the session ID here (in Session.php there is a hardcoded
|
49 |
+
// check for Overlay, so will be set to SameSite=None).
|
50 |
+
// Note: this means the new session ID will have SameSite=None until it regenerates on a non-Overlay page.
|
51 |
+
Session::regenerateId();
|
52 |
+
|
53 |
$template = '@Overlay/index';
|
54 |
if (Config::getInstance()->General['overlay_disable_framed_mode']) {
|
55 |
$template = '@Overlay/index_noframe';
|
app/plugins/VisitFrequency/API.php
CHANGED
@@ -49,7 +49,10 @@ class API extends \Piwik\Plugin\API
|
|
49 |
$columns = Piwik::getArrayFromApiParameter($columns);
|
50 |
|
51 |
/** @var \Piwik\DataTable\DataTableInterface $resultSet */
|
52 |
-
if (
|
|
|
|
|
|
|
53 |
$resultSet = new DataTable\Map();
|
54 |
$resultSet->setKeyName('period');
|
55 |
} else {
|
49 |
$columns = Piwik::getArrayFromApiParameter($columns);
|
50 |
|
51 |
/** @var \Piwik\DataTable\DataTableInterface $resultSet */
|
52 |
+
if ($idSite === 'all') {
|
53 |
+
$resultSet = new DataTable\Map();
|
54 |
+
$resultSet->setKeyName('idSite');
|
55 |
+
} else if (Period::isMultiplePeriod($date, $period)) {
|
56 |
$resultSet = new DataTable\Map();
|
57 |
$resultSet->setKeyName('period');
|
58 |
} else {
|
app/vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInite67cb932b779452f67cda37373f10cc8::getLoader();
|
app/vendor/composer/autoload_classmap.php
CHANGED
@@ -1089,7 +1089,6 @@ return array(
|
|
1089 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Framework\\Mock\\PluginTrackerFilesMock' => $baseDir . '/plugins/CustomPiwikJs/tests/Framework/Mock/PluginTrackerFilesMock.php',
|
1090 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\ApiTest' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/ApiTest.php',
|
1091 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\CustomPluginTrackerFiles' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php',
|
1092 |
-
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\CustomPluginTrackerFiles2' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php',
|
1093 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\CustomTestFile' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/FileTest.php',
|
1094 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\FileTest' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/FileTest.php',
|
1095 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\PiwikJsManipulatorTest' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/PiwikJsManipulatorTest.php',
|
@@ -1344,6 +1343,7 @@ return array(
|
|
1344 |
'Piwik\\Plugins\\ExampleTracker\\Columns\\ExampleDimension' => $baseDir . '/plugins/ExampleTracker/Columns/ExampleDimension.php',
|
1345 |
'Piwik\\Plugins\\ExampleTracker\\Columns\\ExampleVisitDimension' => $baseDir . '/plugins/ExampleTracker/Columns/ExampleVisitDimension.php',
|
1346 |
'Piwik\\Plugins\\ExampleTracker\\ExampleTracker' => $baseDir . '/plugins/ExampleTracker/ExampleTracker.php',
|
|
|
1347 |
'Piwik\\Plugins\\ExampleUI\\API' => $baseDir . '/plugins/ExampleUI/API.php',
|
1348 |
'Piwik\\Plugins\\ExampleUI\\Categories\\ExampleUiCategory' => $baseDir . '/plugins/ExampleUI/Categories/ExampleUiCategory.php',
|
1349 |
'Piwik\\Plugins\\ExampleUI\\Controller' => $baseDir . '/plugins/ExampleUI/Controller.php',
|
@@ -1376,6 +1376,8 @@ return array(
|
|
1376 |
'Piwik\\Plugins\\GeoIp2\\tests\\Integration\\LocationProviderTest' => $baseDir . '/plugins/GeoIp2/tests/Integration/LocationProviderTest.php',
|
1377 |
'Piwik\\Plugins\\GeoIp2\\tests\\Integration\\UpdateTest' => $baseDir . '/plugins/GeoIp2/tests/Integration/UpdateTest.php',
|
1378 |
'Piwik\\Plugins\\GeoIp2\\tests\\System\\ConvertRegionCodesToIsoTest' => $baseDir . '/plugins/GeoIp2/tests/System/ConvertRegionCodesToIsoTest.php',
|
|
|
|
|
1379 |
'Piwik\\Plugins\\Goals\\API' => $baseDir . '/plugins/Goals/API.php',
|
1380 |
'Piwik\\Plugins\\Goals\\Archiver' => $baseDir . '/plugins/Goals/Archiver.php',
|
1381 |
'Piwik\\Plugins\\Goals\\Categories\\AddANewGoalSubcategory' => $baseDir . '/plugins/Goals/Categories/AddANewGoalSubcategory.php',
|
1089 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Framework\\Mock\\PluginTrackerFilesMock' => $baseDir . '/plugins/CustomPiwikJs/tests/Framework/Mock/PluginTrackerFilesMock.php',
|
1090 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\ApiTest' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/ApiTest.php',
|
1091 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\CustomPluginTrackerFiles' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php',
|
|
|
1092 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\CustomTestFile' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/FileTest.php',
|
1093 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\FileTest' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/FileTest.php',
|
1094 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\PiwikJsManipulatorTest' => $baseDir . '/plugins/CustomPiwikJs/tests/Integration/PiwikJsManipulatorTest.php',
|
1343 |
'Piwik\\Plugins\\ExampleTracker\\Columns\\ExampleDimension' => $baseDir . '/plugins/ExampleTracker/Columns/ExampleDimension.php',
|
1344 |
'Piwik\\Plugins\\ExampleTracker\\Columns\\ExampleVisitDimension' => $baseDir . '/plugins/ExampleTracker/Columns/ExampleVisitDimension.php',
|
1345 |
'Piwik\\Plugins\\ExampleTracker\\ExampleTracker' => $baseDir . '/plugins/ExampleTracker/ExampleTracker.php',
|
1346 |
+
'Piwik\\Plugins\\ExampleTracker\\VisitorDetails' => $baseDir . '/plugins/ExampleTracker/VisitorDetails.php',
|
1347 |
'Piwik\\Plugins\\ExampleUI\\API' => $baseDir . '/plugins/ExampleUI/API.php',
|
1348 |
'Piwik\\Plugins\\ExampleUI\\Categories\\ExampleUiCategory' => $baseDir . '/plugins/ExampleUI/Categories/ExampleUiCategory.php',
|
1349 |
'Piwik\\Plugins\\ExampleUI\\Controller' => $baseDir . '/plugins/ExampleUI/Controller.php',
|
1376 |
'Piwik\\Plugins\\GeoIp2\\tests\\Integration\\LocationProviderTest' => $baseDir . '/plugins/GeoIp2/tests/Integration/LocationProviderTest.php',
|
1377 |
'Piwik\\Plugins\\GeoIp2\\tests\\Integration\\UpdateTest' => $baseDir . '/plugins/GeoIp2/tests/Integration/UpdateTest.php',
|
1378 |
'Piwik\\Plugins\\GeoIp2\\tests\\System\\ConvertRegionCodesToIsoTest' => $baseDir . '/plugins/GeoIp2/tests/System/ConvertRegionCodesToIsoTest.php',
|
1379 |
+
'Piwik\\Plugins\\GeoIp2\\tests\\Unit\\GeoIP2AutoUpdaterTest' => $baseDir . '/plugins/GeoIp2/tests/Unit/GeoIP2AutoUpdaterTest.php',
|
1380 |
+
'Piwik\\Plugins\\GeoIp2\\tests\\Unit\\public_GeoIP2AutoUpdater' => $baseDir . '/plugins/GeoIp2/tests/Unit/GeoIP2AutoUpdaterTest.php',
|
1381 |
'Piwik\\Plugins\\Goals\\API' => $baseDir . '/plugins/Goals/API.php',
|
1382 |
'Piwik\\Plugins\\Goals\\Archiver' => $baseDir . '/plugins/Goals/Archiver.php',
|
1383 |
'Piwik\\Plugins\\Goals\\Categories\\AddANewGoalSubcategory' => $baseDir . '/plugins/Goals/Categories/AddANewGoalSubcategory.php',
|
app/vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInite02e2beb31e6163bda800886ed643e0c
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$includePaths = require __DIR__ . '/include_paths.php';
|
27 |
$includePaths[] = get_include_path();
|
@@ -31,7 +31,7 @@ class ComposerAutoloaderInite02e2beb31e6163bda800886ed643e0c
|
|
31 |
if ($useStaticLoader) {
|
32 |
require_once __DIR__ . '/autoload_static.php';
|
33 |
|
34 |
-
call_user_func(\Composer\Autoload\
|
35 |
} else {
|
36 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
37 |
foreach ($map as $namespace => $path) {
|
@@ -52,19 +52,19 @@ class ComposerAutoloaderInite02e2beb31e6163bda800886ed643e0c
|
|
52 |
$loader->register(false);
|
53 |
|
54 |
if ($useStaticLoader) {
|
55 |
-
$includeFiles = Composer\Autoload\
|
56 |
} else {
|
57 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
58 |
}
|
59 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
60 |
-
|
61 |
}
|
62 |
|
63 |
return $loader;
|
64 |
}
|
65 |
}
|
66 |
|
67 |
-
function
|
68 |
{
|
69 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
70 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInite67cb932b779452f67cda37373f10cc8
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInite67cb932b779452f67cda37373f10cc8', 'loadClassLoader'), true, false);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInite67cb932b779452f67cda37373f10cc8', 'loadClassLoader'));
|
25 |
|
26 |
$includePaths = require __DIR__ . '/include_paths.php';
|
27 |
$includePaths[] = get_include_path();
|
31 |
if ($useStaticLoader) {
|
32 |
require_once __DIR__ . '/autoload_static.php';
|
33 |
|
34 |
+
call_user_func(\Composer\Autoload\ComposerStaticInite67cb932b779452f67cda37373f10cc8::getInitializer($loader));
|
35 |
} else {
|
36 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
37 |
foreach ($map as $namespace => $path) {
|
52 |
$loader->register(false);
|
53 |
|
54 |
if ($useStaticLoader) {
|
55 |
+
$includeFiles = Composer\Autoload\ComposerStaticInite67cb932b779452f67cda37373f10cc8::$files;
|
56 |
} else {
|
57 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
58 |
}
|
59 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
60 |
+
composerRequiree67cb932b779452f67cda37373f10cc8($fileIdentifier, $file);
|
61 |
}
|
62 |
|
63 |
return $loader;
|
64 |
}
|
65 |
}
|
66 |
|
67 |
+
function composerRequiree67cb932b779452f67cda37373f10cc8($fileIdentifier, $file)
|
68 |
{
|
69 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
70 |
require $file;
|
app/vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'04c6c5c2f7095ccf6c481d3e53e1776f' => __DIR__ . '/..' . '/mustangostang/spyc/Spyc.php',
|
@@ -1331,7 +1331,6 @@ class ComposerStaticInite02e2beb31e6163bda800886ed643e0c
|
|
1331 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Framework\\Mock\\PluginTrackerFilesMock' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Framework/Mock/PluginTrackerFilesMock.php',
|
1332 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\ApiTest' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/ApiTest.php',
|
1333 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\CustomPluginTrackerFiles' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php',
|
1334 |
-
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\CustomPluginTrackerFiles2' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php',
|
1335 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\CustomTestFile' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/FileTest.php',
|
1336 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\FileTest' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/FileTest.php',
|
1337 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\PiwikJsManipulatorTest' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/PiwikJsManipulatorTest.php',
|
@@ -1586,6 +1585,7 @@ class ComposerStaticInite02e2beb31e6163bda800886ed643e0c
|
|
1586 |
'Piwik\\Plugins\\ExampleTracker\\Columns\\ExampleDimension' => __DIR__ . '/../..' . '/plugins/ExampleTracker/Columns/ExampleDimension.php',
|
1587 |
'Piwik\\Plugins\\ExampleTracker\\Columns\\ExampleVisitDimension' => __DIR__ . '/../..' . '/plugins/ExampleTracker/Columns/ExampleVisitDimension.php',
|
1588 |
'Piwik\\Plugins\\ExampleTracker\\ExampleTracker' => __DIR__ . '/../..' . '/plugins/ExampleTracker/ExampleTracker.php',
|
|
|
1589 |
'Piwik\\Plugins\\ExampleUI\\API' => __DIR__ . '/../..' . '/plugins/ExampleUI/API.php',
|
1590 |
'Piwik\\Plugins\\ExampleUI\\Categories\\ExampleUiCategory' => __DIR__ . '/../..' . '/plugins/ExampleUI/Categories/ExampleUiCategory.php',
|
1591 |
'Piwik\\Plugins\\ExampleUI\\Controller' => __DIR__ . '/../..' . '/plugins/ExampleUI/Controller.php',
|
@@ -1618,6 +1618,8 @@ class ComposerStaticInite02e2beb31e6163bda800886ed643e0c
|
|
1618 |
'Piwik\\Plugins\\GeoIp2\\tests\\Integration\\LocationProviderTest' => __DIR__ . '/../..' . '/plugins/GeoIp2/tests/Integration/LocationProviderTest.php',
|
1619 |
'Piwik\\Plugins\\GeoIp2\\tests\\Integration\\UpdateTest' => __DIR__ . '/../..' . '/plugins/GeoIp2/tests/Integration/UpdateTest.php',
|
1620 |
'Piwik\\Plugins\\GeoIp2\\tests\\System\\ConvertRegionCodesToIsoTest' => __DIR__ . '/../..' . '/plugins/GeoIp2/tests/System/ConvertRegionCodesToIsoTest.php',
|
|
|
|
|
1621 |
'Piwik\\Plugins\\Goals\\API' => __DIR__ . '/../..' . '/plugins/Goals/API.php',
|
1622 |
'Piwik\\Plugins\\Goals\\Archiver' => __DIR__ . '/../..' . '/plugins/Goals/Archiver.php',
|
1623 |
'Piwik\\Plugins\\Goals\\Categories\\AddANewGoalSubcategory' => __DIR__ . '/../..' . '/plugins/Goals/Categories/AddANewGoalSubcategory.php',
|
@@ -3601,11 +3603,11 @@ class ComposerStaticInite02e2beb31e6163bda800886ed643e0c
|
|
3601 |
public static function getInitializer(ClassLoader $loader)
|
3602 |
{
|
3603 |
return \Closure::bind(function () use ($loader) {
|
3604 |
-
$loader->prefixLengthsPsr4 =
|
3605 |
-
$loader->prefixDirsPsr4 =
|
3606 |
-
$loader->prefixesPsr0 =
|
3607 |
-
$loader->fallbackDirsPsr0 =
|
3608 |
-
$loader->classMap =
|
3609 |
|
3610 |
}, null, ClassLoader::class);
|
3611 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInite67cb932b779452f67cda37373f10cc8
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'04c6c5c2f7095ccf6c481d3e53e1776f' => __DIR__ . '/..' . '/mustangostang/spyc/Spyc.php',
|
1331 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Framework\\Mock\\PluginTrackerFilesMock' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Framework/Mock/PluginTrackerFilesMock.php',
|
1332 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\ApiTest' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/ApiTest.php',
|
1333 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\CustomPluginTrackerFiles' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/PluginTrackerFilesTest.php',
|
|
|
1334 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\CustomTestFile' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/FileTest.php',
|
1335 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\FileTest' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/FileTest.php',
|
1336 |
'Piwik\\Plugins\\CustomPiwikJs\\tests\\Integration\\PiwikJsManipulatorTest' => __DIR__ . '/../..' . '/plugins/CustomPiwikJs/tests/Integration/PiwikJsManipulatorTest.php',
|
1585 |
'Piwik\\Plugins\\ExampleTracker\\Columns\\ExampleDimension' => __DIR__ . '/../..' . '/plugins/ExampleTracker/Columns/ExampleDimension.php',
|
1586 |
'Piwik\\Plugins\\ExampleTracker\\Columns\\ExampleVisitDimension' => __DIR__ . '/../..' . '/plugins/ExampleTracker/Columns/ExampleVisitDimension.php',
|
1587 |
'Piwik\\Plugins\\ExampleTracker\\ExampleTracker' => __DIR__ . '/../..' . '/plugins/ExampleTracker/ExampleTracker.php',
|
1588 |
+
'Piwik\\Plugins\\ExampleTracker\\VisitorDetails' => __DIR__ . '/../..' . '/plugins/ExampleTracker/VisitorDetails.php',
|
1589 |
'Piwik\\Plugins\\ExampleUI\\API' => __DIR__ . '/../..' . '/plugins/ExampleUI/API.php',
|
1590 |
'Piwik\\Plugins\\ExampleUI\\Categories\\ExampleUiCategory' => __DIR__ . '/../..' . '/plugins/ExampleUI/Categories/ExampleUiCategory.php',
|
1591 |
'Piwik\\Plugins\\ExampleUI\\Controller' => __DIR__ . '/../..' . '/plugins/ExampleUI/Controller.php',
|
1618 |
'Piwik\\Plugins\\GeoIp2\\tests\\Integration\\LocationProviderTest' => __DIR__ . '/../..' . '/plugins/GeoIp2/tests/Integration/LocationProviderTest.php',
|
1619 |
'Piwik\\Plugins\\GeoIp2\\tests\\Integration\\UpdateTest' => __DIR__ . '/../..' . '/plugins/GeoIp2/tests/Integration/UpdateTest.php',
|
1620 |
'Piwik\\Plugins\\GeoIp2\\tests\\System\\ConvertRegionCodesToIsoTest' => __DIR__ . '/../..' . '/plugins/GeoIp2/tests/System/ConvertRegionCodesToIsoTest.php',
|
1621 |
+
'Piwik\\Plugins\\GeoIp2\\tests\\Unit\\GeoIP2AutoUpdaterTest' => __DIR__ . '/../..' . '/plugins/GeoIp2/tests/Unit/GeoIP2AutoUpdaterTest.php',
|
1622 |
+
'Piwik\\Plugins\\GeoIp2\\tests\\Unit\\public_GeoIP2AutoUpdater' => __DIR__ . '/../..' . '/plugins/GeoIp2/tests/Unit/GeoIP2AutoUpdaterTest.php',
|
1623 |
'Piwik\\Plugins\\Goals\\API' => __DIR__ . '/../..' . '/plugins/Goals/API.php',
|
1624 |
'Piwik\\Plugins\\Goals\\Archiver' => __DIR__ . '/../..' . '/plugins/Goals/Archiver.php',
|
1625 |
'Piwik\\Plugins\\Goals\\Categories\\AddANewGoalSubcategory' => __DIR__ . '/../..' . '/plugins/Goals/Categories/AddANewGoalSubcategory.php',
|
3603 |
public static function getInitializer(ClassLoader $loader)
|
3604 |
{
|
3605 |
return \Closure::bind(function () use ($loader) {
|
3606 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInite67cb932b779452f67cda37373f10cc8::$prefixLengthsPsr4;
|
3607 |
+
$loader->prefixDirsPsr4 = ComposerStaticInite67cb932b779452f67cda37373f10cc8::$prefixDirsPsr4;
|
3608 |
+
$loader->prefixesPsr0 = ComposerStaticInite67cb932b779452f67cda37373f10cc8::$prefixesPsr0;
|
3609 |
+
$loader->fallbackDirsPsr0 = ComposerStaticInite67cb932b779452f67cda37373f10cc8::$fallbackDirsPsr0;
|
3610 |
+
$loader->classMap = ComposerStaticInite67cb932b779452f67cda37373f10cc8::$classMap;
|
3611 |
|
3612 |
}, null, ClassLoader::class);
|
3613 |
}
|
assets/js/asset_manager_core_js.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
/* Matomo Javascript - cb=
|
2 |
|
3 |
/*! jQuery Browser - v0.1.0 - 3/23/2012
|
4 |
* https://github.com/jquery/jquery-browser
|
1 |
+
/* Matomo Javascript - cb=96b12efedc5a20952da305f7fa27e7d0*/
|
2 |
|
3 |
/*! jQuery Browser - v0.1.0 - 3/23/2012
|
4 |
* https://github.com/jquery/jquery-browser
|
classes/WpMatomo/Admin/SystemReport.php
CHANGED
@@ -153,6 +153,7 @@ class SystemReport {
|
|
153 |
array(
|
154 |
'title' => 'WordPress',
|
155 |
'rows' => $this->get_wordpress_info(),
|
|
|
156 |
),
|
157 |
array(
|
158 |
'title' => 'WordPress Plugins',
|
@@ -667,6 +668,28 @@ class SystemReport {
|
|
667 |
'value' => defined( 'WP_CACHE' ) && WP_CACHE,
|
668 |
);
|
669 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
670 |
return $rows;
|
671 |
}
|
672 |
|
153 |
array(
|
154 |
'title' => 'WordPress',
|
155 |
'rows' => $this->get_wordpress_info(),
|
156 |
+
'has_comments' => true,
|
157 |
),
|
158 |
array(
|
159 |
'title' => 'WordPress Plugins',
|
668 |
'value' => defined( 'WP_CACHE' ) && WP_CACHE,
|
669 |
);
|
670 |
|
671 |
+
if (is_plugin_active('wp-piwik/wp-piwik.php')) {
|
672 |
+
$rows[] = array(
|
673 |
+
'name' => 'WP-Matomo (WP-Piwik) activated',
|
674 |
+
'value' => true,
|
675 |
+
'is_warning' => true,
|
676 |
+
'comment' => 'It is usually not recommended or needed to run Matomo for WordPress and WP-Matomo at the same time. To learn more about the differences between the two plugins view this URL: https://matomo.org/faq/wordpress/why-are-there-two-different-matomo-for-wordpress-plugins-what-is-the-difference-to-wp-matomo-integration-plugin/'
|
677 |
+
);
|
678 |
+
|
679 |
+
$mode = get_option ( 'wp-piwik_global-piwik_mode' );
|
680 |
+
if (function_exists('get_site_option') && is_plugin_active_for_network ( 'wp-piwik/wp-piwik.php' )) {
|
681 |
+
$mode = get_site_option ( 'wp-piwik_global-piwik_mode');
|
682 |
+
}
|
683 |
+
if (!empty($mode)) {
|
684 |
+
$rows[] = array(
|
685 |
+
'name' => 'WP-Matomo mode',
|
686 |
+
'value' => $mode,
|
687 |
+
'is_warning' => $mode === 'php' || $mode === 'PHP',
|
688 |
+
'comment' => 'WP-Matomo is configured in "PHP mode". This is known to cause issues with Matomo for WordPress. We recommend you either deactivate WP-Matomo or you go "Settings => WP-Matomo" and change the "Matomo Mode" in the "Connect to Matomo" section to "Self-hosted HTTP API".'
|
689 |
+
);
|
690 |
+
}
|
691 |
+
}
|
692 |
+
|
693 |
return $rows;
|
694 |
}
|
695 |
|
classes/WpMatomo/Admin/views/marketplace.php
CHANGED
@@ -71,11 +71,11 @@ $matomo_extra_url_params = '&' . http_build_query(
|
|
71 |
'image' => '',
|
72 |
),
|
73 |
array(
|
74 |
-
'name' => '
|
75 |
-
'description' => '
|
76 |
'price' => '',
|
77 |
-
'download_url' => 'https://plugins.matomo.org/api/2.0/plugins/
|
78 |
-
'url' => 'https://plugins.matomo.org/
|
79 |
'image' => '',
|
80 |
),
|
81 |
),
|
71 |
'image' => '',
|
72 |
),
|
73 |
array(
|
74 |
+
'name' => 'Marketing Campaigns Reporting',
|
75 |
+
'description' => 'Measure the effectiveness of your marketing campaigns. Track up to five channels instead of two: campaign, source, medium, keyword, content.',
|
76 |
'price' => '',
|
77 |
+
'download_url' => 'https://plugins.matomo.org/api/2.0/plugins/MarketingCampaignsReporting/download/latest?wp=1' . $matomo_extra_url_params,
|
78 |
+
'url' => 'https://plugins.matomo.org/MarketingCampaignsReporting?wp=1',
|
79 |
'image' => '',
|
80 |
),
|
81 |
),
|
classes/WpMatomo/Ecommerce/Base.php
CHANGED
@@ -70,7 +70,7 @@ class Base {
|
|
70 |
update_post_meta( $order_id, $this->key_order_tracked, 1 );
|
71 |
}
|
72 |
|
73 |
-
|
74 |
return defined( 'DOING_AJAX' ) && DOING_AJAX;
|
75 |
}
|
76 |
|
70 |
update_post_meta( $order_id, $this->key_order_tracked, 1 );
|
71 |
}
|
72 |
|
73 |
+
protected function is_doing_ajax() {
|
74 |
return defined( 'DOING_AJAX' ) && DOING_AJAX;
|
75 |
}
|
76 |
|
classes/WpMatomo/Ecommerce/Woocommerce.php
CHANGED
@@ -28,7 +28,16 @@ class Woocommerce extends Base {
|
|
28 |
add_action( 'woocommerce_add_to_cart', array( $this, 'on_cart_updated' ), 99999, 0 );
|
29 |
add_action( 'woocommerce_cart_item_removed', array( $this, 'on_cart_updated' ), 99999, 0 );
|
30 |
add_action( 'woocommerce_cart_item_restored', array( $this, 'on_cart_updated' ), 99999, 0 );
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
add_action( 'woocommerce_applied_coupon', array( $this, 'on_cart_updated' ), 99999, 0 );
|
33 |
add_action( 'woocommerce_removed_coupon', array( $this, 'on_cart_updated' ), 99999, 0 );
|
34 |
}
|
@@ -44,7 +53,12 @@ class Woocommerce extends Base {
|
|
44 |
}
|
45 |
}
|
46 |
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
48 |
global $woocommerce;
|
49 |
|
50 |
/** @var \WC_Cart $cart */
|
@@ -102,6 +116,8 @@ class Woocommerce extends Base {
|
|
102 |
|
103 |
$this->cart_update_queue = $this->wrap_script( $tracking_code );
|
104 |
$this->logger->log( 'Tracked ecommerce cart update: ' . $this->cart_update_queue );
|
|
|
|
|
105 |
}
|
106 |
|
107 |
public function on_order( $order_id ) {
|
28 |
add_action( 'woocommerce_add_to_cart', array( $this, 'on_cart_updated' ), 99999, 0 );
|
29 |
add_action( 'woocommerce_cart_item_removed', array( $this, 'on_cart_updated' ), 99999, 0 );
|
30 |
add_action( 'woocommerce_cart_item_restored', array( $this, 'on_cart_updated' ), 99999, 0 );
|
31 |
+
add_action( 'woocommerce_cart_item_set_quantity', array( $this, 'on_cart_updated' ), 99999, 0 );
|
32 |
+
|
33 |
+
if (!$this->is_doing_ajax()) {
|
34 |
+
// prevent possibly executing same event twice where eg first a PHP Matomo tracker request is created
|
35 |
+
// because of woocommerce_applied_coupon and then also because of woocommerce_update_cart_action_cart_updated itself
|
36 |
+
// causing two tracking requests to be issues from the server. refs #215
|
37 |
+
// when not ajax mode the later event will simply overwrite the first and it should be fine.
|
38 |
+
add_filter( 'woocommerce_update_cart_action_cart_updated', array( $this, 'on_cart_updated' ), 99999, 1 );
|
39 |
+
}
|
40 |
+
|
41 |
add_action( 'woocommerce_applied_coupon', array( $this, 'on_cart_updated' ), 99999, 0 );
|
42 |
add_action( 'woocommerce_removed_coupon', array( $this, 'on_cart_updated' ), 99999, 0 );
|
43 |
}
|
53 |
}
|
54 |
}
|
55 |
|
56 |
+
/**
|
57 |
+
* @param null $val needed for woocommerce_update_cart_action_cart_updated filter
|
58 |
+
*
|
59 |
+
* @return mixed
|
60 |
+
*/
|
61 |
+
public function on_cart_updated( $val = null ) {
|
62 |
global $woocommerce;
|
63 |
|
64 |
/** @var \WC_Cart $cart */
|
116 |
|
117 |
$this->cart_update_queue = $this->wrap_script( $tracking_code );
|
118 |
$this->logger->log( 'Tracked ecommerce cart update: ' . $this->cart_update_queue );
|
119 |
+
|
120 |
+
return $val;
|
121 |
}
|
122 |
|
123 |
public function on_order( $order_id ) {
|
classes/WpMatomo/Paths.php
CHANGED
@@ -110,8 +110,8 @@ class Paths {
|
|
110 |
|
111 |
public function get_relative_dir_to_matomo( $target_dir ) {
|
112 |
$matomo_dir = plugin_dir_path( MATOMO_ANALYTICS_FILE ) . 'app';
|
113 |
-
$matomo_dir_parts = explode(
|
114 |
-
$target_dir_parts = explode(
|
115 |
$relative_directory = '';
|
116 |
$add_at_the_end = array();
|
117 |
$was_previous_same = false;
|
110 |
|
111 |
public function get_relative_dir_to_matomo( $target_dir ) {
|
112 |
$matomo_dir = plugin_dir_path( MATOMO_ANALYTICS_FILE ) . 'app';
|
113 |
+
$matomo_dir_parts = explode( DIRECTORY_SEPARATOR, $matomo_dir );
|
114 |
+
$target_dir_parts = explode( DIRECTORY_SEPARATOR, $target_dir );
|
115 |
$relative_directory = '';
|
116 |
$add_at_the_end = array();
|
117 |
$was_previous_same = false;
|
config/common.config.ini.php
CHANGED
@@ -1,6 +1,9 @@
|
|
1 |
; <?php exit; ?> DO NOT REMOVE THIS LINE
|
2 |
; Configuration settings which are applied to all Piwik instances.
|
3 |
|
|
|
|
|
|
|
4 |
[General]
|
5 |
enable_update_communication = 0
|
6 |
enable_auto_update = 0
|
1 |
; <?php exit; ?> DO NOT REMOVE THIS LINE
|
2 |
; Configuration settings which are applied to all Piwik instances.
|
3 |
|
4 |
+
[database]
|
5 |
+
adapter = WordPress
|
6 |
+
|
7 |
[General]
|
8 |
enable_update_communication = 0
|
9 |
enable_auto_update = 0
|
config/config.php
CHANGED
@@ -46,12 +46,11 @@ return array(
|
|
46 |
$previous->General = $general;
|
47 |
}
|
48 |
|
|
|
|
|
|
|
49 |
$paths = new Paths();
|
50 |
if ( file_exists( $paths->get_config_ini_path() ) ) {
|
51 |
-
// we overwrite DB on demand only once installed... otherwise Matomo may think it is installed already
|
52 |
-
$database = $previous->database;
|
53 |
-
$previous->database = \WpMatomo\Installer::get_db_infos($database);
|
54 |
-
|
55 |
$general = $previous->General;
|
56 |
|
57 |
if (defined('MATOMO_TRIGGER_BROWSER_ARCHIVING')) {
|
46 |
$previous->General = $general;
|
47 |
}
|
48 |
|
49 |
+
$database = $previous->database;
|
50 |
+
$previous->database = \WpMatomo\Installer::get_db_infos($database);
|
51 |
+
|
52 |
$paths = new Paths();
|
53 |
if ( file_exists( $paths->get_config_ini_path() ) ) {
|
|
|
|
|
|
|
|
|
54 |
$general = $previous->General;
|
55 |
|
56 |
if (defined('MATOMO_TRIGGER_BROWSER_ARCHIVING')) {
|
matomo.php
CHANGED
@@ -4,10 +4,10 @@
|
|
4 |
* Description: The #1 Google Analytics alternative that gives you full control over your data and protects the privacy for your users. Free, secure and open.
|
5 |
* Author: Matomo
|
6 |
* Author URI: https://matomo.org
|
7 |
-
* Version: 1.0.
|
8 |
* Domain Path: /languages
|
9 |
* WC requires at least: 2.4.0
|
10 |
-
* WC tested up to: 3.
|
11 |
*
|
12 |
* Matomo - free/libre analytics platform
|
13 |
*
|
@@ -36,9 +36,25 @@ $GLOBALS['MATOMO_PLUGINS_ENABLED'] = array();
|
|
36 |
$GLOBALS['MATOMO_PLUGIN_FILES'] = array( MATOMO_ANALYTICS_FILE );
|
37 |
|
38 |
function matomo_has_compatible_content_dir() {
|
39 |
-
|
40 |
-
|
41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
}
|
43 |
|
44 |
function matomo_is_app_request() {
|
@@ -117,8 +133,8 @@ function matomo_add_plugin( $plugins_directory, $wp_plugin_file, $is_marketplace
|
|
117 |
}
|
118 |
|
119 |
$matomo_dir = __DIR__ . '/app';
|
120 |
-
$matomo_dir_parts = explode(
|
121 |
-
$root_dir_parts = explode(
|
122 |
$webroot_dir = '';
|
123 |
foreach ( $matomo_dir_parts as $index => $part ) {
|
124 |
if ( isset( $root_dir_parts[ $index ] ) && $root_dir_parts[ $index ] === $part ) {
|
@@ -136,4 +152,4 @@ function matomo_add_plugin( $plugins_directory, $wp_plugin_file, $is_marketplace
|
|
136 |
require_once __DIR__ . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'WpMatomo.php';
|
137 |
require 'shared.php';
|
138 |
matomo_add_plugin( __DIR__ . '/plugins/WordPress', MATOMO_ANALYTICS_FILE );
|
139 |
-
new WpMatomo();
|
4 |
* Description: The #1 Google Analytics alternative that gives you full control over your data and protects the privacy for your users. Free, secure and open.
|
5 |
* Author: Matomo
|
6 |
* Author URI: https://matomo.org
|
7 |
+
* Version: 1.0.3
|
8 |
* Domain Path: /languages
|
9 |
* WC requires at least: 2.4.0
|
10 |
+
* WC tested up to: 3.9.2
|
11 |
*
|
12 |
* Matomo - free/libre analytics platform
|
13 |
*
|
36 |
$GLOBALS['MATOMO_PLUGIN_FILES'] = array( MATOMO_ANALYTICS_FILE );
|
37 |
|
38 |
function matomo_has_compatible_content_dir() {
|
39 |
+
if ( !empty( $_ENV['MATOMO_WP_ROOT_PATH'] ) && is_dir( $_ENV['MATOMO_WP_ROOT_PATH'] ) ) {
|
40 |
+
return true;
|
41 |
+
}
|
42 |
+
|
43 |
+
if ( ! defined( 'WP_CONTENT_DIR' ) ) {
|
44 |
+
return false;
|
45 |
+
}
|
46 |
+
|
47 |
+
$contentDir = rtrim(rtrim( WP_CONTENT_DIR, '/' ), DIRECTORY_SEPARATOR );
|
48 |
+
$contentDir = wp_normalize_path($contentDir);
|
49 |
+
$absPath = wp_normalize_path(ABSPATH);
|
50 |
+
|
51 |
+
$absPaths = array(
|
52 |
+
$absPath . 'wp-content',
|
53 |
+
$absPath . '/wp-content',
|
54 |
+
$absPath . DIRECTORY_SEPARATOR . 'wp-content'
|
55 |
+
);
|
56 |
+
|
57 |
+
return in_array($contentDir, $absPaths, true);
|
58 |
}
|
59 |
|
60 |
function matomo_is_app_request() {
|
133 |
}
|
134 |
|
135 |
$matomo_dir = __DIR__ . '/app';
|
136 |
+
$matomo_dir_parts = explode( DIRECTORY_SEPARATOR, $matomo_dir );
|
137 |
+
$root_dir_parts = explode( DIRECTORY_SEPARATOR, $root_dir );
|
138 |
$webroot_dir = '';
|
139 |
foreach ( $matomo_dir_parts as $index => $part ) {
|
140 |
if ( isset( $root_dir_parts[ $index ] ) && $root_dir_parts[ $index ] === $part ) {
|
152 |
require_once __DIR__ . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'WpMatomo.php';
|
153 |
require 'shared.php';
|
154 |
matomo_add_plugin( __DIR__ . '/plugins/WordPress', MATOMO_ANALYTICS_FILE );
|
155 |
+
new WpMatomo();
|
plugins/WordPress/WordPress.php
CHANGED
@@ -15,6 +15,7 @@ use Piwik\Common;
|
|
15 |
use Piwik\FrontController;
|
16 |
use Piwik\Piwik;
|
17 |
use Piwik\Plugin;
|
|
|
18 |
use Piwik\Plugins\CoreHome\SystemSummary\Item;
|
19 |
use Piwik\Scheduler\Task;
|
20 |
use Piwik\Url;
|
@@ -49,9 +50,28 @@ class WordPress extends Plugin
|
|
49 |
'API.Tour.getChallenges.end' => 'modifyTourChallenges',
|
50 |
'API.ScheduledReports.generateReport.end' => 'onGenerateReportEnd',
|
51 |
'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
|
|
|
|
|
52 |
);
|
53 |
}
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
public function getClientSideTranslationKeys(&$translationKeys)
|
56 |
{
|
57 |
$translationKeys[] = 'Feedback_SearchOnMatomo';
|
15 |
use Piwik\FrontController;
|
16 |
use Piwik\Piwik;
|
17 |
use Piwik\Plugin;
|
18 |
+
use Piwik\Plugin\Manager;
|
19 |
use Piwik\Plugins\CoreHome\SystemSummary\Item;
|
20 |
use Piwik\Scheduler\Task;
|
21 |
use Piwik\Url;
|
50 |
'API.Tour.getChallenges.end' => 'modifyTourChallenges',
|
51 |
'API.ScheduledReports.generateReport.end' => 'onGenerateReportEnd',
|
52 |
'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
|
53 |
+
'CustomMatomoJs.manipulateJsTracker' => 'updateHeatmapTrackerPath',
|
54 |
+
'Visualization.beforeRender' => 'onBeforeRenderView',
|
55 |
);
|
56 |
}
|
57 |
|
58 |
+
public function onBeforeRenderView (Plugin\ViewDataTable $view)
|
59 |
+
{
|
60 |
+
if ($view->requestConfig->getApiModuleToRequest() === 'UserCountry' && $view->config->show_footer_message && strpos($view->config->show_footer_message, 'href') !== false) {
|
61 |
+
// dont suggest setting up geoip
|
62 |
+
$view->config->show_footer_message = '';
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
public function updateHeatmapTrackerPath(&$content)
|
67 |
+
{
|
68 |
+
$webRootDirs = Manager::getInstance()->getWebRootDirectoriesForCustomPluginDirs();
|
69 |
+
if (!empty($webRootDirs['HeatmapSessionRecording'])) {
|
70 |
+
$baseUrl = trim($webRootDirs['HeatmapSessionRecording'], '/') . '/HeatmapSessionRecording/configs.php';
|
71 |
+
$content = str_replace('plugins/HeatmapSessionRecording/configs.php', $baseUrl, $content);
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
public function getClientSideTranslationKeys(&$translationKeys)
|
76 |
{
|
77 |
$translationKeys[] = 'Feedback_SearchOnMatomo';
|
readme.txt
CHANGED
@@ -1,154 +1,160 @@
|
|
1 |
-
=== Matomo Analytics - Ethical Stats. Powerful Insights. ===
|
2 |
-
Contributors: matomoteam
|
3 |
-
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5EJ2LHATAKCJ4&source=url
|
4 |
-
Tags: matomo,piwik,analytics,statistics,stats,tracking,ecommerce
|
5 |
-
Requires at least: 4.8
|
6 |
-
Tested up to: 5.
|
7 |
-
Stable tag: 1.0.
|
8 |
-
Requires PHP: 7.2
|
9 |
-
License: GPLv3 or later
|
10 |
-
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
== Description ==
|
15 |
-
|
16 |
-
For all you WordPress website owners wanting an easier way to get customer insights to grow your business, you can now get the solution the professionals use, for free!
|
17 |
-
|
18 |
-
Matomo Analytics is the #1 used Google Analytics alternative that offers a powerful range of features, security and protects the privacy of your users. This enables you to learn how to improve your website, make the right decisions for your business and stand out in the crowd in a safe and trustworthy way.
|
19 |
-
|
20 |
-
Matomo’s mission is to give control and data ownership back to the user. By hosting web analytics on your own servers there’s no third-parties taking ownership, no on-selling of data and no-one looking in. This means when you install Matomo in a matter of a few clicks, you’re in full control.
|
21 |
-
|
22 |
-
It’s also easier for you to get insights from Matomo Analytics with it’s time-saving interface design and out-of-the-box features, which require less manual configuration than Google Analytics.
|
23 |
-
|
24 |
-
Matomo is free, secure and open - your ethical user insights platform.
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
*
|
31 |
-
*
|
32 |
-
*
|
33 |
-
*
|
34 |
-
*
|
35 |
-
*
|
36 |
-
*
|
37 |
-
*
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
*
|
44 |
-
*
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
*
|
54 |
-
*
|
55 |
-
*
|
56 |
-
*
|
57 |
-
*
|
58 |
-
*
|
59 |
-
*
|
60 |
-
*
|
61 |
-
*
|
62 |
-
*
|
63 |
-
*
|
64 |
-
*
|
65 |
-
*
|
66 |
-
*
|
67 |
-
* Supports
|
68 |
-
|
69 |
-
|
70 |
-
*
|
71 |
-
*
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
*
|
76 |
-
*
|
77 |
-
*
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
*
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
*
|
98 |
-
*
|
99 |
-
|
100 |
-
==
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Matomo Analytics - Ethical Stats. Powerful Insights. ===
|
2 |
+
Contributors: matomoteam
|
3 |
+
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5EJ2LHATAKCJ4&source=url
|
4 |
+
Tags: matomo,piwik,analytics,statistics,stats,tracking,ecommerce
|
5 |
+
Requires at least: 4.8
|
6 |
+
Tested up to: 5.4
|
7 |
+
Stable tag: 1.0.3
|
8 |
+
Requires PHP: 7.2
|
9 |
+
License: GPLv3 or later
|
10 |
+
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
11 |
+
|
12 |
+
Matomo is the #1 Google Analytics alternative that gives you full control over your data and protects user privacy. Free, secure, and open.
|
13 |
+
|
14 |
+
== Description ==
|
15 |
+
|
16 |
+
For all you WordPress website owners wanting an easier way to get customer insights to grow your business, you can now get the solution the professionals use, for free!
|
17 |
+
|
18 |
+
Matomo Analytics is the #1 used Google Analytics alternative that offers a powerful range of features, security and protects the privacy of your users. This enables you to learn how to improve your website, make the right decisions for your business and stand out in the crowd in a safe and trustworthy way.
|
19 |
+
|
20 |
+
Matomo’s mission is to give control and data ownership back to the user. By hosting web analytics on your own servers there’s no third-parties taking ownership, no on-selling of data and no-one looking in. This means when you install Matomo in a matter of a few clicks, you’re in full control.
|
21 |
+
|
22 |
+
It’s also easier for you to get insights from Matomo Analytics with it’s time-saving interface design and out-of-the-box features, which require less manual configuration than Google Analytics.
|
23 |
+
|
24 |
+
Matomo is free, secure and open - your ethical user insights platform.
|
25 |
+
|
26 |
+
[youtube https://www.youtube.com/watch?v=puxi_Ey0iLc]
|
27 |
+
|
28 |
+
**How Matomo Analytics for Wordpress solves problems:**
|
29 |
+
|
30 |
+
* 100% data ownership, no one else can see your data
|
31 |
+
* Super easy to install. No coding or technical knowledge needed #nocode
|
32 |
+
* Free to use forever
|
33 |
+
* Designed to save you time as an out-of-box solution (including many Ecommerce stores)
|
34 |
+
* Protects the privacy of your users
|
35 |
+
* GDPR Manager
|
36 |
+
* No data sampling
|
37 |
+
* Opportunities to extend with an ever-growing marketplace
|
38 |
+
* Supports over 50 languages
|
39 |
+
* Comes equipped with Matomo Tag Manager
|
40 |
+
|
41 |
+
**How Matomo focuses on privacy:**
|
42 |
+
|
43 |
+
* Superb user privacy protection
|
44 |
+
* Heaps of features to anonymize data and IP addresses
|
45 |
+
* WP shortcode to embed an opt-out feature into your website
|
46 |
+
* Features to export and delete data for GDPR
|
47 |
+
* Ability to configure data retention
|
48 |
+
|
49 |
+
**Ultimately, Matomo lets you:** learn who your customers are and their needs; understand what content works and how engaged your audience is; identify which marketing channels give you the highest ROI and invest with confidence in channels that convert for your business; and discover blockages and fix pain points for confused visitors to ensure they become satisfied customers.
|
50 |
+
|
51 |
+
**Features include:**
|
52 |
+
|
53 |
+
* Ecommerce features
|
54 |
+
* Campaign tracking
|
55 |
+
* Visitor profiles
|
56 |
+
* Tag Manager
|
57 |
+
* Dashboards
|
58 |
+
* Segmentation
|
59 |
+
* Real time reports
|
60 |
+
* Transitions
|
61 |
+
* Extensive geolocation reports / maps
|
62 |
+
* Many different visualisations
|
63 |
+
* Row evolution
|
64 |
+
* Report comparisons
|
65 |
+
* Export features
|
66 |
+
* See the most drastic changes within a given time period
|
67 |
+
* Supports WP Rest API
|
68 |
+
* And hundreds of other features
|
69 |
+
* Easily give your colleagues access to your reports if / when needed
|
70 |
+
* Easily exclude certain roles, visitors and pages from being tracked
|
71 |
+
* Supports WordPress Multisite. (Note: Tag Manager feature does not work in MultiSite.)
|
72 |
+
|
73 |
+
**[Premium paid features:](https://plugins.matomo.org/premium?wp=1)**
|
74 |
+
|
75 |
+
* Heatmaps & Session Recordings
|
76 |
+
* Form Analytics
|
77 |
+
* Media Analytics
|
78 |
+
* Funnels
|
79 |
+
* SEO features - Keyword rankings
|
80 |
+
* Custom reporting
|
81 |
+
* Cohorts
|
82 |
+
* Users flow
|
83 |
+
|
84 |
+
**Prerequisites and technical requirements:**
|
85 |
+
|
86 |
+
Running Matomo Analytics on your server can use significant resources. Whenever someone visits your WordPress website, your server will need to serve your WordPress pages to the user, as well as tracking the user journey in Matomo, resulting in an additional request for each page view.
|
87 |
+
|
88 |
+
* The minimum PHP memory limit is 128Mb, but we recommend to use a higher limit (memory_limit = 256M).
|
89 |
+
* PHP 7.2 at minimum is required.
|
90 |
+
* If you have high traffic website, or manage a lot of websites with WordPress MultiSite, we recommend installing [Matomo On-Premise](https://matomo.org/docs/installation/) or signup to [Matomo Cloud](https://matomo.org/hosting/) and install the [WP-Matomo plugin](https://wordpress.org/plugins/wp-piwik/) instead.
|
91 |
+
* Needing to know more before you install? Have a [read through the most popular FAQs to ensure you’re making the right choice for you](https://matomo.org/faq/wordpress/what-are-the-requirements-for-matomo-for-wordpress/).
|
92 |
+
|
93 |
+
Over 1 million websites in over 190 countries are using Matomo already. Join the revolution too! Install Matomo on your Wordpress website completely free and take back full control of your data!
|
94 |
+
|
95 |
+
**Third party resources we use:**
|
96 |
+
|
97 |
+
* After activating this plugin, it will download a Geolocation database (DBIP-City.mmdb) from [DB IP](https://db-ip.com/db/download/ip-to-city-lite?refid=mtm) into your uploads directory. The DB-IP database is distributed under the [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/). This database is needed to detect the location of your visitors based on their IP.
|
98 |
+
* When you enter a URL in the SEO ranking widget, then a request with the entered URL may be sent to Google, Alexa, Bing, and other SEO providers.
|
99 |
+
|
100 |
+
== Installation ==
|
101 |
+
* Install & activate the plugin.
|
102 |
+
* Go to "Matomo Analytics" in the WordPress Admin Dashboard.
|
103 |
+
* Click on "Activate tracking" in the "Get started" page.
|
104 |
+
* That's it! You can further customize the tracking in the settings page.
|
105 |
+
|
106 |
+
== Frequently Asked Questions ==
|
107 |
+
|
108 |
+
= Is there a demo available?
|
109 |
+
Yes, check out the online demo for Matomo at [demo.matomo.org](https://demo.matomo.org)
|
110 |
+
|
111 |
+
= Does Matomo care about security?
|
112 |
+
Security is a top priority at Matomo. As potential issues are discovered, we validate, patch and release fixes as quickly as we can. We have a security bug bounty program in place that rewards researchers for finding security issues and disclosing them to us.
|
113 |
+
[Learn more](https://matomo.org/security/) or check out our [HackerOne program](https://hackerone.com/matomo).
|
114 |
+
|
115 |
+
= How can I get involved?
|
116 |
+
We believe in liberating Web Analytics, providing a free platform for simple and advanced analytics. Matomo was built by dozens of people like you,
|
117 |
+
and we need your help to make Matomo better… Why not participate in a useful project today? [Learn how you can contribute to Matomo.](https://matomo.org/get-involved)
|
118 |
+
|
119 |
+
= How do you ensure quality?
|
120 |
+
The Matomo project uses an ever-expanding comprehensive set of thousands of unit tests and hundreds of automated integration tests, system tests, JavaScript tests, and screenshot UI tests, running on a continuous integration server as part of its software quality assurance. [Learn more](https://developer.matomo.org/guides/tests)
|
121 |
+
|
122 |
+
= Can I disable the Tag Manager?
|
123 |
+
The Tag Manager can be disabled by placing `define('MATOMO_ENABLE_TAG_MANAGER', false);` in your `wp-config.php`.
|
124 |
+
|
125 |
+
The Tag Manager does currently not work in WP Multisite mode.
|
126 |
+
|
127 |
+
= Which MySQL versions are supported?
|
128 |
+
Matomo should run on most MySQL versions. However, we only support MySQL 5.5 and newer. It should also work with MariaDB and other MySQL compatible databases.
|
129 |
+
|
130 |
+
= Which browsers do you support?
|
131 |
+
* Tracking: We support pretty much all browsers even very old browsers
|
132 |
+
* Admin: The Matomo UI does not support IE9 or older.
|
133 |
+
|
134 |
+
= What are your contact details?
|
135 |
+
Website: [matomo.org](https://matomo.org)
|
136 |
+
About us: [matomo.org/team/](https://matomo.org/team/)
|
137 |
+
Contact us: [matomo.org/contact/](https://matomo.org/contact/)
|
138 |
+
|
139 |
+
= Where do I find all other available FAQs? =
|
140 |
+
|
141 |
+
Needing to know more? [Click here to view all of our FAQs on our website](https://matomo.org/faq/wordpress/)
|
142 |
+
|
143 |
+
== Credits ==
|
144 |
+
|
145 |
+
* The entire Matomo team and everyone who contributed
|
146 |
+
* André Bräkling who is the Author of the [WP-Matomo plugin](https://github.com/braekling/WP-Matomo)
|
147 |
+
|
148 |
+
== Screenshots ==
|
149 |
+
|
150 |
+
1. Customizable Matomo Dashboard. Choose from many widgets and adjust layout.
|
151 |
+
2. Visits log. See every action your visitors took.
|
152 |
+
3. Behaviour insights.
|
153 |
+
4. Acquisition insights.
|
154 |
+
5. Ecommerce insights.
|
155 |
+
6. Configure tracking code without developer knowledge.
|
156 |
+
7. Easily give your co-workers access to your Matomo reports.
|
157 |
+
8. Define who and what should not be tracked.
|
158 |
+
9. Options to anonymize data so you don't track personal data.
|
159 |
+
10. Automatically delete old data you no longer need to be privacy compliant and to free your server from not needed data.
|
160 |
+
11. Summary page for getting a quick overview.
|