%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/extensions/googleAnalytics/ |
| Current File : //www/varak.net/wiki.varak.net/extensions/googleAnalytics/googleAnalytics.hooks.php |
<?php
class GoogleAnalyticsHooks {
/**
* @param Skin $skin
* @param string $text
* @return bool
*/
public static function onSkinAfterBottomScripts( Skin $skin, &$text = '' ) {
global $wgGoogleAnalyticsAccount, $wgGoogleAnalyticsAnonymizeIP, $wgGoogleAnalyticsOtherCode,
$wgGoogleAnalyticsIgnoreNsIDs, $wgGoogleAnalyticsIgnorePages, $wgGoogleAnalyticsIgnoreSpecials;
if ( $skin->getUser()->isAllowed( 'noanalytics' ) ) {
$text .= "<!-- Web analytics code inclusion is disabled for this user. -->\r\n";
return true;
}
if ( count( array_filter( $wgGoogleAnalyticsIgnoreSpecials, function ( $v ) use ( $skin ) {
return $skin->getTitle()->isSpecial( $v );
} ) ) > 0
|| in_array( $skin->getTitle()->getNamespace(), $wgGoogleAnalyticsIgnoreNsIDs, true )
|| in_array( $skin->getTitle()->getPrefixedText(), $wgGoogleAnalyticsIgnorePages, true ) ) {
$text .= "<!-- Web analytics code inclusion is disabled for this page. -->\r\n";
return true;
}
$appended = false;
if ( $wgGoogleAnalyticsAccount !== '' ) {
$text .= <<<EOD
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '
EOD
. $wgGoogleAnalyticsAccount . <<<EOD
', 'auto');
EOD
. ( $wgGoogleAnalyticsAnonymizeIP ? " ga('set', 'anonymizeIp', true);\r\n" : "" ) . <<<EOD
ga('send', 'pageview');
</script>
EOD;
$appended = true;
}
if ( $wgGoogleAnalyticsOtherCode !== '' ) {
$text .= $wgGoogleAnalyticsOtherCode . "\r\n";
$appended = true;
}
if ( !$appended ) {
$text .= "<!-- No web analytics configured. -->\r\n";
}
return true;
}
public static function onUnitTestsList( array &$files ) {
// @codeCoverageIgnoreStart
$directoryIterator = new RecursiveDirectoryIterator( __DIR__ . '/tests/' );
/**
* @var SplFileInfo $fileInfo
*/
$ourFiles = array();
foreach ( new RecursiveIteratorIterator( $directoryIterator ) as $fileInfo ) {
if ( substr( $fileInfo->getFilename(), -8 ) === 'Test.php' ) {
$ourFiles[] = $fileInfo->getPathname();
}
}
$files = array_merge( $files, $ourFiles );
return true;
// @codeCoverageIgnoreEnd
}
}