load_feedback_options(); $this->init_installation_tracking(); add_action('wp_ajax_ase_dismiss_feedback', array($this, 'ajax_dismiss_feedback')); add_action('wp_ajax_ase_feedback_given', array($this, 'ajax_feedback_given')); add_action('admin_notices', array($this, 'show_feedback_notices')); add_action('admin_enqueue_scripts', array($this, 'enqueue_feedback_scripts')); // Hook into successful excerpt generation add_action('ai_smart_excerpt_generated', array($this, 'track_successful_generation')); add_action('ai_smart_excerpt_bulk_completed', array($this, 'track_bulk_completion')); } /** * Load feedback options. */ private function load_feedback_options() { $defaults = array( 'feedback_dismissed' => false, 'feedback_given' => false, 'successful_generations' => 0, 'bulk_completions' => 0, 'install_date' => time(), 'last_feedback_prompt' => 0, 'feedback_prompt_count' => 0 ); $this->feedback_options = wp_parse_args(get_option('ai_smart_excerpt_feedback', array()), $defaults); } /** * Initialize installation tracking if not already set. */ private function init_installation_tracking() { // Set install date if not already set (for new installations) if (!isset($this->feedback_options['install_date']) || empty($this->feedback_options['install_date'])) { $this->feedback_options['install_date'] = time(); $this->save_feedback_options(); } } /** * Save feedback options. */ private function save_feedback_options() { update_option('ai_smart_excerpt_feedback', $this->feedback_options); } /** * Track successful excerpt generation. */ public function track_successful_generation() { $this->feedback_options['successful_generations']++; $this->save_feedback_options(); } /** * Track bulk completion. */ public function track_bulk_completion() { $this->feedback_options['bulk_completions']++; $this->save_feedback_options(); } /** * Check if we should show feedback prompt. * * @return bool */ private function should_show_feedback() { // Don't show if already dismissed or feedback given if ($this->feedback_options['feedback_dismissed'] || $this->feedback_options['feedback_given']) { return false; } // Don't show too frequently (at least 7 days between prompts) if (time() - $this->feedback_options['last_feedback_prompt'] < (7 * DAY_IN_SECONDS)) { return false; } // Don't show more than 3 times total if ($this->feedback_options['feedback_prompt_count'] >= 3) { return false; } // Show after 7 days of use AND positive interactions $days_since_install = (time() - $this->feedback_options['install_date']) / DAY_IN_SECONDS; $has_positive_activity = $this->feedback_options['successful_generations'] >= 5 || $this->feedback_options['bulk_completions'] >= 1; return $days_since_install >= 7 && $has_positive_activity; } /** * Show admin notices for feedback. */ public function show_feedback_notices() { $screen = get_current_screen(); // Only show on relevant admin pages if (!in_array($screen->id, array('settings_page_ai-smart-excerpt', 'dashboard', 'post', 'page'))) { return; } if (!$this->should_show_feedback()) { return; } // Update tracking $this->feedback_options['last_feedback_prompt'] = time(); $this->feedback_options['feedback_prompt_count']++; $this->save_feedback_options(); $this->render_feedback_notice(); } /** * Render the feedback notice. */ private function render_feedback_notice() { $generations = $this->feedback_options['successful_generations']; $days_used = ceil((time() - $this->feedback_options['install_date']) / DAY_IN_SECONDS); ?>