?
Current Path : /home1/savoy/sportsmeet.net/wp-content/plugins/optinmonster/OMAPI/ |
Linux gator3171.hostgator.com 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64 |
Current File : /home1/savoy/sportsmeet.net/wp-content/plugins/optinmonster/OMAPI/ClassicEditor.php |
<?php /** * Classic Editor class. * * @since 2.3.0 * * @package OMAPI * @author Justin Sternberg */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Classic Editor class. * * @since 2.3.0 */ class OMAPI_ClassicEditor { /** * Holds the class object. * * @since 2.3.0 * * @var object */ public static $instance; /** * Path to the file. * * @since 2.3.0 * * @var string */ public $file = __FILE__; /** * Holds the base class object. * * @since 2.3.0 * * @var OMAPI */ public $base; /** * Primary class constructor. * * @since 2.3.0 */ public function __construct() { // Set our object. $this->set(); add_action( 'media_buttons', array( $this, 'media_button' ), 15 ); add_action( 'add_meta_boxes', array( $this, 'settings_meta_box' ) ); add_action( 'save_post', array( $this, 'save_metabox_data' ), 10, 2 ); } /** * Sets our object instance and base class instance. * * @since 2.3.0 */ public function set() { self::$instance = $this; $this->base = OMAPI::get_instance(); } /** * Allow easy shortcode insertion via a custom media button. * * @since 2.3.0 * * @param string $editor_id Unique editor identifier, e.g. 'content'. */ public function media_button( $editor_id ) { if ( ! $this->base->can_access( 'campaign_media_button' ) ) { return; } // Provide the ability to conditionally disable the button, so it can be // disabled for custom fields or front-end use such as bbPress. We default // to only showing within the post editor page. if ( ! apply_filters( 'optin_monster_display_media_button', $this->is_post_editor_page(), $editor_id ) ) { return; } // Setup the icon. $icon = '<span class="wp-media-buttons-icon optin-monster-menu-icon">' . $this->base->menu->icon_svg( 'currentColor', false ) . '</span>'; printf( '<button type="button" class="button optin-monster-insert-campaign-button" data-editor="%s" title="%s">%s %s</button>', esc_attr( $editor_id ), esc_attr__( 'Add OptinMonster', 'optin-monster-api' ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped, unable to escape SVG. $icon, esc_html__( 'Add OptinMonster', 'optin-monster-api' ) ); // If we have made it this far then load the JS. $handle = $this->base->plugin_slug . '-editor'; wp_enqueue_script( $handle, $this->base->url . 'assets/dist/js/editor.min.js', array( 'jquery' ), $this->base->asset_version(), true ); $i18n = $this->base->blocks->get_data_for_js( 'i18n' ); $i18n['or_monsterlink'] = esc_html__( 'Or link to a popup campaign', 'optin-monster-api' ); OMAPI_Utils::add_inline_script( $handle, 'OMAPI_Editor', array( 'monsterlink' => esc_url_raw( OPTINMONSTER_SHAREABLE_LINK ) . '/c/', 'canMonsterlink' => $this->base->blocks->get_data_for_js( 'canMonsterlink' ), 'upgradeUri' => $this->base->blocks->get_data_for_js( 'upgradeUri' ), 'i18n' => $i18n, ) ); add_action( 'admin_footer', array( $this, 'shortcode_modal' ) ); } /** * Check if we are on the post editor admin page. * * @since 2.3.0 * * @returns boolean True if it is post editor admin page. */ public function is_post_editor_page() { if ( ! is_admin() ) { return false; } // get_current_screen() is loaded after 'admin_init' hook and may not exist yet. if ( ! function_exists( 'get_current_screen' ) ) { return false; } $screen = get_current_screen(); return null !== $screen && 'edit' === $screen->parent_base; } /** * Modal window for inserting the optin-monster shortcode into TinyMCE. * * Thickbox is old and busted so we don't use that. Creating a custom view in * Backbone would make me pull my hair out. So instead we offer a small clean * modal that is based off of the WordPress insert link modal. * * @since 2.3.0 */ public function shortcode_modal() { $campaigns = $this->base->blocks->get_campaign_options( true ); $campaigns['inline'] = ! empty( $campaigns['inline'] ) ? array_merge( array( '' => esc_html__( 'Select Campaign...', 'optin-monster-api' ) ), $campaigns['inline'] ) : array(); $campaigns['other'] = ! empty( $campaigns['other'] ) ? array_merge( array( '' => esc_html__( 'Select Campaign...', 'optin-monster-api' ) ), $campaigns['other'] ) : array(); $this->base->output_view( 'shortcode-modal.php', array( 'templatesUri' => $this->base->blocks->get_data_for_js( 'templatesUri' ), 'upgradeUri' => OMAPI_Urls::upgrade( 'gutenberg', 'monster-link' ), 'canMonsterlink' => $this->base->blocks->get_data_for_js( 'canMonsterlink' ), 'campaigns' => $campaigns, ) ); $this->base->output_min_css( 'shortcode-modal-css.php' ); } /** * Register the global OptinMonster Settings metabox. * * @since 2.3.0 */ public function settings_meta_box() { $types = array_values( get_post_types( array( 'public' => true ) ) ); foreach ( $types as $type ) { $supports_custom_fields = post_type_supports( $type, 'custom-fields' ); // If custom fields aren't supported, change title to avoid duplicate 'OptinMonster' sections. // @see https://github.com/awesomemotive/optin-monster-wp-api/issues/391 $title = $supports_custom_fields ? 'OptinMonster Settings' : 'Campaign Settings'; add_meta_box( 'om-global-post-settings', esc_html__( $title, 'optin-monster-api' ), array( $this, 'settings_meta_box_output' ), $type, 'side', 'default', array( '__back_compat_meta_box' => $supports_custom_fields ) ); } } /** * Output the markup for the global OptinMonster Settings metabox. * * @since 2.3.0 * * @param WP_Post $post The post object. */ public function settings_meta_box_output( $post ) { $disabled = get_post_meta( $post->ID, 'om_disable_all_campaigns', true ); wp_nonce_field( 'om_disable_all_campaigns', 'om_disable_all_campaigns_nonce' ); ?> <p> <label for="om_disable_all_campaigns"> <input class="widefat" type="checkbox" <?php checked( ! empty( $disabled ) ); ?> name="om_disable_all_campaigns" id="om_disable_all_campaigns" value="1" /> <?php esc_html_e( 'Disable all OptinMonster campaigns.', 'optin-monster-api' ); ?> </label> </p> <?php } /** * Save the global OptinMonster settings. * * @since 2.3.0 * * @param int $post_id Post Id. * @param WP_Post $post Post object. */ public function save_metabox_data( $post_id, $post ) { if ( empty( $_POST['om_disable_all_campaigns_nonce'] ) || ! wp_verify_nonce( $_POST['om_disable_all_campaigns_nonce'], 'om_disable_all_campaigns' ) || empty( $post->post_type ) ) { return; } $type = get_post_type_object( $post->post_type ); if ( empty( $type->cap->edit_post ) || ! current_user_can( $type->cap->edit_post, $post_id ) ) { return; } $disabled = ! empty( $_POST['om_disable_all_campaigns'] ); update_post_meta( $post_id, 'om_disable_all_campaigns', $disabled ); } }