v1.6.14
wolbroadcast: adopt the non-destructive schema() contract (#24).
It was the last plugin here still building its table from install() directly, and install() called uninstall() first — which is a DROP. Reinstalling the plugin, or repairing it after a failed install, threw away every broadcast address the user had entered.
That was not a dormant path. Plugin::installdb() uses a manager's schema() when it is there and falls back to calling install() when it is not. wolbroadcast had no schema(), so the fallback — and the drop — is what ran on every install.
It now matches every other plugin: createSql() as step 0, an append-only schema(), and an install() that applies pending steps only. On an existing install, step 0 is a CREATE TABLE IF NOT EXISTS — a no-op that records pSchema = 1. No data moves, and nothing is dropped.
It also closes the one verification gap left by v1.6.13: createSql() being public means the probe can call it, so the live check now covers 24 tables instead of 23 — all DDL accepted, 61 columns carrying a default, and wolbroadcast itself coming out with wbDesc defaulted and wbName / wbBroadcast correctly left bare.
The test suite grows three checks per table-building manager: it has createSql(), a plugin's own manager has schema(), and no install() calls uninstall().
Works against any 1.6 core carrying FOGManagerController::createTableSql() (FOGProject/fogproject #1275), the same requirement as v1.6.13.