From aa66d15eb59ebac4890c3fd52eb068144f19aa2d Mon Sep 17 00:00:00 2001 From: Vladimir Bryzgalov Date: Fri, 17 Apr 2026 22:48:21 +0500 Subject: [PATCH] feat(retro-importer): queue last-N Flamingo spam posts with dedup --- includes/class-retro-importer.php | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 includes/class-retro-importer.php diff --git a/includes/class-retro-importer.php b/includes/class-retro-importer.php new file mode 100644 index 0000000..f566928 --- /dev/null +++ b/includes/class-retro-importer.php @@ -0,0 +1,66 @@ + 'flamingo_inbound', + 'post_status' => 'flamingo-spam', + 'orderby' => 'date', + 'order' => 'DESC', + 'posts_per_page' => $count, + ]; + if ($days > 0) { + $args['date_query'] = [[ + 'after' => gmdate('Y-m-d H:i:s', time() - $days * 86400), + 'inclusive' => true, + ]]; + } + $posts = get_posts($args); + + $added = 0; $skipped = 0; + foreach ($posts as $post) { + if (!$allow_repeat && Queue::exists_for_flamingo((int)$post->ID, true)) { + $skipped++; + continue; + } + $fields = FlamingoHelper::extract_fields($post); + $reason = FlamingoHelper::extract_reason($post); + $classification = Classifier::classify($fields, ['reason' => $reason]); + + $payload = MessageFormatter::build([ + 'fields' => $fields, + 'classification' => $classification, + 'site_title' => Settings::get_site_title(), + 'form_title' => (string)get_post_meta($post->ID, '_subject', true), + 'submitted_at' => wp_date('d.m.Y H:i', (int)get_post_time('U', true, $post)), + 'reason' => $reason, + 'ip' => (string)get_post_meta($post->ID, '_meta_remote_ip', true), + 'user_agent' => (string)get_post_meta($post->ID, '_meta_user_agent', true), + 'is_retro' => true, + ]); + + Queue::enqueue([ + 'flamingo_post_id' => (int)$post->ID, + 'form_id' => null, + 'source_key' => 'cf7', + 'payload_json' => wp_json_encode($payload), + 'label' => $classification['label'], + 'is_retro' => 1, + ]); + $added++; + } + + return compact('added', 'skipped'); + } +}