Browse Source

* add matomo support (js&php)

pull/498/head
lltodoll 4 years ago
parent
commit
aa855a1c9d
25 changed files with 2463 additions and 12 deletions
  1. +5
    -0
      lang/de_DE.ini
  2. +6
    -1
      lang/en_US.ini
  3. +6
    -1
      lang/es_ES.ini
  4. +5
    -0
      lang/fr_FR.ini
  5. +6
    -1
      lang/hu_HU.ini
  6. +5
    -0
      lang/id_ID.ini
  7. +6
    -1
      lang/it_IT.ini
  8. +5
    -0
      lang/ko_KO.ini
  9. +5
    -0
      lang/ms_MY.ini
  10. +7
    -2
      lang/nl_NL.ini
  11. +6
    -1
      lang/pl_PL.ini
  12. +6
    -1
      lang/pt_BR.ini
  13. +6
    -1
      lang/ru_RU.ini
  14. +6
    -1
      lang/sv_SE.ini
  15. +6
    -1
      lang/tr_TR.ini
  16. +6
    -1
      lang/zh_TW.ini
  17. +48
    -0
      system/admin/views/config-widget.html.php
  18. +116
    -0
      system/includes/functions.php
  19. +2201
    -0
      system/plugins/matomo/MatomoTracker.php
  20. +1
    -0
      themes/blog/layout.html.php
  21. +1
    -0
      themes/clean/layout.html.php
  22. +1
    -0
      themes/logs/layout.html.php
  23. +1
    -0
      themes/readable/layout.html.php
  24. +1
    -0
      themes/twentyfifteen/layout.html.php
  25. +1
    -0
      themes/twentysixteen/layout.html.php

+ 5
- 0
lang/de_DE.ini View File

@ -248,3 +248,8 @@ Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Yes I'm in"
Nope="Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Seiten ID"
Matomo_Tracking="Tracking Methode"

+ 6
- 1
lang/en_US.ini View File

@ -247,4 +247,9 @@ Page_generation_time="Page generation time"
Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Yes I'm in"
Nope="Nope"
Nope="Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 6
- 1
lang/es_ES.ini View File

@ -246,4 +246,9 @@ Page_generation_time="Page generation time"
Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Yes I'm in"
Nope="Nope"
Nope="Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 5
- 0
lang/fr_FR.ini View File

@ -248,3 +248,8 @@ Github_pre_release="Pré-release Github"
Pre_release="Pré-release"
Yes_Im_in="Oui, je suis prêt"
Nope="Non !"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 6
- 1
lang/hu_HU.ini View File

@ -247,4 +247,9 @@ Page_generation_time="Page generation time"
Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Yes I'm in"
Nope="Nope"
Nope="Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 5
- 0
lang/id_ID.ini View File

@ -248,3 +248,8 @@ Github_pre_release="Pra-rilis Github"
Pre_release="Pra-rilis"
Yes_Im_in="Ya, saya ikut"
Nope="Nggak"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 6
- 1
lang/it_IT.ini View File

@ -247,4 +247,9 @@ Page_generation_time="Page generation time"
Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Yes I'm in"
Nope="Nope"
Nope="Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 5
- 0
lang/ko_KO.ini View File

@ -248,3 +248,8 @@ Github_pre_release = "Github에서의 시험판"
Pre_release = "사전 출시"
Yes_Im_in = "그래, 난에있어"
Nope = "아니"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 5
- 0
lang/ms_MY.ini View File

@ -248,3 +248,8 @@ Github_pre_release = "Github pra keluaran"
Pre_release = "Pra-release"
Yes_Im_in = "Ya saya setuju"
Nope = "Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 7
- 2
lang/nl_NL.ini View File

@ -207,7 +207,7 @@ post_your_post_slug="/bericht/uw-bericht-slug"
Meta_description_character="Meta beschrijving"
Breadcrumb_home_text="Breadcrumb home tekst"
Sitemap="Sitemap"
Valid_values_range_from_0_to_1.0._See="Geldige waarden variëren van 0,0 tot 1,0. Zie"
Valid_values_range_from_0_to_1.0._See="Geldige waarden variëren van 0,0 tot 1,0. Zie"
hint_Use_CtrlCMDF_to_search_for_your_config_key_or_value="<u>hint:</u> Use <code>Ctrl</code>/<code>CMD</code> + <code>F</code> to search for your config key or value."
pro_tips_You_can_creating_custom_config_key_and_print_out_your_config_key_value_anywhere_in_your_template="<u>pro tips:</u> You can creating custom config key and print out your config key value anywhere in your template."
your_key="your.key"
@ -247,4 +247,9 @@ Page_generation_time="Generatietijd pagina"
Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Ja, ik doe mee"
Nope="Nietes"
Nope="Nietes"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 6
- 1
lang/pl_PL.ini View File

@ -248,4 +248,9 @@ Page_generation_time="Page generation time"
Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Yes I'm in"
Nope="Nope"
Nope="Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 6
- 1
lang/pt_BR.ini View File

@ -247,4 +247,9 @@ Page_generation_time="Tempo de geração da página"
Github_pre_release="Pré-lançamento do Github"
Pre_release="Pré-lançamento"
Yes_Im_in="Sim, estou dentro"
Nope="Não"
Nope="Não"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 6
- 1
lang/ru_RU.ini View File

@ -248,4 +248,9 @@ Page_generation_time="Page generation time"
Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Yes I'm in"
Nope="Nope"
Nope="Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 6
- 1
lang/sv_SE.ini View File

@ -265,4 +265,9 @@ Page_generation_time="Page generation time"
Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Yes I'm in"
Nope="Nope"
Nope="Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 6
- 1
lang/tr_TR.ini View File

@ -247,4 +247,9 @@ Page_generation_time="Page generation time"
Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Yes I'm in"
Nope="Nope"
Nope="Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 6
- 1
lang/zh_TW.ini View File

@ -247,4 +247,9 @@ Page_generation_time="Page generation time"
Github_pre_release="Github pre-release"
Pre_release="Pre-release"
Yes_Im_in="Yes I'm in"
Nope="Nope"
Nope="Nope"
Matomo="Matomo"
Matomo_URL="Server"
Matomo_Token="Token"
Matomo_ID="Page ID"
Matomo_Tracking="Tracking Method"

+ 48
- 0
system/admin/views/config-widget.html.php View File

@ -150,6 +150,53 @@
<small><em><?php echo i18n('For_google_site_verification_meta');?></em></small>
</div>
</div>
<br>
<h4><?php echo i18n('Matomo');?></h4>
<hr>
<div class="form-group row">
<label for="matamo.url" class="col-sm-2 col-form-label"><?php echo i18n('Matomo_URL');?></label>
<div class="col-sm-10">
<input type="text" name="-config-matomo.url" class="form-control" id="matomo.url" value="<?php echo valueMaker(config('matomo.url'));?>" placeholder="https://matomo.org/">
</div>
</div>
<div class="form-group row">
<label for="matomo.token" class="col-sm-2 col-form-label"><?php echo i18n('Matomo_Token');?></label>
<div class="col-sm-10">
<input type="text" name="-config-matomo.token" class="form-control" id="matomo.token" value="<?php echo valueMaker(config('matomo.token'));?>" placeholder="1234567890">
</div>
</div>
<div class="form-group row">
<label for="matomo.id" class="col-sm-2 col-form-label"><?php echo i18n('Matomo_ID');?></label>
<div class="col-sm-10">
<input type="text" name="-config-matomo.id" class="form-control" id="matomo.id" value="<?php echo valueMaker(config('matomo.id'));?>" placeholder="1">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label"><?php echo i18n('Matomo_Tracking');?></label>
<div class="col-sm-10">
<div class="col-sm-10">
<div class="form-check">
<input class="form-check-input" type="radio" name="-config-matomo.tracking" id="matomo.tracking1" value="disable" <?php if (config('matomo.tracking') === 'disable'):?>checked<?php endif;?>>
<label class="form-check-label" for="matomo.tracking1">
<?php echo i18n('Disabled');?>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="-config-matomo.tracking" id="matomo.tracking2" value="javascript" <?php if (config('matomo.tracking') === 'javascript'):?>checked<?php endif;?>>
<label class="form-check-label" for="matomo.tracking2">
Javascript
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="-config-matomo.tracking" id="matomo.tracking3" value="php" <?php if (config('matomo.tracking') === 'php'):?>checked<?php endif;?>>
<label class="form-check-label" for="matomo.tracking3">
PHP
</label>
</div>
</div>
</div>
</div>
<br>
<h4><?php echo i18n('Social_Media');?></h4>
<hr>
@ -170,4 +217,5 @@
<button type="submit" class="btn btn-primary"><?php echo i18n('Save_Config');?></button>
</div>
</div>
</form>

+ 116
- 0
system/includes/functions.php View File

@ -5,6 +5,7 @@ use \Michelf\MarkdownExtra;
use \Suin\RSSWriter\Feed;
use \Suin\RSSWriter\Channel;
use \Suin\RSSWriter\Item;
use function Composer\Autoload\includeFile;
// Get blog post path. Unsorted. Mostly used on widget.
function get_post_unsorted()
@ -2021,6 +2022,121 @@ EOF;
}
}
// Matomo
function matomo($title)
{
$matomoURL = config('matomo.url');
$matomoToken = config('matomo.token');
$matomoID = config('matomo.id');
$matomoTracking = config('matomo.tracking');
if($matomoTracking == 'disable')
{
return;
}
if(empty($matomoURL) || empty($matomoTracking) || empty($matomoID))
{
error_log("Please set all Matomo configuration values", 0);
return;
}
if($matomoTracking == 'javascript')
{
$jsURL = $matomoURL;
$imageURL = $matomoURL;
// remove http | https
if (startsWith($matomoURL, 'https'))
{
$jsURL = replace_first_str('https', '', $matomoURL);
}
else if (startsWith($matomoURL, 'http'))
{
$jsURL = replace_first_str('http', '', $matomoURL);
}
if(!endsWith($matomoURL, '/'))
{
$jsURL = $jsURL . '/';
$imageURL = $imageURL . "/";
}
$script = <<<EOF
<script type="text/javascript">
var _paq = window._paq || [];
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="{$jsURL}";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '{$matomoID}']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript><p><img src="{$imageURL}matomo.php?idsite={$matomoID}&amp;rec=1" style="border:0;" alt="" /></p></noscript>
EOF;
return $script;
}
else if($matomoTracking == 'php')
{
$url = $matomoURL;
if(empty($matomoToken))
{
error_log("Please set Matomo Token for PHP Tracking Method", 0);
return;
}
require_once ('system/plugins/matomo/MatomoTracker.php');
MatomoTracker::$URL = $url;
// Matomo object
$matomoTracker = new MatomoTracker((int) $matomoID, $url);
// TODO: async request without waiting?!
$matomoTracker->setRequestTimeout(10);
// Set authentication token
$matomoTracker->setTokenAuth($matomoToken);
// Track page view
$matomoTracker->doTrackPageView($title);
}
}
function startsWith($haystack, $needle, $case = true)
{
if ($case)
{
return (strcmp(substr($haystack, 0, strlen($needle)), $needle) === 0);
}
return (strcasecmp(substr($haystack, 0, strlen($needle)), $needle) === 0);
}
function endsWith($haystack, $needle, $case = true)
{
if ($case)
{
return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0);
}
return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0);
}
function replace_first_str($search_str, $replacement_str, $src_str)
{
return (false !== ($pos = strpos($src_str, $search_str))) ? substr_replace($src_str, $replacement_str, $pos, strlen($search_str)) : $src_str;
}
function slashUrl($url) {
return rtrim($url, '/') . '/';
}


+ 2201
- 0
system/plugins/matomo/MatomoTracker.php
File diff suppressed because it is too large
View File


+ 1
- 0
themes/blog/layout.html.php View File

@ -192,5 +192,6 @@
<script type="text/javascript" src="<?php echo site_url();?>themes/blog/js/jquery-latest.min.js"></script>
<script type="text/javascript" src="<?php echo site_url();?>themes/blog/js/bootstrap.min.js"></script>
<?php if (analytics()): ?><?php echo analytics() ?><?php endif; ?>
<?php if (matomo($title)): ?><?php echo matomo($title) ?><?php endif; ?>
</body>
</html>

+ 1
- 0
themes/clean/layout.html.php View File

@ -45,5 +45,6 @@
<?php echo content() ?>
</section>
<?php if (analytics()): ?><?php echo analytics() ?><?php endif; ?>
<?php if (matomo($title)): ?><?php echo matomo($title) ?><?php endif; ?>
</body>
</html>

+ 1
- 0
themes/logs/layout.html.php View File

@ -93,5 +93,6 @@
</div>
</div>
<?php if (analytics()): ?><?php echo analytics() ?><?php endif; ?>
<?php if (matomo($title)): ?><?php echo matomo($title) ?><?php endif; ?>
</body>
</html>

+ 1
- 0
themes/readable/layout.html.php View File

@ -58,5 +58,6 @@
</div>
</div>
<?php if (analytics()): ?><?php echo analytics() ?><?php endif; ?>
<?php if (matomo($title)): ?><?php echo matomo($title) ?><?php endif; ?>
</body>
</html>

+ 1
- 0
themes/twentyfifteen/layout.html.php View File

@ -132,6 +132,7 @@
<script type="text/javascript" src="<?php echo site_url();?>themes/twentyfifteen/js/functions.js"></script>
<script type="text/javascript" src="<?php echo site_url();?>themes/twentyfifteen/js/skip-link-focus-fix.js"></script>
<?php if (analytics()): ?><?php echo analytics() ?><?php endif; ?>
<?php if (matomo($title)): ?><?php echo matomo($title) ?><?php endif; ?>
</body>
</html>

+ 1
- 0
themes/twentysixteen/layout.html.php View File

@ -157,5 +157,6 @@
</script>
<script type="text/javascript" src="<?php echo site_url();?>themes/twentysixteen/js/functions.js"></script>
<?php if (analytics()): ?><?php echo analytics() ?><?php endif; ?>
<?php if (matomo($title)): ?><?php echo matomo($title) ?><?php endif; ?>
</body>
</html>

Loading…
Cancel
Save