forked from erochest/GoogleAnalyticsErr
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathGoogleAnalyticsPlugin.php
102 lines (92 loc) · 3.43 KB
/
GoogleAnalyticsPlugin.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
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
<?php
/**
* GoogleAnalyticsErr Omeka plugin.
*
* This plug-in allows you to paste in the JavaScript for Google Analytics and
* outputs it on the bottom of every public page.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
* applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
* OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*
* @package omeka
* @subpackage GoogleAnalyticsErr
* @author Eric Rochester ([email protected])
* @copyright 2011
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache 2.0
* @version 0.1
* @link http://www.ericrochester.com/
*
*/
define('GOOGLE_ANALYTICS_PLUGIN_DIR', dirname(__FILE__));
define('GOOGLE_ANALYTICS_ACCOUNT_OPTION', 'googleanalytics_account_id');
class GoogleAnalyticsPlugin extends Omeka_Plugin_AbstractPlugin
{
protected $_hooks =array(
'uninstall',
'public_head',
'public_body',
'config',
'config_form'
);
protected $_filters = array();
public function hookUninstall()
{
delete_option('googleanalytics_version');
delete_option(GOOGLE_ANALYTICS_ACCOUNT_OPTION);
delete_option('googleanalytics_user_opt_in');
}
public function hookPublicHead()
{
$accountId = get_option(GOOGLE_ANALYTICS_ACCOUNT_OPTION);
if (empty($accountId)) {
return;
}
$optIn = get_option('googleanalytics_user_opt_in');
if ($optIn) {
queue_css_file('googleanalytics');
queue_js_file('googleanalytics');
} else {
$accountIdHtml = html_escape($accountId);
$accountIdJs = json_encode($accountId);
echo <<<GTAG
<script async src="https://www.googletagmanager.com/gtag/js?id=$accountIdHtml"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', $accountIdJs);
</script>
GTAG;
}
}
public function hookPublicBody()
{
$accountId = get_option(GOOGLE_ANALYTICS_ACCOUNT_OPTION);
if (empty($accountId)) {
return;
}
$optIn = get_option('googleanalytics_user_opt_in');
if ($optIn) {
$html = '<div id="ga-cookie-banner" style="display: none;" data-tag="' . html_escape($accountId) . '">'
. '<p>This site uses Google Analytics to track site traffic and other metrics. If you would like to allow the use of Google Analytics please click Opt In below. This will associate a cookie with your browser.</p>'
. '<p><button id="ga-cookie-banner-opt-in">Opt In</button><button id="ga-cookie-banner-opt-out">Opt Out</button></p>'
. '</div>' . "\n";
echo $html;
}
}
public function hookConfig($args)
{
$post = $args['post'];
set_option(GOOGLE_ANALYTICS_ACCOUNT_OPTION,$post[GOOGLE_ANALYTICS_ACCOUNT_OPTION]);
set_option('googleanalytics_user_opt_in',$post['user_opt_in']);
}
public function hookConfigForm()
{
include GOOGLE_ANALYTICS_PLUGIN_DIR . '/config_form.php';
}
}