is_protection_active() ) { return; } $options = wp_parse_args( get_option( 'aiodify_cp_settings', array() ), Aiodify_Content_Protection::get_default_options() ); // Register and Enqueue Protection CSS & Toast Styles wp_enqueue_style( 'aiodify-protection-style', AIODIFY_CP_PLUGIN_URL . 'assets/css/aiodify-protection.css', array(), AIODIFY_CP_VERSION ); // Attach dynamic CSS rules via official wp_add_inline_style API $dynamic_css = $this->get_dynamic_protection_css( $options ); if ( ! empty( $dynamic_css ) ) { wp_add_inline_style( 'aiodify-protection-style', $dynamic_css ); } // Core JS Shield wp_enqueue_script( 'aiodify-protection-engine', AIODIFY_CP_PLUGIN_URL . 'assets/js/aiodify-protection.js', array(), AIODIFY_CP_VERSION, true // Load in footer ); // Localize config to JS wp_localize_script( 'aiodify-protection-engine', 'aiodifyCPConfig', array( 'enabled' => (bool) $options['enable_protection'], 'disableRightClick' => (bool) $options['disable_right_click'], 'disableTextSelect' => (bool) $options['disable_text_selection'], 'disableCopyCut' => (bool) $options['disable_copy_cut_paste'], 'disableDragDrop' => (bool) $options['disable_drag_drop'], 'disableImageDrag' => (bool) $options['disable_image_drag'], 'disableCtrlA' => (bool) $options['disable_ctrl_a'], 'disableCtrlC' => (bool) $options['disable_ctrl_c'], 'disableCtrlX' => (bool) $options['disable_ctrl_x'], 'disableCtrlV' => (bool) $options['disable_ctrl_v'], 'disableCtrlS' => (bool) $options['disable_ctrl_s'], 'disableCtrlP' => (bool) $options['disable_ctrl_p'], 'disableCtrlU' => (bool) $options['disable_ctrl_u'], 'disableCtrlF' => (bool) $options['disable_ctrl_f'], 'disableDevToolsF12' => (bool) $options['disable_devtools_f12'], 'disablePrintScreen' => (bool) $options['disable_print_screen'], 'enableWarningToast' => (bool) $options['enable_warning_toast'], 'warningMessage' => esc_html( $options['warning_message'] ), 'toastTheme' => esc_attr( $options['toast_theme'] ), 'toastPosition' => esc_attr( $options['toast_position'] ), 'toastDuration' => absint( $options['toast_duration'] ), 'toastSound' => (bool) $options['toast_sound'], ) ); } /** * Generate dynamic protection CSS string according to configured options. * * @param array $options Plugin settings. * @return string CSS rules. */ private function get_dynamic_protection_css( $options ) { $css = ''; // Text selection prevention if ( ! empty( $options['disable_text_selection'] ) ) { $css .= 'body, html, * { -webkit-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; -webkit-touch-callout: none !important; } input, textarea, [contenteditable="true"], select { -webkit-user-select: auto !important; -moz-user-select: auto !important; -ms-user-select: auto !important; user-select: auto !important; }'; } // Image drag and selection prevention if ( ! empty( $options['disable_image_drag'] ) ) { $css .= 'img, picture, svg, video { -webkit-user-drag: none !important; -khtml-user-drag: none !important; -moz-user-drag: none !important; -o-user-drag: none !important; user-drag: none !important; pointer-events: auto; }'; } // Print protection if ( ! empty( $options['disable_print_screen'] ) ) { $print_message = esc_attr__( 'Protected Content - Printing is disabled by website copyright.', 'aiodify-content-protection' ); $css .= '@media print { html, body { display: none !important; visibility: hidden !important; } body::after { content: "' . $print_message . '" !important; display: block !important; visibility: visible !important; font-size: 24px !important; text-align: center !important; padding: 50px !important; color: #e11d48 !important; } }'; } return $css; } }