Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
33.33% covered (danger)
33.33%
1 / 3
CRAP
46.43% covered (danger)
46.43%
13 / 28
Config
0.00% covered (danger)
0.00%
0 / 1
33.33% covered (danger)
33.33%
1 / 3
21.45
46.43% covered (danger)
46.43%
13 / 28
 install
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
6 / 6
 setConfig
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 14
 getConfig
0.00% covered (danger)
0.00%
0 / 1
5.05
87.50% covered (warning)
87.50%
7 / 8
<?php
namespace Entity;
class Config extends ModelBase
{
    private static $config = array();
    protected function install()
    {
        $dbPrefix = $this->getDbPrefix();
        $result = self::$dbo->exec("CREATE TABLE IF NOT EXISTS `{$dbPrefix}config` (
            `lang` VARCHAR(8) NULL,
            `key` VARCHAR(64) NOT NULL,
            `value` TEXT NULL,
            UNIQUE(`lang`, `key`)
        )");
        if ($result === false)
            throw new \Exception(get_class().": ".self::$dbo->errorInfo()[2]);
        return true;
    }
    public static function setConfig($lang, $key, $value)
    {
        $fetcher = new self();
        $data = $fetcher->selects(array("lang" => $lang, "key" => $key));
        if (empty($data))
        {
            $data = new self();
            $data->lang = $lang;
            $data->key = $key;
            $data->value = $value;
            $data->save();
        }
        else
        {
            $data = $data[0];
            $data->value = $value;
            $data->save();
        }
    }
    public static function getConfig($lang =null, $key =null, $defaultValue =null)
    {
        $fetcher = new self();
        if (isset(self::$config[$lang]))
            return;
        $values = $fetcher->selects(array("lang" => $lang));
        foreach ($values as $i)
            self::$config[$lang][$i->key] = $i->value;
        if ($key)
            return (isset(self::$config[$lang][$key]) ? self::$config[$lang][$key] : $defaultValue);
        return $defaultValue;
    }
}