marc-leopold/cms/plugins/rainlab/builder/classes/PluginVector.php

58 lines
1.3 KiB
PHP
Raw Permalink Normal View History

2019-02-25 14:56:59 +00:00
<?php namespace RainLab\Builder\Classes;
use System\Classes\PluginBase;
use System\Classes\PluginManager;
/**
* Holds a plugin code object and a plugin information class instancd.
*
* @package rainlab\builder
* @author Alexey Bobkov, Samuel Georges
*/
class PluginVector
{
/**
* @var PluginBase Plugin information class instance
*/
public $plugin;
/**
* @var PluginCode Plugin code object
*/
public $pluginCodeObj;
public function __construct(PluginBase $plugin, PluginCode $pluginCodeObj)
{
$this->plugin = $plugin;
$this->pluginCodeObj = $pluginCodeObj;
}
public static function createFromPluginCode($pluginCode)
{
$pluginCodeObj = new PluginCode($pluginCode);
$plugins = PluginManager::instance()->getPlugins();
foreach ($plugins as $code=>$plugin) {
if ($code == $pluginCode) {
return new PluginVector($plugin, $pluginCodeObj);
}
}
return null;
}
public function getPluginName()
{
if (!$this->plugin) {
return null;
}
$pluginInfo = $this->plugin->pluginDetails();
if (!isset($pluginInfo['name'])) {
return null;
}
return $pluginInfo['name'];
}
}