Current File : /home/n742ef5/royalanteam.com/wp-content/plugins/myhome-core/framework/app/Helpers/HasSettings.php
<?php

namespace Tangibledesign\Framework\Helpers;

trait HasSettings
{
    abstract public function getSettingKeys(): array;

    public function updateSettings(array $data, array $settingKeys = []): void
    {
        if (empty($settingKeys)) {
            $settingKeys = $this->getSettingKeys();
        }

        foreach ($settingKeys as $settingKey) {
            $value = array_key_exists($settingKey, $data) ? $data[$settingKey] : '';
            $method = $this->getSettingMethodName($settingKey);

            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
    }

    protected function getSettingMethodName(string $settingKey): string
    {
        return 'set' . str_replace(
                ' ',
                '',
                ucwords(str_replace('_', ' ', str_replace(tdf_prefix(), '', $settingKey)))
            );
    }

}