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

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Giehl <stefan@matomo.org>2022-05-05 04:59:00 +0300
committerGitHub <noreply@github.com>2022-05-05 04:59:00 +0300
commit0e41d7e28ae063ca6117cb00d73f1c6a2b1a8436 (patch)
treedcf3619e82a03e882e29df890bb225f1fa915654 /plugins
parent4c7a49e37f7f03486efbb372dd5a720439d68ff6 (diff)
Remove Alexa page rank from SEO plugin (#19171)
* Remove Alexa page rank from SEO plugin * updates expected UI files
Diffstat (limited to 'plugins')
-rw-r--r--plugins/SEO/API.php9
-rw-r--r--plugins/SEO/Metric/Aggregator.php10
-rw-r--r--plugins/SEO/Metric/Alexa.php65
-rw-r--r--plugins/SEO/config/config.php3
-rw-r--r--plugins/SEO/config/tracker.php5
-rw-r--r--plugins/SEO/config/ui-test.php18
-rw-r--r--plugins/SEO/lang/en.json3
-rw-r--r--plugins/SEO/tests/Integration/SEOTest.php12
-rw-r--r--plugins/SEO/tests/UI/SeoWidget_spec.js3
-rw-r--r--plugins/SEO/tests/UI/expected-ui-screenshots/SeoWidgetTest_widget.pngbin29157 -> 25383 bytes
-rw-r--r--plugins/SEO/tests/resources/alexa_response.html306
11 files changed, 30 insertions, 404 deletions
diff --git a/plugins/SEO/API.php b/plugins/SEO/API.php
index 73ddc960fc..ce207969e8 100644
--- a/plugins/SEO/API.php
+++ b/plugins/SEO/API.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -23,7 +24,7 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/Referrers/functions.php';
/**
* The SEO API lets you access a list of SEO metrics for the specified URL: Google PageRank, Google/Bing indexed pages
- * Alexa Rank and age of the Domain name.
+ * and age of the Domain name.
*
* @method static API getInstance()
*/
@@ -63,7 +64,7 @@ class API extends \Piwik\Plugin\API
*/
private function toDataTable(array $metrics)
{
- $translated = array();
+ $translated = [];
foreach ($metrics as $metric) {
if (!$metric instanceof Metric) {
@@ -71,14 +72,14 @@ class API extends \Piwik\Plugin\API
}
$label = Piwik::translate($metric->getName());
- $translated[$label] = array(
+ $translated[$label] = [
'id' => $metric->getId(),
'rank' => $metric->getValue(),
'logo' => $metric->getLogo(),
'logo_link' => $metric->getLogoLink(),
'logo_tooltip' => Piwik::translate($metric->getLogoTooltip()),
'rank_suffix' => Piwik::translate($metric->getValueSuffix()),
- );
+ ];
}
return DataTable::makeFromIndexedArray($translated);
diff --git a/plugins/SEO/Metric/Aggregator.php b/plugins/SEO/Metric/Aggregator.php
index 2059464af6..cf73f247e7 100644
--- a/plugins/SEO/Metric/Aggregator.php
+++ b/plugins/SEO/Metric/Aggregator.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -28,7 +29,7 @@ class Aggregator implements MetricsProvider
public function getMetrics($domain)
{
- $metrics = array();
+ $metrics = [];
foreach ($this->providers as $provider) {
$metrics = array_merge($metrics, $provider->getMetrics($domain));
@@ -44,19 +45,18 @@ class Aggregator implements MetricsProvider
{
$container = StaticContainer::getContainer();
- $providers = array(
+ $providers = [
$container->get('Piwik\Plugins\SEO\Metric\Google'),
$container->get('Piwik\Plugins\SEO\Metric\Bing'),
- $container->get('Piwik\Plugins\SEO\Metric\Alexa'),
$container->get('Piwik\Plugins\SEO\Metric\DomainAge'),
- );
+ ];
/**
* Use this event to register new SEO metrics providers.
*
* @param array $providers Contains an array of Piwik\Plugins\SEO\Metric\MetricsProvider instances.
*/
- Piwik::postEvent('SEO.getMetricsProviders', array(&$providers));
+ Piwik::postEvent('SEO.getMetricsProviders', [&$providers]);
return $providers;
}
diff --git a/plugins/SEO/Metric/Alexa.php b/plugins/SEO/Metric/Alexa.php
deleted file mode 100644
index c0ae41854a..0000000000
--- a/plugins/SEO/Metric/Alexa.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-/**
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-namespace Piwik\Plugins\SEO\Metric;
-
-use Piwik\Http;
-use Piwik\NumberFormatter;
-use Piwik\Piwik;
-use Psr\Log\LoggerInterface;
-
-/**
- * Retrieves the Alexa rank.
- */
-class Alexa implements MetricsProvider
-{
- const URL = 'https://www.alexa.com/minisiteinfo/';
- const LINK = 'https://www.alexa.com/siteinfo/';
-
- /**
- * @var LoggerInterface
- */
- private $logger;
-
- public function __construct(LoggerInterface $logger)
- {
- $this->logger = $logger;
- }
-
- public function getMetrics($domain)
- {
- $value = null;
- $suffix = 'General_Pages';
- try {
- $response = Http::sendHttpRequest(self::URL . urlencode($domain ?? ''), $timeout = 10, @$_SERVER['HTTP_USER_AGENT']);
- libxml_use_internal_errors(true); // suppress errors
- $dom = new \DomDocument();
- $dom->loadHTML($response);
- libxml_clear_errors();
- $nodes = (new \DomXPath($dom))->query("//div[contains(@class, 'ACard')]//section//a");
- if (isset($nodes[0]->nodeValue)) {
- foreach( $nodes[0]->childNodes as $node) {
- $nodes[0]->removeChild($node); // remove the span tags with additional info
- }
- $globalRanking = (int) str_replace(array(',', '.'), '', $nodes[0]->nodeValue);
- $value = NumberFormatter::getInstance()->formatNumber($globalRanking);
- }
- } catch (\Exception $e) {
- $this->logger->info('Error while getting Alexa SEO stats: {message}', array('message' => $e->getMessage()));
- $value = Piwik::translate('General_ErrorTryAgain');
- $suffix = '';
- }
-
- $logo = "plugins/Morpheus/icons/dist/SEO/alexa.com.png";
- $link = self::LINK . urlencode($domain ?? '');
-
- return array(
- new Metric('alexa', 'SEO_AlexaRank', $value, $logo, $link, null, $suffix)
- );
- }
-}
diff --git a/plugins/SEO/config/config.php b/plugins/SEO/config/config.php
index d266508bcd..0b67a5fe47 100644
--- a/plugins/SEO/config/config.php
+++ b/plugins/SEO/config/config.php
@@ -1,2 +1,3 @@
<?php
-return array();
+
+return [];
diff --git a/plugins/SEO/config/tracker.php b/plugins/SEO/config/tracker.php
index ca2affec34..0b67a5fe47 100644
--- a/plugins/SEO/config/tracker.php
+++ b/plugins/SEO/config/tracker.php
@@ -1,2 +1,3 @@
-<?php
-return array();
+<?php
+
+return [];
diff --git a/plugins/SEO/config/ui-test.php b/plugins/SEO/config/ui-test.php
index ebccc69319..5f4152ede9 100644
--- a/plugins/SEO/config/ui-test.php
+++ b/plugins/SEO/config/ui-test.php
@@ -1,24 +1,20 @@
<?php
-
-return array(
+return [
'observers.global' => \DI\add([
['Http.sendHttpRequest',\DI\value(function ($aUrl, $httpEventParams, &$response, &$status, &$headers) {
// fake responses for SEO metric requests
- if (strpos($aUrl, 'www.alexa.com') ) {
- $response = file_get_contents(PIWIK_INCLUDE_PATH . '/plugins/SEO/tests/resources/alexa_response.html');
- } elseif (strpos($aUrl, 'www.bing.com') ) {
+ if (strpos($aUrl, 'www.bing.com')) {
$response = file_get_contents(PIWIK_INCLUDE_PATH . '/plugins/SEO/tests/resources/bing_response.html');
- } elseif (strpos($aUrl, 'archive.org') ) {
+ } elseif (strpos($aUrl, 'archive.org')) {
$response = '{"timestamp": "19900101", "url": "matomo.org", "archived_snapshots": {"closest": {"timestamp": "20180109155124", "available": true, "status": "200", "url": "http://web.archive.org/web/20180109155124/https://matomo.org"}}}';
- } elseif (strpos($aUrl, 'www.who.is') ) {
+ } elseif (strpos($aUrl, 'www.who.is')) {
$response = file_get_contents(PIWIK_INCLUDE_PATH . '/plugins/SEO/tests/resources/whois_response.html');
- } elseif (strpos($aUrl, 'www.whois.com') ) {
+ } elseif (strpos($aUrl, 'www.whois.com')) {
$response = file_get_contents(PIWIK_INCLUDE_PATH . '/plugins/SEO/tests/resources/whoiscom_response.html');
- } elseif (strpos($aUrl, 'www.google.com') ) {
+ } elseif (strpos($aUrl, 'www.google.com')) {
$response = file_get_contents(PIWIK_INCLUDE_PATH . '/plugins/SEO/tests/resources/google_response.html');
}
})]
]),
-
-);
+];
diff --git a/plugins/SEO/lang/en.json b/plugins/SEO/lang/en.json
index eb6ff829c1..7a16436e33 100644
--- a/plugins/SEO/lang/en.json
+++ b/plugins/SEO/lang/en.json
@@ -1,7 +1,6 @@
{
"SEO": {
- "PluginDescription": "This Plugin extracts and displays SEO metrics: Alexa web ranking, Google Pagerank, number of Indexed pages and backlinks of the currently selected website.",
- "AlexaRank": "Alexa Rank",
+ "PluginDescription": "This Plugin extracts and displays SEO metrics: Google Pagerank, number of Indexed pages and backlinks of the currently selected website.",
"Bing_IndexedPages": "Bing indexed pages",
"DomainAge": "Domain Age",
"Google_IndexedPages": "Google indexed pages",
diff --git a/plugins/SEO/tests/Integration/SEOTest.php b/plugins/SEO/tests/Integration/SEOTest.php
index 75de0b7490..80111140ab 100644
--- a/plugins/SEO/tests/Integration/SEOTest.php
+++ b/plugins/SEO/tests/Integration/SEOTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -26,8 +27,8 @@ class SEOTest extends IntegrationTestCase
parent::setUp();
// setup the access layer
- FakeAccess::setIdSitesView(array(1, 2));
- FakeAccess::setIdSitesAdmin(array(3, 4));
+ FakeAccess::setIdSitesView([1, 2]);
+ FakeAccess::setIdSitesAdmin([3, 4]);
//finally we set the user as a Super User by default
FakeAccess::$superUser = true;
@@ -38,7 +39,7 @@ class SEOTest extends IntegrationTestCase
/**
* tell us when the API is broken
*/
- public function test_API()
+ public function testAPI()
{
$dataTable = API::getInstance()->getRank('http://matomo.org/');
$renderer = Renderer::factory('json');
@@ -55,9 +56,8 @@ class SEOTest extends IntegrationTestCase
public function provideContainerConfig()
{
- return array(
+ return [
'Piwik\Access' => new FakeAccess()
- );
+ ];
}
-
}
diff --git a/plugins/SEO/tests/UI/SeoWidget_spec.js b/plugins/SEO/tests/UI/SeoWidget_spec.js
index b65927b182..71387ec123 100644
--- a/plugins/SEO/tests/UI/SeoWidget_spec.js
+++ b/plugins/SEO/tests/UI/SeoWidget_spec.js
@@ -1,6 +1,6 @@
/*!
* Matomo - free/libre analytics platform
- *
+ *
* Seo widget screenshot tests.
*
* @link https://matomo.org
@@ -23,7 +23,6 @@ describe("SeoWidgetTest", function () {
await page.goto(url);
await page.evaluate(function () {
$('td:last div').text('3 years 78 days');
- $('td:contains(Alexa)').next().children('div').text('25,558');
});
expect(await page.screenshotSelector('.widget')).to.matchImage('widget');
});
diff --git a/plugins/SEO/tests/UI/expected-ui-screenshots/SeoWidgetTest_widget.png b/plugins/SEO/tests/UI/expected-ui-screenshots/SeoWidgetTest_widget.png
index 8d218d7c5c..b074741b39 100644
--- a/plugins/SEO/tests/UI/expected-ui-screenshots/SeoWidgetTest_widget.png
+++ b/plugins/SEO/tests/UI/expected-ui-screenshots/SeoWidgetTest_widget.png
Binary files differ
diff --git a/plugins/SEO/tests/resources/alexa_response.html b/plugins/SEO/tests/resources/alexa_response.html
deleted file mode 100644
index d60cc3df00..0000000000
--- a/plugins/SEO/tests/resources/alexa_response.html
+++ /dev/null
@@ -1,306 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta name="robots" content="noindex">
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>matomo.org Site Overview from Alexa</title><style type="text/css">/*<![CDATA[*/
-/* reset.css v1.0 | 20080212 from: http://meyerweb.com/eric/tools/css/reset/ */
-body#alx_traffic_body, #alx_traffic div, #alx_traffic span, #alx_traffic applet, #alx_traffic object, #alx_traffic iframe,
-#alx_traffic h1, #alx_traffic h2, #alx_traffic h3, #alx_traffic h4, #alx_traffic h5, #alx_traffic h6, #alx_traffic p, #alx_traffic blockquote, #alx_traffic pre,
-#alx_traffic a, #alx_traffic abbr, #alx_traffic acronym, #alx_traffic address, #alx_traffic big, #alx_traffic cite, #alx_traffic code,
-#alx_traffic del, #alx_traffic dfn, #alx_traffic em, #alx_traffic font, #alx_traffic img, #alx_traffic ins, #alx_traffic kbd, #alx_traffic q, #alx_traffic s, #alx_traffic samp,
-#alx_traffic small, #alx_traffic strike, #alx_traffic strong, #alx_traffic sub, #alx_traffic sup, #alx_traffic tt, #alx_traffic var,
-#alx_traffic b, #alx_traffic u, #alx_traffic i, #alx_traffic center,
-#alx_traffic dl, #alx_traffic dt, #alx_traffic dd, #alx_traffic ol, #alx_traffic ul, #alx_traffic li,
-#alx_traffic fieldset, #alx_traffic form, #alx_traffic label, #alx_traffic legend,
-#alx_traffic table, #alx_traffic caption, #alx_traffic tbody, #alx_traffic tfoot, #alx_traffic thead, #alx_traffic tr, #alx_traffic th, #alx_traffic td {
- margin: 0;
- padding: 0;
- border: 0;
- outline: 0;
- font-size: 100%;
- vertical-align: baseline;
- background: transparent;
-}
-#alx_traffic {
- background: #eff2f7;
- border: 1px solid #b0bfd7;
- color: #333;
- font-size: 12px;
- font-family:Verdana, Geneva, sans-serif;
- line-height: 14px;
- margin: 0 auto;
- padding: 6px 6px 12px 6px;
- position: relative;
- top: 10px;
- word-wrap: break-word;
-}
-#alx_traffic_body.chrome {
- background: #eff2f7;
-}
-#alx_traffic_body.chrome #alx_traffic {
- border: 0;
-}
-#alx_traffic ul {
- list-style: none;
-}
-#alx_traffic blockquote, #alx_traffic q {
- quotes: none;
-}
-#alx_traffic blockquote:before, #alx_traffic blockquote:after,
-#alx_traffic q:before, #alx_traffic q:after {
- content: '';
- content: none;
-}
-/* remember to define focus styles! */
-#alx_traffic :focus {
- outline: 0;
-}
-/* remember to highlight inserts somehow! */
-#alx_traffic ins {
- text-decoration: none;
-}
-#alx_traffic del {
- text-decoration: line-through;
-}
-/* tables still need 'cellspacing="0"' in the markup */
-#alx_traffic table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-/* end reset.css */
-#alx_traffic h1 {
- color:#000;
-}
-#alx_traffic h2 {
- color:rgb(37,55,89); /*#507EA1; */
-}
-#alx_traffic h3, #alx_traffic h5 {
- color:rgb(37,55,89); /*#507EA1;*/
-}
-#alx_traffic h4 {
- color:rgb(89,82,79); /*#738040; */
-}
-#alx_traffic h6 {
- color:#507EA1;
-}
-#alx_traffic ul, #alx_traffic ol, #alx_traffic dl, #alx_traffic blockquote, #alx_traffic cite {
- color:#404053;
-}
-#alx_traffic a, #alx_traffic .searchLink {text-decoration:none; color: #039}
-#alx_traffic a:visited {text-decoration:none; color: #993366}
-#alx_traffic a:hover, #alx_traffic a:active {color:#c60;text-decoration:underline;}
-#alx_traffic h3 a, #alx_traffic a h3 {color: #0033CC}
-/* --- FONT SIZES --- */
-#alx_traffic h1 {
- padding-top: 5px;
-}
-#alx_traffic h1, #alx_traffic h2, #alx_traffic h3, #alx_traffic h4, #alx_traffic h5, #alx_traffic h6 {
- font-family: "Lucida Grande",Geneva, Verdana,Arial, sans-serif;
- font-size: 100%;
- font-weight: normal;
-}
-#alx_traffic h1 {font-size:1.3em; /* 24pt */
-}
-#alx_traffic h2 {font-size:1.2em; /* 22pt */
- padding: 0;
-}
-#alx_traffic h3 {font-size:1.125em; /* 18pt */
- line-height:1.25;
- margin: 24px 0 0;
-}
-#alx_traffic a, #alx_traffic button {
- cursor: pointer;
-}
-#alx_traffic a:hover {
- text-decoration:none;
-}
-/* basic list styling - more-styled lists in list.css */
-#alx_traffic ul, #alx_traffic dl, #alx_traffic ol {
- margin:0 0 .75em 0; /* lists without specific classes */
- line-height:1.5;}
-#alx_traffic li, #alx_traffic dd {
- padding:0em 0; /* lists without specific classes */
-}
-#alx_traffic ol li {
- margin-left: 20px;
- vertical-align: top;
-}
-#alx_traffic dt {font-weight:bold;}
-#alx_traffic code {font-size:1.25em;}
-#alx_traffic * html code {font-size:1.1em;} /* default size is smaller in IE */
-#alx_traffic img {
- border:0;
- margin-bottom: 2px;
-}
-#alx_traffic #alx_traffic_content_rank_change_img {
- float: left;
-}
-#alx_traffic .date {
- font-size: .8em;
-}
-/* basic table styling - more-styled tables in tables.css */
-#alx_traffic table caption {
- font-weight:bold;
- font-size:1em;
- margin-top:.6em;
-}
-#alx_traffic table th {
- padding: .3em .5em .3em .5em;
- /*border-bottom:2px solid #069;*/
-}
-#alx_traffic #siteStats {
- border-collapse:collapse;
- width: 100%;
-}
-#alx_traffic #siteStats td {
- border-right: 1px solid #ddd;
- padding: 4px 10px;
- text-align: center;
- vertical-align: bottom;
-}
-#alx_traffic #siteStats.chrome td {
- border-right: 1px solid #ccc;
- border-top: 1px solid #ccc;
- padding: 14px 10px;
- vertical-align: middle;
-}
-#alx_traffic #siteStats div.label {
- font-size: .9em;
- color: #777;
-}
-#alx_traffic .chrome .label {
- padding-top: 3px;
-}
-#alx_traffic #siteStats div.data {
- font-size: 1.3em;
- display: inline-block;
- white-space: nowrap;
-}
-#alx_traffic #siteStats div.up {color: #690;}
-#alx_traffic #siteStats div.down {color: #900;}
-#alx_traffic #siteStats div.steady {color: #660;}
-#alx_traffic #siteStats td.start {padding-left: 0;border-right:0;}
-#alx_traffic #siteStats td.end {border-right: 0;}
-/* MISC CLASSES */
-#alx_traffic .ch {cursor: pointer;}
-#alx_traffic .noborder {border: 0 !important;}
-#alx_traffic .textOn { }
-#alx_traffic .textOff {display: none;}
-#alx_traffic .alignright {float: right;}
-#alx_traffic .alignleft {float: left;}
-#alx_traffic .textRight {text-align: right;}
-#alx_traffic .offsite {
- background: url(/images/icons/external_link_gray2.png) top right no-repeat;
- padding: 0 16px 0 0;
-}
-#alx_traffic .small {
- font-size: 0.8em;
-}
-#alx_traffic .VeryFast {
- background: url('https://www.alexa.com/images/icons/hourglass-veryfast1.gif') top left no-repeat;
- color: #007236;
- padding: 2px 0 2px 14px;
-}
-#alx_traffic .Fast {
- background: url('https://www.alexa.com/images/icons/hourglass-fast1.gif') top left no-repeat;
- color: #617128;
- padding: 2px 0 2px 14px;
-}
-#alx_traffic .Average {
- background: url('https://www.alexa.com/images/icons/hourglass-average1.gif') top left no-repeat;
- color: #827b00;
- padding: 2px 0 2px 14px;
-}
-#alx_traffic .Slow {
- background: url('https://www.alexa.com/images/icons/hourglass-slow1.gif') top left no-repeat;
- color: #a3620a;
- padding: 2px 0 2px 14px;
-}
-#alx_traffic .VerySlow {
- background: url('https://www.alexa.com/images/icons/hourglass-veryslow1.gif') top left no-repeat;
- color: #9e0b0f;
- padding: 2px 0 2px 14px;
-}
-#alx_traffic .icon {
- background-position: top left;
- background-repeat: no-repeat;
- padding: 2px 0 2px 22px;
-}
-#alx_traffic .search {background-image: url('https://www.alexa.com/images/toolbar/icons/search.png');}
-#alx_traffic .related {background-image: url('https://www.alexa.com/images/toolbar/icons/related.png');}
-#alx_traffic .wayback {background-image: url('https://www.alexa.com/images/toolbar/icons/wayback.png');}
-#alx_traffic .site-title {font-size: 1.2em; margin-top: 2px;}
-#alx_traffic .rl {
- margin: 0 auto;
- overflow: hidden;
- width: 150px;
-}
-#alx_traffic .related-links {
- margin: 4px 0 0 16px;
- text-align: left;
-}
-#alx_traffic .related-links li {
- list-style: circle;
- white-space: nowrap;
-}
-#alx_traffic .btn-css{
- padding: 7px 7px 5px;
- color: #fff;
- font: normal 12px Helvetica, Arial, sans-serif;
- line-height: 100%;
- -moz-border-radius: 3px;
- border-radius: 3px;
- -moz-box-shadow: 0 1px 2px #000;
- -webkit-box-shadow: 0 1px 2px #000;
- box-shadow: 0 1px 2px #000;
- cursor: pointer;
-}
-#alx_traffic span.btn-css{
- display: inline-block;
-}
-#alx_traffic .btn-blue{
- background-color: #009ed0;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#009ed0', endColorstr='#0066a6');
- background: -moz-linear-gradient(#009ed0, #0066a6);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#009ed0), to(#0066a6));
-}
-/* not sure if we need this
-* html #alx_traffic {width: 800px;}
-*/
-/*]]>*/
-</style>
- <!-- NOTE: Firefox toolbar currently doesn't support external scripts so this is a no-op there. But it helps for IE. -->
- <script type="text/javascript" src="https://s3.amazonaws.com/com.alexa.toolbar/buttons/api.js"> </script>
- <script type="text/javascript" src="https://s3.amazonaws.com/com.alexa.toolbar/buttons/newalexa/newalexa_siteinfo.js"></script>
-</head>
-<body id="alx_traffic_body">
-<div id="alx_traffic">
- <img id="alx_traffic_arrow_right" alt="" src="https://s3.amazonaws.com/com.alexa.toolbar/buttons/twitter/update-arrow.gif"
- style="position: absolute; top: -10px; right: 5px;" />
- <div id="alx_traffic_content">
- <h2> Traffic stats for matomo.org</h2>
- <table id="siteStats">
- <tbody><tr>
- <td>
- <div class="data up"><a onclick="Alexa.browser.navigate('https://www.alexa.com/siteinfo/matomo.org#trafficstats', 'newTab', '', null); window.close(); "><img src="https://www.alexa.com/images/icons/globe-sm.png" alt="Global" style="margin-bottom:-2px;"/> 25,558</a></div>
- <div class="label">Alexa Traffic Rank</div>
- </td>
- <td>
- <div class="data"><a onclick="Alexa.browser.navigate('https://www.alexa.com/siteinfo/matomo.org#trafficstats', 'newTab', '', null); window.close();" title="United States"><img class="dynamic-icon" src="https://www.alexa.com/alx-sa-9c2fead3-1606247898/images/flags/us.png" alt="United States Flag"/>
- 18,004</a></div>
- <div class="label">Traffic Rank in <a onclick="Alexa.browser.navigate('https://www.alexa.com/topsites/countries/US', 'newTab', '', null); window.close();" title="United States">US</a></div>
- </td>
- <td class="end">
- <div class="data">
- <a onclick="Alexa.browser.navigate('https://www.alexa.com/site/linksin/matomo.org', 'newTab', '', null); window.close();">152</a>
- </div>
- <div class="label">Sites Linking In </div>
- </td>
- </tr></tbody>
- </table>
- </div>
-</div>
-</body>
-</html>