mirror of
https://github.com/lucaspalomodevelop/core.git
synced 2026-03-13 16:14:40 +00:00
mvc:JsonKeyValueStoreField - restore support for json input data without configd callout, closes https://github.com/opnsense/core/issues/8180
partially reverts 525481c15b
This commit is contained in:
parent
b962ccd3ed
commit
e150a571de
@ -123,17 +123,18 @@ class JsonKeyValueStoreField extends BaseListField
|
||||
protected function actionPostLoadingEvent()
|
||||
{
|
||||
$data = null;
|
||||
if ($this->internalSourceFile != null && $this->internalSourceField != null) {
|
||||
$sourcefile = sprintf($this->internalSourceFile, $this->internalSourceField);
|
||||
} else {
|
||||
$sourcefile = $this->internalSourceFile;
|
||||
}
|
||||
$cachename = $sourcefile != null ? $sourcefile : $this->internalConfigdPopulateAct;
|
||||
if (!empty($this->internalConfigdPopulateAct)) {
|
||||
if (isset(static::$internalStaticContent[$this->internalConfigdPopulateAct])) {
|
||||
if (isset(static::$internalStaticContent[$cachename])) {
|
||||
/* cached for the lifetime of this session */
|
||||
$data = static::$internalStaticContent[$this->internalConfigdPopulateAct];
|
||||
} elseif ($this->internalSourceFile != null) {
|
||||
$data = static::$internalStaticContent[$cachename];
|
||||
} elseif ($sourcefile != null) {
|
||||
/* use a file cache for the configd call*/
|
||||
if ($this->internalSourceField != null) {
|
||||
$sourcefile = sprintf($this->internalSourceFile, $this->internalSourceField);
|
||||
} else {
|
||||
$sourcefile = $this->internalSourceFile;
|
||||
}
|
||||
if (is_file($sourcefile)) {
|
||||
$sourcehandle = fopen($sourcefile, "r+");
|
||||
} else {
|
||||
@ -166,12 +167,18 @@ class JsonKeyValueStoreField extends BaseListField
|
||||
true
|
||||
);
|
||||
}
|
||||
if ($data != null) {
|
||||
static::$internalStaticContent[$this->internalConfigdPopulateAct] = $data;
|
||||
$this->internalOptionList = $data;
|
||||
if ($this->internalSelectAll && $this->internalValue == "") {
|
||||
$this->internalValue = implode(',', array_keys($this->internalOptionList));
|
||||
}
|
||||
} elseif ($sourcefile != null && is_file($sourcefile)) {
|
||||
if (isset(static::$internalStaticContent[$cachename])) {
|
||||
$data = static::$internalStaticContent[$cachename];
|
||||
} else {
|
||||
$data = json_decode(file_get_contents($sourcefile), true) ?? [];
|
||||
}
|
||||
}
|
||||
if ($data != null) {
|
||||
static::$internalStaticContent[$cachename] = $data;
|
||||
$this->internalOptionList = $data;
|
||||
if ($this->internalSelectAll && $this->internalValue == "") {
|
||||
$this->internalValue = implode(',', array_keys($this->internalOptionList));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user