Skip to content

Commit d4e2d5a

Browse files
committed
4.9.3 Release
1 parent 0a772d5 commit d4e2d5a

File tree

67 files changed

+688
-452
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+688
-452
lines changed

all_in_one_seo_pack.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* Description: SEO for WordPress. Features like XML Sitemaps, SEO for custom post types, SEO for blogs, business sites, ecommerce sites, and much more. More than 100 million downloads since 2007.
66
* Author: All in One SEO Team
77
* Author URI: https://aioseo.com/
8-
* Version: 4.9.2
8+
* Version: 4.9.3
99
* Text Domain: all-in-one-seo-pack
1010
* Domain Path: /languages
1111
* License: GPL-3.0+

app/Common/Admin/Admin.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -988,7 +988,7 @@ public function enqueueAssets() {
988988
*/
989989
public function addFooterText() {
990990
$linkText = esc_html__( 'Give us a 5-star rating!', 'all-in-one-seo-pack' );
991-
$href = 'https://wordpress.org/support/plugin/all-in-one-seo-pack/reviews/?filter=5#new-post';
991+
$href = 'https://aioseo.com/aioseo-wordpress-rating';
992992

993993
$link1 = sprintf(
994994
'<a href="%1$s" target="_blank" title="%2$s">&#9733;&#9733;&#9733;&#9733;&#9733;</a>',

app/Common/Admin/Notices/Review.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public function showNotice() {
126126
<div class="step-3" style="display:none;">
127127
<p><?php echo esc_html( $string7 ); ?></p>
128128
<p>
129-
<a href="https://wordpress.org/support/plugin/all-in-one-seo-pack/reviews/?filter=5#new-post" class="aioseo-dismiss-review-notice" target="_blank" rel="noopener noreferrer">
129+
<a href="https://aioseo.com/aioseo-wordpress-rating" class="aioseo-dismiss-review-notice" target="_blank" rel="noopener noreferrer">
130130
<?php echo esc_html( $string9 ); ?>
131131
</a>&nbsp;&bull;&nbsp;
132132
<a href="#" class="aioseo-dismiss-review-notice-delay" target="_blank" rel="noopener noreferrer">
@@ -165,7 +165,7 @@ public function showNotice2() {
165165
<div class="step-3">
166166
<p><?php echo $string1; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></p>
167167
<p>
168-
<a href="https://wordpress.org/support/plugin/all-in-one-seo-pack/reviews/?filter=5#new-post" class="aioseo-dismiss-review-notice" target="_blank" rel="noopener noreferrer">
168+
<a href="https://aioseo.com/aioseo-wordpress-rating" class="aioseo-dismiss-review-notice" target="_blank" rel="noopener noreferrer">
169169
<?php echo esc_html( $string9 ); ?>
170170
</a>&nbsp;&bull;&nbsp;
171171
<a href="#" class="aioseo-dismiss-review-notice-delay" target="_blank" rel="noopener noreferrer">

app/Common/Admin/Pointers.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
exit;
77
}
88

9-
use AIOSEO\Plugin\Common\Models;
10-
119
/**
1210
* Handles the pointers for the admin.
1311
*
@@ -50,7 +48,7 @@ public function maybeDismissPointer() {
5048
if (
5149
! isset( $_GET['aioseo-dismiss-pointer'] ) ||
5250
! isset( $_GET['aioseo-dismiss-pointer-nonce'] ) ||
53-
! wp_verify_nonce( $_GET['aioseo-dismiss-pointer-nonce'], 'aioseo-dismiss-pointer' )
51+
! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['aioseo-dismiss-pointer-nonce'] ) ), 'aioseo-dismiss-pointer' )
5452
) {
5553
return;
5654
}
@@ -85,14 +83,14 @@ public function registerPointer( $id, $pageSlug, $args ) {
8583
const $menuItem = $( '#toplevel_page_aioseo' );
8684
const $pointer = $menuItem.pointer( {
8785
content :
88-
"<h3><?php esc_html_e( $args['title'], 'all-in-one-seo-pack' ); ?><\/h3>" +
89-
"<h4><?php esc_html_e( $args['subtitle'], 'all-in-one-seo-pack' ); ?><\/h4>" +
90-
"<p><?php esc_html_e( $args['content'], 'all-in-one-seo-pack' ); ?><\/p>" +
86+
"<h3><?php esc_html( $args['title'], 'all-in-one-seo-pack' ); ?><\/h3>" +
87+
"<h4><?php esc_html( $args['subtitle'], 'all-in-one-seo-pack' ); ?><\/h4>" +
88+
"<p><?php esc_html( $args['content'], 'all-in-one-seo-pack' ); ?><\/p>" +
9189
"<?php
9290
echo sprintf(
9391
'<p><a class=\"button button-primary\" href=\"%s\">%s</a></p>',
9492
esc_attr( esc_url( $args['url'] ) ),
95-
esc_html__( $args['button'], 'all-in-one-seo-pack' )
93+
esc_html( $args['button'], 'all-in-one-seo-pack' )
9694
);
9795
?>",
9896
position : {
@@ -134,6 +132,7 @@ public function registerPointer( $id, $pageSlug, $args ) {
134132
*/
135133
public function registerKwRankTracker() {
136134
if (
135+
version_compare( aioseo()->version, '4.9.0', '>=' ) || // We only want to show this pointer up to 4.9.0.
137136
! current_user_can( 'aioseo_search_statistics_settings' ) ||
138137
(
139138
is_object( aioseo()->license ) &&

app/Common/Admin/PostSettings.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ public function saveSettingsMetabox( $postId ) {
237237
return;
238238
}
239239

240-
$currentPost = json_decode( wp_unslash( ( $_POST['aioseo-post-settings'] ) ), true );
240+
$currentPost = json_decode( wp_unslash( ( $_POST['aioseo-post-settings'] ) ), true ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
241241
$currentPost = aioseo()->helpers->sanitize( $currentPost );
242242

243243
// If there is no data, there likely was an error, e.g. if the hidden field wasn't populated on load and the user saved the post without making changes in the metabox.

app/Common/Ai/Assistant.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ public function getVueDataEdit( $objectId = null ) {
2525

2626
return [
2727
'extend' => [
28+
'block' => aioseo()->standalone->standaloneBlocks['aiAssistant']->isEnabled(),
2829
'blockEditorInserterButton' => apply_filters( 'aioseo_ai_assistant_extend_block_editor_inserter_button', true, $objectId ),
30+
'paragraphPlaceholder' => apply_filters( 'aioseo_ai_assistant_extend_paragraph_placeholder', true, $objectId )
2931
]
3032
];
3133
}

app/Common/Ai/Image.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public function createAttachment( $base64Data, $prompt, $format, $postId, $metad
8181
$style = trim( $metadata['style'] ?? '' );
8282
$aspectRatio = trim( $metadata['aspectRatio'] ?? '' );
8383

84-
$filenameContext = substr( $prompt, 0, 25 ) . '-' . $quality . '-' . $style . '-' . $aspectRatio . '-' . date( 'Ymd-His' );
84+
$filenameContext = substr( $prompt, 0, 25 ) . '-' . $quality . '-' . $style . '-' . $aspectRatio . '-' . date_i18n( 'Ymd-His' );
8585
$filename = 'aioseo-ai-' . aioseo()->helpers->toLowerCase( sanitize_file_name( $filenameContext ) ) . '.' . $format;
8686

8787
$upload = wp_upload_bits( $filename, null, $imageData );

app/Common/Api/Ai.php

Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@ public static function storeAccessToken( $request ) {
4040

4141
return new \WP_REST_Response( [
4242
'success' => true,
43-
'aiOptions' => aioseo()->internalOptions->internal->ai->all()
43+
'aiOptions' => [
44+
'isTrialAccessToken' => aioseo()->internalOptions->internal->ai->isTrialAccessToken,
45+
'isManuallyConnected' => aioseo()->internalOptions->internal->ai->isManuallyConnected,
46+
'credits' => aioseo()->internalOptions->internal->ai->credits->all(),
47+
'costPerFeature' => aioseo()->internalOptions->internal->ai->costPerFeature
48+
]
4449
], 200 );
4550
}
4651

@@ -60,7 +65,12 @@ public static function getCredits( $request ) {
6065

6166
return new \WP_REST_Response( [
6267
'success' => true,
63-
'aiOptions' => aioseo()->internalOptions->internal->ai->all()
68+
'aiOptions' => [
69+
'isTrialAccessToken' => aioseo()->internalOptions->internal->ai->isTrialAccessToken,
70+
'isManuallyConnected' => aioseo()->internalOptions->internal->ai->isManuallyConnected,
71+
'credits' => aioseo()->internalOptions->internal->ai->credits->all(),
72+
'costPerFeature' => aioseo()->internalOptions->internal->ai->costPerFeature
73+
]
6474
], 200 );
6575
}
6676

@@ -153,7 +163,12 @@ public static function generateTitles( $request ) {
153163
return new \WP_REST_Response( [
154164
'success' => true,
155165
'titles' => $titles,
156-
'aiOptions' => aioseo()->internalOptions->internal->ai->all()
166+
'aiOptions' => [
167+
'isTrialAccessToken' => aioseo()->internalOptions->internal->ai->isTrialAccessToken,
168+
'isManuallyConnected' => aioseo()->internalOptions->internal->ai->isManuallyConnected,
169+
'credits' => aioseo()->internalOptions->internal->ai->credits->all(),
170+
'costPerFeature' => aioseo()->internalOptions->internal->ai->costPerFeature
171+
]
157172
], 200 );
158173
}
159174

@@ -246,7 +261,12 @@ public static function generateDescriptions( $request ) {
246261
return new \WP_REST_Response( [
247262
'success' => true,
248263
'descriptions' => $descriptions,
249-
'aiOptions' => aioseo()->internalOptions->internal->ai->all()
264+
'aiOptions' => [
265+
'isTrialAccessToken' => aioseo()->internalOptions->internal->ai->isTrialAccessToken,
266+
'isManuallyConnected' => aioseo()->internalOptions->internal->ai->isManuallyConnected,
267+
'credits' => aioseo()->internalOptions->internal->ai->credits->all(),
268+
'costPerFeature' => aioseo()->internalOptions->internal->ai->costPerFeature
269+
]
250270
], 200 );
251271
}
252272

@@ -347,7 +367,12 @@ public static function generateSocialPosts( $request ) {
347367
return new \WP_REST_Response( [
348368
'success' => true,
349369
'snippets' => $aioseoPost->ai->socialPosts, // Return all the social posts, not just the new ones.
350-
'aiOptions' => aioseo()->internalOptions->internal->ai->all()
370+
'aiOptions' => [
371+
'isTrialAccessToken' => aioseo()->internalOptions->internal->ai->isTrialAccessToken,
372+
'isManuallyConnected' => aioseo()->internalOptions->internal->ai->isManuallyConnected,
373+
'credits' => aioseo()->internalOptions->internal->ai->credits->all(),
374+
'costPerFeature' => aioseo()->internalOptions->internal->ai->costPerFeature
375+
]
351376
], 200 );
352377
}
353378

@@ -667,7 +692,12 @@ public static function generateFaqs( $request ) {
667692
return new \WP_REST_Response( [
668693
'success' => true,
669694
'faqs' => $faqs,
670-
'aiOptions' => aioseo()->internalOptions->internal->ai->all()
695+
'aiOptions' => [
696+
'isTrialAccessToken' => aioseo()->internalOptions->internal->ai->isTrialAccessToken,
697+
'isManuallyConnected' => aioseo()->internalOptions->internal->ai->isManuallyConnected,
698+
'credits' => aioseo()->internalOptions->internal->ai->credits->all(),
699+
'costPerFeature' => aioseo()->internalOptions->internal->ai->costPerFeature
700+
]
671701
], 200 );
672702
}
673703

@@ -760,7 +790,12 @@ public static function generateKeyPoints( $request ) {
760790
return new \WP_REST_Response( [
761791
'success' => true,
762792
'keyPoints' => $keyPoints,
763-
'aiOptions' => aioseo()->internalOptions->internal->ai->all()
793+
'aiOptions' => [
794+
'isTrialAccessToken' => aioseo()->internalOptions->internal->ai->isTrialAccessToken,
795+
'isManuallyConnected' => aioseo()->internalOptions->internal->ai->isManuallyConnected,
796+
'credits' => aioseo()->internalOptions->internal->ai->credits->all(),
797+
'costPerFeature' => aioseo()->internalOptions->internal->ai->costPerFeature
798+
]
764799
], 200 );
765800
}
766801

@@ -839,7 +874,12 @@ public static function deactivate( $request ) {
839874

840875
return new \WP_REST_Response( [
841876
'success' => true,
842-
'aiData' => $internalOptions->internal->ai->all()
877+
'aiData' => [
878+
'isTrialAccessToken' => $internalOptions->internal->ai->isTrialAccessToken,
879+
'isManuallyConnected' => $internalOptions->internal->ai->isManuallyConnected,
880+
'credits' => $internalOptions->internal->ai->credits->all(),
881+
'costPerFeature' => $internalOptions->internal->ai->costPerFeature
882+
]
843883
], 200 );
844884
}
845885
}

app/Common/Api/Network.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,21 @@ public static function saveNetworkRobots( $request ) {
2828
$enabled = isset( $body['enabled'] ) ? boolval( $body['enabled'] ) : null;
2929
$searchAppearance = ! empty( $body['searchAppearance'] ) ? $body['searchAppearance'] : [];
3030

31+
// Ensure the user has access to the target site.
32+
if (
33+
$siteId &&
34+
is_multisite() &&
35+
(
36+
! is_user_member_of_blog( get_current_user_id(), $siteId ) &&
37+
! is_super_admin()
38+
)
39+
) {
40+
return new \WP_REST_Response( [
41+
'success' => false,
42+
'message' => 'You do not have permission to access this site.'
43+
], 403 );
44+
}
45+
3146
aioseo()->helpers->switchToBlog( $siteId );
3247

3348
$options = $isNetwork ? aioseo()->networkOptions : aioseo()->options;

app/Common/Api/PostsTerms.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,8 +354,8 @@ public static function updatePostDetailsColumn( $request ) {
354354
update_post_meta( $postId, '_wp_attachment_image_alt', sanitize_text_field( $body['imageAltTag'] ) );
355355
}
356356

357-
$aioseoPost->title = $body['title'];
358-
$aioseoPost->description = $body['description'];
357+
$aioseoPost->title = ! empty( $body['title'] ) ? sanitize_text_field( $body['title'] ) : null;
358+
$aioseoPost->description = ! empty( $body['description'] ) ? sanitize_textarea_field( $body['description'] ) : null;
359359
$aioseoPost->updated = gmdate( 'Y-m-d H:i:s' );
360360
$aioseoPost->save();
361361

0 commit comments

Comments
 (0)