58 lines
1.3 KiB
PHP
58 lines
1.3 KiB
PHP
<?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'];
|
|
}
|
|
} |