Version Description
Download this release
Release Info
Developer | hallsofmontezuma |
Plugin | All in One SEO Pack |
Version | 2.4.5 |
Comparing to | |
See all releases |
Code changes from version 2.4.4.1 to 2.4.5
- admin/aioseop_module_class.php +17 -9
- admin/aioseop_module_manager.php +8 -2
- aioseop_class.php +3 -3
- all_in_one_seo_pack.php +3 -3
- inc/aioseop_functions.php +56 -25
- js/modules/aioseop_module.js +14 -0
- modules/aioseop_opengraph.php +4 -4
- modules/aioseop_sitemap.php +93 -41
- public/front.php +1 -2
- public/google-analytics.php +1 -1
- public/js/autotrack.js +62 -0
- readme.txt +2 -2
admin/aioseop_module_class.php
CHANGED
@@ -2190,15 +2190,16 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Module' ) ) {
|
|
2190 |
return apply_filters( "{$prefix}output_option", '', $args );
|
2191 |
}
|
2192 |
if ( in_array( $options['type'], array(
|
2193 |
-
|
2194 |
-
|
2195 |
-
|
2196 |
-
|
2197 |
-
|
2198 |
-
|
2199 |
-
|
2200 |
-
|
2201 |
-
|
|
|
2202 |
) ) && is_string( $value )
|
2203 |
) {
|
2204 |
$value = esc_attr( $value );
|
@@ -2213,6 +2214,9 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Module' ) ) {
|
|
2213 |
if ( isset( $opts['id'] ) ) {
|
2214 |
$attr .= " id=\"{$opts['id']}\" ";
|
2215 |
}
|
|
|
|
|
|
|
2216 |
switch ( $options['type'] ) {
|
2217 |
case 'multiselect':
|
2218 |
$attr .= ' MULTIPLE';
|
@@ -2249,6 +2253,10 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Module' ) ) {
|
|
2249 |
case 'esc_html':
|
2250 |
$buf .= "<pre>" . esc_html( $value ) . "</pre>\n";
|
2251 |
break;
|
|
|
|
|
|
|
|
|
2252 |
default:
|
2253 |
$buf .= "<input name='$name' type='{$options['type']}' $attr value='$value'>\n";
|
2254 |
}
|
2190 |
return apply_filters( "{$prefix}output_option", '', $args );
|
2191 |
}
|
2192 |
if ( in_array( $options['type'], array(
|
2193 |
+
'multiselect',
|
2194 |
+
'select',
|
2195 |
+
'multicheckbox',
|
2196 |
+
'radio',
|
2197 |
+
'checkbox',
|
2198 |
+
'textarea',
|
2199 |
+
'text',
|
2200 |
+
'submit',
|
2201 |
+
'hidden',
|
2202 |
+
'date',
|
2203 |
) ) && is_string( $value )
|
2204 |
) {
|
2205 |
$value = esc_attr( $value );
|
2214 |
if ( isset( $opts['id'] ) ) {
|
2215 |
$attr .= " id=\"{$opts['id']}\" ";
|
2216 |
}
|
2217 |
+
if ( isset( $options['required'] ) && true === $options['required'] ) {
|
2218 |
+
$attr .= ' required';
|
2219 |
+
}
|
2220 |
switch ( $options['type'] ) {
|
2221 |
case 'multiselect':
|
2222 |
$attr .= ' MULTIPLE';
|
2253 |
case 'esc_html':
|
2254 |
$buf .= "<pre>" . esc_html( $value ) . "</pre>\n";
|
2255 |
break;
|
2256 |
+
case 'date':
|
2257 |
+
// firefox and IE < 11 do not have support for HTML5 date, so we will fall back to the datepicker.
|
2258 |
+
wp_enqueue_script( 'jquery-ui-datepicker' );
|
2259 |
+
// fall through.
|
2260 |
default:
|
2261 |
$buf .= "<input name='$name' type='{$options['type']}' $attr value='$value'>\n";
|
2262 |
}
|
admin/aioseop_module_manager.php
CHANGED
@@ -65,6 +65,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Module_Manager' ) ) {
|
|
65 |
*/
|
66 |
function return_module( $class ) {
|
67 |
global $aiosp;
|
|
|
68 |
if ( get_class( $aiosp ) === $class ) {
|
69 |
return $aiosp;
|
70 |
}
|
@@ -164,8 +165,13 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Module_Manager' ) ) {
|
|
164 |
return false;
|
165 |
}
|
166 |
$mod_enable = false;
|
167 |
-
|
168 |
-
|
|
|
|
|
|
|
|
|
|
|
169 |
if ( $fm_page && ! $this->settings_reset ) {
|
170 |
if ( isset( $_POST["aiosp_feature_manager_enable_$mod"] ) ) {
|
171 |
$mod_enable = $_POST["aiosp_feature_manager_enable_$mod"];
|
65 |
*/
|
66 |
function return_module( $class ) {
|
67 |
global $aiosp;
|
68 |
+
/* This is such a strange comparison! Don't know what the intent is. */
|
69 |
if ( get_class( $aiosp ) === $class ) {
|
70 |
return $aiosp;
|
71 |
}
|
165 |
return false;
|
166 |
}
|
167 |
$mod_enable = false;
|
168 |
+
|
169 |
+
$is_module_page = isset( $_REQUEST['page'] ) && trailingslashit( AIOSEOP_PLUGIN_DIRNAME ) . 'modules/aioseop_feature_manager.php' === $_REQUEST['page'];
|
170 |
+
if ( defined( 'AIOSEOP_UNIT_TESTING' ) ) {
|
171 |
+
// using $_REQUEST does not work because even if the parameter is set in $_POST or $_GET, it does not percolate to $_REQUEST.
|
172 |
+
$is_module_page = ( isset( $_GET['page'] ) && trailingslashit( AIOSEOP_PLUGIN_DIRNAME ) . 'modules/aioseop_feature_manager.php' === $_GET['page'] ) || ( isset( $_POST['page'] ) && trailingslashit( AIOSEOP_PLUGIN_DIRNAME ) . 'modules/aioseop_feature_manager.php' === $_POST['page'] );
|
173 |
+
}
|
174 |
+
$fm_page = $this->module_settings_update && wp_verify_nonce( $_POST['nonce-aioseop'], 'aioseop-nonce' ) && $is_module_page;
|
175 |
if ( $fm_page && ! $this->settings_reset ) {
|
176 |
if ( isset( $_POST["aiosp_feature_manager_enable_$mod"] ) ) {
|
177 |
$mod_enable = $_POST["aiosp_feature_manager_enable_$mod"];
|
aioseop_class.php
CHANGED
@@ -1405,7 +1405,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
|
|
1405 |
$url = apply_filters( 'aioseop_canonical_url', $url );
|
1406 |
}
|
1407 |
if ( ! $url ) {
|
1408 |
-
$url =
|
1409 |
}
|
1410 |
|
1411 |
$title = $this->apply_cf_fields( $title );
|
@@ -2675,7 +2675,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
|
|
2675 |
return false;
|
2676 |
}
|
2677 |
} elseif ( $query->is_home && ( get_option( 'show_on_front' ) == 'page' ) && ( $pageid = get_option( 'page_for_posts' ) ) ) {
|
2678 |
-
$link =
|
2679 |
} elseif ( is_front_page() || ( $query->is_home && ( get_option( 'show_on_front' ) != 'page' || ! get_option( 'page_for_posts' ) ) ) ) {
|
2680 |
if ( function_exists( 'icl_get_home_url' ) ) {
|
2681 |
$link = icl_get_home_url();
|
@@ -2684,7 +2684,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
|
|
2684 |
}
|
2685 |
} elseif ( ( $query->is_single || $query->is_page ) && $haspost ) {
|
2686 |
$post = $query->posts[0];
|
2687 |
-
$link =
|
2688 |
} elseif ( $query->is_author && $haspost ) {
|
2689 |
$author = get_userdata( get_query_var( 'author' ) );
|
2690 |
if ( false === $author ) {
|
1405 |
$url = apply_filters( 'aioseop_canonical_url', $url );
|
1406 |
}
|
1407 |
if ( ! $url ) {
|
1408 |
+
$url = aioseop_get_permalink();
|
1409 |
}
|
1410 |
|
1411 |
$title = $this->apply_cf_fields( $title );
|
2675 |
return false;
|
2676 |
}
|
2677 |
} elseif ( $query->is_home && ( get_option( 'show_on_front' ) == 'page' ) && ( $pageid = get_option( 'page_for_posts' ) ) ) {
|
2678 |
+
$link = aioseop_get_permalink( $pageid );
|
2679 |
} elseif ( is_front_page() || ( $query->is_home && ( get_option( 'show_on_front' ) != 'page' || ! get_option( 'page_for_posts' ) ) ) ) {
|
2680 |
if ( function_exists( 'icl_get_home_url' ) ) {
|
2681 |
$link = icl_get_home_url();
|
2684 |
}
|
2685 |
} elseif ( ( $query->is_single || $query->is_page ) && $haspost ) {
|
2686 |
$post = $query->posts[0];
|
2687 |
+
$link = aioseop_get_permalink( $post->ID );
|
2688 |
} elseif ( $query->is_author && $haspost ) {
|
2689 |
$author = get_userdata( get_query_var( 'author' ) );
|
2690 |
if ( false === $author ) {
|
all_in_one_seo_pack.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: All In One SEO Pack
|
4 |
Plugin URI: https://semperplugins.com/all-in-one-seo-pack-pro-version/
|
5 |
Description: Out-of-the-box SEO for your WordPress blog. Features like XML Sitemaps, SEO for custom post types, SEO for blogs or business sites, SEO for ecommerce sites, and much more. More than 30 million downloads since 2007.
|
6 |
-
Version: 2.4.
|
7 |
Author: Michael Torbert
|
8 |
Author URI: https://semperplugins.com/all-in-one-seo-pack-pro-version/
|
9 |
Text Domain: all-in-one-seo-pack
|
@@ -31,14 +31,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
31 |
* The original WordPress SEO plugin.
|
32 |
*
|
33 |
* @package All-in-One-SEO-Pack
|
34 |
-
* @version 2.4.
|
35 |
*/
|
36 |
|
37 |
if ( ! defined( 'AIOSEOPPRO' ) ) {
|
38 |
define( 'AIOSEOPPRO', false );
|
39 |
}
|
40 |
if ( ! defined( 'AIOSEOP_VERSION' ) ) {
|
41 |
-
define( 'AIOSEOP_VERSION', '2.4.
|
42 |
}
|
43 |
global $aioseop_plugin_name;
|
44 |
$aioseop_plugin_name = 'All in One SEO Pack';
|
3 |
Plugin Name: All In One SEO Pack
|
4 |
Plugin URI: https://semperplugins.com/all-in-one-seo-pack-pro-version/
|
5 |
Description: Out-of-the-box SEO for your WordPress blog. Features like XML Sitemaps, SEO for custom post types, SEO for blogs or business sites, SEO for ecommerce sites, and much more. More than 30 million downloads since 2007.
|
6 |
+
Version: 2.4.5
|
7 |
Author: Michael Torbert
|
8 |
Author URI: https://semperplugins.com/all-in-one-seo-pack-pro-version/
|
9 |
Text Domain: all-in-one-seo-pack
|
31 |
* The original WordPress SEO plugin.
|
32 |
*
|
33 |
* @package All-in-One-SEO-Pack
|
34 |
+
* @version 2.4.5
|
35 |
*/
|
36 |
|
37 |
if ( ! defined( 'AIOSEOPPRO' ) ) {
|
38 |
define( 'AIOSEOPPRO', false );
|
39 |
}
|
40 |
if ( ! defined( 'AIOSEOP_VERSION' ) ) {
|
41 |
+
define( 'AIOSEOP_VERSION', '2.4.5' );
|
42 |
}
|
43 |
global $aioseop_plugin_name;
|
44 |
$aioseop_plugin_name = 'All in One SEO Pack';
|
inc/aioseop_functions.php
CHANGED
@@ -8,6 +8,22 @@
|
|
8 |
* @version 2.3.13
|
9 |
*/
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
if ( ! function_exists( 'aioseop_load_modules' ) ) {
|
12 |
/**
|
13 |
* Load the module manager.
|
@@ -406,39 +422,50 @@ function aioseop_ajax_update_oembed() {
|
|
406 |
if ( ! function_exists( 'aioseop_ajax_save_url' ) ) {
|
407 |
|
408 |
function aioseop_ajax_save_url() {
|
|
|
409 |
aioseop_ajax_init();
|
410 |
$options = Array();
|
411 |
parse_str( $_POST['options'], $options );
|
412 |
foreach ( $options as $k => $v ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
413 |
$_POST[ $k ] = $v;
|
414 |
}
|
415 |
-
$
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
$
|
421 |
-
|
422 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
} else {
|
424 |
-
$
|
425 |
}
|
426 |
-
$_POST['location'] = null;
|
427 |
-
$_POST['Submit'] = 'ajax';
|
428 |
-
$module->add_page_hooks();
|
429 |
-
$prefix = $module->get_prefix();
|
430 |
-
$_POST = $module->get_current_options( $_POST, null );
|
431 |
-
$module->handle_settings_updates( null );
|
432 |
-
$options = $module->get_current_options( Array(), null );
|
433 |
-
$output = $module->display_custom_options( '', Array(
|
434 |
-
'name' => $prefix . 'addl_pages',
|
435 |
-
'type' => 'custom',
|
436 |
-
'save' => true,
|
437 |
-
'value' => $options[ $prefix . 'addl_pages' ],
|
438 |
-
'attr' => '',
|
439 |
-
) );
|
440 |
-
$output = str_replace( "'", "\'", $output );
|
441 |
-
$output = str_replace( "\n", '\n', $output );
|
442 |
die( sprintf( AIOSEOP_AJAX_MSG_TMPL, $output ) );
|
443 |
}
|
444 |
}
|
@@ -604,6 +631,10 @@ if ( ! function_exists( 'aioseop_ajax_save_settings' ) ) {
|
|
604 |
$output = '<div id="aioseop_settings_header"><div id="message" class="updated fade"><p>' . $output . '</p></div></div><style>body.all-in-one-seo_page_all-in-one-seo-pack-aioseop_feature_manager .aioseop_settings_left { margin-top: 45px !important; }</style>';
|
605 |
}
|
606 |
|
|
|
|
|
|
|
|
|
607 |
die( sprintf( AIOSEOP_AJAX_MSG_TMPL, $output ) );
|
608 |
}
|
609 |
}
|
8 |
* @version 2.3.13
|
9 |
*/
|
10 |
|
11 |
+
if ( ! function_exists( 'aioseop_get_permalink' ) ) {
|
12 |
+
/**
|
13 |
+
* Support UTF8 URLs.
|
14 |
+
*
|
15 |
+
* @param int|object|null $post_id The post.
|
16 |
+
*/
|
17 |
+
function aioseop_get_permalink( $post_id = null ) {
|
18 |
+
if ( is_null( $post_id ) ) {
|
19 |
+
global $post;
|
20 |
+
$post_id = $post;
|
21 |
+
}
|
22 |
+
|
23 |
+
return urldecode( get_permalink( $post_id ) );
|
24 |
+
}
|
25 |
+
}
|
26 |
+
|
27 |
if ( ! function_exists( 'aioseop_load_modules' ) ) {
|
28 |
/**
|
29 |
* Load the module manager.
|
422 |
if ( ! function_exists( 'aioseop_ajax_save_url' ) ) {
|
423 |
|
424 |
function aioseop_ajax_save_url() {
|
425 |
+
$valid = true;
|
426 |
aioseop_ajax_init();
|
427 |
$options = Array();
|
428 |
parse_str( $_POST['options'], $options );
|
429 |
foreach ( $options as $k => $v ) {
|
430 |
+
// all values are mandatory while adding to the sitemap.
|
431 |
+
// this should work in the same way for news and video sitemaps too, but tackling only regular sitemaps for now.
|
432 |
+
if ( 'sitemap_addl_pages' === $_POST['settings'] && empty( $v ) ) {
|
433 |
+
$valid = false;
|
434 |
+
break;
|
435 |
+
}
|
436 |
$_POST[ $k ] = $v;
|
437 |
}
|
438 |
+
if ( $valid ) {
|
439 |
+
$_POST['action'] = 'aiosp_update_module';
|
440 |
+
global $aiosp, $aioseop_modules;
|
441 |
+
aioseop_load_modules();
|
442 |
+
$aiosp->admin_menu();
|
443 |
+
if ( ! empty( $_POST['settings'] ) && ( $_POST['settings'] === 'video_sitemap_addl_pages' ) ) {
|
444 |
+
$module = $aioseop_modules->return_module( 'All_in_One_SEO_Pack_Video_Sitemap' );
|
445 |
+
} elseif ( ! empty( $_POST['settings'] ) && ( $_POST['settings'] === 'news_sitemap_addl_pages' ) ) {
|
446 |
+
$module = $aioseop_modules->return_module( 'All_in_One_SEO_Pack_News_Sitemap' );
|
447 |
+
} else {
|
448 |
+
$module = $aioseop_modules->return_module( 'All_in_One_SEO_Pack_Sitemap' );
|
449 |
+
}
|
450 |
+
$_POST['location'] = null;
|
451 |
+
$_POST['Submit'] = 'ajax';
|
452 |
+
$module->add_page_hooks();
|
453 |
+
$prefix = $module->get_prefix();
|
454 |
+
$_POST = $module->get_current_options( $_POST, null );
|
455 |
+
$module->handle_settings_updates( null );
|
456 |
+
$options = $module->get_current_options( Array(), null );
|
457 |
+
$output = $module->display_custom_options( '', Array(
|
458 |
+
'name' => $prefix . 'addl_pages',
|
459 |
+
'type' => 'custom',
|
460 |
+
'save' => true,
|
461 |
+
'value' => $options[ $prefix . 'addl_pages' ],
|
462 |
+
'attr' => '',
|
463 |
+
) );
|
464 |
+
$output = str_replace( "'", "\'", $output );
|
465 |
+
$output = str_replace( "\n", '\n', $output );
|
466 |
} else {
|
467 |
+
$output = __( 'All values are mandatory.', 'all-in-one-seo-pack' );
|
468 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
469 |
die( sprintf( AIOSEOP_AJAX_MSG_TMPL, $output ) );
|
470 |
}
|
471 |
}
|
631 |
$output = '<div id="aioseop_settings_header"><div id="message" class="updated fade"><p>' . $output . '</p></div></div><style>body.all-in-one-seo_page_all-in-one-seo-pack-aioseop_feature_manager .aioseop_settings_left { margin-top: 45px !important; }</style>';
|
632 |
}
|
633 |
|
634 |
+
if ( defined( 'AIOSEOP_UNIT_TESTING' ) ) {
|
635 |
+
return;
|
636 |
+
}
|
637 |
+
|
638 |
die( sprintf( AIOSEOP_AJAX_MSG_TMPL, $output ) );
|
639 |
}
|
640 |
}
|
js/modules/aioseop_module.js
CHANGED
@@ -708,3 +708,17 @@ jQuery( document ).ready(function() {
|
|
708 |
return false;
|
709 |
});
|
710 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
708 |
return false;
|
709 |
});
|
710 |
});
|
711 |
+
|
712 |
+
|
713 |
+
jQuery(document).ready( function() {
|
714 |
+
// TODO: consider moving EVERYTHING that needs ready() to this function
|
715 |
+
initAll(jQuery);
|
716 |
+
});
|
717 |
+
|
718 |
+
function initAll($){
|
719 |
+
if($('.aiseop-date').eq(0).prop('type').toLowerCase() === 'text'){
|
720 |
+
$('.aiseop-date').datepicker({
|
721 |
+
dateFormat: "yy-mm-dd"
|
722 |
+
});
|
723 |
+
}
|
724 |
+
}
|
modules/aioseop_opengraph.php
CHANGED
@@ -640,7 +640,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Opengraph' ) ) {
|
|
640 |
|
641 |
// Only ping Facebook if Social SEO is enabled on this post type.
|
642 |
if ( $this->option_isset( 'types' ) && is_array( $this->options['aiosp_opengraph_types'] ) && in_array( $current_post_type, $this->options['aiosp_opengraph_types'] ) ) {
|
643 |
-
$post_url =
|
644 |
$endpoint = sprintf( 'https://graph.facebook.com/?%s', http_build_query( array(
|
645 |
'id' => $post_url,
|
646 |
'scrape' => true,
|
@@ -652,19 +652,19 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Opengraph' ) ) {
|
|
652 |
/**
|
653 |
* Forces FaceBook OpenGraph refresh on update.
|
654 |
*
|
655 |
-
* @param $
|
656 |
* @param $post_after
|
657 |
*
|
658 |
* @see https://developers.facebook.com/docs/sharing/opengraph/using-objects#update
|
659 |
* @since 2.3.11
|
660 |
*/
|
661 |
-
function force_fb_refresh_update( $
|
662 |
|
663 |
$current_post_type = get_post_type();
|
664 |
|
665 |
// Only ping Facebook if Social SEO is enabled on this post type.
|
666 |
if ( 'publish' === $post_after->post_status && $this->option_isset( 'types' ) && is_array( $this->options['aiosp_opengraph_types'] ) && in_array( $current_post_type, $this->options['aiosp_opengraph_types'] ) ) {
|
667 |
-
$post_url =
|
668 |
$endpoint = sprintf( 'https://graph.facebook.com/?%s', http_build_query( array(
|
669 |
'id' => $post_url,
|
670 |
'scrape' => true,
|
640 |
|
641 |
// Only ping Facebook if Social SEO is enabled on this post type.
|
642 |
if ( $this->option_isset( 'types' ) && is_array( $this->options['aiosp_opengraph_types'] ) && in_array( $current_post_type, $this->options['aiosp_opengraph_types'] ) ) {
|
643 |
+
$post_url = aioseop_get_permalink( $post->ID );
|
644 |
$endpoint = sprintf( 'https://graph.facebook.com/?%s', http_build_query( array(
|
645 |
'id' => $post_url,
|
646 |
'scrape' => true,
|
652 |
/**
|
653 |
* Forces FaceBook OpenGraph refresh on update.
|
654 |
*
|
655 |
+
* @param $post_id
|
656 |
* @param $post_after
|
657 |
*
|
658 |
* @see https://developers.facebook.com/docs/sharing/opengraph/using-objects#update
|
659 |
* @since 2.3.11
|
660 |
*/
|
661 |
+
function force_fb_refresh_update( $post_id, $post_after ) {
|
662 |
|
663 |
$current_post_type = get_post_type();
|
664 |
|
665 |
// Only ping Facebook if Social SEO is enabled on this post type.
|
666 |
if ( 'publish' === $post_after->post_status && $this->option_isset( 'types' ) && is_array( $this->options['aiosp_opengraph_types'] ) && in_array( $current_post_type, $this->options['aiosp_opengraph_types'] ) ) {
|
667 |
+
$post_url = aioseop_get_permalink( $post_id );
|
668 |
$endpoint = sprintf( 'https://graph.facebook.com/?%s', http_build_query( array(
|
669 |
'id' => $post_url,
|
670 |
'scrape' => true,
|
modules/aioseop_sitemap.php
CHANGED
@@ -248,9 +248,10 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
248 |
),
|
249 |
'addl_mod' => array(
|
250 |
'name' => __( 'Last Modified', 'all-in-one-seo-pack' ),
|
251 |
-
'type' => '
|
252 |
'label' => 'top',
|
253 |
'save' => false,
|
|
|
254 |
),
|
255 |
'addl_pages' => array(
|
256 |
'name' => __( 'Additional Pages', 'all-in-one-seo-pack' ),
|
@@ -332,6 +333,8 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
332 |
$sitemap_max_url_notice_dismissed = get_user_meta( get_current_user_id(), 'aioseop_sitemap_max_url_notice_dismissed', true );
|
333 |
if ( ! empty( $sitemap_max_url_notice_dismissed ) ) {
|
334 |
return;
|
|
|
|
|
335 |
}
|
336 |
|
337 |
$options = $this->options;
|
@@ -1248,6 +1251,8 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
1248 |
// Always follow and noindex the sitemap.
|
1249 |
header( 'X-Robots-Tag: noindex, follow', true );
|
1250 |
|
|
|
|
|
1251 |
if ( $gzipped ) {
|
1252 |
ob_start();
|
1253 |
}
|
@@ -1404,6 +1409,11 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
1404 |
* @param string $message
|
1405 |
*/
|
1406 |
function do_sitemaps( $message = '' ) {
|
|
|
|
|
|
|
|
|
|
|
1407 |
if ( ! empty( $this->options["{$this->prefix}indexes"] ) ) {
|
1408 |
if ( $this->options["{$this->prefix}max_posts"] && ( $this->options["{$this->prefix}max_posts"] > 0 ) && ( $this->options["{$this->prefix}max_posts"] < 50000 ) ) {
|
1409 |
$this->max_posts = $this->options["{$this->prefix}max_posts"];
|
@@ -1617,9 +1627,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
1617 |
'post_type' => $options["{$this->prefix}posttypes"],
|
1618 |
'post_status' => 'publish',
|
1619 |
) );
|
1620 |
-
|
1621 |
-
$post_counts = array( $options["{$this->prefix}posttypes"][0] => $post_counts );
|
1622 |
-
}
|
1623 |
foreach ( $options["{$this->prefix}posttypes"] as $sm ) {
|
1624 |
if ( 0 == $post_counts[ $sm ] ) {
|
1625 |
continue;
|
@@ -2717,6 +2725,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
2717 |
* @return array
|
2718 |
*/
|
2719 |
private function get_images_from_post( $post ) {
|
|
|
2720 |
|
2721 |
if ( ! aiosp_include_images() ) {
|
2722 |
return array();
|
@@ -2746,8 +2755,16 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
2746 |
return $images;
|
2747 |
}
|
2748 |
|
|
|
2749 |
// Check featured image.
|
2750 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2751 |
if ( false !== $attached_url ) {
|
2752 |
$images[] = $attached_url;
|
2753 |
}
|
@@ -2811,6 +2828,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
2811 |
* @param string $image The image src.
|
2812 |
*
|
2813 |
* @since 2.4.1
|
|
|
2814 |
*
|
2815 |
* @return bool
|
2816 |
*/
|
@@ -2820,10 +2838,21 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
2820 |
return false;
|
2821 |
}
|
2822 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2823 |
// make the url absolute, if its relative.
|
2824 |
$image = aiosp_common::absolutize_url( $image );
|
2825 |
|
2826 |
-
$extn = pathinfo(
|
2827 |
$allowed = apply_filters( 'aioseop_allowed_image_extensions', self::$image_extensions );
|
2828 |
// Bail if image does not refer to an image file otherwise google webmaster tools might reject the sitemap.
|
2829 |
if ( ! in_array( $extn, $allowed, true ) ) {
|
@@ -3074,7 +3103,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
3074 |
$start = false;
|
3075 |
}
|
3076 |
|
3077 |
-
return
|
3078 |
}
|
3079 |
|
3080 |
/**
|
@@ -3107,42 +3136,32 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
3107 |
}
|
3108 |
|
3109 |
/**
|
3110 |
-
* Return post counts
|
3111 |
*
|
|
|
3112 |
* @param $args
|
3113 |
*
|
3114 |
-
* @return
|
3115 |
*/
|
3116 |
function get_all_post_counts( $args ) {
|
3117 |
-
$post_counts =
|
3118 |
$status = 'inherit';
|
3119 |
if ( ! empty( $args['post_status'] ) ) {
|
3120 |
$status = $args['post_status'];
|
3121 |
}
|
3122 |
if ( ! empty( $args ) && ! empty( $args['post_type'] ) ) {
|
3123 |
-
|
3124 |
-
|
3125 |
-
|
|
|
|
|
3126 |
}
|
3127 |
-
|
3128 |
-
|
3129 |
-
} else {
|
3130 |
-
foreach ( $args['post_type'] as $post_type ) {
|
3131 |
-
if ( 'all' === $post_type ) {
|
3132 |
-
continue;
|
3133 |
-
}
|
3134 |
-
$count = (Array) wp_count_posts( $post_type );
|
3135 |
-
|
3136 |
-
if ( empty( $count ) ) {
|
3137 |
-
$post_counts[ $post_type ] = 0;
|
3138 |
-
} else {
|
3139 |
-
if ( 'attachment' === $post_type ) {
|
3140 |
-
$post_counts[ $post_type ] = $count['inherit'];
|
3141 |
-
} else {
|
3142 |
-
$post_counts[ $post_type ] = $count[ $status ];
|
3143 |
-
}
|
3144 |
-
}
|
3145 |
}
|
|
|
|
|
|
|
3146 |
}
|
3147 |
}
|
3148 |
$post_counts = apply_filters( $this->prefix . 'post_counts', $post_counts, $args );
|
@@ -3150,23 +3169,56 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
3150 |
return $post_counts;
|
3151 |
}
|
3152 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3153 |
/**
|
3154 |
* Get total post count.
|
3155 |
*
|
3156 |
* @param $args
|
3157 |
*
|
3158 |
-
* @return int
|
3159 |
*/
|
3160 |
function get_total_post_count( $args ) {
|
3161 |
$total = 0;
|
3162 |
$counts = $this->get_all_post_counts( $args );
|
3163 |
if ( ! empty( $counts ) ) {
|
3164 |
-
|
3165 |
-
|
3166 |
-
$total += $count;
|
3167 |
-
}
|
3168 |
-
} else {
|
3169 |
-
$total = $counts;
|
3170 |
}
|
3171 |
}
|
3172 |
|
@@ -3197,9 +3249,8 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
3197 |
'cache_results' => false,
|
3198 |
'no_found_rows' => true,
|
3199 |
);
|
3200 |
-
|
3201 |
-
|
3202 |
-
}
|
3203 |
|
3204 |
/*
|
3205 |
* Filter to exclude password protected posts.
|
@@ -3245,6 +3296,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
|
|
3245 |
}
|
3246 |
$this->excludes = array_merge( $args['exclude'] , $exclude_slugs ); // Add excluded slugs and IDs to class var.
|
3247 |
|
|
|
3248 |
$posts = get_posts( apply_filters( $this->prefix . 'post_query', $args ) );
|
3249 |
if ( ! empty( $exclude_slugs ) ) {
|
3250 |
foreach ( $posts as $k => $v ) {
|
248 |
),
|
249 |
'addl_mod' => array(
|
250 |
'name' => __( 'Last Modified', 'all-in-one-seo-pack' ),
|
251 |
+
'type' => 'date',
|
252 |
'label' => 'top',
|
253 |
'save' => false,
|
254 |
+
'class' => 'aiseop-date',
|
255 |
),
|
256 |
'addl_pages' => array(
|
257 |
'name' => __( 'Additional Pages', 'all-in-one-seo-pack' ),
|
333 |
$sitemap_max_url_notice_dismissed = get_user_meta( get_current_user_id(), 'aioseop_sitemap_max_url_notice_dismissed', true );
|
334 |
if ( ! empty( $sitemap_max_url_notice_dismissed ) ) {
|
335 |
return;
|
336 |
+
} elseif ( ! current_user_can( 'aiosp_manage_seo' ) ) {
|
337 |
+
return;
|
338 |
}
|
339 |
|
340 |
$options = $this->options;
|
1251 |
// Always follow and noindex the sitemap.
|
1252 |
header( 'X-Robots-Tag: noindex, follow', true );
|
1253 |
|
1254 |
+
do_action( $this->prefix . 'add_headers', $query, $this->options );
|
1255 |
+
|
1256 |
if ( $gzipped ) {
|
1257 |
ob_start();
|
1258 |
}
|
1409 |
* @param string $message
|
1410 |
*/
|
1411 |
function do_sitemaps( $message = '' ) {
|
1412 |
+
if ( defined( 'AIOSEOP_UNIT_TESTING' ) ) {
|
1413 |
+
$aioseop_options = aioseop_get_options();
|
1414 |
+
$this->options = $aioseop_options['modules'][ "{$this->prefix}options" ];
|
1415 |
+
}
|
1416 |
+
|
1417 |
if ( ! empty( $this->options["{$this->prefix}indexes"] ) ) {
|
1418 |
if ( $this->options["{$this->prefix}max_posts"] && ( $this->options["{$this->prefix}max_posts"] > 0 ) && ( $this->options["{$this->prefix}max_posts"] < 50000 ) ) {
|
1419 |
$this->max_posts = $this->options["{$this->prefix}max_posts"];
|
1627 |
'post_type' => $options["{$this->prefix}posttypes"],
|
1628 |
'post_status' => 'publish',
|
1629 |
) );
|
1630 |
+
|
|
|
|
|
1631 |
foreach ( $options["{$this->prefix}posttypes"] as $sm ) {
|
1632 |
if ( 0 == $post_counts[ $sm ] ) {
|
1633 |
continue;
|
2725 |
* @return array
|
2726 |
*/
|
2727 |
private function get_images_from_post( $post ) {
|
2728 |
+
global $wp_version;
|
2729 |
|
2730 |
if ( ! aiosp_include_images() ) {
|
2731 |
return array();
|
2755 |
return $images;
|
2756 |
}
|
2757 |
|
2758 |
+
$attached_url = false;
|
2759 |
// Check featured image.
|
2760 |
+
if ( version_compare( $wp_version, '4.4.0', '>=' ) ) {
|
2761 |
+
$attached_url = get_the_post_thumbnail_url( $post->ID );
|
2762 |
+
} else {
|
2763 |
+
$post_thumbnail_id = get_post_thumbnail_id( $post->ID );
|
2764 |
+
if ( $post_thumbnail_id ) {
|
2765 |
+
$attached_url = wp_get_attachment_image_src( $post_thumbnail_id );
|
2766 |
+
}
|
2767 |
+
}
|
2768 |
if ( false !== $attached_url ) {
|
2769 |
$images[] = $attached_url;
|
2770 |
}
|
2828 |
* @param string $image The image src.
|
2829 |
*
|
2830 |
* @since 2.4.1
|
2831 |
+
* @since 2.4.3 Compatibility with Pre v4.7 wp_parse_url().
|
2832 |
*
|
2833 |
* @return bool
|
2834 |
*/
|
2838 |
return false;
|
2839 |
}
|
2840 |
|
2841 |
+
global $wp_version;
|
2842 |
+
if ( version_compare( $wp_version, '4.7', '<' ) ) {
|
2843 |
+
// Compatability for older WP version that don't have 4.7 changes.
|
2844 |
+
// @link https://core.trac.wordpress.org/changeset/38726
|
2845 |
+
$p_url = wp_parse_url( $image );
|
2846 |
+
$url = $p_url['scheme'] . $p_url['host'] . $p_url['path'];
|
2847 |
+
} else {
|
2848 |
+
$component = PHP_URL_PATH;
|
2849 |
+
$url = wp_parse_url( $image, $component );
|
2850 |
+
}
|
2851 |
+
|
2852 |
// make the url absolute, if its relative.
|
2853 |
$image = aiosp_common::absolutize_url( $image );
|
2854 |
|
2855 |
+
$extn = pathinfo( $url, PATHINFO_EXTENSION );
|
2856 |
$allowed = apply_filters( 'aioseop_allowed_image_extensions', self::$image_extensions );
|
2857 |
// Bail if image does not refer to an image file otherwise google webmaster tools might reject the sitemap.
|
2858 |
if ( ! in_array( $extn, $allowed, true ) ) {
|
3103 |
$start = false;
|
3104 |
}
|
3105 |
|
3106 |
+
return aioseop_get_permalink( $post );
|
3107 |
}
|
3108 |
|
3109 |
/**
|
3136 |
}
|
3137 |
|
3138 |
/**
|
3139 |
+
* Return post counts.
|
3140 |
*
|
3141 |
+
* @since 2.4.3 Refactored to use get_post_count() instead of wp_count_posts().
|
3142 |
* @param $args
|
3143 |
*
|
3144 |
+
* @return array
|
3145 |
*/
|
3146 |
function get_all_post_counts( $args ) {
|
3147 |
+
$post_counts = array();
|
3148 |
$status = 'inherit';
|
3149 |
if ( ! empty( $args['post_status'] ) ) {
|
3150 |
$status = $args['post_status'];
|
3151 |
}
|
3152 |
if ( ! empty( $args ) && ! empty( $args['post_type'] ) ) {
|
3153 |
+
// #884: removed hard-to-understand code here which suspected $args['post_type'] to NOT be an array. Do not see any case in which this is likely to happen.
|
3154 |
+
foreach ( $args['post_type'] as $post_type ) {
|
3155 |
+
$count_args = $args;
|
3156 |
+
if ( 'all' === $post_type ) {
|
3157 |
+
continue;
|
3158 |
}
|
3159 |
+
if ( 'attachment' === $post_type ) {
|
3160 |
+
$count_args['post_status'] = 'inherit';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3161 |
}
|
3162 |
+
|
3163 |
+
$count_args['post_type'] = $post_type;
|
3164 |
+
$post_counts[ $post_type ] = $this->get_post_count( $count_args );
|
3165 |
}
|
3166 |
}
|
3167 |
$post_counts = apply_filters( $this->prefix . 'post_counts', $post_counts, $args );
|
3169 |
return $post_counts;
|
3170 |
}
|
3171 |
|
3172 |
+
/**
|
3173 |
+
* Modify the post arguments in case third-party plugins are being used e.g. WPML.
|
3174 |
+
*
|
3175 |
+
* @param $args
|
3176 |
+
*/
|
3177 |
+
function modify_post_params_for_external_plugins( &$args ) {
|
3178 |
+
// if WPML is being used, do not suppress filters.
|
3179 |
+
if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
|
3180 |
+
$args['suppress_filters'] = false;
|
3181 |
+
}
|
3182 |
+
|
3183 |
+
$args = apply_filters( $this->prefix . 'modify_post_params', $args );
|
3184 |
+
}
|
3185 |
+
|
3186 |
+
/**
|
3187 |
+
* Return post counts for the specified arguments.
|
3188 |
+
*
|
3189 |
+
* @param $args
|
3190 |
+
*
|
3191 |
+
* @return int
|
3192 |
+
*/
|
3193 |
+
function get_post_count( $args ) {
|
3194 |
+
$this->modify_post_params_for_external_plugins( $args );
|
3195 |
+
|
3196 |
+
// we will use WP_Query instead of get_posts here as that is more efficient.
|
3197 |
+
// BEWARE: since we are using WP_Query, suppress_filters is false.
|
3198 |
+
$args['posts_per_page'] = -1;
|
3199 |
+
$args['fields'] = 'ids';
|
3200 |
+
$args['update_post_meta_cache'] = false;
|
3201 |
+
$args['update_post_term_cache'] = false;
|
3202 |
+
$query = new WP_Query( $args );
|
3203 |
+
if ( $query->have_posts() ) {
|
3204 |
+
return $query->post_count;
|
3205 |
+
}
|
3206 |
+
return 0;
|
3207 |
+
}
|
3208 |
+
|
3209 |
/**
|
3210 |
* Get total post count.
|
3211 |
*
|
3212 |
* @param $args
|
3213 |
*
|
3214 |
+
* @return int
|
3215 |
*/
|
3216 |
function get_total_post_count( $args ) {
|
3217 |
$total = 0;
|
3218 |
$counts = $this->get_all_post_counts( $args );
|
3219 |
if ( ! empty( $counts ) ) {
|
3220 |
+
foreach ( $counts as $count ) {
|
3221 |
+
$total += $count;
|
|
|
|
|
|
|
|
|
3222 |
}
|
3223 |
}
|
3224 |
|
3249 |
'cache_results' => false,
|
3250 |
'no_found_rows' => true,
|
3251 |
);
|
3252 |
+
|
3253 |
+
$this->modify_post_params_for_external_plugins( $defaults );
|
|
|
3254 |
|
3255 |
/*
|
3256 |
* Filter to exclude password protected posts.
|
3296 |
}
|
3297 |
$this->excludes = array_merge( $args['exclude'] , $exclude_slugs ); // Add excluded slugs and IDs to class var.
|
3298 |
|
3299 |
+
// TODO: consider using WP_Query instead of get_posts to improve efficiency.
|
3300 |
$posts = get_posts( apply_filters( $this->prefix . 'post_query', $args ) );
|
3301 |
if ( ! empty( $exclude_slugs ) ) {
|
3302 |
foreach ( $posts as $k => $v ) {
|
public/front.php
CHANGED
@@ -42,7 +42,6 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Front' ) ) {
|
|
42 |
* @since 2.3.9
|
43 |
*/
|
44 |
function redirect_attachment() {
|
45 |
-
|
46 |
global $aioseop_options;
|
47 |
if ( ! isset( $aioseop_options['aiosp_redirect_attachement_parent'] ) || $aioseop_options['aiosp_redirect_attachement_parent'] !== 'on' ) {
|
48 |
return false;
|
@@ -50,7 +49,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Front' ) ) {
|
|
50 |
|
51 |
global $post;
|
52 |
if ( is_attachment() && ( ( is_object( $post ) && isset( $post->post_parent ) ) && ( is_numeric( $post->post_parent ) && $post->post_parent != 0 ) ) ) {
|
53 |
-
wp_safe_redirect(
|
54 |
exit;
|
55 |
}
|
56 |
}
|
42 |
* @since 2.3.9
|
43 |
*/
|
44 |
function redirect_attachment() {
|
|
|
45 |
global $aioseop_options;
|
46 |
if ( ! isset( $aioseop_options['aiosp_redirect_attachement_parent'] ) || $aioseop_options['aiosp_redirect_attachement_parent'] !== 'on' ) {
|
47 |
return false;
|
49 |
|
50 |
global $post;
|
51 |
if ( is_attachment() && ( ( is_object( $post ) && isset( $post->post_parent ) ) && ( is_numeric( $post->post_parent ) && $post->post_parent != 0 ) ) ) {
|
52 |
+
wp_safe_redirect( aioseop_get_permalink( $post->post_parent ), 301 );
|
53 |
exit;
|
54 |
}
|
55 |
}
|
public/google-analytics.php
CHANGED
@@ -64,7 +64,7 @@ if ( ! class_exists( 'aioseop_google_analytics' ) ) {
|
|
64 |
) ) {
|
65 |
$autotrack = apply_filters(
|
66 |
'aiosp_google_autotrack',
|
67 |
-
'
|
68 |
);
|
69 |
?><script async src="<?php echo $autotrack ?>"></script>
|
70 |
<?php // Requested indent #921
|
64 |
) ) {
|
65 |
$autotrack = apply_filters(
|
66 |
'aiosp_google_autotrack',
|
67 |
+
AIOSEOP_PLUGIN_URL . 'public/js/autotrack.js'
|
68 |
);
|
69 |
?><script async src="<?php echo $autotrack ?>"></script>
|
70 |
<?php // Requested indent #921
|
public/js/autotrack.js
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function(){var f,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},k="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this;function l(){l=function(){};k.Symbol||(k.Symbol=ba)}var ca=0;function ba(a){return"jscomp_symbol_"+(a||"")+ca++}
|
2 |
+
function m(){l();var a=k.Symbol.iterator;a||(a=k.Symbol.iterator=k.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return da(this)}});m=function(){}}function da(a){var b=0;return ea(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ea(a){m();a={next:a};a[k.Symbol.iterator]=function(){return this};return a}function fa(a){m();l();m();var b=a[Symbol.iterator];return b?b.call(a):da(a)}
|
3 |
+
function n(a){if(!(a instanceof Array)){a=fa(a);for(var b,c=[];!(b=a.next()).done;)c.push(b.value);a=c}return a}function ha(a,b){function c(){}c.prototype=b.prototype;a.ha=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}var p=window.Element.prototype,ia=p.matches||p.matchesSelector||p.webkitMatchesSelector||p.mozMatchesSelector||p.msMatchesSelector||p.oMatchesSelector;
|
4 |
+
function ja(a,b){if(a&&1==a.nodeType&&b){if("string"==typeof b||1==b.nodeType)return a==b||ka(a,b);if("length"in b)for(var c=0,d;d=b[c];c++)if(a==d||ka(a,d))return!0}return!1}function ka(a,b){if("string"!=typeof b)return!1;if(ia)return ia.call(a,b);b=a.parentNode.querySelectorAll(b);for(var c=0,d;d=b[c];c++)if(d==a)return!0;return!1}function la(a){for(var b=[];a&&a.parentNode&&1==a.parentNode.nodeType;)a=a.parentNode,b.push(a);return b}
|
5 |
+
function q(a,b,c){function d(a){var d;if(h.composed&&"function"==typeof a.composedPath)for(var e=a.composedPath(),g=0,F;F=e[g];g++)1==F.nodeType&&ja(F,b)&&(d=F);else a:{if((d=a.target)&&1==d.nodeType&&b)for(d=[d].concat(la(d)),e=0;g=d[e];e++)if(ja(g,b)){d=g;break a}d=void 0}d&&c.call(d,a,d)}var e=document,h={composed:!0,S:!0},h=void 0===h?{}:h;e.addEventListener(a,d,h.S);return{j:function(){e.removeEventListener(a,d,h.S)}}}
|
6 |
+
function ma(a){var b={};if(!a||1!=a.nodeType)return b;a=a.attributes;if(!a.length)return{};for(var c=0,d;d=a[c];c++)b[d.name]=d.value;return b}var na=/:(80|443)$/,r=document.createElement("a"),t={};
|
7 |
+
function u(a){a=a&&"."!=a?a:location.href;if(t[a])return t[a];r.href=a;if("."==a.charAt(0)||"/"==a.charAt(0))return u(r.href);var b="80"==r.port||"443"==r.port?"":r.port,b="0"==b?"":b,c=r.host.replace(na,"");return t[a]={hash:r.hash,host:c,hostname:r.hostname,href:r.href,origin:r.origin?r.origin:r.protocol+"//"+c,pathname:"/"==r.pathname.charAt(0)?r.pathname:"/"+r.pathname,port:b,protocol:r.protocol,search:r.search}}var v=[];
|
8 |
+
function oa(a,b){var c=this;this.context=a;this.P=b;this.f=(this.c=/Task$/.test(b))?a.get(b):a[b];this.b=[];this.a=[];this.g=function(a){for(var b=[],d=0;d<arguments.length;++d)b[d-0]=arguments[d];return c.a[c.a.length-1].apply(null,[].concat(n(b)))};this.c?a.set(b,this.g):a[b]=this.g}function w(a,b,c){a=pa(a,b);a.b.push(c);qa(a)}function x(a,b,c){a=pa(a,b);c=a.b.indexOf(c);-1<c&&(a.b.splice(c,1),0<a.b.length?qa(a):a.j())}
|
9 |
+
function qa(a){a.a=[];for(var b,c=0;b=a.b[c];c++){var d=a.a[c-1]||a.f.bind(a.context);a.a.push(b(d))}}oa.prototype.j=function(){var a=v.indexOf(this);-1<a&&(v.splice(a,1),this.c?this.context.set(this.P,this.f):this.context[this.P]=this.f)};function pa(a,b){var c=v.filter(function(c){return c.context==a&&c.P==b})[0];c||(c=new oa(a,b),v.push(c));return c}
|
10 |
+
function y(a,b,c,d,e,h){if("function"==typeof d){var g=c.get("buildHitTask");return{buildHitTask:function(c){c.set(a,null,!0);c.set(b,null,!0);d(c,e,h);g(c)}}}return z({},a,b)}function A(a,b){var c=ma(a),d={};Object.keys(c).forEach(function(a){if(!a.indexOf(b)&&a!=b+"on"){var e=c[a];"true"==e&&(e=!0);"false"==e&&(e=!1);a=ra(a.slice(b.length));d[a]=e}});return d}
|
11 |
+
function sa(a){"loading"==document.readyState?document.addEventListener("DOMContentLoaded",function c(){document.removeEventListener("DOMContentLoaded",c);a()}):a()}function ta(a,b){var c;return function(d){for(var e=[],h=0;h<arguments.length;++h)e[h-0]=arguments[h];clearTimeout(c);c=setTimeout(function(){return a.apply(null,[].concat(n(e)))},b)}}function ua(a){function b(){c||(c=!0,a())}var c=!1;setTimeout(b,2E3);return b}var B={};
|
12 |
+
function va(a,b){function c(){clearTimeout(e.timeout);e.send&&x(a,"send",e.send);delete B[d];e.R.forEach(function(a){return a()})}var d=a.get("trackingId"),e=B[d]=B[d]||{};clearTimeout(e.timeout);e.timeout=setTimeout(c,0);e.R=e.R||[];e.R.push(b);e.send||(e.send=function(a){return function(b){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];c();a.apply(null,[].concat(n(d)))}},w(a,"send",e.send))}
|
13 |
+
var z=Object.assign||function(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];for(var d=0,e=c.length;d<e;d++){var h=Object(c[d]),g;for(g in h)Object.prototype.hasOwnProperty.call(h,g)&&(a[g]=h[g])}return a};function ra(a){return a.replace(/[\-\_]+(\w?)/g,function(a,c){return c.toUpperCase()})}function C(a){return"object"==typeof a&&null!==a}var D=function wa(b){return b?(b^16*Math.random()>>b/4).toString(16):"10000000-1000-4000-8000-100000000000".replace(/[018]/g,wa)};
|
14 |
+
function G(a,b){var c=window.GoogleAnalyticsObject||"ga";window[c]=window[c]||function(a){for(var b=[],d=0;d<arguments.length;++d)b[d-0]=arguments[d];(window[c].q=window[c].q||[]).push(b)};window.gaDevIds=window.gaDevIds||[];0>window.gaDevIds.indexOf("i5iSjo")&&window.gaDevIds.push("i5iSjo");window[c]("provide",a,b);window.gaplugins=window.gaplugins||{};window.gaplugins[a.charAt(0).toUpperCase()+a.slice(1)]=b}var H={T:1,U:2,V:3,X:4,Y:5,Z:6,$:7,aa:8,ba:9,W:10},I=Object.keys(H).length;
|
15 |
+
function J(a,b){a.set("\x26_av","2.4.0");var c=a.get("\x26_au"),c=parseInt(c||"0",16).toString(2);if(c.length<I)for(var d=I-c.length;d;)c="0"+c,d--;b=I-b;c=c.substr(0,b)+1+c.substr(b+1);a.set("\x26_au",parseInt(c||"0",2).toString(16))}function K(a,b){J(a,H.T);this.a=z({},b);this.g=a;this.b=this.a.stripQuery&&this.a.queryDimensionIndex?"dimension"+this.a.queryDimensionIndex:null;this.f=this.f.bind(this);this.c=this.c.bind(this);w(a,"get",this.f);w(a,"buildHitTask",this.c)}
|
16 |
+
K.prototype.f=function(a){var b=this;return function(c){if("page"==c||c==b.b){var d={location:a("location"),page:a("page")};return xa(b,d)[c]}return a(c)}};K.prototype.c=function(a){var b=this;return function(c){var d=xa(b,{location:c.get("location"),page:c.get("page")});c.set(d,null,!0);a(c)}};
|
17 |
+
function xa(a,b){var c=u(b.page||b.location),d=c.pathname;if(a.a.indexFilename){var e=d.split("/");a.a.indexFilename==e[e.length-1]&&(e[e.length-1]="",d=e.join("/"))}"remove"==a.a.trailingSlash?d=d.replace(/\/+$/,""):"add"==a.a.trailingSlash&&(/\.\w+$/.test(d)||"/"==d.substr(-1)||(d+="/"));d={page:d+(a.a.stripQuery?ya(a,c.search):c.search)};b.location&&(d.location=b.location);a.b&&(d[a.b]=c.search.slice(1)||"(not set)");return"function"==typeof a.a.urlFieldsFilter?(b=a.a.urlFieldsFilter(d,u),c={page:b.page,
|
18 |
+
location:b.location},a.b&&(c[a.b]=b[a.b]),c):d}function ya(a,b){if(Array.isArray(a.a.queryParamsWhitelist)){var c=[];b.slice(1).split("\x26").forEach(function(b){var d=fa(b.split("\x3d"));b=d.next().value;d=d.next().value;-1<a.a.queryParamsWhitelist.indexOf(b)&&d&&c.push([b,d])});return c.length?"?"+c.map(function(a){return a.join("\x3d")}).join("\x26"):""}return""}K.prototype.remove=function(){x(this.g,"get",this.f);x(this.g,"buildHitTask",this.c)};G("cleanUrlTracker",K);
|
19 |
+
function L(a,b){var c=this;J(a,H.U);if(window.addEventListener){this.a=z({events:["click"],fieldsObj:{},attributePrefix:"ga-"},b);this.f=a;this.c=this.c.bind(this);var d="["+this.a.attributePrefix+"on]";this.b={};this.a.events.forEach(function(a){c.b[a]=q(a,d,c.c)})}}
|
20 |
+
L.prototype.c=function(a,b){var c=this.a.attributePrefix;if(!(0>b.getAttribute(c+"on").split(/\s*,\s*/).indexOf(a.type))){var c=A(b,c),d=z({},this.a.fieldsObj,c);this.f.send(c.hitType||"event",y({transport:"beacon"},d,this.f,this.a.hitFilter,b,a))}};L.prototype.remove=function(){var a=this;Object.keys(this.b).forEach(function(b){a.b[b].j()})};G("eventTracker",L);
|
21 |
+
function za(a,b){var c=this;J(a,H.V);window.IntersectionObserver&&window.MutationObserver&&(this.a=z({rootMargin:"0px",fieldsObj:{},attributePrefix:"ga-"},b),this.c=a,this.M=this.M.bind(this),this.O=this.O.bind(this),this.K=this.K.bind(this),this.L=this.L.bind(this),this.b=null,this.items=[],this.i={},this.h={},sa(function(){c.a.elements&&c.observeElements(c.a.elements)}))}f=za.prototype;
|
22 |
+
f.observeElements=function(a){var b=this;a=M(this,a);this.items=this.items.concat(a.items);this.i=z({},a.i,this.i);this.h=z({},a.h,this.h);a.items.forEach(function(a){var c=b.h[a.threshold]=b.h[a.threshold]||new IntersectionObserver(b.O,{rootMargin:b.a.rootMargin,threshold:[+a.threshold]});(a=b.i[a.id]||(b.i[a.id]=document.getElementById(a.id)))&&c.observe(a)});this.b||(this.b=new MutationObserver(this.M),this.b.observe(document.body,{childList:!0,subtree:!0}));requestAnimationFrame(function(){})};
|
23 |
+
f.unobserveElements=function(a){var b=[],c=[];this.items.forEach(function(d){a.some(function(a){a=Aa(a);return a.id===d.id&&a.threshold===d.threshold&&a.trackFirstImpressionOnly===d.trackFirstImpressionOnly})?c.push(d):b.push(d)});if(b.length){var d=M(this,b),e=M(this,c);this.items=d.items;this.i=d.i;this.h=d.h;c.forEach(function(a){if(!d.i[a.id]){var b=e.h[a.threshold],c=e.i[a.id];c&&b.unobserve(c);d.h[a.threshold]||e.h[a.threshold].disconnect()}})}else this.unobserveAllElements()};
|
24 |
+
f.unobserveAllElements=function(){var a=this;Object.keys(this.h).forEach(function(b){a.h[b].disconnect()});this.b.disconnect();this.b=null;this.items=[];this.i={};this.h={}};function M(a,b){var c=[],d={},e={};b.length&&b.forEach(function(b){b=Aa(b);c.push(b);e[b.id]=a.i[b.id]||null;d[b.threshold]=a.h[b.threshold]||null});return{items:c,i:e,h:d}}f.M=function(a){for(var b=0,c;c=a[b];b++){for(var d=0,e;e=c.removedNodes[d];d++)N(this,e,this.L);for(d=0;e=c.addedNodes[d];d++)N(this,e,this.K)}};
|
25 |
+
function N(a,b,c){1==b.nodeType&&b.id in a.i&&c(b.id);for(var d=0,e;e=b.childNodes[d];d++)N(a,e,c)}
|
26 |
+
f.O=function(a){for(var b=[],c=0,d;d=a[c];c++)for(var e=0,h;h=this.items[e];e++){var g;if(g=d.target.id===h.id)(g=h.threshold)?g=d.intersectionRatio>=g:(g=d.intersectionRect,g=0<g.top||0<g.bottom||0<g.left||0<g.right);if(g){var E=h.id;g=document.getElementById(E);var E={transport:"beacon",eventCategory:"Viewport",eventAction:"impression",eventLabel:E,nonInteraction:!0},Na=z({},this.a.fieldsObj,A(g,this.a.attributePrefix));this.c.send("event",y(E,Na,this.c,this.a.hitFilter,g));h.trackFirstImpressionOnly&&
|
27 |
+
b.push(h)}}b.length&&this.unobserveElements(b)};f.K=function(a){var b=this,c=this.i[a]=document.getElementById(a);this.items.forEach(function(d){a==d.id&&b.h[d.threshold].observe(c)})};f.L=function(a){var b=this,c=this.i[a];this.items.forEach(function(d){a==d.id&&b.h[d.threshold].unobserve(c)});this.i[a]=null};f.remove=function(){this.unobserveAllElements()};G("impressionTracker",za);function Aa(a){"string"==typeof a&&(a={id:a});return z({threshold:0,trackFirstImpressionOnly:!0},a)}
|
28 |
+
function Ba(){this.a={}}function Ca(a,b){(a.a.externalSet=a.a.externalSet||[]).push(b)}Ba.prototype.ca=function(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];(this.a[a]=this.a[a]||[]).forEach(function(a){return a.apply(null,[].concat(n(c)))})};var O={},P=!1,Q;function R(a,b){b=void 0===b?{}:b;this.a={};this.b=a;this.w=b;this.l=null}ha(R,Ba);function S(a,b,c){a=["autotrack",a,b].join(":");O[a]||(O[a]=new R(a,c),P||(window.addEventListener("storage",Da),P=!0));return O[a]}
|
29 |
+
function Ea(){if(null!=Q)return Q;try{window.localStorage.setItem("autotrack","autotrack"),window.localStorage.removeItem("autotrack"),Q=!0}catch(a){Q=!1}return Q}R.prototype.get=function(){if(this.l)return this.l;if(Ea())try{this.l=Fa(window.localStorage.getItem(this.b))}catch(a){}return this.l=z({},this.w,this.l)};R.prototype.set=function(a){this.l=z({},this.w,this.l,a);if(Ea())try{var b=JSON.stringify(this.l);window.localStorage.setItem(this.b,b)}catch(c){}};
|
30 |
+
function Ga(a){a.l={};if(Ea())try{window.localStorage.removeItem(a.b)}catch(b){}}R.prototype.j=function(){delete O[this.b];Object.keys(O).length||(window.removeEventListener("storage",Da),P=!1)};function Da(a){var b=O[a.key];if(b){var c=z({},b.w,Fa(a.oldValue));a=z({},b.w,Fa(a.newValue));b.l=a;b.ca("externalSet",a,c)}}function Fa(a){var b={};if(a)try{b=JSON.parse(a)}catch(c){}return b}var T={};
|
31 |
+
function U(a,b,c){this.f=a;this.timeout=b||Ha;this.timeZone=c;this.b=this.b.bind(this);w(a,"sendHitTask",this.b);try{this.c=new Intl.DateTimeFormat("en-US",{timeZone:this.timeZone})}catch(d){}this.a=S(a.get("trackingId"),"session",{hitTime:0,isExpired:!1});this.a.get().id||this.a.set({id:D()})}function Ia(a,b,c){var d=a.get("trackingId");return T[d]?T[d]:T[d]=new U(a,b,c)}function V(a){return a.a.get().id}
|
32 |
+
U.prototype.isExpired=function(a){a=void 0===a?V(this):a;if(a!=V(this))return!0;a=this.a.get();if(a.isExpired)return!0;var b=a.hitTime;return b&&(a=new Date,b=new Date(b),a-b>6E4*this.timeout||this.c&&this.c.format(a)!=this.c.format(b))?!0:!1};U.prototype.b=function(a){var b=this;return function(c){a(c);var d=c.get("sessionControl");c="start"==d||b.isExpired();var d="end"==d,e=b.a.get();e.hitTime=+new Date;c&&(e.isExpired=!1,e.id=D());d&&(e.isExpired=!0);b.a.set(e)}};
|
33 |
+
U.prototype.j=function(){x(this.f,"sendHitTask",this.b);this.a.j();delete T[this.f.get("trackingId")]};var Ha=30;function W(a,b){J(a,H.W);window.addEventListener&&(this.b=z({increaseThreshold:20,sessionTimeout:Ha,fieldsObj:{}},b),this.f=a,this.c=Ja(this),this.g=ta(this.g.bind(this),500),this.o=this.o.bind(this),this.a=S(a.get("trackingId"),"plugins/max-scroll-tracker"),this.m=Ia(a,this.b.sessionTimeout,this.b.timeZone),w(a,"set",this.o),Ka(this))}
|
34 |
+
function Ka(a){100>(a.a.get()[a.c]||0)&&window.addEventListener("scroll",a.g)}
|
35 |
+
W.prototype.g=function(){var a=document.documentElement,b=document.body,a=Math.min(100,Math.max(0,Math.round(window.pageYOffset/(Math.max(a.offsetHeight,a.scrollHeight,b.offsetHeight,b.scrollHeight)-window.innerHeight)*100))),b=V(this.m);b!=this.a.get().sessionId&&(Ga(this.a),this.a.set({sessionId:b}));if(this.m.isExpired(this.a.get().sessionId))Ga(this.a);else if(b=this.a.get()[this.c]||0,a>b&&(100!=a&&100!=b||window.removeEventListener("scroll",this.g),b=a-b,100==a||b>=this.b.increaseThreshold)){var c=
|
36 |
+
{};this.a.set((c[this.c]=a,c.sessionId=V(this.m),c));a={transport:"beacon",eventCategory:"Max Scroll",eventAction:"increase",eventValue:b,eventLabel:String(a),nonInteraction:!0};this.b.maxScrollMetricIndex&&(a["metric"+this.b.maxScrollMetricIndex]=b);this.f.send("event",y(a,this.b.fieldsObj,this.f,this.b.hitFilter))}};W.prototype.o=function(a){var b=this;return function(c,d){a(c,d);var e={};(C(c)?c:(e[c]=d,e)).page&&(c=b.c,b.c=Ja(b),b.c!=c&&Ka(b))}};
|
37 |
+
function Ja(a){a=u(a.f.get("page")||a.f.get("location"));return a.pathname+a.search}W.prototype.remove=function(){this.m.j();window.removeEventListener("scroll",this.g);x(this.f,"set",this.o)};G("maxScrollTracker",W);var La={};function Ma(a,b){J(a,H.X);window.matchMedia&&(this.a=z({changeTemplate:this.changeTemplate,changeTimeout:1E3,fieldsObj:{}},b),C(this.a.definitions)&&(b=this.a.definitions,this.a.definitions=Array.isArray(b)?b:[b],this.b=a,this.c=[],Oa(this)))}
|
38 |
+
function Oa(a){a.a.definitions.forEach(function(b){if(b.name&&b.dimensionIndex){var c=Pa(b);a.b.set("dimension"+b.dimensionIndex,c);Qa(a,b)}})}function Pa(a){var b;a.items.forEach(function(a){Ra(a.media).matches&&(b=a)});return b?b.name:"(not set)"}
|
39 |
+
function Qa(a,b){b.items.forEach(function(c){c=Ra(c.media);var d=ta(function(){var c=Pa(b),d=a.b.get("dimension"+b.dimensionIndex);c!==d&&(a.b.set("dimension"+b.dimensionIndex,c),c={transport:"beacon",eventCategory:b.name,eventAction:"change",eventLabel:a.a.changeTemplate(d,c),nonInteraction:!0},a.b.send("event",y(c,a.a.fieldsObj,a.b,a.a.hitFilter)))},a.a.changeTimeout);c.addListener(d);a.c.push({fa:c,da:d})})}Ma.prototype.remove=function(){for(var a=0,b;b=this.c[a];a++)b.fa.removeListener(b.da)};
|
40 |
+
Ma.prototype.changeTemplate=function(a,b){return a+" \x3d\x3e "+b};G("mediaQueryTracker",Ma);function Ra(a){return La[a]||(La[a]=window.matchMedia(a))}function X(a,b){J(a,H.Y);window.addEventListener&&(this.a=z({formSelector:"form",shouldTrackOutboundForm:this.shouldTrackOutboundForm,fieldsObj:{},attributePrefix:"ga-"},b),this.b=a,this.c=q("submit",this.a.formSelector,this.f.bind(this)))}
|
41 |
+
X.prototype.f=function(a,b){var c={transport:"beacon",eventCategory:"Outbound Form",eventAction:"submit",eventLabel:u(b.action).href};if(this.a.shouldTrackOutboundForm(b,u)){navigator.sendBeacon||(a.preventDefault(),c.hitCallback=ua(function(){b.submit()}));var d=z({},this.a.fieldsObj,A(b,this.a.attributePrefix));this.b.send("event",y(c,d,this.b,this.a.hitFilter,b,a))}};
|
42 |
+
X.prototype.shouldTrackOutboundForm=function(a,b){a=b(a.action);return a.hostname!=location.hostname&&"http"==a.protocol.slice(0,4)};X.prototype.remove=function(){this.c.j()};G("outboundFormTracker",X);
|
43 |
+
function Y(a,b){var c=this;J(a,H.Z);window.addEventListener&&(this.a=z({events:["click"],linkSelector:"a, area",shouldTrackOutboundLink:this.shouldTrackOutboundLink,fieldsObj:{},attributePrefix:"ga-"},b),this.f=a,this.c=this.c.bind(this),this.b={},this.a.events.forEach(function(a){c.b[a]=q(a,c.a.linkSelector,c.c)}))}
|
44 |
+
Y.prototype.c=function(a,b){if(this.a.shouldTrackOutboundLink(b,u)){var c=b.getAttribute("href")||b.getAttribute("xlink:href"),d=u(c),e={transport:"beacon",eventCategory:"Outbound Link",eventAction:a.type,eventLabel:d.href};navigator.sendBeacon||"click"!=a.type||"_blank"==b.target||a.metaKey||a.ctrlKey||a.shiftKey||a.altKey||1<a.which||window.addEventListener("click",function(a){a.defaultPrevented||(a.preventDefault(),e.hitCallback=ua(function(){location.href=c}))});d=z({},this.a.fieldsObj,A(b,this.a.attributePrefix));
|
45 |
+
this.f.send("event",y(e,d,this.f,this.a.hitFilter,b,a))}};Y.prototype.shouldTrackOutboundLink=function(a,b){a=a.getAttribute("href")||a.getAttribute("xlink:href");b=b(a);return b.hostname!=location.hostname&&"http"==b.protocol.slice(0,4)};Y.prototype.remove=function(){var a=this;Object.keys(this.b).forEach(function(b){a.b[b].j()})};G("outboundLinkTracker",Y);var Z=D();
|
46 |
+
function Sa(a,b){var c=this;J(a,H.$);document.visibilityState&&(this.a=z({sessionTimeout:Ha,visibleThreshold:5E3,sendInitialPageview:!1,fieldsObj:{}},b),this.b=a,this.g=document.visibilityState,this.m=null,this.o=!1,this.v=this.v.bind(this),this.s=this.s.bind(this),this.G=this.G.bind(this),this.N=this.N.bind(this),this.c=S(a.get("trackingId"),"plugins/page-visibility-tracker"),Ca(this.c,this.N),this.f=Ia(a,this.a.sessionTimeout,this.a.timeZone),w(a,"set",this.v),window.addEventListener("unload",this.G),
|
47 |
+
document.addEventListener("visibilitychange",this.s),va(this.b,function(){if("visible"==document.visibilityState)c.a.sendInitialPageview&&(Ta(c,{ea:!0}),c.o=!0),c.c.set({time:+new Date,state:"visible",pageId:Z,sessionId:V(c.f)});else if(c.a.sendInitialPageview&&c.a.pageLoadsMetricIndex){var a={},a=(a.transport="beacon",a.eventCategory="Page Visibility",a.eventAction="page load",a.eventLabel="(not set)",a["metric"+c.a.pageLoadsMetricIndex]=1,a.nonInteraction=!0,a);c.b.send("event",y(a,c.a.fieldsObj,
|
48 |
+
c.b,c.a.hitFilter))}}))}f=Sa.prototype;
|
49 |
+
f.s=function(){var a=this;if("visible"==document.visibilityState||"hidden"==document.visibilityState){var b=Ua(this),c={time:+new Date,state:document.visibilityState,pageId:Z,sessionId:V(this.f)};"visible"==document.visibilityState&&this.a.sendInitialPageview&&!this.o&&(Ta(this),this.o=!0);"hidden"==document.visibilityState&&this.m&&clearTimeout(this.m);this.f.isExpired(b.sessionId)?(Ga(this.c),"hidden"==this.g&&"visible"==document.visibilityState&&(clearTimeout(this.m),this.m=setTimeout(function(){a.c.set(c);
|
50 |
+
Ta(a,{hitTime:c.time})},this.a.visibleThreshold))):(b.pageId==Z&&"visible"==b.state&&Va(this,b),this.c.set(c));this.g=document.visibilityState}};function Ua(a){var b=a.c.get();"visible"==a.g&&"hidden"==b.state&&b.pageId!=Z&&(b.state="visible",b.pageId=Z,a.c.set(b));return b}
|
51 |
+
function Va(a,b,c){c=(c?c:{}).hitTime;var d={hitTime:c},d=(d?d:{}).hitTime;(b=b.time?(d||+new Date)-b.time:0)&&b>=a.a.visibleThreshold&&(b=Math.round(b/1E3),d={transport:"beacon",nonInteraction:!0,eventCategory:"Page Visibility",eventAction:"track",eventValue:b,eventLabel:"(not set)"},c&&(d.queueTime=+new Date-c),a.a.visibleMetricIndex&&(d["metric"+a.a.visibleMetricIndex]=b),a.b.send("event",y(d,a.a.fieldsObj,a.b,a.a.hitFilter)))}
|
52 |
+
function Ta(a,b){var c=b?b:{};b=c.hitTime;var c=c.ea,d={transport:"beacon"};b&&(d.queueTime=+new Date-b);c&&a.a.pageLoadsMetricIndex&&(d["metric"+a.a.pageLoadsMetricIndex]=1);a.b.send("pageview",y(d,a.a.fieldsObj,a.b,a.a.hitFilter))}f.v=function(a){var b=this;return function(c,d){var e={},e=C(c)?c:(e[c]=d,e);e.page&&e.page!==b.b.get("page")&&"visible"==b.g&&b.s();a(c,d)}};f.N=function(a,b){a.time!=b.time&&(b.pageId!=Z||"visible"!=b.state||this.f.isExpired(b.sessionId)||Va(this,b,{hitTime:a.time}))};
|
53 |
+
f.G=function(){"hidden"!=this.g&&this.s()};f.remove=function(){this.c.j();this.f.j();x(this.b,"set",this.v);window.removeEventListener("unload",this.G);document.removeEventListener("visibilitychange",this.s)};G("pageVisibilityTracker",Sa);
|
54 |
+
function Wa(a,b){J(a,H.aa);window.addEventListener&&(this.a=z({fieldsObj:{},hitFilter:null},b),this.b=a,this.u=this.u.bind(this),this.J=this.J.bind(this),this.D=this.D.bind(this),this.A=this.A.bind(this),this.B=this.B.bind(this),this.F=this.F.bind(this),"complete"!=document.readyState?window.addEventListener("load",this.u):this.u())}f=Wa.prototype;
|
55 |
+
f.u=function(){if(window.FB)try{window.FB.Event.subscribe("edge.create",this.B),window.FB.Event.subscribe("edge.remove",this.F)}catch(a){}window.twttr&&this.J()};f.J=function(){var a=this;try{window.twttr.ready(function(){window.twttr.events.bind("tweet",a.D);window.twttr.events.bind("follow",a.A)})}catch(b){}};function Xa(a){try{window.twttr.ready(function(){window.twttr.events.unbind("tweet",a.D);window.twttr.events.unbind("follow",a.A)})}catch(b){}}
|
56 |
+
f.D=function(a){if("tweet"==a.region){var b={transport:"beacon",socialNetwork:"Twitter",socialAction:"tweet",socialTarget:a.data.url||a.target.getAttribute("data-url")||location.href};this.b.send("social",y(b,this.a.fieldsObj,this.b,this.a.hitFilter,a.target,a))}};
|
57 |
+
f.A=function(a){if("follow"==a.region){var b={transport:"beacon",socialNetwork:"Twitter",socialAction:"follow",socialTarget:a.data.screen_name||a.target.getAttribute("data-screen-name")};this.b.send("social",y(b,this.a.fieldsObj,this.b,this.a.hitFilter,a.target,a))}};f.B=function(a){this.b.send("social",y({transport:"beacon",socialNetwork:"Facebook",socialAction:"like",socialTarget:a},this.a.fieldsObj,this.b,this.a.hitFilter))};
|
58 |
+
f.F=function(a){this.b.send("social",y({transport:"beacon",socialNetwork:"Facebook",socialAction:"unlike",socialTarget:a},this.a.fieldsObj,this.b,this.a.hitFilter))};f.remove=function(){window.removeEventListener("load",this.u);try{window.FB.Event.unsubscribe("edge.create",this.B),window.FB.Event.unsubscribe("edge.remove",this.F)}catch(a){}Xa(this)};G("socialWidgetTracker",Wa);
|
59 |
+
function Ya(a,b){J(a,H.ba);history.pushState&&window.addEventListener&&(this.a=z({shouldTrackUrlChange:this.shouldTrackUrlChange,trackReplaceState:!1,fieldsObj:{},hitFilter:null},b),this.b=a,this.c=location.pathname+location.search,this.H=this.H.bind(this),this.I=this.I.bind(this),this.C=this.C.bind(this),w(history,"pushState",this.H),w(history,"replaceState",this.I),window.addEventListener("popstate",this.C))}f=Ya.prototype;
|
60 |
+
f.H=function(a){var b=this;return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];a.apply(null,[].concat(n(d)));Za(b,!0)}};f.I=function(a){var b=this;return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];a.apply(null,[].concat(n(d)));Za(b,!1)}};f.C=function(){Za(this,!0)};
|
61 |
+
function Za(a,b){setTimeout(function(){var c=a.c,d=location.pathname+location.search;c!=d&&a.a.shouldTrackUrlChange.call(a,d,c)&&(a.c=d,a.b.set({page:d,title:document.title}),(b||a.a.trackReplaceState)&&a.b.send("pageview",y({transport:"beacon"},a.a.fieldsObj,a.b,a.a.hitFilter)))},0)}f.shouldTrackUrlChange=function(a,b){return!(!a||!b)};f.remove=function(){x(history,"pushState",this.H);x(history,"replaceState",this.I);window.removeEventListener("popstate",this.C)};G("urlChangeTracker",Ya);})();
|
62 |
+
//# sourceMappingURL=autotrack.js.map
|
readme.txt
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
Contributors: hallsofmontezuma, wpsmort, dougal, pbaylies, arnaudbroes
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mrtorbert%40gmail%2ecom&item_name=All%20In%20One%20SEO%20Pack&item_number=Support%20Open%20Source&no_shipping=0&no_note=1&tax=0¤cy_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8
|
4 |
Tags: seo, all in one seo, google, twitter, page, image seo, social, search engine optimization, sitemap, WordPress SEO, meta, meta description, xml sitemap, google sitemap, sitemaps, robots meta, yahoo, bing, news sitemaps, multisite, canonical, nofollow, noindex, keywords, description, webmaster tools, google webmaster tools, google analytics
|
5 |
-
Requires at least: 4.
|
6 |
Tested up to: 4.9
|
7 |
-
Stable tag: 2.4.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
2 |
Contributors: hallsofmontezuma, wpsmort, dougal, pbaylies, arnaudbroes
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mrtorbert%40gmail%2ecom&item_name=All%20In%20One%20SEO%20Pack&item_number=Support%20Open%20Source&no_shipping=0&no_note=1&tax=0¤cy_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8
|
4 |
Tags: seo, all in one seo, google, twitter, page, image seo, social, search engine optimization, sitemap, WordPress SEO, meta, meta description, xml sitemap, google sitemap, sitemaps, robots meta, yahoo, bing, news sitemaps, multisite, canonical, nofollow, noindex, keywords, description, webmaster tools, google webmaster tools, google analytics
|
5 |
+
Requires at least: 4.4
|
6 |
Tested up to: 4.9
|
7 |
+
Stable tag: 2.4.5
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|