diff --git a/customer_domains.php b/customer_domains.php
index 44cc6227..f35ea53c 100644
--- a/customer_domains.php
+++ b/customer_domains.php
@@ -369,7 +369,7 @@ if ($page == 'overview') {
$domains .= \Froxlor\UI\HTML::makeoption($idna_convert->decode($row_domain['domain']), $row_domain['id'], $result['aliasdomain']);
}
- if (preg_match('/^https?\:\/\//', $result['documentroot']) && \Froxlor\Validate\Form\Strings::validateUrl($result['documentroot'])) {
+ if (preg_match('/^https?\:\/\//', $result['documentroot']) && \Froxlor\Validate\Form\Data::validateUrl($result['documentroot'])) {
if (Settings::Get('panel.pathedit') == 'Dropdown') {
$urlvalue = $result['documentroot'];
$pathSelect = \Froxlor\FileDir::makePathfield($userinfo['documentroot'], $userinfo['guid'], $userinfo['guid']);
diff --git a/install/lib/class.FroxlorInstall.php b/install/lib/class.FroxlorInstall.php
index 504d8b8e..60dee5d8 100644
--- a/install/lib/class.FroxlorInstall.php
+++ b/install/lib/class.FroxlorInstall.php
@@ -104,7 +104,8 @@ class FroxlorInstall
// check if we have a valid installation already
$this->_checkUserdataFile();
// include the functions
- require $this->_basepath . '/lib/functions.php';
+ require $this->_basepath . '/lib/functions/constant.formfields.php';
+ require $this->_basepath . '/lib/functions/constant.logger.php';
// include the MySQL-Table-Definitions
require $this->_basepath . '/lib/tables.inc.php';
// include language
diff --git a/lib/Froxlor/Api/Commands/DirOptions.php b/lib/Froxlor/Api/Commands/DirOptions.php
index 69c5ef9b..f4a894d7 100644
--- a/lib/Froxlor/Api/Commands/DirOptions.php
+++ b/lib/Froxlor/Api/Commands/DirOptions.php
@@ -394,7 +394,7 @@ class DirOptions extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
{
if ($errdoc !== null && $errdoc != '') {
// not a URL
- if ((strtoupper(substr($errdoc, 0, 5)) != 'HTTP:' && strtoupper(substr($errdoc, 0, 6)) != 'HTTPS:') || ! \Froxlor\Validate\Form\Strings::validateUrl($errdoc)) {
+ if ((strtoupper(substr($errdoc, 0, 5)) != 'HTTP:' && strtoupper(substr($errdoc, 0, 6)) != 'HTTPS:') || ! \Froxlor\Validate\Form\Data::validateUrl($errdoc)) {
// a file
if (substr($errdoc, 0, 1) != '"') {
$errdoc = \Froxlor\FileDir::makeCorrectFile($errdoc);
diff --git a/lib/Froxlor/Api/Commands/SubDomains.php b/lib/Froxlor/Api/Commands/SubDomains.php
index 6cfa5b85..047a0f66 100644
--- a/lib/Froxlor/Api/Commands/SubDomains.php
+++ b/lib/Froxlor/Api/Commands/SubDomains.php
@@ -855,7 +855,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
{
// check whether an URL was specified
$_doredirect = false;
- if (! empty($url) && \Froxlor\Validate\Form\Strings::validateUrl($url)) {
+ if (! empty($url) && \Froxlor\Validate\Form\Data::validateUrl($url)) {
$path = $url;
$_doredirect = true;
} else {
@@ -863,7 +863,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
}
// check whether path is a real path
- if (! preg_match('/^https?\:\/\//', $path) || ! \Froxlor\Validate\Form\Strings::validateUrl($path)) {
+ if (! preg_match('/^https?\:\/\//', $path) || ! \Froxlor\Validate\Form\Data::validateUrl($path)) {
if (strstr($path, ":") !== false) {
\Froxlor\UI\Response::standard_error('pathmaynotcontaincolon', '', true);
}
diff --git a/lib/Froxlor/Cron/Http/Apache.php b/lib/Froxlor/Cron/Http/Apache.php
index a5f9a74f..2327b986 100644
--- a/lib/Froxlor/Cron/Http/Apache.php
+++ b/lib/Froxlor/Cron/Http/Apache.php
@@ -144,7 +144,7 @@ class Apache extends HttpConfigBase
foreach ($statusCodes as $statusCode) {
if (Settings::Get('defaultwebsrverrhandler.err' . $statusCode) != '') {
$defhandler = Settings::Get('defaultwebsrverrhandler.err' . $statusCode);
- if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
+ if (! \Froxlor\Validate\Form\Data::validateUrl($defhandler)) {
if (substr($defhandler, 0, 1) != '"' && substr($defhandler, - 1, 1) != '"') {
$defhandler = '"' . \Froxlor\FileDir::makeCorrectFile($defhandler) . '"';
}
@@ -1190,7 +1190,7 @@ class Apache extends HttpConfigBase
foreach ($statusCodes as $statusCode) {
if (isset($row_diroptions['error' . $statusCode . 'path']) && $row_diroptions['error' . $statusCode . 'path'] != '') {
$defhandler = $row_diroptions['error' . $statusCode . 'path'];
- if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
+ if (! \Froxlor\Validate\Form\Data::validateUrl($defhandler)) {
if (substr($defhandler, 0, 1) != '"' && substr($defhandler, - 1, 1) != '"') {
$defhandler = '"' . \Froxlor\FileDir::makeCorrectFile($defhandler) . '"';
}
diff --git a/lib/Froxlor/Cron/Http/Lighttpd.php b/lib/Froxlor/Cron/Http/Lighttpd.php
index 1d69a0c0..e4311c04 100644
--- a/lib/Froxlor/Cron/Http/Lighttpd.php
+++ b/lib/Froxlor/Cron/Http/Lighttpd.php
@@ -316,7 +316,7 @@ class Lighttpd extends HttpConfigBase
}
$defhandler = Settings::Get('defaultwebsrverrhandler.err404');
- if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
+ if (! \Froxlor\Validate\Form\Data::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler);
}
$this->lighttpd_data[$vhost_filename] = 'server.error-handler-404 = "' . $defhandler . '"';
@@ -701,7 +701,7 @@ class Lighttpd extends HttpConfigBase
if (! empty($row['error404path'])) {
$defhandler = $row['error404path'];
- if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
+ if (! \Froxlor\Validate\Form\Data::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($domain['documentroot'] . '/' . $defhandler);
}
$error_string .= ' server.error-handler-404 = "' . $defhandler . '"' . "\n\n";
diff --git a/lib/Froxlor/Cron/Http/Nginx.php b/lib/Froxlor/Cron/Http/Nginx.php
index 3f7c39fb..49503c63 100644
--- a/lib/Froxlor/Cron/Http/Nginx.php
+++ b/lib/Froxlor/Cron/Http/Nginx.php
@@ -116,7 +116,7 @@ class Nginx extends HttpConfigBase
foreach ($statusCodes as $statusCode) {
if (Settings::Get('defaultwebsrverrhandler.err' . $statusCode) != '') {
$defhandler = Settings::Get('defaultwebsrverrhandler.err' . $statusCode);
- if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
+ if (! \Froxlor\Validate\Form\Data::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler);
}
$this->nginx_data[$vhosts_filename] .= 'error_page ' . $statusCode . ' ' . $defhandler . ';' . "\n";
@@ -703,7 +703,7 @@ class Nginx extends HttpConfigBase
while ($row = $result_stmt->fetch(\PDO::FETCH_ASSOC)) {
if (! empty($row['error404path'])) {
$defhandler = $row['error404path'];
- if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
+ if (! \Froxlor\Validate\Form\Data::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler);
}
$path_options .= "\t" . 'error_page 404 ' . $defhandler . ';' . "\n";
@@ -711,7 +711,7 @@ class Nginx extends HttpConfigBase
if (! empty($row['error403path'])) {
$defhandler = $row['error403path'];
- if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
+ if (! \Froxlor\Validate\Form\Data::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler);
}
$path_options .= "\t" . 'error_page 403 ' . $defhandler . ';' . "\n";
@@ -719,7 +719,7 @@ class Nginx extends HttpConfigBase
if (! empty($row['error500path'])) {
$defhandler = $row['error500path'];
- if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
+ if (! \Froxlor\Validate\Form\Data::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler);
}
$path_options .= "\t" . 'error_page 500 502 503 504 ' . $defhandler . ';' . "\n";
diff --git a/lib/Froxlor/Cron/Traffic/TrafficCron.php b/lib/Froxlor/Cron/Traffic/TrafficCron.php
index 1eb198a4..10b90893 100644
--- a/lib/Froxlor/Cron/Traffic/TrafficCron.php
+++ b/lib/Froxlor/Cron/Traffic/TrafficCron.php
@@ -69,8 +69,6 @@ class TrafficCron extends \Froxlor\Cron\FroxlorCron
$cronlog->logAction(CRON_ACTION, LOG_INFO, $msg . " Not forking traffic-cron, this may take a long time!");
}
- require_once \Froxlor\FileDir::makeCorrectFile(dirname(__FILE__) . '/TrafficCron.inc.functions.php');
-
/**
* TRAFFIC AND DISKUSAGE MESSURE
*/
@@ -79,9 +77,9 @@ class TrafficCron extends \Froxlor\Cron\FroxlorCron
$domainlist = array();
$speciallogfile_domainlist = array();
$result_domainlist_stmt = Database::query("
- SELECT `id`, `domain`, `customerid`, `parentdomainid`, `speciallogfile`
- FROM `" . TABLE_PANEL_DOMAINS . "` WHERE `aliasdomain` IS NULL AND `email_only` <> '1';
-");
+ SELECT `id`, `domain`, `customerid`, `parentdomainid`, `speciallogfile`
+ FROM `" . TABLE_PANEL_DOMAINS . "` WHERE `aliasdomain` IS NULL AND `email_only` <> '1';
+ ");
while ($row_domainlist = $result_domainlist_stmt->fetch(\PDO::FETCH_ASSOC)) {
diff --git a/lib/Froxlor/UI/Data.php b/lib/Froxlor/UI/Data.php
new file mode 100644
index 00000000..9f53de49
--- /dev/null
+++ b/lib/Froxlor/UI/Data.php
@@ -0,0 +1,63 @@
+ $title) {
+ $options .= \Froxlor\UI\HTML::makeoption($title, $value, $fielddata['value']);
+ }
+ eval("\$returnvalue = \"" . \Froxlor\UI\Template::getTemplate("formfields/option", true) . "\";");
+ }
+
+ return $returnvalue;
+ }
+
+ public static function prefetchFormFieldDataOption($fieldname, $fielddata)
+ {
+ $returnvalue = array();
+
+ if ((! isset($fielddata['option_options']) || ! is_array($fielddata['option_options']) || empty($fielddata['option_options'])) && (isset($fielddata['option_options_method']))) {
+ $returnvalue['options'] = call_user_func($fielddata['option_options_method']);
+ }
+
+ return $returnvalue;
+ }
+
+ public static function getFormFieldOutputInt($fieldname, $fielddata, $do_show = true)
+ {
+ return self::getFormFieldOutputString($fieldname, $fielddata, $do_show);
+ }
+
+ public static function getFormFieldOutputHiddenString($fieldname, $fielddata, $do_show = true)
+ {
+ $label = $fielddata['label'];
+ $value = htmlentities($fielddata['value']);
+ eval("\$returnvalue = \"" . \Froxlor\UI\Template::getTemplate("formfields/hiddenstring", true) . "\";");
+ return $returnvalue;
+ }
+
+ public static function getFormFieldOutputHidden($fieldname, $fielddata)
+ {
+ $returnvalue = '';
+
+ if (isset($fielddata['label']) && $fielddata['label'] != '') {
+ $label = $fielddata['label'];
+ $value = htmlentities($fielddata['value']);
+ eval("\$returnvalue .= \"" . \Froxlor\UI\Template::getTemplate("formfields/hidden", true) . "\";");
+ }
+
+ return $returnvalue;
+ }
+
+ public static function getFormFieldOutputFile($fieldname, $fielddata, $do_show = true)
+ {
+ $label = $fielddata['label'];
+ $value = htmlentities($fielddata['value']);
+ eval("\$returnvalue = \"" . \Froxlor\UI\Template::getTemplate("formfields/text", true) . "\";");
+ return $returnvalue;
+ }
+
+ public static function getFormFieldOutputDate($fieldname, $fielddata, $do_show = true)
+ {
+ if (isset($fielddata['date_timestamp']) && $fielddata['date_timestamp'] === true) {
+ $fielddata['value'] = date('Y-m-d', $fielddata['value']);
+ }
+
+ return self::getFormFieldOutputString($fieldname, $fielddata, $do_show);
+ }
+
+ public static function getFormFieldOutputBool($fieldname, $fielddata, $do_show = true)
+ {
+ $label = $fielddata['label'];
+ $boolswitch = \Froxlor\UI\HTML::makeyesno($fieldname, '1', '0', $fielddata['value']);
+ eval("\$returnvalue = \"" . \Froxlor\UI\Template::getTemplate("formfields/bool", true) . "\";");
+ return $returnvalue;
+ }
+}
\ No newline at end of file
diff --git a/lib/Froxlor/UI/Form.php b/lib/Froxlor/UI/Form.php
index 6f716d17..e894eb97 100644
--- a/lib/Froxlor/UI/Form.php
+++ b/lib/Froxlor/UI/Form.php
@@ -9,28 +9,28 @@ 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);
+ $fields .= self::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));
+ $groupdetails['fields'][$fieldname] = self::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);
+ $fields .= self::getFormFieldOutput($fieldname, $fielddetails);
}
}
}
}
-
+
return $fields;
}
@@ -43,7 +43,7 @@ class Form
// show overview
if ($part == '') {
if (isset($groupdetails['title']) && $groupdetails['title'] != '') {
- $fields .= getFormOverviewGroupOutput($groupname, $groupdetails);
+ $fields .= self::getFormOverviewGroupOutput($groupname, $groupdetails);
}
} // only show one section
elseif ($part != '' && ($groupname == $part || $part == 'all')) {
@@ -70,19 +70,19 @@ class Form
// if ($do_show) {
if (isset($groupdetails['title']) && $groupdetails['title'] != '') {
- $fields .= getFormGroupOutput($groupname, $groupdetails);
+ $fields .= self::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));
+ $groupdetails['fields'][$fieldname] = self::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);
+ $fields .= self::getFormFieldOutput($fieldname, $fielddetails);
}
}
// }
@@ -92,4 +92,435 @@ class Form
return $fields;
}
+
+ function processForm(&$form, &$input, $url_params = array())
+ {
+ if (\Froxlor\Validate\Form::validateFormDefinition($form)) {
+ $submitted_fields = array();
+ $changed_fields = array();
+ $saved_fields = array();
+
+ foreach ($form['groups'] as $groupname => $groupdetails) {
+ if (\Froxlor\Validate\Form::validateFieldDefinition($groupdetails)) {
+ // Prefetch form fields
+ foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
+ $groupdetails['fields'][$fieldname] = self::array_merge_prefix($fielddetails, $fielddetails['type'], self::prefetchFormFieldData($fieldname, $fielddetails));
+ $form['groups'][$groupname]['fields'][$fieldname] = $groupdetails['fields'][$fieldname];
+ }
+ }
+ }
+
+ foreach ($form['groups'] as $groupname => $groupdetails) {
+ if (\Froxlor\Validate\Form::validateFieldDefinition($groupdetails)) {
+ // Validate fields
+ foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
+ $newfieldvalue = self::getFormFieldData($fieldname, $fielddetails, $input);
+
+ if ($newfieldvalue != $fielddetails['value']) {
+ if (($error = \Froxlor\Validate\Form::validateFormField($fieldname, $fielddetails, $newfieldvalue)) !== true) {
+ \Froxlor\UI\Response::standard_error($error, $fieldname);
+ } else {
+ $changed_fields[$fieldname] = $newfieldvalue;
+ }
+ }
+
+ $submitted_fields[$fieldname] = $newfieldvalue;
+ }
+ }
+ }
+
+ foreach ($form['groups'] as $groupname => $groupdetails) {
+ if (\Froxlor\Validate\Form::validateFieldDefinition($groupdetails)) {
+ // Check fields for plausibility
+ foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
+ if (($plausibility_check = self::checkPlausibilityFormField($fieldname, $fielddetails, $submitted_fields[$fieldname], $submitted_fields)) !== false) {
+ if (is_array($plausibility_check) && isset($plausibility_check[0])) {
+ if ($plausibility_check[0] == FORMFIELDS_PLAUSIBILITY_CHECK_OK) {
+ // Nothing to do here, everything's okay
+ } elseif ($plausibility_check[0] == FORMFIELDS_PLAUSIBILITY_CHECK_ERROR) {
+ unset($plausibility_check[0]);
+ $error = $plausibility_check[1];
+ unset($plausibility_check[1]);
+ $targetname = implode(' ', $plausibility_check);
+ \Froxlor\UI\Response::standard_error($error, $targetname);
+ } elseif ($plausibility_check[0] == FORMFIELDS_PLAUSIBILITY_CHECK_QUESTION) {
+ unset($plausibility_check[0]);
+ $question = $plausibility_check[1];
+ unset($plausibility_check[1]);
+ $targetname = implode(' ', $plausibility_check);
+ if (! isset($input[$question])) {
+ if (is_array($url_params) && isset($url_params['filename'])) {
+ $filename = $url_params['filename'];
+ unset($url_params['filename']);
+ } else {
+ $filename = '';
+ }
+ \Froxlor\UI\HTML::ask_yesno($question, $filename, array_merge($url_params, $submitted_fields, array(
+ $question => $question
+ )), $targetname);
+ }
+ } else {
+ \Froxlor\UI\Response::standard_error('plausibilitychecknotunderstood');
+ }
+ }
+ }
+ }
+ }
+ }
+
+ foreach ($form['groups'] as $groupname => $groupdetails) {
+ if (\Froxlor\Validate\Form::validateFieldDefinition($groupdetails)) {
+ // Save fields
+ foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
+ if (isset($changed_fields[$fieldname])) {
+ if (($saved_field = self::saveFormField($fieldname, $fielddetails, manipulateFormFieldData($fieldname, $fielddetails, $changed_fields[$fieldname]))) !== false) {
+ $saved_fields = array_merge($saved_fields, $saved_field);
+ } else {
+ \Froxlor\UI\Response::standard_error('errorwhensaving', $fieldname);
+ }
+ }
+ }
+ }
+ }
+
+ // Save form
+ return self::saveForm($form, $saved_fields);
+ }
+ }
+
+ function processFormEx(&$form, &$input, $url_params = array(), $part, $settings_all, $settings_part, $only_enabledisable)
+ {
+ if (validateFormDefinition($form)) {
+ $submitted_fields = array();
+ $changed_fields = array();
+ $saved_fields = array();
+
+ foreach ($form['groups'] as $groupname => $groupdetails) {
+ if (($settings_part && $part == $groupname) || $settings_all || $only_enabledisable) {
+ if (\Froxlor\Validate\Form::validateFieldDefinition($groupdetails)) {
+ // Prefetch form fields
+ foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
+ if (! $only_enabledisable || ($only_enabledisable && isset($fielddetails['overview_option']))) {
+ $groupdetails['fields'][$fieldname] = self::array_merge_prefix($fielddetails, $fielddetails['type'], prefetchFormFieldData($fieldname, $fielddetails));
+ $form['groups'][$groupname]['fields'][$fieldname] = $groupdetails['fields'][$fieldname];
+ }
+ }
+ }
+ }
+ }
+
+ foreach ($form['groups'] as $groupname => $groupdetails) {
+ if (($settings_part && $part == $groupname) || $settings_all || $only_enabledisable) {
+ if (\Froxlor\Validate\Form::validateFieldDefinition($groupdetails)) {
+ // Validate fields
+ foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
+ if (! $only_enabledisable || ($only_enabledisable && isset($fielddetails['overview_option']))) {
+ $newfieldvalue = self::getFormFieldData($fieldname, $fielddetails, $input);
+ if ($newfieldvalue != $fielddetails['value']) {
+ if (($error = \Froxlor\Validate\Form::validateFormField($fieldname, $fielddetails, $newfieldvalue)) !== true) {
+ \Froxlor\UI\Response::standard_error($error, $fieldname);
+ } else {
+ $changed_fields[$fieldname] = $newfieldvalue;
+ }
+ }
+
+ $submitted_fields[$fieldname] = $newfieldvalue;
+ }
+ }
+ }
+ }
+ }
+
+ foreach ($form['groups'] as $groupname => $groupdetails) {
+ if (($settings_part && $part == $groupname) || $settings_all || $only_enabledisable) {
+ if (validateFieldDefinition($groupdetails)) {
+ // Check fields for plausibility
+ foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
+ if (! $only_enabledisable || ($only_enabledisable && isset($fielddetails['overview_option']))) {
+ if (($plausibility_check = self::checkPlausibilityFormField($fieldname, $fielddetails, $submitted_fields[$fieldname], $submitted_fields)) !== false) {
+ if (is_array($plausibility_check) && isset($plausibility_check[0])) {
+ if ($plausibility_check[0] == FORMFIELDS_PLAUSIBILITY_CHECK_OK) {
+ // Nothing to do here, everything's okay
+ } elseif ($plausibility_check[0] == FORMFIELDS_PLAUSIBILITY_CHECK_ERROR) {
+ unset($plausibility_check[0]);
+ $error = $plausibility_check[1];
+ unset($plausibility_check[1]);
+ $targetname = implode(' ', $plausibility_check);
+ \Froxlor\UI\Response::standard_error($error, $targetname);
+ } elseif ($plausibility_check[0] == FORMFIELDS_PLAUSIBILITY_CHECK_QUESTION) {
+ unset($plausibility_check[0]);
+ $question = $plausibility_check[1];
+ unset($plausibility_check[1]);
+ $targetname = implode(' ', $plausibility_check);
+ if (! isset($input[$question])) {
+ if (is_array($url_params) && isset($url_params['filename'])) {
+ $filename = $url_params['filename'];
+ unset($url_params['filename']);
+ } else {
+ $filename = '';
+ }
+ \Froxlor\UI\HTML::ask_yesno($question, $filename, array_merge($url_params, $submitted_fields, array(
+ $question => $question
+ )), $targetname);
+ }
+ } else {
+ \Froxlor\UI\Response::standard_error('plausibilitychecknotunderstood');
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ foreach ($form['groups'] as $groupname => $groupdetails) {
+ if (($settings_part && $part == $groupname) || $settings_all || $only_enabledisable) {
+ if (validateFieldDefinition($groupdetails)) {
+ // Save fields
+ foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
+ if (! $only_enabledisable || ($only_enabledisable && isset($fielddetails['overview_option']))) {
+ if (isset($changed_fields[$fieldname])) {
+ if (($saved_field = self::saveFormField($fieldname, $fielddetails, manipulateFormFieldData($fieldname, $fielddetails, $changed_fields[$fieldname]))) !== false) {
+ $saved_fields = array_merge($saved_fields, $saved_field);
+ } else {
+ \Froxlor\UI\Response::standard_error('errorwhensaving', $fieldname);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // Save form
+ return saveForm($form, $saved_fields);
+ }
+ }
+
+ public static function saveForm($fielddata, $newfieldvalue)
+ {
+ $returnvalue = '';
+ if (is_array($fielddata) && isset($fielddata['save_method']) && $fielddata['save_method'] != '') {
+ $returnvalue = call_user_func(array(
+ '\\Froxlor\\Settings\\Store',
+ $fielddata['save_method']
+ ), $fielddata, $newfieldvalue);
+ } elseif (is_array($fielddata) && ! isset($fielddata['save_method'])) {
+ $returnvalue = true;
+ } else {
+ $returnvalue = false;
+ }
+ return $returnvalue;
+ }
+
+ public static function saveFormField($fieldname, $fielddata, $newfieldvalue)
+ {
+ $returnvalue = '';
+ if (is_array($fielddata) && isset($fielddata['save_method']) && $fielddata['save_method'] != '') {
+ $returnvalue = call_user_func(array(
+ '\\Froxlor\\Settings\\Store',
+ $fielddata['save_method']
+ ), $fieldname, $fielddata, $newfieldvalue);
+ } elseif (is_array($fielddata) && ! isset($fielddata['save_method'])) {
+ $returnvalue = array();
+ } else {
+ $returnvalue = false;
+ }
+ return $returnvalue;
+ }
+
+ public static function getFormGroupOutput($groupname, $groupdetails)
+ {
+ global $lng, $theme;
+ eval("\$group = \"" . \Froxlor\UI\Template::getTemplate("settings/settings_group") . "\";");
+ return $group;
+ }
+
+ public static function getFormOverviewGroupOutput($groupname, $groupdetails)
+ {
+ global $lng, $filename, $s, $theme;
+
+ $group = '';
+ $title = $groupdetails['title'];
+ $part = $groupname;
+
+ $activated = true;
+ $option = '';
+ if (isset($groupdetails['fields'])) {
+ foreach ($groupdetails['fields'] as $fieldname => $fielddetails) {
+ if (isset($fielddetails['overview_option']) && $fielddetails['overview_option'] == true) {
+ if ($fielddetails['type'] != 'option' && $fielddetails['type'] != 'bool') {
+ \Froxlor\UI\Response::standard_error('overviewsettingoptionisnotavalidfield');
+ }
+
+ if ($fielddetails['type'] == 'option') {
+ $options_array = $fielddetails['option_options'];
+ $options = '';
+ foreach ($options_array as $value => $vtitle) {
+ $options .= \Froxlor\UI\HTML::makeoption($vtitle, $value, Settings::Get($fielddetails['settinggroup'] . '.' . $fielddetails['varname']));
+ }
+ $option .= $fielddetails['label'] . ': ';
+ $option .= '';
+ $activated = true;
+ } else {
+ $option .= $lng['admin']['activated'] . ': ';
+ $option .= \Froxlor\UI\HTML::makeyesno($fieldname, '1', '0', Settings::Get($fielddetails['settinggroup'] . '.' . $fielddetails['varname']));
+ $activated = (int) Settings::Get($fielddetails['settinggroup'] . '.' . $fielddetails['varname']);
+ }
+ }
+ }
+ }
+
+ /**
+ * this part checks for the 'websrv_avail' entry in the settings
+ * 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;
+ $title .= sprintf($lng['serversettings']['option_unavailable_websrv'], implode(", ", $groupdetails['websrv_avail']));
+ // hack disabled flag into select-box
+ $option = str_replace('