2011-09-25 08:56:03 +00:00
< ? php
/**
* Name : Piwik Analytics
2018-01-20 13:57:41 +00:00
* Description : Piwik Analytics Addon for Friendica
2016-07-28 14:32:05 +00:00
* Version : 1.3
2013-06-14 17:40:10 +00:00
* Author : Tobias Diekershoff < https :// f . diekershoff . de / profile / tobias >
2012-02-19 09:17:38 +00:00
* Author : Klaus Weidenbach
2011-09-25 08:56:03 +00:00
*/
2018-01-20 13:57:41 +00:00
/* Piwik Analytics Addon for Friendica
2011-09-25 08:56:03 +00:00
*
* Author : Tobias Diekershoff
* tobias . diekershoff @ gmx . net
*
2012-02-19 09:17:38 +00:00
* License : 3 - clause BSD license
2011-09-25 08:56:03 +00:00
*
* Configuration :
2014-08-11 07:07:25 +00:00
* Use the administration panel to configure the Piwik tracking addon , or
* in case you don ' t use this add the following lines to your . htconfig . php
* file :
2011-09-25 08:56:03 +00:00
*
* $a -> config [ 'piwik' ][ 'baseurl' ] = 'www.example.com/piwik/' ;
* $a -> config [ 'piwik' ][ 'siteid' ] = '1' ;
* $a -> config [ 'piwik' ][ 'optout' ] = true ; // set to false to disable
2012-02-19 09:17:38 +00:00
* $a -> config [ 'piwik' ][ 'async' ] = false ; // set to true to enable
2011-09-25 08:56:03 +00:00
*
2012-01-31 11:08:46 +00:00
* Change the siteid to the ID that the Piwik tracker for your Friendica
2011-09-25 08:56:03 +00:00
* installation has . Alter the baseurl to fit your needs , don ' t care
* about http / https but beware to put the trailing / at the end of your
* setting .
*/
2018-01-17 00:51:12 +00:00
use Friendica\Core\Addon ;
2017-11-06 23:55:24 +00:00
use Friendica\Core\Config ;
2018-01-22 19:03:11 +00:00
use Friendica\Core\L10n ;
2017-11-06 23:55:24 +00:00
2011-09-25 08:56:03 +00:00
function piwik_install () {
2018-01-17 00:51:12 +00:00
Addon :: registerHook ( 'page_end' , 'addon/piwik/piwik.php' , 'piwik_analytics' );
2011-09-25 08:56:03 +00:00
2018-01-20 13:57:41 +00:00
logger ( " installed piwik addon " );
2011-09-25 08:56:03 +00:00
}
function piwik_uninstall () {
2018-01-17 00:51:12 +00:00
Addon :: unregisterHook ( 'page_end' , 'addon/piwik/piwik.php' , 'piwik_analytics' );
2011-09-25 08:56:03 +00:00
2018-01-20 13:57:41 +00:00
logger ( " uninstalled piwik addon " );
2011-09-25 08:56:03 +00:00
}
function piwik_analytics ( $a , & $b ) {
/*
2018-01-20 13:57:41 +00:00
* styling of every HTML block added by this addon is done in the
2012-01-31 11:08:46 +00:00
* associated CSS file . We just have to tell Friendica to get it
2011-09-25 08:56:03 +00:00
* into the page header .
*/
2012-04-07 07:21:49 +00:00
$a -> page [ 'htmlhead' ] .= '<link rel="stylesheet" type="text/css" href="' . $a -> get_baseurl () . '/addon/piwik/piwik.css' . '" media="all" />' ;
2011-09-25 08:56:03 +00:00
/*
* Get the configuration variables from the . htconfig file .
*/
2017-11-06 23:55:24 +00:00
$baseurl = Config :: get ( 'piwik' , 'baseurl' );
$siteid = Config :: get ( 'piwik' , 'siteid' );
$optout = Config :: get ( 'piwik' , 'optout' );
$async = Config :: get ( 'piwik' , 'async' );
2011-09-25 08:56:03 +00:00
/*
2012-02-19 09:17:38 +00:00
* Add the Piwik tracking code for the site .
* If async is set to true use asynchronous tracking
2011-09-25 08:56:03 +00:00
*/
2012-02-19 09:17:38 +00:00
if ( $async ) {
2014-08-11 07:07:25 +00:00
$b .= " <!-- Piwik --> <script type= \" text/javascript \" > var _paq = _paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u=(( \" https: \" == document.location.protocol) ? \" https \" : \" http \" ) + \" :// " . $baseurl . " \" ; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', " . $siteid . " ]); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Piwik Code --> \r \n " ;
2012-08-14 16:22:31 +00:00
$b .= " <div id='piwik-code-block'> <!-- Piwik --> \r \n <noscript><p><img src= \" // " . $baseurl . " piwik.php?idsite= " . $siteid . " \" style= \" border:0 \" alt= \" \" /></p></noscript> \r \n <!-- End Piwik Tracking Tag --> </div> " ;
2012-02-19 09:17:38 +00:00
} else {
2014-08-11 07:07:25 +00:00
$b .= " <!-- Piwik --> <script type= \" text/javascript \" > var _paq = _paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u=(( \" https: \" == document.location.protocol) ? \" https \" : \" http \" ) + \" :// " . $baseurl . " \" ; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', " . $siteid . " ]); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=false; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Piwik Code --> \r \n " ;
2012-02-19 09:17:38 +00:00
}
2011-09-25 08:56:03 +00:00
/*
* If the optout variable is set to true then display the notice
* otherwise just include the above code into the page .
*/
if ( $optout ) {
2012-02-19 09:17:38 +00:00
$b .= " <div id='piwik-optout-link'> " ;
2018-01-22 19:03:11 +00:00
$b .= L10n :: t ( " This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool. " );
2012-02-19 09:17:38 +00:00
$b .= " " ;
2012-08-14 16:33:24 +00:00
$the_url = " http:// " . $baseurl . " index.php?module=CoreAdminHome&action=optOut " ;
2018-01-24 03:59:20 +00:00
$b .= L10n :: t ( " If you do not want that your visits are logged in this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out). " , $the_url );
2012-02-19 09:17:38 +00:00
$b .= " </div> " ;
2011-09-25 08:56:03 +00:00
}
}
2018-01-20 13:57:41 +00:00
function piwik_addon_admin ( & $a , & $o ) {
2012-12-22 20:36:35 +00:00
$t = get_markup_template ( " admin.tpl " , " addon/piwik/ " );
2018-01-15 13:15:33 +00:00
$o = replace_macros ( $t , [
2018-01-22 19:03:11 +00:00
'$submit' => L10n :: t ( 'Save Settings' ),
'$piwikbaseurl' => [ 'baseurl' , L10n :: t ( 'Piwik Base URL' ), Config :: get ( 'piwik' , 'baseurl' ), L10n :: t ( 'Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)' )],
'$siteid' => [ 'siteid' , L10n :: t ( 'Site ID' ), Config :: get ( 'piwik' , 'siteid' ), '' ],
'$optout' => [ 'optout' , L10n :: t ( 'Show opt-out cookie link?' ), Config :: get ( 'piwik' , 'optout' ), '' ],
'$async' => [ 'async' , L10n :: t ( 'Asynchronous tracking' ), Config :: get ( 'piwik' , 'async' ), '' ],
2018-01-15 13:15:33 +00:00
]);
2011-09-25 08:56:03 +00:00
}
2018-01-20 13:57:41 +00:00
function piwik_addon_admin_post ( & $a ) {
2012-02-19 09:17:38 +00:00
$url = (( x ( $_POST , 'baseurl' )) ? notags ( trim ( $_POST [ 'baseurl' ])) : '' );
$id = (( x ( $_POST , 'siteid' )) ? trim ( $_POST [ 'siteid' ]) : '' );
$optout = (( x ( $_POST , 'optout' )) ? trim ( $_POST [ 'optout' ]) : '' );
$async = (( x ( $_POST , 'async' )) ? trim ( $_POST [ 'async' ]) : '' );
2017-11-06 23:55:24 +00:00
Config :: set ( 'piwik' , 'baseurl' , $url );
Config :: set ( 'piwik' , 'siteid' , $id );
Config :: set ( 'piwik' , 'optout' , $optout );
Config :: set ( 'piwik' , 'async' , $async );
2018-01-22 19:03:11 +00:00
info ( L10n :: t ( 'Settings updated.' ) . EOL );
2011-09-25 08:56:03 +00:00
}