From 2dc8de2c9df4383fda6ecedf447ca3a1f10c7fe5 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Tue, 2 Aug 2016 21:27:07 +0200 Subject: [PATCH] (model) CertificateField missing cert type in cache, closes https://github.com/opnsense/core/issues/1095 --- .../Base/FieldTypes/CertificateField.php | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/CertificateField.php b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/CertificateField.php index 428d121ea..1477f6799 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/CertificateField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/CertificateField.php @@ -1,7 +1,7 @@ internalOptionList) ==0) { - $configObj = Config::getInstance()->object(); - foreach ($configObj->{$this->certificateType} as $cert) { - self::$internalOptionList[(string)$cert->refid] = (string)$cert->descr ; - } + if (!array_key_exists($this->certificateType, self::$internalOptionList)) { + self::$internalOptionList[$this->certificateType] = array(); + $configObj = Config::getInstance()->object(); + foreach ($configObj->{$this->certificateType} as $cert) { + self::$internalOptionList[$this->certificateType][(string)$cert->refid] = (string)$cert->descr ; + } } } @@ -119,7 +120,7 @@ class CertificateField extends BaseField } $certs = explode(',', $this->internalValue); - foreach (self::$internalOptionList as $optKey => $optValue) { + foreach (self::$internalOptionList[$this->certificateType] as $optKey => $optValue) { if (in_array($optKey, $certs)) { $selected = 1; } else { @@ -140,13 +141,13 @@ class CertificateField extends BaseField $validators = parent::getValidators(); if ($this->internalValue != null) { if ($this->internalMultiSelect) { - // field may contain more than one country + // field may contain more than one cert $validators[] = new CsvListValidator(array('message' => $this->internalValidationMessage, - 'domain'=>array_keys(self::$internalOptionList))); + 'domain'=>array_keys(self::$internalOptionList[$this->certificateType]))); } else { - // single country selection + // single cert selection $validators[] = new InclusionIn(array('message' => $this->internalValidationMessage, - 'domain'=>array_keys(self::$internalOptionList))); + 'domain'=>array_keys(self::$internalOptionList[$this->certificateType]))); } } return $validators;