I’ve recently learned that register_uninstall_hook() allows a single callback per plugin. This meant that if you were using both scbOptions and scbTable, for example, when a user uninstalled that plugin, either the option wasn’t deleted or the table wasn’t dropped.

This is now fixed by using a new method, scbUtil::add_uninstall_hook(). It also prevents multiple UPDATE queries to execute on each page load.

This also means that scbOptions, scbTable and scbBoxesPage now require scbUtil to work.

Other improvements:

  • new methods for scbOptions: get_defaults(); cleanup(); __isset();
  • new method for scbAdminPage: page_help();
  • scbAdminPage::submit_button() accepts an array of arguments
  • scbAdminPage can create top level menus
  • scbBoxesPage can assign the same handler to multiple boxes, with different arguments
  • debug() outputs at the end of the page, only for administrators

Here is the full changeset.