File Editor
Directories:
.. (Back)
EasyDigitalDownloads
Elementor
Integrations
MemberPress
Plugins
Promos
Rules
Shortcodes
WPForms
WooCommerce
Files:
Actions.php
Ajax.php
Api.php
ApiAuth.php
ApiKey.php
AssetLoader.php
BaseRestApi.php
Blocks.php
ClassicEditor.php
ConstantContact.php
Debug.php
EasyDigitalDownloads.php
Elementor.php
Inserter.php
InstallSkin.php
InstallSkinCompat.php
MailPoet.php
MemberPress.php
Menu.php
Notifications.php
OmuApi.php
Output.php
Pages.php
Partners.php
Plugins.php
Promos.php
Refresh.php
RestApi.php
RevenueAttribution.php
Review.php
Rules.php
Save.php
Shortcode.php
Sites.php
Support.php
Type.php
Urls.php
Utils.php
Validate.php
WPForms.php
Welcome.php
Widget.php
WooCommerce.php
WpErrorException.php
Create New File
Create
Edit File: ConstantContact.php
<?php /** * Constant Contact class. * * @since 1.6.0 * * @package OMAPI * @author Justin Sternberg */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Constant Contact class. * * @since 1.6.0 */ class OMAPI_ConstantContact { /** * Holds the class object. * * @since 1.6.0 * * @var object */ public static $instance; /** * Path to the file. * * @since 1.6.0 * * @var string */ public $file = __FILE__; /** * Holds the review slug. * * @since 1.6.0 * * @var string */ public $hook; /** * Holds the base class object. * * @since 1.6.0 * * @var object */ public $base; /** * Sign up link. * * @since 1.6.0 * @var string */ public $sign_up = 'https://optinmonster.com/refer/constant-contact/'; /** * Primary class constructor. * * @since 1.6.0 */ public function __construct() { // Set our object. $this->set(); // Pages. add_action( 'admin_menu', array( $this, 'register_cc_page' ) ); add_action( 'admin_notices', array( $this, 'constant_contact_cta_notice' ) ); add_action( 'wp_ajax_om_constant_contact_dismiss', array( $this, 'constant_contact_dismiss' ) ); } /** * Sets our object instance and base class instance. * * @since 1.6.0 */ public function set() { self::$instance = $this; $this->base = OMAPI::get_instance(); } /** * Loads the OptinMonster admin menu. * * @since 1.6.0 */ public function register_cc_page() { $slug = 'optin-monster-constant-contact'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended $is_current = isset( $_GET['page'] ) && $slug === sanitize_key( wp_unslash( $_GET['page'] ) ); $parent_slug = $this->base->menu->parent_slug(); if ( ! $is_current ) { $parent_slug .= '-no-menu'; } $this->hook = add_submenu_page( $parent_slug, // parent slug esc_html__( 'OptinMonster with Constant Contact', 'optin-monster-api' ), // page title, esc_html__( 'OptinMonster + Constant Contact', 'optin-monster-api' ), $this->base->access_capability( $slug ), // cap $slug, // slug array( $this, 'display_page' ) // callback ); // Load settings page assets. if ( $this->hook ) { add_action( 'load-' . $this->hook, array( $this, 'assets' ) ); } } /** * Add admin notices to connect to Constant Contact. * * @since 1.6.0 */ public function constant_contact_cta_notice() { // Only consider showing the notice when WPForms plugin is not active. // Here WPForms_Constant_Contact class existence is checked which shows the notice in WPForms plugin. if ( class_exists( 'WPForms_Constant_Contact' ) ) { return; } // Only consider showing the review request to admin users. if ( ! is_super_admin() ) { return; } // Only display the notice if it has not been dismissed. $dismissed = get_option( 'optinmonster_constant_contact_dismiss', false ); if ( $dismissed ) { return; } // Only show on the main dashboard page (wp-admin/index.php) // or any OptinMonster plugin-specific screen. $can_show = $is_om_page = $this->base->menu->is_om_page(); if ( ! $can_show ) { $can_show = function_exists( 'get_current_screen' ) && 'dashboard' === get_current_screen()->id; } if ( ! $can_show ) { return; } $connect = OMAPI_Urls::onboarding(); $learn_more = OMAPI_Urls::admin( array( 'page' => 'optin-monster-constant-contact' ) ); // Output the notice message. ?> <div class="notice notice-info is-dismissible om-constant-contact-notice"> <p> <?php echo wp_kses( __( 'Get the most out of the <strong>OptinMonster</strong> plugin — use it with an active Constant Contact account.', 'optin-monster-api' ), array( 'strong' => array(), ) ); ?> </p> <p> <a href="<?php echo esc_url( $this->sign_up ); ?>" class="button-primary" target="_blank" rel="noopener noreferrer"> <?php esc_html_e( 'Try Constant Contact for Free', 'optin-monster-api' ); ?> </a> <?php if ( ! $is_om_page ) { ?> <a href="<?php echo esc_url( $connect ); ?>" class="button-secondary"> <?php esc_html_e( 'Get Started', 'optin-monster-api' ); ?> </a> <?php } ?> <?php printf( wp_kses( /* translators: %s - OptinMonster Constant Contact internal URL. */ __( 'Learn More about the <a href="%s">power of email marketing</a>', 'optin-monster-api' ), array( 'a' => array( 'href' => array(), ), ) ), esc_url( $learn_more ) ); ?> </p> <style type="text/css"> .om-constant-contact-notice p:first-of-type { margin: 16px 0 8px; } .om-constant-contact-notice p:last-of-type { margin: 8px 0 16px; } .om-constant-contact-notice .button-primary, .om-constant-contact-notice .button-secondary { display: inline-block; margin: 0 10px 0 0; } </style> <script type="text/javascript"> jQuery( function ( $ ) { $( document ).on( 'click', '.om-constant-contact-notice button', function ( event ) { event.preventDefault(); $.post( ajaxurl, { action: 'om_constant_contact_dismiss', _wpnonce: '<?php echo esc_js( wp_create_nonce( 'om_constant_contact_dismiss' ) ); ?>', } ); $( '.om-constant-contact-notice' ).remove(); } ); } ); </script> </div> <?php } /** * Dismiss the Constant Contact admin notice. * * @since 1.6.0 */ public function constant_contact_dismiss() { // Verify the nonce. check_ajax_referer( 'om_constant_contact_dismiss' ); // Make sure the user can dismiss the notice. $can_dismiss = $this->base->access_capability( 'optin-monster-constant-contact' ); if ( ! $can_dismiss ) { wp_send_json_error(); } // Update the option to dismiss the notice. update_option( 'optinmonster_constant_contact_dismiss', 1, false ); wp_send_json_success(); } /** * Loads assets for the settings page. * * @since 1.6.0 */ public function assets() { add_filter( 'admin_body_class', array( $this, 'add_body_classes' ) ); add_action( 'admin_enqueue_scripts', array( $this->base->menu, 'styles' ) ); add_filter( 'admin_footer_text', array( $this, 'footer' ) ); add_action( 'in_admin_header', array( $this->base->menu, 'output_plugin_screen_banner' ) ); } /** * Add body classes. * * @since 2.0.0 * * @param string $classes Body classes. * * @return string Body classes. */ public function add_body_classes( $classes ) { $classes .= ' omapi-constant-contact '; return $classes; } /** * Customizes the footer text on the OptinMonster settings page. * * @since 1.6.0 * * @param string $text The default admin footer text. * @return string $text Amended admin footer text. */ public function footer( $text ) { $url = 'https://wordpress.org/support/plugin/optinmonster/reviews?filter=5#new-post'; $text = sprintf( __( 'Please rate <strong>OptinMonster</strong> <a href="%1$s" target="_blank" rel="noopener">★★★★★</a> on <a href="%1$s" target="_blank" rel="noopener noreferrer">WordPress.org</a> to help us spread the word. Thank you from the OptinMonster team!', 'optin-monster-api' ), $url ); return $text; } /** * Outputs the Review Page. * * @since 1.6.0 */ public function display_page() { $this->base->output_view( 'constantcontact.php', array( 'images_url' => esc_url( $this->base->url . 'assets/css/images/' ), 'signup_url' => esc_url( $this->sign_up ), ) ); } }
Save Changes
Rename File
Rename