Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/super-progressive-web-apps/admin/admin-ui-render-settings.php
+++ b/super-progressive-web-apps/admin/admin-ui-render-settings.php
@@ -1073,7 +1073,7 @@
<a id="spwa-default" class="spwa-tablinks" data-href="no" href="#general-settings" onclick="openCity(event, 'settings')"><?php echo esc_html__('Settings', 'super-progressive-web-apps'); ?></a>
<a class="spwa-tablinks" id="spwa-feature" href="<?php echo esc_url($addon_page); ?>" data-href="yes"><?php echo esc_html__('Features (Addons)', 'super-progressive-web-apps'); ?></a>
<a class="spwa-tablinks" id="spwa-advance" href="#advance-settings" onclick="openCity(event, 'advance')" data-href="no"><?php echo esc_html__('Advanced', 'super-progressive-web-apps'); ?></a>
- <a class="spwa-tablinks" id="spwa-support" href="#support-settings" onclick="openCity(event, 'support')" data-href="no"><?php echo esc_html__('Help & Support', 'super-progressive-web-apps'); ?></a>
+ <a class="spwa-tablinks" id="spwa-support" href="#support-settings" onclick="openCity(event, 'support')" data-href="no"><?php echo esc_html__('Help & Support', 'super-progressive-web-apps'); ?></a>
<?php if( defined('SUPERPWA_PRO_VERSION') ){ ?>
<a class="spwa-tablinks" id="spwa-license" href="#license-settings" onclick="openCity(event, 'superpwa_pro_license')" data-href="no"><?php echo esc_html__('License', 'super-progressive-web-apps'); ?> <?php echo (superpwa_license_expire_warning()? "<span class='superpwa_pro_icon dashicons dashicons-warning superpwa_pro_alert' style='color: #ffb229;left: 3px;position: relative;'></span>":""); ?></a>
<?php } ?>
@@ -1111,11 +1111,43 @@
</div>
<div id="support" class="spwa-tabcontent">
- <?php
- //1)Docs 2)Find new or whats new in superpwa(Blog Post Link)
- //3)Technical issue (supportLink) 4)Report a Bug(Support Link)
-
- ?>
+ <?php echo '<div>
+ <h3>'.esc_html__('Ask for Technical Support', 'super-progressive-web-apps') .'</h3>
+ <p>'.esc_html__('We are always available to help you with anything', 'super-progressive-web-apps').'</p>
+ <table class="form-table" role="presentation"><tbody>
+ <tr><th scope="row">
+ <label for="spwa_query_email">'.esc_html__('Email', 'super-progressive-web-apps').'</label></th><td>
+ <input type="text" id="spwa_query_email" class="regular-text" name="spwa_query_email" placeholder="youremail@example.com" >
+ </td>
+ </tr>
+ <tr><th scope="row">
+ <label for="spwa_help_query_customer">'.esc_html__('Are you existing Premium Customer?', 'super-progressive-web-apps').'</label></th><td>
+ <select class="regular-text" id="spwa_help_query_customer" name="spwa_help_query_customer">
+ <option value="">Select</option>
+ <option value="Yes">'.esc_html__('Yes', 'super-progressive-web-apps').'</option>
+ <option value="No">'.esc_html__('No', 'super-progressive-web-apps').'</option>
+ </select></td>
+ </tr>
+ <tr><th scope="row">
+ <label for="spwa_help_query_message">'.esc_html__('Message', 'super-progressive-web-apps').'</label>
+ </th><td>
+ <textarea rows="5" id="spwa_help_query_message" name="spwa_help_query_message" class="regular-text"></textarea>
+ <br>
+ <div class="spwa_help-query-validation notice notice-warning inline" style="display:none;" role="alert"><p></p></div>
+ <div class="spwa_help-query-success notice notice-success inline" style="display:none;" role="status"><p class="spwa_help-query-success-text">'.esc_html__( 'Message sent successfully. We will get back to you shortly.', 'super-progressive-web-apps' ).'</p></div>
+ <div class="spwa_help-query-error notice notice-error inline" style="display:none;" role="alert"><p class="spwa_help-query-error-text">'.esc_html__( 'Message not sent. Please check your network connection and try again.', 'super-progressive-web-apps' ).'</p></div>
+ </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td> <button type="button" class="button spwa_help-send-query spwa-submit-button">'.esc_html__('Send Message', 'super-progressive-web-apps').'</button></td>
+ <tr>
+ </tbody>
+ </table>
+
+ </div><br>
+ <hr class="spwa-support-form-separator" />';
+ ?>
<h1><?php esc_html_e(' 1) Documentation', 'super-progressive-web-apps'); ?></h1>
<p class="support-cont"><?php esc_html_e('All the documents regarding SuperPWA Setup, it's settings detail and also about add-ons setup all you can go through this ', 'super-progressive-web-apps'); ?><b><a href="https://superpwa.com/docs/" target="_blank"><?php esc_html_e('Docs link', 'super-progressive-web-apps'); ?></a></b></p>
@@ -1128,7 +1160,6 @@
<h1><?php esc_html_e(' 4) Report a Bug', 'super-progressive-web-apps'); ?></h1>
<p class="support-cont"><?php esc_html_e('If you found any bug or having issues with any third party plugins you can contact us ', 'super-progressive-web-apps'); ?> <b><a href="https://superpwa.com/contact/" target="_blank"><?php esc_html_e('Bug Report', 'super-progressive-web-apps'); ?></a></b></p>
</div>
-
<div id="superpwa_pro_license" class="spwa-tabcontent">
<?php
@@ -1148,6 +1179,8 @@
document.getElementById("spwa-advance").click();
}else if(url.indexOf('#support-settings') > -1){
document.getElementById("spwa-support").click();
+ }else if(url.indexOf('#help-settings') > -1){
+ document.getElementById("spwa-help").click();
}else if(url.indexOf('#license-settings') > -1){
document.getElementById("spwa-license").click();
}else{
--- a/super-progressive-web-apps/admin/basic-setup.php
+++ b/super-progressive-web-apps/admin/basic-setup.php
@@ -498,6 +498,78 @@
}
add_action( 'plugins_loaded', 'superpwa_setup_hooks' );
+function superpwa_send_query_message() {
+
+ if ( ! current_user_can( superpwa_current_user_can() ) ) {
+ wp_send_json_error(
+ array(
+ 'message' => esc_html__( 'You do not have permission to send this message.', 'super-progressive-web-apps' ),
+ )
+ );
+ }
+
+ if ( ! isset( $_POST['superpwa_security_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['superpwa_security_nonce'] ) ), 'superpwa_ajax_check_nonce' ) ) {
+ wp_send_json_error(
+ array(
+ 'message' => esc_html__( 'Security check failed. Please reload the page and try again.', 'super-progressive-web-apps' ),
+ )
+ );
+ }
+
+ $message = isset( $_POST['message'] ) ? sanitize_textarea_field( wp_unslash( $_POST['message'] ) ) : '';
+ $customer_type = isset( $_POST['customer_type'] ) ? sanitize_text_field( wp_unslash( $_POST['customer_type'] ) ) : '';
+ $query_email = isset( $_POST['query_email'] ) ? sanitize_email( wp_unslash( $_POST['query_email'] ) ) : '';
+
+ if ( '' === trim( $message ) || '' === $customer_type ) {
+ wp_send_json_error(
+ array(
+ 'message' => esc_html__( 'Please fill in all required fields.', 'super-progressive-web-apps' ),
+ )
+ );
+ }
+
+ if ( ! is_email( $query_email ) ) {
+ wp_send_json_error(
+ array(
+ 'message' => esc_html__( 'Please enter a valid email address.', 'super-progressive-web-apps' ),
+ )
+ );
+ }
+
+ $user = wp_get_current_user();
+ $user_email = ( $user && $user->ID ) ? $user->user_email : $query_email;
+
+ $message .= '<table>
+ <tr><td>' . esc_html__( 'Contact email : ', 'super-progressive-web-apps' ) . '</td><td>' . esc_html( $query_email ) . '</td></tr>
+ <tr><td>' . esc_html__( 'Are you existing Premium Customer?', 'super-progressive-web-apps' ) . '</td><td>' . esc_html( $customer_type ) . '</td></tr>
+ <tr><td>Plugin</td><td>' . esc_html__( 'Superpwa for wp', 'super-progressive-web-apps' ) . ' </td></tr>
+ <tr><td>Version</td><td>' . esc_html( SUPERPWA_VERSION ) . '</td></tr>
+ </table>';
+
+ $to = 'team@magazine3.in';
+ $subject = 'Superpwa Customer Query';
+ $headers = 'From: ' . esc_attr( $user_email ) . "rn" .
+ 'Reply-To: ' . esc_attr( $query_email ) . "rn";
+
+ $sent = wp_mail( $to, $subject, wp_strip_all_tags( $message ), $headers );
+
+ if ( $sent ) {
+ wp_send_json_success(
+ array(
+ 'message' => esc_html__( 'Message sent successfully. We will get back to you shortly.', 'super-progressive-web-apps' ),
+ )
+ );
+ }
+
+ wp_send_json_error(
+ array(
+ 'message' => esc_html__( 'Message could not be sent. Please try again later or check your site email configuration.', 'super-progressive-web-apps' ),
+ )
+ );
+}
+
+add_action('wp_ajax_superpwa_send_query_message', 'superpwa_send_query_message');
+
function superpwa_get_select2_data(){
--- a/super-progressive-web-apps/public/sw.php
+++ b/super-progressive-web-apps/public/sw.php
@@ -383,7 +383,7 @@
'offline_form_addon_active' =>$offline_form_addon_active,
'ajax_url' =>$ajax_url,
'offline_message'=> !isset($settings['offline_message']) ? 0 : $settings['offline_message'],
- 'offline_message_txt'=> !isset($settings['offline_message_txt']) ? esc_html__('You are currently offline.','super-progressive-web-apps') : $settings['offline_message_txt'],
+ 'offline_message_txt'=> !isset($settings['offline_message_txt']) ? esc_html__('You are currently offline.','super-progressive-web-apps') : esc_html($settings['offline_message_txt']),
'online_message_txt'=> esc_html__('You're back online .','super-progressive-web-apps') . ' <a href="javascript:location.reload()">'.esc_html__('refresh','super-progressive-web-apps').'</a>',
'manifest_name' => superpwa_get_manifest_filename(),
'script_debug' => defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG,
@@ -572,21 +572,30 @@
* @since 2.1.2
*/
-add_filter('seraph_accel_jscss_addtype', function($exclude, $script = null) {
-
- $src = '';
- if ( is_object( $script ) && method_exists( $script, 'getAttribute' ) ) {
- $src = (string) $script->getAttribute( 'src' );
- } elseif ( is_string( $script ) ) {
- $src = $script;
- }
+add_filter('seraph_accel_jscss_addtype', function($exclude) {
- if ( $src !== '' && strpos( $src, 'super-progressive-web-apps/public/js/register-sw.js' ) !== false ) {
- return true;
- }
+ $script = null; // fallback
+
+ // Optional: safely try to get second arg
+ $args = func_get_args();
+ if (isset($args[1])) {
+ $script = $args[1];
+ }
+
+ $src = '';
+ if ( is_object( $script ) && method_exists( $script, 'getAttribute' ) ) {
+ $src = (string) $script->getAttribute( 'src' );
+ } elseif ( is_string( $script ) ) {
+ $src = $script;
+ }
+
+ if ( $src !== '' && strpos( $src, 'super-progressive-web-apps/public/js/register-sw.js' ) !== false ) {
+ return true;
+ }
+
+ return $exclude;
- return $exclude;
-}, 10, 2);
+}, 10, 1);
/**
* Register service worker in Fluent Community
@@ -620,7 +629,7 @@
'offline_form_addon_active' => false,
'ajax_url' => admin_url('admin-ajax.php'),
'offline_message' => !isset( $settings['offline_message'] ) ? 0 : $settings['offline_message'],
- 'offline_message_txt' => !isset( $settings['offline_message_txt'] ) ? esc_html__('You are currently offline.', 'super-progressive-web-apps') : $settings['offline_message_txt'],
+ 'offline_message_txt' => !isset( $settings['offline_message_txt'] ) ? esc_html__('You are currently offline.', 'super-progressive-web-apps') : esc_html($settings['offline_message_txt']),
'online_message_txt'=> esc_html__('You're back online .','super-progressive-web-apps') . ' <a href="javascript:location.reload()">'.esc_html__('refresh','super-progressive-web-apps').'</a>',
'script_debug' => defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG,
);
--- a/super-progressive-web-apps/superpwa.php
+++ b/super-progressive-web-apps/superpwa.php
@@ -6,7 +6,7 @@
* Author: SuperPWA
* Author URI: https://profiles.wordpress.org/superpwa/
* Contributors: SuperPWA
- * Version: 2.2.43
+ * Version: 2.2.44
* Text Domain: super-progressive-web-apps
* Domain Path: /languages
* License: GPL2
@@ -43,7 +43,7 @@
* @since 1.0
*/
if ( ! defined( 'SUPERPWA_VERSION' ) ) {
- define( 'SUPERPWA_VERSION' , '2.2.43' );
+ define( 'SUPERPWA_VERSION' , '2.2.44' );
}
/**