Piwik \

插件

所有插件描述符类的基类。

任何想要将事件观察者添加到Matomo(以前是Piwik)的一个插件钩子,或有特殊的安装/卸载逻辑必须实现这个类。插件,可以指定他们需要的一切plugin.json文件,比如主题,不需要实现这个类。

类实现应该以它们所在的插件命名(例如,类UserCountry扩展插件).

插件元数据

除了为插件提供安装/卸载自己和添加事件观察者的地方之外,这个类还负责加载插件中的元数据。json文件。

插件。Json文件必须存在于插件的根目录中。它可以包含以下信息:

  • 描述:一个国际化的字符串描述插件的功能。
  • 主页:插件网站的URL。
  • 作者:作者数组列表,其中键为'name', 'email'和'主页'
  • 许可证:代码使用的许可(如GPL、MIT等)。
  • 版本:插件版本(例如,1.0.1)。
  • 主题真正的.如果真正的,插件将被视为一个主题。

例子

如何扩展

使用Piwik \常见;使用Piwik \插件;使用Piwik \分贝;MyPlugin类扩展了Plugin{公共函数registerEvents(){返回数组('API. js ')getReportMetadata' => 'getReportMetadata', '另一个。event' => array('function' => 'myOtherPluginFunction', 'after' => true //在其他人之后执行这个回调));}公共函数install() {Db::exec("CREATE TABLE " . exe)常见的::prefixTable(“mytable”)。“…”);}公共函数卸载(){Db::exec("DROP TABLE IF EXISTS " .}常见的::prefixTable (' mytable ')); } public function getReportMetadata(&$metadata) { // ... } public function myOtherPluginFunction() { // ... } }

方法

该类定义了以下方法:

__construct ()

构造函数。

签名

  • 它接受以下参数:
    • pluginName美元字符串|保龄球-一个要强制的插件名。如果未提供,则将其设置为类名的最后一部分。
  • 它会抛出以下异常之一:
    • 异常-如果插件元数据在getInformation()方法和plugin.json文件。

reloadPluginInformation ()

签名

  • 它不返回任何东西,也不返回混合结果。

getInformation ()

返回插件信息,包括:

  • 'description' => string //插件的1-2个句子描述
  • 'author' => string //插件作者
  • 'author_homepage' => string //作者主页URL(或电子邮件"mailto:youremail@example.org")
  • '主页' => string //插件主页URL
  • 'license' => string //插件许可证
  • 'version' => string //插件版本号;示例和第三方插件不能使用Version:: Version;第三方插件必须在每次插件发布时增加版本号
  • 'theme' => bool //该插件是否是主题(主题是插件,但插件不一定是主题)

签名

  • 它返回一个数组价值。

isPremiumFeature ()

签名

  • 这是一个最终确定方法。
  • 它不返回任何东西,也不返回混合结果。

shouldLoadUmdOnDemand ()

如果您希望插件的Vue模块在第一次引用时按需加载,而不是在页面加载时,则在此返回true。这可以用来改善初始页面加载时间,特别是当你的插件包含大量Vue代码时。

注意:这样做意味着任何其他依赖于你的插件将不再能够正常运行进口…从“并且”;,他们将不得不使用importPluginUmd ()函数CoreHome返回一个Promise。

签名

  • 它返回一个布尔价值。

registerEvents ()

从Matomo 2.15.0开始

返回带有关联事件观察器的事件列表。

派生类应该使用此方法将回调与事件关联起来。

签名

  • 返回:数组,例如,

    数组(“API。getReportMetadata' => 'myPluginFunction', '另一个。event' => array('function' => 'myOtherPluginFunction', 'after' => true //回调后执行w/o排序)“Yet.Another。event' => array('function' => 'myOtherPluginFunction', 'before' => true //在回调前执行w/o排序))

postLoad ()

此方法在加载插件并注册翻译后执行。

对于使用转换字符串的初始化代码非常有用。

签名

  • 它不返回任何东西,也不返回混合结果。

requiresInternetConnection ()

定义整个插件是否需要一个工作的互联网连接如果设置为true,插件将自动卸载如果enable_internet_features是0,即使插件被激活

签名

  • 它返回一个保龄球价值。

安装()

安装插件。派生类应该实现这个类,如果插件需要:

  • 创建表
  • 更新现有表
  • 等。

签名

  • 它不返回任何东西,也不返回混合结果。
  • 它会抛出以下异常之一:
    • 异常-如果由于某些原因安装失败。

卸载()

卸载插件。中所做的更改,派生类应实现此方法安装()需要在卸载过程中撤消。

在大多数情况下,如果你有安装()方法时,应提供卸载()方法。

签名

  • 它不返回任何东西,也不返回混合结果。
  • 它会抛出以下异常之一:
    • 异常-如果卸载失败,由于某种原因。

激活()

每次启用插件时执行。

签名

  • 它不返回任何东西,也不返回混合结果。

关闭()

每次插件被禁用时执行。

签名

  • 它不返回任何东西,也不返回混合结果。

getVersion ()

返回插件版本号。

签名

  • 这是一个最终确定方法。
  • 它返回一个字符串价值。

isTheme ()

返回真正的如果这个插件是一个主题,否则如果。

签名

  • 它返回一个保龄球价值。

getPluginName ()

返回插件的基类名称,但不包含命名空间,例如:“UserCountry”当插件类为“Piwik \ Plugins \ UserCountry \ UserCountry”

签名

  • 这是一个最终确定方法。
  • 它返回一个字符串价值。

findComponent ()

试图在这个插件中找到一个组件,如菜单或任务。

签名

  • 它接受以下参数:

    • componentName美元字符串) -要查找的组件的名称。如果你请求一个名为“Menu”的组件,它会在插件文件夹的根目录中查找一个名为“Menu.php”的文件,该文件实现了一个名为Piwik\ plugin \$PluginName\Menu的类。如果这样的文件存在,但没有实现这个类,它将被默默地忽略。
    • expectedSubclass美元字符串-如果不为空,将检查找到的文件是否扩展了给定的子类。如果请求的文件存在,但没有扩展该类,则会显示警告,建议开发人员扩展该类。
  • 返回:字符串|—如果请求的组件不存在,或者是找到的组件的实例,则为空。

findMultipleComponents ()

签名

  • 它接受以下参数:

    • directoryWithinPlugin美元

    • expectedSubclass美元

  • 它不返回任何东西,也不返回混合结果。

hasMissingDependencies ()

检测是否有任何缺失的依赖项。

签名

  • 它接受以下参数:
    • piwikVersion美元) -默认为当前Matomo版本
  • 它返回一个保龄球价值。

getMissingDependencies ()

签名

  • 它接受以下参数:

    • piwikVersion美元
  • 它不返回任何东西,也不返回混合结果。

getMissingDependenciesAsString ()

返回一个字符串(翻译后),描述这个插件和给定的Matomo版本缺少的需求

签名

  • 它接受以下参数:

    • piwikVersion美元字符串) - - -
  • 返回:字符串- " anonymouspiwikusagmeasurement要求PIWIK >=3.0.0"

schedulePluginReArchiving ()

计划重新归档该插件的报告,从该插件最后一次停用到现在。如果core:archive的最后一次运行时间早于插件的最后一次去激活时间,那么我们就用这个时间来代替。

注意:这只适用于CLI归档设置。

注:时间范围受限于(一般)rearchive_reports_in_past_last_n_monthsINI配置值。

签名

  • 它不返回任何东西,也不返回混合结果。
  • 它会抛出以下异常之一:
    • DI \ DependencyException
    • DI \ NotFoundException

getPluginNameFromBacktrace ()

从反向跟踪数组中提取插件名称。返回如果我们找不到的话。

签名

getPluginNameFromNamespace ()

从名称空间名称或完全限定类名称中提取插件名称。返回如果我们找不到的话。

签名

  • 它接受以下参数:

    • namespaceOrClassName美元字符串) -命名空间或类字符串。
  • 返回:字符串|- - - - - -

getPluginLastActivationTime ()

签名

  • 返回:日期|- - - - - -

  • 它会抛出以下异常之一:

getPluginLastDeactivationTime ()

签名

  • 返回:日期|- - - - - -

  • 它会抛出以下异常之一:

getChanges ()

获取该插件的所有更改

签名

  • 返回:数组——一系列变化[{“标题”:“abc”、“描述”:“xyz”,“链接名”:“def”,“链接”:“https://link”、“版本”:“1.2.3”}]
Baidu