You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`uninstall.php` — complete data removal. Runs outside the plugin's namespace (no autoloader available), uses raw `$wpdb` queries. Drops all four custom tables, deletes CPT posts, removes capability from all roles, clears options/transients/cron.
-`uninstall.php` — complete data removal. Runs outside the plugin's namespace (no autoloader available), uses raw `$wpdb` queries. Drops all four custom tables, deletes CPT posts, removes capability from all roles, clears options (including `kntnt_ad_attr_settings`)/transients/cron, removes log directory.
52
56
-`Plugin::deactivate()` — clears cron (`kntnt_ad_attr_daily_cleanup` and `kntnt_ad_attr_process_queue`), transients, and rewrite rules. Preserves data.
53
57
54
58
**Migrator pattern:** Version-based migrations in `migrations/X.Y.Z.php`. Each file returns `function(\wpdb $wpdb): void`. Migrator compares `kntnt_ad_attr_version` option with the plugin header version on `plugins_loaded` and runs pending files in order.
@@ -57,7 +61,13 @@ All machine-readable names use `kntnt-ad-attr` (hyphens) / `kntnt_ad_attr` (unde
57
61
58
62
**Shared utility methods (v1.5.1):**`Post_Type::get_valid_hashes(array $hashes)` returns hashes with published tracking URL posts (used by both `Conversion_Handler` and `Rest_Endpoint`). `Post_Type::get_distinct_meta_values(string $meta_key)` returns sorted distinct meta values for filter dropdowns (used by `Campaign_List_Table`).
59
63
60
-
**Adapter infrastructure (v1.2.0):** Click_ID_Store, Queue, and Queue_Processor are instantiated in Plugin constructor and injected into Click_Handler (Click_ID_Store), Conversion_Handler (Consent, Bot_Detector, Click_ID_Store, Queue, Queue_Processor), Cron (Click_ID_Store, Queue), and Admin_Page (Queue). Two new filters: `kntnt_ad_attr_click_id_capturers` and `kntnt_ad_attr_conversion_reporters`. Queue processing via `kntnt_ad_attr_process_queue` cron hook. If no adapters are registered, zero overhead.
64
+
**Adapter infrastructure (v1.2.0):** Click_ID_Store, Queue, and Queue_Processor are instantiated in Plugin constructor and injected into Click_Handler (Click_ID_Store), Conversion_Handler (Consent, Bot_Detector, Click_ID_Store, Queue, Queue_Processor), Cron (Click_ID_Store, Queue, Logger), and Admin_Page (Queue, Queue_Processor). Two new filters: `kntnt_ad_attr_click_id_capturers` and `kntnt_ad_attr_conversion_reporters`. Queue processing via `kntnt_ad_attr_process_queue` cron hook. If no adapters are registered, zero overhead.
65
+
66
+
**Settings and Logger (v1.8.0):**`Settings` manages plugin-wide configuration in a single `kntnt_ad_attr_settings` option with filter-based defaults: cookie_lifetime, dedup_seconds, enable_logging, log file sizes, and queue retry parameters. `Logger` writes timestamped diagnostic entries to `wp-content/uploads/kntnt-ad-attribution/kntnt-ad-attribution.log`, shared by core and add-on plugins. Log methods: `info(string $prefix, string $message)` and `error(string $prefix, string $message)`. File auto-rotation between configurable max/min KB limits. `Settings_Page` under Settings > Ad Attribution provides UI for all settings across three sections: Cookies, Logging, Queue (Retry).
67
+
68
+
**Queue management UI (v1.8.0):**`Queue_List_Table` (WP_List_Table subclass) displays pending/failed queue jobs with columns: Reporter, Description (label), Created, Next Retry, Attempts, Error. Row actions: "Run Now" (via `Queue_Processor::process_single()`) and "Delete" (via `Queue::delete()`). The `Queue::enqueue()` method accepts optional `label` and per-job `retry_params` (attempts_per_round, retry_delay, max_rounds, round_delay). Conversion reporters return structured items with `payload`, optional `label`, and optional `retry_params` keys.
69
+
70
+
**Default date filter (v1.8.0):**`Campaign_List_Table::get_default_date_range()` computes the two most recent complete calendar weeks based on the WordPress "Week Starts On" setting. Used as the default when no date filter is provided.
61
71
62
72
**Merged admin view (v1.6.0):** The admin page is a single merged view (no tabs). Add-on plugins can still register custom views via `kntnt_ad_attr_admin_tabs` filter; when `?tab=<slug>` is passed, the `kntnt_ad_attr_admin_tab_{$tab}` action fires for rendering.
63
73
@@ -87,7 +97,7 @@ The test suite has three levels. See `docs/testing-strategy.md` for full details
87
97
88
98
| Level | Framework | Tests | What it covers |
89
99
|-------|-----------|-------|----------------|
90
-
| PHP unit | Pest + Brain Monkey + Mockery |225| Individual class methods in isolation |
100
+
| PHP unit | Pest + Brain Monkey + Mockery |252| Individual class methods in isolation |
91
101
| JS unit | Vitest + happy-dom | 28 |`pending-consent.js` and `admin.js`|
0 commit comments