fix wrong language-string in settings/180.dkim.php, implemented Settings::Add() for updates later (much better than a manual query etc.), added new php-errorhandler so we can display php errors/warnings/notices (whatever is activated) in a nicer way

Signed-off-by: Michael Kaufmann (d00p) <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann (d00p)
2013-12-16 10:43:38 +01:00
parent cd3554eecf
commit 164b40fef3
6 changed files with 101 additions and 5 deletions

View File

@@ -81,7 +81,7 @@ return array(
'dkim_keylength' => array(
'label' => array(
'title' => $lng['dkim']['dkim_keylength']['title'],
'description' => sprintf($lng['dkim_keylength']['label']['description'], Settings::Get('dkim.dkim_prefix'))
'description' => sprintf($lng['dkim']['dkim_keylength']['description'], Settings::Get('dkim.dkim_prefix'))
),
'settinggroup' => 'dkim',
'varname' => 'dkim_keylength',

View File

@@ -136,6 +136,9 @@ class Settings {
if (Settings::Get($setting) !== null) {
// set new value in array
$sstr = explode(".", $setting);
if (!isset($sstr[1])) {
return false;
}
self::$_data[$sstr[0]][$sstr[1]] = $value;
// should we store to db instantly?
if ($instant_save) {
@@ -151,6 +154,41 @@ class Settings {
return false;
}
/**
* add a new setting to the database (mainly used in updater)
*
* @param string $setting a group and a varname separated by a dot (group.varname)
* @param string $value
*
* @return boolean
*/
public function pAddNew($setting = null, $value = null) {
// first check if it doesn't exist
if (Settings::Get($setting) === null) {
// validate parameter
$sstr = explode(".", $setting);
if (!isset($sstr[1])) {
return false;
}
// prepare statement
$ins_stmt = Database::prepare("
INSERT INTO `".TABLE_PANEL_SETTINGS."` SET
`settinggroup` = :group,
`varname` = :varname,
`value` = :value
");
$ins_data = array(
'settinggroup' => $sstr[0],
'varname' => $sstr[1],
'value' => $value
);
Database::pexecute($ins_stmt, $ins_data);
return true;
}
return false;
}
/**
* Store all un-saved changes to the database and
* re-read in all settings

View File

@@ -0,0 +1,37 @@
<?php
/**
* froxlor php error handler
*
* @param int $errno
* @param string $errstr
* @param string $errfile
* @param int $errline
* @param array $errcontext
*
* @return void|boolean
*/
function phpErrHandler($errno, $errstr, $errfile, $errline, array $errcontext) {
if (!(error_reporting() & $errno)) {
// This error code is not included in error_reporting
return;
}
if (!isset($_SERVER['SHELL']) || (isset($_SERVER['SHELL']) && $_SERVER['SHELL'] == '')) {
global $theme;
// if we're not on the shell, output a nicer error-message
$err_hint = file_get_contents(FROXLOR_INSTALL_DIR.'/templates/'.$theme.'/misc/phperrornice.tpl');
// replace values
$err_hint = str_replace("<TEXT>", '#'.$errno.' '.$errstr, $err_hint);
$err_hint = str_replace("<DEBUG>", $errfile.':'.$errline, $err_hint);
// show
echo $err_hint;
// return true to ignore php standard error-handler
return true;
}
// of on shell, use the php standard error-handler
return false;
}

View File

@@ -106,6 +106,7 @@ if (!isset($sql)
* Includes the Functions
*/
require FROXLOR_INSTALL_DIR.'/lib/functions.php';
@set_error_handler('phpErrHandler');
/**
* Includes the MySQL-Tabledefinitions etc.
@@ -121,7 +122,7 @@ $idna_convert = new idna_convert_wrapper();
* disable magic_quotes_runtime if enabled
*/
if (get_magic_quotes_runtime()) {
//Deactivate
// deactivate
set_magic_quotes_runtime(false);
}

View File

@@ -0,0 +1,9 @@
<div class="messagewrapperfull">
<div class="warningcontainer bradius">
<div class="warningtitle">PHP warning/error</div>
<div class="warning">
<p><TEXT></p>
<pre style="overflow:auto;"><DEBUG></pre>
</div>
</div>
</div>

11
templates/Sparkle/misc/phperrornice.tpl vendored Normal file
View File

@@ -0,0 +1,11 @@
<div class="messagewrapperfull">
<div class="warningcontainer bradius">
<div class="warningtitle">PHP warning/error</div>
<div class="warning">
<p><TEXT></p>
<p>&nbsp;</p>
<pre style="overflow:auto;"><DEBUG></pre>
<p>&nbsp;</p>
</div>
</div>
</div>