mvc: replace Phalcon\Config\Config usage for new and simplified OPNsense\Core\AppConfig class.

for https://github.com/opnsense/core/issues/6389
This commit is contained in:
Ad Schellevis 2024-04-30 17:50:06 +02:00
parent a7c1cc1a82
commit cbc01cb39c
4 changed files with 81 additions and 2 deletions

1
plist
View File

@ -210,6 +210,7 @@
/usr/local/opnsense/data/firmware/upgrade.html
/usr/local/opnsense/data/unbound/root.min.hints
/usr/local/opnsense/mvc/app/cache/README
/usr/local/opnsense/mvc/app/config/AppConfig.php
/usr/local/opnsense/mvc/app/config/config.php
/usr/local/opnsense/mvc/app/config/loader.php
/usr/local/opnsense/mvc/app/config/services.php

View File

@ -0,0 +1,76 @@
<?php
/*
* Copyright (C) 2024 Deciso B.V.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
namespace OPNsense\Core;
class AppConfig
{
/**
* @var application config data
*/
private static $data = [];
/**
* @var self::$data as StdClass
*/
private static $obj = null;
/**
* construct new application config object, keep $data when not offered.
*/
public function __construct($new_data=null)
{
if ($new_data != null) {
self::$data = $new_data;
// simple conversion from array to StdClass container, current representation of self::$data.
self::$obj = json_decode(json_encode(self::$data));
}
}
/**
* @param string $name
* @return StdClass or simple type
*/
public function __get($name)
{
if (isset(self::$obj->$name)) {
return self::$obj->$name;
}
return null;
}
/**
* @param array $cnf configuration data to merge into the app config container
*/
public function merge($cnf)
{
self::$data = array_merge_recursive(self::$data, $cnf);
// simple conversion from array to StdClass container, current representation of self::$data.
self::$obj = json_decode(json_encode(self::$data));
}
}

View File

@ -1,6 +1,7 @@
<?php
require_once 'AppConfig.php';
return new \Phalcon\Config\Config(array(
return new OPNsense\Core\AppConfig(array(
'application' => array(
'controllersDir' => __DIR__ . '/../../app/controllers/',
'modelsDir' => __DIR__ . '/../../app/models/',

View File

@ -1,6 +1,7 @@
<?php
require_once __DIR__ . "/../../../app/config/AppConfig.php";
return new \Phalcon\Config\Config(array(
return new OPNsense\Core\AppConfig(array(
'application' => array(
'controllersDir' => __DIR__ . '/../../../app/controllers/',
'modelsDir' => __DIR__ . '/../../../app/models/',