NTER_KEY ); return $editor_visit_count < self::REQUIRED_VISIT_COUNT; } /** * Check if popup has already been displayed to this user * * @return bool True if already displayed */ private function has_popup_been_displayed(): bool { return (bool) get_user_meta( $this->get_current_user_id(), self::POPUP_DISPLAYED_OPTION, true ); } /** * Mark popup as displayed for current user */ private function set_popup_as_displayed(): void { $user_id = $this->get_current_user_id(); update_user_meta( $user_id, self::POPUP_DISPLAYED_OPTION, true ); } /** * Enqueue popup scripts */ private function enqueue_scripts(): void { $min_suffix = Utils::is_script_debug() ? '' : '.min'; $script_url = ELEMENTOR_ASSETS_URL . 'js/pro-free-trial-popup' . $min_suffix . '.js'; wp_enqueue_script( self::MODULE_NAME, $script_url, [ 'react', 'react-dom', 'elementor-common', 'elementor-v2-ui', ], ELEMENTOR_VERSION, true ); $popup_data = $this->extract_popup_data( $this->external_data ); wp_localize_script( self::MODULE_NAME, 'elementorProFreeTrialData', $popup_data ); wp_set_script_translations( self::MODULE_NAME, 'elementor' ); } /** * Extract popup data from external data * * @param array $external_data The full external data array * @return array Popup data or empty array if not found */ private function extract_popup_data( array $external_data ): array { return $external_data[ self::MODULE_NAME ][0]; } /** * Get current user ID * * @return int Current user ID */ private function get_current_user_id(): int { $current_user = wp_get_current_user(); return $current_user->ID ?? 0; } }