HEX
Server: Apache/2.4.65 (Debian)
System: Linux 88f31f35b0b8 6.1.0-38-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.147-1 (2025-08-02) x86_64
User: www-data (33)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/wp-rss-aggregator/v4/includes/admin-guide-dl.php
<?php

if (!defined('ABSPATH')) {
    die;
}

const WPRSS_DID_GUIDE_SIGN_UP_OPTION = 'wprss_did_guide_sign_up';
const WPRSS_DL_GUIDE_NONCE = 'wprss_dl_guide';

/* Show the notice for the free guide to new users. */
add_action('admin_notices', function () {
    $page = isset($_GET['page']) ? $_GET['page'] : '';

    if (!wprss_is_wprss_page() || $page === 'wpra-intro') {
        return;
    }

    $didSignUp = filter_var(get_option(WPRSS_DID_GUIDE_SIGN_UP_OPTION, '0'), FILTER_VALIDATE_BOOLEAN);
    if ($didSignUp || count(wprss_get_addons()) > 0) {
        return;
    }

    $user = wp_get_current_user();
    $userName = $user instanceof WP_User ? $user->display_name : '';
    $userEmail = $user instanceof WP_User ? $user->user_email : '';

    ?>
    <div id="wpra-dl-guide-notice" class="wpra-dl-guide-notice notice">
        <div class="wpra-dl-guide-left">
            <img src="<?= esc_attr(WPRSS_IMG . 'wpra-icon-transparent-new.png') ?>" alt="WP RSS Aggregator logo" />
        </div>
        <div class="wpra-dl-guide-content">
            <div id="wpra-dl-guide-success">
                <h3>Thank you for subscribing!</h3>
                <p>
                    Your FREE expert guide to content aggregation and curation is on its way to your inbox.
                </p>
                <p>
                    Get ready to boost your website's content game and make a lasting impact!
                </p>
                <a href="javascript:void(0)" id="wpra-dl-guide-dismiss-link">Dismiss notice</a>
            </div>

            <div class="wpra-dl-guide-content-col wpra-dl-guide-content-col-left">
                <h3>Boost Your Content Game: Download Your FREE Starter Guide Now</h3>
                <p>
                    Join our newsletter and get your FREE guide for mastering content aggregation and curation on
                    your website.
                </p>
            </div>

            <div class="wpra-dl-guide-content-col wpra-dl-guide-content-col-right">
                <input id="wpra_dl_guide_nonce" type="hidden" value="<?= wp_create_nonce(WPRSS_DL_GUIDE_NONCE) ?>" />
                <label for="wpra-dl-guide-name-field">
                    By unlocking this guide, you’re opting in to receiving occasional emails. Opt out any time.
                </label>
                <div class="wpra-dl-guide-form">
                    <div class="wpra-dl-guide-fields">
                        <input
                            id="wpra-dl-guide-name-field"
                            type="text"
                            autocomplete="name"
                            placeholder="First name"
                            name="wpra_guide_name"
                            value="<?= esc_attr($userName) ?>"
                        />
                        <input
                            id="wpra-dl-guide-email-field"
                            type="email"
                            autocomplete="email"
                            placeholder="Email address"
                            name="wpra_guide_email"
                            value="<?= esc_attr($userEmail) ?>"
                        />
                    </div>
                    <button id="wpra-dl-guide-btn">Download the free guide</button>
                </div>
                <div id="wpra-dl-guide-error"></div>
            </div>
        </div>
        <div class="wpra-dl-guide-right">
            <button id="wpra-dl-guide-close-btn">
                <i class="dashicons dashicons-no-alt"></i>
            </button>
        </div>
    </div>
    <?php
});

// Add admin ajax handler for when the user signs up with their email address
add_action('wp_ajax_wpra_dl_guide', function () {
    $nonce = isset($_POST['nonce']) ? $_POST['nonce'] : '';
    if (!wp_verify_nonce($nonce, WPRSS_DL_GUIDE_NONCE)) {
        wp_send_json_error('Invalid nonce. Try refreshing the page.', 401);
        die;
    }

    $name = trim(isset($_POST['name']) ? $_POST['name'] : '');
    $email = trim(isset($_POST['email']) ? $_POST['email'] : '');
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);

    if (!$name) {
        wp_send_json_error('Please enter your first name.', 400);
        die;
    }

    if (!$email) {
        wp_send_json_error('Invalid email address.', 400);
        die;
    }

    wprss_sub_to_newsletter($name, $email);
    update_option(WPRSS_DID_GUIDE_SIGN_UP_OPTION, '1');

    wp_send_json_success([]);
    die;
});

// Add admin ajax handler for when the user dismisses the notice
add_action('wp_ajax_wpra_dismiss_guide', function () {
    $nonce = isset($_POST['nonce']) ? $_POST['nonce'] : '';
    if (!wp_verify_nonce($nonce, WPRSS_DL_GUIDE_NONCE)) {
        wp_send_json_error('Invalid nonce. Try refreshing the page.', 401);
        die;
    }

    update_option(WPRSS_DID_GUIDE_SIGN_UP_OPTION, '1');

    wp_send_json_success([]);
    die;
});