begin refactoring of form-stuff

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2018-12-22 11:57:54 +01:00
parent 085d25346d
commit 28bb614489
13 changed files with 148 additions and 241 deletions

View File

@@ -126,7 +126,10 @@ return array(
'type' => 'option', 'type' => 'option',
'default' => '2', 'default' => '2',
'option_mode' => 'one', 'option_mode' => 'one',
'option_options_method' => 'getPhpConfigs', 'option_options_method' => array(
'\\Froxlor\\Http\\PhpConfig',
'getPhpConfigs'
),
'save_method' => 'storeSettingField', 'save_method' => 'storeSettingField',
'websrv_avail' => array( 'websrv_avail' => array(
'apache2' 'apache2'
@@ -170,7 +173,10 @@ return array(
'type' => 'option', 'type' => 'option',
'default' => '2', 'default' => '2',
'option_mode' => 'one', 'option_mode' => 'one',
'option_options_method' => 'getPhpConfigs', 'option_options_method' => array(
'\\Froxlor\\Http\\PhpConfig',
'getPhpConfigs'
),
'save_method' => 'storeSettingField', 'save_method' => 'storeSettingField',
'visible' => \Froxlor\Settings::Get('phpfpm.enabled') 'visible' => \Froxlor\Settings::Get('phpfpm.enabled')
), ),

View File

@@ -107,7 +107,9 @@ return array(
'type' => 'option', 'type' => 'option',
'default' => '1', 'default' => '1',
'option_mode' => 'one', 'option_mode' => 'one',
'option_options_method' => 'getPhpConfigs', 'option_options_method' => array(
'\\Froxlor\\Http\\PhpConfig',
'getPhpConfigs'),
'save_method' => 'storeSettingField' 'save_method' => 'storeSettingField'
), ),
'system_mod_fcgid_idle_timeout' => array( 'system_mod_fcgid_idle_timeout' => array(

View File

@@ -39,7 +39,10 @@ return array(
'type' => 'option', 'type' => 'option',
'default' => '1', 'default' => '1',
'option_mode' => 'one', 'option_mode' => 'one',
'option_options_method' => 'getPhpConfigs', 'option_options_method' => array(
'\\Froxlor\\Http\\PhpConfig',
'getPhpConfigs'
),
'save_method' => 'storeSettingField' 'save_method' => 'storeSettingField'
), ),
'system_phpfpm_aliasconfigdir' => array( 'system_phpfpm_aliasconfigdir' => array(

View File

@@ -82,7 +82,7 @@ if ($page == 'overview' && $userinfo['change_serversettings'] == '1') {
$_part = isset($_POST['part']) ? $_POST['part'] : ''; $_part = isset($_POST['part']) ? $_POST['part'] : '';
} }
$fields = buildFormEx($settings_data, $_part); $fields = \Froxlor\UI\Form::buildFormEx($settings_data, $_part);
$settings_page = ''; $settings_page = '';
if ($_part == '') { if ($_part == '') {

View File

@@ -85,7 +85,7 @@ function parseAndOutputPreconfig(&$has_preconfig, &$return, $current_version, $c
$description = 'If you have more than one PHP configurations defined in Froxlor you can now set a default one which will be used for every domain.'; $description = 'If you have more than one PHP configurations defined in Froxlor you can now set a default one which will be used for every domain.';
$question = '<strong>Select default PHP configuration:</strong>&nbsp;'; $question = '<strong>Select default PHP configuration:</strong>&nbsp;';
$question .= '<select name="update_defsys_phpconfig">'; $question .= '<select name="update_defsys_phpconfig">';
$configs_array = getPhpConfigs(); $configs_array = \Froxlor\Http\PhpConfig::getPhpConfigs();
$configs = ''; $configs = '';
foreach ($configs_array as $idx => $desc) { foreach ($configs_array as $idx => $desc) {
$configs .= makeoption($desc, $idx, '1'); $configs .= makeoption($desc, $idx, '1');
@@ -272,7 +272,7 @@ function parseAndOutputPreconfig(&$has_preconfig, &$return, $current_version, $c
$description = 'You have FCGID for Froxlor itself activated. You can now specify a PHP-configuration for this.'; $description = 'You have FCGID for Froxlor itself activated. You can now specify a PHP-configuration for this.';
$question = '<strong>Select Froxlor-vhost PHP configuration:</strong>&nbsp;'; $question = '<strong>Select Froxlor-vhost PHP configuration:</strong>&nbsp;';
$question .= '<select name="update_defaultini_ownvhost">'; $question .= '<select name="update_defaultini_ownvhost">';
$configs_array = getPhpConfigs(); $configs_array = \Froxlor\Http\PhpConfig::getPhpConfigs();
$configs = ''; $configs = '';
foreach ($configs_array as $idx => $desc) { foreach ($configs_array as $idx => $desc) {
$configs .= makeoption($desc, $idx, '1'); $configs .= makeoption($desc, $idx, '1');

View File

@@ -0,0 +1,35 @@
<?php
namespace Froxlor\Http;
use Froxlor\Database\Database;
class PhpConfig
{
/**
* returns an array of existing php-configurations
* in our database for the settings-array
*
* @return array
*/
public static function getPhpConfigs()
{
$configs_array = array();
// check if table exists because this is used in a preconfig
// where the tables possibly does not exist yet
$results = Database::query("SHOW TABLES LIKE '" . TABLE_PANEL_PHPCONFIGS . "'");
if (! $results) {
$configs_array[1] = 'Default php.ini';
} else {
// get all configs
$result_stmt = Database::query("SELECT * FROM `" . TABLE_PANEL_PHPCONFIGS . "`");
while ($row = $result_stmt->fetch(\PDO::FETCH_ASSOC)) {
if (! isset($configs_array[$row['id']]) && ! in_array($row['id'], $configs_array)) {
$configs_array[$row['id']] = html_entity_decode($row['description']);
}
}
}
return $configs_array;
}
}

95
lib/Froxlor/UI/Form.php Normal file
View File

@@ -0,0 +1,95 @@
<?php
namespace Froxlor\UI;
use Froxlor\Settings;
class Form
{
public static function buildForm($form)
{
$fields = '';
if (validateFormDefinition($form)) {
foreach ($form['groups'] as $groupname => $groupdetails) {
if (isset($groupdetails['title']) && $groupdetails['title'] != '') {
$fields .= getFormGroupOutput($groupname, $groupdetails);
}
if (validateFieldDefinition($groupdetails)) {
// Prefetch form fields
foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
$groupdetails['fields'][$fieldname] = array_merge_prefix($fielddetails, $fielddetails['type'], prefetchFormFieldData($fieldname, $fielddetails));
$form['groups'][$groupname]['fields'][$fieldname] = $groupdetails['fields'][$fieldname];
}
// Collect form field output
foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
$fields .= getFormFieldOutput($fieldname, $fielddetails);
}
}
}
}
return $fields;
}
public static function buildFormEx($form, $part = '')
{
$fields = '';
if (validateFormDefinition($form)) {
foreach ($form['groups'] as $groupname => $groupdetails) {
// show overview
if ($part == '') {
if (isset($groupdetails['title']) && $groupdetails['title'] != '') {
$fields .= getFormOverviewGroupOutput($groupname, $groupdetails);
}
} // only show one section
elseif ($part != '' && ($groupname == $part || $part == 'all')) {
/**
* this part checks for the 'websrv_avail' entry in the settings-array
* if found, we check if the current webserver is in the array.
* If this
* is not the case, we change the setting type to "hidden", #502
*/
$do_show = true;
if (isset($groupdetails['websrv_avail']) && is_array($groupdetails['websrv_avail'])) {
$websrv = Settings::Get('system.webserver');
if (! in_array($websrv, $groupdetails['websrv_avail'])) {
$do_show = false;
}
}
// visible = Settings::Get('phpfpm.enabled') for example would result in false if not enabled
// and therefore not shown as intended. Only check if do_show is still true as it might
// be false due to websrv_avail
if (isset($groupdetails['visible']) && $do_show) {
$do_show = $groupdetails['visible'];
}
// if ($do_show) {
if (isset($groupdetails['title']) && $groupdetails['title'] != '') {
$fields .= getFormGroupOutput($groupname, $groupdetails);
}
if (validateFieldDefinition($groupdetails)) {
// Prefetch form fields
foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
$groupdetails['fields'][$fieldname] = array_merge_prefix($fielddetails, $fielddetails['type'], prefetchFormFieldData($fieldname, $fielddetails));
$form['groups'][$groupname]['fields'][$fieldname] = $groupdetails['fields'][$fieldname];
}
// Collect form field output
foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
$fields .= getFormFieldOutput($fieldname, $fielddetails);
}
}
// }
}
}
}
return $fields;
}
}

View File

@@ -1,45 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
function buildForm($form)
{
$fields = '';
if (validateFormDefinition($form)) {
foreach ($form['groups'] as $groupname => $groupdetails) {
if (isset($groupdetails['title']) && $groupdetails['title'] != '') {
$fields .= getFormGroupOutput($groupname, $groupdetails);
}
if (validateFieldDefinition($groupdetails)) {
// Prefetch form fields
foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
$groupdetails['fields'][$fieldname] = array_merge_prefix($fielddetails, $fielddetails['type'], prefetchFormFieldData($fieldname, $fielddetails));
$form['groups'][$groupname]['fields'][$fieldname] = $groupdetails['fields'][$fieldname];
}
// Collect form field output
foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
$fields .= getFormFieldOutput($fieldname, $fielddetails);
}
}
}
}
return $fields;
}

View File

@@ -1,74 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Settings
*
*/
function buildFormEx($form, $part = '')
{
$fields = '';
if (validateFormDefinition($form)) {
foreach ($form['groups'] as $groupname => $groupdetails) {
// show overview
if ($part == '') {
if (isset($groupdetails['title']) && $groupdetails['title'] != '') {
$fields .= getFormOverviewGroupOutput($groupname, $groupdetails);
}
} // only show one section
elseif ($part != '' && ($groupname == $part || $part == 'all')) {
/**
* this part checks for the 'websrv_avail' entry in the settings-array
* if found, we check if the current webserver is in the array.
* If this
* is not the case, we change the setting type to "hidden", #502
*/
$do_show = true;
if (isset($groupdetails['websrv_avail']) && is_array($groupdetails['websrv_avail'])) {
$websrv = Settings::Get('system.webserver');
if (! in_array($websrv, $groupdetails['websrv_avail'])) {
$do_show = false;
}
}
// visible = Settings::Get('phpfpm.enabled') for example would result in false if not enabled
// and therefore not shown as intended. Only check if do_show is still true as it might
// be false due to websrv_avail
if (isset($groupdetails['visible']) && $do_show) {
$do_show = $groupdetails['visible'];
}
// if ($do_show) {
if (isset($groupdetails['title']) && $groupdetails['title'] != '') {
$fields .= getFormGroupOutput($groupname, $groupdetails);
}
if (validateFieldDefinition($groupdetails)) {
// Prefetch form fields
foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
$groupdetails['fields'][$fieldname] = array_merge_prefix($fielddetails, $fielddetails['type'], prefetchFormFieldData($fieldname, $fielddetails));
$form['groups'][$groupname]['fields'][$fieldname] = $groupdetails['fields'][$fieldname];
}
// Collect form field output
foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
$fields .= getFormFieldOutput($fieldname, $fielddetails);
}
}
// }
}
}
}
return $fields;
}

View File

@@ -1,24 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
function returnField($fieldname, $fielddata, $newfieldvalue)
{
return array(
$fieldname => $newfieldvalue
);
}

View File

@@ -1,24 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
function getFormFieldOutputLabel($fieldname, $fielddata)
{
$label = $fielddata['label'];
eval("\$returnvalue = \"" . \Froxlor\UI\Template::getTemplate("formfields/label", true) . "\";");
return $returnvalue;
}

View File

@@ -1,24 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
function validateFormFieldLabel($fieldname, $fielddata, $newfieldvalue)
{
// Return false, in case we happen to have that field in our $input array, so someone doesn't get the chance to save crap to our database
// TODO: Throw some error that actually makes sense - false would just throw unknown error
return false;
}

View File

@@ -1,43 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* returns an array of existing php-configurations
* in our database for the settings-array
*
* @return array
*/
function getPhpConfigs()
{
$configs_array = array();
// check if table exists because this is used in a preconfig
// where the tables possibly does not exist yet
$results = Database::query("SHOW TABLES LIKE '" . TABLE_PANEL_PHPCONFIGS . "'");
if (! $results) {
$configs_array[1] = 'Default php.ini';
} else {
// get all configs
$result_stmt = Database::query("SELECT * FROM `" . TABLE_PANEL_PHPCONFIGS . "`");
while ($row = $result_stmt->fetch(PDO::FETCH_ASSOC)) {
if (! isset($configs_array[$row['id']]) && ! in_array($row['id'], $configs_array)) {
$configs_array[$row['id']] = html_entity_decode($row['description']);
}
}
}
return $configs_array;
}