Version Description
Release Date: March 19th, 2015
- Several security fixes:
- Fix minor XSS issue where admins could XSS each other through an unescaped manual UA field.
- Fix stored XSS issue where changing a property's name in Google Analytics to contain malicious JS would allow execution of that JS in the admin as the profile name was not escaped properly.
- Fix un-authenticated change of the GA profile list, allowing the previous XSS to become a slightly bigger issue. Issues 2 and 3 combined lead to a DREAD score of 5.
- Other fixes:
- Small code style improvements.
- Throw an error and deactivate if either the PHP SPL or PHP filter libraries aren't loaded.
- Introduced a filter
yst_ga_track_super_admin
to allow disabling of super admin tracking on multi-site, defaulting to true.
Big thanks to Jouko Pynnnen for responsibly disclosing security issues #2 and #3.
Download this release
Release Info
Developer | omarreiss |
Plugin | Google Analytics for WordPress by MonsterInsights |
Version | 5.3.3 |
Comparing to | |
See all releases |
Code changes from version 5.3.2 to 5.3.3
- README.md +2 -0
- admin/class-admin-assets.php +4 -1
- admin/class-admin-form.php +33 -23
- admin/class-admin-menu.php +18 -14
- admin/class-admin.php +79 -57
- admin/class-google-analytics.php +16 -8
- admin/dashboards/class-admin-dashboards-api-options.php +11 -7
- admin/dashboards/class-admin-dashboards-collector.php +41 -31
- admin/dashboards/class-admin-dashboards-data.php +11 -7
- admin/dashboards/class-admin-dashboards-display.php +15 -8
- admin/dashboards/class-admin-dashboards.php +15 -16
- admin/dashboards/drivers/class-admin-dashboards-driver-generate.php +10 -2
- admin/dashboards/drivers/class-admin-dashboards-driver.php +9 -2
- admin/dashboards/drivers/class-admin-dashboards-graph-generate.php +12 -5
- admin/dashboards/drivers/class-admin-dashboards-graph.php +7 -0
- admin/dashboards/drivers/class-admin-dashboards-table-generate.php +9 -1
- admin/dashboards/drivers/class-admin-dashboards-table.php +7 -0
- admin/dashboards/views/graph.php +11 -2
- admin/dashboards/views/table.php +9 -2
- admin/pages/dashboard.php +17 -6
- admin/pages/extensions.php +18 -23
- admin/pages/settings.php +16 -8
- admin/views/content-footer.php +8 -1
- frontend/abstract-class-tracking.php +40 -20
- frontend/class-frontend.php +9 -2
- frontend/class-ga-js.php +24 -11
- frontend/class-universal.php +34 -14
- frontend/views/tracking-debug.php +7 -0
- frontend/views/tracking-ga-js.php +7 -0
- frontend/views/tracking-universal.php +17 -10
- frontend/views/tracking-usergroup.php +7 -0
- googleanalytics.php +87 -30
- includes/class-options.php +22 -13
- includes/class-settings.php +9 -4
- includes/class-utils.php +11 -4
- phpcs.xml +14 -0
- readme.txt +34 -10
- vendor/autoload.php +1 -1
- vendor/autoload_52.php +1 -1
- vendor/composer/autoload_real.php +4 -4
- vendor/composer/autoload_real_52.php +3 -3
README.md
CHANGED
@@ -31,6 +31,8 @@ Bugs
|
|
31 |
----
|
32 |
If you find an issue, [let us know here](https://github.com/Yoast/google-analytics-for-wordpress/issues/new)!
|
33 |
|
|
|
|
|
34 |
Support
|
35 |
-------
|
36 |
This is a developer's portal for Google Analytics for WordPress by Yoast and should not be used for support. Please visit the
|
31 |
----
|
32 |
If you find an issue, [let us know here](https://github.com/Yoast/google-analytics-for-wordpress/issues/new)!
|
33 |
|
34 |
+
Please report security issues privately to **security@yoast.com**.
|
35 |
+
|
36 |
Support
|
37 |
-------
|
38 |
This is a developer's portal for Google Analytics for WordPress by Yoast and should not be used for support. Please visit the
|
admin/class-admin-assets.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
3 |
/**
|
4 |
* This class is for the backend
|
@@ -40,7 +44,6 @@ class Yoast_GA_Admin_Assets {
|
|
40 |
*/
|
41 |
public static function enqueue_dashboard_assets() {
|
42 |
|
43 |
-
//
|
44 |
wp_enqueue_script( 'ga-admin-dashboard', self::get_asset_path( 'assets/js/yoast_ga_admin_dashboard' ) . self::file_ext( '.js' ), array(), GAWP_VERSION );
|
45 |
wp_enqueue_style( 'ga-admin-dashboard-css', self::get_asset_path( 'assets/css/yoast_ga_admin_dashboard' ) . self::file_ext( '.css' ), array(), GAWP_VERSION );
|
46 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
|
7 |
/**
|
8 |
* This class is for the backend
|
44 |
*/
|
45 |
public static function enqueue_dashboard_assets() {
|
46 |
|
|
|
47 |
wp_enqueue_script( 'ga-admin-dashboard', self::get_asset_path( 'assets/js/yoast_ga_admin_dashboard' ) . self::file_ext( '.js' ), array(), GAWP_VERSION );
|
48 |
wp_enqueue_style( 'ga-admin-dashboard-css', self::get_asset_path( 'assets/css/yoast_ga_admin_dashboard' ) . self::file_ext( '.css' ), array(), GAWP_VERSION );
|
49 |
|
admin/class-admin-form.php
CHANGED
@@ -1,11 +1,17 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
3 |
/**
|
4 |
* This class is for the backend
|
5 |
*/
|
6 |
-
|
7 |
class Yoast_GA_Admin_Form {
|
8 |
|
|
|
|
|
|
|
9 |
private static $form_namespace;
|
10 |
|
11 |
/**
|
@@ -44,7 +50,7 @@ class Yoast_GA_Admin_Form {
|
|
44 |
$output = null;
|
45 |
$output .= '<div class="ga-form ga-form-input">';
|
46 |
$output .= '<input type="submit" name="ga-form-' . $name . '" value="' . $button_label . '" class="button button-primary ga-form-submit" id="yoast-ga-form-submit-' . self::$form_namespace . '"';
|
47 |
-
if( ! is_null( $onclick ) ){
|
48 |
$output .= ' onclick="' . $onclick . '"';
|
49 |
}
|
50 |
$output .= ' />';
|
@@ -90,7 +96,8 @@ class Yoast_GA_Admin_Form {
|
|
90 |
if ( $input_value == 1 ) {
|
91 |
$attributes['checked'] = 'checked';
|
92 |
}
|
93 |
-
}
|
|
|
94 |
$attributes['value'] = stripslashes( $input_value );
|
95 |
}
|
96 |
|
@@ -129,12 +136,13 @@ class Yoast_GA_Admin_Form {
|
|
129 |
|
130 |
$select .= '<div class="ga-form ga-form-input">';
|
131 |
if ( ! is_null( $title ) ) {
|
132 |
-
$select .= self::label( $id, $title, 'select' ); //'<label class="ga-form ga-form-select-label ga-form-label-left" id="yoast-ga-form-label-select-' . self::$form_namespace . '-' . $id . '">' . $title . ':</label>';
|
133 |
}
|
134 |
|
135 |
if ( $multiple ) {
|
136 |
$select .= '<select multiple name="' . $name . '[]" id="yoast-ga-form-select-' . self::$form_namespace . '-' . $id . '" class="ga-multiple">';
|
137 |
-
}
|
|
|
138 |
$select .= '<select data-placeholder="' . $empty_text . '" name="' . $name . '" id="yoast-ga-form-select-' . self::$form_namespace . '-' . $id . '">';
|
139 |
if ( ! is_null( $empty_text ) ) {
|
140 |
$select .= '<option></option>';
|
@@ -146,10 +154,10 @@ class Yoast_GA_Admin_Form {
|
|
146 |
foreach ( $values as $optgroup => $value ) {
|
147 |
if ( ! empty( $value['items'] ) ) {
|
148 |
$select .= self::create_optgroup( $optgroup, $value, $select_value );
|
149 |
-
}
|
|
|
150 |
$select .= self::option( $select_value, $value );
|
151 |
}
|
152 |
-
|
153 |
}
|
154 |
}
|
155 |
$select .= '</select>';
|
@@ -207,13 +215,15 @@ class Yoast_GA_Admin_Form {
|
|
207 |
private static function option( $select_value, $value ) {
|
208 |
|
209 |
if ( is_array( $select_value ) ) {
|
210 |
-
if ( in_array( $value['id'], $select_value ) ) {
|
211 |
-
return '<option value="' . $value['id'] . '" selected="selected">' . stripslashes( $value['name'] ) . '</option>';
|
212 |
-
} else {
|
213 |
-
return '<option value="' . $value['id'] . '">' . stripslashes( $value['name'] ) . '</option>';
|
214 |
}
|
215 |
-
|
216 |
-
|
|
|
|
|
|
|
|
|
217 |
}
|
218 |
}
|
219 |
|
@@ -243,10 +253,9 @@ class Yoast_GA_Admin_Form {
|
|
243 |
public static function parse_optgroups( $values ) {
|
244 |
$optgroups = array();
|
245 |
foreach ( $values as $key => $value ) {
|
246 |
-
foreach ( $value['items']
|
247 |
-
$optgroups[$subitem['name']]['items'] = $subitem['items'];
|
248 |
}
|
249 |
-
|
250 |
}
|
251 |
|
252 |
return $optgroups;
|
@@ -255,9 +264,9 @@ class Yoast_GA_Admin_Form {
|
|
255 |
/**
|
256 |
* Creates a label
|
257 |
*
|
258 |
-
* @param $id
|
259 |
-
* @param $title
|
260 |
-
* @param $type
|
261 |
*
|
262 |
* @return string
|
263 |
*/
|
@@ -275,13 +284,14 @@ class Yoast_GA_Admin_Form {
|
|
275 |
* @return string
|
276 |
*/
|
277 |
private static function create_optgroup( $optgroup, $value, $select_value ) {
|
278 |
-
$optgroup = '<optgroup label="' . $optgroup . '">';
|
279 |
|
280 |
foreach ( $value['items'] as $option ) {
|
281 |
if ( ! empty( $option['items'] ) ) {
|
282 |
|
283 |
-
$optgroup .= self::create_optgroup( $option['name'], $option, $select_value );
|
284 |
-
}
|
|
|
285 |
$optgroup .= self::option( $select_value, $option );
|
286 |
}
|
287 |
}
|
@@ -307,7 +317,7 @@ class Yoast_GA_Admin_Form {
|
|
307 |
}
|
308 |
|
309 |
// Catch a notice if the option doesn't exist, yet
|
310 |
-
return ( isset( $options[$name] ) ) ? $options[$name] : '';
|
311 |
}
|
312 |
|
313 |
/**
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
|
7 |
/**
|
8 |
* This class is for the backend
|
9 |
*/
|
|
|
10 |
class Yoast_GA_Admin_Form {
|
11 |
|
12 |
+
/**
|
13 |
+
* @var string $form_namespace
|
14 |
+
*/
|
15 |
private static $form_namespace;
|
16 |
|
17 |
/**
|
50 |
$output = null;
|
51 |
$output .= '<div class="ga-form ga-form-input">';
|
52 |
$output .= '<input type="submit" name="ga-form-' . $name . '" value="' . $button_label . '" class="button button-primary ga-form-submit" id="yoast-ga-form-submit-' . self::$form_namespace . '"';
|
53 |
+
if ( ! is_null( $onclick ) ) {
|
54 |
$output .= ' onclick="' . $onclick . '"';
|
55 |
}
|
56 |
$output .= ' />';
|
96 |
if ( $input_value == 1 ) {
|
97 |
$attributes['checked'] = 'checked';
|
98 |
}
|
99 |
+
}
|
100 |
+
else {
|
101 |
$attributes['value'] = stripslashes( $input_value );
|
102 |
}
|
103 |
|
136 |
|
137 |
$select .= '<div class="ga-form ga-form-input">';
|
138 |
if ( ! is_null( $title ) ) {
|
139 |
+
$select .= self::label( $id, $title, 'select' ); // '<label class="ga-form ga-form-select-label ga-form-label-left" id="yoast-ga-form-label-select-' . self::$form_namespace . '-' . $id . '">' . $title . ':</label>';
|
140 |
}
|
141 |
|
142 |
if ( $multiple ) {
|
143 |
$select .= '<select multiple name="' . $name . '[]" id="yoast-ga-form-select-' . self::$form_namespace . '-' . $id . '" class="ga-multiple">';
|
144 |
+
}
|
145 |
+
else {
|
146 |
$select .= '<select data-placeholder="' . $empty_text . '" name="' . $name . '" id="yoast-ga-form-select-' . self::$form_namespace . '-' . $id . '">';
|
147 |
if ( ! is_null( $empty_text ) ) {
|
148 |
$select .= '<option></option>';
|
154 |
foreach ( $values as $optgroup => $value ) {
|
155 |
if ( ! empty( $value['items'] ) ) {
|
156 |
$select .= self::create_optgroup( $optgroup, $value, $select_value );
|
157 |
+
}
|
158 |
+
else {
|
159 |
$select .= self::option( $select_value, $value );
|
160 |
}
|
|
|
161 |
}
|
162 |
}
|
163 |
$select .= '</select>';
|
215 |
private static function option( $select_value, $value ) {
|
216 |
|
217 |
if ( is_array( $select_value ) ) {
|
218 |
+
if ( in_array( esc_attr( $value['id'] ), $select_value ) ) {
|
219 |
+
return '<option value="' . esc_attr( $value['id'] ) . '" selected="selected">' . esc_attr( stripslashes( $value['name'] ) ) . '</option>';
|
|
|
|
|
220 |
}
|
221 |
+
else {
|
222 |
+
return '<option value="' . esc_attr( $value['id'] ) . '">' . esc_attr( stripslashes( $value['name'] ) ) . '</option>';
|
223 |
+
}
|
224 |
+
}
|
225 |
+
else {
|
226 |
+
return '<option value="' . esc_attr( $value['id'] ) . '" ' . selected( $select_value, $value['id'], false ) . '>' . esc_attr( stripslashes( $value['name'] ) ) . '</option>';
|
227 |
}
|
228 |
}
|
229 |
|
253 |
public static function parse_optgroups( $values ) {
|
254 |
$optgroups = array();
|
255 |
foreach ( $values as $key => $value ) {
|
256 |
+
foreach ( $value['items'] as $subitem ) {
|
257 |
+
$optgroups[ $subitem['name'] ]['items'] = $subitem['items'];
|
258 |
}
|
|
|
259 |
}
|
260 |
|
261 |
return $optgroups;
|
264 |
/**
|
265 |
* Creates a label
|
266 |
*
|
267 |
+
* @param string $id
|
268 |
+
* @param string $title
|
269 |
+
* @param string $type
|
270 |
*
|
271 |
* @return string
|
272 |
*/
|
284 |
* @return string
|
285 |
*/
|
286 |
private static function create_optgroup( $optgroup, $value, $select_value ) {
|
287 |
+
$optgroup = '<optgroup label="' . esc_attr( $optgroup ) . '">';
|
288 |
|
289 |
foreach ( $value['items'] as $option ) {
|
290 |
if ( ! empty( $option['items'] ) ) {
|
291 |
|
292 |
+
$optgroup .= self::create_optgroup( esc_attr( $option['name'] ), $option, $select_value );
|
293 |
+
}
|
294 |
+
else {
|
295 |
$optgroup .= self::option( $select_value, $option );
|
296 |
}
|
297 |
}
|
317 |
}
|
318 |
|
319 |
// Catch a notice if the option doesn't exist, yet
|
320 |
+
return ( isset( $options[ $name ] ) ) ? $options[ $name ] : '';
|
321 |
}
|
322 |
|
323 |
/**
|
admin/class-admin-menu.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
3 |
/**
|
4 |
* This class is for the backend, extendable for all child classes
|
@@ -6,16 +10,12 @@
|
|
6 |
class Yoast_GA_Admin_Menu {
|
7 |
|
8 |
/**
|
9 |
-
* The property used for storing target object (class admin)
|
10 |
-
*
|
11 |
-
* @var
|
12 |
*/
|
13 |
private $target_object;
|
14 |
|
15 |
/**
|
16 |
-
* The dashboards disabled bool
|
17 |
-
*
|
18 |
-
* @var
|
19 |
*/
|
20 |
private $dashboards_disabled;
|
21 |
|
@@ -46,7 +46,7 @@ class Yoast_GA_Admin_Menu {
|
|
46 |
}
|
47 |
|
48 |
$this->dashboards_disabled = Yoast_GA_Settings::get_instance()->dashboards_disabled();
|
49 |
-
$this->parent_slug
|
50 |
}
|
51 |
|
52 |
/**
|
@@ -92,7 +92,9 @@ class Yoast_GA_Admin_Menu {
|
|
92 |
|
93 |
if ( $on_top ) {
|
94 |
$position = $this->get_menu_position_value( 'top' );
|
95 |
-
|
|
|
|
|
96 |
$position = $this->get_menu_position_value( 'bottom' );
|
97 |
}
|
98 |
|
@@ -107,7 +109,7 @@ class Yoast_GA_Admin_Menu {
|
|
107 |
/**
|
108 |
* Get the top or bottom menu location number
|
109 |
*
|
110 |
-
* @param $location
|
111 |
*
|
112 |
* @return string
|
113 |
*/
|
@@ -122,8 +124,9 @@ class Yoast_GA_Admin_Menu {
|
|
122 |
/**
|
123 |
* Prepares an array that can be used to add a submenu page to the Google Analytics for Wordpress menu
|
124 |
*
|
125 |
-
* @param $submenu_name
|
126 |
-
* @param $
|
|
|
127 |
*
|
128 |
* @return array
|
129 |
*/
|
@@ -157,7 +160,7 @@ class Yoast_GA_Admin_Menu {
|
|
157 |
/**
|
158 |
* Adds a submenu page to the Google Analytics for WordPress menu
|
159 |
*
|
160 |
-
* @param $submenu_page
|
161 |
*/
|
162 |
private function add_submenu_page( $submenu_page ) {
|
163 |
$page = add_submenu_page( $submenu_page['parent_slug'], $submenu_page['page_title'], $submenu_page['menu_title'], $submenu_page['capability'], $submenu_page['menu_slug'], $submenu_page['submenu_function'] );
|
@@ -188,13 +191,14 @@ class Yoast_GA_Admin_Menu {
|
|
188 |
* - Settings
|
189 |
* - Extensions
|
190 |
*
|
191 |
-
* @return
|
192 |
*/
|
193 |
private function add_submenu_pages() {
|
194 |
foreach ( $this->get_submenu_types() as $submenu ) {
|
195 |
if ( isset( $submenu['color'] ) ) {
|
196 |
$submenu_page = $this->prepare_submenu_page( $submenu['label'], $submenu['slug'], $submenu['color'] );
|
197 |
-
}
|
|
|
198 |
$submenu_page = $this->prepare_submenu_page( $submenu['label'], $submenu['slug'] );
|
199 |
}
|
200 |
$this->add_submenu_page( $submenu_page );
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
|
7 |
/**
|
8 |
* This class is for the backend, extendable for all child classes
|
10 |
class Yoast_GA_Admin_Menu {
|
11 |
|
12 |
/**
|
13 |
+
* @var object $target_object The property used for storing target object (class admin)
|
|
|
|
|
14 |
*/
|
15 |
private $target_object;
|
16 |
|
17 |
/**
|
18 |
+
* @var boolean $dashboard_disabled The dashboards disabled bool
|
|
|
|
|
19 |
*/
|
20 |
private $dashboards_disabled;
|
21 |
|
46 |
}
|
47 |
|
48 |
$this->dashboards_disabled = Yoast_GA_Settings::get_instance()->dashboards_disabled();
|
49 |
+
$this->parent_slug = ( ( $this->dashboards_disabled ) ? 'yst_ga_settings' : 'yst_ga_dashboard' );
|
50 |
}
|
51 |
|
52 |
/**
|
92 |
|
93 |
if ( $on_top ) {
|
94 |
$position = $this->get_menu_position_value( 'top' );
|
95 |
+
|
96 |
+
}
|
97 |
+
else {
|
98 |
$position = $this->get_menu_position_value( 'bottom' );
|
99 |
}
|
100 |
|
109 |
/**
|
110 |
* Get the top or bottom menu location number
|
111 |
*
|
112 |
+
* @param string $location
|
113 |
*
|
114 |
* @return string
|
115 |
*/
|
124 |
/**
|
125 |
* Prepares an array that can be used to add a submenu page to the Google Analytics for Wordpress menu
|
126 |
*
|
127 |
+
* @param string $submenu_name
|
128 |
+
* @param string $submenu_slug
|
129 |
+
* @param string $font_color
|
130 |
*
|
131 |
* @return array
|
132 |
*/
|
160 |
/**
|
161 |
* Adds a submenu page to the Google Analytics for WordPress menu
|
162 |
*
|
163 |
+
* @param array $submenu_page
|
164 |
*/
|
165 |
private function add_submenu_page( $submenu_page ) {
|
166 |
$page = add_submenu_page( $submenu_page['parent_slug'], $submenu_page['page_title'], $submenu_page['menu_title'], $submenu_page['capability'], $submenu_page['menu_slug'], $submenu_page['submenu_function'] );
|
191 |
* - Settings
|
192 |
* - Extensions
|
193 |
*
|
194 |
+
* @return void
|
195 |
*/
|
196 |
private function add_submenu_pages() {
|
197 |
foreach ( $this->get_submenu_types() as $submenu ) {
|
198 |
if ( isset( $submenu['color'] ) ) {
|
199 |
$submenu_page = $this->prepare_submenu_page( $submenu['label'], $submenu['slug'], $submenu['color'] );
|
200 |
+
}
|
201 |
+
else {
|
202 |
$submenu_page = $this->prepare_submenu_page( $submenu['label'], $submenu['slug'] );
|
203 |
}
|
204 |
$this->add_submenu_page( $submenu_page );
|
admin/class-admin.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
3 |
/**
|
4 |
* This class is for the backend, extendable for all child classes
|
@@ -6,12 +10,13 @@
|
|
6 |
class Yoast_GA_Admin extends Yoast_GA_Options {
|
7 |
|
8 |
/**
|
9 |
-
* Store the API instance
|
10 |
-
*
|
11 |
-
* @var
|
12 |
*/
|
13 |
public $api;
|
14 |
|
|
|
|
|
|
|
15 |
public function __construct() {
|
16 |
parent::__construct();
|
17 |
|
@@ -68,7 +73,7 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
68 |
/**
|
69 |
* This function saves the settings in the option field and returns a wp success message on success
|
70 |
*
|
71 |
-
* @param $data
|
72 |
*/
|
73 |
public function save_settings( $data ) {
|
74 |
|
@@ -79,13 +84,13 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
79 |
if ( $key != 'custom_code' && is_string( $value ) ) {
|
80 |
$value = strip_tags( $value );
|
81 |
}
|
82 |
-
$this->options[$key] = $value;
|
83 |
}
|
84 |
}
|
85 |
|
86 |
// Check checkboxes, on a uncheck they won't be posted to this function
|
87 |
$defaults = $this->default_ga_values();
|
88 |
-
foreach ( $defaults[$this->option_prefix] as $option_name => $value ) {
|
89 |
$this->handle_default_setting( $data, $option_name, $value );
|
90 |
}
|
91 |
|
@@ -93,14 +98,31 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
93 |
$this->options['analytics_profile_code'] = $this->get_ua_code_from_profile( $this->options['analytics_profile'] );
|
94 |
}
|
95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
if ( $this->update_option( $this->options ) ) {
|
97 |
// Success, add a new notification
|
98 |
$this->add_notification( 'ga_notifications', array(
|
99 |
'type' => 'success',
|
100 |
'description' => __( 'Settings saved.', 'google-analytics-for-wordpress' ),
|
101 |
) );
|
102 |
-
|
103 |
-
|
104 |
// Fail, add a new notification
|
105 |
$this->add_notification( 'ga_notifications', array(
|
106 |
'type' => 'error',
|
@@ -108,7 +130,7 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
108 |
) );
|
109 |
}
|
110 |
|
111 |
-
|
112 |
wp_redirect( admin_url( 'admin.php' ) . '?page=yst_ga_settings#top#' . $data['return_tab'], 301 );
|
113 |
exit;
|
114 |
}
|
@@ -118,30 +140,26 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
118 |
* remove the options for the profiles and the refresh token.
|
119 |
*/
|
120 |
public static function ga_deactivation_hook() {
|
121 |
-
// Remove the refresh token
|
122 |
-
|
123 |
-
|
124 |
-
// Remove the ga accounts and response
|
125 |
-
delete_option( 'yst_ga_accounts' );
|
126 |
-
delete_option( 'yst_ga_response' );
|
127 |
-
|
128 |
}
|
129 |
|
130 |
/**
|
131 |
* Handle a default setting in GA
|
132 |
*
|
133 |
-
* @param $data
|
134 |
-
* @param $option_name
|
135 |
-
* @param $value
|
136 |
*/
|
137 |
private function handle_default_setting( $data, $option_name, $value ) {
|
138 |
-
if ( ! isset( $data[$option_name] ) ) {
|
139 |
// If no data was passed in, set it to the default.
|
140 |
if ( $value === 1 ) {
|
141 |
// Disable the checkbox for now, use value 0
|
142 |
-
$this->options[$option_name] = 0;
|
143 |
-
}
|
144 |
-
|
|
|
145 |
}
|
146 |
}
|
147 |
}
|
@@ -149,7 +167,7 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
149 |
/**
|
150 |
* Handle the post requests in the admin form of the GA plugin
|
151 |
*
|
152 |
-
* @param $dashboards
|
153 |
*/
|
154 |
private function handle_ga_post_request( $dashboards ) {
|
155 |
if ( ! function_exists( 'wp_verify_nonce' ) ) {
|
@@ -175,7 +193,7 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
175 |
/**
|
176 |
* Is there selected an other property in the settings post? Returns true or false.
|
177 |
*
|
178 |
-
* @param $post
|
179 |
*
|
180 |
* @return bool
|
181 |
*/
|
@@ -210,7 +228,7 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
210 |
/**
|
211 |
* Transform the Profile ID into an helpful UA code
|
212 |
*
|
213 |
-
* @param $profile_id
|
214 |
*
|
215 |
* @return null
|
216 |
*/
|
@@ -300,19 +318,17 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
300 |
add_action( 'yst_ga_custom_dimension_add-dashboards-tab', array( $this, 'premium_promo' ) );
|
301 |
}
|
302 |
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
break;
|
315 |
-
}
|
316 |
}
|
317 |
}
|
318 |
|
@@ -329,23 +345,27 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
329 |
}
|
330 |
|
331 |
/**
|
332 |
-
* Checks if there is a callback
|
333 |
*/
|
334 |
private function google_analytics_listener() {
|
|
|
|
|
|
|
335 |
|
336 |
-
|
337 |
-
Yoast_Google_Analytics::get_instance()->authenticate( trim( $_POST['google_auth_code'] ) );
|
338 |
-
}
|
339 |
-
|
340 |
-
|
341 |
-
if ( ! empty ( $_GET['reauth'] ) ) {
|
342 |
|
343 |
-
|
344 |
-
delete_option( 'yst_ga_response' );
|
345 |
-
|
346 |
-
Yoast_Google_Analytics::get_instance()->authenticate();
|
347 |
}
|
|
|
348 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
349 |
}
|
350 |
|
351 |
/**
|
@@ -356,7 +376,8 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
356 |
private function get_current_profile() {
|
357 |
if ( ! empty( $this->options['analytics_profile'] ) ) {
|
358 |
return $this->options['analytics_profile'];
|
359 |
-
}
|
|
|
360 |
return null;
|
361 |
}
|
362 |
}
|
@@ -382,7 +403,7 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
382 |
foreach ( $editable_roles as $id => $name ) {
|
383 |
$roles[] = array(
|
384 |
'id' => $id,
|
385 |
-
'name' => translate_user_role($name['name']),
|
386 |
);
|
387 |
}
|
388 |
|
@@ -408,8 +429,8 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
408 |
*/
|
409 |
public function get_track_full_url() {
|
410 |
return array(
|
411 |
-
0 => array( 'id' => 'domain', 'name' => __( 'Just the domain', 'google-analytics-for-wordpress' )
|
412 |
-
1 => array( 'id' => 'full_links', 'name' => __( 'Full links', 'google-analytics-for-wordpress' )
|
413 |
);
|
414 |
}
|
415 |
|
@@ -498,8 +519,8 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
498 |
/**
|
499 |
* Add a notification to the notification transient
|
500 |
*
|
501 |
-
* @param $transient_name
|
502 |
-
* @param $settings
|
503 |
*/
|
504 |
private function add_notification( $transient_name, $settings ) {
|
505 |
set_transient( $transient_name, $settings, MINUTE_IN_SECONDS );
|
@@ -521,7 +542,8 @@ class Yoast_GA_Admin extends Yoast_GA_Options {
|
|
521 |
$transient['description'],
|
522 |
'updated'
|
523 |
);
|
524 |
-
}
|
|
|
525 |
add_settings_error(
|
526 |
'yoast_google_analytics',
|
527 |
'yoast_google_analytics',
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
|
7 |
/**
|
8 |
* This class is for the backend, extendable for all child classes
|
10 |
class Yoast_GA_Admin extends Yoast_GA_Options {
|
11 |
|
12 |
/**
|
13 |
+
* @var boolean $api Store the API instance
|
|
|
|
|
14 |
*/
|
15 |
public $api;
|
16 |
|
17 |
+
/**
|
18 |
+
* Constructor
|
19 |
+
*/
|
20 |
public function __construct() {
|
21 |
parent::__construct();
|
22 |
|
73 |
/**
|
74 |
* This function saves the settings in the option field and returns a wp success message on success
|
75 |
*
|
76 |
+
* @param array $data
|
77 |
*/
|
78 |
public function save_settings( $data ) {
|
79 |
|
84 |
if ( $key != 'custom_code' && is_string( $value ) ) {
|
85 |
$value = strip_tags( $value );
|
86 |
}
|
87 |
+
$this->options[ $key ] = $value;
|
88 |
}
|
89 |
}
|
90 |
|
91 |
// Check checkboxes, on a uncheck they won't be posted to this function
|
92 |
$defaults = $this->default_ga_values();
|
93 |
+
foreach ( $defaults[ $this->option_prefix ] as $option_name => $value ) {
|
94 |
$this->handle_default_setting( $data, $option_name, $value );
|
95 |
}
|
96 |
|
98 |
$this->options['analytics_profile_code'] = $this->get_ua_code_from_profile( $this->options['analytics_profile'] );
|
99 |
}
|
100 |
|
101 |
+
if ( ! empty( $this->options['manual_ua_code_field'] ) ) {
|
102 |
+
$this->options['manual_ua_code_field'] = trim( $this->options['manual_ua_code_field'] );
|
103 |
+
// en dash to minus, prevents issue with code copied from web with "fancy" dash
|
104 |
+
$this->options['manual_ua_code_field'] = str_replace( '–', '-', $this->options['manual_ua_code_field'] );
|
105 |
+
|
106 |
+
if ( ! preg_match( '|^UA-\d{4,}-\d+$|', $this->options['manual_ua_code_field'] ) ) {
|
107 |
+
|
108 |
+
$this->add_notification( 'ga_notifications', array(
|
109 |
+
'type' => 'error',
|
110 |
+
'description' => __( 'The UA code needs to follow UA-XXXXXXXX-X format.', 'google-analytics-for-wordpress' ),
|
111 |
+
) );
|
112 |
+
|
113 |
+
wp_redirect( admin_url( 'admin.php' ) . '?page=yst_ga_settings#top#' . $data['return_tab'], 301 );
|
114 |
+
exit;
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
if ( $this->update_option( $this->options ) ) {
|
119 |
// Success, add a new notification
|
120 |
$this->add_notification( 'ga_notifications', array(
|
121 |
'type' => 'success',
|
122 |
'description' => __( 'Settings saved.', 'google-analytics-for-wordpress' ),
|
123 |
) );
|
124 |
+
}
|
125 |
+
else {
|
126 |
// Fail, add a new notification
|
127 |
$this->add_notification( 'ga_notifications', array(
|
128 |
'type' => 'error',
|
130 |
) );
|
131 |
}
|
132 |
|
133 |
+
// redirect
|
134 |
wp_redirect( admin_url( 'admin.php' ) . '?page=yst_ga_settings#top#' . $data['return_tab'], 301 );
|
135 |
exit;
|
136 |
}
|
140 |
* remove the options for the profiles and the refresh token.
|
141 |
*/
|
142 |
public static function ga_deactivation_hook() {
|
143 |
+
// Remove the refresh token and other API settings
|
144 |
+
self::analytics_api_clean_up();
|
|
|
|
|
|
|
|
|
|
|
145 |
}
|
146 |
|
147 |
/**
|
148 |
* Handle a default setting in GA
|
149 |
*
|
150 |
+
* @param array $data
|
151 |
+
* @param string $option_name
|
152 |
+
* @param mixed $value
|
153 |
*/
|
154 |
private function handle_default_setting( $data, $option_name, $value ) {
|
155 |
+
if ( ! isset( $data[ $option_name ] ) ) {
|
156 |
// If no data was passed in, set it to the default.
|
157 |
if ( $value === 1 ) {
|
158 |
// Disable the checkbox for now, use value 0
|
159 |
+
$this->options[ $option_name ] = 0;
|
160 |
+
}
|
161 |
+
else {
|
162 |
+
$this->options[ $option_name ] = $value;
|
163 |
}
|
164 |
}
|
165 |
}
|
167 |
/**
|
168 |
* Handle the post requests in the admin form of the GA plugin
|
169 |
*
|
170 |
+
* @param Yoast_GA_Dashboards $dashboards
|
171 |
*/
|
172 |
private function handle_ga_post_request( $dashboards ) {
|
173 |
if ( ! function_exists( 'wp_verify_nonce' ) ) {
|
193 |
/**
|
194 |
* Is there selected an other property in the settings post? Returns true or false.
|
195 |
*
|
196 |
+
* @param array $post
|
197 |
*
|
198 |
* @return bool
|
199 |
*/
|
228 |
/**
|
229 |
* Transform the Profile ID into an helpful UA code
|
230 |
*
|
231 |
+
* @param integer $profile_id
|
232 |
*
|
233 |
* @return null
|
234 |
*/
|
318 |
add_action( 'yst_ga_custom_dimension_add-dashboards-tab', array( $this, 'premium_promo' ) );
|
319 |
}
|
320 |
|
321 |
+
switch ( filter_input( INPUT_GET, 'page' ) ) {
|
322 |
+
case 'yst_ga_settings':
|
323 |
+
require_once( $this->plugin_path . 'admin/pages/settings.php' );
|
324 |
+
break;
|
325 |
+
case 'yst_ga_extensions':
|
326 |
+
require_once( $this->plugin_path . 'admin/pages/extensions.php' );
|
327 |
+
break;
|
328 |
+
case 'yst_ga_dashboard':
|
329 |
+
default:
|
330 |
+
require_once( $this->plugin_path . 'admin/pages/dashboard.php' );
|
331 |
+
break;
|
|
|
|
|
332 |
}
|
333 |
}
|
334 |
|
345 |
}
|
346 |
|
347 |
/**
|
348 |
+
* Checks if there is a callback to get token from Google Analytics API
|
349 |
*/
|
350 |
private function google_analytics_listener() {
|
351 |
+
$google_auth_code = filter_input( INPUT_POST, 'google_auth_code' );
|
352 |
+
if ( $google_auth_code && current_user_can( 'manage_options' ) ) {
|
353 |
+
wp_verify_nonce( 'yoast_ga_nonce', 'save_settings' );
|
354 |
|
355 |
+
self::analytics_api_clean_up();
|
|
|
|
|
|
|
|
|
|
|
356 |
|
357 |
+
Yoast_Google_Analytics::get_instance()->authenticate( trim( $google_auth_code ) );
|
|
|
|
|
|
|
358 |
}
|
359 |
+
}
|
360 |
|
361 |
+
/**
|
362 |
+
* Clean up the Analytics API settings
|
363 |
+
*/
|
364 |
+
public static function analytics_api_clean_up() {
|
365 |
+
delete_option( 'yoast-ga-refresh_token' );
|
366 |
+
delete_option( 'yst_ga_api_call_fail' );
|
367 |
+
delete_option( 'yst_ga_last_wp_run' );
|
368 |
+
delete_option( 'yst_ga_api' );
|
369 |
}
|
370 |
|
371 |
/**
|
376 |
private function get_current_profile() {
|
377 |
if ( ! empty( $this->options['analytics_profile'] ) ) {
|
378 |
return $this->options['analytics_profile'];
|
379 |
+
}
|
380 |
+
else {
|
381 |
return null;
|
382 |
}
|
383 |
}
|
403 |
foreach ( $editable_roles as $id => $name ) {
|
404 |
$roles[] = array(
|
405 |
'id' => $id,
|
406 |
+
'name' => translate_user_role( $name['name'] ),
|
407 |
);
|
408 |
}
|
409 |
|
429 |
*/
|
430 |
public function get_track_full_url() {
|
431 |
return array(
|
432 |
+
0 => array( 'id' => 'domain', 'name' => __( 'Just the domain', 'google-analytics-for-wordpress' ) ),
|
433 |
+
1 => array( 'id' => 'full_links', 'name' => __( 'Full links', 'google-analytics-for-wordpress' ) ),
|
434 |
);
|
435 |
}
|
436 |
|
519 |
/**
|
520 |
* Add a notification to the notification transient
|
521 |
*
|
522 |
+
* @param string $transient_name
|
523 |
+
* @param array $settings
|
524 |
*/
|
525 |
private function add_notification( $transient_name, $settings ) {
|
526 |
set_transient( $transient_name, $settings, MINUTE_IN_SECONDS );
|
542 |
$transient['description'],
|
543 |
'updated'
|
544 |
);
|
545 |
+
}
|
546 |
+
else {
|
547 |
add_settings_error(
|
548 |
'yoast_google_analytics',
|
549 |
'yoast_google_analytics',
|
admin/class-google-analytics.php
CHANGED
@@ -1,6 +1,12 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
class Yoast_Google_Analytics {
|
5 |
|
6 |
/**
|
@@ -238,7 +244,7 @@ class Yoast_Google_Analytics {
|
|
238 |
/**
|
239 |
* Format the accounts request
|
240 |
*
|
241 |
-
* @param $response
|
242 |
*
|
243 |
* @return mixed
|
244 |
*/
|
@@ -254,7 +260,7 @@ class Yoast_Google_Analytics {
|
|
254 |
$profiles = array();
|
255 |
|
256 |
foreach ( $item['webProperties'] as $property_key => $property ) {
|
257 |
-
$profiles[$property_key] = array(
|
258 |
'id' => $property['id'],
|
259 |
'name' => $property['name'],
|
260 |
'items' => array(),
|
@@ -263,7 +269,7 @@ class Yoast_Google_Analytics {
|
|
263 |
// Check if profiles is set
|
264 |
if ( isset( $property['profiles'] ) ) {
|
265 |
foreach ( $property['profiles'] as $key => $profile ) {
|
266 |
-
$profiles[$property_key]['items'][$key] = array_merge(
|
267 |
$profile,
|
268 |
array(
|
269 |
'name' => $profile['name'] . ' (' . $property['id'] . ')',
|
@@ -274,7 +280,7 @@ class Yoast_Google_Analytics {
|
|
274 |
}
|
275 |
}
|
276 |
|
277 |
-
$accounts[$item['id']] = array(
|
278 |
'id' => $item['id'],
|
279 |
'ua_code' => $property['id'],
|
280 |
'parent_name' => $item['name'],
|
@@ -300,7 +306,9 @@ class Yoast_Google_Analytics {
|
|
300 |
|
301 |
}
|
302 |
|
303 |
-
|
|
|
|
|
304 |
class Yoast_Google_Analytics_Notice {
|
305 |
|
306 |
/**
|
@@ -344,7 +352,7 @@ class Yoast_Google_Analytics_Notice {
|
|
344 |
/**
|
345 |
* Showing the given error as an error div
|
346 |
*
|
347 |
-
* @param $error_message
|
348 |
*/
|
349 |
private static function show_error( $error_message ) {
|
350 |
echo '<div class="error"><p>' . $error_message . '</p></div>';
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Google Analytics class.
|
9 |
+
*/
|
10 |
class Yoast_Google_Analytics {
|
11 |
|
12 |
/**
|
244 |
/**
|
245 |
* Format the accounts request
|
246 |
*
|
247 |
+
* @param array $response
|
248 |
*
|
249 |
* @return mixed
|
250 |
*/
|
260 |
$profiles = array();
|
261 |
|
262 |
foreach ( $item['webProperties'] as $property_key => $property ) {
|
263 |
+
$profiles[ $property_key ] = array(
|
264 |
'id' => $property['id'],
|
265 |
'name' => $property['name'],
|
266 |
'items' => array(),
|
269 |
// Check if profiles is set
|
270 |
if ( isset( $property['profiles'] ) ) {
|
271 |
foreach ( $property['profiles'] as $key => $profile ) {
|
272 |
+
$profiles[ $property_key ]['items'][ $key ] = array_merge(
|
273 |
$profile,
|
274 |
array(
|
275 |
'name' => $profile['name'] . ' (' . $property['id'] . ')',
|
280 |
}
|
281 |
}
|
282 |
|
283 |
+
$accounts[ $item['id'] ] = array(
|
284 |
'id' => $item['id'],
|
285 |
'ua_code' => $property['id'],
|
286 |
'parent_name' => $item['name'],
|
306 |
|
307 |
}
|
308 |
|
309 |
+
/**
|
310 |
+
* Notice class.
|
311 |
+
*/
|
312 |
class Yoast_Google_Analytics_Notice {
|
313 |
|
314 |
/**
|
352 |
/**
|
353 |
* Showing the given error as an error div
|
354 |
*
|
355 |
+
* @param string $error_message
|
356 |
*/
|
357 |
private static function show_error( $error_message ) {
|
358 |
echo '<div class="error"><p>' . $error_message . '</p></div>';
|
admin/dashboards/class-admin-dashboards-api-options.php
CHANGED
@@ -1,5 +1,12 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
3 |
class Yoast_GA_Dashboards_Api_Options {
|
4 |
|
5 |
/**
|
@@ -10,16 +17,12 @@ class Yoast_GA_Dashboards_Api_Options {
|
|
10 |
private static $instance = null;
|
11 |
|
12 |
/**
|
13 |
-
* Store the access token
|
14 |
-
*
|
15 |
-
* @var
|
16 |
*/
|
17 |
private $access_token;
|
18 |
|
19 |
/**
|
20 |
-
* Store the options
|
21 |
-
*
|
22 |
-
* @var
|
23 |
*/
|
24 |
private $options;
|
25 |
|
@@ -78,7 +81,8 @@ class Yoast_GA_Dashboards_Api_Options {
|
|
78 |
public function get_access_token() {
|
79 |
if ( ! empty( $this->access_token ) ) {
|
80 |
return $this->access_token;
|
81 |
-
}
|
|
|
82 |
return false;
|
83 |
}
|
84 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
|
7 |
+
/**
|
8 |
+
* Dashboards API options.
|
9 |
+
*/
|
10 |
class Yoast_GA_Dashboards_Api_Options {
|
11 |
|
12 |
/**
|
17 |
private static $instance = null;
|
18 |
|
19 |
/**
|
20 |
+
* @var string $access_token Store the access token
|
|
|
|
|
21 |
*/
|
22 |
private $access_token;
|
23 |
|
24 |
/**
|
25 |
+
* @var array $options Store the options
|
|
|
|
|
26 |
*/
|
27 |
private $options;
|
28 |
|
81 |
public function get_access_token() {
|
82 |
if ( ! empty( $this->access_token ) ) {
|
83 |
return $this->access_token;
|
84 |
+
}
|
85 |
+
else {
|
86 |
return false;
|
87 |
}
|
88 |
}
|
admin/dashboards/class-admin-dashboards-collector.php
CHANGED
@@ -1,18 +1,21 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
class Yoast_GA_Dashboards_Collector {
|
4 |
|
5 |
/**
|
6 |
-
* API storage
|
7 |
-
*
|
8 |
-
* @package
|
9 |
*/
|
10 |
public $api;
|
11 |
|
12 |
/**
|
13 |
-
* Store the active metrics
|
14 |
-
*
|
15 |
-
* @var
|
16 |
*/
|
17 |
public $active_metrics;
|
18 |
|
@@ -31,9 +34,7 @@ class Yoast_GA_Dashboards_Collector {
|
|
31 |
private $valid_metrics = array();
|
32 |
|
33 |
/**
|
34 |
-
* Store the GA Profile ID
|
35 |
-
*
|
36 |
-
* @var int
|
37 |
*/
|
38 |
public $ga_profile_id;
|
39 |
|
@@ -77,8 +78,8 @@ class Yoast_GA_Dashboards_Collector {
|
|
77 |
if ( is_array( $this->dimensions ) && count( $this->dimensions ) >= 1 ) {
|
78 |
$this->aggregate_dimensions( $this->dimensions );
|
79 |
}
|
80 |
-
|
81 |
-
|
82 |
// Failure on authenticating, please reauthenticate
|
83 |
}
|
84 |
}
|
@@ -149,13 +150,13 @@ class Yoast_GA_Dashboards_Collector {
|
|
149 |
$filter_metrics = $this->get_filter_metrics();
|
150 |
|
151 |
foreach ( $metrics as $key => $metric_name ) {
|
152 |
-
if ( isset( $filter_metrics[$metric_name] ) ) {
|
153 |
// Add and set the dimension
|
154 |
-
$dimension = array( $filter_metrics[$metric_name] );
|
155 |
$this->dimensions = array_merge( $this->dimensions, $dimension );
|
156 |
|
157 |
// Remove it from the metrics after we've added it into dimensions
|
158 |
-
unset( $metrics[$key] );
|
159 |
}
|
160 |
}
|
161 |
|
@@ -248,10 +249,12 @@ class Yoast_GA_Dashboards_Collector {
|
|
248 |
if ( isset( $dimension['metric'] ) ) {
|
249 |
if ( isset( $dimension['id'] ) ) {
|
250 |
$this->execute_call( $dimension['metric'], $dates['start'], $dates['end'], 'ga:dimension' . $dimension['id'] );
|
251 |
-
}
|
|
|
252 |
if ( isset( $dimension['storage_name'] ) ) {
|
253 |
$this->execute_call( $dimension['metric'], $dates['start'], $dates['end'], 'ga:' . $dimension['dimension'], $dimension['storage_name'] );
|
254 |
-
}
|
|
|
255 |
$this->execute_call( $dimension['metric'], $dates['start'], $dates['end'], 'ga:' . $dimension['dimension'] );
|
256 |
}
|
257 |
}
|
@@ -263,10 +266,10 @@ class Yoast_GA_Dashboards_Collector {
|
|
263 |
* Execute an API call to Google Analytics and store the data in the dashboards data class
|
264 |
*
|
265 |
* @param string $metric
|
266 |
-
* @param string $start_date
|
267 |
-
* @param string $end_date
|
268 |
-
* @param string $dimensions
|
269 |
-
* @param string $storage_name
|
270 |
*
|
271 |
* @return bool
|
272 |
*/
|
@@ -286,7 +289,8 @@ class Yoast_GA_Dashboards_Collector {
|
|
286 |
update_option( 'yst_ga_last_wp_run', date( 'Y-m-d' ) );
|
287 |
|
288 |
$response = Yoast_Googleanalytics_Reporting::get_instance()->parse_response( $response, $storage_type, $start_date, $end_date );
|
289 |
-
}
|
|
|
290 |
// When response is failing, we should count the number of
|
291 |
$this->save_api_failure();
|
292 |
|
@@ -295,7 +299,8 @@ class Yoast_GA_Dashboards_Collector {
|
|
295 |
|
296 |
if ( strpos( 'ga:date', $dimensions ) !== false ) {
|
297 |
return $this->handle_response( $response, $metric, $dimensions, $start_date, $end_date, 'datelist', $storage_name );
|
298 |
-
}
|
|
|
299 |
return $this->handle_response( $response, $metric, $dimensions, $start_date, $end_date, 'table', $storage_name );
|
300 |
}
|
301 |
}
|
@@ -317,7 +322,8 @@ class Yoast_GA_Dashboards_Collector {
|
|
317 |
private function get_storage_type( $dimensions ) {
|
318 |
if ( strpos( 'ga:date', $dimensions ) !== false ) {
|
319 |
return 'datelist';
|
320 |
-
}
|
|
|
321 |
return 'table';
|
322 |
}
|
323 |
}
|
@@ -340,7 +346,8 @@ class Yoast_GA_Dashboards_Collector {
|
|
340 |
|
341 |
if ( in_array( $metric, $this->valid_metrics ) ) {
|
342 |
$dimensions = 'ga:date,' . $dimensions;
|
343 |
-
}
|
|
|
344 |
// Make sure we don't have a ga:date property here
|
345 |
$dimensions = str_replace( 'ga:date', '', $dimensions );
|
346 |
}
|
@@ -386,7 +393,9 @@ class Yoast_GA_Dashboards_Collector {
|
|
386 |
* Add a sort direction if we need to (Especially on dimensions which are
|
387 |
* listed in $this->get_filter_metrics())
|
388 |
*
|
389 |
-
* @param array
|
|
|
|
|
390 |
*
|
391 |
* @return array
|
392 |
*/
|
@@ -421,14 +430,14 @@ class Yoast_GA_Dashboards_Collector {
|
|
421 |
$filter_metrics = $this->get_filter_metrics();
|
422 |
$extracted = str_replace( 'ga:', '', str_replace( 'ga:date,', '', $dimensions ) );
|
423 |
|
424 |
-
if ( isset( $filter_metrics[$extracted] ) ) {
|
425 |
$name = $extracted;
|
426 |
-
|
427 |
-
|
428 |
$name = $metric;
|
429 |
}
|
430 |
|
431 |
-
if ( $dimensions !== 'ga:date' && ! isset( $filter_metrics[$extracted] ) ) {
|
432 |
$name = str_replace( 'ga:date,', '', $dimensions );
|
433 |
}
|
434 |
|
@@ -438,7 +447,8 @@ class Yoast_GA_Dashboards_Collector {
|
|
438 |
}
|
439 |
|
440 |
return Yoast_GA_Dashboards_Data::set( $name, $response, strtotime( $start_date ), strtotime( $end_date ), $store_as );
|
441 |
-
}
|
|
|
442 |
// Failure on API call try to log it
|
443 |
$this->log_error( print_r( $response, true ) );
|
444 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Dashboards collector.
|
9 |
+
*/
|
10 |
class Yoast_GA_Dashboards_Collector {
|
11 |
|
12 |
/**
|
13 |
+
* @var boolean $api API storage
|
|
|
|
|
14 |
*/
|
15 |
public $api;
|
16 |
|
17 |
/**
|
18 |
+
* @var array $active_metrics Store the active metrics
|
|
|
|
|
19 |
*/
|
20 |
public $active_metrics;
|
21 |
|
34 |
private $valid_metrics = array();
|
35 |
|
36 |
/**
|
37 |
+
* @var integer $ga_profile_id Store the GA Profile ID
|
|
|
|
|
38 |
*/
|
39 |
public $ga_profile_id;
|
40 |
|
78 |
if ( is_array( $this->dimensions ) && count( $this->dimensions ) >= 1 ) {
|
79 |
$this->aggregate_dimensions( $this->dimensions );
|
80 |
}
|
81 |
+
}
|
82 |
+
else {
|
83 |
// Failure on authenticating, please reauthenticate
|
84 |
}
|
85 |
}
|
150 |
$filter_metrics = $this->get_filter_metrics();
|
151 |
|
152 |
foreach ( $metrics as $key => $metric_name ) {
|
153 |
+
if ( isset( $filter_metrics[ $metric_name ] ) ) {
|
154 |
// Add and set the dimension
|
155 |
+
$dimension = array( $filter_metrics[ $metric_name ] );
|
156 |
$this->dimensions = array_merge( $this->dimensions, $dimension );
|
157 |
|
158 |
// Remove it from the metrics after we've added it into dimensions
|
159 |
+
unset( $metrics[ $key ] );
|
160 |
}
|
161 |
}
|
162 |
|
249 |
if ( isset( $dimension['metric'] ) ) {
|
250 |
if ( isset( $dimension['id'] ) ) {
|
251 |
$this->execute_call( $dimension['metric'], $dates['start'], $dates['end'], 'ga:dimension' . $dimension['id'] );
|
252 |
+
}
|
253 |
+
elseif ( isset( $dimension['dimension'] ) ) {
|
254 |
if ( isset( $dimension['storage_name'] ) ) {
|
255 |
$this->execute_call( $dimension['metric'], $dates['start'], $dates['end'], 'ga:' . $dimension['dimension'], $dimension['storage_name'] );
|
256 |
+
}
|
257 |
+
else {
|
258 |
$this->execute_call( $dimension['metric'], $dates['start'], $dates['end'], 'ga:' . $dimension['dimension'] );
|
259 |
}
|
260 |
}
|
266 |
* Execute an API call to Google Analytics and store the data in the dashboards data class
|
267 |
*
|
268 |
* @param string $metric
|
269 |
+
* @param string $start_date 2014-10-16
|
270 |
+
* @param string $end_date 2014-11-20
|
271 |
+
* @param string $dimensions ga:date
|
272 |
+
* @param string $storage_name auto
|
273 |
*
|
274 |
* @return bool
|
275 |
*/
|
289 |
update_option( 'yst_ga_last_wp_run', date( 'Y-m-d' ) );
|
290 |
|
291 |
$response = Yoast_Googleanalytics_Reporting::get_instance()->parse_response( $response, $storage_type, $start_date, $end_date );
|
292 |
+
}
|
293 |
+
else {
|
294 |
// When response is failing, we should count the number of
|
295 |
$this->save_api_failure();
|
296 |
|
299 |
|
300 |
if ( strpos( 'ga:date', $dimensions ) !== false ) {
|
301 |
return $this->handle_response( $response, $metric, $dimensions, $start_date, $end_date, 'datelist', $storage_name );
|
302 |
+
}
|
303 |
+
else {
|
304 |
return $this->handle_response( $response, $metric, $dimensions, $start_date, $end_date, 'table', $storage_name );
|
305 |
}
|
306 |
}
|
322 |
private function get_storage_type( $dimensions ) {
|
323 |
if ( strpos( 'ga:date', $dimensions ) !== false ) {
|
324 |
return 'datelist';
|
325 |
+
}
|
326 |
+
else {
|
327 |
return 'table';
|
328 |
}
|
329 |
}
|
346 |
|
347 |
if ( in_array( $metric, $this->valid_metrics ) ) {
|
348 |
$dimensions = 'ga:date,' . $dimensions;
|
349 |
+
}
|
350 |
+
elseif ( isset( $filter_metrics[ str_replace( 'ga:', '', $dimensions ) ] ) ) {
|
351 |
// Make sure we don't have a ga:date property here
|
352 |
$dimensions = str_replace( 'ga:date', '', $dimensions );
|
353 |
}
|
393 |
* Add a sort direction if we need to (Especially on dimensions which are
|
394 |
* listed in $this->get_filter_metrics())
|
395 |
*
|
396 |
+
* @param array $params
|
397 |
+
* @param string $dimensions
|
398 |
+
* @param string $metric
|
399 |
*
|
400 |
* @return array
|
401 |
*/
|
430 |
$filter_metrics = $this->get_filter_metrics();
|
431 |
$extracted = str_replace( 'ga:', '', str_replace( 'ga:date,', '', $dimensions ) );
|
432 |
|
433 |
+
if ( isset( $filter_metrics[ $extracted ] ) ) {
|
434 |
$name = $extracted;
|
435 |
+
}
|
436 |
+
else {
|
437 |
$name = $metric;
|
438 |
}
|
439 |
|
440 |
+
if ( $dimensions !== 'ga:date' && ! isset( $filter_metrics[ $extracted ] ) ) {
|
441 |
$name = str_replace( 'ga:date,', '', $dimensions );
|
442 |
}
|
443 |
|
447 |
}
|
448 |
|
449 |
return Yoast_GA_Dashboards_Data::set( $name, $response, strtotime( $start_date ), strtotime( $end_date ), $store_as );
|
450 |
+
}
|
451 |
+
else {
|
452 |
// Failure on API call try to log it
|
453 |
$this->log_error( print_r( $response, true ) );
|
454 |
|
admin/dashboards/class-admin-dashboards-data.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
3 |
/**
|
4 |
* This class is used to store and get the data of the dashboards. The data is aggregated by
|
@@ -12,7 +16,7 @@ class Yoast_GA_Dashboards_Data {
|
|
12 |
/**
|
13 |
* Get a data object
|
14 |
*
|
15 |
-
* @param
|
16 |
*
|
17 |
* @return array
|
18 |
*/
|
@@ -32,11 +36,11 @@ class Yoast_GA_Dashboards_Data {
|
|
32 |
/**
|
33 |
* Save a data object
|
34 |
*
|
35 |
-
* @param $type
|
36 |
-
* @param $value
|
37 |
-
* @param $start_date
|
38 |
-
* @param $end_date
|
39 |
-
* @param $store_as
|
40 |
*
|
41 |
* @return bool
|
42 |
*/
|
@@ -55,7 +59,7 @@ class Yoast_GA_Dashboards_Data {
|
|
55 |
/**
|
56 |
* Reset an option of the GA dashboards storage engine
|
57 |
*
|
58 |
-
* @param $type
|
59 |
*
|
60 |
* @return bool
|
61 |
*/
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
|
7 |
/**
|
8 |
* This class is used to store and get the data of the dashboards. The data is aggregated by
|
16 |
/**
|
17 |
* Get a data object
|
18 |
*
|
19 |
+
* @param string $type
|
20 |
*
|
21 |
* @return array
|
22 |
*/
|
36 |
/**
|
37 |
* Save a data object
|
38 |
*
|
39 |
+
* @param string $type
|
40 |
+
* @param array $value
|
41 |
+
* @param string $start_date
|
42 |
+
* @param string $end_date
|
43 |
+
* @param string $store_as
|
44 |
*
|
45 |
* @return bool
|
46 |
*/
|
59 |
/**
|
60 |
* Reset an option of the GA dashboards storage engine
|
61 |
*
|
62 |
+
* @param string $type
|
63 |
*
|
64 |
* @return bool
|
65 |
*/
|
admin/dashboards/class-admin-dashboards-display.php
CHANGED
@@ -1,5 +1,12 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
class Yoast_GA_Dashboards_Display {
|
4 |
|
5 |
/**
|
@@ -45,7 +52,7 @@ class Yoast_GA_Dashboards_Display {
|
|
45 |
* *Singleton* via the `new` operator from outside of this class.
|
46 |
*/
|
47 |
protected function __construct() {
|
48 |
-
foreach ( $this->dashboard_types
|
49 |
if ( ! $this->driver_exists( $dashboard_type ) ) {
|
50 |
$this->create_driver( $dashboard_type );
|
51 |
}
|
@@ -67,7 +74,7 @@ class Yoast_GA_Dashboards_Display {
|
|
67 |
$this->create_driver( $dashboard_type );
|
68 |
}
|
69 |
|
70 |
-
return $this->drivers[$dashboard_type];
|
71 |
}
|
72 |
|
73 |
/**
|
@@ -88,7 +95,7 @@ class Yoast_GA_Dashboards_Display {
|
|
88 |
* @param array $dashboards
|
89 |
*/
|
90 |
private function register( $dashboards ) {
|
91 |
-
foreach ( $dashboards
|
92 |
if ( ! empty( $dashboard_settings['type'] ) ) {
|
93 |
$this->driver( $dashboard_settings['type'] )->register( $dashboard_name, $dashboard_settings );
|
94 |
}
|
@@ -105,7 +112,7 @@ class Yoast_GA_Dashboards_Display {
|
|
105 |
|
106 |
$dashboards_to_show = $this->dashboards;
|
107 |
|
108 |
-
foreach ( $dashboards_to_show
|
109 |
if ( ! empty( $dashboard_settings['tab'] ) && $dashboard_settings['tab'] === $tab_to_show ) {
|
110 |
$this->driver( $dashboard_settings['type'] )->display( $dashboard_name );
|
111 |
}
|
@@ -120,17 +127,17 @@ class Yoast_GA_Dashboards_Display {
|
|
120 |
* @return bool
|
121 |
*/
|
122 |
protected function driver_exists( $dashboard_type ) {
|
123 |
-
return array_key_exists( $dashboard_type, $this->drivers ) && is_object( $this->drivers[$dashboard_type] );
|
124 |
}
|
125 |
|
126 |
/**
|
127 |
* Creates a driver based on given $dashboard_type
|
128 |
*
|
129 |
-
* @param $dashboard_type
|
130 |
*/
|
131 |
protected function create_driver( $dashboard_type ) {
|
132 |
$driver_class = 'Yoast_GA_Dashboards_' . ucfirst( $dashboard_type );
|
133 |
-
$this->drivers[$dashboard_type] = new $driver_class();
|
134 |
}
|
135 |
|
136 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Dashboards display class.
|
9 |
+
*/
|
10 |
class Yoast_GA_Dashboards_Display {
|
11 |
|
12 |
/**
|
52 |
* *Singleton* via the `new` operator from outside of this class.
|
53 |
*/
|
54 |
protected function __construct() {
|
55 |
+
foreach ( $this->dashboard_types as $dashboard_type ) {
|
56 |
if ( ! $this->driver_exists( $dashboard_type ) ) {
|
57 |
$this->create_driver( $dashboard_type );
|
58 |
}
|
74 |
$this->create_driver( $dashboard_type );
|
75 |
}
|
76 |
|
77 |
+
return $this->drivers[ $dashboard_type ];
|
78 |
}
|
79 |
|
80 |
/**
|
95 |
* @param array $dashboards
|
96 |
*/
|
97 |
private function register( $dashboards ) {
|
98 |
+
foreach ( $dashboards as $dashboard_name => $dashboard_settings ) {
|
99 |
if ( ! empty( $dashboard_settings['type'] ) ) {
|
100 |
$this->driver( $dashboard_settings['type'] )->register( $dashboard_name, $dashboard_settings );
|
101 |
}
|
112 |
|
113 |
$dashboards_to_show = $this->dashboards;
|
114 |
|
115 |
+
foreach ( $dashboards_to_show as $dashboard_name => $dashboard_settings ) {
|
116 |
if ( ! empty( $dashboard_settings['tab'] ) && $dashboard_settings['tab'] === $tab_to_show ) {
|
117 |
$this->driver( $dashboard_settings['type'] )->display( $dashboard_name );
|
118 |
}
|
127 |
* @return bool
|
128 |
*/
|
129 |
protected function driver_exists( $dashboard_type ) {
|
130 |
+
return array_key_exists( $dashboard_type, $this->drivers ) && is_object( $this->drivers[ $dashboard_type ] );
|
131 |
}
|
132 |
|
133 |
/**
|
134 |
* Creates a driver based on given $dashboard_type
|
135 |
*
|
136 |
+
* @param string $dashboard_type
|
137 |
*/
|
138 |
protected function create_driver( $dashboard_type ) {
|
139 |
$driver_class = 'Yoast_GA_Dashboards_' . ucfirst( $dashboard_type );
|
140 |
+
$this->drivers[ $dashboard_type ] = new $driver_class();
|
141 |
}
|
142 |
|
143 |
}
|
admin/dashboards/class-admin-dashboards.php
CHANGED
@@ -1,25 +1,26 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
class Yoast_GA_Dashboards {
|
4 |
|
5 |
/**
|
6 |
-
* Store the data aggregator
|
7 |
-
*
|
8 |
-
* @package
|
9 |
*/
|
10 |
public $aggregator;
|
11 |
|
12 |
/**
|
13 |
-
* Store the Data instance
|
14 |
-
*
|
15 |
-
* @package
|
16 |
*/
|
17 |
public $data;
|
18 |
|
19 |
/**
|
20 |
-
* Store the active metrics
|
21 |
-
*
|
22 |
-
* @var
|
23 |
*/
|
24 |
public $active_metrics;
|
25 |
|
@@ -40,9 +41,7 @@ class Yoast_GA_Dashboards {
|
|
40 |
private static $instance = null;
|
41 |
|
42 |
/**
|
43 |
-
* Store the Dashboards disabled bool
|
44 |
-
*
|
45 |
-
* @var bool
|
46 |
*/
|
47 |
private $dashboards_disabled;
|
48 |
|
@@ -80,7 +79,7 @@ class Yoast_GA_Dashboards {
|
|
80 |
*
|
81 |
* By hook as filter: $dashboards = apply_filters( 'ga_extend_dashboards', $dashboards);
|
82 |
*
|
83 |
-
* @param $dashboards
|
84 |
*
|
85 |
* @return mixed
|
86 |
*/
|
@@ -107,7 +106,7 @@ class Yoast_GA_Dashboards {
|
|
107 |
/**
|
108 |
* Register the dashboard types
|
109 |
*
|
110 |
-
* @param $types
|
111 |
*
|
112 |
* @return bool
|
113 |
*/
|
@@ -235,7 +234,7 @@ class Yoast_GA_Dashboards {
|
|
235 |
/**
|
236 |
* Validate the registered types of dashboards
|
237 |
*
|
238 |
-
* @param $types
|
239 |
*
|
240 |
* @return bool
|
241 |
*/
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Dashboards class.
|
9 |
+
*/
|
10 |
class Yoast_GA_Dashboards {
|
11 |
|
12 |
/**
|
13 |
+
* @var Yoast_GA_Dashboards_Collector $aggregator Store the data aggregator
|
|
|
|
|
14 |
*/
|
15 |
public $aggregator;
|
16 |
|
17 |
/**
|
18 |
+
* @var array $data Store the Data instance
|
|
|
|
|
19 |
*/
|
20 |
public $data;
|
21 |
|
22 |
/**
|
23 |
+
* @var array $active_metrics Store the active metrics
|
|
|
|
|
24 |
*/
|
25 |
public $active_metrics;
|
26 |
|
41 |
private static $instance = null;
|
42 |
|
43 |
/**
|
44 |
+
* @var boolean $dashboards_disabled Store the Dashboards disabled bool
|
|
|
|
|
45 |
*/
|
46 |
private $dashboards_disabled;
|
47 |
|
79 |
*
|
80 |
* By hook as filter: $dashboards = apply_filters( 'ga_extend_dashboards', $dashboards);
|
81 |
*
|
82 |
+
* @param array $dashboards
|
83 |
*
|
84 |
* @return mixed
|
85 |
*/
|
106 |
/**
|
107 |
* Register the dashboard types
|
108 |
*
|
109 |
+
* @param array|string $types
|
110 |
*
|
111 |
* @return bool
|
112 |
*/
|
234 |
/**
|
235 |
* Validate the registered types of dashboards
|
236 |
*
|
237 |
+
* @param array $types
|
238 |
*
|
239 |
* @return bool
|
240 |
*/
|
admin/dashboards/drivers/class-admin-dashboards-driver-generate.php
CHANGED
@@ -1,5 +1,12 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
abstract class Yoast_GA_Dashboards_Driver_Generate {
|
4 |
|
5 |
/**
|
@@ -89,7 +96,8 @@ abstract class Yoast_GA_Dashboards_Driver_Generate {
|
|
89 |
|
90 |
if ( $response != array() && array_key_exists( 'body', $response['value'] ) ) {
|
91 |
$return = $response['value']['body'];
|
92 |
-
}
|
|
|
93 |
$return = $response;
|
94 |
}
|
95 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Base abstract class.
|
9 |
+
*/
|
10 |
abstract class Yoast_GA_Dashboards_Driver_Generate {
|
11 |
|
12 |
/**
|
96 |
|
97 |
if ( $response != array() && array_key_exists( 'body', $response['value'] ) ) {
|
98 |
$return = $response['value']['body'];
|
99 |
+
}
|
100 |
+
else {
|
101 |
$return = $response;
|
102 |
}
|
103 |
|
admin/dashboards/drivers/class-admin-dashboards-driver.php
CHANGED
@@ -1,5 +1,12 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
3 |
abstract class Yoast_GA_Dashboards_Driver {
|
4 |
|
5 |
/**
|
@@ -54,10 +61,10 @@ abstract class Yoast_GA_Dashboards_Driver {
|
|
54 |
/**
|
55 |
* Giving the dashboardname to show
|
56 |
*
|
57 |
-
* @param $dashboard
|
58 |
*/
|
59 |
public function display( $dashboard ) {
|
60 |
-
$settings = $this->dashboards[$dashboard];
|
61 |
require dirname( GAWP_FILE ) . '/admin/dashboards/views/' . $this->dashboard_type . '.php';
|
62 |
}
|
63 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
|
7 |
+
/**
|
8 |
+
* Base abstract class.
|
9 |
+
*/
|
10 |
abstract class Yoast_GA_Dashboards_Driver {
|
11 |
|
12 |
/**
|
61 |
/**
|
62 |
* Giving the dashboardname to show
|
63 |
*
|
64 |
+
* @param string $dashboard
|
65 |
*/
|
66 |
public function display( $dashboard ) {
|
67 |
+
$settings = $this->dashboards[ $dashboard ];
|
68 |
require dirname( GAWP_FILE ) . '/admin/dashboards/views/' . $this->dashboard_type . '.php';
|
69 |
}
|
70 |
|
admin/dashboards/drivers/class-admin-dashboards-graph-generate.php
CHANGED
@@ -1,5 +1,12 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
class Yoast_GA_Dashboards_Graph_Generate extends Yoast_GA_Dashboards_Driver_Generate {
|
4 |
|
5 |
/**
|
@@ -60,9 +67,9 @@ class Yoast_GA_Dashboards_Graph_Generate extends Yoast_GA_Dashboards_Driver_Gene
|
|
60 |
*/
|
61 |
protected function filter_google_data( $google_data ) {
|
62 |
|
63 |
-
foreach ( $google_data['value']
|
64 |
if ( $this->is_date_in_period( $unix_timestamp ) ) {
|
65 |
-
$return[$unix_timestamp] = $value;
|
66 |
}
|
67 |
}
|
68 |
|
@@ -91,7 +98,7 @@ class Yoast_GA_Dashboards_Graph_Generate extends Yoast_GA_Dashboards_Driver_Gene
|
|
91 |
|
92 |
$google_data = $this->get_google_data();
|
93 |
|
94 |
-
foreach ( $google_data
|
95 |
$this->add_data( $value );
|
96 |
$this->add_x_mapping( $timestamp );
|
97 |
$this->add_hover_mapping( $timestamp, $value );
|
@@ -130,7 +137,7 @@ class Yoast_GA_Dashboards_Graph_Generate extends Yoast_GA_Dashboards_Driver_Gene
|
|
130 |
private function add_x_mapping( $timestamp ) {
|
131 |
|
132 |
$is_monday = ( 'Mon' === date( 'D', $timestamp ) );
|
133 |
-
$this->mapping['x'][] = $is_monday ? date( $this->date_field . ' M', $timestamp ) : null;
|
134 |
}
|
135 |
|
136 |
/**
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Graph inherited class.
|
9 |
+
*/
|
10 |
class Yoast_GA_Dashboards_Graph_Generate extends Yoast_GA_Dashboards_Driver_Generate {
|
11 |
|
12 |
/**
|
67 |
*/
|
68 |
protected function filter_google_data( $google_data ) {
|
69 |
|
70 |
+
foreach ( $google_data['value'] as $unix_timestamp => $value ) {
|
71 |
if ( $this->is_date_in_period( $unix_timestamp ) ) {
|
72 |
+
$return[ $unix_timestamp ] = $value;
|
73 |
}
|
74 |
}
|
75 |
|
98 |
|
99 |
$google_data = $this->get_google_data();
|
100 |
|
101 |
+
foreach ( $google_data as $timestamp => $value ) {
|
102 |
$this->add_data( $value );
|
103 |
$this->add_x_mapping( $timestamp );
|
104 |
$this->add_hover_mapping( $timestamp, $value );
|
137 |
private function add_x_mapping( $timestamp ) {
|
138 |
|
139 |
$is_monday = ( 'Mon' === date( 'D', $timestamp ) );
|
140 |
+
$this->mapping['x'][] = ( $is_monday ) ? date( $this->date_field . ' M', $timestamp ) : null;
|
141 |
}
|
142 |
|
143 |
/**
|
admin/dashboards/drivers/class-admin-dashboards-graph.php
CHANGED
@@ -1,5 +1,12 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
3 |
class Yoast_GA_Dashboards_Graph extends Yoast_GA_Dashboards_Driver {
|
4 |
|
5 |
/**
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
|
7 |
+
/**
|
8 |
+
* Dashboards graph inherited class.
|
9 |
+
*/
|
10 |
class Yoast_GA_Dashboards_Graph extends Yoast_GA_Dashboards_Driver {
|
11 |
|
12 |
/**
|
admin/dashboards/drivers/class-admin-dashboards-table-generate.php
CHANGED
@@ -1,5 +1,12 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
3 |
class Yoast_GA_Dashboards_Table_Generate extends Yoast_GA_Dashboards_Driver_Generate {
|
4 |
|
5 |
/**
|
@@ -51,7 +58,8 @@ class Yoast_GA_Dashboards_Table_Generate extends Yoast_GA_Dashboards_Driver_Gene
|
|
51 |
|
52 |
if ( ! empty( $this->dimension_id ) ) {
|
53 |
$this->graph_type = 'ga:dimension' . $this->dimension_id;
|
54 |
-
}
|
|
|
55 |
$this->graph_type = $this->graph_type;
|
56 |
}
|
57 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
|
7 |
+
/**
|
8 |
+
* Dashboards table inherited class.
|
9 |
+
*/
|
10 |
class Yoast_GA_Dashboards_Table_Generate extends Yoast_GA_Dashboards_Driver_Generate {
|
11 |
|
12 |
/**
|
58 |
|
59 |
if ( ! empty( $this->dimension_id ) ) {
|
60 |
$this->graph_type = 'ga:dimension' . $this->dimension_id;
|
61 |
+
}
|
62 |
+
else {
|
63 |
$this->graph_type = $this->graph_type;
|
64 |
}
|
65 |
}
|
admin/dashboards/drivers/class-admin-dashboards-table.php
CHANGED
@@ -1,5 +1,12 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
3 |
class Yoast_GA_Dashboards_Table extends Yoast_GA_Dashboards_Driver {
|
4 |
|
5 |
/**
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
|
7 |
+
/**
|
8 |
+
* Dashboards table inherited class.
|
9 |
+
*/
|
10 |
class Yoast_GA_Dashboards_Table extends Yoast_GA_Dashboards_Driver {
|
11 |
|
12 |
/**
|
admin/dashboards/views/graph.php
CHANGED
@@ -1,3 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<div id="graph-<?php echo $dashboard; ?>" class="yoast-dashboard yoast-graph" data-label="<?php echo $settings['title']; ?>" data-percent="<?php echo ! empty( $settings['data-percent'] ); ?>">
|
2 |
<h3>
|
3 |
<span class='alignleft'><?php echo $settings['title']; ?></span>
|
@@ -9,12 +16,14 @@
|
|
9 |
<span class='alignright period'><?php echo __( 'Last month', 'google-analytics-for-wordpress' ); ?></span>
|
10 |
</h3>
|
11 |
|
12 |
-
<?php
|
|
|
13 |
echo "<div class='yoast-graph-yaxis'></div >";
|
14 |
} ?>
|
15 |
<div class="yoast-graph-holder"></div>
|
16 |
|
17 |
-
<?php
|
|
|
18 |
echo "<div class='yoast-graph-xaxis'></div >";
|
19 |
} ?>
|
20 |
</div>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
+
?>
|
8 |
<div id="graph-<?php echo $dashboard; ?>" class="yoast-dashboard yoast-graph" data-label="<?php echo $settings['title']; ?>" data-percent="<?php echo ! empty( $settings['data-percent'] ); ?>">
|
9 |
<h3>
|
10 |
<span class='alignleft'><?php echo $settings['title']; ?></span>
|
16 |
<span class='alignright period'><?php echo __( 'Last month', 'google-analytics-for-wordpress' ); ?></span>
|
17 |
</h3>
|
18 |
|
19 |
+
<?php
|
20 |
+
if ( empty( $settings['hide_y_axis'] ) ) {
|
21 |
echo "<div class='yoast-graph-yaxis'></div >";
|
22 |
} ?>
|
23 |
<div class="yoast-graph-holder"></div>
|
24 |
|
25 |
+
<?php
|
26 |
+
if ( empty( $settings['hide_x_axis'] ) ) {
|
27 |
echo "<div class='yoast-graph-xaxis'></div >";
|
28 |
} ?>
|
29 |
</div>
|
admin/dashboards/views/table.php
CHANGED
@@ -1,4 +1,11 @@
|
|
1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
<h3>
|
3 |
<span class='alignleft'><?php echo $settings['title']; ?></span>
|
4 |
<?php
|
@@ -13,7 +20,7 @@
|
|
13 |
<table class="widefat fixed stripe">
|
14 |
<thead>
|
15 |
<th><?php echo $settings['title']; ?></th>
|
16 |
-
<?php foreach($settings['columns']
|
17 |
<th><?php echo $columns; ?></th>
|
18 |
<?php } ?>
|
19 |
</thead>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
+
?>
|
8 |
+
<div class='yoast-dashboard yoast-data-table' id="table-<?php echo $dashboard; ?>" data-label="<?php echo $settings['title']; ?>" data-dimension="<?php echo ( ! empty( $settings['custom-dimension-id'] ) ) ? $settings['custom-dimension-id'] : ''; ?>">
|
9 |
<h3>
|
10 |
<span class='alignleft'><?php echo $settings['title']; ?></span>
|
11 |
<?php
|
20 |
<table class="widefat fixed stripe">
|
21 |
<thead>
|
22 |
<th><?php echo $settings['title']; ?></th>
|
23 |
+
<?php foreach ( $settings['columns'] as $columns ) { ?>
|
24 |
<th><?php echo $columns; ?></th>
|
25 |
<?php } ?>
|
26 |
</thead>
|
admin/pages/dashboard.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
global $yoast_ga_admin;
|
3 |
|
4 |
$options_class = Yoast_GA_Options::instance();
|
@@ -41,7 +46,8 @@ echo $yoast_ga_admin->content_head();
|
|
41 |
'</a>'
|
42 |
);
|
43 |
echo '</p></div>';
|
44 |
-
}
|
|
|
45 |
echo '<div class="ga-promote"><p>';
|
46 |
echo sprintf(
|
47 |
__( 'Because we\'ve switched to a newer version of the Google Analytics API, you\'ll need to re-authenticate with Google Analytics. We\'re sorry for the inconvenience. You can %sre-authenticate your Google Analytics profile here%s.', 'google-analytics-for-wordpress' ),
|
@@ -49,10 +55,12 @@ echo $yoast_ga_admin->content_head();
|
|
49 |
'</a>'
|
50 |
);
|
51 |
echo '</p></div>';
|
52 |
-
}
|
|
|
53 |
Yoast_GA_Dashboards_Display::get_instance()->display( 'general' );
|
54 |
}
|
55 |
-
}
|
|
|
56 |
echo '<div class="ga-promote"><p>';
|
57 |
echo sprintf(
|
58 |
__( 'You have not yet finished setting up Google Analytics for Wordpress by Yoast. Please %sadd your Analytics profile here%s to enable tracking.', 'google-analytics-for-wordpress' ),
|
@@ -77,7 +85,8 @@ echo $yoast_ga_admin->content_head();
|
|
77 |
'</a>'
|
78 |
);
|
79 |
echo '</p></div>';
|
80 |
-
}
|
|
|
81 |
echo '<div class="ga-promote"><p>';
|
82 |
echo sprintf(
|
83 |
__( 'Because we\'ve switched to a newer version of the Google Analytics API, you\'ll need to re-authenticate with Google Analytics. We\'re sorry for the inconvenience. You can %sre-authenticate your Google Analytics profile here%s.', 'google-analytics-for-wordpress' ),
|
@@ -85,7 +94,8 @@ echo $yoast_ga_admin->content_head();
|
|
85 |
'</a>'
|
86 |
);
|
87 |
echo '</p></div>';
|
88 |
-
}
|
|
|
89 |
?>
|
90 |
<div class="ga-form ga-form-input">
|
91 |
<label class="ga-form ga-form-checkbox-label ga-form-label-left"><?php echo __( 'Select a dimension', 'google-analytics-for-wordpress' ); ?></label>
|
@@ -95,7 +105,8 @@ echo $yoast_ga_admin->content_head();
|
|
95 |
<?php
|
96 |
Yoast_GA_Dashboards_Display::get_instance()->display( 'dimensions' );
|
97 |
}
|
98 |
-
}
|
|
|
99 |
echo '<div class="ga-promote"><p>';
|
100 |
echo sprintf(
|
101 |
__( 'You have not yet finished setting up Google Analytics for Wordpress by Yoast. Please %sadd your Analytics profile here%s to enable tracking.', 'google-analytics-for-wordpress' ),
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
global $yoast_ga_admin;
|
8 |
|
9 |
$options_class = Yoast_GA_Options::instance();
|
46 |
'</a>'
|
47 |
);
|
48 |
echo '</p></div>';
|
49 |
+
}
|
50 |
+
else if ( ! Yoast_Google_Analytics::get_instance()->has_refresh_token() ) {
|
51 |
echo '<div class="ga-promote"><p>';
|
52 |
echo sprintf(
|
53 |
__( 'Because we\'ve switched to a newer version of the Google Analytics API, you\'ll need to re-authenticate with Google Analytics. We\'re sorry for the inconvenience. You can %sre-authenticate your Google Analytics profile here%s.', 'google-analytics-for-wordpress' ),
|
55 |
'</a>'
|
56 |
);
|
57 |
echo '</p></div>';
|
58 |
+
}
|
59 |
+
else {
|
60 |
Yoast_GA_Dashboards_Display::get_instance()->display( 'general' );
|
61 |
}
|
62 |
+
}
|
63 |
+
else {
|
64 |
echo '<div class="ga-promote"><p>';
|
65 |
echo sprintf(
|
66 |
__( 'You have not yet finished setting up Google Analytics for Wordpress by Yoast. Please %sadd your Analytics profile here%s to enable tracking.', 'google-analytics-for-wordpress' ),
|
85 |
'</a>'
|
86 |
);
|
87 |
echo '</p></div>';
|
88 |
+
}
|
89 |
+
else if ( ! Yoast_Google_Analytics::get_instance()->has_refresh_token() ) {
|
90 |
echo '<div class="ga-promote"><p>';
|
91 |
echo sprintf(
|
92 |
__( 'Because we\'ve switched to a newer version of the Google Analytics API, you\'ll need to re-authenticate with Google Analytics. We\'re sorry for the inconvenience. You can %sre-authenticate your Google Analytics profile here%s.', 'google-analytics-for-wordpress' ),
|
94 |
'</a>'
|
95 |
);
|
96 |
echo '</p></div>';
|
97 |
+
}
|
98 |
+
else {
|
99 |
?>
|
100 |
<div class="ga-form ga-form-input">
|
101 |
<label class="ga-form ga-form-checkbox-label ga-form-label-left"><?php echo __( 'Select a dimension', 'google-analytics-for-wordpress' ); ?></label>
|
105 |
<?php
|
106 |
Yoast_GA_Dashboards_Display::get_instance()->display( 'dimensions' );
|
107 |
}
|
108 |
+
}
|
109 |
+
else {
|
110 |
echo '<div class="ga-promote"><p>';
|
111 |
echo sprintf(
|
112 |
__( 'You have not yet finished setting up Google Analytics for Wordpress by Yoast. Please %sadd your Analytics profile here%s to enable tracking.', 'google-analytics-for-wordpress' ),
|
admin/pages/extensions.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
global $yoast_ga_admin;
|
3 |
|
4 |
echo $yoast_ga_admin->content_head();
|
@@ -16,7 +21,7 @@ $extensions = $yoast_ga_admin->get_extensions();
|
|
16 |
<div class="tabwrapper">
|
17 |
<div id="extensions" class="wpseotab gatab">
|
18 |
<?php
|
19 |
-
foreach ( $extensions as $name => $extension )
|
20 |
if ( 'uninstalled' !== $extension->status ) {
|
21 |
$has_extensions = true;
|
22 |
}
|
@@ -27,36 +32,26 @@ $extensions = $yoast_ga_admin->get_extensions();
|
|
27 |
</a>
|
28 |
|
29 |
<p><?php echo $extension->desc; ?></p>
|
30 |
-
|
31 |
<p>
|
32 |
-
<?php
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
<?php
|
42 |
-
} else {
|
43 |
-
?>
|
44 |
-
<button class="button-primary installed"><?php echo __( 'Installed', 'google-analytics-for-wordpress'); ?></button>
|
45 |
-
<?php
|
46 |
-
}
|
47 |
-
}
|
48 |
-
?>
|
49 |
</p>
|
50 |
</div>
|
51 |
-
|
52 |
-
}
|
53 |
-
?>
|
54 |
</div>
|
55 |
<div id="licenses" class="wpseotab gatab">
|
56 |
<?php
|
57 |
if ( ! $has_extensions ) {
|
58 |
echo '<p>' . __( 'You have not installed any extensions for Google Analytics by Yoast, so there are no licenses to activate.', 'google-analytics-for-wordpress' ) . '</p>';
|
59 |
-
}
|
|
|
60 |
do_action( 'yst_ga_show_license_form' );
|
61 |
}
|
62 |
?>
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
global $yoast_ga_admin;
|
8 |
|
9 |
echo $yoast_ga_admin->content_head();
|
21 |
<div class="tabwrapper">
|
22 |
<div id="extensions" class="wpseotab gatab">
|
23 |
<?php
|
24 |
+
foreach ( $extensions as $name => $extension ) :
|
25 |
if ( 'uninstalled' !== $extension->status ) {
|
26 |
$has_extensions = true;
|
27 |
}
|
32 |
</a>
|
33 |
|
34 |
<p><?php echo $extension->desc; ?></p>
|
|
|
35 |
<p>
|
36 |
+
<?php if ( 'uninstalled' == $extension->status ) : ?>
|
37 |
+
<a target="_blank" href="<?php echo $extension->url; ?>#utm_medium=banner&utm_source=gawp-config&utm_campaign=extension-page-banners" class="button-primary"><?php echo __( 'Get this extension', 'google-analytics-for-wordpress' ); ?></a>
|
38 |
+
<?php else : ?>
|
39 |
+
<?php if ( 'inactive' == $extension->status ) : ?>
|
40 |
+
<a href="#top#licenses" class="activate-link button-primary"><?php echo __( 'Activate License', 'google-analytics-for-wordpress' ); ?></a>
|
41 |
+
<?php else : ?>
|
42 |
+
<button class="button-primary installed"><?php echo __( 'Installed', 'google-analytics-for-wordpress' ); ?></button>
|
43 |
+
<?php endif; ?>
|
44 |
+
<?php endif; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
</p>
|
46 |
</div>
|
47 |
+
<?php endforeach; ?>
|
|
|
|
|
48 |
</div>
|
49 |
<div id="licenses" class="wpseotab gatab">
|
50 |
<?php
|
51 |
if ( ! $has_extensions ) {
|
52 |
echo '<p>' . __( 'You have not installed any extensions for Google Analytics by Yoast, so there are no licenses to activate.', 'google-analytics-for-wordpress' ) . '</p>';
|
53 |
+
}
|
54 |
+
else {
|
55 |
do_action( 'yst_ga_show_license_form' );
|
56 |
}
|
57 |
?>
|
admin/pages/settings.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
global $yoast_ga_admin;
|
3 |
|
4 |
echo $yoast_ga_admin->content_head();
|
@@ -49,10 +54,11 @@ echo Yoast_GA_Admin_Form::create_form( 'settings' );
|
|
49 |
echo '</div>';
|
50 |
echo '<div class="ga-form ga-form-input">';
|
51 |
echo '<label class="ga-form ga-form-text-label ga-form-label-left" id="yoast-ga-form-label-text-ga-authwithgoogle">' . __( 'Current UA-profile', 'google-analytics-for-wordpress' ) . '</label>';
|
52 |
-
echo $yoast_ga_admin->get_tracking_code();
|
53 |
echo '</div>';
|
54 |
-
}
|
55 |
-
|
|
|
56 |
|
57 |
echo '<div class="ga-form ga-form-input">';
|
58 |
echo '<label class="ga-form ga-form-text-label ga-form-label-left" id="yoast-ga-form-label-text-ga-authwithgoogle"> </label>';
|
@@ -66,13 +72,15 @@ echo Yoast_GA_Admin_Form::create_form( 'settings' );
|
|
66 |
echo Yoast_GA_Admin_Form::input( 'text', null, 'google_auth_code', null, null );
|
67 |
|
68 |
echo '<label class="ga-form ga-form-text-label ga-form-label-left" id="yoast-ga-form-label-text-ga-authwithgoogle-submit"> </label>';
|
69 |
-
echo '<div class="ga-form ga-form-input"><input type="submit" name="ga-form-settings" value="' . __('Save authentication code', 'google-analytics-for-wordpress') . '" class="button button-primary ga-form-submit" id="yoast-ga-form-submit-settings" onclick="yst_closepopupwindow();"></div>';
|
70 |
echo '</div>';
|
71 |
-
}
|
|
|
72 |
echo '<h3>' . __( 'Cannot connect to Google', 'google-analytics-for-wordpress' ) . '</h3>';
|
73 |
if ( $wp_block_google == false && $check_google_access == false ) {
|
74 |
echo '<p>' . __( 'Your server is blocking requests to Google, to fix this, add <code>*.googleapis.com</code> to the <code>WP_ACCESSIBLE_HOSTS</code> constant in your <em>wp-config.php</em> or ask your webhost to do this.', 'google-analytics-for-wordpress' ) . '</p>';
|
75 |
-
}
|
|
|
76 |
echo '<p>' . __( 'Your firewall or webhost is blocking requests to Google, please ask your webhost company to fix this.', 'google-analytics-for-wordpress' ) . '</p>';
|
77 |
}
|
78 |
echo '<p>' . __( 'Until this is fixed, you can only use the manual authentication method and cannot use the dashboards feature.', 'google-analytics-for-wordpress' ) . '</p>';
|
@@ -116,9 +124,9 @@ echo Yoast_GA_Admin_Form::create_form( 'settings' );
|
|
116 |
echo Yoast_GA_Admin_Form::input( 'text', __( 'Label for those links', 'google-analytics-for-wordpress' ), 'track_internal_as_label', null, 'The label to use for these links, this will be added to where the click came from, so if the label is "aff", the label for a click from the content of an article becomes "outbound-article-aff".' );
|
117 |
|
118 |
echo Yoast_GA_Admin_Form::input( 'checkbox', __( 'Tag links in RSS feed with campaign variables', 'google-analytics-for-wordpress' ), 'tag_links_in_rss', null, __( 'Do not use this feature if you use FeedBurner, as FeedBurner can do this automatically and better than this plugin can. Check <a href="https://support.google.com/feedburner/answer/165769?hl=en&ref_topic=13075" target="_blank">this help page</a> for info on how to enable this feature in FeedBurner.', 'google-analytics-for-wordpress' ) );
|
119 |
-
echo Yoast_GA_Admin_Form::input( 'checkbox', __( 'Allow anchor', 'google-analytics-for-wordpress' ), 'allow_anchor', null
|
120 |
echo Yoast_GA_Admin_Form::input( 'checkbox', __( 'Add <code>_setAllowLinker</code>', 'google-analytics-for-wordpress' ), 'add_allow_linker', null, sprintf( __( 'This adds a %1$s call to your tracking code, allowing you to use %2$s and related functions.', 'google-analytics-for-wordpress' ), '<a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory?csw=1#_gat.GA_Tracker_._setAllowLinker" target="_blank"><code>_setAllowLinker</code></a>', ' <code>_link</code>' ) );
|
121 |
-
echo Yoast_GA_Admin_Form::textarea(
|
122 |
|
123 |
do_action( 'yst_ga_advanced-tab' );
|
124 |
?>
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
global $yoast_ga_admin;
|
8 |
|
9 |
echo $yoast_ga_admin->content_head();
|
54 |
echo '</div>';
|
55 |
echo '<div class="ga-form ga-form-input">';
|
56 |
echo '<label class="ga-form ga-form-text-label ga-form-label-left" id="yoast-ga-form-label-text-ga-authwithgoogle">' . __( 'Current UA-profile', 'google-analytics-for-wordpress' ) . '</label>';
|
57 |
+
echo esc_html( $yoast_ga_admin->get_tracking_code() );
|
58 |
echo '</div>';
|
59 |
+
}
|
60 |
+
else {
|
61 |
+
echo Yoast_GA_Admin_Form::select( __( 'Analytics profile', 'google-analytics-for-wordpress' ), 'analytics_profile', $profiles, null, false, __( 'Select a profile', 'google-analytics-for-wordpress' ) );
|
62 |
|
63 |
echo '<div class="ga-form ga-form-input">';
|
64 |
echo '<label class="ga-form ga-form-text-label ga-form-label-left" id="yoast-ga-form-label-text-ga-authwithgoogle"> </label>';
|
72 |
echo Yoast_GA_Admin_Form::input( 'text', null, 'google_auth_code', null, null );
|
73 |
|
74 |
echo '<label class="ga-form ga-form-text-label ga-form-label-left" id="yoast-ga-form-label-text-ga-authwithgoogle-submit"> </label>';
|
75 |
+
echo '<div class="ga-form ga-form-input"><input type="submit" name="ga-form-settings" value="' . __( 'Save authentication code', 'google-analytics-for-wordpress' ) . '" class="button button-primary ga-form-submit" id="yoast-ga-form-submit-settings" onclick="yst_closepopupwindow();"></div>';
|
76 |
echo '</div>';
|
77 |
+
}
|
78 |
+
else {
|
79 |
echo '<h3>' . __( 'Cannot connect to Google', 'google-analytics-for-wordpress' ) . '</h3>';
|
80 |
if ( $wp_block_google == false && $check_google_access == false ) {
|
81 |
echo '<p>' . __( 'Your server is blocking requests to Google, to fix this, add <code>*.googleapis.com</code> to the <code>WP_ACCESSIBLE_HOSTS</code> constant in your <em>wp-config.php</em> or ask your webhost to do this.', 'google-analytics-for-wordpress' ) . '</p>';
|
82 |
+
}
|
83 |
+
else {
|
84 |
echo '<p>' . __( 'Your firewall or webhost is blocking requests to Google, please ask your webhost company to fix this.', 'google-analytics-for-wordpress' ) . '</p>';
|
85 |
}
|
86 |
echo '<p>' . __( 'Until this is fixed, you can only use the manual authentication method and cannot use the dashboards feature.', 'google-analytics-for-wordpress' ) . '</p>';
|
124 |
echo Yoast_GA_Admin_Form::input( 'text', __( 'Label for those links', 'google-analytics-for-wordpress' ), 'track_internal_as_label', null, 'The label to use for these links, this will be added to where the click came from, so if the label is "aff", the label for a click from the content of an article becomes "outbound-article-aff".' );
|
125 |
|
126 |
echo Yoast_GA_Admin_Form::input( 'checkbox', __( 'Tag links in RSS feed with campaign variables', 'google-analytics-for-wordpress' ), 'tag_links_in_rss', null, __( 'Do not use this feature if you use FeedBurner, as FeedBurner can do this automatically and better than this plugin can. Check <a href="https://support.google.com/feedburner/answer/165769?hl=en&ref_topic=13075" target="_blank">this help page</a> for info on how to enable this feature in FeedBurner.', 'google-analytics-for-wordpress' ) );
|
127 |
+
echo Yoast_GA_Admin_Form::input( 'checkbox', __( 'Allow anchor', 'google-analytics-for-wordpress' ), 'allow_anchor', null, sprintf( __( 'This adds a %1$s call to your tracking code, and makes RSS link tagging use a %2$s as well.', 'google-analytics-for-wordpress' ), '<a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiCampaignTracking?csw=1#_gat.GA_Tracker_._setAllowAnchor" target="_blank"><code>_setAllowAnchor</code></a>', '<code>#</code>' ) );
|
128 |
echo Yoast_GA_Admin_Form::input( 'checkbox', __( 'Add <code>_setAllowLinker</code>', 'google-analytics-for-wordpress' ), 'add_allow_linker', null, sprintf( __( 'This adds a %1$s call to your tracking code, allowing you to use %2$s and related functions.', 'google-analytics-for-wordpress' ), '<a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory?csw=1#_gat.GA_Tracker_._setAllowLinker" target="_blank"><code>_setAllowLinker</code></a>', ' <code>_link</code>' ) );
|
129 |
+
echo Yoast_GA_Admin_Form::textarea( __( 'Custom code', 'google-analytics-for-wordpress' ), 'custom_code', sprintf( __( 'Not for the average user: this allows you to add a line of code, to be added before the %1$s call.', 'google-analytics-for-wordpress' ), '<a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiBasicConfiguration#_gat.GA_Tracker_._trackPageview" target="_blank"><code>_trackPageview</code></a>' ) );
|
130 |
|
131 |
do_action( 'yst_ga_advanced-tab' );
|
132 |
?>
|
admin/views/content-footer.php
CHANGED
@@ -1,6 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
</div>
|
2 |
<div class="yoast-ga-banners">
|
3 |
-
<?php foreach ( $banners as $item ): ?>
|
4 |
<p><a href="<?php echo $item['url']; ?>" target="_blank">
|
5 |
<img src="<?php echo $item['banner']; ?>" alt="<?php echo $item['title']; ?>" class="yoast-banner" border="0" width="250" />
|
6 |
</a></p>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Admin
|
5 |
+
*/
|
6 |
+
|
7 |
+
?>
|
8 |
</div>
|
9 |
<div class="yoast-ga-banners">
|
10 |
+
<?php foreach ( $banners as $item ) : ?>
|
11 |
<p><a href="<?php echo $item['url']; ?>" target="_blank">
|
12 |
<img src="<?php echo $item['banner']; ?>" alt="<?php echo $item['title']; ?>" class="yoast-banner" border="0" width="250" />
|
13 |
</a></p>
|
frontend/abstract-class-tracking.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
3 |
/**
|
4 |
* The basic frontend tracking class for the GA plugin, extendable for the children
|
@@ -18,8 +22,7 @@ abstract class Yoast_GA_Tracking {
|
|
18 |
public $options;
|
19 |
|
20 |
/**
|
21 |
-
* Should the tracking code be added
|
22 |
-
* @var bool
|
23 |
*/
|
24 |
protected $do_tracking = null;
|
25 |
|
@@ -35,8 +38,8 @@ abstract class Yoast_GA_Tracking {
|
|
35 |
/**
|
36 |
* Output tracking link
|
37 |
*
|
38 |
-
* @param $label
|
39 |
-
* @param $matches
|
40 |
*
|
41 |
* @return mixed
|
42 |
*/
|
@@ -86,7 +89,7 @@ abstract class Yoast_GA_Tracking {
|
|
86 |
/**
|
87 |
* Parse article link
|
88 |
*
|
89 |
-
* @param $matches
|
90 |
*
|
91 |
* @return mixed
|
92 |
*/
|
@@ -97,7 +100,7 @@ abstract class Yoast_GA_Tracking {
|
|
97 |
/**
|
98 |
* Parse comment link
|
99 |
*
|
100 |
-
* @param $matches
|
101 |
*
|
102 |
* @return mixed
|
103 |
*/
|
@@ -108,7 +111,7 @@ abstract class Yoast_GA_Tracking {
|
|
108 |
/**
|
109 |
* Parse widget link
|
110 |
*
|
111 |
-
* @param $matches
|
112 |
*
|
113 |
* @return mixed
|
114 |
*/
|
@@ -119,7 +122,7 @@ abstract class Yoast_GA_Tracking {
|
|
119 |
/**
|
120 |
* Parse menu link
|
121 |
*
|
122 |
-
* @param $matches
|
123 |
*
|
124 |
* @return mixed
|
125 |
*/
|
@@ -130,7 +133,7 @@ abstract class Yoast_GA_Tracking {
|
|
130 |
/**
|
131 |
* Parse the_content or the_excerpt for links
|
132 |
*
|
133 |
-
* @param $text
|
134 |
*
|
135 |
* @return mixed
|
136 |
*/
|
@@ -149,7 +152,7 @@ abstract class Yoast_GA_Tracking {
|
|
149 |
/**
|
150 |
* Parse the widget content for links
|
151 |
*
|
152 |
-
* @param $text
|
153 |
*
|
154 |
* @return mixed
|
155 |
*/
|
@@ -165,7 +168,7 @@ abstract class Yoast_GA_Tracking {
|
|
165 |
/**
|
166 |
* Parse the nav menu for links
|
167 |
*
|
168 |
-
* @param $text
|
169 |
*
|
170 |
* @return mixed
|
171 |
*/
|
@@ -184,7 +187,7 @@ abstract class Yoast_GA_Tracking {
|
|
184 |
/**
|
185 |
* Parse comment text for links
|
186 |
*
|
187 |
-
* @param $text
|
188 |
*
|
189 |
* @return mixed
|
190 |
*/
|
@@ -203,7 +206,7 @@ abstract class Yoast_GA_Tracking {
|
|
203 |
/**
|
204 |
* Parse the domain
|
205 |
*
|
206 |
-
* @param $uri
|
207 |
*
|
208 |
* @return array|bool
|
209 |
*/
|
@@ -217,7 +220,8 @@ abstract class Yoast_GA_Tracking {
|
|
217 |
$host = $matches[2];
|
218 |
if ( preg_match( '/.*\..*\..*\..*$/', $host ) ) {
|
219 |
preg_match( $domainPatternUK, $host, $matches );
|
220 |
-
}
|
|
|
221 |
preg_match( $domainPatternUS, $host, $matches );
|
222 |
}
|
223 |
|
@@ -246,10 +250,12 @@ abstract class Yoast_GA_Tracking {
|
|
246 |
$link_attribute = str_replace( "onclick='" . $matches[1] . "'", $js_snippet_single, $link_attribute );
|
247 |
|
248 |
return $link_attribute;
|
249 |
-
}
|
|
|
250 |
if ( ! is_null( $onclick ) ) {
|
251 |
return 'onclick="' . $onclick . '" ' . $link_attribute;
|
252 |
-
}
|
|
|
253 |
return $link_attribute;
|
254 |
}
|
255 |
}
|
@@ -307,6 +313,16 @@ abstract class Yoast_GA_Tracking {
|
|
307 |
$this->do_tracking = false;
|
308 |
}
|
309 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
}
|
311 |
|
312 |
return $this->do_tracking;
|
@@ -363,12 +379,15 @@ abstract class Yoast_GA_Tracking {
|
|
363 |
$type = null;
|
364 |
if ( $protocol !== 'http' && $protocol !== 'https' && $protocol !== 'mailto' ) {
|
365 |
$type = null;
|
366 |
-
}
|
|
|
367 |
if ( ( $protocol == 'mailto' ) ) {
|
368 |
$type = 'email';
|
369 |
-
}
|
|
|
370 |
$type = 'download';
|
371 |
-
}
|
|
|
372 |
$type = $this->parse_outbound_type( $domain, $origin, $original_url );
|
373 |
}
|
374 |
}
|
@@ -403,7 +422,8 @@ abstract class Yoast_GA_Tracking {
|
|
403 |
if ( ! isset( $type ) ) {
|
404 |
$type = 'internal';
|
405 |
}
|
406 |
-
}
|
|
|
407 |
$type = 'outbound';
|
408 |
}
|
409 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Frontend
|
5 |
+
*/
|
6 |
|
7 |
/**
|
8 |
* The basic frontend tracking class for the GA plugin, extendable for the children
|
22 |
public $options;
|
23 |
|
24 |
/**
|
25 |
+
* @var boolean $do_tracking Should the tracking code be added
|
|
|
26 |
*/
|
27 |
protected $do_tracking = null;
|
28 |
|
38 |
/**
|
39 |
* Output tracking link
|
40 |
*
|
41 |
+
* @param string $label
|
42 |
+
* @param array $matches
|
43 |
*
|
44 |
* @return mixed
|
45 |
*/
|
89 |
/**
|
90 |
* Parse article link
|
91 |
*
|
92 |
+
* @param array $matches
|
93 |
*
|
94 |
* @return mixed
|
95 |
*/
|
100 |
/**
|
101 |
* Parse comment link
|
102 |
*
|
103 |
+
* @param array $matches
|
104 |
*
|
105 |
* @return mixed
|
106 |
*/
|
111 |
/**
|
112 |
* Parse widget link
|
113 |
*
|
114 |
+
* @param array $matches
|
115 |
*
|
116 |
* @return mixed
|
117 |
*/
|
122 |
/**
|
123 |
* Parse menu link
|
124 |
*
|
125 |
+
* @param array $matches
|
126 |
*
|
127 |
* @return mixed
|
128 |
*/
|
133 |
/**
|
134 |
* Parse the_content or the_excerpt for links
|
135 |
*
|
136 |
+
* @param string $text
|
137 |
*
|
138 |
* @return mixed
|
139 |
*/
|
152 |
/**
|
153 |
* Parse the widget content for links
|
154 |
*
|
155 |
+
* @param string $text
|
156 |
*
|
157 |
* @return mixed
|
158 |
*/
|
168 |
/**
|
169 |
* Parse the nav menu for links
|
170 |
*
|
171 |
+
* @param string $text
|
172 |
*
|
173 |
* @return mixed
|
174 |
*/
|
187 |
/**
|
188 |
* Parse comment text for links
|
189 |
*
|
190 |
+
* @param string $text
|
191 |
*
|
192 |
* @return mixed
|
193 |
*/
|
206 |
/**
|
207 |
* Parse the domain
|
208 |
*
|
209 |
+
* @param string $uri
|
210 |
*
|
211 |
* @return array|bool
|
212 |
*/
|
220 |
$host = $matches[2];
|
221 |
if ( preg_match( '/.*\..*\..*\..*$/', $host ) ) {
|
222 |
preg_match( $domainPatternUK, $host, $matches );
|
223 |
+
}
|
224 |
+
else {
|
225 |
preg_match( $domainPatternUS, $host, $matches );
|
226 |
}
|
227 |
|
250 |
$link_attribute = str_replace( "onclick='" . $matches[1] . "'", $js_snippet_single, $link_attribute );
|
251 |
|
252 |
return $link_attribute;
|
253 |
+
}
|
254 |
+
else {
|
255 |
if ( ! is_null( $onclick ) ) {
|
256 |
return 'onclick="' . $onclick . '" ' . $link_attribute;
|
257 |
+
}
|
258 |
+
else {
|
259 |
return $link_attribute;
|
260 |
}
|
261 |
}
|
313 |
$this->do_tracking = false;
|
314 |
}
|
315 |
}
|
316 |
+
|
317 |
+
/**
|
318 |
+
* Filter: 'yst_ga_track_super_admin' - Allows filtering if the Super admin should be tracked in a multi-site setup
|
319 |
+
*
|
320 |
+
* @api array $all_roles
|
321 |
+
*/
|
322 |
+
$track_super_admin = apply_filters( 'yst_ga_track_super_admin', true );
|
323 |
+
if ( $track_super_admin === false && is_super_admin() ) {
|
324 |
+
$this->do_tracking = false;
|
325 |
+
}
|
326 |
}
|
327 |
|
328 |
return $this->do_tracking;
|
379 |
$type = null;
|
380 |
if ( $protocol !== 'http' && $protocol !== 'https' && $protocol !== 'mailto' ) {
|
381 |
$type = null;
|
382 |
+
}
|
383 |
+
else {
|
384 |
if ( ( $protocol == 'mailto' ) ) {
|
385 |
$type = 'email';
|
386 |
+
}
|
387 |
+
elseif ( in_array( $extension, $download_extensions ) ) {
|
388 |
$type = 'download';
|
389 |
+
}
|
390 |
+
else {
|
391 |
$type = $this->parse_outbound_type( $domain, $origin, $original_url );
|
392 |
}
|
393 |
}
|
422 |
if ( ! isset( $type ) ) {
|
423 |
$type = 'internal';
|
424 |
}
|
425 |
+
}
|
426 |
+
elseif ( $domain['domain'] != $origin['domain'] ) {
|
427 |
$type = 'outbound';
|
428 |
}
|
429 |
|
frontend/class-frontend.php
CHANGED
@@ -1,10 +1,15 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
3 |
/**
|
4 |
* The basic frontend class for the GA plugin, extendable for the children
|
5 |
*/
|
6 |
class Yoast_GA_Frontend {
|
7 |
|
|
|
8 |
protected $options;
|
9 |
|
10 |
/**
|
@@ -21,7 +26,8 @@ class Yoast_GA_Frontend {
|
|
21 |
// Check if the customer is running Universal or not (Enable in GA Settings -> Universal)
|
22 |
if ( isset( $this->options['enable_universal'] ) && $this->options['enable_universal'] == 1 ) {
|
23 |
new Yoast_GA_Universal;
|
24 |
-
}
|
|
|
25 |
new Yoast_GA_JS;
|
26 |
}
|
27 |
|
@@ -39,7 +45,8 @@ class Yoast_GA_Frontend {
|
|
39 |
if ( is_feed() ) {
|
40 |
if ( $this->options['allow_anchor'] ) {
|
41 |
$delimiter = '#';
|
42 |
-
}
|
|
|
43 |
$delimiter = '?';
|
44 |
if ( strpos( $guid, $delimiter ) > 0 ) {
|
45 |
$delimiter = '&';
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Frontend
|
5 |
+
*/
|
6 |
|
7 |
/**
|
8 |
* The basic frontend class for the GA plugin, extendable for the children
|
9 |
*/
|
10 |
class Yoast_GA_Frontend {
|
11 |
|
12 |
+
/** @var array $options */
|
13 |
protected $options;
|
14 |
|
15 |
/**
|
26 |
// Check if the customer is running Universal or not (Enable in GA Settings -> Universal)
|
27 |
if ( isset( $this->options['enable_universal'] ) && $this->options['enable_universal'] == 1 ) {
|
28 |
new Yoast_GA_Universal;
|
29 |
+
}
|
30 |
+
else {
|
31 |
new Yoast_GA_JS;
|
32 |
}
|
33 |
|
45 |
if ( is_feed() ) {
|
46 |
if ( $this->options['allow_anchor'] ) {
|
47 |
$delimiter = '#';
|
48 |
+
}
|
49 |
+
else {
|
50 |
$delimiter = '?';
|
51 |
if ( strpos( $guid, $delimiter ) > 0 ) {
|
52 |
$delimiter = '&';
|
frontend/class-ga-js.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
3 |
/**
|
4 |
* The frontend JS class
|
@@ -10,7 +14,7 @@ class Yoast_GA_JS extends Yoast_GA_Tracking {
|
|
10 |
*
|
11 |
* @param bool $return_array
|
12 |
*
|
13 |
-
* @return array
|
14 |
*/
|
15 |
public function tracking( $return_array = false ) {
|
16 |
global $wp_query;
|
@@ -23,7 +27,8 @@ class Yoast_GA_JS extends Yoast_GA_Tracking {
|
|
23 |
|
24 |
if ( isset( $this->options['subdomain_tracking'] ) && $this->options['subdomain_tracking'] != '' ) {
|
25 |
$domain = $this->options['subdomain_tracking'];
|
26 |
-
}
|
|
|
27 |
$domain = null; // Default domain value
|
28 |
}
|
29 |
|
@@ -33,7 +38,7 @@ class Yoast_GA_JS extends Yoast_GA_Tracking {
|
|
33 |
|
34 |
$ua_code = $this->get_tracking_code();
|
35 |
if ( is_null( $ua_code ) && $return_array == false ) {
|
36 |
-
return;
|
37 |
}
|
38 |
|
39 |
$gaq_push[] = "'_setAccount', '" . $ua_code . "'";
|
@@ -74,23 +79,28 @@ class Yoast_GA_JS extends Yoast_GA_Tracking {
|
|
74 |
|
75 |
if ( is_404() ) {
|
76 |
$gaq_push[] = "'_trackPageview','/404.html?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer";
|
77 |
-
}
|
|
|
78 |
if ( $wp_query->is_search ) {
|
79 |
$pushstr = "'_trackPageview','/?s=";
|
80 |
if ( $wp_query->found_posts == 0 ) {
|
81 |
$gaq_push[] = $pushstr . 'no-results:' . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=no-results'";
|
82 |
-
}
|
|
|
83 |
if ( $wp_query->found_posts == 1 ) {
|
84 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=1-result'";
|
85 |
-
}
|
|
|
86 |
if ( $wp_query->found_posts > 1 && $wp_query->found_posts < 6 ) {
|
87 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=2-5-results'";
|
88 |
-
}
|
|
|
89 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=plus-5-results'";
|
90 |
}
|
91 |
}
|
92 |
}
|
93 |
-
}
|
|
|
94 |
$gaq_push[] = "'_trackPageview'";
|
95 |
}
|
96 |
}
|
@@ -112,10 +122,12 @@ class Yoast_GA_JS extends Yoast_GA_Tracking {
|
|
112 |
// Include the tracking view
|
113 |
if ( $this->options['debug_mode'] == 1 ) {
|
114 |
require( 'views/tracking-debug.php' );
|
115 |
-
}
|
|
|
116 |
require( 'views/tracking-ga-js.php' );
|
117 |
}
|
118 |
-
}
|
|
|
119 |
require( 'views/tracking-usergroup.php' );
|
120 |
}
|
121 |
}
|
@@ -152,7 +164,8 @@ class Yoast_GA_JS extends Yoast_GA_Tracking {
|
|
152 |
case 'download':
|
153 |
if ( $this->options['track_download_as'] == 'pageview' ) {
|
154 |
$onclick = "_gaq.push(['_trackPageview','download/" . esc_attr( $full_url ) . "']);";
|
155 |
-
}
|
|
|
156 |
$onclick = "_gaq.push(['_trackEvent','download','" . esc_attr( $full_url ) . "']);";
|
157 |
}
|
158 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Frontend
|
5 |
+
*/
|
6 |
|
7 |
/**
|
8 |
* The frontend JS class
|
14 |
*
|
15 |
* @param bool $return_array
|
16 |
*
|
17 |
+
* @return null|array
|
18 |
*/
|
19 |
public function tracking( $return_array = false ) {
|
20 |
global $wp_query;
|
27 |
|
28 |
if ( isset( $this->options['subdomain_tracking'] ) && $this->options['subdomain_tracking'] != '' ) {
|
29 |
$domain = $this->options['subdomain_tracking'];
|
30 |
+
}
|
31 |
+
else {
|
32 |
$domain = null; // Default domain value
|
33 |
}
|
34 |
|
38 |
|
39 |
$ua_code = $this->get_tracking_code();
|
40 |
if ( is_null( $ua_code ) && $return_array == false ) {
|
41 |
+
return null;
|
42 |
}
|
43 |
|
44 |
$gaq_push[] = "'_setAccount', '" . $ua_code . "'";
|
79 |
|
80 |
if ( is_404() ) {
|
81 |
$gaq_push[] = "'_trackPageview','/404.html?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer";
|
82 |
+
}
|
83 |
+
else {
|
84 |
if ( $wp_query->is_search ) {
|
85 |
$pushstr = "'_trackPageview','/?s=";
|
86 |
if ( $wp_query->found_posts == 0 ) {
|
87 |
$gaq_push[] = $pushstr . 'no-results:' . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=no-results'";
|
88 |
+
}
|
89 |
+
else {
|
90 |
if ( $wp_query->found_posts == 1 ) {
|
91 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=1-result'";
|
92 |
+
}
|
93 |
+
else {
|
94 |
if ( $wp_query->found_posts > 1 && $wp_query->found_posts < 6 ) {
|
95 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=2-5-results'";
|
96 |
+
}
|
97 |
+
else {
|
98 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=plus-5-results'";
|
99 |
}
|
100 |
}
|
101 |
}
|
102 |
+
}
|
103 |
+
else {
|
104 |
$gaq_push[] = "'_trackPageview'";
|
105 |
}
|
106 |
}
|
122 |
// Include the tracking view
|
123 |
if ( $this->options['debug_mode'] == 1 ) {
|
124 |
require( 'views/tracking-debug.php' );
|
125 |
+
}
|
126 |
+
else {
|
127 |
require( 'views/tracking-ga-js.php' );
|
128 |
}
|
129 |
+
}
|
130 |
+
else {
|
131 |
require( 'views/tracking-usergroup.php' );
|
132 |
}
|
133 |
}
|
164 |
case 'download':
|
165 |
if ( $this->options['track_download_as'] == 'pageview' ) {
|
166 |
$onclick = "_gaq.push(['_trackPageview','download/" . esc_attr( $full_url ) . "']);";
|
167 |
+
}
|
168 |
+
else {
|
169 |
$onclick = "_gaq.push(['_trackEvent','download','" . esc_attr( $full_url ) . "']);";
|
170 |
}
|
171 |
|
frontend/class-universal.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
3 |
/**
|
4 |
* This is the frontend class for the GA Universal code
|
@@ -14,6 +18,10 @@ class Yoast_GA_Universal extends Yoast_GA_Tracking {
|
|
14 |
|
15 |
/**
|
16 |
* Function to output the GA Tracking code in the wp_head()
|
|
|
|
|
|
|
|
|
17 |
*/
|
18 |
public function tracking( $return_array = false ) {
|
19 |
global $wp_query;
|
@@ -26,7 +34,8 @@ class Yoast_GA_Universal extends Yoast_GA_Tracking {
|
|
26 |
|
27 |
if ( isset( $this->options['subdomain_tracking'] ) && $this->options['subdomain_tracking'] != '' ) {
|
28 |
$domain = $this->options['subdomain_tracking'];
|
29 |
-
}
|
|
|
30 |
$domain = 'auto'; // Default domain value
|
31 |
}
|
32 |
|
@@ -36,20 +45,23 @@ class Yoast_GA_Universal extends Yoast_GA_Tracking {
|
|
36 |
|
37 |
$ua_code = $this->get_tracking_code();
|
38 |
if ( is_null( $ua_code ) && $return_array == false ) {
|
39 |
-
return;
|
40 |
}
|
41 |
|
42 |
// Set tracking code here
|
43 |
if ( ! empty( $ua_code ) ) {
|
44 |
if ( $this->options['add_allow_linker'] && ! $this->options['allow_anchor'] ) {
|
45 |
$gaq_push[] = "'create', '" . $ua_code . "', '" . $domain . "', {'allowLinker': true}";
|
46 |
-
}
|
|
|
47 |
if ( $this->options['allow_anchor'] && ! $this->options['add_allow_linker'] ) {
|
48 |
$gaq_push[] = "'create', '" . $ua_code . "', '" . $domain . "', {'allowAnchor': true}";
|
49 |
-
}
|
|
|
50 |
if ( $this->options['allow_anchor'] && $this->options['add_allow_linker'] ) {
|
51 |
$gaq_push[] = "'create', '" . $ua_code . "', '" . $domain . "', {'allowAnchor': true, 'allowLinker': true}";
|
52 |
-
}
|
|
|
53 |
$gaq_push[] = "'create', '" . $ua_code . "', '" . $domain . "'";
|
54 |
}
|
55 |
}
|
@@ -83,23 +95,28 @@ class Yoast_GA_Universal extends Yoast_GA_Tracking {
|
|
83 |
|
84 |
if ( is_404() ) {
|
85 |
$gaq_push[] = "'send','pageview','/404.html?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer";
|
86 |
-
}
|
|
|
87 |
if ( $wp_query->is_search ) {
|
88 |
$pushstr = "'send','pageview','/?s=";
|
89 |
if ( $wp_query->found_posts == 0 ) {
|
90 |
$gaq_push[] = $pushstr . 'no-results:' . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=no-results'";
|
91 |
-
}
|
|
|
92 |
if ( $wp_query->found_posts == 1 ) {
|
93 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=1-result'";
|
94 |
-
}
|
|
|
95 |
if ( $wp_query->found_posts > 1 && $wp_query->found_posts < 6 ) {
|
96 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=2-5-results'";
|
97 |
-
}
|
|
|
98 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=plus-5-results'";
|
99 |
}
|
100 |
}
|
101 |
}
|
102 |
-
}
|
|
|
103 |
$gaq_push[] = "'send','pageview'";
|
104 |
}
|
105 |
}
|
@@ -120,10 +137,12 @@ class Yoast_GA_Universal extends Yoast_GA_Tracking {
|
|
120 |
// Include the tracking view
|
121 |
if ( $this->options['debug_mode'] == 1 ) {
|
122 |
require( 'views/tracking-debug.php' );
|
123 |
-
}
|
|
|
124 |
require( 'views/tracking-universal.php' );
|
125 |
}
|
126 |
-
}
|
|
|
127 |
require( 'views/tracking-usergroup.php' );
|
128 |
}
|
129 |
}
|
@@ -151,7 +170,8 @@ class Yoast_GA_Universal extends Yoast_GA_Tracking {
|
|
151 |
case 'download':
|
152 |
if ( $this->options['track_download_as'] == 'pageview' ) {
|
153 |
$onclick = "__gaTracker('send', 'pageview', '" . esc_attr( $full_url ) . "');";
|
154 |
-
}
|
|
|
155 |
$onclick = "__gaTracker('send', 'event', 'download', '" . esc_attr( $full_url ) . "');";
|
156 |
}
|
157 |
|
@@ -176,7 +196,7 @@ class Yoast_GA_Universal extends Yoast_GA_Tracking {
|
|
176 |
|
177 |
$link['link_attributes'] = $this->output_add_onclick( $link['link_attributes'], $onclick );
|
178 |
|
179 |
-
if( !empty( $link['link_attributes'] ) ) {
|
180 |
return '<a href="' . $full_url . '" ' . trim( $link['link_attributes'] ) . '>' . $link['link_text'] . '</a>';
|
181 |
}
|
182 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Frontend
|
5 |
+
*/
|
6 |
|
7 |
/**
|
8 |
* This is the frontend class for the GA Universal code
|
18 |
|
19 |
/**
|
20 |
* Function to output the GA Tracking code in the wp_head()
|
21 |
+
*
|
22 |
+
* @param boolean $return_array
|
23 |
+
*
|
24 |
+
* @return null|array
|
25 |
*/
|
26 |
public function tracking( $return_array = false ) {
|
27 |
global $wp_query;
|
34 |
|
35 |
if ( isset( $this->options['subdomain_tracking'] ) && $this->options['subdomain_tracking'] != '' ) {
|
36 |
$domain = $this->options['subdomain_tracking'];
|
37 |
+
}
|
38 |
+
else {
|
39 |
$domain = 'auto'; // Default domain value
|
40 |
}
|
41 |
|
45 |
|
46 |
$ua_code = $this->get_tracking_code();
|
47 |
if ( is_null( $ua_code ) && $return_array == false ) {
|
48 |
+
return null;
|
49 |
}
|
50 |
|
51 |
// Set tracking code here
|
52 |
if ( ! empty( $ua_code ) ) {
|
53 |
if ( $this->options['add_allow_linker'] && ! $this->options['allow_anchor'] ) {
|
54 |
$gaq_push[] = "'create', '" . $ua_code . "', '" . $domain . "', {'allowLinker': true}";
|
55 |
+
}
|
56 |
+
else {
|
57 |
if ( $this->options['allow_anchor'] && ! $this->options['add_allow_linker'] ) {
|
58 |
$gaq_push[] = "'create', '" . $ua_code . "', '" . $domain . "', {'allowAnchor': true}";
|
59 |
+
}
|
60 |
+
else {
|
61 |
if ( $this->options['allow_anchor'] && $this->options['add_allow_linker'] ) {
|
62 |
$gaq_push[] = "'create', '" . $ua_code . "', '" . $domain . "', {'allowAnchor': true, 'allowLinker': true}";
|
63 |
+
}
|
64 |
+
else {
|
65 |
$gaq_push[] = "'create', '" . $ua_code . "', '" . $domain . "'";
|
66 |
}
|
67 |
}
|
95 |
|
96 |
if ( is_404() ) {
|
97 |
$gaq_push[] = "'send','pageview','/404.html?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer";
|
98 |
+
}
|
99 |
+
else {
|
100 |
if ( $wp_query->is_search ) {
|
101 |
$pushstr = "'send','pageview','/?s=";
|
102 |
if ( $wp_query->found_posts == 0 ) {
|
103 |
$gaq_push[] = $pushstr . 'no-results:' . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=no-results'";
|
104 |
+
}
|
105 |
+
else {
|
106 |
if ( $wp_query->found_posts == 1 ) {
|
107 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=1-result'";
|
108 |
+
}
|
109 |
+
else {
|
110 |
if ( $wp_query->found_posts > 1 && $wp_query->found_posts < 6 ) {
|
111 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=2-5-results'";
|
112 |
+
}
|
113 |
+
else {
|
114 |
$gaq_push[] = $pushstr . rawurlencode( $wp_query->query_vars['s'] ) . "&cat=plus-5-results'";
|
115 |
}
|
116 |
}
|
117 |
}
|
118 |
+
}
|
119 |
+
else {
|
120 |
$gaq_push[] = "'send','pageview'";
|
121 |
}
|
122 |
}
|
137 |
// Include the tracking view
|
138 |
if ( $this->options['debug_mode'] == 1 ) {
|
139 |
require( 'views/tracking-debug.php' );
|
140 |
+
}
|
141 |
+
else {
|
142 |
require( 'views/tracking-universal.php' );
|
143 |
}
|
144 |
+
}
|
145 |
+
else {
|
146 |
require( 'views/tracking-usergroup.php' );
|
147 |
}
|
148 |
}
|
170 |
case 'download':
|
171 |
if ( $this->options['track_download_as'] == 'pageview' ) {
|
172 |
$onclick = "__gaTracker('send', 'pageview', '" . esc_attr( $full_url ) . "');";
|
173 |
+
}
|
174 |
+
else {
|
175 |
$onclick = "__gaTracker('send', 'event', 'download', '" . esc_attr( $full_url ) . "');";
|
176 |
}
|
177 |
|
196 |
|
197 |
$link['link_attributes'] = $this->output_add_onclick( $link['link_attributes'], $onclick );
|
198 |
|
199 |
+
if ( ! empty( $link['link_attributes'] ) ) {
|
200 |
return '<a href="' . $full_url . '" ' . trim( $link['link_attributes'] ) . '>' . $link['link_text'] . '</a>';
|
201 |
}
|
202 |
|
frontend/views/tracking-debug.php
CHANGED
@@ -1,3 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<!-- This site uses the Google Analytics by Yoast plugin v<?php echo GAWP_VERSION; ?> - https://yoast.com/wordpress/plugins/google-analytics/ -->
|
2 |
<!-- @Webmaster, normally you will find the Google Analytics tracking code here, but you have enabled the Debug Mode. Change that in Analytics -> (Tab) Debug mode and disable Debug Mode to enable the tracking of your site. -->
|
3 |
<!-- / Google Analytics by Yoast -->
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Frontend
|
5 |
+
*/
|
6 |
+
|
7 |
+
?>
|
8 |
<!-- This site uses the Google Analytics by Yoast plugin v<?php echo GAWP_VERSION; ?> - https://yoast.com/wordpress/plugins/google-analytics/ -->
|
9 |
<!-- @Webmaster, normally you will find the Google Analytics tracking code here, but you have enabled the Debug Mode. Change that in Analytics -> (Tab) Debug mode and disable Debug Mode to enable the tracking of your site. -->
|
10 |
<!-- / Google Analytics by Yoast -->
|
frontend/views/tracking-ga-js.php
CHANGED
@@ -1,3 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<!-- This site uses the Google Analytics by Yoast plugin v<?php echo GAWP_VERSION; ?> - Universal disabled - https://yoast.com/wordpress/plugins/google-analytics/ -->
|
2 |
<script type="text/javascript">
|
3 |
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Frontend
|
5 |
+
*/
|
6 |
+
|
7 |
+
?>
|
8 |
<!-- This site uses the Google Analytics by Yoast plugin v<?php echo GAWP_VERSION; ?> - Universal disabled - https://yoast.com/wordpress/plugins/google-analytics/ -->
|
9 |
<script type="text/javascript">
|
10 |
|
frontend/views/tracking-universal.php
CHANGED
@@ -1,3 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<!-- This site uses the Google Analytics by Yoast plugin v<?php echo GAWP_VERSION; ?> - Universal enabled - https://yoast.com/wordpress/plugins/google-analytics/ -->
|
2 |
<script type="text/javascript">
|
3 |
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
@@ -6,18 +13,18 @@
|
|
6 |
})(window,document,'script','//www.google-analytics.com/analytics.js','__gaTracker');
|
7 |
|
8 |
<?php
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
}
|
18 |
}
|
19 |
}
|
20 |
-
|
|
|
21 |
|
22 |
</script>
|
23 |
<!-- / Google Analytics by Yoast -->
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Frontend
|
5 |
+
*/
|
6 |
+
|
7 |
+
?>
|
8 |
<!-- This site uses the Google Analytics by Yoast plugin v<?php echo GAWP_VERSION; ?> - Universal enabled - https://yoast.com/wordpress/plugins/google-analytics/ -->
|
9 |
<script type="text/javascript">
|
10 |
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
13 |
})(window,document,'script','//www.google-analytics.com/analytics.js','__gaTracker');
|
14 |
|
15 |
<?php
|
16 |
+
// List the GA elements from the class-ga-js.php
|
17 |
+
if ( count( $gaq_push ) >= 1 ) {
|
18 |
+
foreach ( $gaq_push as $item ) {
|
19 |
+
if ( ! is_array( $item ) ) {
|
20 |
+
echo ' __gaTracker('.$item.");\n";
|
21 |
+
}
|
22 |
+
elseif ( isset( $item['value'] ) ) {
|
23 |
+
echo ' '.$item['value'] . "\n";
|
|
|
24 |
}
|
25 |
}
|
26 |
+
}
|
27 |
+
?>
|
28 |
|
29 |
</script>
|
30 |
<!-- / Google Analytics by Yoast -->
|
frontend/views/tracking-usergroup.php
CHANGED
@@ -1,3 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<!-- This site uses the Google Analytics by Yoast plugin v<?php echo GAWP_VERSION; ?> - https://yoast.com/wordpress/plugins/google-analytics/ -->
|
2 |
<!-- @Webmaster, normally you will find the Google Analytics tracking code here, but you are in the disabled user groups. Change that in Analytics -> Settings (Ignore usergroups) -->
|
3 |
<!-- / Google Analytics by Yoast -->
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Frontend
|
5 |
+
*/
|
6 |
+
|
7 |
+
?>
|
8 |
<!-- This site uses the Google Analytics by Yoast plugin v<?php echo GAWP_VERSION; ?> - https://yoast.com/wordpress/plugins/google-analytics/ -->
|
9 |
<!-- @Webmaster, normally you will find the Google Analytics tracking code here, but you are in the disabled user groups. Change that in Analytics -> Settings (Ignore usergroups) -->
|
10 |
<!-- / Google Analytics by Yoast -->
|
googleanalytics.php
CHANGED
@@ -1,36 +1,41 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
This program is
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
// This plugin was originally based on Rich Boakes' Analytics plugin: http://boakes.org/analytics, but has since been rewritten and refactored multiple times.
|
32 |
|
33 |
-
define( 'GAWP_VERSION', '5.3.
|
34 |
|
35 |
define( 'GAWP_FILE', __FILE__ );
|
36 |
|
@@ -47,9 +52,61 @@ if ( is_admin() ) {
|
|
47 |
global $yoast_ga_admin;
|
48 |
$yoast_ga_admin = new Yoast_GA_Admin;
|
49 |
|
50 |
-
}
|
|
|
51 |
global $yoast_ga_frontend;
|
52 |
$yoast_ga_frontend = new Yoast_GA_Frontend;
|
53 |
}
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
register_deactivation_hook( __FILE__, array( 'Yoast_GA_Admin', 'ga_deactivation_hook' ) );
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Main
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Plugin Name: Google Analytics by Yoast
|
9 |
+
* Plugin URI: https://yoast.com/wordpress/plugins/google-analytics/#utm_source=wordpress&utm_medium=plugin&utm_campaign=wpgaplugin&utm_content=v504
|
10 |
+
* Description: This plugin makes it simple to add Google Analytics to your WordPress site, adding lots of features, e.g. error page, search result and automatic outgoing links and download tracking.
|
11 |
+
* Author: Team Yoast
|
12 |
+
* Version: 5.3.3
|
13 |
+
* Requires at least: 3.8
|
14 |
+
* Author URI: https://yoast.com/
|
15 |
+
* License: GPL v3
|
16 |
+
* Text Domain: google-analytics-for-wordpress
|
17 |
+
* Domain Path: /languages
|
18 |
+
*
|
19 |
+
* Google Analytics for WordPress
|
20 |
+
* Copyright (C) 2008-2015, Team Yoast, support@yoast.com
|
21 |
+
*
|
22 |
+
* This program is free software: you can redistribute it and/or modify
|
23 |
+
* it under the terms of the GNU General Public License as published by
|
24 |
+
* the Free Software Foundation, either version 3 of the License, or
|
25 |
+
* (at your option) any later version.
|
26 |
+
*
|
27 |
+
* This program is distributed in the hope that it will be useful,
|
28 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
29 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
30 |
+
* GNU General Public License for more details.
|
31 |
+
*
|
32 |
+
* You should have received a copy of the GNU General Public License
|
33 |
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
34 |
+
*/
|
35 |
|
36 |
// This plugin was originally based on Rich Boakes' Analytics plugin: http://boakes.org/analytics, but has since been rewritten and refactored multiple times.
|
37 |
|
38 |
+
define( 'GAWP_VERSION', '5.3.3' );
|
39 |
|
40 |
define( 'GAWP_FILE', __FILE__ );
|
41 |
|
52 |
global $yoast_ga_admin;
|
53 |
$yoast_ga_admin = new Yoast_GA_Admin;
|
54 |
|
55 |
+
}
|
56 |
+
else {
|
57 |
global $yoast_ga_frontend;
|
58 |
$yoast_ga_frontend = new Yoast_GA_Frontend;
|
59 |
}
|
60 |
|
61 |
+
/* ***************************** BOOTSTRAP / HOOK INTO WP *************************** */
|
62 |
+
$spl_autoload_exists = function_exists( 'spl_autoload_register' );
|
63 |
+
$filter_input_exists = function_exists( 'filter_input' );
|
64 |
+
if ( ! $spl_autoload_exists ) {
|
65 |
+
add_action( 'admin_init', 'yoast_wpseo_self_deactivate_spl', 1 );
|
66 |
+
}
|
67 |
+
if ( ! $filter_input_exists ) {
|
68 |
+
add_action( 'admin_init', 'yoast_wpseo_self_deactivate_filter_input', 1 );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Throw an error if the PHP SPL extension is disabled (prevent white screens) and self-deactivate plugin
|
73 |
+
*
|
74 |
+
* @since 5.3.3
|
75 |
+
*/
|
76 |
+
function yoast_ga_self_deactivate_spl() {
|
77 |
+
if ( is_admin() ) {
|
78 |
+
yoast_ga_extenstion_notice(
|
79 |
+
esc_html__( 'The Standard PHP Library (SPL) extension seem to be unavailable. Please ask your web host to enable it.', 'google-analytics-for-wordpress' )
|
80 |
+
);
|
81 |
+
}
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Throw an error if the filter extension is disabled (prevent white screens) and self-deactivate plugin
|
86 |
+
*
|
87 |
+
* @since 5.3.3
|
88 |
+
*/
|
89 |
+
function yoast_ga_self_deactivate_filter_input() {
|
90 |
+
if ( is_admin() ) {
|
91 |
+
yoast_ga_extenstion_notice(
|
92 |
+
esc_html__( 'The (standard) PHP filter extension seem to be unavailable. Please ask your web host to enable it.', 'google-analytics-for-wordpress' )
|
93 |
+
);
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Show a notice in the admin
|
99 |
+
*
|
100 |
+
* @param string $message
|
101 |
+
*
|
102 |
+
* @since 5.3.3
|
103 |
+
*/
|
104 |
+
function yoast_ga_extenstion_notice( $message ) {
|
105 |
+
add_action( 'admin_notices', create_function( $message, 'echo \'<div class="error"><p>\' . __( \'Activation failed:\', \'google-analytics-for-wordpress\' ) . \' \' . $message . \'</p></div>\';' ) );
|
106 |
+
deactivate_plugins( plugin_basename( GAWP_FILE ) );
|
107 |
+
if ( isset( $_GET['activate'] ) ) {
|
108 |
+
unset( $_GET['activate'] );
|
109 |
+
}
|
110 |
+
}
|
111 |
+
|
112 |
register_deactivation_hook( __FILE__, array( 'Yoast_GA_Admin', 'ga_deactivation_hook' ) );
|
includes/class-options.php
CHANGED
@@ -1,7 +1,15 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
class Yoast_GA_Options {
|
4 |
|
|
|
5 |
public $options;
|
6 |
|
7 |
/**
|
@@ -89,8 +97,8 @@ class Yoast_GA_Options {
|
|
89 |
* @return bool
|
90 |
*/
|
91 |
public function update_option( $val ) {
|
92 |
-
$options
|
93 |
-
$options[$this->option_prefix] = $val;
|
94 |
|
95 |
return update_option( $this->option_name, $options );
|
96 |
}
|
@@ -103,14 +111,14 @@ class Yoast_GA_Options {
|
|
103 |
public function get_options() {
|
104 |
$options = get_option( $this->option_name );
|
105 |
|
106 |
-
return $options[$this->option_prefix];
|
107 |
}
|
108 |
|
109 |
/**
|
110 |
* Check if all the options are set, to prevent a notice if debugging is enabled
|
111 |
* When we have new changes, the settings are saved to the options class
|
112 |
*
|
113 |
-
* @param $options
|
114 |
*
|
115 |
* @return mixed
|
116 |
*/
|
@@ -118,8 +126,8 @@ class Yoast_GA_Options {
|
|
118 |
|
119 |
$changes = 0;
|
120 |
foreach ( $this->default_ga_values() as $key => $value ) {
|
121 |
-
if ( ! isset( $options[$key] ) ) {
|
122 |
-
$options[$key] = $value;
|
123 |
$changes ++;
|
124 |
}
|
125 |
}
|
@@ -142,7 +150,8 @@ class Yoast_GA_Options {
|
|
142 |
|
143 |
if ( ! empty( $this->options['analytics_profile'] ) && ! empty( $this->options['analytics_profile_code'] ) ) {
|
144 |
$tracking_code = $this->options['analytics_profile_code'];
|
145 |
-
}
|
|
|
146 |
// Analytics profile is still holding the UA code
|
147 |
$tracking_code = $this->options['analytics_profile'];
|
148 |
}
|
@@ -157,14 +166,14 @@ class Yoast_GA_Options {
|
|
157 |
/**
|
158 |
* Convert a option value to a bool
|
159 |
*
|
160 |
-
* @param $option_name
|
161 |
*
|
162 |
* @return bool
|
163 |
*/
|
164 |
public function option_value_to_bool( $option_name ) {
|
165 |
$this->options = $this->get_options();
|
166 |
|
167 |
-
if ( isset( $this->options[$option_name] ) && $this->options[$option_name] == 1 ) {
|
168 |
return true;
|
169 |
}
|
170 |
|
@@ -220,9 +229,9 @@ class Yoast_GA_Options {
|
|
220 |
// Fallback to make sure every default option has a value
|
221 |
$defaults = $this->default_ga_values();
|
222 |
if ( is_array( $defaults ) ) {
|
223 |
-
foreach ( $defaults[$this->option_prefix] as $key => $value ) {
|
224 |
-
if ( ! isset( $this->options[$key] ) ) {
|
225 |
-
$this->options[$key] = $value;
|
226 |
}
|
227 |
}
|
228 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Includes
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Options class.
|
9 |
+
*/
|
10 |
class Yoast_GA_Options {
|
11 |
|
12 |
+
/** @var array */
|
13 |
public $options;
|
14 |
|
15 |
/**
|
97 |
* @return bool
|
98 |
*/
|
99 |
public function update_option( $val ) {
|
100 |
+
$options = get_option( $this->option_name );
|
101 |
+
$options[ $this->option_prefix ] = $val;
|
102 |
|
103 |
return update_option( $this->option_name, $options );
|
104 |
}
|
111 |
public function get_options() {
|
112 |
$options = get_option( $this->option_name );
|
113 |
|
114 |
+
return $options[ $this->option_prefix ];
|
115 |
}
|
116 |
|
117 |
/**
|
118 |
* Check if all the options are set, to prevent a notice if debugging is enabled
|
119 |
* When we have new changes, the settings are saved to the options class
|
120 |
*
|
121 |
+
* @param array $options
|
122 |
*
|
123 |
* @return mixed
|
124 |
*/
|
126 |
|
127 |
$changes = 0;
|
128 |
foreach ( $this->default_ga_values() as $key => $value ) {
|
129 |
+
if ( ! isset( $options[ $key ] ) ) {
|
130 |
+
$options[ $key ] = $value;
|
131 |
$changes ++;
|
132 |
}
|
133 |
}
|
150 |
|
151 |
if ( ! empty( $this->options['analytics_profile'] ) && ! empty( $this->options['analytics_profile_code'] ) ) {
|
152 |
$tracking_code = $this->options['analytics_profile_code'];
|
153 |
+
}
|
154 |
+
elseif ( ! empty( $this->options['analytics_profile'] ) && empty( $this->options['analytics_profile_code'] ) ) {
|
155 |
// Analytics profile is still holding the UA code
|
156 |
$tracking_code = $this->options['analytics_profile'];
|
157 |
}
|
166 |
/**
|
167 |
* Convert a option value to a bool
|
168 |
*
|
169 |
+
* @param string $option_name
|
170 |
*
|
171 |
* @return bool
|
172 |
*/
|
173 |
public function option_value_to_bool( $option_name ) {
|
174 |
$this->options = $this->get_options();
|
175 |
|
176 |
+
if ( isset( $this->options[ $option_name ] ) && $this->options[ $option_name ] == 1 ) {
|
177 |
return true;
|
178 |
}
|
179 |
|
229 |
// Fallback to make sure every default option has a value
|
230 |
$defaults = $this->default_ga_values();
|
231 |
if ( is_array( $defaults ) ) {
|
232 |
+
foreach ( $defaults[ $this->option_prefix ] as $key => $value ) {
|
233 |
+
if ( ! isset( $this->options[ $key ] ) ) {
|
234 |
+
$this->options[ $key ] = $value;
|
235 |
}
|
236 |
}
|
237 |
}
|
includes/class-settings.php
CHANGED
@@ -1,5 +1,12 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
class Yoast_GA_Settings {
|
4 |
|
5 |
/**
|
@@ -17,9 +24,7 @@ class Yoast_GA_Settings {
|
|
17 |
private $options_class;
|
18 |
|
19 |
/**
|
20 |
-
* The main GA options
|
21 |
-
*
|
22 |
-
* @var
|
23 |
*/
|
24 |
private $options;
|
25 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Includes
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Settings class.
|
9 |
+
*/
|
10 |
class Yoast_GA_Settings {
|
11 |
|
12 |
/**
|
24 |
private $options_class;
|
25 |
|
26 |
/**
|
27 |
+
* @var array $options The main GA options
|
|
|
|
|
28 |
*/
|
29 |
private $options;
|
30 |
|
includes/class-utils.php
CHANGED
@@ -1,5 +1,12 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
3 |
class Yoast_GA_Utils {
|
4 |
|
5 |
/**
|
@@ -10,7 +17,7 @@ class Yoast_GA_Utils {
|
|
10 |
public static function wp_seo_active() {
|
11 |
$wp_seo_active = false;
|
12 |
|
13 |
-
//Makes sure is_plugin_active is available when called from front end
|
14 |
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
15 |
if ( is_plugin_active( 'wordpress-seo/wp-seo.php' ) || is_plugin_active( 'wordpress-seo-premium/wp-seo-premium.php' ) ) {
|
16 |
$wp_seo_active = true;
|
@@ -22,14 +29,14 @@ class Yoast_GA_Utils {
|
|
22 |
/**
|
23 |
* Calculate the date difference, return the amount of hours between the two dates
|
24 |
*
|
25 |
-
* @param $last_run datetime
|
26 |
-
* @param $now datetime
|
27 |
*
|
28 |
* @return int
|
29 |
*/
|
30 |
public static function hours_between( $last_run, $now ) {
|
31 |
$seconds = max( ( $now - $last_run ), 1 );
|
32 |
-
$hours = $seconds / 3600;
|
33 |
|
34 |
return floor( $hours );
|
35 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package GoogleAnalytics
|
4 |
+
* @subpackage Includes
|
5 |
+
*/
|
6 |
|
7 |
+
/**
|
8 |
+
* Utilities class.
|
9 |
+
*/
|
10 |
class Yoast_GA_Utils {
|
11 |
|
12 |
/**
|
17 |
public static function wp_seo_active() {
|
18 |
$wp_seo_active = false;
|
19 |
|
20 |
+
// Makes sure is_plugin_active is available when called from front end
|
21 |
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
22 |
if ( is_plugin_active( 'wordpress-seo/wp-seo.php' ) || is_plugin_active( 'wordpress-seo-premium/wp-seo-premium.php' ) ) {
|
23 |
$wp_seo_active = true;
|
29 |
/**
|
30 |
* Calculate the date difference, return the amount of hours between the two dates
|
31 |
*
|
32 |
+
* @param integer $last_run datetime
|
33 |
+
* @param integer $now datetime
|
34 |
*
|
35 |
* @return int
|
36 |
*/
|
37 |
public static function hours_between( $last_run, $now ) {
|
38 |
$seconds = max( ( $now - $last_run ), 1 );
|
39 |
+
$hours = ( $seconds / 3600 );
|
40 |
|
41 |
return floor( $hours );
|
42 |
}
|
phpcs.xml
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<ruleset name="WordPress SEO">
|
3 |
+
<description>Google Analytics by Yoast rules for PHP_CodeSniffer</description>
|
4 |
+
|
5 |
+
<file>.</file>
|
6 |
+
|
7 |
+
<exclude-pattern>tests/*</exclude-pattern>
|
8 |
+
<exclude-pattern>vendor/*</exclude-pattern>
|
9 |
+
|
10 |
+
<arg name="extensions" value="php"/>
|
11 |
+
<arg value="nsp"/>
|
12 |
+
|
13 |
+
<rule ref="Yoast"/>
|
14 |
+
</ruleset>
|
readme.txt
CHANGED
@@ -3,8 +3,9 @@ Contributors: joostdevalk
|
|
3 |
Donate link: https://yoast.com/donate/
|
4 |
Tags: analytics, google analytics, statistics, tracking, stats, google, yoast
|
5 |
Requires at least: 3.8
|
6 |
-
Tested up to: 4.
|
7 |
-
Stable tag: 5.3.
|
|
|
8 |
|
9 |
Track your WordPress site easily with the latest tracking codes and lots added data for search result pages and error pages.
|
10 |
|
@@ -12,13 +13,14 @@ Track your WordPress site easily with the latest tracking codes and lots added d
|
|
12 |
|
13 |
The Google Analytics by Yoast plugin for WordPress allows you to track your blog easily and always stays up to date with the newest features in Google Analytics.
|
14 |
|
15 |
-
> <strong>
|
16 |
-
>
|
17 |
|
18 |
Full list of features:
|
19 |
|
20 |
* Simple installation through integration with Google Analytics API: authenticate, select the site you want to track and you're done.
|
21 |
* This plugin uses the universal or the asynchronous Google Analytics tracking code, the fastest and most reliable tracking code Google Analytics offers.
|
|
|
22 |
* Option to enable demographics and interest reports.
|
23 |
* Outbound link & downloads tracking.
|
24 |
* Configurable options to track outbound links either as pageviews or as events.
|
@@ -29,8 +31,8 @@ Full list of features:
|
|
29 |
* Tracking of your search result pages and 404 pages.
|
30 |
* Full [debug mode](http://yoast.com/google-analytics-debug-mode/), including Firebug lite and ga_debug.js for debugging Google Analytics issues.
|
31 |
|
32 |
-
> <strong>
|
33 |
-
>
|
34 |
|
35 |
Other interesting stuff:
|
36 |
|
@@ -49,6 +51,21 @@ This section describes how to install the plugin and get it working.
|
|
49 |
|
50 |
== Changelog ==
|
51 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
= 5.3.2 =
|
53 |
|
54 |
Release Date: February 18th, 2015
|
@@ -633,13 +650,20 @@ Complete rewrite of the Google Analytics plugin.
|
|
633 |
= 1.5 =
|
634 |
* Added option to enable admin tracking, off by default.
|
635 |
|
|
|
|
|
|
|
|
|
|
|
636 |
== Frequently Asked Questions ==
|
637 |
|
638 |
For all frequently asked questions, and their answers, check the [Yoast Knowledge base](http://kb.yoast.com/category/43-google-analytics-for-wordpress).
|
639 |
|
640 |
== Screenshots ==
|
641 |
|
642 |
-
1. Screenshot of the
|
643 |
-
2. Screenshot of the
|
644 |
-
3. Screenshot of the
|
645 |
-
4. Screenshot of the
|
|
|
|
3 |
Donate link: https://yoast.com/donate/
|
4 |
Tags: analytics, google analytics, statistics, tracking, stats, google, yoast
|
5 |
Requires at least: 3.8
|
6 |
+
Tested up to: 4.2
|
7 |
+
Stable tag: 5.3.3
|
8 |
+
License: GPL v3
|
9 |
|
10 |
Track your WordPress site easily with the latest tracking codes and lots added data for search result pages and error pages.
|
11 |
|
13 |
|
14 |
The Google Analytics by Yoast plugin for WordPress allows you to track your blog easily and always stays up to date with the newest features in Google Analytics.
|
15 |
|
16 |
+
> <strong>Upgrade to GA by Yoast Premium</strong><br>
|
17 |
+
> If you need support or want to use custom dimensions, upgrade to [Google Analytics by Yoast Premium](https://yoast.com/wordpress/plugins/google-analytics/#utm_source=wporg&utm_medium=readme&utm_campaign=wpgaplugin) today!
|
18 |
|
19 |
Full list of features:
|
20 |
|
21 |
* Simple installation through integration with Google Analytics API: authenticate, select the site you want to track and you're done.
|
22 |
* This plugin uses the universal or the asynchronous Google Analytics tracking code, the fastest and most reliable tracking code Google Analytics offers.
|
23 |
+
* Gives you incredibly nice visitor metric dashboards right in your WordPress install.
|
24 |
* Option to enable demographics and interest reports.
|
25 |
* Outbound link & downloads tracking.
|
26 |
* Configurable options to track outbound links either as pageviews or as events.
|
31 |
* Tracking of your search result pages and 404 pages.
|
32 |
* Full [debug mode](http://yoast.com/google-analytics-debug-mode/), including Firebug lite and ga_debug.js for debugging Google Analytics issues.
|
33 |
|
34 |
+
> <strong>Development on GitHub</strong><br>
|
35 |
+
> The development of Google Analytics by Yoast [takes place on GitHub](https://github.com/Yoast/google-analytics-for-wordpress). Bugs and pull requests are welcomed there. For support, you have two options: either [buy the premium version of Google Analytics by Yoast on Yoast.com](https://yoast.com/wordpress/plugins/google-analytics/), this will give you access to our support team, or refer to the forums.
|
36 |
|
37 |
Other interesting stuff:
|
38 |
|
51 |
|
52 |
== Changelog ==
|
53 |
|
54 |
+
= 5.3.3 =
|
55 |
+
|
56 |
+
Release Date: March 19th, 2015
|
57 |
+
|
58 |
+
* Several security fixes:
|
59 |
+
1. Fix minor XSS issue where admins could XSS each other through an unescaped manual UA field.
|
60 |
+
1. Fix stored XSS issue where changing a property's name in Google Analytics to contain malicious JS would allow execution of that JS in the admin as the profile name was not escaped properly.
|
61 |
+
1. Fix un-authenticated change of the GA profile list, allowing the previous XSS to become a slightly bigger issue. Issues 2 and 3 combined lead to a [DREAD score](http://blog.sucuri.net/2015/03/understanding-wordpress-plugin-vulnerabilities.html) of 5.
|
62 |
+
* Other fixes:
|
63 |
+
* Small code style improvements.
|
64 |
+
* Throw an error and deactivate if either the PHP SPL or PHP filter libraries aren't loaded.
|
65 |
+
* Introduced a filter `yst_ga_track_super_admin` to allow disabling of super admin tracking on multi-site, defaulting to true.
|
66 |
+
|
67 |
+
Big thanks to [Jouko Pynnönen](http://klikki.fi) for responsibly disclosing security issues #2 and #3.
|
68 |
+
|
69 |
= 5.3.2 =
|
70 |
|
71 |
Release Date: February 18th, 2015
|
650 |
= 1.5 =
|
651 |
* Added option to enable admin tracking, off by default.
|
652 |
|
653 |
+
== Upgrade Notice ==
|
654 |
+
|
655 |
+
= 5.3.3 =
|
656 |
+
This version fixes several issues related to your site's security. Update immediately.
|
657 |
+
|
658 |
== Frequently Asked Questions ==
|
659 |
|
660 |
For all frequently asked questions, and their answers, check the [Yoast Knowledge base](http://kb.yoast.com/category/43-google-analytics-for-wordpress).
|
661 |
|
662 |
== Screenshots ==
|
663 |
|
664 |
+
1. Screenshot of the dashboards this plugin generates. To get dashboards for custom dimensions, upgrade to [GA by Yoast Premium](https://yoast.com/wordpress/plugins/google-analytics/#utm_source=wporg&utm_medium=readme&utm_campaign=wpgaplugin&utm_content=screenshot).
|
665 |
+
2. Screenshot of the general settings panel for this plugin.
|
666 |
+
3. Screenshot of the universal settings panel.
|
667 |
+
4. Screenshot of the advanced settings panel.
|
668 |
+
5. Screenshot of the account selection drop down.
|
669 |
+
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit4bdc500f9ad408badfeb53112af5d59f::getLoader();
|
vendor/autoload_52.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInitc7697842af642d0524332c8e2aa408d0::getLoader();
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit0d7371c5917637133046e0ff54bddc2c
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
27 |
foreach ($map as $namespace => $path) {
|
@@ -44,7 +44,7 @@ class ComposerAutoloaderInit0d7371c5917637133046e0ff54bddc2c
|
|
44 |
}
|
45 |
}
|
46 |
|
47 |
-
function
|
48 |
{
|
49 |
require $file;
|
50 |
}
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit4bdc500f9ad408badfeb53112af5d59f
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit4bdc500f9ad408badfeb53112af5d59f', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit4bdc500f9ad408badfeb53112af5d59f', 'loadClassLoader'));
|
25 |
|
26 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
27 |
foreach ($map as $namespace => $path) {
|
44 |
}
|
45 |
}
|
46 |
|
47 |
+
function composerRequire4bdc500f9ad408badfeb53112af5d59f($file)
|
48 |
{
|
49 |
require $file;
|
50 |
}
|
vendor/composer/autoload_real_52.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real_52.php generated by xrstf/composer-php52
|
4 |
|
5 |
-
class
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitcb51162ef6e25f026ad6e42d5cb3b865 {
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$vendorDir = dirname(dirname(__FILE__));
|
27 |
$baseDir = dirname($vendorDir);
|
2 |
|
3 |
// autoload_real_52.php generated by xrstf/composer-php52
|
4 |
|
5 |
+
class ComposerAutoloaderInitc7697842af642d0524332c8e2aa408d0 {
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInitc7697842af642d0524332c8e2aa408d0', 'loadClassLoader'), true /*, true */);
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInitc7697842af642d0524332c8e2aa408d0', 'loadClassLoader'));
|
25 |
|
26 |
$vendorDir = dirname(dirname(__FILE__));
|
27 |
$baseDir = dirname($vendorDir);
|