HEX
Server: Apache
System: Linux p3plzcpnl506847.prod.phx3.secureserver.net 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: slfopp7cb1df (5698090)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/slfopp7cb1df/www/home/wp-content/plugins/mailoptin/src/core/src/Admin/AdminNotices.php
<?php

namespace MailOptin\Core\Admin;

use MailOptin\Core\Repositories\EmailCampaignRepository;
use PAnD as PAnD;

class AdminNotices
{
    public function __construct()
    {
        add_action('admin_init', function () {
            if (\MailOptin\Core\is_mailoptin_admin_page()) {
                remove_all_actions('admin_notices');
            }

            do_action('mailoptin_admin_notices');

            add_action('admin_notices', array($this, 'optin_campaigns_cache_cleared'));
            add_action('admin_notices', array($this, 'template_class_not_found'));
            add_action('admin_notices', array($this, 'optin_class_not_found'));
            add_action('admin_notices', array($this, 'failed_campaign_retried'));
            add_action('admin_notices', array($this, 'email_campaign_count_limit_exceeded'));
            add_action('admin_notices', array($this, 'optin_branding_added_by_default'));
            add_action('admin_notices', array($this, 'review_plugin_notice'));
            add_action('admin_notices', array($this, 'show_woocommerce_features'));
            add_action('admin_notices', array($this, 'show_wpforms_features'));
            add_action('admin_notices', array($this, 'show_cf7_features'));
            add_action('admin_notices', array($this, 'show_forminator_features'));
            add_action('admin_notices', array($this, 'show_ninja_forms_features'));
            add_action('admin_notices', array($this, 'show_gravity_forms_features'));

            add_filter('removable_query_args', array($this, 'removable_query_args'));
        });

        add_action('admin_init', array('PAnD', 'init'));
        add_action('admin_init', array($this, 'dismiss_leave_review_notice_forever'));
    }

    public function is_admin_notice_show()
    {
        return apply_filters('mo_ads_admin_notices_display', true);
    }

    public function removable_query_args($args)
    {
        $args[] = 'email-campaign-error';
        $args[] = 'optin-cache';
        $args[] = 'settings-updated';
        $args[] = 'license-settings-updated';
        $args[] = 'failed-campaign';
        $args[] = 'fbca';

        return $args;
    }

    /**
     * Notice shown when optin campaign caches has been successfully cleared.
     */
    public function optin_campaigns_cache_cleared()
    {
        if ( ! is_super_admin(get_current_user_id())) return;

        if (isset($_GET['optin-cache']) && $_GET['optin-cache'] == 'cleared') : ?>
            <div id="message" class="updated notice is-dismissible">
                <p>
                    <?php _e('Optin campaigns cache successfully cleared.', 'mailoptin'); ?>
                </p>
            </div>
        <?php endif;
    }

    /**
     * Template class not found - admin notice.
     */
    public function template_class_not_found()
    {
        if ( ! is_super_admin(get_current_user_id()))
            return;

        if (isset($_GET['email-campaign-error']) && $_GET['email-campaign-error'] == 'class-not-found') : ?>
            <div id="message" class="notice notice-error is-dismissible">
                <p>
                    <?php
                    _e('There was an error fetching email campaign template dependency.', 'mailoptin');
                    ?>
                </p>
            </div>
        <?php endif;
    }

    /**
     * Optin template class not found - admin notice.
     */
    public function optin_class_not_found()
    {
        if ( ! is_super_admin(get_current_user_id()))
            return;

        if (isset($_GET['optin-error']) && $_GET['optin-error'] == 'class-not-found') : ?>
            <div id="message" class="notice notice-error is-dismissible">
                <p>
                    <?php _e('There was an error fetching optin dependency. Try again or select another template.', 'mailoptin'); ?>
                </p>
            </div>
        <?php endif;
    }

    /**
     * Template class not found - admin notice.
     */
    public function failed_campaign_retried()
    {
        if ( ! is_super_admin(get_current_user_id())) return;

        if (isset($_GET['failed-campaign']) && $_GET['failed-campaign'] == 'retried') : ?>
            <div id="message" class="updated notice is-dismissible">
                <p>
                    <?php _e('Email campaigned resent.', 'mailoptin'); ?>
                </p>
            </div>
        <?php endif;
    }

    /**
     * Display notice that branding is now included by default in mailoptin optin forms
     */
    public function optin_branding_added_by_default()
    {
        if ( ! PAnD::is_admin_notice_active('optin-branding-added-by-default-forever')) {
            return;
        }

        if (MAILOPTIN_VERSION_NUMBER > '1.1.2.0') return;

        $learn_more = 'https://mailoptin.io/article/make-money-mailoptin-branding/?ref=wp_dashboard';

        $notice = sprintf(
            __('MailOptin branding is now included on all optin forms unless you explicitly disabled it at "Configuration" panel in form builder. %sLearn more%s', 'mailoptin'),
            '<a href="' . $learn_more . '" target="_blank">',
            '</a>'
        );

        echo '<div data-dismissible="optin-branding-added-by-default-forever" class="update-nag notice notice-warning is-dismissible">';
        echo "<p><strong>$notice</strong></p>";
        echo '</div>';
    }

    public function dismiss_leave_review_notice_forever()
    {
        if ( ! empty($_GET['mo_admin_action']) && $_GET['mo_admin_action'] == 'dismiss_leave_review_forever') {
            update_option('mo_dismiss_leave_review_forever', true);

            wp_safe_redirect(esc_url_raw(remove_query_arg('mo_admin_action')));
            exit;
        }
    }

    /**
     * Display one-time admin notice to review plugin at least 7 days after installation
     */
    public function review_plugin_notice()
    {
        if ( ! PAnD::is_admin_notice_active('review-plugin-notice-forever')) return;

        if (get_option('mo_dismiss_leave_review_forever', false)) return;

        $install_date = get_option('mo_install_date', '');

        if (empty($install_date)) return;

        $diff = round((time() - strtotime($install_date)) / 24 / 60 / 60);

        if ($diff < 7) return;

        $review_url = 'https://wordpress.org/support/plugin/mailoptin/reviews/?filter=5#new-post';

        $dismiss_url = esc_url_raw(add_query_arg('mo_admin_action', 'dismiss_leave_review_forever'));

        $notice = sprintf(
            __('Hey, I noticed you have been using MailOptin for at least 7 days now - that\'s awesome! Could you please do me a BIG favor and give it a %1$s5-star rating on WordPress?%2$s This will help us spread the word and boost our motivation - thanks!', 'mailoptin'),
            '<a href="' . $review_url . '" target="_blank">',
            '</a>'
        );
        $label  = __('Sure! I\'d love to give a review', 'mailoptin');

        $dismiss_label = __('Dismiss Forever', 'mailoptin');

        $notice .= "<div style=\"margin:10px 0 0;\"><a href=\"$review_url\" target='_blank' class=\"button-primary\">$label</a></div>";
        $notice .= "<div style=\"margin:10px 0 0;\"><a href=\"$dismiss_url\">$dismiss_label</a></div>";

        echo '<div data-dismissible="review-plugin-notice-forever" class="update-nag notice notice-warning is-dismissible">';
        echo "<p>$notice</p>";
        echo '</div>';
    }

    /**
     * Display notice when limit of created email campaign is exceeded
     */
    public function email_campaign_count_limit_exceeded()
    {
        if (defined('MAILOPTIN_DETACH_LIBSODIUM')) return;

        if ( ! PAnD::is_admin_notice_active('email-campaign-count-limit-exceeded-3')) {
            return;
        }

        if (EmailCampaignRepository::campaign_count() < 1) return;

        if (strpos(\MailOptin\Core\current_url_with_query_string(), MAILOPTIN_EMAIL_CAMPAIGNS_SETTINGS_PAGE) === false) return;

        $upgrade_url = 'https://mailoptin.io/pricing/?utm_source=wp_dashboard&utm_medium=upgrade&utm_campaign=email_campaign_limit';
        $notice      = sprintf(__('Upgrade to %s now to create multiple email automation with advance targeting and option to send directly to your email list subscribers.', 'mailoptin'),
            '<a href="' . $upgrade_url . '" target="_blank">' . __('MailOptin premium', 'mailoptin') . '</a>'
        );
        echo '<div data-dismissible="email-campaign-count-limit-exceeded-3" class="updated notice notice-success is-dismissible">';
        echo "<p>$notice</p>";
        echo '</div>';
    }

    public function show_woocommerce_features()
    {
        if ( ! $this->is_admin_notice_show()) return;

        if ( ! PAnD::is_admin_notice_active('show_woocommerce_features-forever')) {
            return;
        }

        if ( ! class_exists('WooCommerce')) return;

        $upgrade_url = 'https://mailoptin.io/integrations/woocommerce/?utm_source=wp_dashboard&utm_medium=upgrade&utm_campaign=woo_admin_notice';
        $notice      = sprintf(__('Did you know you can display targeted messages and optin forms across your WooCommerce store and also automatically send email alert of new products to your subscribers and customers? %sLearn more%s', 'mailoptin'),
            '<a href="' . $upgrade_url . '" target="_blank">', '</a>'
        );
        echo '<div data-dismissible="show_woocommerce_features-forever" class="notice notice-info is-dismissible">';
        echo "<p>$notice</p>";
        echo '</div>';
    }

    public function show_cf7_features()
    {
        if ( ! $this->is_admin_notice_show()) return;

        if ( ! PAnD::is_admin_notice_active('show_cf7_features-forever')) {
            return;
        }

        if ( ! class_exists('WPCF7')) return;

        $upgrade_url = 'https://mailoptin.io/article/contact-form-7-mailchimp-aweber-more/?utm_source=wp_dashboard&utm_medium=upgrade&utm_campaign=cf7_admin_notice';
        $notice      = sprintf(__('Did you know with MailOptin, you can connect Contact Form 7 to major email marketing software such as Mailchimp, AWeber, Campaign Monitor, MailerLite, ActiveCampaign? %sLearn more%s', 'mailoptin'),
            '<a href="' . $upgrade_url . '" target="_blank">', '</a>'
        );
        echo '<div data-dismissible="show_cf7_features-forever" class="notice notice-info is-dismissible">';
        echo "<p>$notice</p>";
        echo '</div>';
    }

    public function show_forminator_features()
    {
        if ( ! $this->is_admin_notice_show()) return;

        if ( ! PAnD::is_admin_notice_active('show_forminator_features-forever')) {
            return;
        }

        if ( ! class_exists('Forminator')) return;

        $upgrade_url = 'https://mailoptin.io/article/forminator-email-marketing-crm/?utm_source=wp_dashboard&utm_medium=upgrade&utm_campaign=forminator_admin_notice';
        $notice      = sprintf(__('Did you know with MailOptin, you can connect Forminator to major email marketing software such as Mailchimp, Constant Contact, MailerLite, ActiveCampaign, ConvertKit? %sLearn more%s', 'mailoptin'),
            '<a href="' . $upgrade_url . '" target="_blank">', '</a>'
        );
        echo '<div data-dismissible="show_forminator_features-forever" class="notice notice-info is-dismissible">';
        echo "<p>$notice</p>";
        echo '</div>';
    }

    public function show_ninja_forms_features()
    {
        if ( ! $this->is_admin_notice_show()) return;

        if ( ! PAnD::is_admin_notice_active('show_ninja_forms_features-forever')) {
            return;
        }

        if ( ! class_exists('Ninja_Forms')) return;

        $upgrade_url = 'https://mailoptin.io/article/ninja-forms-mailchimp-aweber-more/?utm_source=wp_dashboard&utm_medium=upgrade&utm_campaign=ninja_forms_admin_notice';
        $notice      = sprintf(__('Did you know with MailOptin, you can connect Ninja Forms to major email marketing software such as Mailchimp, AWeber, Campaign Monitor, MailerLite, ActiveCampaign? %sLearn more%s', 'mailoptin'),
            '<a href="' . $upgrade_url . '" target="_blank">', '</a>'
        );
        echo '<div data-dismissible="show_ninja_forms_features-forever" class="notice notice-info is-dismissible">';
        echo "<p>$notice</p>";
        echo '</div>';
    }

    public function show_gravity_forms_features()
    {
        if ( ! $this->is_admin_notice_show()) return;

        if ( ! PAnD::is_admin_notice_active('show_gravity_forms_features-forever')) {
            return;
        }

        if ( ! class_exists('GFForms')) return;

        $upgrade_url = 'https://mailoptin.io/article/gravity-forms-mailchimp-aweber-more/?utm_source=wp_dashboard&utm_medium=upgrade&utm_campaign=gravity_forms_admin_notice';
        $notice      = sprintf(__('Did you know with MailOptin, you can connect Gravity Forms to your email marketing software and CRM including Mailchimp, Sendinblue, MailerLite, Ontraport, GetResponse? %sLearn more%s', 'mailoptin'),
            '<a href="' . $upgrade_url . '" target="_blank">', '</a>'
        );
        echo '<div data-dismissible="show_gravity_forms_features-forever" class="notice notice-info is-dismissible">';
        echo "<p>$notice</p>";
        echo '</div>';
    }

    public function show_wpforms_features()
    {
        if ( ! $this->is_admin_notice_show()) return;

        if ( ! PAnD::is_admin_notice_active('show_wpforms_features-forever')) {
            return;
        }

        if ( ! class_exists('WPForms\WPForms')) return;

        $upgrade_url = 'https://mailoptin.io/article/wpforms-email-marketing-crm/?utm_source=wp_dashboard&utm_medium=upgrade&utm_campaign=wpforms_admin_notice';
        $notice      = sprintf(__('Did you know with MailOptin, you can connect WPForms to major email marketing software such as Mailchimp, ConvertKit, MailerLite, HubSpot, Sendinblue? %sLearn more%s', 'mailoptin'),
            '<a href="' . $upgrade_url . '" target="_blank">', '</a>'
        );
        echo '<div data-dismissible="show_wpforms_features-forever" class="notice notice-info is-dismissible">';
        echo "<p>$notice</p>";
        echo '</div>';
    }

    /**
     * @return AdminNotices
     */
    public static function get_instance()
    {
        static $instance = null;

        if (is_null($instance)) {
            $instance = new self();
        }

        return $instance;
    }
}