mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-04-02 06:14:51 -04:00
The PluginConfig class extends CodeIgniter\Model which has its own set() method for query building. Renaming get()/set() to getValue()/setValue() avoids this conflict. Also fixed: - batchSave() to use setValue() instead of set() - Updated all callers in PluginManager and BasePlugin to use renamed methods
70 lines
1.9 KiB
PHP
70 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Libraries\Plugins;
|
|
|
|
use App\Models\PluginConfig;
|
|
|
|
abstract class BasePlugin implements PluginInterface
|
|
{
|
|
protected PluginConfig $configModel;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->configModel = new PluginConfig();
|
|
}
|
|
|
|
public function install(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function uninstall(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function isEnabled(): bool
|
|
{
|
|
$enabled = $this->configModel->getValue("{$this->getPluginId()}_enabled");
|
|
return $enabled === '1' || $enabled === 'true';
|
|
}
|
|
|
|
protected function getSetting(string $key, mixed $default = null): mixed
|
|
{
|
|
$value = $this->configModel->getValue("{$this->getPluginId()}_{$key}");
|
|
return $value ?? $default;
|
|
}
|
|
|
|
protected function setSetting(string $key, mixed $value): bool
|
|
{
|
|
$stringValue = is_array($value) || is_object($value)
|
|
? json_encode($value)
|
|
: (string)$value;
|
|
|
|
return $this->configModel->setValue("{$this->getPluginId()}_{$key}", $stringValue);
|
|
}
|
|
|
|
public function getSettings(): array
|
|
{
|
|
return $this->configModel->getPluginSettings($this->getPluginId());
|
|
}
|
|
|
|
public function saveSettings(array $settings): bool
|
|
{
|
|
$prefixedSettings = [];
|
|
foreach ($settings as $key => $value) {
|
|
if (is_array($value) || is_object($value)) {
|
|
$prefixedSettings["{$this->getPluginId()}_{$key}"] = json_encode($value);
|
|
} else {
|
|
$prefixedSettings["{$this->getPluginId()}_{$key}"] = (string)$value;
|
|
}
|
|
}
|
|
|
|
return $this->configModel->batchSave($prefixedSettings);
|
|
}
|
|
|
|
protected function log(string $level, string $message): void
|
|
{
|
|
log_message($level, "[Plugin:{$this->getPluginName()}] {$message}");
|
|
}
|
|
} |