mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-13 01:18:42 +01:00
modernize config validation hooks a bit to allow to use static methods of namespaced classes
This commit is contained in:
parent
adddf68135
commit
f5b1e5a096
@ -331,7 +331,7 @@ class admin_account
|
|||||||
$msg = '';
|
$msg = '';
|
||||||
if(count($content['account_id']) == 1)
|
if(count($content['account_id']) == 1)
|
||||||
{
|
{
|
||||||
self::_deferred_delete($content['account_id'][0], $content['new_owner'], $content['delete_apps'], $content['admin_cmd']);
|
self::_deferred_delete($account_id, $content['new_owner'], $content['delete_apps'], $content['admin_cmd']);
|
||||||
if ($content['contact_id'])
|
if ($content['contact_id'])
|
||||||
{
|
{
|
||||||
Framework::refresh_opener($msg, 'addressbook', $content['contact_id'], 'delete');
|
Framework::refresh_opener($msg, 'addressbook', $content['contact_id'], 'delete');
|
||||||
@ -356,7 +356,7 @@ class admin_account
|
|||||||
// Get a count of entries owned by the user
|
// Get a count of entries owned by the user
|
||||||
if(count($content['account_id']) == 1)
|
if(count($content['account_id']) == 1)
|
||||||
{
|
{
|
||||||
$_counts = $GLOBALS['egw']->accounts->get_account_entry_counts($content['account_id'][0]);
|
$_counts = $GLOBALS['egw']->accounts->get_account_entry_counts($content['account_id']);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -144,7 +144,13 @@ class admin_config
|
|||||||
$this->remove_anon_images(array_diff((array)$c->config_data['login_background_file'], (array)$_content['newsettings']['login_background_file']));
|
$this->remove_anon_images(array_diff((array)$c->config_data['login_background_file'], (array)$_content['newsettings']['login_background_file']));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load hook file with functions to validate each config (one/none/all) */
|
// "config_validate" hook returns a non-empty string with an error-message (everything else is treated as no error)
|
||||||
|
// The hook can additional set $GLOBALS['egw_info']['server']['found_validation_hook'] with individual validation-functions:
|
||||||
|
// a) regular function names matching the config-name or "final_validation" as values or
|
||||||
|
// b) same key as config-value for a callable eg. $GLOBALS['egw_info']['server']['found_validation_hook'][<name>]='<class-name>::<name>'
|
||||||
|
// The validation-function can return a non-empty string with an error (or deprecated set $GLOBALS['config_error']).
|
||||||
|
// Function signature: ?string function(mixed $value, Api\Config $c) ($c can be used to modify the value to save: $c->config_data[$name]=$val)
|
||||||
|
// Please note: only b) can be implemented in the file of a namespaced class
|
||||||
$errors = Api\Hooks::single(array(
|
$errors = Api\Hooks::single(array(
|
||||||
'location' => 'config_validate',
|
'location' => 'config_validate',
|
||||||
)+(array)$_content['newsettings'], $appname);
|
)+(array)$_content['newsettings'], $appname);
|
||||||
@ -155,12 +161,14 @@ class admin_config
|
|||||||
if ($config)
|
if ($config)
|
||||||
{
|
{
|
||||||
$c->config_data[$key] = $config;
|
$c->config_data[$key] = $config;
|
||||||
if (in_array($key, (array)$GLOBALS['egw_info']['server']['found_validation_hook'], true) && function_exists($key))
|
if (in_array($key, (array)$GLOBALS['egw_info']['server']['found_validation_hook'], true) &&
|
||||||
|
function_exists($func=$key) ||
|
||||||
|
isset($GLOBALS['egw_info']['server']['found_validation_hook'][$key]) &&
|
||||||
|
is_callable($func=$GLOBALS['egw_info']['server']['found_validation_hook'][$key]))
|
||||||
{
|
{
|
||||||
call_user_func($key, $config, $c);
|
if (is_string($err=$func($config, $c)) || ($err=$GLOBALS['config_error']))
|
||||||
if($GLOBALS['config_error'])
|
|
||||||
{
|
{
|
||||||
$errors .= lang($GLOBALS['config_error']) . "\n";
|
$errors .= lang($err) . "\n";
|
||||||
$GLOBALS['config_error'] = False;
|
$GLOBALS['config_error'] = False;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -171,17 +179,18 @@ class admin_config
|
|||||||
unset($c->config_data[$key]);
|
unset($c->config_data[$key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(in_array('final_validation', (array)$GLOBALS['egw_info']['server']['found_validation_hook']) &&
|
if (in_array('final_validation', (array)$GLOBALS['egw_info']['server']['found_validation_hook']) &&
|
||||||
function_exists('final_validation'))
|
function_exists($func='final_validation') ||
|
||||||
|
isset($GLOBALS['egw_info']['server']['found_validation_hook']['final_validation']) &&
|
||||||
|
is_callable($func=$GLOBALS['egw_info']['server']['found_validation_hook']['final_validation']))
|
||||||
{
|
{
|
||||||
final_validation($_content['newsettings']);
|
if (is_string($err=$func($_content['newsettings'])) || ($err=$GLOBALS['config_error']))
|
||||||
if($GLOBALS['config_error'])
|
|
||||||
{
|
{
|
||||||
$errors .= lang($GLOBALS['config_error']) . "\n";
|
$errors .= lang($err) . "\n";
|
||||||
$GLOBALS['config_error'] = False;
|
$GLOBALS['config_error'] = False;
|
||||||
}
|
}
|
||||||
unset($GLOBALS['egw_info']['server']['found_validation_hook']);
|
|
||||||
}
|
}
|
||||||
|
unset($GLOBALS['egw_info']['server']['found_validation_hook']);
|
||||||
|
|
||||||
// do not allow to save config, if there are errors
|
// do not allow to save config, if there are errors
|
||||||
if (!$errors)
|
if (!$errors)
|
||||||
|
Loading…
Reference in New Issue
Block a user