$verified ) ); } /** * Enqueue frontend scripts */ public static function apsispro_enqueue_frontend_scripts() { wp_enqueue_script( 'frontend', plugins_url( '/js/frontend.js', __FILE__ ), array( 'jquery' ) ); wp_localize_script( 'frontend', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'error_msg_standard' => __( 'An error occurred, please try again later.', 'apsispro' ), 'error_msg_email' => __( 'The e-mail address is not correct.', 'apsispro' ) ) ); } public static function load_textdomain() { load_plugin_textdomain( 'apsispro', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' ); } /** * Create new subscriber to mailing list at APSUS. */ public static function apsispro_action_callback() { $args = array( 'headers' => array( 'Accept' => 'application/json', 'Content-Type' => 'application/json' ), 'body' => json_encode( array( 'Email' => ( isset( $_POST['email'] ) ? $_POST['email'] : '' ), 'Name' => ( isset( $_POST['name'] ) ? $_POST['name'] : '' ) ) ) ); $options = get_option( 'apsispro_settings' ); $response = wp_remote_post( 'http://' . $options['apsispro_input_api_key'] . ':@se.api.anpdm.com/v1/subscribers/mailinglist/' . $_POST['listid'] . '/create?updateIfExists=true', $args ); if ( is_wp_error( $response ) ): print( - 1 ); else: print( $response['body'] ); endif; wp_die(); } /** * Add settings page in admin menu */ public static function apsispro_add_admin_menu() { add_submenu_page( 'options-general.php', __( 'APSIS Pro Settings', 'apsispro' ), __( 'APSIS Pro', 'apsispro' ), 'manage_options', 'apsispro-settings', array( __CLASS__, 'apsispro_settings_page' ), 'dashicons-admin-generic' ); } /** * Register settings for settings page */ public static function apsispro_settings_init() { register_setting( 'apsispro_group', 'apsispro_settings', array( __CLASS__, 'apsispro_api_validation' ) ); register_setting( 'apsispro_hidden_group', 'apsispro_settings' ); register_setting( 'apsispro_shortcode_group', 'apsispro_settings' ); add_settings_section( 'apsispro_group_section', __( 'APSIS Pro settings', 'apsispro' ), array( __CLASS__, 'apsispro_settings_section_callback' ), 'apsispro_group' ); add_settings_section( 'apsispro_hidden_group_section', '', array( __CLASS__, 'apsispro_hidden_settings_section_callback' ), 'apsispro_hidden_group' ); add_settings_section( 'apsispro_shortcode_group_section', __( 'Shortcode Generator', 'apsispro' ), array( __CLASS__, 'apsispro_shortcode_settings_section_callback' ), 'apsispro_shortcode_group' ); add_settings_field( 'apsispro_input_api_key', __( 'APSIS Pro API Key', 'apsispro' ), array( __CLASS__, 'apsispro_input_api_key_render' ), 'apsispro_group', 'apsispro_group_section' ); add_settings_field( 'apsispro_hidden_verified', null, array( __CLASS__, 'apsispro_hidden_verified_render' ), 'apsispro_hidden_group', 'apsispro_hidden_group_section' ); add_settings_field( 'apsispro_select_mailing_list', __( 'Select Mailing List', 'apsispro' ), array( __CLASS__, 'apsispro_select_mailing_list_render' ), 'apsispro_shortcode_group', 'apsispro_shortcode_group_section' ); add_settings_field( 'apsispro_checkbox_name', __( 'Show name field', 'apsispro' ), array( __CLASS__, 'apsispro_checkbox_name_render' ), 'apsispro_shortcode_group', 'apsispro_shortcode_group_section' ); add_settings_field( 'apsispro_input_thank_you_msg', __( 'Thank you message', 'apsispro' ), array( __CLASS__, 'apsispro_input_thank_you_msg_render' ), 'apsispro_shortcode_group', 'apsispro_shortcode_group_section' ); } /** * Hidden field for verification status */ public static function apsispro_hidden_verified_render() { $options = get_option( 'apsispro_settings' ); ?> '> '> value='1'> '> Save API Key. For more information on integration with APSIS Pro, %sclick here%s.', 'apsispro' ), '', '' ); } /** * Instructions for the hidden settings fields */ public static function apsispro_hidden_settings_section_callback() { echo ''; } /** * Instructions for the shortcode generator fields */ public static function apsispro_shortcode_settings_section_callback() { echo __( 'Modify the settings and click on Generate Shortcode to generate a shortcode that can be inserted on the site.', 'apsispro' ); } /** * Validation of API Key */ public static function apsispro_api_validation( $data ) { $args = array( 'headers' => array( 'accept' => 'application/json' ) ); $data['apsispro_input_api_key'] = preg_replace( '/\s+/', '', $data['apsispro_input_api_key'] ); $response = wp_remote_post( 'http://' . $data['apsispro_input_api_key'] . ':@se.api.anpdm.com/mailinglists/v2/all', $args ); if ( 200 !== $response['response']['code'] ) : $data['apsispro_hidden_verified'] = 0; add_settings_error( 'apiCallError', 'api', __( 'An error occured. Please make sure you have entered the correct APSIS API Key.', 'apsispro' ), 'error' ); else : $data['apsispro_hidden_verified'] = 1; endif; return $data; } /** * The settings page in admin */ public static function apsispro_settings_page() { ?>

APSIS Pro for WordPress


', '' ); ?>

', '' ); ?>

array( 'accept' => 'application/json' ) ); $options = get_option( 'apsispro_settings' ); $response = wp_remote_post( 'http://' . $options['apsispro_input_api_key'] . ':@se.api.anpdm.com/mailinglists/v2/all', $args ); if ( 200 === $response['response']['code'] ) : $json_a = json_decode( $response['body'], true ); $result = $json_a['Result']; $mailinglist_items = ''; foreach ( $result as $index => $list_item ) { if ( $mailinglist_id === $list_item['Id'] ) : $selected = ' selected="selected"'; else: $selected = ''; endif; $mailinglist_items .= ''; } return $mailinglist_items; else: return ''; endif; } /** * Shows a subscription form for APSUS. * * @param int $mailinglist_id The id of the mailing list that user will be subscribed to * @param bool $show_name Decides if name field will be visible * @param string $thank_you The 'thank you' message */ public static function get_form( $mailinglist, $show_name, $thank_you ) { if ( ! empty( $mailinglist ) ) : ?>

'', 'name' => '', 'thankyou' => __( 'Thank you for submitting!', 'apsispro' ) ), $atts ); return self::get_form( $atts['id'], $atts['name'], $atts['thankyou'] ); } /** * Register widgets */ public static function register_widgets() { $options = get_option( 'apsispro_settings' ); if ( $options['apsispro_hidden_verified'] ): register_widget( 'APSIS_Pro_Widget' ); endif; } } APSIS_Pro_For_WP::init(); /** * APSIS Pro widget for subscription form. */ class APSIS_Pro_Widget extends WP_Widget { /** * Register widget with WordPress. */ function __construct() { parent::__construct( 'apsispro-widget', __( 'APSIS Pro Widget', 'apsispro' ), array( 'description' => __( 'APSIS Pro subscription form.', 'apsispro' ), ) ); } /** * Frontend display of widget. * * @param array $args Widget arguments. * @param array $instance Saved values from database. */ public function widget( $args, $instance ) { echo $args['before_widget']; if ( ! empty( $instance['title'] ) ) : echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title']; endif; if ( ! empty( $instance['text'] ) ) : echo '

' . $instance['text'] . '

'; endif; APSIS_Pro_For_WP::get_form( $instance['mailinglist'], $instance['show-name'], $instance['thank-you-msg'] ); echo $args['after_widget']; } /** * Backend widget form. * * @param array $instance Previously saved values from database. */ public function form( $instance ) { if ( isset( $instance['title'] ) ) { $title = $instance['title']; } else { $title = __( 'New title', 'apsispro' ); } if ( isset( $instance['text'] ) ) { $text = $instance['text']; } else { $text = __( 'New text', 'apsispro' ); } if ( isset( $instance['mailinglist'] ) ) { $mailinglist = intval( $instance['mailinglist'] ); } else { $mailinglist = - 1; } if ( isset( $instance['show-name'] ) ) { $show_name = $instance['show-name']; } if ( isset( $instance['thank-you-msg'] ) ) { $thank_you_msg = $instance['thank-you-msg']; } else { $thank_you_msg = __( 'Thank you for submitting!', 'apsispro' ); } ?>

name="get_field_name( 'show-name' ); ?>" type="checkbox">