Creating Plugins for Metavus
Plugins are a way of adding new functionality to or modifying existing functionality of a Metavus site. (They are not intended for purely cosmetic changes – if you want to change just the look and feel of your site, a new interface is probably a better choice, rather than a plugin. See Creating Interfaces for more on interface creation and usage.)
Classes and Attributes
The core component of a Metavus plugin is a PHP class, with the plugin’s base name as the class name. All plugins must be descendants of the \Metavus\Plugin
base class, and at minimum must implement their own version of the register()
method, to set the plugin attributes:
class ListSubscriber extends \Metavus\Plugin { function register() { $this->Name = "State University Library Mailing List Subscription Plugin"; $this->Version = "1.0"; $this->Description = "This plugin will add new users to the StateLib " ." mailing list when they verify their Metavus account, and remove" ." them if their account is deleted."; $this->Author = "John Doe"; $this->Url = "http://library.state.edu/metavusdev/listsubscriberplugin.html"; $this->Email = "jdoe@state.edu"; $this->Requires = [ "MetavusCore" => "1.1.0", ]; } };
The only attributes that must be set are $this->Name
and $this->Version
, but assigning values to the others is strongly encouraged, particularly if you may be sharing your plugin with others. The $this->Name
attribute should contain a human-readable name for your plugin.
The $this->Requires
attribute can be used to specify the minimum versions of other plugins that your plugin must have to run. The MetavusCore plugin can be required to ensure that your plugin is running under at least the specified version of Metavus.
Configuration
Plugin configuration settings can be specified via the $this->CfgSetup
attribute:
$this->CfgSetup["SubConfirm"] = [ "Type" => FormUI::FTYPE_FLAG, "Label" => "Subscription Confirmation", "Help" => "This determines whether new subscribers will be required to confirm their mailing list subscription.", "Default" => true, "OnLabel" => "Yes", "OffLabel" => "No", ];
The top-level index to $this->CfgSetup[]
array is the setting name, which is what is passed in to $this->getConfigSetting()
to retrieve the setting value.