66 lines
1.6 KiB
PHP
66 lines
1.6 KiB
PHP
<?php namespace RainLab\Builder\Classes;
|
|
|
|
use ApplicationException;
|
|
use Lang;
|
|
use File;
|
|
|
|
/**
|
|
* A base class for models that keep data in the plugin.yaml file.
|
|
*
|
|
* @package rainlab\builder
|
|
* @author Alexey Bobkov, Samuel Georges
|
|
*/
|
|
abstract class PluginYamlModel extends YamlModel
|
|
{
|
|
protected $pluginName;
|
|
|
|
public function loadPlugin($pluginCode)
|
|
{
|
|
$pluginCodeObj = new PluginCode($pluginCode);
|
|
|
|
$filePath = self::pluginSettingsFileExists($pluginCodeObj);
|
|
if ($filePath === false) {
|
|
throw new ApplicationException(Lang::get('rainlab.builder::lang.plugin.error_settings_not_editable'));
|
|
}
|
|
|
|
$this->initPropertiesFromPluginCodeObject($pluginCodeObj);
|
|
|
|
$result = parent::load($filePath);
|
|
|
|
$this->loadCommonProperties();
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function getPluginName()
|
|
{
|
|
return Lang::get($this->pluginName);
|
|
}
|
|
|
|
protected function loadCommonProperties()
|
|
{
|
|
if (!array_key_exists('plugin', $this->originalFileData)) {
|
|
return;
|
|
}
|
|
|
|
$pluginData = $this->originalFileData['plugin'];
|
|
|
|
if (array_key_exists('name', $pluginData)) {
|
|
$this->pluginName = $pluginData['name'];
|
|
}
|
|
}
|
|
|
|
protected function initPropertiesFromPluginCodeObject($pluginCodeObj)
|
|
{
|
|
}
|
|
|
|
protected static function pluginSettingsFileExists($pluginCodeObj)
|
|
{
|
|
$filePath = File::symbolizePath($pluginCodeObj->toPluginFilePath());
|
|
if (File::isFile($filePath)) {
|
|
return $filePath;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
} |