Файл: concrete5.7.5.6/concrete/src/Config/ConfigStore.php
Строк: 46
<?php
namespace ConcreteCoreConfig;
use ConcreteCoreFoundationObject;
use Loader;
class ConfigStore {
/**
* @var Database
*/
protected $db;
/**
* @var array
*/
protected $rows;
public function __construct() {
$this->load();
}
protected function load() {
$this->rows = array();
$this->db = Loader::db();
if (!$this->db) {
return;
}
$r = $this->db->Execute('select * from ConfigStore where uID = 0 order by cfKey asc');
while ($row = $r->FetchRow()) {
if (!$row['pkgID']) {
$row['pkgID'] = 0;
}
$this->rows["{$row['cfKey']}.{$row['pkgID']}"] = $row;
}
$r->Close();
}
/**
* Get a config item
* @param string $cfKey
* @param int $pkgID optional
* @return ConfigValue|void
*/
public function get($cfKey, $pkgID = null) {
if ($pkgID > 0 && isset($this->rows["{$cfKey}.{$pkgID}"])) {
return $this->rowToConfigValue($this->rows["{$cfKey}.{$pkgID}"]);
} else {
foreach ($this->rows as $row) {
if ($row['cfKey'] == $cfKey) {
return $this->rowToConfigValue($row);
}
}
}
return null;
}
public function getListByPackage($pkgID) {
$list = array();
foreach ($this->rows as $row) {
if ($row['pkgID'] == $pkgID) {
$list[] = $row['cfKey'];
}
}
return $list;
}
public function set($cfKey, $cfValue, $pkgID = 0) {
$timestamp = date('Y-m-d H:i:s');
if ($pkgID < 1) {
$pkgID = 0;
}
$this->rows["{$cfKey}.{$pkgID}"] = array(
'cfKey' => $cfKey,
'timestamp' => $timestamp,
'cfValue' => $cfValue,
'uID' => 0,
'pkgID' => $pkgID
);
$db = Loader::db();
if (!$db) {
return;
}
$db->query(
"replace into ConfigStore (cfKey, timestamp, cfValue, pkgID) values (?, ?, ?, ?)",
array($cfKey, $timestamp, $cfValue, $pkgID)
);
}
public function delete($cfKey, $pkgID = null) {
$db = Loader::db();
if ($pkgID > 0) {
unset($this->rows["{$cfKey}.{$pkgID}"]);
$db->query(
"delete from ConfigStore where cfKey = ? and pkgID = ?",
array($cfKey, $pkgID)
);
} else {
foreach ($this->rows as $key => $row) {
if ($row['cfKey'] == $cfKey) {
unset($this->rows[$key]);
}
}
$db->query(
"delete from ConfigStore where cfKey = ?",
array($cfKey)
);
}
}
}