blog->settings->get(My::id()); $this->pack_nocomment = (bool) ($s->get('pack_nocomment') ?? false); $this->pack_fixnewline = (bool) ($s->get('pack_fixnewline') ?? false); $this->pack_overwrite = (bool) ($s->get('pack_overwrite') ?? false); $this->pack_filename = (string) ($s->get('pack_filename') ?? '%type%-%id%'); $this->secondpack_filename = (string) ($s->get('secondpack_filename') ?? '%type%-%id%-%version%'); $this->pack_repository = (string) ($s->get('pack_repository') ?? ''); $this->pack_excludefiles = (string) ($s->get('pack_excludefiles') ?? '*.zip,*.tar,*.tar.gz,.directory,.hg'); } public function getSetting(string $key): mixed { return $this->{$key} ?? null; } /** * Overwrite a plugin settings (in db) * * @param string $key The setting ID * @param mixed $value The setting value * * @return bool True on success */ public function writeSetting(string $key, mixed $value): bool { if (property_exists($this, $key) && settype($value, gettype($this->{$key})) === true) { dcCore::app()->blog->settings->get(My::id())->drop($key); dcCore::app()->blog->settings->get(My::id())->put($key, $value, gettype($this->{$key}), '', true, true); return true; } return false; } /** * List defined settings keys * * @return array The settings keys */ public function listSettings(): array { return array_keys(get_class_vars(Settings::class)); } }