Skip to content
Snippets Groups Projects
Select Git revision
  • 433b356b62e99b81fb7f6187e34a92ffaf01aa4b
  • master default protected
  • bugfix/wordpress-review
  • fix/duplicate
  • bugfix/get_current_screen_fail
  • feature/dismiss-nonce
  • replace-dodgy-path
  • bugfix/notice-not-show
  • devel
  • 3.3.0
  • 3.2.5
  • 3.2.4
  • 3.2.3
  • 3.2.2
  • 3.2.1
  • 3.2.0
  • 3.2.0-beta7
  • 3.2.0-beta6
  • 3.2.0-beta5
  • 3.2.0-beta4
  • 3.2.0-beta3
  • 3.2.0-beta2
  • 3.2.0-beta1
  • 3.1.4
  • 3.1.4-beta1
  • 3.1.3
  • 3.1.1
  • 3.1
  • 3.0
29 results

AjaxHandler.php

Blame
  • AjaxHandler.php 3.56 KiB
    <?php
    
    namespace WPDesk\Notice;
    
    use WPDesk\PluginBuilder\Plugin\HookablePluginDependant;
    use WPDesk\PluginBuilder\Plugin\PluginAccess;
    
    /**
     * Class AjaxHandler
     *
     * AjaxHandler for dismissible notices.
     *
     * @package WPDesk\Notice
     */
    class AjaxHandler implements HookablePluginDependant {
    
        use PluginAccess;
    
        const POST_FIELD_NOTICE_NAME = 'notice_name';
        const POST_FIELD_SOURCE = 'source';
        const POST_FIELD_SECURITY = 'security';
    
        const SCRIPTS_VERSION = '4';
        const SCRIPT_HANDLE = 'wpdesk_notice';
        const SCRIPT_HANDLE_GUTENBERG = 'wpdesk_notice_gutenberg';
    
        /**
         * @var string
         */
        private $assetsURL;
    
        /**
         * AjaxHandler constructor.
         *
         * @param string|null $assetsURL Assets URL.
         */
        public function __construct( $assetsURL = null ) {
            $this->assetsURL = $assetsURL ?? plugins_url('/assets/', dirname(__FILE__, 3));
        }
    
        /**
         * Hooks.
         */
        public function hooks() {
            add_action( 'admin_enqueue_scripts', [ $this, 'enqueueAdminScripts' ] );
            add_action( 'wp_ajax_wpdesk_notice_dismiss', [ $this, 'processAjaxNoticeDismiss' ] );
        }
    
        public function isBlockEditor():bool
        {
    		if ( !function_exists( 'get_current_screen' ) ) {
    			return false;
    		}
    
    		$screen = \get_current_screen();
    
    		return is_object($screen) ? $screen->is_block_editor() : false;
        }
    
        /**
         * Enqueue admin scripts.
         */
        public function enqueueAdminScripts() {
            wp_register_script(
                self::SCRIPT_HANDLE,
                trailingslashit( $this->assetsURL ) . 'js/notice.js',
                [ 'jquery' ],
                self::SCRIPTS_VERSION
            );
            wp_enqueue_script( self::SCRIPT_HANDLE );