Allow nullable UID in PConfigCache

This commit is contained in:
Philipp Holzer 2019-07-15 21:14:13 +02:00
parent d5de5b6789
commit f70271aa5d
No known key found for this signature in database
GPG key ID: D8365C3D36B77D90
2 changed files with 33 additions and 0 deletions

View file

@ -36,6 +36,10 @@ class PConfigCache
*/ */
public function load($uid, array $config) public function load($uid, array $config)
{ {
if (!is_int($uid)) {
return;
}
$categories = array_keys($config); $categories = array_keys($config);
foreach ($categories as $category) { foreach ($categories as $category) {
@ -64,6 +68,10 @@ class PConfigCache
*/ */
public function get($uid, string $cat, string $key = null) public function get($uid, string $cat, string $key = null)
{ {
if (!is_int($uid)) {
return null;
}
if (isset($this->config[$uid][$cat][$key])) { if (isset($this->config[$uid][$cat][$key])) {
return $this->config[$uid][$cat][$key]; return $this->config[$uid][$cat][$key];
} elseif (!isset($key) && isset($this->config[$uid][$cat])) { } elseif (!isset($key) && isset($this->config[$uid][$cat])) {
@ -87,6 +95,10 @@ class PConfigCache
*/ */
public function set($uid, string $cat, string $key, $value) public function set($uid, string $cat, string $key, $value)
{ {
if (!is_int($uid)) {
return false;
}
if (!isset($this->config[$uid]) || !is_array($this->config[$uid])) { if (!isset($this->config[$uid]) || !is_array($this->config[$uid])) {
$this->config[$uid] = []; $this->config[$uid] = [];
} }
@ -118,6 +130,10 @@ class PConfigCache
*/ */
public function delete($uid, string $cat, string $key) public function delete($uid, string $cat, string $key)
{ {
if (!is_int($uid)) {
return false;
}
if (isset($this->config[$uid][$cat][$key])) { if (isset($this->config[$uid][$cat][$key])) {
unset($this->config[$uid][$cat][$key]); unset($this->config[$uid][$cat][$key]);
if (count($this->config[$uid][$cat]) == 0) { if (count($this->config[$uid][$cat]) == 0) {

View file

@ -255,4 +255,21 @@ class PConfigCacheTest extends MockedTest
$this->assertNull($configCache->get(1, 'cat2', 'key2')); $this->assertNull($configCache->get(1, 'cat2', 'key2'));
$this->assertNull($configCache->get(2, 'cat1', 'key1')); $this->assertNull($configCache->get(2, 'cat1', 'key1'));
} }
/**
* Test when using an invalid UID
* @todo check it the clean way before using the config class
*/
public function testInvalidUid()
{
// bad UID!
$uid = null;
$configCache = new PConfigCache();
$this->assertNull($configCache->get($uid, 'cat1', 'cat2'));
$this->assertFalse($configCache->set($uid, 'cat1', 'key1', 'doesn\'t matter!'));
$this->assertFalse($configCache->delete($uid, 'cat1', 'key1'));
}
} }