Plugin API - RainLoop/rainloop-webmail GitHub Wiki
Defining a New hook
If you are developing a plugin that allows others to interact with it you can do a couple of things to get started.
First, your plugin should have access to the Plugins Manager, you can see how this is done in the Actions class below:
public function Plugins() {
if (null === $this->oPlugins) {
`$this->oPlugins = new \RainLoop\Plugins\Manager($this);`
`$this->oPlugins->SetLogger($this->Logger());`
}
return $this->oPlugins;
}
Secondly, when you wish to call the hook you would use the following:
$this->Plugins()->RunHook($hookName, array $hookParameters);
Known Hooks
- filter.application-config
function filterApplicationConfig( \RainLoop\Config\Application() $oConfig ) {}
- main.fabrica, main.fabrica[2]
function mainFabrica(string $sName, array &$mResult) {}
function mainFabrica2(string $sName, array &$mResult, \RainLoop\Model\Account $oAccount) {}
- filter.fabrica
function filterFabrica(string $sName, array &$mResult, \RainLoop\Model\Account $oAccount) {}
- filter.acount (Actually for accounts)
function filterAcount(\RainLoop\Model\Account $oAccount) {}
- filter.login-credentials.step-1 filter.login-credentials.step-2
function filterLoginCredentialsStep1(string &$sEmail, string &$sPassword) { }
- filter.login-credentials
function filterLoginCredentials(string &$sEmail, string &$sLogin, string &$sPassword) { }
- event.login-pre-login-provide
function loginPreLoginProvide() { }
-- event.login-post-login-provide
function loginPostLoginProvide (\RainLoop\Model\Account &$oAccount) { }
- filter.filters-fake
function filtersFake(\RainLoop\Model\Account $oAccount, array &$aFakeFilters) {}
- filter.filters-save
function filtersSave(\RainLoop\Model\Account $oAccount, array &$aFilters, string &$sRaw, &$bRawIsActive) { }
- service.app-delay-start-begin
function serviceAppDelayStartBegin() { }
- service.app-delay-start-end
function serviceAppDelayStartEnd() { }
- filter.system-folders-names
function systemFolderNames(\RainLoop\Model\Account $oAccount, array &$aCache) { }
- filter.folders-before
function foldersBefore(\RainLoop\Model\Account $oAccount, &$oFolderCollection) { }
- filter.folders-post
function foldersPost(\RainLoop\Model\Account $oAccount, &$oFolderCollection() { }
- filter.folders-system-types
function foldersSystemTypes(\RainLoop\Model\Account $oAccount, array &$aList) { }
- filter.folders-complete
function foldersComplete(\RainLoop\Model\Account $oAccount, &$oFolderCollection() { }
- filter.message-html / filter.message-plain
function filterMessage(\RainLoop\Model\Account $oAccount, \MailSo\Mime\Message &$oMessage, string &$sTextToAdd){ }
- filter.build-message
function buildMessage ( \MailSo\Mime\Message &$oMessage ) { }
- filter.build-message[2]
function buildMessage2 ( \MailSo\Mime\Message &$oMessage, \RainLoop\Model\Account $oAccount ) { }
- filter.read-receipt-message-plain
function readReceiptMessagePlain(\RainLoop\Model\Account $oAccount, \MailSo\Mime\Message &$oMessage, string &$sText) { }
- filter.build-read-receipt-message
function buildReadReceiptMessage(\MailSo\Mime\Message &$oMessage, \RainLoop\Model\Account $oAccount) { }
- filter.smtp-message-stream
function smtpMessageStream(\RainLoop\Model\Account $oAccount, &$rMessageStream &$iMessageStreamSize) { }
- filter.message-rcpt
function messageRcpt(\RainLoop\Model\Account $oAccount, &$oRcpt) { }
- filter.smtp-from
function smtpFrom(\RainLoop\Model\Account $oAccount, \MailSo\Mime\Message $oMessage, string &$sFrom) { }
- filter.smtp-hidden-rcpt
function smtpHiddenRcpt(\RainLoop\Model\Account $oAccount, \MailSo\Mime\Message $oMessage, array &$aHiddenRcpt) { }
- filter.send-message
function filterSendMessage(\MailSo\Mime\Message &$oMessage) { }
- filter.send-message[2]
function filterSendMessage2(\MailSo\Mime\Message &$oMessage, \RainLoop\Model\Account $oAccount) { }
- filter.sent-message-stream
function filterSentMessageStream(\RainLoop\Model\Account $oAccount, &$rMessageStream, &$iMessageStreamSize) { }
- filter.send-read-receipt-message
function filtersendReadReceiptMessage(\MailSo\Mime\Message &$oMessage, \RainLoop\Model\Account $oAccount) { }
-
ajax.suggestions-input-parameters
function ajaxSuggestionsInputParameters(string &$sQuery, &$iLimit, \RainLoop\Model\Account $oAccount) { }
-
ajax.suggestions-pre
function ajaxSuggestionsPre(array &$aResult, string $sQuery, \RainLoop\Model\Account $oAccount, $iLimit) { }
-
ajax.suggestions-post
function ajaxSuggestionsPost(array &$aResult, string $sQuery, \RainLoop\Model\Account $oAccount, $iLimit) { }
-
filter.result-message
function filterResultMessage(\MailSo\Mime\Message &$oMessage) { }
-
filter.result-message[2]
function filterResultMessage2(\MailSo\Mime\Message &$oMessage, \RainLoop\Model\Account $oAccount) { }
-
main.default-response-data
function mainDefaultResponseData($sActionName, &$mResult) { }
-
main.default-response
function mainDefaultResponse($sActionName, &$aResponseItem) { }
-
main.default-response-error-data
function mainDefaultResponseErrorData($sActionName, &$iErrorCode, &$sErrorMessage) { }
-
filter.action-params
function filterActionParams($sMethodName, &$aCurrentActionParams) { }
-
filter.response-object
function filterResponseObject($sClassName, $mResult) { }