pohja/lib/KeyValue.php

53 lines
No EOL
1.3 KiB
PHP

<?php
class KeyValue {
protected static $kv = null;
public static function get(string $keyname, ?string $channel = null) {
if (self::$kv === null) {
self::load();
}
if ($channel === null) {
$channel = "all";
}
if (isset(self::$kv[$keyname][$channel])) {
return self::$kv[$keyname][$channel];
}
return null;
}
public static function save(string $keyname, string $value, ?string $channel = null) {
if (self::$kv === null) {
self::load();
}
if ($channel === null) {
$channel = "all";
}
$db = new Database();
$stmt = $db::$handle->prepare("INSERT OR REPLACE INTO `keyvalue` (`key`, `value`, `channel`, `created`) VALUES (:key, :value, :channel, strftime('%Y-%m-%d %H:%M:%S','now'))");
$stmt->bindValue(":key", $keyname, SQLITE3_TEXT);
$stmt->bindValue(":value", $value, SQLITE3_TEXT);
$stmt->bindValue(":channel", $channel, SQLITE3_TEXT);
$stmt->execute();
self::$kv[$keyname][$channel] = $value;
}
protected static function load() {
$db = new Database();
$stmt = $db::$handle->prepare("SELECT * FROM `keyvalue`");
$result = $stmt->execute();
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$channel = $row["channel"];
if ($channel === null) {
$channel = "all";
}
self::$kv[$row["key"]][$channel] = $row["value"];
}
}
}