PluginManager
extends CApplicationComponent
in package
Factory for limesurvey plugin objects.
Table of Contents
Properties
- $api : mixed
- Object containing any API that the plugins can use.
- $pluginDirs : array<string|int, mixed>
- $shutdownObject : PluginManagerShutdownFunction
- Created at init.
- $guidToQuestion : array<string|int, mixed>
- Array mapping guids to question object class names.
- $plugins : array<string|int, mixed>
- $stores : array<string|int, mixed>
- $subscriptions : array<string, array<string|int, mixed>>
Methods
- dispatchEvent() : mixed
- dispatchEvent() : PluginEvent
- This function dispatches an event to all registered plugins.
- getAPI() : LimesurveyApi
- This function returns an API object, exposing an API to each plugin.
- getInstalledPlugins() : array<string|int, mixed>
- Return a list of installed plugins, but only if the files are still there
- getPluginFolder() : mixed
- getPluginInfo() : array<string|int, mixed>|null
- Gets the description of a plugin. The description is accessed via a static function inside the plugin file.
- getStore() : mixed
- Returns the storage instance of type $storageClass.
- init() : void
- Creates the plugin manager. Loads all active plugins.
- installPlugin() : array<string|int, mixed>
- Install a plugin given a plugin configuration and plugin type (core or user).
- installUploadedPlugin() : array<string|int, mixed>
- isPluginActive() : bool
- Return the status of plugin (true/active or false/desactive)
- isWhitelisted() : bool
- Returns true if the plugin name is allowlisted or the allowlist is disabled.
- loadAllPlugins() : void
- Load ALL plugins, active and non-active
- loadPlugin() : iPlugin|null
- Returns the instantiated plugin
- loadPlugins() : mixed
- Handles loading all active plugins
- loadQuestionObjects() : mixed
- Get a list of question objects and load some information about them.
- readConfigFiles() : void
- Read all plugin config files and updates information in database if plugin version differs.
- scanPlugins() : array<string|int, mixed>
- Scans the plugin directory for plugins.
- subscribe() : mixed
- Registers a plugin to be notified on some event.
- unsubscribe() : mixed
- Unsubscribes a plugin from an event.
- getPluginDescription() : string
- Get plugin description.
- getPluginName() : string
- Get plugin name.
- getAllowedCorePluginList() : array<string|int, string>
- Return the list of core plugins allowed to be loaded.
- getCorePluginList() : array<string|int, string>
- Return the core plugin list No way to update by php or DB
Properties
$api
Object containing any API that the plugins can use.
public
mixed
$api
The class name of the API class to load, or
$pluginDirs
public
array<string|int, mixed>
$pluginDirs
= [
// User plugins installed through command line.
'user' => 'webroot.plugins',
// Core plugins.
'core' => 'application.core.plugins',
// Uploaded plugins installed through ZIP file.
'upload' => 'uploaddir.plugins',
]
$shutdownObject
Created at init.
public
PluginManagerShutdownFunction
$shutdownObject
Used to deal with syntax errors etc in plugins during load.
$guidToQuestion
Array mapping guids to question object class names.
protected
array<string|int, mixed>
$guidToQuestion
= []
$plugins
protected
array<string|int, mixed>
$plugins
= []
$stores
protected
array<string|int, mixed>
$stores
= []
$subscriptions
protected
array<string, array<string|int, mixed>>
$subscriptions
= []
Array with string key to tuple value like 'eventName' => array($plugin, $method)
Methods
dispatchEvent()
public
dispatchEvent() : mixed
: void
dispatchEvent()
This function dispatches an event to all registered plugins.
public
dispatchEvent(PluginEvent $event[, string|array<string|int, mixed> $target = array() ]) : PluginEvent
Parameters
- $event : PluginEvent
-
Object holding all event properties
- $target : string|array<string|int, mixed> = array()
-
Optional name of plugin to fire the event on
Return values
PluginEventgetAPI()
This function returns an API object, exposing an API to each plugin.
public
getAPI() : LimesurveyApi
In the current case this is the LimeSurvey API.
Return values
LimesurveyApigetInstalledPlugins()
Return a list of installed plugins, but only if the files are still there
public
getInstalledPlugins() : array<string|int, mixed>
Tags
Return values
array<string|int, mixed>getPluginFolder()
public
getPluginFolder(ExtensionConfig $config, string $pluginType) : mixed
Parameters
- $config : ExtensionConfig
- $pluginType : string
-
User, core or upload
getPluginInfo()
Gets the description of a plugin. The description is accessed via a static function inside the plugin file.
public
getPluginInfo(string $pluginClass[, mixed $pluginDir = null ]) : array<string|int, mixed>|null
Parameters
- $pluginClass : string
-
The classname of the plugin
- $pluginDir : mixed = null
Tags
Return values
array<string|int, mixed>|nullgetStore()
Returns the storage instance of type $storageClass.
public
getStore(string $storageClass) : mixed
If needed initializes the storage object.
Parameters
- $storageClass : string
init()
Creates the plugin manager. Loads all active plugins.
public
init() : void
If $plugin->save() is used in this method, it can lead to an infinite event loop, since beforeSave tries to get the PluginManager, which executes init() again.
installPlugin()
Install a plugin given a plugin configuration and plugin type (core or user).
public
installPlugin(ExtensionConfig $extensionConfig, string $pluginType) : array<string|int, mixed>
Parameters
- $extensionConfig : ExtensionConfig
- $pluginType : string
-
'user' or 'core', depending on location of folder.
Return values
array<string|int, mixed> —[boolean $result, string $errorMessage]
installUploadedPlugin()
public
installUploadedPlugin(string $destdir) : array<string|int, mixed>
Parameters
- $destdir : string
Return values
array<string|int, mixed> —[boolean $result, string $errorMessage]
isPluginActive()
Return the status of plugin (true/active or false/desactive)
public
isPluginActive(mixed $sPluginName) : bool
Parameters
- $sPluginName : mixed
Return values
boolisWhitelisted()
Returns true if the plugin name is allowlisted or the allowlist is disabled.
public
isWhitelisted(string $pluginName) : bool
Parameters
- $pluginName : string
Return values
boolloadAllPlugins()
Load ALL plugins, active and non-active
public
loadAllPlugins() : void
loadPlugin()
Returns the instantiated plugin
public
loadPlugin(string $pluginName[, int $id = null ][, bool $init = true ]) : iPlugin|null
Parameters
- $pluginName : string
- $id : int = null
-
Identifier used for identifying a specific plugin instance.
- $init : bool = true
-
launch init function (if exist) If ommitted will return the first instantiated plugin with the given name.
Return values
iPlugin|null —The plugin or null when missing
loadPlugins()
Handles loading all active plugins
public
loadPlugins() : mixed
Possible improvement would be to load them for a specific context. For instance 'survey' for runtime or 'admin' for backend. This needs some thinking before implementing.
loadQuestionObjects()
Get a list of question objects and load some information about them.
public
loadQuestionObjects([mixed $forceReload = false ]) : mixed
This registers the question object classes with Yii.
Parameters
- $forceReload : mixed = false
readConfigFiles()
Read all plugin config files and updates information in database if plugin version differs.
public
readConfigFiles() : void
scanPlugins()
Scans the plugin directory for plugins.
public
scanPlugins([bool $includeInstalledPlugins = false ]) : array<string|int, mixed>
This function is not efficient so should only be used in the admin interface that specifically deals with enabling / disabling plugins.
Parameters
- $includeInstalledPlugins : bool = false
-
If set, also return plugins even if already installed in database.
Tags
Return values
array<string|int, mixed>subscribe()
Registers a plugin to be notified on some event.
public
subscribe(iPlugin $plugin, string $event[, string $function = null ]) : mixed
Parameters
- $plugin : iPlugin
-
Reference to the plugin.
- $event : string
-
Name of the event.
- $function : string = null
-
Optional function of the plugin to be called.
unsubscribe()
Unsubscribes a plugin from an event.
public
unsubscribe(iPlugin $plugin, string $event) : mixed
Parameters
- $plugin : iPlugin
-
Reference to the plugin being unsubscribed.
- $event : string
-
Name of the event. Use '*', to unsubscribe all events for the plugin.
getPluginDescription()
Get plugin description.
protected
getPluginDescription(string $class[, ExtensionConfig $extensionConfig = null ]) : string
First look in config.xml, then in plugin class.
Parameters
- $class : string
- $extensionConfig : ExtensionConfig = null
Tags
Return values
stringgetPluginName()
Get plugin name.
protected
getPluginName(string $class[, ExtensionConfig $extensionConfig = null ]) : string
First look in config.xml, then in plugin class.
Parameters
- $class : string
- $extensionConfig : ExtensionConfig = null
Tags
Return values
stringgetAllowedCorePluginList()
Return the list of core plugins allowed to be loaded.
private
getAllowedCorePluginList() : array<string|int, string>
That is, all core plugins not in the blocklist.
Return values
array<string|int, string>getCorePluginList()
Return the core plugin list No way to update by php or DB
private
static getCorePluginList() : array<string|int, string>