All in One SEO Pack - Version 3.4.3

Version Description

Download this release

Release Info

Developer benjaminprojas
Plugin Icon 128x128 All in One SEO Pack
Version 3.4.3
Comparing to
See all releases

Code changes from version 3.4.2 to 3.4.3

Files changed (42) hide show
  1. admin/aioseop_module_class.php +6 -0
  2. admin/class-aioseop-helper.php +1 -1
  3. admin/class-aioseop-notices.php +1 -1
  4. admin/display/notices/review-plugin-cta-notice.php +2 -2
  5. admin/display/notices/review-plugin-notice.php +0 -50
  6. aioseop_class.php +13 -12
  7. all_in_one_seo_pack.php +1 -1
  8. class-aioseop-core.php +13 -0
  9. css/admin-notice.min.css +0 -1
  10. css/aioseop-font-icons-rtl.css +0 -8
  11. css/aioseop-font-icons-rtl.min.css +0 -1
  12. css/aioseop-font-icons.min.css +0 -1
  13. css/aioseop-jquery-ui.min.css +0 -1
  14. css/aioseop-welcome-rtl.min.css +0 -1
  15. css/aioseop-welcome.min.css +0 -1
  16. css/aiosp_admin.css +2 -1
  17. css/aiosp_admin.min.css +0 -1
  18. images/accept.png +0 -0
  19. images/cog_edit.png +0 -0
  20. images/delete.png +0 -0
  21. inc/admin/class-aioseop-education.php +41 -1
  22. inc/admin/class-aioseop-link-attributes.php +5 -1
  23. inc/aioseop_functions.php +31 -2
  24. inc/aioseop_updates_class.php +6 -0
  25. inc/schema/aioseop-context.php +137 -9
  26. inc/schema/graphs/graph-webpage.php +19 -82
  27. js/admin/aioseop-quickedit.js +21 -16
  28. js/quickedit_functions.js +0 -93
  29. js/quickedit_functions.min.js +0 -1
  30. modules/aioseop_feature_manager.php +1 -1
  31. modules/images/banner11.png +0 -0
  32. modules/images/banner12.png +0 -0
  33. modules/images/banner13.png +0 -0
  34. modules/images/banner14.png +0 -0
  35. modules/images/banner15.png +0 -0
  36. modules/images/banner21.jpg +0 -0
  37. modules/images/banner22.jpg +0 -0
  38. modules/images/facebook-follow-retina.png +0 -0
  39. modules/images/facebook-follow-standard.png +0 -0
  40. modules/images/twitter-follow-retina.png +0 -0
  41. modules/images/twitter-follow-standard.png +0 -0
  42. readme.txt +1 -1
admin/aioseop_module_class.php CHANGED
@@ -319,6 +319,12 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Module' ) ) {
319
  if ( false == $option_name ) {
320
  $option_name = $this->get_option_name();
321
  }
 
 
 
 
 
 
322
  if ( $this->store_option || $option_name == $this->parent_option ) {
323
  return update_option( $option_name, $option_data );
324
  } else {
319
  if ( false == $option_name ) {
320
  $option_name = $this->get_option_name();
321
  }
322
+
323
+ // Delete rewrite rules when the XML Sitemap module is deactivated.
324
+ if ( 'aiosp_feature_manager_options' === $option_name && 'on' !== $option_data['aiosp_feature_manager_enable_sitemap'] ) {
325
+ aioseop_delete_rewrite_rules();
326
+ }
327
+
328
  if ( $this->store_option || $option_name == $this->parent_option ) {
329
  return update_option( $option_name, $option_data );
330
  } else {
admin/class-aioseop-helper.php CHANGED
@@ -443,7 +443,7 @@ class AIOSEOP_Helper {
443
  'aiosp_unprotect_meta' => __( "Check this to unprotect internal postmeta fields for use with XMLRPC. If you don't know what that is, leave it unchecked.", 'all-in-one-seo-pack' ),
444
  'aiosp_redirect_attachement_parent' => __( 'Redirect attachment pages to post parent.', 'all-in-one-seo-pack' ),
445
  /* translators: %s is a placeholder, which means that it should not be translated. It will be replaced with the name of the plugin, All in One SEO Pack. */
446
- 'aiosp_ex_pages' => sprintf( __( 'Enter a comma separated list of pages here to be excluded by %s. This is helpful when using plugins which generate their own non-WordPress dynamic pages. Ex: <em>/forum/, /contact/</em><br />For instance, if you want to exclude the virtual pages generated by a forum plugin, all you have to do is add "forum" or "/forum" or "/forum/" or any URL with the word "forum" in it here, such as "http://mysite.com/forum" or "http://mysite.com/forum/someforumpage", and it will be excluded.', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME ),
447
  'aiosp_post_meta_tags' => __( 'What you enter here will be copied verbatim to the header of all Posts. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ),
448
  'aiosp_page_meta_tags' => __( 'What you enter here will be copied verbatim to the header of all Pages. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ),
449
  'aiosp_front_meta_tags' => __( 'What you enter here will be copied verbatim to the header of the front page if you have set a static page in Settings, Reading, Front Page Displays. You can enter whatever additional headers you want here, even references to stylesheets. This will fall back to using Additional Page Headers if you have them set and nothing is entered here.', 'all-in-one-seo-pack' ),
443
  'aiosp_unprotect_meta' => __( "Check this to unprotect internal postmeta fields for use with XMLRPC. If you don't know what that is, leave it unchecked.", 'all-in-one-seo-pack' ),
444
  'aiosp_redirect_attachement_parent' => __( 'Redirect attachment pages to post parent.', 'all-in-one-seo-pack' ),
445
  /* translators: %s is a placeholder, which means that it should not be translated. It will be replaced with the name of the plugin, All in One SEO Pack. */
446
+ 'aiosp_ex_pages' => sprintf( __( 'Enter a comma separated list of pages here to be excluded by %s. This is helpful when using plugins which generate their own non-WordPress dynamic pages. Ex: <em>/forum/, /contact/</em><br />For instance, if you want to exclude the virtual pages generated by a forum plugin, all you have to do is add "forum" or "/forum" or "/forum/" or any URL with the word "forum" in it here, such as "http://example.com/forum" or "http://example.com/forum/someforumpage", and it will be excluded.', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME ),
447
  'aiosp_post_meta_tags' => __( 'What you enter here will be copied verbatim to the header of all Posts. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ),
448
  'aiosp_page_meta_tags' => __( 'What you enter here will be copied verbatim to the header of all Pages. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ),
449
  'aiosp_front_meta_tags' => __( 'What you enter here will be copied verbatim to the header of the front page if you have set a static page in Settings, Reading, Front Page Displays. You can enter whatever additional headers you want here, even references to stylesheets. This will fall back to using Additional Page Headers if you have them set and nothing is entered here.', 'all-in-one-seo-pack' ),
admin/class-aioseop-notices.php CHANGED
@@ -93,7 +93,7 @@ if ( ! class_exists( 'AIOSEOP_Notices' ) ) {
93
  *
94
  * @var int $default_dismiss_delay
95
  */
96
- private $default_dismiss_delay = 180;
97
 
98
  /**
99
  * List of Screens used in AIOSEOP.
93
  *
94
  * @var int $default_dismiss_delay
95
  */
96
+ private $default_dismiss_delay = 315569260; // 10 years
97
 
98
  /**
99
  * List of Screens used in AIOSEOP.
admin/display/notices/review-plugin-cta-notice.php CHANGED
@@ -42,8 +42,8 @@ function aioseop_notice_review_plugin_cta() {
42
  /* translators: %1$s is a placeholder, which means that it should not be translated. It will be replaced with the name of the plugin, All in One SEO Pack. */
43
  '<p>' . sprintf( __( 'Are you enjoying %1$s?', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME ) . '</p>
44
  <p>
45
- <a href="#" class="aioseo-review-switch-step-2" data-step="2">Not Really</a>
46
- <a href="#" class="aioseo-review-switch-step-3" data-step="3">Yes!</a>
47
  </p>
48
  </div>
49
  <div class="step-2" style="display:none;">' .
42
  /* translators: %1$s is a placeholder, which means that it should not be translated. It will be replaced with the name of the plugin, All in One SEO Pack. */
43
  '<p>' . sprintf( __( 'Are you enjoying %1$s?', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME ) . '</p>
44
  <p>
45
+ <a href="#" class="aioseo-review-switch-step-3" data-step="3">' . __( 'Yes I love it', 'all-in-one-seo-pack' ) . '</a> 🙂 |
46
+ <a href="#" class="aioseo-review-switch-step-2" data-step="2">' . __( 'Not Really...', 'all-in-one-seo-pack' ) . '</a>
47
  </p>
48
  </div>
49
  <div class="step-2" style="display:none;">' .
admin/display/notices/review-plugin-notice.php DELETED
@@ -1,50 +0,0 @@
1
- <?php
2
- /**
3
- * Review Plugin Notice
4
- *
5
- * @since 3.0
6
- * @package All-in-One-SEO-Pack
7
- * @subpackage AIOSEOP_Notices
8
- */
9
-
10
- /**
11
- * Notice - Review Plugin
12
- *
13
- * @since 3.0
14
- *
15
- * @return array Notice configuration.
16
- */
17
- function aioseop_notice_review_plugin() {
18
- return array(
19
- 'slug' => 'review_plugin',
20
- 'delay_time' => 1036800,
21
- 'target' => 'user',
22
- 'screens' => array( 'aioseop' ),
23
- 'class' => 'notice-info',
24
- /* translators: %1$s is a placeholder, which means that it should not be translated. It will be replaced with the name of the plugin, All in One SEO Pack. */
25
- 'message' => sprintf( __( 'You have been using %1$s for a while now. That is awesome! If you like %2$s, then please leave us a 5-star rating. Huge thanks in advance!', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME, AIOSEOP_PLUGIN_NAME ),
26
- 'action_options' => array(
27
- array(
28
- 'time' => 0,
29
- 'text' => __( 'Add a review', 'all-in-one-seo-pack' ),
30
- 'link' => 'https://wordpress.org/support/plugin/all-in-one-seo-pack/reviews?rate=5#new-post',
31
- 'dismiss' => false,
32
- 'class' => 'button-primary button-orange',
33
- ),
34
- array(
35
- 'text' => __( 'Remind me later', 'all-in-one-seo-pack' ),
36
- 'time' => 432000,
37
- 'dismiss' => false,
38
- 'class' => 'button-secondary',
39
- ),
40
- array(
41
- 'time' => 0,
42
- 'text' => __( 'No, thanks', 'all-in-one-seo-pack' ),
43
- 'dismiss' => true,
44
- 'class' => 'button-secondary',
45
- ),
46
- ),
47
- );
48
- }
49
- // phpcs:ignore Squiz.Commenting.InlineComment.InvalidEndChar
50
- // add_filter( 'aioseop_admin_notice-review_plugin', 'aioseop_notice_review_plugin' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aioseop_class.php CHANGED
@@ -3752,9 +3752,9 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
3752
  $extra_title_length = strlen( preg_replace( '/<span.*\/span>/', '', html_entity_decode( $title_format, ENT_QUOTES ) ) );
3753
 
3754
  $snippet_preview_data = array(
3755
- 'autogenerateDescriptions' => $aioseop_options['aiosp_generate_descriptions'],
3756
- 'skipExcerpt' => $aioseop_options['aiosp_skip_excerpt'],
3757
- 'dontTruncateDescriptions' => $aioseop_options['aiosp_dont_truncate_descriptions'],
3758
  );
3759
 
3760
  $count_chars_data['extraTitleLength'] = $extra_title_length;
@@ -4298,6 +4298,8 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
4298
  * @since 3.4.0
4299
  */
4300
  function check_php_version() {
 
 
4301
 
4302
  // Display for PHP below 5.6
4303
  if ( version_compare( PHP_VERSION, '5.4', '>=' ) ) {
@@ -4314,7 +4316,6 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
4314
  return;
4315
  }
4316
 
4317
- global $aioseop_notices;
4318
  $aioseop_notices->reset_notice( 'check_php_version' );
4319
  $aioseop_notices->activate_notice( 'check_php_version' );
4320
  }
@@ -5079,10 +5080,6 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
5079
 
5080
  if ( isset( $awmp_edit ) && ! empty( $awmp_edit ) && wp_verify_nonce( $nonce, 'edit-aioseop-nonce' ) ) {
5081
 
5082
- if ( empty( $this->options['aiosp_can'] ) ) {
5083
- unset( $optlist['custom_link'] );
5084
- }
5085
-
5086
  $optlist = array(
5087
  'keywords',
5088
  'description',
@@ -5097,6 +5094,10 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
5097
  'sitemap_frequency',
5098
  );
5099
 
 
 
 
 
5100
  if ( ! AIOSEOPPRO ) {
5101
  $optlist = array_diff( $optlist, array( 'sitemap_priority', 'sitemap_frequency' ) );
5102
  }
@@ -5357,10 +5358,6 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
5357
 
5358
  if ( isset( $awmp_edit ) && ! empty( $awmp_edit ) && wp_verify_nonce( $nonce, 'edit-aioseop-nonce' ) ) {
5359
 
5360
- if ( empty( $this->options['aiosp_can'] ) ) {
5361
- unset( $optlist['custom_link'] );
5362
- }
5363
-
5364
  $optlist = array(
5365
  'keywords',
5366
  'description',
@@ -5375,6 +5372,10 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
5375
  'sitemap_frequency',
5376
  );
5377
 
 
 
 
 
5378
  if ( ! AIOSEOPPRO ) {
5379
  $optlist = array_diff( $optlist, array( 'sitemap_priority', 'sitemap_frequency' ) );
5380
  }
3752
  $extra_title_length = strlen( preg_replace( '/<span.*\/span>/', '', html_entity_decode( $title_format, ENT_QUOTES ) ) );
3753
 
3754
  $snippet_preview_data = array(
3755
+ 'autogenerateDescriptions' => isset( $aioseop_options['aiosp_generate_descriptions'] ) ? $aioseop_options['aiosp_generate_descriptions'] : '',
3756
+ 'skipExcerpt' => isset( $aioseop_options['aiosp_skip_excerpt'] ) ? $aioseop_options['aiosp_skip_excerpt'] : '',
3757
+ 'dontTruncateDescriptions' => isset( $aioseop_options['aiosp_dont_truncate_descriptions'] ) ? $aioseop_options['aiosp_dont_truncate_descriptions'] : '',
3758
  );
3759
 
3760
  $count_chars_data['extraTitleLength'] = $extra_title_length;
4298
  * @since 3.4.0
4299
  */
4300
  function check_php_version() {
4301
+ global $aioseop_notices;
4302
+ $aioseop_notices->deactivate_notice( 'check_php_version' );
4303
 
4304
  // Display for PHP below 5.6
4305
  if ( version_compare( PHP_VERSION, '5.4', '>=' ) ) {
4316
  return;
4317
  }
4318
 
 
4319
  $aioseop_notices->reset_notice( 'check_php_version' );
4320
  $aioseop_notices->activate_notice( 'check_php_version' );
4321
  }
5080
 
5081
  if ( isset( $awmp_edit ) && ! empty( $awmp_edit ) && wp_verify_nonce( $nonce, 'edit-aioseop-nonce' ) ) {
5082
 
 
 
 
 
5083
  $optlist = array(
5084
  'keywords',
5085
  'description',
5094
  'sitemap_frequency',
5095
  );
5096
 
5097
+ if ( empty( $this->options['aiosp_can'] ) ) {
5098
+ unset( $optlist['custom_link'] );
5099
+ }
5100
+
5101
  if ( ! AIOSEOPPRO ) {
5102
  $optlist = array_diff( $optlist, array( 'sitemap_priority', 'sitemap_frequency' ) );
5103
  }
5358
 
5359
  if ( isset( $awmp_edit ) && ! empty( $awmp_edit ) && wp_verify_nonce( $nonce, 'edit-aioseop-nonce' ) ) {
5360
 
 
 
 
 
5361
  $optlist = array(
5362
  'keywords',
5363
  'description',
5372
  'sitemap_frequency',
5373
  );
5374
 
5375
+ if ( empty( $this->options['aiosp_can'] ) ) {
5376
+ unset( $optlist['custom_link'] );
5377
+ }
5378
+
5379
  if ( ! AIOSEOPPRO ) {
5380
  $optlist = array_diff( $optlist, array( 'sitemap_priority', 'sitemap_frequency' ) );
5381
  }
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 WordPress. Features like XML Sitemaps, SEO for custom post types, SEO for blogs or business sites, SEO for ecommerce sites, and much more. More than 50 million downloads since 2007.
6
- Version: 3.4.2
7
  Author: All in One SEO Team
8
  Author URI: https://semperplugins.com/all-in-one-seo-pack-pro-version/
9
  Text Domain: 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 WordPress. Features like XML Sitemaps, SEO for custom post types, SEO for blogs or business sites, SEO for ecommerce sites, and much more. More than 50 million downloads since 2007.
6
+ Version: 3.4.3
7
  Author: All in One SEO Team
8
  Author URI: https://semperplugins.com/all-in-one-seo-pack-pro-version/
9
  Text Domain: all-in-one-seo-pack
class-aioseop-core.php CHANGED
@@ -427,6 +427,7 @@ class AIOSEOP_Core {
427
 
428
  $file_dir = AIOSEOP_PLUGIN_DIR . 'all_in_one_seo_pack.php';
429
  register_activation_hook( $file_dir, array( 'AIOSEOP_Core', 'activate' ) );
 
430
 
431
  // TODO Move AJAX to aioseop_admin class, and could be a separate function hooked onto admin_init.
432
  add_action( 'wp_ajax_aioseop_ajax_save_meta', 'aioseop_ajax_save_meta' );
@@ -508,6 +509,15 @@ class AIOSEOP_Core {
508
  }
509
  }
510
 
 
 
 
 
 
 
 
 
 
511
  /**
512
  * Disable AIOSEOP Free version.
513
  *
@@ -781,6 +791,9 @@ class AIOSEOP_Core {
781
  * @since 3.4.0
782
  */
783
  function front_enqueue_styles() {
 
 
 
784
  wp_enqueue_style( 'aioseop-toolbar-menu', AIOSEOP_PLUGIN_URL . 'css/admin-toolbar-menu.css', null, AIOSEOP_VERSION, 'all' );
785
  }
786
  }
427
 
428
  $file_dir = AIOSEOP_PLUGIN_DIR . 'all_in_one_seo_pack.php';
429
  register_activation_hook( $file_dir, array( 'AIOSEOP_Core', 'activate' ) );
430
+ register_deactivation_hook( $file_dir, array( 'AIOSEOP_Core', 'deactivate' ) );
431
 
432
  // TODO Move AJAX to aioseop_admin class, and could be a separate function hooked onto admin_init.
433
  add_action( 'wp_ajax_aioseop_ajax_save_meta', 'aioseop_ajax_save_meta' );
509
  }
510
  }
511
 
512
+ /**
513
+ * Runs on plugin deactivation.
514
+ *
515
+ * @since 3.4.3
516
+ */
517
+ public static function deactivate() {
518
+ aioseop_delete_rewrite_rules();
519
+ }
520
+
521
  /**
522
  * Disable AIOSEOP Free version.
523
  *
791
  * @since 3.4.0
792
  */
793
  function front_enqueue_styles() {
794
+ if ( ! is_user_logged_in() ) {
795
+ return;
796
+ }
797
  wp_enqueue_style( 'aioseop-toolbar-menu', AIOSEOP_PLUGIN_URL . 'css/admin-toolbar-menu.css', null, AIOSEOP_VERSION, 'all' );
798
  }
799
  }
css/admin-notice.min.css DELETED
@@ -1 +0,0 @@
1
- .aioseop-notice-delay{display:inherit}.aioseop-notice-delay.aioseop-delay-0.button-primary.button-orange{background:#d54e21;border-color:#aa3e1a;-webkit-box-shadow:0 1px 0 #aa3e1a;box-shadow:0 1px 0 #aa3e1a;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #d54e21,1px 0 1px #d54e21,0 1px 1px #d54e21,-1px 0 1px #d54e21}
 
css/aioseop-font-icons-rtl.css DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * RTL overrides for Font Icons.
3
- *
4
- * @since 3.0.0
5
- */
6
- .aioseop-label-quickedit {
7
- padding: 0 20px 0 0;
8
- }
 
 
 
 
 
 
 
 
css/aioseop-font-icons-rtl.min.css DELETED
@@ -1 +0,0 @@
1
- .aioseop-label-quickedit{padding:0 20px 0 0}
 
css/aioseop-font-icons.min.css DELETED
@@ -1 +0,0 @@
1
- @font-face{font-family:aioseop-font;src:url(font-icons/aioseop.eot);src:url(font-icons/aioseop.eot?#iefix) format('embedded-opentype'),url(font-icons/aioseop.woff) format('woff'),url(font-icons/aioseop.ttf) format('truetype'),url(font-icons/aioseop.svg#aioseop) format('svg');font-weight:400;font-style:normal}[class*=' aioseop-icon-']:before,[class^=aioseop-icon-]:before{display:inline-block;font-family:aioseop-font;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.aioseop_icon{display:inline;margin-right:10px;color:#00a2e2;font-size:2.5em;line-height:1.2;vertical-align:middle}.aioseop-icon-file:before{content:'\69'}.aioseop-icon-support:before{content:'\6a'}.aioseop-icon-cog:before{content:'\6b'}.aioseop-icon-youtube:before{content:'\6c'}.aioseop-icon-book:before{content:'\6d'}.aioseop_help_icon:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAflBMVEUAAAAAn98AnuIAn+EAneAAnuAAnuAAn+QAn+QAneEAnuAAnuAAn+EAnuAAnuEAneAAn+cAneAAnuAAn98AnOIAnuEAneIAn+MAnuEAnuEAn+EAneIAneEAneEAnuEAn+MAneAAneEAnuMAnOIAn+cAneEBnuEAneAAnuMBnuEoGewkAAAAKXRSTlMAEE9/r7/fADCPzwBv718AIPDAAFCwYEAAoAAAn4CQAOAAPwAAcADQAFP96WQAAAMNSURBVHhelZcNc5swDIatBghpoCGEj9Jij2XLMv3/P7glkoNtZJo+d+0lhBOveSXZUjHgZZOkGf4nS5PNC5wiKPFqvnvFgNddvpVQy0tQZCiSFfCEAtiUGKXcwFcB3kpcpXx791HetypFn2NdH9EnrX67KPdL46g/tl3PeqHvWidM2fxyUM7n3fzgof8R0A9zjN3PGTV/HB+6teg66EeIUQqQIGOiSQMGmeRgUQfGPn/Ktyv0k9UQKrCxWzitAq3V6dvYIDG8f8mAROO6ULF/3ecTaHazcvIgjTw/PxfFeVFErCHd31C3fx2v39cKGy6qLKyA1tGr/v8BLWDyb3OLqiw+XGCiq8DFxIvypMKIHqMXvaeLmmyEkn1xSTCAjWcMS7gruFD+eo/QuEC7AYCy+nJXkC1/r5A4Gq2NrQCvjMnL7OZCLggY3KoAI5jMEvKt2hohBYK3wiveuwx8i3qn/uvVf0O2Hh5MnLwOZMTrXgGt4OCi7RuyXNg1F1oDqEZIQh2K6oUALalSWqgiIwUIM4VVqZZvdlkE7QQFFLRVNS3l5NLZarMkgkx6ebWiNPqzSu9nEkM2KDZhjbykh+19KKri3+LkIxLhVlE/E4CaAjsd4AYo9zJkR9huGF7CtPYSX9FyXG4XFHe2UQIt9fIGa6NNJBErX2r35O0wp7KEbZYSNpVtMYngSpbZYoI1G9YClFzOp+vKS6jviLFJ+fWgDralfZO5peW2xX8LKB9NdTtxsQuc7/wV0OTv/YRyiUuIugCls7FwizffsXHgzcRurjEjYgH8zdVKyODZJUDGAuxZubNnt5BIgMQ7YNyowy2c0XfCqyNX6HzE2Ve8A28+nmDDHaJyD9sNChpkxvCYRxgkEjitAkl40AzPjxm7KdNnSAzLgaNFZhcVATtkBmliGaTJSJ6mBnnkMWgpx+XAMZZoMbGZqXEHm6Q4sxA4F4k7DEkjD1PVGJCmGFDLQ5elO+Iqx7B/q88A0FKI+DSlBLMuE4pMF3h6+DZXDLia6PAtA41u67uUqW51E02uf46zvXx+HY4YAAAAAElFTkSuQmCC)}.aioseop-icon-qedit{margin:0 3px;line-height:2;font-size:14px}.aioseop-icon-qedit-accept{color:#9dd490}.aioseop-icon-qedit-accept:hover{color:#97eb84}.aioseop-icon-qedit-accept:before{content:'\70'}.aioseop-icon-qedit-delete{color:#ed8881}.aioseop-icon-qedit-delete:hover{color:#ffad9e}.aioseop-icon-qedit-delete:before{content:'\71'}.aioseop_edit_link{display:inline-block;position:absolute}.aioseop-icon-cog-edit{color:#72777c}.aioseop-icon-cog-edit:hover{color:#0073aa}.aioseop-icon-cog-edit:before{content:'\6e'}.aioseop-label-quickedit{padding-left:20px}div.aioseop_tip_icon{font-size:14px;border:1px solid #888;width:1em;text-align:center;padding:0 4px;-webkit-border-radius:12px;-moz-border-radius:12px;-webkit-box-shadow:1px 1px 1px #888;-moz-box-shadow:1px 1px 1px #888;box-shadow:1px 1px 1px #888;border-radius:12px}div.aioseop_tip_icon:before{content:'?'}.aiosp-di .dashicons{margin:1px 3px;line-height:1;width:42px;height:36px;color:#fff;padding:3px;vertical-align:middle}.aiosp-di .dashicons:before{-webkit-font-smoothing:antialiased;font-family:dashicons;font-weight:400;font-size:1.75em;line-height:38px}.aiosp-di .dashicons.di-facebook{width:36px;background-color:#3b5998;border-radius:2px}.aiosp-di .dashicons.di-facebook:before{content:'\f305'}.aiosp-di .dashicons.di-twitter{width:36px;background-color:#00aced;border-radius:2px}.aiosp-di .dashicons.di-twitter:before{content:'\f301'}
 
css/aioseop-jquery-ui.min.css DELETED
@@ -1 +0,0 @@
1
- #aiosp_tabbed .ui-helper-clearfix:after,#aiosp_tabbed .ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}#aiosp_tabbed .ui-helper-clearfix:after{clear:both}#aiosp_tabbed .ui-tabs{position:relative;padding:.2em}#aiosp_tabbed .ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}#aiosp_tabbed .ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}#aiosp_tabbed .ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}#aiosp_tabbed .ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}#aiosp_tabbed .ui-state-default,#aiosp_tabbed .ui-widget-content .ui-state-default,#aiosp_tabbed .ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:400;color:#555}#aiosp_tabbed .ui-state-active,#aiosp_tabbed .ui-widget-content .ui-state-active,#aiosp_tabbed .ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}#aiosp_tabbed .ui-corner-all,#aiosp_tabbed .ui-corner-left,#aiosp_tabbed .ui-corner-tl,#aiosp_tabbed .ui-corner-top{border-top-left-radius:4px}#aiosp_tabbed .ui-corner-all,#aiosp_tabbed .ui-corner-right,#aiosp_tabbed .ui-corner-top,#aiosp_tabbed .ui-corner-tr{border-top-right-radius:4px}#aiosp_tabbed .ui-corner-all,#aiosp_tabbed .ui-corner-bl,#aiosp_tabbed .ui-corner-bottom,#aiosp_tabbed .ui-corner-left{border-bottom-left-radius:4px}#aiosp_tabbed .ui-corner-all,#aiosp_tabbed .ui-corner-bottom,#aiosp_tabbed .ui-corner-br,#aiosp_tabbed .ui-corner-right{border-bottom-right-radius:4px}.aioseop-ui-tooltip.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}
 
css/aioseop-welcome-rtl.min.css DELETED
@@ -1 +0,0 @@
1
- .aioseop-welcome-logo{float:left;margin-left:200px;margin-right:0;padding:0 20px 0 20px}
 
css/aioseop-welcome.min.css DELETED
@@ -1 +0,0 @@
1
- h2.nav-tab-wrapper{margin:22px 0 0 0}#sections{padding:22px;background:#fff;border:1px solid #ccc;border-top:0}section{display:none}section:first-child{display:block}.no-js h2.nav-tab-wrapper{display:none}.no-js #sections{border-top:1px solid #ccc;margin-top:22px}.no-js section{border-top:1px dashed #aaa;margin-top:22px;padding-top:22px}.no-js section:first-child{margin:0;padding:0;border:0}.nav-tab-active{background-color:#fff}.welcome-panel-close{display:none}.welcome-panel-close{z-index:2}.welcome-panel{overflow-x:hidden}.welcome-panel>p{margin-left:15px}.welcome-panel-content{display:inline-block}.welcome-panel-column{width:30%!important;margin-right:3%;display:inline-block;vertical-align:top}.welcome-panel-column:last-child{margin-right:0}.welcome-panel-column p.aioseop-message{width:70%;display:inline-block;vertical-align:top}.welcome-panel-column p.call-to-action{display:inline-block;width:25%;vertical-align:top;margin-left:3%;margin-top:13px}.welcome-panel-column p.call-to-action .button-orange{background:#d54e21;border-color:#aa3e1a;-webkit-box-shadow:0 1px 0 #aa3e1a;box-shadow:0 1px 0 #aa3e1a;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #d54e21,1px 0 1px #d54e21,0 1px 1px #d54e21,-1px 0 1px #d54e21}.welcome-panel-column ul{margin-left:20px}#wp-people-group-rockstars li{margin-bottom:1.33em}#wp-people-group-rockstars li.wp-person{margin-bottom:0}@media screen and (max-width:850px){.welcome-panel-column{width:100%;margin-right:0;display:block}}.aioseop-welcome-logo{float:right;margin-right:200px;padding:0 20px 20px 20px}.rtl h1{font-weight:400}
 
css/aiosp_admin.css CHANGED
@@ -443,4 +443,5 @@ label[for=aioseop_edit_profile_header] {
443
  .aioseop-quickedit-spinner {
444
  float:left;
445
  width:20px;
446
- margin-right:5px;
 
443
  .aioseop-quickedit-spinner {
444
  float:left;
445
  width:20px;
446
+ margin-right:5px;
447
+ }
css/aiosp_admin.min.css DELETED
@@ -1 +0,0 @@
1
- #aioseop_settings_header #message{padding:5px 0 5px 50px;background-image:url(../images/update32.png);background-repeat:no-repeat;background-position:10px;font-size:14px;min-height:32px;clear:none}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (-o-min-device-pixel-ratio:3/2),only screen and (min-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx){#aioseop_settings_header #message{background-image:url(../images/update64.png)!important;-webkit-background-size:32px 32px!important;-moz-background-size:32px 32px!important;background-size:32px 32px!important}}.proupgrade a{font-weight:900;color:#d54e21;font-size:105%}li#wp-admin-bar-aioseop-pro-upgrade a.ab-item{font-weight:900;color:#d54e21!important;font-size:110%}#aio-pro-update{font-weight:900;color:#cc4b1f!important;font-size:110%}.upgrade_menu_link{font-weight:900;color:#d54e21;font-size:105%}label[for=aioseop_edit_profile_header]{font-size:1.3em}#aioseop_edit_profile_header{display:none}.ui-tooltip.ui-widget.ui-corner-all.ui-widget-content.aioseop-ui-tooltip{font-family:'Open Sans',sans-serif;-webkit-box-shadow:0 1px 6px -2px #0073aa;box-shadow:0 1px 6px -2px #0073aa;border:0;border-radius:0;background:#fefefe}.ui-tooltip.ui-widget.ui-corner-all.ui-widget-content.aioseop-ui-tooltip a{color:#0073aa;text-decoration:none}.ui-tooltip.ui-widget.ui-corner-all.ui-widget-content.aioseop-ui-tooltip dt{font-weight:700}
 
images/accept.png DELETED
Binary file
images/cog_edit.png DELETED
Binary file
images/delete.png DELETED
Binary file
inc/admin/class-aioseop-education.php CHANGED
@@ -33,6 +33,7 @@ class AIOSEOP_Education {
33
  if ( is_admin() ) {
34
  add_action( 'admin_footer_text', array( 'AIOSEOP_Education', 'admin_footer_text' ) );
35
  add_action( 'admin_enqueue_scripts', array( 'AIOSEOP_Education', 'admin_enqueue_scripts' ) );
 
36
 
37
  return;
38
  }
@@ -661,7 +662,10 @@ class AIOSEOP_Education {
661
  $conflicting_sitemap_plugins = self::get_conflicting_plugins( 'sitemap' );
662
  }
663
 
664
- if ( empty( $conflicting_seo_plugins ) && empty( $conflicting_sitemap_plugins ) ) {
 
 
 
665
  if ( isset( $aioseop_notices->active_notices['conflicting_plugin'] ) ) {
666
  $aioseop_notices->remove_notice( 'conflicting_plugin' );
667
  }
@@ -672,6 +676,33 @@ class AIOSEOP_Education {
672
  add_filter( 'aioseop_admin_notice-conflicting_plugin', array( 'AIOSEOP_Education', 'filter_conflicting_plugin_notice_data' ) );
673
  }
674
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
675
  /**
676
  * Filters the data that goes into our conflicting plugins notice.
677
  *
@@ -961,4 +992,13 @@ class AIOSEOP_Education {
961
  </div>' .
962
  self::get_taxonomies_upsell_modal_markup( $page_id, $is_woocommerce_page ) . '</div>';
963
  }
 
 
 
 
 
 
 
 
 
964
  }
33
  if ( is_admin() ) {
34
  add_action( 'admin_footer_text', array( 'AIOSEOP_Education', 'admin_footer_text' ) );
35
  add_action( 'admin_enqueue_scripts', array( 'AIOSEOP_Education', 'admin_enqueue_scripts' ) );
36
+ add_action( 'in_admin_header', array( 'AIOSEOP_Education', 'hide_notices' ) );
37
 
38
  return;
39
  }
662
  $conflicting_sitemap_plugins = self::get_conflicting_plugins( 'sitemap' );
663
  }
664
 
665
+ $conflicting_plugins = array_merge( $conflicting_seo_plugins, $conflicting_sitemap_plugins );
666
+ self::check_new_conflicting_plugins( $conflicting_plugins );
667
+
668
+ if ( empty( $conflicting_plugins ) ) {
669
  if ( isset( $aioseop_notices->active_notices['conflicting_plugin'] ) ) {
670
  $aioseop_notices->remove_notice( 'conflicting_plugin' );
671
  }
676
  add_filter( 'aioseop_admin_notice-conflicting_plugin', array( 'AIOSEOP_Education', 'filter_conflicting_plugin_notice_data' ) );
677
  }
678
 
679
+ /**
680
+ * Checks if new conflicting plugins were found and resets notice status.
681
+ *
682
+ * @since 3.4.3
683
+ *
684
+ * @param array $conflicting_plugins
685
+ */
686
+ private static function check_new_conflicting_plugins( $conflicting_plugins ) {
687
+ // get_option() doesn't work here because it returns false if the option is blank, and we need to know if it exists.
688
+ global $wpdb;
689
+ $count = (int) $wpdb->get_var( "select count(*) from {$wpdb->prefix}options where option_name = 'aioseop_detected_conflicting_plugins'");
690
+
691
+ $stored = array();
692
+ if( 0 !== $count ) {
693
+ $stored = get_option( 'aioseop_detected_conflicting_plugins' );
694
+ update_option( 'aioseop_detected_conflicting_plugins', $conflicting_plugins );
695
+ } else {
696
+ add_option( 'aioseop_detected_conflicting_plugins', $conflicting_plugins );
697
+ }
698
+
699
+ if ( count( $stored ) < count( $conflicting_plugins ) ) {
700
+ if( get_user_meta( get_current_user_id(), 'aioseop_notice_display_time_conflicting_plugin' ) ) {
701
+ delete_user_meta( get_current_user_id(), 'aioseop_notice_display_time_conflicting_plugin' );
702
+ }
703
+ }
704
+ }
705
+
706
  /**
707
  * Filters the data that goes into our conflicting plugins notice.
708
  *
992
  </div>' .
993
  self::get_taxonomies_upsell_modal_markup( $page_id, $is_woocommerce_page ) . '</div>';
994
  }
995
+
996
+ public static function hide_notices() {
997
+ if ( 'all-in-one-seo_page_aioseop-about' !== get_current_screen()->id ) {
998
+ return;
999
+ }
1000
+
1001
+ remove_all_actions('admin_notices');
1002
+ remove_all_actions('all_admin_notices');
1003
+ }
1004
  }
inc/admin/class-aioseop-link-attributes.php CHANGED
@@ -23,7 +23,11 @@ class AIOSEOP_Link_Attributes {
23
  * @return void
24
  */
25
  public static function enqueue_link_attributes_classic_editor() {
26
- wp_deregister_script( 'wplink' );
 
 
 
 
27
  wp_enqueue_script(
28
  'aioseop-link-attributes-classic-editor',
29
  AIOSEOP_PLUGIN_URL . 'js/admin/aioseop-link-attributes-classic-editor.js',
23
  * @return void
24
  */
25
  public static function enqueue_link_attributes_classic_editor() {
26
+ $active_plugins = get_option('active_plugins');
27
+ if ( in_array( 'title-and-nofollow-for-links/title-and-nofollow-for-links.php', $active_plugins ) ) {
28
+ wp_deregister_script( 'wplink' );
29
+ }
30
+
31
  wp_enqueue_script(
32
  'aioseop-link-attributes-classic-editor',
33
  AIOSEOP_PLUGIN_URL . 'js/admin/aioseop-link-attributes-classic-editor.js',
inc/aioseop_functions.php CHANGED
@@ -848,7 +848,7 @@ if ( ! function_exists( 'render_seo_column' ) ) {
848
  $nonce = wp_create_nonce( "aioseop_meta_{$column_name}_{$post_id}" );
849
 
850
  ?>
851
- <div id="<?php echo "aioseop_${column_name}_${post_id}"; ?>" class="aioseop_mpc_admin_meta_options aio_editing">
852
  <a
853
  class="dashicons dashicons-edit aioseop-quickedit-pencil"
854
  href="javascript:void(0);"
@@ -1498,7 +1498,11 @@ if ( ! function_exists( 'aioseop_get_utm_url' ) ) {
1498
  *
1499
  * @return string $href
1500
  */
1501
- function aioseop_get_utm_url( $medium, $source = 'WordPress', $campaign = 'liteplugin' ) {
 
 
 
 
1502
 
1503
  $href = 'https://semperplugins.com/all-in-one-seo-pack-pro-version/';
1504
 
@@ -1545,3 +1549,28 @@ if ( ! function_exists( 'aioseop_filter_styles' ) ) {
1545
  return $styles;
1546
  }
1547
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
848
  $nonce = wp_create_nonce( "aioseop_meta_{$column_name}_{$post_id}" );
849
 
850
  ?>
851
+ <div id="<?php echo "aioseop_${column_name}_${post_id}"; ?>" class="aioseop_mpc_admin_meta_options">
852
  <a
853
  class="dashicons dashicons-edit aioseop-quickedit-pencil"
854
  href="javascript:void(0);"
1498
  *
1499
  * @return string $href
1500
  */
1501
+ function aioseop_get_utm_url( $medium, $source = 'WordPress', $campaign = '' ) {
1502
+
1503
+ if( empty( $campaign ) ) {
1504
+ $campaign = ( AIOSEOPPRO ) ? 'proplugin' : 'liteplugin';
1505
+ }
1506
 
1507
  $href = 'https://semperplugins.com/all-in-one-seo-pack-pro-version/';
1508
 
1549
  return $styles;
1550
  }
1551
  }
1552
+
1553
+ if ( ! function_exists( 'aioseop_delete_rewrite_rules' ) ) {
1554
+ /**
1555
+ * Deletes our sitemap rewrite rules to prevent conflicts with other sitemap plugins.
1556
+ *
1557
+ * @since 3.4.3
1558
+ */
1559
+ function aioseop_delete_rewrite_rules() {
1560
+ $rules = get_option( 'rewrite_rules' );
1561
+
1562
+ if ( empty( $rules ) ) {
1563
+ return;
1564
+ }
1565
+
1566
+ $pattern = '#.*aiosp_.*#';
1567
+ foreach ( $rules as $k => $v ) {
1568
+ preg_match( $pattern, $v, $match );
1569
+ if ( $match ) {
1570
+ unset( $rules[ $k ] );
1571
+ }
1572
+ }
1573
+
1574
+ update_option( 'rewrite_rules', $rules );
1575
+ }
1576
+ }
inc/aioseop_updates_class.php CHANGED
@@ -146,6 +146,12 @@ class AIOSEOP_Updates {
146
  ) {
147
  $this->update_schema_markup_201907();
148
  }
 
 
 
 
 
 
149
  }
150
 
151
  /**
146
  ) {
147
  $this->update_schema_markup_201907();
148
  }
149
+
150
+ if ( version_compare( $old_version, '3.4.3', '<' ) ) {
151
+ if ( empty( $aioseop_options['modules']['aiosp_feature_manager_options']['aiosp_feature_manager_enable_sitemap'] ) ) {
152
+ aioseop_delete_rewrite_rules();
153
+ }
154
+ }
155
  }
156
 
157
  /**
inc/schema/aioseop-context.php CHANGED
@@ -114,6 +114,36 @@ class AIOSEOP_Context {
114
  $this->wp_props = $props;
115
  }
116
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  /**
118
  * Get current is_*() state.
119
  *
@@ -131,6 +161,7 @@ class AIOSEOP_Context {
131
  } elseif ( $wp_query->is_posts_page ) {
132
  $state_is = 'posts_page';
133
  } else {
 
134
  $state_is = 'home'; // Static front page.
135
  }
136
  } elseif ( is_archive() ) {
@@ -320,9 +351,16 @@ class AIOSEOP_Context {
320
  $key = $context->ID;
321
  break;
322
 
 
 
 
 
 
 
 
323
  case 'WP_Taxonomy':
324
  if ( ! $context instanceof WP_Taxonomy ) {
325
- get_queried_object();
326
  }
327
  $key = $context->name;
328
  break;
@@ -392,10 +430,6 @@ class AIOSEOP_Context {
392
 
393
  $object = new stdClass();
394
  switch ( $type ) {
395
- case 'WP_Taxonomy':
396
- $object = self::get_object( $type, $key, $wp_props );
397
- $wp_props['object_type'] = $object->object_type;
398
- break;
399
  case 'WP_Term':
400
  // $object = self::get_object( $type, $key, $wp_props );
401
  // $wp_props['taxonomy'] = $object->taxonomy;
@@ -456,9 +490,15 @@ class AIOSEOP_Context {
456
  $object = WP_Post::get_instance( $key );
457
  break;
458
 
 
 
 
 
 
 
 
459
  case 'WP_Taxonomy':
460
- $object_type = isset( $args['object_type'] ) ? $args['object_type'] : 'post';
461
- $object = new WP_Taxonomy( $key, $object_type );
462
  break;
463
 
464
  case 'WP_Term':
@@ -532,6 +572,16 @@ class AIOSEOP_Context {
532
  $display_name = $wp_obj->post_title;
533
  break;
534
 
 
 
 
 
 
 
 
 
 
 
535
  case 'WP_Term':
536
  $wp_obj = self::get_object( $this->context_type, $this->context_key, $this->wp_props );
537
  $display_name = $wp_obj->name;
@@ -615,6 +665,10 @@ class AIOSEOP_Context {
615
  $s_url[ $this->context_type ][ $this->context_key ] = $url;
616
  break;
617
 
 
 
 
 
618
  case 'WP_Taxonomy':
619
  // Does not exist.
620
  break;
@@ -659,16 +713,80 @@ class AIOSEOP_Context {
659
  */
660
  public function get_description() {
661
  $desc = '';
 
662
 
663
  switch ( $this->context_type ) {
664
  case 'var_site':
665
- $desc = get_bloginfo( 'description' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
666
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
667
  case 'WP_Term':
668
- case 'WP_User':
669
  $wp_obj = self::get_object( $this->context_type, $this->context_key, $this->wp_props );
670
  $desc = $wp_obj->description;
671
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
672
  }
673
 
674
  return $desc;
@@ -759,6 +877,16 @@ class AIOSEOP_Context {
759
  );
760
  break;
761
 
 
 
 
 
 
 
 
 
 
 
762
  case 'WP_Taxonomy':
763
  // No URL destination exists to trigger this.
764
  break;
114
  $this->wp_props = $props;
115
  }
116
 
117
+ /**
118
+ * Internationalize
119
+ *
120
+ * Dev Note: Could refactor this & \All_in_One_SEO_Pack::internationalize() to a static class.
121
+ *
122
+ * @since 3.4.3
123
+ *
124
+ * @param string $text
125
+ * @return mixed|string
126
+ */
127
+ public function internationalize( $text ) {
128
+ if ( function_exists( 'langswitch_filter_langs_with_message' ) ) {
129
+ $text = langswitch_filter_langs_with_message( $text );
130
+ }
131
+
132
+ if ( function_exists( 'polyglot_filter' ) ) {
133
+ $text = polyglot_filter( $text );
134
+ }
135
+
136
+ if ( function_exists( 'qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) {
137
+ $text = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $text );
138
+ } elseif ( function_exists( 'ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) {
139
+ $text = ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $text );
140
+ } elseif ( function_exists( 'qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) {
141
+ $text = qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage( $text );
142
+ }
143
+
144
+ return $text;
145
+ }
146
+
147
  /**
148
  * Get current is_*() state.
149
  *
161
  } elseif ( $wp_query->is_posts_page ) {
162
  $state_is = 'posts_page';
163
  } else {
164
+ // is_page().
165
  $state_is = 'home'; // Static front page.
166
  }
167
  } elseif ( is_archive() ) {
351
  $key = $context->ID;
352
  break;
353
 
354
+ case 'WP_Post_Type':
355
+ if ( ! $context instanceof WP_Post_Type ) {
356
+ $context = get_queried_object();
357
+ }
358
+ $key = $context->name;
359
+ break;
360
+
361
  case 'WP_Taxonomy':
362
  if ( ! $context instanceof WP_Taxonomy ) {
363
+ $context = get_queried_object();
364
  }
365
  $key = $context->name;
366
  break;
430
 
431
  $object = new stdClass();
432
  switch ( $type ) {
 
 
 
 
433
  case 'WP_Term':
434
  // $object = self::get_object( $type, $key, $wp_props );
435
  // $wp_props['taxonomy'] = $object->taxonomy;
490
  $object = WP_Post::get_instance( $key );
491
  break;
492
 
493
+ case 'WP_Post_Type':
494
+ $object = get_post_type_object( $key );
495
+ if ( is_null( $object ) ) {
496
+ $object = false;
497
+ }
498
+ break;
499
+
500
  case 'WP_Taxonomy':
501
+ $object = get_taxonomy( $key );
 
502
  break;
503
 
504
  case 'WP_Term':
572
  $display_name = $wp_obj->post_title;
573
  break;
574
 
575
+ case 'WP_Post_Type':
576
+ $wp_obj = self::get_object( $this->context_type, $this->context_key );
577
+ $display_name = $wp_obj->label;
578
+ break;
579
+
580
+ case 'WP_Taxonomy':
581
+ $wp_obj = self::get_object( $this->context_type, $this->context_key );
582
+ $display_name = $wp_obj->label;
583
+ break;
584
+
585
  case 'WP_Term':
586
  $wp_obj = self::get_object( $this->context_type, $this->context_key, $this->wp_props );
587
  $display_name = $wp_obj->name;
665
  $s_url[ $this->context_type ][ $this->context_key ] = $url;
666
  break;
667
 
668
+ case 'WP_Post_Type':
669
+ $url = get_post_type_archive_link( $this->context_key );
670
+ break;
671
+
672
  case 'WP_Taxonomy':
673
  // Does not exist.
674
  break;
713
  */
714
  public function get_description() {
715
  $desc = '';
716
+ global $aioseop_options;
717
 
718
  switch ( $this->context_type ) {
719
  case 'var_site':
720
+ if ( ! empty( $aioseop_options['aiosp_home_description'] ) ) {
721
+ $desc = $aioseop_options['aiosp_home_description'];
722
+ } else {
723
+ $desc = get_bloginfo( 'description' );
724
+ }
725
+ break;
726
+
727
+ case 'WP_Site':
728
+ $desc = get_blog_details( array( 'blog_id' => $this->context_key ) );
729
+ if ( ! empty( $aioseop_options['aiosp_home_description'] ) ) {
730
+ $desc = $aioseop_options['aiosp_home_description'];
731
+ } else {
732
+ $desc = get_bloginfo( 'description' );
733
+ }
734
+
735
  break;
736
+
737
+ case 'WP_Post':
738
+ $wp_obj = self::get_object( $this->context_type, $this->context_key );
739
+
740
+ // Using AIOSEOP's description is limited in content. With Schema's descriptions,
741
+ // there is no cap limit.
742
+ $post_description = get_post_meta( $wp_obj->ID, '_aioseop_description', true );
743
+ if ( is_string( $post_description ) ) {
744
+ $post_description = trim( $this->internationalize( $post_description ) );
745
+ }
746
+
747
+ // If there is no AIOSEOP description, and the post isn't password protected,
748
+ // then use post excerpt or content.
749
+ if (
750
+ ! $post_description &&
751
+ ! post_password_required( $wp_obj ) &&
752
+ ! empty( $wp_obj->post_excerpt )
753
+ ) {
754
+ $post_description = $wp_obj->post_excerpt;
755
+ }
756
+
757
+ if ( ! empty( $post_description ) && is_string( $post_description ) ) {
758
+ $desc = $post_description;
759
+ }
760
+ break;
761
+
762
+ case 'WP_Post_Type':
763
+ $wp_obj = self::get_object( $this->context_type, $this->context_key );
764
+ $desc = $wp_obj->description;
765
+ break;
766
+
767
+ case 'WP_Taxonomy':
768
+ $wp_obj = self::get_object( $this->context_type, $this->context_key, $this->wp_props );
769
+ $desc = $wp_obj->description;
770
+ break;
771
+
772
  case 'WP_Term':
 
773
  $wp_obj = self::get_object( $this->context_type, $this->context_key, $this->wp_props );
774
  $desc = $wp_obj->description;
775
  break;
776
+
777
+ case 'WP_User':
778
+ break;
779
+ case 'var_search':
780
+ break;
781
+ case 'var_date_year':
782
+ break;
783
+ case 'var_date_month':
784
+ break;
785
+ case 'var_date_day':
786
+ break;
787
+ case 'var_date':
788
+ break;
789
+
790
  }
791
 
792
  return $desc;
877
  );
878
  break;
879
 
880
+ case 'WP_Post_Type':
881
+ array_unshift(
882
+ $rtn_list,
883
+ array(
884
+ 'name' => $context->get_display_name(),
885
+ 'url' => $context->get_url(),
886
+ )
887
+ );
888
+ break;
889
+
890
  case 'WP_Taxonomy':
891
  // No URL destination exists to trigger this.
892
  break;
inc/schema/graphs/graph-webpage.php CHANGED
@@ -51,86 +51,23 @@ class AIOSEOP_Graph_WebPage extends AIOSEOP_Graph_Creativework {
51
  global $post;
52
  global $aioseop_options;
53
 
54
- $context = AIOSEOP_Context::get_instance();
55
-
56
- $current_url = '';
57
- $current_name = '';
58
- $current_desc = '';
59
-
60
- if ( is_home() ) {
61
- if ( is_front_page() ) {
62
- // Front Page for 'Your latest posts'.
63
- $current_url = home_url() . '/';
64
- $current_name = get_bloginfo( 'name' );
65
- $current_desc = get_bloginfo( 'description' );
66
- } else {
67
- // A static page - Posts page.
68
- // Resembles elseif $wp_query->is_posts_page.
69
- $page_id = get_option( 'page_for_posts' );
70
-
71
- $current_url = wp_get_canonical_url( $page_id );
72
- $current_name = get_the_title( $page_id );
73
- $current_desc = $this->get_post_description( get_post( $page_id ) );
74
- }
75
- } elseif ( is_front_page() && is_page() ) {
76
- // A static page - Homepage.
77
- $current_url = home_url() . '/';
78
- $current_name = get_the_title();
79
- $current_desc = $this->get_post_description( $post );
80
- } elseif ( is_post_type_archive() ) {
81
- if (
82
- function_exists( 'is_shop' ) &&
83
- function_exists( 'wc_get_page_id' ) &&
84
- is_shop()
85
- ) {
86
- // WooCommerce - Shop Page.
87
- $shop_page = get_post( wc_get_page_id( 'shop' ) );
88
-
89
- $current_url = wp_get_canonical_url( $shop_page );
90
- $current_name = get_the_title( $shop_page );
91
- $current_desc = $this->get_post_description( $shop_page );
92
- } else {
93
- // WP - Post Type.
94
- $wp_obj = get_queried_object();
95
-
96
- $current_url = get_post_type_archive_link( $post );
97
- $current_name = $wp_obj->label;
98
- $current_desc = $wp_obj->description;
99
- }
100
- } elseif ( is_singular() || is_single() ) {
101
- $current_url = wp_get_canonical_url( $post );
102
- $current_name = get_the_title();
103
- $current_desc = $this->get_post_description( $post );
104
- } elseif ( is_tax() || is_category() || is_tag() ) {
105
- $term = get_queried_object();
106
-
107
- $current_url = get_term_link( $term );
108
- $current_name = $term->name;
109
- $current_desc = $term->description;
110
- } elseif ( is_date() ) {
111
- if ( is_year() ) {
112
- $current_url = get_year_link( false );
113
- /* translators: Yearly archive title. %s: Year */
114
- $current_name = sprintf( __( 'Year: %s', 'all-in-one-seo-pack' ), get_the_date( 'Y' ) );
115
- } elseif ( is_month() ) {
116
- $current_url = get_month_link( false, false );
117
- /* translators: Monthly archive title. %s: Month name and year */
118
- $current_name = sprintf( __( 'Month: %s', 'all-in-one-seo-pack' ), get_the_date( 'F Y' ) );
119
- } else {
120
- $current_url = get_day_link( false, false, false );
121
- /* translators: Daily archive title. %s: Date */
122
- $current_name = sprintf( __( 'Day: %s', 'all-in-one-seo-pack' ), get_the_date( 'F j, Y' ) );
123
- }
124
- } elseif ( is_author() ) {
125
- $user_id = intval( $post->post_author );
126
- $current_url = get_author_posts_url( $user_id );
127
- $current_name = get_the_author_meta( 'display_name', $user_id );
128
- } elseif ( is_search() ) {
129
- $current_url = get_search_link();
130
- /* Translators: String used in search query: %s: Search */
131
- $current_name = sprintf( __( 'Search results for "%s"', 'all-in-one-seo-pack' ), esc_html( get_search_query() ) );
132
  }
133
 
 
 
 
 
134
  $rtn_data = array(
135
  '@type' => $this->slug,
136
  '@id' => $current_url . '#' . strtolower( $this->slug ), // TODO Should this be `#webpage`?
@@ -144,6 +81,9 @@ class AIOSEOP_Graph_WebPage extends AIOSEOP_Graph_Creativework {
144
  '@id' => $context->get_url() . '#breadcrumblist',
145
  ),
146
  );
 
 
 
147
 
148
  // Handles pages.
149
  if ( is_singular() || is_single() ) {
@@ -171,16 +111,13 @@ class AIOSEOP_Graph_WebPage extends AIOSEOP_Graph_Creativework {
171
  );
172
  }
173
 
174
- if ( ! empty( $current_desc ) ) {
175
- $rtn_data['description'] = $current_desc;
176
- }
177
-
178
  return $rtn_data;
179
  }
180
 
181
  /**
182
  * Get Post Description.
183
  *
 
184
  * @since 3.2
185
  *
186
  * @param WP_Post $post See WP_Post for details.
51
  global $post;
52
  global $aioseop_options;
53
 
54
+ if (
55
+ 'post_type_archive' === AIOSEOP_Context::get_is() &&
56
+ function_exists( 'is_shop' ) &&
57
+ function_exists( 'wc_get_page_id' ) &&
58
+ is_shop()
59
+ ) {
60
+ // WooCommerce - Shop Page.
61
+ $shop_page = get_post( wc_get_page_id( 'shop' ) );
62
+ $context = AIOSEOP_Context::get_instance( $shop_page );
63
+ } else {
64
+ $context = AIOSEOP_Context::get_instance();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  }
66
 
67
+ $current_url = $context->get_url();
68
+ $current_name = $context->get_display_name();
69
+ $current_desc = $context->get_description();
70
+
71
  $rtn_data = array(
72
  '@type' => $this->slug,
73
  '@id' => $current_url . '#' . strtolower( $this->slug ), // TODO Should this be `#webpage`?
81
  '@id' => $context->get_url() . '#breadcrumblist',
82
  ),
83
  );
84
+ if ( ! empty( $current_desc ) ) {
85
+ $rtn_data['description'] = $current_desc;
86
+ }
87
 
88
  // Handles pages.
89
  if ( is_singular() || is_single() ) {
111
  );
112
  }
113
 
 
 
 
 
114
  return $rtn_data;
115
  }
116
 
117
  /**
118
  * Get Post Description.
119
  *
120
+ * @deprecated 3.4.3 Use AIOSEOP_Context::get_instance( $post_object )->get_description().
121
  * @since 3.2
122
  *
123
  * @param WP_Post $post See WP_Post for details.
js/admin/aioseop-quickedit.js CHANGED
@@ -1,6 +1,6 @@
1
  var aioseopQuickEdit;
2
 
3
- (function ($) {
4
  aioseopQuickEdit = {
5
 
6
  /**
@@ -12,19 +12,21 @@ var aioseopQuickEdit;
12
  * @param String columnName The name of the column/attribute.
13
  * @param String nonce The nonce.
14
  */
15
- aioseop_ajax_edit_meta_form: function (postId, columnName, nonce) {
16
  let field = $(`#aioseop_${columnName}_${postId}`);
17
  let dashicon = field.parent().find('.aioseop-quickedit-pencil').first();
18
  let previousElements = field.html();
19
  let value = field.text().trim();
20
 
 
 
21
  let textarea = document.createElement('textarea');
22
  textarea.id = `aioseop_new_${columnName}_${postId}`;
23
  textarea.classList.add('aioseop-quickedit-input');
24
  textarea.rows = 4;
25
  textarea.cols = 32;
26
 
27
- if( aioseopadmin.i18n.noValue !== value) {
28
  textarea.innerText = value;
29
  }
30
 
@@ -36,7 +38,7 @@ var aioseopQuickEdit;
36
  btnSave.href = 'javascript:void(0);';
37
  btnSave.title = aioseopadmin.i18n.save;
38
 
39
- btnSave.addEventListener('click', function () {
40
  aioseopQuickEdit.handle_post_meta(postId, textarea.value, columnName, nonce, previousElements);
41
  });
42
 
@@ -46,9 +48,10 @@ var aioseopQuickEdit;
46
  btnCancel.href = 'javascript:void(0);';
47
  btnCancel.title = aioseopadmin.i18n.cancel;
48
 
49
- btnCancel.addEventListener('click', function () {
50
  dashicon.show();
51
  field.html(previousElements);
 
52
  });
53
 
54
  buttons.append(btnSave, btnCancel);
@@ -68,7 +71,7 @@ var aioseopQuickEdit;
68
  * @param String nonce The nonce.
69
  * @param Object previousElements The initial column elements (dashicon + span).
70
  */
71
- handle_post_meta: function (postId, value, columnName, nonce, previousElements) {
72
  let field = $(`div#aioseop_${columnName}_${postId}`);
73
 
74
  let message = document.createElement('span');
@@ -84,10 +87,10 @@ var aioseopQuickEdit;
84
 
85
  message.append(spinner, span);
86
 
87
- field.fadeOut('fast', function () {
88
  field.html(message);
89
 
90
- field.fadeIn('fast', function () {
91
 
92
  $.ajax({
93
  type: "POST",
@@ -100,20 +103,22 @@ var aioseopQuickEdit;
100
  key: columnName,
101
  _ajax_nonce: nonce
102
  },
103
- success: function () {
104
  field.empty().append(previousElements);
 
105
 
106
- if('image_title' === columnName) {
107
  aioseopMediaColumns.updatePostTitle(postId, value);
108
  }
109
 
110
- if('' === value) {
111
  value = `<strong>${aioseopadmin.i18n.noValue}</strong>`;
112
  }
113
  $(`#aioseop_${columnName}_${postId}_value`).html(value);
114
  },
115
- error: function () {
116
  field.empty().append(previousElements);
 
117
  console.log(`Request to update ${columnName} failed.`);
118
  }
119
  });
@@ -126,7 +131,7 @@ var aioseopQuickEdit;
126
 
127
 
128
  //TODO This needs to be moved to another file.
129
- jQuery(document).on('click', '.visibility-notice', function () {
130
 
131
  $.ajax({
132
  url: ajaxurl,
@@ -137,7 +142,7 @@ jQuery(document).on('click', '.visibility-notice', function () {
137
 
138
  });
139
 
140
- jQuery(document).on('click', '.yst_notice', function () {
141
 
142
  $.ajax({
143
  url: ajaxurl,
@@ -148,7 +153,7 @@ jQuery(document).on('click', '.yst_notice', function () {
148
 
149
  });
150
 
151
- jQuery(document).on('click', '.woo-upgrade-notice', function () {
152
 
153
  $.ajax({
154
  url: ajaxurl,
@@ -159,7 +164,7 @@ jQuery(document).on('click', '.woo-upgrade-notice', function () {
159
 
160
  });
161
 
162
- jQuery(document).on('click', '.sitemap_max_urls_notice', function () {
163
 
164
  $.ajax({
165
  url: ajaxurl,
1
  var aioseopQuickEdit;
2
 
3
+ (function($) {
4
  aioseopQuickEdit = {
5
 
6
  /**
12
  * @param String columnName The name of the column/attribute.
13
  * @param String nonce The nonce.
14
  */
15
+ aioseop_ajax_edit_meta_form: function(postId, columnName, nonce) {
16
  let field = $(`#aioseop_${columnName}_${postId}`);
17
  let dashicon = field.parent().find('.aioseop-quickedit-pencil').first();
18
  let previousElements = field.html();
19
  let value = field.text().trim();
20
 
21
+ field.addClass('aio_editing');
22
+
23
  let textarea = document.createElement('textarea');
24
  textarea.id = `aioseop_new_${columnName}_${postId}`;
25
  textarea.classList.add('aioseop-quickedit-input');
26
  textarea.rows = 4;
27
  textarea.cols = 32;
28
 
29
+ if (aioseopadmin.i18n.noValue !== value) {
30
  textarea.innerText = value;
31
  }
32
 
38
  btnSave.href = 'javascript:void(0);';
39
  btnSave.title = aioseopadmin.i18n.save;
40
 
41
+ btnSave.addEventListener('click', function() {
42
  aioseopQuickEdit.handle_post_meta(postId, textarea.value, columnName, nonce, previousElements);
43
  });
44
 
48
  btnCancel.href = 'javascript:void(0);';
49
  btnCancel.title = aioseopadmin.i18n.cancel;
50
 
51
+ btnCancel.addEventListener('click', function() {
52
  dashicon.show();
53
  field.html(previousElements);
54
+ field.removeClass('aio_editing');
55
  });
56
 
57
  buttons.append(btnSave, btnCancel);
71
  * @param String nonce The nonce.
72
  * @param Object previousElements The initial column elements (dashicon + span).
73
  */
74
+ handle_post_meta: function(postId, value, columnName, nonce, previousElements) {
75
  let field = $(`div#aioseop_${columnName}_${postId}`);
76
 
77
  let message = document.createElement('span');
87
 
88
  message.append(spinner, span);
89
 
90
+ field.fadeOut('fast', function() {
91
  field.html(message);
92
 
93
+ field.fadeIn('fast', function() {
94
 
95
  $.ajax({
96
  type: "POST",
103
  key: columnName,
104
  _ajax_nonce: nonce
105
  },
106
+ success: function() {
107
  field.empty().append(previousElements);
108
+ field.removeClass('aio_editing');
109
 
110
+ if ('image_title' === columnName) {
111
  aioseopMediaColumns.updatePostTitle(postId, value);
112
  }
113
 
114
+ if ('' === value) {
115
  value = `<strong>${aioseopadmin.i18n.noValue}</strong>`;
116
  }
117
  $(`#aioseop_${columnName}_${postId}_value`).html(value);
118
  },
119
+ error: function() {
120
  field.empty().append(previousElements);
121
+ field.removeClass('aio_editing');
122
  console.log(`Request to update ${columnName} failed.`);
123
  }
124
  });
131
 
132
 
133
  //TODO This needs to be moved to another file.
134
+ jQuery(document).on('click', '.visibility-notice', function() {
135
 
136
  $.ajax({
137
  url: ajaxurl,
142
 
143
  });
144
 
145
+ jQuery(document).on('click', '.yst_notice', function() {
146
 
147
  $.ajax({
148
  url: ajaxurl,
153
 
154
  });
155
 
156
+ jQuery(document).on('click', '.woo-upgrade-notice', function() {
157
 
158
  $.ajax({
159
  url: ajaxurl,
164
 
165
  });
166
 
167
+ jQuery(document).on('click', '.sitemap_max_urls_notice', function() {
168
 
169
  $.ajax({
170
  url: ajaxurl,
js/quickedit_functions.js DELETED
@@ -1,93 +0,0 @@
1
- jQuery(document).on( 'click', '.visibility-notice', function() {
2
-
3
- jQuery.ajax({
4
- url: ajaxurl,
5
- data: {
6
- action: 'aioseo_dismiss_visibility_notice'
7
- }
8
- });
9
-
10
- });
11
-
12
- jQuery(document).on( 'click', '.yst_notice', function() {
13
-
14
- jQuery.ajax({
15
- url: ajaxurl,
16
- data: {
17
- action: 'aioseo_dismiss_yst_notice'
18
- }
19
- });
20
-
21
- });
22
-
23
- jQuery(document).on( 'click', '.woo-upgrade-notice', function() {
24
-
25
- jQuery.ajax({
26
- url: ajaxurl,
27
- data: {
28
- action: 'aioseo_dismiss_woo_upgrade_notice'
29
- }
30
- });
31
-
32
- });
33
-
34
- jQuery(document).on( 'click', '.sitemap_max_urls_notice', function() {
35
-
36
- jQuery.ajax({
37
- url: ajaxurl,
38
- data: {
39
- action: 'aioseo_dismiss_sitemap_max_url_notice'
40
- }
41
- });
42
-
43
- });
44
-
45
-
46
- function aioseop_ajax_edit_meta_form( post_id, meta, nonce ) {
47
- var uform = jQuery('#aioseop_'+meta+'_' + post_id);
48
- var post_title = jQuery('#aioseop_label_' + meta + '_' + post_id).text();
49
- var element = uform.html(); var input;
50
- input = '<textarea id="aioseop_new_'+meta+'_' + post_id + '" style="font-size:13px;width:100%;float:left;position:relative;z-index:1;" rows=4 cols=32>' + post_title + '</textarea>';
51
- input += '<label style="float:left">';
52
- input += '<a class="aioseop-icon-qedit aioseop-icon-qedit-accept" href="javascript:void(0);" id="aioseop_' + meta + '_save_' + post_id + '" title="Accept" >';
53
- input += '<a class="aioseop-icon-qedit aioseop-icon-qedit-delete" href="javascript:void(0);" id="aioseop_' + meta + '_cancel_' + post_id + '" title="Decline" >';
54
- input += '</label>';
55
- uform.html( input );
56
- uform.attr( "class", "aioseop_mpc_admin_meta_options aio_editing" );
57
- jQuery('#aioseop_'+meta+'_cancel_' + post_id).click(function() {
58
- uform.html( element );
59
- uform.attr( "class", "aioseop_mpc_admin_meta_options" );
60
- });
61
- jQuery('#aioseop_'+meta+'_save_' + post_id).click(function() {
62
- var new_meta = jQuery( '#aioseop_new_'+meta+'_' + post_id ).val();
63
- handle_post_meta( post_id, new_meta, meta, nonce );
64
- });
65
- }
66
-
67
- function handle_post_meta( p, t, m, n ) {
68
- jQuery("div#aioseop_"+m+"_"+p).fadeOut('fast', function() {
69
- var loading = '<label class="aioseop_'+m+'_loading">';
70
- loading += '<img style="width:20px;margin-right:5px;float:left" align="absmiddle" ';
71
- loading += 'src="'+aioseopadmin.imgUrl+'activity.gif" border="0" alt="" title="'+m+'" /></a>';
72
- loading += '</label><div style="float:left">Please wait…</div>';
73
- jQuery("div#aioseop_"+m+"_"+p).fadeIn('fast', function() {
74
- var aioseop_sack = new sack(aioseopadmin.requestUrl);
75
- aioseop_sack.execute = 1;
76
- aioseop_sack.method = 'POST';
77
- aioseop_sack.setVar( "action", "aioseop_ajax_save_meta");
78
- aioseop_sack.setVar( "post_id", p );
79
- aioseop_sack.setVar( "new_meta", t );
80
- aioseop_sack.setVar( "target_meta", m );
81
- aioseop_sack.setVar( "_inline_edit", jQuery('input#_inline_edit').val() );
82
- aioseop_sack.setVar( "_nonce", n );
83
- // TODO Add alert function. Check example of correct code. https://eslint.org/docs/rules/no-alert
84
- /* eslint-disable no-alert */
85
- aioseop_sack.onError = function() {alert('Ajax error on saving title'); };
86
- /* eslint-enable no-alert */
87
- aioseop_sack.runAJAX();
88
- });
89
- jQuery("div#aioseop_"+m+"_"+p).html(loading);
90
- jQuery("div#aioseop_"+m+"_"+p).attr( "class", "aioseop_mpc_admin_meta_options" );
91
-
92
- });
93
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/quickedit_functions.min.js DELETED
@@ -1 +0,0 @@
1
- function aioseop_ajax_edit_meta_form(e,i,t){var a,o=jQuery("#aioseop_"+i+"_"+e),s=jQuery("#aioseop_label_"+i+"_"+e).text(),_=o.html();a='<textarea id="aioseop_new_'+i+"_"+e+'" style="font-size:13px;width:100%;float:left;position:relative;z-index:1;" rows=4 cols=32>'+s+"</textarea>",a+='<label style="float:left">',a+='<a class="aioseop-icon-qedit aioseop-icon-qedit-accept" href="javascript:void(0);" id="aioseop_'+i+"_save_"+e+'" title="Accept" >',a+='<a class="aioseop-icon-qedit aioseop-icon-qedit-delete" href="javascript:void(0);" id="aioseop_'+i+"_cancel_"+e+'" title="Decline" >',a+="</label>",o.html(a),o.attr("class","aioseop_mpc_admin_meta_options aio_editing"),jQuery("#aioseop_"+i+"_cancel_"+e).click(function(){o.html(_),o.attr("class","aioseop_mpc_admin_meta_options")}),jQuery("#aioseop_"+i+"_save_"+e).click(function(){var a=jQuery("#aioseop_new_"+i+"_"+e).val();handle_post_meta(e,a,i,t)})}function handle_post_meta(e,i,t,o){jQuery("div#aioseop_"+t+"_"+e).fadeOut("fast",function(){var a='<label class="aioseop_'+t+'_loading">';a+='<img style="width:20px;margin-right:5px;float:left" align="absmiddle" ',a+='src="'+aioseopadmin.imgUrl+'activity.gif" border="0" alt="" title="'+t+'" /></a>',a+='</label><div style="float:left">Please wait…</div>',jQuery("div#aioseop_"+t+"_"+e).fadeIn("fast",function(){var a=new sack(aioseopadmin.requestUrl);a.execute=1,a.method="POST",a.setVar("action","aioseop_ajax_save_meta"),a.setVar("post_id",e),a.setVar("new_meta",i),a.setVar("target_meta",t),a.setVar("_inline_edit",jQuery("input#_inline_edit").val()),a.setVar("_nonce",o),a.onError=function(){alert("Ajax error on saving title")},a.runAJAX()}),jQuery("div#aioseop_"+t+"_"+e).html(a),jQuery("div#aioseop_"+t+"_"+e).attr("class","aioseop_mpc_admin_meta_options")})}jQuery(document).on("click",".visibility-notice",function(){jQuery.ajax({url:ajaxurl,data:{action:"aioseo_dismiss_visibility_notice"}})}),jQuery(document).on("click",".yst_notice",function(){jQuery.ajax({url:ajaxurl,data:{action:"aioseo_dismiss_yst_notice"}})}),jQuery(document).on("click",".woo-upgrade-notice",function(){jQuery.ajax({url:ajaxurl,data:{action:"aioseo_dismiss_woo_upgrade_notice"}})}),jQuery(document).on("click",".sitemap_max_urls_notice",function(){jQuery.ajax({url:ajaxurl,data:{action:"aioseo_dismiss_sitemap_max_url_notice"}})});
 
modules/aioseop_feature_manager.php CHANGED
@@ -237,7 +237,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Feature_Manager' ) ) {
237
  $checkbox .= '><span class="button-primary feature_button' . $class . '"></span>';
238
  } else {
239
  $content = urlencode( $args['options']['name'] );
240
- $checkbox = "<a class='button feature-manager-cta-button' href='https://semperplugins.com/all-in-one-seo-pack-pro-version/?utm_source=WordPress&utm_campaign=liteplugin&utm_medium=feature_manager&utm_content=$content' target='_blank'>Upgrade</a>";
241
  }
242
 
243
  if ( ! empty( $args['options']['id'] ) ) {
237
  $checkbox .= '><span class="button-primary feature_button' . $class . '"></span>';
238
  } else {
239
  $content = urlencode( $args['options']['name'] );
240
+ $checkbox = "<a class='button feature-manager-cta-button' href='" . aioseop_get_utm_url( 'feature-manager' ) . "&utm_content=$content" . "' target='_blank'>Upgrade</a>";
241
  }
242
 
243
  if ( ! empty( $args['options']['id'] ) ) {
modules/images/banner11.png DELETED
Binary file
modules/images/banner12.png DELETED
Binary file
modules/images/banner13.png DELETED
Binary file
modules/images/banner14.png DELETED
Binary file
modules/images/banner15.png DELETED
Binary file
modules/images/banner21.jpg DELETED
Binary file
modules/images/banner22.jpg DELETED
Binary file
modules/images/facebook-follow-retina.png DELETED
Binary file
modules/images/facebook-follow-standard.png DELETED
Binary file
modules/images/twitter-follow-retina.png DELETED
Binary file
modules/images/twitter-follow-standard.png DELETED
Binary file
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: semperplugins, smub, benjaminprojas
3
  Tags: SEO, Google Search Console, XML Sitemap, meta description, meta title, noindex
4
  Requires at least: 4.9
5
  Tested up to: 5.4
6
- Stable tag: 3.4.2
7
  License: GPLv2 or later
8
  Requires PHP: 5.2.4
9
 
3
  Tags: SEO, Google Search Console, XML Sitemap, meta description, meta title, noindex
4
  Requires at least: 4.9
5
  Tested up to: 5.4
6
+ Stable tag: 3.4.3
7
  License: GPLv2 or later
8
  Requires PHP: 5.2.4
9