* API: support for mbstring.func_overload=0 (previously we required mbstring.func_overload=7 to correctly support utf-8)

This commit is contained in:
Ralf Becker 2014-02-04 16:15:52 +00:00
parent 4cce17070f
commit 7082a10338
3 changed files with 36 additions and 6 deletions

View File

@ -2149,9 +2149,9 @@ class etemplate extends boetemplate
{ {
self::set_validation_error($form_name,lang('Field must not be empty !!!'),''); self::set_validation_error($form_name,lang('Field must not be empty !!!'),'');
} }
if ((int) $attr['maxlength'] > 0 && strlen($value) > (int) $attr['maxlength']) if ((int) $attr['maxlength'] > 0 && mb_strlen($value) > (int) $attr['maxlength'])
{ {
$value = substr($value,0,(int) $attr['maxlength']); $value = mb_substr($value,0,(int) $attr['maxlength']);
} }
if ($attr['preg'] && !preg_match($attr['preg'],$value)) if ($attr['preg'] && !preg_match($attr['preg'],$value))
{ {

View File

@ -1465,9 +1465,9 @@ class egw_db
} }
// only truncate string if length given and <= 255 // only truncate string if length given and <= 255
// to not unnecessary truncate varchar(>255) as PostgreSQL uses text anyway and MySQL truncates itself silently (unless strict mode!) // to not unnecessary truncate varchar(>255) as PostgreSQL uses text anyway and MySQL truncates itself silently (unless strict mode!)
if (!is_null($length) && $length <= 255 && strlen($value) > $length) if (!is_null($length) && $length <= 255 && mb_strlen($value) > $length)
{ {
$value = substr($value,0,$length); $value = mb_substr($value, 0, $length);
} }
// casting boolean explicitly to string, as ADODB_postgres64::qstr() has an unwanted special handling // casting boolean explicitly to string, as ADODB_postgres64::qstr() has an unwanted special handling
// for boolean types, causing it to return "true" or "false" and not a quoted string like "'1'"! // for boolean types, causing it to return "true" or "false" and not a quoted string like "'1'"!

View File

@ -65,9 +65,39 @@ function cut_bytes(&$data,$offset,$len=null)
if (is_null($len)) if (is_null($len))
{ {
return $func_overload ? mb_substr($data,$offset,bytes($data),'ascii') : substr($data,$offset); return $func_overload & 2 ? mb_substr($data,$offset,bytes($data),'ascii') : substr($data,$offset);
}
return $func_overload & 2 ? mb_substr($data,$offset,$len,'ascii') : substr($data,$offset,$len);
}
if (!function_exists('mb_strlen'))
{
/**
* Number of characters in a string
*
* @param string $str
* @return int
*/
function mb_strlen($str)
{
return strlen($str);
}
}
if (!function_exists('mb_substr'))
{
/**
* Return part of a string
*
* @param string $data
* @param int $offset
* @param int $len
* @return string
*/
function mb_substr(&$data, $offset, $len=null)
{
return is_null($len) ? substr($data, $offset) : substr($data, $offset, $len);
} }
return $func_overload ? mb_substr($data,$offset,$len,'ascii') : substr($data,$offset,$len);
} }
/** /**