Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Settings/src/Configure/Engine/DatabaseConfig.php
<?php
namespace Croogo\Settings\Configure\Engine;

use
Cake\Cache\Cache;
use
Cake\Core\Configure\ConfigEngineInterface;
use
Cake\Log\Log;
use
Cake\ORM\TableRegistry;
use
Cake\Utility\Hash;
use
Croogo\Settings\Model\Entity\Setting;
use function
Croogo\Core\timerStart;
use function
Croogo\Core\timerStop;

class
DatabaseConfig implements ConfigEngineInterface
{
   
/**
     * Read method is used for reading configuration information from sources.
     * These sources can either be static resources like files, or dynamic ones like
     * a database, or other datasource.
     *
     * @param string $key Key to read.
     * @return array An array of data to merge into the runtime configuration
     */
   
public function read($key)
    {
       
timerStart('Loading settings from database');

       
$values = Cache::remember('configure-settings-' . $key, function () use ($key) {
           
$settings = TableRegistry::get('Croogo/Settings.Settings')->find('list', [
               
'keyField' => 'key',
               
'valueField' => function (Setting $setting) {
                    if (
$setting->type === 'integer') {
                        return (int)
$setting->value;
                    }

                    return
$setting->value;
                }
            ])->
cache('configure-settings-query-' . $key, 'cached_settings')->toArray();

           
$settings = Hash::expand($settings);

            if (empty(
$setting['Meta'])) {
               
$settings['Meta'] = TableRegistry::get('Croogo/Meta.Meta')
                    ->
find('list', ['keyField' => 'key', 'valueField' => 'value'])
                    ->
where(['model' => ''])
                    ->
cache('configure-settings-query-' . $key . '-meta', 'cached_settings')
                    ->
toArray();
            }

            return
$settings;
        },
'cached_settings');

       
timerStop('Loading settings from database');

        return
$values;
    }

   
/**
     * Dumps the configure data into source.
     *
     * @param string $key The identifier to write to.
     * @param array $data The data to dump.
     * @return bool True on success or false on failure.
     */
   
public function dump($key, array $data)
    {
       
Log::debug($key);
       
Log::debug($data);

        return
true;
    }
}