Before getting started, some terminology may be helpful.

Adding a New Plugin Type

  1. Determine if the new plugin type is Instantiated or Non-Instantiated.
  2. Add the new type to Writing Registry Plugins.
  3. Historically, the Core Model of the plugin type has sometimes matched the plugin name (FooPlugin.FooPlugin), while some plugin types have added prefixes and/or suffixes (FooProvisioner.CoFooProvisionerTarget). Going forward, only the first style should be used. Plugins can still define additional models with relations to the core model. For Instantiated plugin types, define the Core Model format in the Supporting Model:

    // eg: in Authenticator.php:
    public $hasManyPlugins = array(
      // The array key is the plugin type
      "authenticator" => array(
        'coreModelFormat' => '%s'
      )
    );


  4. For Instantiated plugins, add the Supporting Model to Co::delete() so that proper cleanup can happen when a CO is deleted.