SEOPress - Version 5.4.4

Version Description

  • FIX Guzzle conflict
  • FIX AIOSEO import tool
Download this release

Release Info

Developer rainbowgeek
Plugin Icon 128x128 SEOPress
Version 5.4.4
Comparing to
See all releases

Code changes from version 5.4.3 to 5.4.4

Files changed (34) hide show
  1. inc/admin/ajax-migrate/aio.php +0 -216
  2. inc/admin/ajax.php +0 -1
  3. inc/admin/callbacks/InstantIndexing.php +1 -0
  4. inc/functions/options-instant-indexing.php +1 -0
  5. readme.txt +4 -1
  6. seopress-autoload.php +31 -0
  7. seopress.php +4 -3
  8. src/Actions/Admin/Importer/AIO.php +243 -0
  9. src/Thirds/AIO/Tags.php +78 -0
  10. vendor/autoload.php +1 -1
  11. vendor/composer/autoload_real.php +7 -7
  12. vendor/composer/autoload_static.php +4 -4
  13. vendor/composer/installed.json +14 -14
  14. vendor/composer/installed.php +8 -8
  15. vendor/google/apiclient-services/synth.metadata +2 -2
  16. vendor/phpseclib/phpseclib/BACKERS.md +4 -1
  17. vendor/phpseclib/phpseclib/README.md +2 -2
  18. vendor/phpseclib/phpseclib/phpseclib/Common/Functions/Strings.php +17 -10
  19. vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/AsymmetricKey.php +7 -1
  20. vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/SymmetricKey.php +113 -2
  21. vendor/phpseclib/phpseclib/phpseclib/Crypt/DH.php +2 -2
  22. vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA.php +2 -2
  23. vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/BaseCurves/Base.php +1 -1
  24. vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/BaseCurves/Binary.php +1 -1
  25. vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/XML.php +3 -1
  26. vendor/phpseclib/phpseclib/phpseclib/Crypt/Random.php +1 -1
  27. vendor/phpseclib/phpseclib/phpseclib/Crypt/Salsa20.php +4 -2
  28. vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath.php +1 -1
  29. vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/Reductions/Barrett.php +1 -1
  30. vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP.php +5 -0
  31. vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php +32 -21
  32. vendor/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php +1 -1
  33. vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php +210 -116
  34. vendor/phpseclib/phpseclib/psalm.xml +29 -0
inc/admin/ajax-migrate/aio.php DELETED
@@ -1,216 +0,0 @@
1
- <?php
2
-
3
- defined('ABSPATH') or exit('Please don&rsquo;t call the plugin directly. Thanks :)');
4
-
5
- ///////////////////////////////////////////////////////////////////////////////////////////////////
6
- //AIO migration
7
- ///////////////////////////////////////////////////////////////////////////////////////////////////
8
- function seopress_aio_migration()
9
- {
10
- check_ajax_referer('seopress_aio_migrate_nonce', $_POST['_ajax_nonce'], true);
11
-
12
- if (current_user_can(seopress_capability('manage_options', 'migration')) && is_admin()) {
13
- if (isset($_POST['offset']) && isset($_POST['offset'])) {
14
- $offset = absint($_POST['offset']);
15
- }
16
-
17
- global $wpdb;
18
- $total_count_posts = (int) $wpdb->get_var("SELECT count(*) FROM {$wpdb->posts}");
19
-
20
- $increment = 200;
21
- global $post;
22
-
23
- if ($offset > $total_count_posts) {
24
- $offset = 'done';
25
- wp_reset_query();
26
- } else {
27
- $args = [
28
- 'posts_per_page' => $increment,
29
- 'post_type' => 'any',
30
- 'post_status' => 'any',
31
- 'offset' => $offset,
32
- ];
33
-
34
- $aio_query = get_posts($args);
35
-
36
- if ($aio_query) {
37
- foreach ($aio_query as $post) {
38
- if ('' != get_post_meta($post->ID, '_aioseo_title', true)) { //Import title tag
39
- update_post_meta($post->ID, '_seopress_titles_title', get_post_meta($post->ID, '_aioseo_title', true));
40
- } elseif ('' != get_post_meta($post->ID, '_aioseop_title', true)) { //Import old title tag
41
- update_post_meta($post->ID, '_seopress_titles_title', get_post_meta($post->ID, '_aioseop_title', true));
42
- }
43
- if ('' != get_post_meta($post->ID, '_aioseo_description', true)) { //Import meta desc
44
- update_post_meta($post->ID, '_seopress_titles_desc', get_post_meta($post->ID, '_aioseo_description', true));
45
- } elseif ('' != get_post_meta($post->ID, '_aioseop_description', true)) { //Import old meta desc
46
- update_post_meta($post->ID, '_seopress_titles_desc', get_post_meta($post->ID, '_aioseop_description', true));
47
- }
48
-
49
- if ('' != get_post_meta($post->ID, '_aioseo_og_title', true)) { //Import Facebook Title
50
- update_post_meta($post->ID, '_seopress_social_fb_title', get_post_meta($post->ID, '_aioseo_og_title', true));
51
- } elseif ('' != get_post_meta($post->ID, '_aioseop_opengraph_settings', true)) { //Import old Facebook
52
- $_aioseop_opengraph_settings = get_post_meta($post->ID, '_aioseop_opengraph_settings', true);
53
- if (isset($_aioseop_opengraph_settings['aioseop_opengraph_settings_title'])) {
54
- update_post_meta($post->ID, '_seopress_social_fb_title', $_aioseop_opengraph_settings['aioseop_opengraph_settings_title']);
55
- }
56
- }
57
-
58
- if ('' != get_post_meta($post->ID, '_aioseo_twitter_title', true)) { //Import Twitter Title
59
- update_post_meta($post->ID, '_seopress_social_twitter_title', get_post_meta($post->ID, '_aioseo_twitter_title', true));
60
- } elseif ('' != get_post_meta($post->ID, '_aioseop_opengraph_settings', true)) { //Import old Twitter Title
61
- $_aioseop_opengraph_settings = get_post_meta($post->ID, '_aioseop_opengraph_settings', true);
62
- if (isset($_aioseop_opengraph_settings['aioseop_opengraph_settings_title'])) {
63
- update_post_meta($post->ID, '_seopress_social_twitter_title', $_aioseop_opengraph_settings['aioseop_opengraph_settings_title']);
64
- }
65
- }
66
-
67
- if ('' != get_post_meta($post->ID, '_aioseo_og_description', true)) { //Import Facebook Desc
68
- update_post_meta($post->ID, '_seopress_social_fb_desc', get_post_meta($post->ID, '_aioseo_og_description', true));
69
- } elseif ('' != get_post_meta($post->ID, '_aioseop_opengraph_settings', true)) { //Import old Facebook Desc
70
- $_aioseop_opengraph_settings = get_post_meta($post->ID, '_aioseop_opengraph_settings', true);
71
- if (isset($_aioseop_opengraph_settings['aioseop_opengraph_settings_title'])) {
72
- update_post_meta($post->ID, '_seopress_social_fb_desc', $_aioseop_opengraph_settings['aioseop_opengraph_settings_title']);
73
- }
74
- }
75
-
76
- if ('' != get_post_meta($post->ID, '_aioseo_twitter_description', true)) { //Import Twitter Desc
77
- update_post_meta($post->ID, '_seopress_social_twitter_desc', get_post_meta($post->ID, '_aioseo_twitter_description', true));
78
- } elseif ('' != get_post_meta($post->ID, '_aioseop_opengraph_settings', true)) { //Import old Twitter Desc
79
- $_aioseop_opengraph_settings = get_post_meta($post->ID, '_aioseop_opengraph_settings', true);
80
- if (isset($_aioseop_opengraph_settings['aioseop_opengraph_settings_title'])) {
81
- update_post_meta($post->ID, '_seopress_social_twitter_desc', $_aioseop_opengraph_settings['aioseop_opengraph_settings_title']);
82
- }
83
- }
84
-
85
- $canonical_url = "SELECT p.canonical_url, p.post_id
86
- FROM {$wpdb->prefix}aioseo_posts p
87
- WHERE p.post_id = $post->ID";
88
-
89
- $canonical_url = $wpdb->get_results($canonical_url, ARRAY_A);
90
-
91
- if (! empty($canonical_url[0]['canonical_url'])) {//Import Canonical URL
92
- update_post_meta($post->ID, '_seopress_robots_canonical', $canonical_url[0]['canonical_url']);
93
- }
94
-
95
- $og_img_url = "SELECT p.og_image_custom_url, p.post_id
96
- FROM {$wpdb->prefix}aioseo_posts p
97
- WHERE p.og_image_type = 'custom_image' AND p.post_id = $post->ID";
98
-
99
- $og_img_url = $wpdb->get_results($og_img_url, ARRAY_A);
100
-
101
- if (! empty($og_img_url[0]['og_image_custom_url'])) {//Import Facebook Image
102
- update_post_meta($post->ID, '_seopress_social_fb_img', $og_img_url[0]['og_image_custom_url']);
103
- } elseif ('' != get_post_meta($post->ID, '_aioseop_opengraph_settings', true)) { //Import old Facebook Image
104
- $_aioseop_opengraph_settings = get_post_meta($post->ID, '_aioseop_opengraph_settings', true);
105
- if (isset($_aioseop_opengraph_settings['aioseop_opengraph_settings_image'])) {
106
- update_post_meta($post->ID, '_seopress_social_fb_img', $_aioseop_opengraph_settings['aioseop_opengraph_settings_customimg']);
107
- }
108
- }
109
-
110
- $tw_img_url = "SELECT p.twitter_image_custom_url, p.post_id
111
- FROM {$wpdb->prefix}aioseo_posts p
112
- WHERE p.twitter_image_type = 'custom_image' AND p.post_id = $post->ID";
113
-
114
- $tw_img_url = $wpdb->get_results($tw_img_url, ARRAY_A);
115
-
116
- if (! empty($tw_img_url[0]['twitter_image_custom_url'])) {//Import Twitter Image
117
- update_post_meta($post->ID, '_seopress_social_twitter_img', $tw_img_url[0]['twitter_image_custom_url']);
118
- } elseif ('' != get_post_meta($post->ID, '_aioseop_opengraph_settings', true)) { //Import old Twitter Image
119
- $_aioseop_opengraph_settings = get_post_meta($post->ID, '_aioseop_opengraph_settings', true);
120
- if (isset($_aioseop_opengraph_settings['aioseop_opengraph_settings_customimg_twitter'])) {
121
- update_post_meta($post->ID, '_seopress_social_twitter_img', $_aioseop_opengraph_settings['aioseop_opengraph_settings_customimg_twitter']);
122
- }
123
- }
124
-
125
- $robots_noindex = "SELECT p.robots_noindex, p.post_id
126
- FROM {$wpdb->prefix}aioseo_posts p
127
- WHERE p.post_id = $post->ID";
128
-
129
- $robots_noindex = $wpdb->get_results($robots_noindex, ARRAY_A);
130
-
131
- if (! empty($robots_noindex[0]['robots_noindex']) && '1' === $robots_noindex[0]['robots_noindex']) {//Import Robots NoIndex
132
- update_post_meta($post->ID, '_seopress_robots_index', 'yes');
133
- } elseif ('on' == get_post_meta($post->ID, '_aioseop_noindex', true)) { //Import old Robots NoIndex
134
- update_post_meta($post->ID, '_seopress_robots_index', 'yes');
135
- }
136
-
137
- $robots_nofollow = "SELECT p.robots_nofollow, p.post_id
138
- FROM {$wpdb->prefix}aioseo_posts p
139
- WHERE p.post_id = $post->ID";
140
-
141
- $robots_nofollow = $wpdb->get_results($robots_nofollow, ARRAY_A);
142
-
143
- if (! empty($robots_nofollow[0]['robots_nofollow']) && '1' === $robots_nofollow[0]['robots_nofollow']) {//Import Robots NoFollow
144
- update_post_meta($post->ID, '_seopress_robots_follow', 'yes');
145
- } elseif ('on' == get_post_meta($post->ID, '_aioseop_nofollow', true)) { //Import old Robots NoFollow
146
- update_post_meta($post->ID, '_seopress_robots_follow', 'yes');
147
- }
148
-
149
- $robots_noimageindex = "SELECT p.robots_noimageindex, p.post_id
150
- FROM {$wpdb->prefix}aioseo_posts p
151
- WHERE p.post_id = $post->ID";
152
-
153
- $robots_noimageindex = $wpdb->get_results($robots_noimageindex, ARRAY_A);
154
-
155
- if (! empty($robots_noimageindex[0]['robots_noimageindex']) && '1' === $robots_noimageindex[0]['robots_noimageindex']) {//Import Robots NoImageIndex
156
- update_post_meta($post->ID, '_seopress_robots_imageindex', 'yes');
157
- }
158
-
159
- $robots_noodp = "SELECT p.robots_noodp, p.post_id
160
- FROM {$wpdb->prefix}aioseo_posts p
161
- WHERE p.post_id = $post->ID";
162
-
163
- $robots_noodp = $wpdb->get_results($robots_noodp, ARRAY_A);
164
-
165
- if (! empty($robots_noodp[0]['robots_noodp']) && '1' === $robots_noodp[0]['robots_noodp']) {//Import Robots NoOdp
166
- update_post_meta($post->ID, '_seopress_robots_odp', 'yes');
167
- }
168
-
169
- $robots_nosnippet = "SELECT p.robots_nosnippet, p.post_id
170
- FROM {$wpdb->prefix}aioseo_posts p
171
- WHERE p.post_id = $post->ID";
172
-
173
- $robots_nosnippet = $wpdb->get_results($robots_nosnippet, ARRAY_A);
174
-
175
- if (! empty($robots_nosnippet[0]['robots_nosnippet']) && '1' === $robots_nosnippet[0]['robots_nosnippet']) {//Import Robots NoSnippet
176
- update_post_meta($post->ID, '_seopress_robots_snippet', 'yes');
177
- }
178
-
179
- $robots_noarchive = "SELECT p.robots_noarchive, p.post_id
180
- FROM {$wpdb->prefix}aioseo_posts p
181
- WHERE p.post_id = $post->ID";
182
-
183
- $robots_noarchive = $wpdb->get_results($robots_noarchive, ARRAY_A);
184
-
185
- if (! empty($robots_noarchive[0]['robots_noarchive']) && '1' === $robots_noarchive[0]['robots_noarchive']) {//Import Robots NoArchive
186
- update_post_meta($post->ID, '_seopress_robots_archive', 'yes');
187
- }
188
-
189
- $keyphrases = "SELECT p.keyphrases, p.post_id
190
- FROM {$wpdb->prefix}aioseo_posts p
191
- WHERE p.post_id = $post->ID";
192
-
193
- $keyphrases = $wpdb->get_results($keyphrases, ARRAY_A);
194
-
195
- if (! empty($keyphrases)) {
196
- $keyphrases = json_decode($keyphrases[0]['keyphrases']);
197
-
198
- if (isset($keyphrases->focus->keyphrase)) {
199
- $keyphrases = $keyphrases->focus->keyphrase;
200
-
201
- if ('' != $keyphrases) { //Import focus kw
202
- update_post_meta($post->ID, '_seopress_analysis_target_kw', $keyphrases);
203
- }
204
- }
205
- }
206
- }
207
- }
208
- $offset += $increment;
209
- }
210
- $data = [];
211
- $data['offset'] = $offset;
212
- wp_send_json_success($data);
213
- exit();
214
- }
215
- }
216
- add_action('wp_ajax_seopress_aio_migration', 'seopress_aio_migration');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/admin/ajax.php CHANGED
@@ -696,5 +696,4 @@ require_once __DIR__ . '/ajax-migrate/wp-meta-seo.php';
696
  require_once __DIR__ . '/ajax-migrate/seo-ultimate.php';
697
  require_once __DIR__ . '/ajax-migrate/squirrly.php';
698
  require_once __DIR__ . '/ajax-migrate/seo-framework.php';
699
- require_once __DIR__ . '/ajax-migrate/aio.php';
700
  require_once __DIR__ . '/ajax-migrate/yoast.php';
696
  require_once __DIR__ . '/ajax-migrate/seo-ultimate.php';
697
  require_once __DIR__ . '/ajax-migrate/squirrly.php';
698
  require_once __DIR__ . '/ajax-migrate/seo-framework.php';
 
699
  require_once __DIR__ . '/ajax-migrate/yoast.php';
inc/admin/callbacks/InstantIndexing.php CHANGED
@@ -73,6 +73,7 @@ function seopress_instant_indexing_google_action_callback() {
73
  }
74
 
75
  function seopress_instant_indexing_manual_batch_callback() {
 
76
  $options = get_option('seopress_instant_indexing_option_name');
77
  $log = get_option('seopress_instant_indexing_log_option_name');
78
  $check = isset($options['seopress_instant_indexing_manual_batch']) ? esc_attr($options['seopress_instant_indexing_manual_batch']) : null;
73
  }
74
 
75
  function seopress_instant_indexing_manual_batch_callback() {
76
+ require_once WP_PLUGIN_DIR . '/wp-seopress/vendor/autoload.php';
77
  $options = get_option('seopress_instant_indexing_option_name');
78
  $log = get_option('seopress_instant_indexing_log_option_name');
79
  $check = isset($options['seopress_instant_indexing_manual_batch']) ? esc_attr($options['seopress_instant_indexing_manual_batch']) : null;
inc/functions/options-instant-indexing.php CHANGED
@@ -174,6 +174,7 @@ function seopress_instant_indexing_fn() {
174
  function seopress_instant_indexing_post()
175
  {
176
  check_ajax_referer('seopress_instant_indexing_post_nonce');
 
177
  if (current_user_can(seopress_capability('manage_options', 'instant-indexing')) && is_admin()) {
178
  seopress_instant_indexing_fn();
179
  }
174
  function seopress_instant_indexing_post()
175
  {
176
  check_ajax_referer('seopress_instant_indexing_post_nonce');
177
+ require_once WP_PLUGIN_DIR . '/wp-seopress/vendor/autoload.php';
178
  if (current_user_can(seopress_capability('manage_options', 'instant-indexing')) && is_admin()) {
179
  seopress_instant_indexing_fn();
180
  }
readme.txt CHANGED
@@ -6,7 +6,7 @@ Tags: SEO, schema, xml sitemap, redirection, meta title, open graph, content ana
6
  Requires at least: 4.7+
7
  Tested up to: 5.9
8
  Requires PHP: 7.2
9
- Stable tag: 5.4.3
10
  License: GPLv2 or later
11
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
12
 
@@ -338,6 +338,9 @@ You're theme is probably using a deprecated function to handle the title. <a hre
338
  12. Schema metabox
339
 
340
  == Changelog ==
 
 
 
341
  = 5.4.3 =
342
  * FIX Warning: use statement with non-compound name
343
  = 5.4.2 =
6
  Requires at least: 4.7+
7
  Tested up to: 5.9
8
  Requires PHP: 7.2
9
+ Stable tag: 5.4.4
10
  License: GPLv2 or later
11
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
12
 
338
  12. Schema metabox
339
 
340
  == Changelog ==
341
+ = 5.4.4 =
342
+ * FIX Guzzle conflict
343
+ * FIX AIOSEO import tool
344
  = 5.4.3 =
345
  * FIX Warning: use statement with non-compound name
346
  = 5.4.2 =
seopress-autoload.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('ABSPATH') or exit('Please don&rsquo;t call the plugin directly. Thanks :)');
4
+
5
+ spl_autoload_register(function ($class) {
6
+ // project-specific namespace prefix
7
+ $prefix = 'SEOPress\\';
8
+
9
+ // base directory for the namespace prefix
10
+ $base_dir = __DIR__ . '/src/';
11
+
12
+ // does the class use the namespace prefix?
13
+ $len = strlen($prefix);
14
+ if (0 !== strncmp($prefix, $class, $len)) {
15
+ // no, move to the next registered autoloader
16
+ return;
17
+ }
18
+
19
+ // get the relative class name
20
+ $relative_class = substr($class, $len);
21
+
22
+ // replace the namespace prefix with the base directory, replace namespace
23
+ // separators with directory separators in the relative class name, append
24
+ // with .php
25
+ $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
26
+
27
+ // if the file exists, require it
28
+ if (file_exists($file)) {
29
+ require $file;
30
+ }
31
+ });
seopress.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: SEOPress
4
  Plugin URI: https://www.seopress.org/
5
  Description: One of the best SEO plugins for WordPress.
6
  Author: SEOPress
7
- Version: 5.4.3
8
  Author URI: https://www.seopress.org/
9
  License: GPLv2
10
  Text Domain: wp-seopress
@@ -70,7 +70,7 @@ register_deactivation_hook(__FILE__, 'seopress_deactivation');
70
  ///////////////////////////////////////////////////////////////////////////////////////////////////
71
  //Define
72
  ///////////////////////////////////////////////////////////////////////////////////////////////////
73
- define('SEOPRESS_VERSION', '5.4.3');
74
  define('SEOPRESS_AUTHOR', 'Benjamin Denis');
75
  define('SEOPRESS_PLUGIN_DIR_PATH', plugin_dir_path(__FILE__));
76
  define('SEOPRESS_PLUGIN_DIR_URL', plugin_dir_url(__FILE__));
@@ -86,8 +86,9 @@ define('SEOPRESS_DIR_LANGUAGES', dirname(plugin_basename(__FILE__)) . '/language
86
 
87
  use SEOPress\Core\Kernel;
88
 
 
 
89
  if (file_exists(__DIR__ . '/vendor/autoload.php')) {
90
- require_once __DIR__ . '/vendor/autoload.php';
91
  require_once __DIR__ . '/seopress-functions.php';
92
  require_once __DIR__ . '/inc/admin/cron.php';
93
 
4
  Plugin URI: https://www.seopress.org/
5
  Description: One of the best SEO plugins for WordPress.
6
  Author: SEOPress
7
+ Version: 5.4.4
8
  Author URI: https://www.seopress.org/
9
  License: GPLv2
10
  Text Domain: wp-seopress
70
  ///////////////////////////////////////////////////////////////////////////////////////////////////
71
  //Define
72
  ///////////////////////////////////////////////////////////////////////////////////////////////////
73
+ define('SEOPRESS_VERSION', '5.4.4');
74
  define('SEOPRESS_AUTHOR', 'Benjamin Denis');
75
  define('SEOPRESS_PLUGIN_DIR_PATH', plugin_dir_path(__FILE__));
76
  define('SEOPRESS_PLUGIN_DIR_URL', plugin_dir_url(__FILE__));
86
 
87
  use SEOPress\Core\Kernel;
88
 
89
+ require_once __DIR__ . '/seopress-autoload.php';
90
+
91
  if (file_exists(__DIR__ . '/vendor/autoload.php')) {
 
92
  require_once __DIR__ . '/seopress-functions.php';
93
  require_once __DIR__ . '/inc/admin/cron.php';
94
 
src/Actions/Admin/Importer/AIO.php ADDED
@@ -0,0 +1,243 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace SEOPress\Actions\Admin\Importer;
4
+
5
+ defined('ABSPATH') or exit('Cheatin&#8217; uh?');
6
+
7
+ use SEOPress\Core\Hooks\ExecuteHooksBackend;
8
+ use SEOPress\Thirds\AIO\Tags;
9
+
10
+ class AIO implements ExecuteHooksBackend {
11
+ public function __construct() {
12
+ $this->tagsAIO = new Tags();
13
+ }
14
+
15
+ /**
16
+ * @since 4.3.0
17
+ *
18
+ * @return void
19
+ */
20
+ public function hooks() {
21
+ add_action('wp_ajax_seopress_aio_migration', [$this, 'process']);
22
+ }
23
+
24
+ /**
25
+ * @since 4.3.0
26
+ *
27
+ * @param int $offset
28
+ * @param int $increment
29
+ */
30
+ protected function migratePostQuery($offset, $increment) {
31
+ global $wpdb;
32
+ $args = [
33
+ 'posts_per_page' => $increment,
34
+ 'post_type' => 'testimonials',
35
+ 'post_status' => 'any',
36
+ 'offset' => $offset,
37
+ ];
38
+
39
+ $aio_query = get_posts($args);
40
+
41
+ if ( ! $aio_query) {
42
+ $offset += $increment;
43
+
44
+ return $offset;
45
+ }
46
+
47
+ $getPostMetas = [
48
+ '_seopress_titles_title' => '_aioseo_title',
49
+ '_seopress_titles_desc' => '_aioseo_description',
50
+ '_seopress_social_fb_title' => '_aioseo_og_title',
51
+ '_seopress_social_fb_desc' => '_aioseo_og_description',
52
+ '_seopress_social_twitter_title' => '_aioseo_twitter_title',
53
+ '_seopress_social_twitter_desc' => '_aioseo_twitter_description',
54
+ ];
55
+
56
+ foreach ($aio_query as $post) {
57
+ foreach ($getPostMetas as $key => $value) {
58
+ $metaAIO = get_post_meta($post->ID, $value, true);
59
+ if ( ! empty($metaAIO)) {
60
+ update_post_meta($post->ID, $key, $this->tagsAIO->replaceTags($metaAIO));
61
+ }
62
+ }
63
+
64
+ //Canonical URL
65
+ $canonical_url = "SELECT p.canonical_url, p.post_id
66
+ FROM {$wpdb->prefix}aioseo_posts p
67
+ WHERE p.post_id = $post->ID";
68
+
69
+ $canonical_url = $wpdb->get_results($canonical_url, ARRAY_A);
70
+
71
+ if (! empty($canonical_url[0]['canonical_url'])) {//Import Canonical URL
72
+ update_post_meta($post->ID, '_seopress_robots_canonical', $canonical_url[0]['canonical_url']);
73
+ }
74
+
75
+ //OG Image
76
+ $og_img_url = "SELECT p.og_image_custom_url, p.post_id
77
+ FROM {$wpdb->prefix}aioseo_posts p
78
+ WHERE p.og_image_type = 'custom_image' AND p.post_id = $post->ID";
79
+
80
+ $og_img_url = $wpdb->get_results($og_img_url, ARRAY_A);
81
+
82
+ if (! empty($og_img_url[0]['og_image_custom_url'])) {//Import Facebook Image
83
+ update_post_meta($post->ID, '_seopress_social_fb_img', $og_img_url[0]['og_image_custom_url']);
84
+ } elseif ('' != get_post_meta($post->ID, '_aioseop_opengraph_settings', true)) { //Import old Facebook Image
85
+ $_aioseop_opengraph_settings = get_post_meta($post->ID, '_aioseop_opengraph_settings', true);
86
+ if (isset($_aioseop_opengraph_settings['aioseop_opengraph_settings_image'])) {
87
+ update_post_meta($post->ID, '_seopress_social_fb_img', $_aioseop_opengraph_settings['aioseop_opengraph_settings_customimg']);
88
+ }
89
+ }
90
+
91
+ //Twitter Image
92
+ $tw_img_url = "SELECT p.twitter_image_custom_url, p.post_id
93
+ FROM {$wpdb->prefix}aioseo_posts p
94
+ WHERE p.twitter_image_type = 'custom_image' AND p.post_id = $post->ID";
95
+
96
+ $tw_img_url = $wpdb->get_results($tw_img_url, ARRAY_A);
97
+
98
+ if (! empty($tw_img_url[0]['twitter_image_custom_url'])) {//Import Twitter Image
99
+ update_post_meta($post->ID, '_seopress_social_twitter_img', $tw_img_url[0]['twitter_image_custom_url']);
100
+ } elseif ('' != get_post_meta($post->ID, '_aioseop_opengraph_settings', true)) { //Import old Twitter Image
101
+ $_aioseop_opengraph_settings = get_post_meta($post->ID, '_aioseop_opengraph_settings', true);
102
+ if (isset($_aioseop_opengraph_settings['aioseop_opengraph_settings_customimg_twitter'])) {
103
+ update_post_meta($post->ID, '_seopress_social_twitter_img', $_aioseop_opengraph_settings['aioseop_opengraph_settings_customimg_twitter']);
104
+ }
105
+ }
106
+
107
+ //Meta robots "noindex"
108
+ $robots_noindex = "SELECT p.robots_noindex, p.post_id
109
+ FROM {$wpdb->prefix}aioseo_posts p
110
+ WHERE p.post_id = $post->ID";
111
+
112
+ $robots_noindex = $wpdb->get_results($robots_noindex, ARRAY_A);
113
+
114
+ if (! empty($robots_noindex[0]['robots_noindex']) && '1' === $robots_noindex[0]['robots_noindex']) {//Import Robots NoIndex
115
+ update_post_meta($post->ID, '_seopress_robots_index', 'yes');
116
+ } elseif ('on' == get_post_meta($post->ID, '_aioseop_noindex', true)) { //Import old Robots NoIndex
117
+ update_post_meta($post->ID, '_seopress_robots_index', 'yes');
118
+ }
119
+
120
+ //Meta robots "nofollow"
121
+ $robots_nofollow = "SELECT p.robots_nofollow, p.post_id
122
+ FROM {$wpdb->prefix}aioseo_posts p
123
+ WHERE p.post_id = $post->ID";
124
+
125
+ $robots_nofollow = $wpdb->get_results($robots_nofollow, ARRAY_A);
126
+
127
+ if (! empty($robots_nofollow[0]['robots_nofollow']) && '1' === $robots_nofollow[0]['robots_nofollow']) {//Import Robots NoFollow
128
+ update_post_meta($post->ID, '_seopress_robots_follow', 'yes');
129
+ } elseif ('on' == get_post_meta($post->ID, '_aioseop_nofollow', true)) { //Import old Robots NoFollow
130
+ update_post_meta($post->ID, '_seopress_robots_follow', 'yes');
131
+ }
132
+
133
+ //Meta robots "noimageindex"
134
+ $robots_noimageindex = "SELECT p.robots_noimageindex, p.post_id
135
+ FROM {$wpdb->prefix}aioseo_posts p
136
+ WHERE p.post_id = $post->ID";
137
+
138
+ $robots_noimageindex = $wpdb->get_results($robots_noimageindex, ARRAY_A);
139
+
140
+ if (! empty($robots_noimageindex[0]['robots_noimageindex']) && '1' === $robots_noimageindex[0]['robots_noimageindex']) {//Import Robots NoImageIndex
141
+ update_post_meta($post->ID, '_seopress_robots_imageindex', 'yes');
142
+ }
143
+
144
+ //Meta robots "noodp"
145
+ $robots_noodp = "SELECT p.robots_noodp, p.post_id
146
+ FROM {$wpdb->prefix}aioseo_posts p
147
+ WHERE p.post_id = $post->ID";
148
+
149
+ $robots_noodp = $wpdb->get_results($robots_noodp, ARRAY_A);
150
+
151
+ if (! empty($robots_noodp[0]['robots_noodp']) && '1' === $robots_noodp[0]['robots_noodp']) {//Import Robots NoOdp
152
+ update_post_meta($post->ID, '_seopress_robots_odp', 'yes');
153
+ }
154
+
155
+ //Meta robots "nosnippet"
156
+ $robots_nosnippet = "SELECT p.robots_nosnippet, p.post_id
157
+ FROM {$wpdb->prefix}aioseo_posts p
158
+ WHERE p.post_id = $post->ID";
159
+
160
+ $robots_nosnippet = $wpdb->get_results($robots_nosnippet, ARRAY_A);
161
+
162
+ if (! empty($robots_nosnippet[0]['robots_nosnippet']) && '1' === $robots_nosnippet[0]['robots_nosnippet']) {//Import Robots NoSnippet
163
+ update_post_meta($post->ID, '_seopress_robots_snippet', 'yes');
164
+ }
165
+
166
+ //Meta robots "noarchive"
167
+ $robots_noarchive = "SELECT p.robots_noarchive, p.post_id
168
+ FROM {$wpdb->prefix}aioseo_posts p
169
+ WHERE p.post_id = $post->ID";
170
+
171
+ $robots_noarchive = $wpdb->get_results($robots_noarchive, ARRAY_A);
172
+
173
+ if (! empty($robots_noarchive[0]['robots_noarchive']) && '1' === $robots_noarchive[0]['robots_noarchive']) {//Import Robots NoArchive
174
+ update_post_meta($post->ID, '_seopress_robots_archive', 'yes');
175
+ }
176
+
177
+ //Target keywords
178
+ $keyphrases = "SELECT p.keyphrases, p.post_id
179
+ FROM {$wpdb->prefix}aioseo_posts p
180
+ WHERE p.post_id = $post->ID";
181
+
182
+ $keyphrases = $wpdb->get_results($keyphrases, ARRAY_A);
183
+
184
+ if (! empty($keyphrases)) {
185
+ $keyphrases = json_decode($keyphrases[0]['keyphrases']);
186
+
187
+ if (isset($keyphrases->focus->keyphrase)) {
188
+ $keyphrases = $keyphrases->focus->keyphrase;
189
+
190
+ if ('' != $keyphrases) { //Import focus kw
191
+ update_post_meta($post->ID, '_seopress_analysis_target_kw', $keyphrases);
192
+ }
193
+ }
194
+ }
195
+ }
196
+
197
+ $offset += $increment;
198
+
199
+ return $offset;
200
+ }
201
+
202
+ /**
203
+ * @since 4.3.0
204
+ */
205
+ public function process() {
206
+ check_ajax_referer('seopress_aio_migrate_nonce', $_POST['_ajax_nonce'], true);
207
+ if ( ! is_admin()) {
208
+ wp_send_json_error();
209
+
210
+ return;
211
+ }
212
+
213
+ if ( ! current_user_can(seopress_capability('manage_options', 'migration'))) {
214
+ wp_send_json_error();
215
+
216
+ return;
217
+ }
218
+
219
+ if (isset($_POST['offset'])) {
220
+ $offset = absint($_POST['offset']);
221
+ }
222
+
223
+ global $wpdb;
224
+ $total_count_posts = (int) $wpdb->get_var("SELECT count(*) FROM {$wpdb->posts}");
225
+
226
+ $increment = 200;
227
+ global $post;
228
+
229
+ if ($offset > $total_count_posts) {
230
+ $offset = 'done';
231
+ } else {
232
+ $offset = $this->migratePostQuery($offset, $increment);
233
+ }
234
+
235
+ $data = [];
236
+ $data['offset'] = $offset;
237
+
238
+ do_action('seopress_third_importer_aio', $offset, $increment);
239
+
240
+ wp_send_json_success($data);
241
+ exit();
242
+ }
243
+ }
src/Thirds/AIO/Tags.php ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace SEOPress\Thirds\AIO;
4
+
5
+ defined('ABSPATH') or exit('Cheatin&#8217; uh?');
6
+
7
+ use SEOPress\Helpers\TagCompose;
8
+
9
+ class Tags {
10
+ protected $variables = [
11
+ '#separator_sa' => 'sep',
12
+ '#site_title' => 'sitetitle',
13
+ '#tagline' => 'tagline',
14
+ '#post_title' => 'post_title',
15
+ '#author_first_name' => 'author_first_name',
16
+ '#author_last_name' => 'author_last_name',
17
+ '#author_last_name' => 'author_last_name',
18
+ '#author_name' => 'post_author',
19
+ '#taxonomy_title' => 'term_title',
20
+ '#current_date' => 'currentdate',
21
+ '#current_month' => 'currentmonth',
22
+ '#current_day' => 'currentday',
23
+ '#current_year' => 'currentyear',
24
+ '#permalink' => 'post_url',
25
+ '#post_content' => 'post_content',
26
+ '#post_excerpt_only' => 'post_excerpt',
27
+ '#post_excerpt' => 'post_excerpt',
28
+ '#post_date' => 'post_date',
29
+ '#post_day' => '',
30
+ '#post_month' => '',
31
+ '#post_year' => '',
32
+ '#custom_field-' => '_cf_',
33
+ '#tax_name-' => '_ct_',
34
+ ];
35
+
36
+ /**
37
+ * @since 5.5.0
38
+ *
39
+ * @param string $input
40
+ *
41
+ * @return string
42
+ */
43
+ public function replaceTags($input) {
44
+ foreach ($this->variables as $key => $value) {
45
+ if ( ! empty($value)) {
46
+
47
+ if ( $key === '#custom_field-') {
48
+ preg_match_all('/#custom_field-[^\s]*/', $input, $matches);
49
+
50
+ if ( ! empty($matches[0])) {
51
+ foreach($matches[0] as $_key => $_value) {
52
+ $new_tag = str_replace('#custom_field-', '_cf_', $_value);
53
+ $new_tag = TagCompose::getValueWithTag($new_tag);
54
+ $input = str_replace($_value, $new_tag, $input);
55
+ }
56
+ }
57
+ } elseif ( $key === '#tax_name-') {
58
+ preg_match_all('/#tax_name-[^\s]*/', $input, $matches);
59
+
60
+ if ( ! empty($matches[0])) {
61
+ foreach($matches[0] as $_key => $_value) {
62
+ $new_tag = str_replace('#tax_name-', '_ct_', $_value);
63
+ $new_tag = TagCompose::getValueWithTag($new_tag);
64
+ $input = str_replace($_value, $new_tag, $input);
65
+ }
66
+ }
67
+ } else {
68
+ $value = TagCompose::getValueWithTag($value);
69
+ }
70
+ }
71
+ if ( $key !== '#custom_field-' || $key !=='#tax_name-') {
72
+ $input = str_replace($key, $value, $input);
73
+ }
74
+ }
75
+
76
+ return $input;
77
+ }
78
+ }
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit7c78591f24079299fccb099544a5f8f7::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit339939d335e3d7b1bcc9634cec27f261::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit7c78591f24079299fccb099544a5f8f7
6
  {
7
  private static $loader;
8
 
@@ -24,15 +24,15 @@ class ComposerAutoloaderInit7c78591f24079299fccb099544a5f8f7
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
- spl_autoload_register(array('ComposerAutoloaderInit7c78591f24079299fccb099544a5f8f7', 'loadClassLoader'), true, true);
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
- spl_autoload_unregister(array('ComposerAutoloaderInit7c78591f24079299fccb099544a5f8f7', 'loadClassLoader'));
30
 
31
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
  if ($useStaticLoader) {
33
  require __DIR__ . '/autoload_static.php';
34
 
35
- call_user_func(\Composer\Autoload\ComposerStaticInit7c78591f24079299fccb099544a5f8f7::getInitializer($loader));
36
  } else {
37
  $map = require __DIR__ . '/autoload_namespaces.php';
38
  foreach ($map as $namespace => $path) {
@@ -53,19 +53,19 @@ class ComposerAutoloaderInit7c78591f24079299fccb099544a5f8f7
53
  $loader->register(true);
54
 
55
  if ($useStaticLoader) {
56
- $includeFiles = Composer\Autoload\ComposerStaticInit7c78591f24079299fccb099544a5f8f7::$files;
57
  } else {
58
  $includeFiles = require __DIR__ . '/autoload_files.php';
59
  }
60
  foreach ($includeFiles as $fileIdentifier => $file) {
61
- composerRequire7c78591f24079299fccb099544a5f8f7($fileIdentifier, $file);
62
  }
63
 
64
  return $loader;
65
  }
66
  }
67
 
68
- function composerRequire7c78591f24079299fccb099544a5f8f7($fileIdentifier, $file)
69
  {
70
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit339939d335e3d7b1bcc9634cec27f261
6
  {
7
  private static $loader;
8
 
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
+ spl_autoload_register(array('ComposerAutoloaderInit339939d335e3d7b1bcc9634cec27f261', 'loadClassLoader'), true, true);
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
+ spl_autoload_unregister(array('ComposerAutoloaderInit339939d335e3d7b1bcc9634cec27f261', 'loadClassLoader'));
30
 
31
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
  if ($useStaticLoader) {
33
  require __DIR__ . '/autoload_static.php';
34
 
35
+ call_user_func(\Composer\Autoload\ComposerStaticInit339939d335e3d7b1bcc9634cec27f261::getInitializer($loader));
36
  } else {
37
  $map = require __DIR__ . '/autoload_namespaces.php';
38
  foreach ($map as $namespace => $path) {
53
  $loader->register(true);
54
 
55
  if ($useStaticLoader) {
56
+ $includeFiles = Composer\Autoload\ComposerStaticInit339939d335e3d7b1bcc9634cec27f261::$files;
57
  } else {
58
  $includeFiles = require __DIR__ . '/autoload_files.php';
59
  }
60
  foreach ($includeFiles as $fileIdentifier => $file) {
61
+ composerRequire339939d335e3d7b1bcc9634cec27f261($fileIdentifier, $file);
62
  }
63
 
64
  return $loader;
65
  }
66
  }
67
 
68
+ function composerRequire339939d335e3d7b1bcc9634cec27f261($fileIdentifier, $file)
69
  {
70
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit7c78591f24079299fccb099544a5f8f7
8
  {
9
  public static $files = array (
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
@@ -144,9 +144,9 @@ class ComposerStaticInit7c78591f24079299fccb099544a5f8f7
144
  public static function getInitializer(ClassLoader $loader)
145
  {
146
  return \Closure::bind(function () use ($loader) {
147
- $loader->prefixLengthsPsr4 = ComposerStaticInit7c78591f24079299fccb099544a5f8f7::$prefixLengthsPsr4;
148
- $loader->prefixDirsPsr4 = ComposerStaticInit7c78591f24079299fccb099544a5f8f7::$prefixDirsPsr4;
149
- $loader->classMap = ComposerStaticInit7c78591f24079299fccb099544a5f8f7::$classMap;
150
 
151
  }, null, ClassLoader::class);
152
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit339939d335e3d7b1bcc9634cec27f261
8
  {
9
  public static $files = array (
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
144
  public static function getInitializer(ClassLoader $loader)
145
  {
146
  return \Closure::bind(function () use ($loader) {
147
+ $loader->prefixLengthsPsr4 = ComposerStaticInit339939d335e3d7b1bcc9634cec27f261::$prefixLengthsPsr4;
148
+ $loader->prefixDirsPsr4 = ComposerStaticInit339939d335e3d7b1bcc9634cec27f261::$prefixDirsPsr4;
149
+ $loader->classMap = ComposerStaticInit339939d335e3d7b1bcc9634cec27f261::$classMap;
150
 
151
  }, null, ClassLoader::class);
152
  }
vendor/composer/installed.json CHANGED
@@ -136,17 +136,17 @@
136
  },
137
  {
138
  "name": "google/apiclient-services",
139
- "version": "v0.231.1",
140
- "version_normalized": "0.231.1.0",
141
  "source": {
142
  "type": "git",
143
  "url": "https://github.com/googleapis/google-api-php-client-services.git",
144
- "reference": "d6bf7109fc77d1c67110103a42e2a7d480b217a0"
145
  },
146
  "dist": {
147
  "type": "zip",
148
- "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/d6bf7109fc77d1c67110103a42e2a7d480b217a0",
149
- "reference": "d6bf7109fc77d1c67110103a42e2a7d480b217a0",
150
  "shasum": ""
151
  },
152
  "require": {
@@ -155,7 +155,7 @@
155
  "require-dev": {
156
  "phpunit/phpunit": "^5.7||^8.5.13"
157
  },
158
- "time": "2022-01-26T23:24:19+00:00",
159
  "type": "library",
160
  "installation-source": "dist",
161
  "autoload": {
@@ -177,7 +177,7 @@
177
  ],
178
  "support": {
179
  "issues": "https://github.com/googleapis/google-api-php-client-services/issues",
180
- "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.231.1"
181
  },
182
  "install-path": "../google/apiclient-services"
183
  },
@@ -799,17 +799,17 @@
799
  },
800
  {
801
  "name": "phpseclib/phpseclib",
802
- "version": "3.0.12",
803
- "version_normalized": "3.0.12.0",
804
  "source": {
805
  "type": "git",
806
  "url": "https://github.com/phpseclib/phpseclib.git",
807
- "reference": "89bfb45bd8b1abc3b37e910d57f5dbd3174f40fb"
808
  },
809
  "dist": {
810
  "type": "zip",
811
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/89bfb45bd8b1abc3b37e910d57f5dbd3174f40fb",
812
- "reference": "89bfb45bd8b1abc3b37e910d57f5dbd3174f40fb",
813
  "shasum": ""
814
  },
815
  "require": {
@@ -828,7 +828,7 @@
828
  "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
829
  "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
830
  },
831
- "time": "2021-11-28T23:46:03+00:00",
832
  "type": "library",
833
  "installation-source": "dist",
834
  "autoload": {
@@ -893,7 +893,7 @@
893
  ],
894
  "support": {
895
  "issues": "https://github.com/phpseclib/phpseclib/issues",
896
- "source": "https://github.com/phpseclib/phpseclib/tree/3.0.12"
897
  },
898
  "funding": [
899
  {
136
  },
137
  {
138
  "name": "google/apiclient-services",
139
+ "version": "v0.233.0",
140
+ "version_normalized": "0.233.0.0",
141
  "source": {
142
  "type": "git",
143
  "url": "https://github.com/googleapis/google-api-php-client-services.git",
144
+ "reference": "c3632d433742f1e0660460c1d9c220adf4e83885"
145
  },
146
  "dist": {
147
  "type": "zip",
148
+ "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/c3632d433742f1e0660460c1d9c220adf4e83885",
149
+ "reference": "c3632d433742f1e0660460c1d9c220adf4e83885",
150
  "shasum": ""
151
  },
152
  "require": {
155
  "require-dev": {
156
  "phpunit/phpunit": "^5.7||^8.5.13"
157
  },
158
+ "time": "2022-01-30T12:26:38+00:00",
159
  "type": "library",
160
  "installation-source": "dist",
161
  "autoload": {
177
  ],
178
  "support": {
179
  "issues": "https://github.com/googleapis/google-api-php-client-services/issues",
180
+ "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.233.0"
181
  },
182
  "install-path": "../google/apiclient-services"
183
  },
799
  },
800
  {
801
  "name": "phpseclib/phpseclib",
802
+ "version": "3.0.13",
803
+ "version_normalized": "3.0.13.0",
804
  "source": {
805
  "type": "git",
806
  "url": "https://github.com/phpseclib/phpseclib.git",
807
+ "reference": "1443ab79364eea48665fa8c09ac67f37d1025f7e"
808
  },
809
  "dist": {
810
  "type": "zip",
811
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/1443ab79364eea48665fa8c09ac67f37d1025f7e",
812
+ "reference": "1443ab79364eea48665fa8c09ac67f37d1025f7e",
813
  "shasum": ""
814
  },
815
  "require": {
828
  "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
829
  "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
830
  },
831
+ "time": "2022-01-30T08:50:05+00:00",
832
  "type": "library",
833
  "installation-source": "dist",
834
  "autoload": {
893
  ],
894
  "support": {
895
  "issues": "https://github.com/phpseclib/phpseclib/issues",
896
+ "source": "https://github.com/phpseclib/phpseclib/tree/3.0.13"
897
  },
898
  "funding": [
899
  {
vendor/composer/installed.php CHANGED
@@ -5,7 +5,7 @@
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
- 'reference' => 'b1bf613c4a673b3f3916225dd0727766558a245c',
9
  'name' => 'wp-seopress/wp-seopress',
10
  'dev' => false,
11
  ),
@@ -29,12 +29,12 @@
29
  'dev_requirement' => false,
30
  ),
31
  'google/apiclient-services' => array(
32
- 'pretty_version' => 'v0.231.1',
33
- 'version' => '0.231.1.0',
34
  'type' => 'library',
35
  'install_path' => __DIR__ . '/../google/apiclient-services',
36
  'aliases' => array(),
37
- 'reference' => 'd6bf7109fc77d1c67110103a42e2a7d480b217a0',
38
  'dev_requirement' => false,
39
  ),
40
  'google/auth' => array(
@@ -101,12 +101,12 @@
101
  'dev_requirement' => false,
102
  ),
103
  'phpseclib/phpseclib' => array(
104
- 'pretty_version' => '3.0.12',
105
- 'version' => '3.0.12.0',
106
  'type' => 'library',
107
  'install_path' => __DIR__ . '/../phpseclib/phpseclib',
108
  'aliases' => array(),
109
- 'reference' => '89bfb45bd8b1abc3b37e910d57f5dbd3174f40fb',
110
  'dev_requirement' => false,
111
  ),
112
  'psr/cache' => array(
@@ -202,7 +202,7 @@
202
  'type' => 'wordpress-plugin',
203
  'install_path' => __DIR__ . '/../../',
204
  'aliases' => array(),
205
- 'reference' => 'b1bf613c4a673b3f3916225dd0727766558a245c',
206
  'dev_requirement' => false,
207
  ),
208
  ),
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
+ 'reference' => '480a87c6d38b74e5c7d24b3ef1a0565711ea9016',
9
  'name' => 'wp-seopress/wp-seopress',
10
  'dev' => false,
11
  ),
29
  'dev_requirement' => false,
30
  ),
31
  'google/apiclient-services' => array(
32
+ 'pretty_version' => 'v0.233.0',
33
+ 'version' => '0.233.0.0',
34
  'type' => 'library',
35
  'install_path' => __DIR__ . '/../google/apiclient-services',
36
  'aliases' => array(),
37
+ 'reference' => 'c3632d433742f1e0660460c1d9c220adf4e83885',
38
  'dev_requirement' => false,
39
  ),
40
  'google/auth' => array(
101
  'dev_requirement' => false,
102
  ),
103
  'phpseclib/phpseclib' => array(
104
+ 'pretty_version' => '3.0.13',
105
+ 'version' => '3.0.13.0',
106
  'type' => 'library',
107
  'install_path' => __DIR__ . '/../phpseclib/phpseclib',
108
  'aliases' => array(),
109
+ 'reference' => '1443ab79364eea48665fa8c09ac67f37d1025f7e',
110
  'dev_requirement' => false,
111
  ),
112
  'psr/cache' => array(
202
  'type' => 'wordpress-plugin',
203
  'install_path' => __DIR__ . '/../../',
204
  'aliases' => array(),
205
+ 'reference' => '480a87c6d38b74e5c7d24b3ef1a0565711ea9016',
206
  'dev_requirement' => false,
207
  ),
208
  ),
vendor/google/apiclient-services/synth.metadata CHANGED
@@ -4,14 +4,14 @@
4
  "git": {
5
  "name": ".",
6
  "remote": "https://github.com/googleapis/google-api-php-client-services.git",
7
- "sha": "c7e41ff04793cdac1c7e72b148da37b09dcc5bfe"
8
  }
9
  },
10
  {
11
  "git": {
12
  "name": "discovery-artifact-manager",
13
  "remote": "https://github.com/googleapis/discovery-artifact-manager.git",
14
- "sha": "f37da7e0496a79c44db6fbcae47a3780b1ea177f"
15
  }
16
  }
17
  ]
4
  "git": {
5
  "name": ".",
6
  "remote": "https://github.com/googleapis/google-api-php-client-services.git",
7
+ "sha": "3b37d2bf260bb5206cce9fda3d79b9d4e51d082b"
8
  }
9
  },
10
  {
11
  "git": {
12
  "name": "discovery-artifact-manager",
13
  "remote": "https://github.com/googleapis/discovery-artifact-manager.git",
14
+ "sha": "b6fdb84be9e1411e1b5233dcc5baf7aa04191cb8"
15
  }
16
  }
17
  ]
vendor/phpseclib/phpseclib/BACKERS.md CHANGED
@@ -4,6 +4,9 @@ phpseclib ongoing development is made possible by [Tidelift](https://tidelift.co
4
 
5
  ## Backers
6
 
 
 
7
  - Zane Hooper
8
  - [Setasign](https://www.setasign.com/)
9
- - Allan Simon
 
4
 
5
  ## Backers
6
 
7
+ - Allan Simon
8
+ - Raghu Veer Dendukuri
9
  - Zane Hooper
10
  - [Setasign](https://www.setasign.com/)
11
+ - [Charles Severance](https://github.com/csev)
12
+ - [Rachel Fish](https://github.com/itsrachelfish)
vendor/phpseclib/phpseclib/README.md CHANGED
@@ -1,6 +1,6 @@
1
  # phpseclib - PHP Secure Communications Library
2
 
3
- [![Build Status](https://travis-ci.com/phpseclib/phpseclib.svg?branch=3.0)](https://travis-ci.com/phpseclib/phpseclib)
4
 
5
  ## Supporting phpseclib
6
 
@@ -52,7 +52,7 @@ SSH-2, SFTP, X.509, an arbitrary-precision integer arithmetic library, Ed25519 /
52
  * Composer compatible (PSR-0 autoloading)
53
  * Install using Composer: `composer require phpseclib/phpseclib:~1.0`
54
  * Install using PEAR: See [phpseclib PEAR Channel Documentation](http://phpseclib.sourceforge.net/pear.htm)
55
- * [Download 1.0.19 as ZIP](http://sourceforge.net/projects/phpseclib/files/phpseclib1.0.19.zip/download)
56
 
57
  ## Security contact information
58
 
1
  # phpseclib - PHP Secure Communications Library
2
 
3
+ [![Build Status](https://travis-ci.com/phpseclib/phpseclib.svg?branch=3.0)](https://travis-ci.com/github/phpseclib/phpseclib)
4
 
5
  ## Supporting phpseclib
6
 
52
  * Composer compatible (PSR-0 autoloading)
53
  * Install using Composer: `composer require phpseclib/phpseclib:~1.0`
54
  * Install using PEAR: See [phpseclib PEAR Channel Documentation](http://phpseclib.sourceforge.net/pear.htm)
55
+ * [Download 1.0.20 as ZIP](http://sourceforge.net/projects/phpseclib/files/phpseclib1.0.20.zip/download)
56
 
57
  ## Security contact information
58
 
vendor/phpseclib/phpseclib/phpseclib/Common/Functions/Strings.php CHANGED
@@ -158,9 +158,9 @@ abstract class Strings
158
  /**
159
  * Create SSH2-style string
160
  *
161
- * @param string[] ...$elements
162
  * @access public
163
- * @return mixed
164
  */
165
  public static function packSSH2(...$elements)
166
  {
@@ -308,7 +308,7 @@ abstract class Strings
308
  * @param string $x
309
  * @return string
310
  */
311
- public static function bin2bits($x)
312
  {
313
  /*
314
  // the pure-PHP approach is slower than the GMP approach BUT
@@ -337,7 +337,7 @@ abstract class Strings
337
  }
338
  }
339
 
340
- return ltrim($bits, '0');
341
  }
342
 
343
  /**
@@ -350,14 +350,21 @@ abstract class Strings
350
  public static function switchEndianness($x)
351
  {
352
  $r = '';
353
- // from http://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith32Bits
354
  for ($i = strlen($x) - 1; $i >= 0; $i--) {
355
  $b = ord($x[$i]);
356
- $p1 = ($b * 0x0802) & 0x22110;
357
- $p2 = ($b * 0x8020) & 0x88440;
358
- $r.= chr(
359
- (($p1 | $p2) * 0x10101) >> 16
360
- );
 
 
 
 
 
 
 
 
361
  }
362
  return $r;
363
  }
158
  /**
159
  * Create SSH2-style string
160
  *
161
+ * @param string|int|float|array|bool ...$elements
162
  * @access public
163
+ * @return string
164
  */
165
  public static function packSSH2(...$elements)
166
  {
308
  * @param string $x
309
  * @return string
310
  */
311
+ public static function bin2bits($x, $trim = true)
312
  {
313
  /*
314
  // the pure-PHP approach is slower than the GMP approach BUT
337
  }
338
  }
339
 
340
+ return $trim ? ltrim($bits, '0') : $bits;
341
  }
342
 
343
  /**
350
  public static function switchEndianness($x)
351
  {
352
  $r = '';
 
353
  for ($i = strlen($x) - 1; $i >= 0; $i--) {
354
  $b = ord($x[$i]);
355
+ if (PHP_INT_SIZE === 8) {
356
+ // 3 operations
357
+ // from http://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith64BitsDiv
358
+ $r.= chr((($b * 0x0202020202) & 0x010884422010) % 1023);
359
+ } else {
360
+ // 7 operations
361
+ // from http://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith32Bits
362
+ $p1 = ($b * 0x0802) & 0x22110;
363
+ $p2 = ($b * 0x8020) & 0x88440;
364
+ $r.= chr(
365
+ (($p1 | $p2) * 0x10101) >> 16
366
+ );
367
+ }
368
  }
369
  return $r;
370
  }
vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/AsymmetricKey.php CHANGED
@@ -123,6 +123,12 @@ abstract class AsymmetricKey
123
  */
124
  private $comment;
125
 
 
 
 
 
 
 
126
  /**
127
  * The constructor
128
  */
@@ -245,7 +251,7 @@ abstract class AsymmetricKey
245
  * @param string $type
246
  * @param string $key
247
  * @param string $password optional
248
- * @return AsymmetricKey
249
  */
250
  public static function loadFormat($type, $key, $password = false)
251
  {
123
  */
124
  private $comment;
125
 
126
+ /**
127
+ * @param string $type
128
+ * @return string
129
+ */
130
+ abstract public function toString($type, array $options = []);
131
+
132
  /**
133
  * The constructor
134
  */
251
  * @param string $type
252
  * @param string $key
253
  * @param string $password optional
254
+ * @return static
255
  */
256
  public static function loadFormat($type, $key, $password = false)
257
  {
vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/SymmetricKey.php CHANGED
@@ -101,7 +101,15 @@ abstract class SymmetricKey
101
  * @see \phpseclib3\Crypt\Common\SymmetricKey::encrypt()
102
  * @see \phpseclib3\Crypt\Common\SymmetricKey::decrypt()
103
  */
104
- const MODE_CFB8 = 38;
 
 
 
 
 
 
 
 
105
  /**
106
  * Encrypt / decrypt using the Output Feedback mode.
107
  *
@@ -142,6 +150,7 @@ abstract class SymmetricKey
142
  'cfb' => self::MODE_CFB,
143
  'cfb8' => self::MODE_CFB8,
144
  'ofb' => self::MODE_OFB,
 
145
  'gcm' => self::MODE_GCM,
146
  'stream' => self::MODE_STREAM
147
  ];
@@ -642,6 +651,8 @@ abstract class SymmetricKey
642
  *
643
  * - ofb
644
  *
 
 
645
  * - gcm
646
  *
647
  * @param string $mode
@@ -669,6 +680,7 @@ abstract class SymmetricKey
669
  case self::MODE_CFB:
670
  case self::MODE_CFB8:
671
  case self::MODE_OFB:
 
672
  case self::MODE_STREAM:
673
  $this->paddable = false;
674
  break;
@@ -1237,6 +1249,21 @@ abstract class SymmetricKey
1237
  }
1238
  }
1239
  return $ciphertext;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1240
  case self::MODE_OFB:
1241
  return $this->openssl_ofb_process($plaintext, $this->encryptIV, $this->enbuffer);
1242
  }
@@ -1431,6 +1458,21 @@ abstract class SymmetricKey
1431
  }
1432
  }
1433
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1434
  case self::MODE_OFB:
1435
  $xor = $this->encryptIV;
1436
  if (strlen($buffer['xor'])) {
@@ -1595,6 +1637,21 @@ abstract class SymmetricKey
1595
  }
1596
  }
1597
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1598
  case self::MODE_OFB:
1599
  $plaintext = $this->openssl_ofb_process($ciphertext, $this->decryptIV, $this->debuffer);
1600
  }
@@ -1773,6 +1830,21 @@ abstract class SymmetricKey
1773
  }
1774
  }
1775
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1776
  case self::MODE_OFB:
1777
  $xor = $this->decryptIV;
1778
  if (strlen($buffer['xor'])) {
@@ -2446,6 +2518,7 @@ abstract class SymmetricKey
2446
  self::MODE_CFB => 'ncfb',
2447
  self::MODE_CFB8 => MCRYPT_MODE_CFB,
2448
  self::MODE_OFB => MCRYPT_MODE_NOFB,
 
2449
  self::MODE_STREAM => MCRYPT_MODE_STREAM,
2450
  ];
2451
 
@@ -2974,6 +3047,44 @@ abstract class SymmetricKey
2974
  }
2975
  }
2976
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2977
  return $_plaintext;
2978
  ';
2979
  break;
@@ -3301,4 +3412,4 @@ abstract class SymmetricKey
3301
  {
3302
  return array_flip(self::MODE_MAP)[$this->mode];
3303
  }
3304
- }
101
  * @see \phpseclib3\Crypt\Common\SymmetricKey::encrypt()
102
  * @see \phpseclib3\Crypt\Common\SymmetricKey::decrypt()
103
  */
104
+ const MODE_CFB8 = 7;
105
+ /**
106
+ * Encrypt / decrypt using the Output Feedback mode (8bit)
107
+ *
108
+ * @access public
109
+ * @see \phpseclib3\Crypt\Common\SymmetricKey::encrypt()
110
+ * @see \phpseclib3\Crypt\Common\SymmetricKey::decrypt()
111
+ */
112
+ const MODE_OFB8 = 8;
113
  /**
114
  * Encrypt / decrypt using the Output Feedback mode.
115
  *
150
  'cfb' => self::MODE_CFB,
151
  'cfb8' => self::MODE_CFB8,
152
  'ofb' => self::MODE_OFB,
153
+ 'ofb8' => self::MODE_OFB8,
154
  'gcm' => self::MODE_GCM,
155
  'stream' => self::MODE_STREAM
156
  ];
651
  *
652
  * - ofb
653
  *
654
+ * - ofb8
655
+ *
656
  * - gcm
657
  *
658
  * @param string $mode
680
  case self::MODE_CFB:
681
  case self::MODE_CFB8:
682
  case self::MODE_OFB:
683
+ case self::MODE_OFB8:
684
  case self::MODE_STREAM:
685
  $this->paddable = false;
686
  break;
1249
  }
1250
  }
1251
  return $ciphertext;
1252
+ case self::MODE_OFB8:
1253
+ $ciphertext = '';
1254
+ $len = strlen($plaintext);
1255
+ $iv = $this->encryptIV;
1256
+
1257
+ for ($i = 0; $i < $len; ++$i) {
1258
+ $xor = openssl_encrypt($iv, $this->cipher_name_openssl_ecb, $this->key, $this->openssl_options, $this->decryptIV);
1259
+ $ciphertext.= $plaintext[$i] ^ $xor;
1260
+ $iv = substr($iv, 1) . $xor[0];
1261
+ }
1262
+
1263
+ if ($this->continuousBuffer) {
1264
+ $this->encryptIV = $iv;
1265
+ }
1266
+ break;
1267
  case self::MODE_OFB:
1268
  return $this->openssl_ofb_process($plaintext, $this->encryptIV, $this->enbuffer);
1269
  }
1458
  }
1459
  }
1460
  break;
1461
+ case self::MODE_OFB8:
1462
+ $ciphertext = '';
1463
+ $len = strlen($plaintext);
1464
+ $iv = $this->encryptIV;
1465
+
1466
+ for ($i = 0; $i < $len; ++$i) {
1467
+ $xor = $this->encryptBlock($iv);
1468
+ $ciphertext.= $plaintext[$i] ^ $xor;
1469
+ $iv = substr($iv, 1) . $xor[0];
1470
+ }
1471
+
1472
+ if ($this->continuousBuffer) {
1473
+ $this->encryptIV = $iv;
1474
+ }
1475
+ break;
1476
  case self::MODE_OFB:
1477
  $xor = $this->encryptIV;
1478
  if (strlen($buffer['xor'])) {
1637
  }
1638
  }
1639
  break;
1640
+ case self::MODE_OFB8:
1641
+ $plaintext = '';
1642
+ $len = strlen($ciphertext);
1643
+ $iv = $this->decryptIV;
1644
+
1645
+ for ($i = 0; $i < $len; ++$i) {
1646
+ $xor = openssl_encrypt($iv, $this->cipher_name_openssl_ecb, $this->key, $this->openssl_options, $this->decryptIV);
1647
+ $plaintext.= $ciphertext[$i] ^ $xor;
1648
+ $iv = substr($iv, 1) . $xor[0];
1649
+ }
1650
+
1651
+ if ($this->continuousBuffer) {
1652
+ $this->decryptIV = $iv;
1653
+ }
1654
+ break;
1655
  case self::MODE_OFB:
1656
  $plaintext = $this->openssl_ofb_process($ciphertext, $this->decryptIV, $this->debuffer);
1657
  }
1830
  }
1831
  }
1832
  break;
1833
+ case self::MODE_OFB8:
1834
+ $plaintext = '';
1835
+ $len = strlen($ciphertext);
1836
+ $iv = $this->decryptIV;
1837
+
1838
+ for ($i = 0; $i < $len; ++$i) {
1839
+ $xor = $this->encryptBlock($iv);
1840
+ $plaintext.= $ciphertext[$i] ^ $xor;
1841
+ $iv = substr($iv, 1) . $xor[0];
1842
+ }
1843
+
1844
+ if ($this->continuousBuffer) {
1845
+ $this->decryptIV = $iv;
1846
+ }
1847
+ break;
1848
  case self::MODE_OFB:
1849
  $xor = $this->decryptIV;
1850
  if (strlen($buffer['xor'])) {
2518
  self::MODE_CFB => 'ncfb',
2519
  self::MODE_CFB8 => MCRYPT_MODE_CFB,
2520
  self::MODE_OFB => MCRYPT_MODE_NOFB,
2521
+ self::MODE_OFB8 => MCRYPT_MODE_OFB,
2522
  self::MODE_STREAM => MCRYPT_MODE_STREAM,
2523
  ];
2524
 
3047
  }
3048
  }
3049
 
3050
+ return $_plaintext;
3051
+ ';
3052
+ break;
3053
+ case self::MODE_OFB8:
3054
+ $encrypt = $init_encrypt . '
3055
+ $_ciphertext = "";
3056
+ $_len = strlen($_text);
3057
+ $_iv = $this->encryptIV;
3058
+
3059
+ for ($_i = 0; $_i < $_len; ++$_i) {
3060
+ $in = $_iv;
3061
+ '.$encrypt_block.'
3062
+ $_ciphertext.= $_text[$_i] ^ $in;
3063
+ $_iv = substr($_iv, 1) . $in[0];
3064
+ }
3065
+
3066
+ if ($this->continuousBuffer) {
3067
+ $this->encryptIV = $_iv;
3068
+ }
3069
+
3070
+ return $_ciphertext;
3071
+ ';
3072
+ $decrypt = $init_encrypt . '
3073
+ $_plaintext = "";
3074
+ $_len = strlen($_text);
3075
+ $_iv = $this->decryptIV;
3076
+
3077
+ for ($_i = 0; $_i < $_len; ++$_i) {
3078
+ $in = $_iv;
3079
+ '.$encrypt_block.'
3080
+ $_plaintext.= $_text[$_i] ^ $in;
3081
+ $_iv = substr($_iv, 1) . $in[0];
3082
+ }
3083
+
3084
+ if ($this->continuousBuffer) {
3085
+ $this->decryptIV = $_iv;
3086
+ }
3087
+
3088
  return $_plaintext;
3089
  ';
3090
  break;
3412
  {
3413
  return array_flip(self::MODE_MAP)[$this->mode];
3414
  }
3415
+ }
vendor/phpseclib/phpseclib/phpseclib/Crypt/DH.php CHANGED
@@ -78,7 +78,7 @@ abstract class DH extends AsymmetricKey
78
  * - a string (eg. diffie-hellman-group14-sha1)
79
  *
80
  * @access public
81
- * @return \phpseclib3\Crypt\DH|bool
82
  */
83
  public static function createParameters(...$args)
84
  {
@@ -397,4 +397,4 @@ abstract class DH extends AsymmetricKey
397
  $key = $type::saveParameters($this->prime, $this->base);
398
  return self::load($key, 'PKCS1');
399
  }
400
- }
78
  * - a string (eg. diffie-hellman-group14-sha1)
79
  *
80
  * @access public
81
+ * @return Parameters
82
  */
83
  public static function createParameters(...$args)
84
  {
397
  $key = $type::saveParameters($this->prime, $this->base);
398
  return self::load($key, 'PKCS1');
399
  }
400
+ }
vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA.php CHANGED
@@ -129,7 +129,7 @@ abstract class DSA extends AsymmetricKey
129
  SSH DSA implementations only support keys with an N of 160.
130
  puttygen let's you set the size of L (but not the size of N) and uses 2048 as the
131
  default L value. that's not really compliant with any of the FIPS standards, however,
132
- for the purposes of maintaining compatibility with puttygen, we'll support it
133
  */
134
  //case ($L >= 512 || $L <= 1024) && (($L & 0x3F) == 0) && $N == 160:
135
  // FIPS 186-3 changed this as follows:
@@ -341,4 +341,4 @@ abstract class DSA extends AsymmetricKey
341
  {
342
  return $this->shortFormat;
343
  }
344
- }
129
  SSH DSA implementations only support keys with an N of 160.
130
  puttygen let's you set the size of L (but not the size of N) and uses 2048 as the
131
  default L value. that's not really compliant with any of the FIPS standards, however,
132
+ for the purposes of maintaining compatibility with puttygen, we'll support it
133
  */
134
  //case ($L >= 512 || $L <= 1024) && (($L & 0x3F) == 0) && $N == 160:
135
  // FIPS 186-3 changed this as follows:
341
  {
342
  return $this->shortFormat;
343
  }
344
+ }
vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/BaseCurves/Base.php CHANGED
@@ -233,4 +233,4 @@ abstract class Base
233
  $r = $this->addPoint($p1, $p2);
234
  return $this->convertToAffine($r);
235
  }
236
- }
233
  $r = $this->addPoint($p1, $p2);
234
  return $this->convertToAffine($r);
235
  }
236
+ }
vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/BaseCurves/Binary.php CHANGED
@@ -375,4 +375,4 @@ class Binary extends Base
375
  $p['fresh'] = true;
376
  return $p;
377
  }
378
- }
375
  $p['fresh'] = true;
376
  return $p;
377
  }
378
+ }
vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/XML.php CHANGED
@@ -152,7 +152,9 @@ abstract class XML
152
  }
153
  $node = $nodes->item(0);
154
  $ns_name = $node->lookupPrefix($ns);
155
- $node->removeAttributeNS($ns, $ns_name);
 
 
156
  return $dom->saveXML($node);
157
  }
158
 
152
  }
153
  $node = $nodes->item(0);
154
  $ns_name = $node->lookupPrefix($ns);
155
+ if ($ns_name) {
156
+ $node->removeAttributeNS($ns, $ns_name);
157
+ }
158
  return $dom->saveXML($node);
159
  }
160
 
vendor/phpseclib/phpseclib/phpseclib/Crypt/Random.php CHANGED
@@ -51,7 +51,7 @@ abstract class Random
51
  }
52
 
53
  try {
54
- return \random_bytes($length);
55
  } catch (\Exception $e) {
56
  // random_compat will throw an Exception, which in PHP 5 does not implement Throwable
57
  } catch (\Throwable $e) {
51
  }
52
 
53
  try {
54
+ return random_bytes($length);
55
  } catch (\Exception $e) {
56
  // random_compat will throw an Exception, which in PHP 5 does not implement Throwable
57
  } catch (\Throwable $e) {
vendor/phpseclib/phpseclib/phpseclib/Crypt/Salsa20.php CHANGED
@@ -341,7 +341,9 @@ class Salsa20 extends StreamCipher
341
  } else {
342
  $buffer = &$this->debuffer;
343
  }
344
- if (strlen($buffer['ciphertext'])) {
 
 
345
  $ciphertext = $text ^ Strings::shift($buffer['ciphertext'], strlen($text));
346
  $text = substr($text, strlen($ciphertext));
347
  if (!strlen($text)) {
@@ -478,7 +480,7 @@ class Salsa20 extends StreamCipher
478
  {
479
  $z = $x = unpack('V*', $x);
480
  for ($i = 0; $i < 10; $i++) {
481
- static::doubleRound(...$z);
482
  }
483
 
484
  for ($i = 1; $i <= 16; $i++) {
341
  } else {
342
  $buffer = &$this->debuffer;
343
  }
344
+ if (!strlen($buffer['ciphertext'])) {
345
+ $ciphertext = '';
346
+ } else {
347
  $ciphertext = $text ^ Strings::shift($buffer['ciphertext'], strlen($text));
348
  $text = substr($text, strlen($ciphertext));
349
  if (!strlen($text)) {
480
  {
481
  $z = $x = unpack('V*', $x);
482
  for ($i = 0; $i < 10; $i++) {
483
+ static::doubleRound($z[1], $z[2], $z[3], $z[4], $z[5], $z[6], $z[7], $z[8], $z[9], $z[10], $z[11], $z[12], $z[13], $z[14], $z[15], $z[16]);
484
  }
485
 
486
  for ($i = 1; $i <= 16; $i++) {
vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath.php CHANGED
@@ -737,4 +737,4 @@ class BCMath extends Engine
737
 
738
  return $temp;
739
  }
740
- }
737
 
738
  return $temp;
739
  }
740
+ }
vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/Reductions/Barrett.php CHANGED
@@ -190,4 +190,4 @@ abstract class Barrett extends Base
190
 
191
  return $result;
192
  }
193
- }
190
 
191
  return $result;
192
  }
193
+ }
vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP.php CHANGED
@@ -578,6 +578,11 @@ abstract class PHP extends Engine
578
  $lhs = new static();
579
  $rhs = new static();
580
  }
 
 
 
 
 
581
  $temp_value = &$temp->value;
582
  $rhs_value = &$rhs->value;
583
 
578
  $lhs = new static();
579
  $rhs = new static();
580
  }
581
+ if (static::class != get_class($temp)) {
582
+ $temp = new static();
583
+ $lhs = new static();
584
+ $rhs = new static();
585
+ }
586
  $temp_value = &$temp->value;
587
  $rhs_value = &$rhs->value;
588
 
vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php CHANGED
@@ -116,6 +116,18 @@ class SFTP extends SSH2
116
  */
117
  private $status_codes = [];
118
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  /**
120
  * The Request ID
121
  *
@@ -188,7 +200,7 @@ class SFTP extends SSH2
188
  /**
189
  * Current working directory
190
  *
191
- * @var string
192
  * @see self::realpath()
193
  * @see self::chdir()
194
  * @access private
@@ -242,7 +254,7 @@ class SFTP extends SSH2
242
  *
243
  * @see self::__construct()
244
  * @see self::get()
245
- * @var array
246
  * @access private
247
  */
248
  private $max_sftp_packet;
@@ -341,7 +353,6 @@ class SFTP extends SSH2
341
  * @param string $host
342
  * @param int $port
343
  * @param int $timeout
344
- * @return \phpseclib3\Net\SFTP
345
  * @access public
346
  */
347
  public function __construct($host, $port = 22, $timeout = 10)
@@ -782,7 +793,7 @@ class SFTP extends SSH2
782
  /**
783
  * Returns the current directory name
784
  *
785
- * @return mixed
786
  * @access public
787
  */
788
  public function pwd()
@@ -952,7 +963,7 @@ class SFTP extends SSH2
952
  *
953
  * @param string $dir
954
  * @param bool $recursive
955
- * @return mixed
956
  * @access public
957
  */
958
  public function nlist($dir = '.', $recursive = false)
@@ -966,7 +977,7 @@ class SFTP extends SSH2
966
  * @param string $dir
967
  * @param bool $recursive
968
  * @param string $relativeDir
969
- * @return mixed
970
  * @access private
971
  */
972
  private function nlist_helper($dir, $recursive, $relativeDir)
@@ -1000,7 +1011,7 @@ class SFTP extends SSH2
1000
  *
1001
  * @param string $dir
1002
  * @param bool $recursive
1003
- * @return mixed
1004
  * @access public
1005
  */
1006
  public function rawlist($dir = '.', $recursive = false)
@@ -1044,7 +1055,7 @@ class SFTP extends SSH2
1044
  *
1045
  * @param string $dir
1046
  * @param bool $raw
1047
- * @return mixed
1048
  * @throws \UnexpectedValueException on receipt of unexpected packets
1049
  * @access private
1050
  */
@@ -1227,7 +1238,7 @@ class SFTP extends SSH2
1227
  * $sftp->setListOrder();
1228
  * Don't do any sort of sorting
1229
  *
1230
- * @param string[] ...$args
1231
  * @access public
1232
  */
1233
  public function setListOrder(...$args)
@@ -1349,7 +1360,7 @@ class SFTP extends SSH2
1349
  * Returns an array on success and false otherwise.
1350
  *
1351
  * @param string $filename
1352
- * @return mixed
1353
  * @access public
1354
  */
1355
  public function stat($filename)
@@ -1406,7 +1417,7 @@ class SFTP extends SSH2
1406
  * Returns an array on success and false otherwise.
1407
  *
1408
  * @param string $filename
1409
- * @return mixed
1410
  * @access public
1411
  */
1412
  public function lstat($filename)
@@ -1474,7 +1485,7 @@ class SFTP extends SSH2
1474
  * @param string $filename
1475
  * @param int $type
1476
  * @throws \UnexpectedValueException on receipt of unexpected packets
1477
- * @return mixed
1478
  * @access private
1479
  */
1480
  private function stat_helper($filename, $type)
@@ -1635,7 +1646,7 @@ class SFTP extends SSH2
1635
  public function chgrp($filename, $gid, $recursive = false)
1636
  {
1637
  $attr = $this->version < 4 ?
1638
- pack('N3', NET_SFTP_ATTR_UIDGID, $gid, -1) :
1639
  Strings::packSSH2('Nss', NET_SFTP_ATTR_OWNERGROUP, '', $gid);
1640
 
1641
  return $this->setstat($filename, $attr, $recursive);
@@ -1810,7 +1821,7 @@ class SFTP extends SSH2
1810
  $packet = Strings::packSSH2('s', $path);
1811
  $packet.= $this->version >= 4 ?
1812
  pack('Ca*', NET_SFTP_TYPE_UNKNOWN, $attr) :
1813
- $atr;
1814
  $this->send_sftp_packet(NET_SFTP_SETSTAT, $packet);
1815
 
1816
  $i++;
@@ -2344,7 +2355,7 @@ class SFTP extends SSH2
2344
  * @param int $length
2345
  * @param callable|null $progressCallback
2346
  * @throws \UnexpectedValueException on receipt of unexpected packets
2347
- * @return mixed
2348
  * @access public
2349
  */
2350
  public function get($remote_file, $local_file = false, $offset = 0, $length = -1, $progressCallback = null)
@@ -2846,7 +2857,7 @@ class SFTP extends SSH2
2846
  * Gets file type
2847
  *
2848
  * @param string $path
2849
- * @return mixed
2850
  * @access public
2851
  */
2852
  public function filetype($path)
@@ -3132,7 +3143,7 @@ class SFTP extends SSH2
3132
  // see https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-13#section-7.4
3133
  // represents the number of bytes that the file consumes on the disk. will
3134
  // usually be larger than the 'size' field
3135
- list($attr['allocation-size']) = Strings::unpack('Q', $response);
3136
  break;
3137
  case NET_SFTP_ATTR_TEXT_HINT: // 0x00000800
3138
  // https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-13#section-7.10
@@ -3147,7 +3158,7 @@ class SFTP extends SSH2
3147
  break;
3148
  case NET_SFTP_ATTR_LINK_COUNT: // 0x00002000
3149
  // see https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-13#section-7.12
3150
- list($attr['link-count']) = Strings::unpackSS2('N', $response);
3151
  break;
3152
  case NET_SFTP_ATTR_UNTRANSLATED_NAME:// 0x00004000
3153
  // see https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-13#section-7.13
@@ -3500,7 +3511,7 @@ class SFTP extends SSH2
3500
  /**
3501
  * Get supported SFTP versions
3502
  *
3503
- * @return array
3504
  * @access public
3505
  */
3506
  public function getNegotiatedVersion()
@@ -3531,13 +3542,13 @@ class SFTP extends SSH2
3531
  * Disconnect
3532
  *
3533
  * @param int $reason
3534
- * @return bool
3535
  * @access protected
3536
  */
3537
  protected function disconnect_helper($reason)
3538
  {
3539
  $this->pwd = false;
3540
- parent::disconnect_helper($reason);
3541
  }
3542
 
3543
  /**
116
  */
117
  private $status_codes = [];
118
 
119
+ /** @var array<int, string> */
120
+ private $attributes;
121
+
122
+ /** @var array<int, string> */
123
+ private $open_flags;
124
+
125
+ /** @var array<int, string> */
126
+ private $open_flags5;
127
+
128
+ /** @var array<int, string> */
129
+ private $file_types;
130
+
131
  /**
132
  * The Request ID
133
  *
200
  /**
201
  * Current working directory
202
  *
203
+ * @var string|bool
204
  * @see self::realpath()
205
  * @see self::chdir()
206
  * @access private
254
  *
255
  * @see self::__construct()
256
  * @see self::get()
257
+ * @var int
258
  * @access private
259
  */
260
  private $max_sftp_packet;
353
  * @param string $host
354
  * @param int $port
355
  * @param int $timeout
 
356
  * @access public
357
  */
358
  public function __construct($host, $port = 22, $timeout = 10)
793
  /**
794
  * Returns the current directory name
795
  *
796
+ * @return string|bool
797
  * @access public
798
  */
799
  public function pwd()
963
  *
964
  * @param string $dir
965
  * @param bool $recursive
966
+ * @return array|false
967
  * @access public
968
  */
969
  public function nlist($dir = '.', $recursive = false)
977
  * @param string $dir
978
  * @param bool $recursive
979
  * @param string $relativeDir
980
+ * @return array|false
981
  * @access private
982
  */
983
  private function nlist_helper($dir, $recursive, $relativeDir)
1011
  *
1012
  * @param string $dir
1013
  * @param bool $recursive
1014
+ * @return array|false
1015
  * @access public
1016
  */
1017
  public function rawlist($dir = '.', $recursive = false)
1055
  *
1056
  * @param string $dir
1057
  * @param bool $raw
1058
+ * @return array|false
1059
  * @throws \UnexpectedValueException on receipt of unexpected packets
1060
  * @access private
1061
  */
1238
  * $sftp->setListOrder();
1239
  * Don't do any sort of sorting
1240
  *
1241
+ * @param string ...$args
1242
  * @access public
1243
  */
1244
  public function setListOrder(...$args)
1360
  * Returns an array on success and false otherwise.
1361
  *
1362
  * @param string $filename
1363
+ * @return array|false
1364
  * @access public
1365
  */
1366
  public function stat($filename)
1417
  * Returns an array on success and false otherwise.
1418
  *
1419
  * @param string $filename
1420
+ * @return array|false
1421
  * @access public
1422
  */
1423
  public function lstat($filename)
1485
  * @param string $filename
1486
  * @param int $type
1487
  * @throws \UnexpectedValueException on receipt of unexpected packets
1488
+ * @return array|false
1489
  * @access private
1490
  */
1491
  private function stat_helper($filename, $type)
1646
  public function chgrp($filename, $gid, $recursive = false)
1647
  {
1648
  $attr = $this->version < 4 ?
1649
+ pack('N3', NET_SFTP_ATTR_UIDGID, -1, $gid) :
1650
  Strings::packSSH2('Nss', NET_SFTP_ATTR_OWNERGROUP, '', $gid);
1651
 
1652
  return $this->setstat($filename, $attr, $recursive);
1821
  $packet = Strings::packSSH2('s', $path);
1822
  $packet.= $this->version >= 4 ?
1823
  pack('Ca*', NET_SFTP_TYPE_UNKNOWN, $attr) :
1824
+ $attr;
1825
  $this->send_sftp_packet(NET_SFTP_SETSTAT, $packet);
1826
 
1827
  $i++;
2355
  * @param int $length
2356
  * @param callable|null $progressCallback
2357
  * @throws \UnexpectedValueException on receipt of unexpected packets
2358
+ * @return string|false
2359
  * @access public
2360
  */
2361
  public function get($remote_file, $local_file = false, $offset = 0, $length = -1, $progressCallback = null)
2857
  * Gets file type
2858