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

66 lines
1.6 KiB
PHP
Raw Permalink Normal View History

2019-02-25 14:56:59 +00:00
<?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;
}
}