';
- print htmlentities($buffer);
- print '
';
+ return makeInternalLink($url, $text, '_blank', $accesskey);
}
/**
@@ -1077,7 +936,7 @@ function sq_is8bit($string,$charset='') {
* If you want to test all mbstring encodings - fill $list_of_encodings
* array.
* @return array list of encodings supported by php mbstring extension
- * @since 1.5.1
+ * @since 1.5.1 and 1.4.6
*/
function sq_mb_list_encodings() {
if (! function_exists('mb_internal_encoding'))
@@ -1120,7 +979,10 @@ function sq_mb_list_encodings() {
'windows-1256',
'tis-620',
'iso-2022-jp',
+ 'euc-cn',
'euc-kr',
+ 'euc-tw',
+ 'uhc',
'utf7-imap');
$supported_encodings=array();
@@ -1144,7 +1006,7 @@ function sq_mb_list_encodings() {
* Callback function used to lowercase array values.
* @param string $val array value
* @param mixed $key array key
- * @since 1.5.1
+ * @since 1.5.1 and 1.4.6
*/
function sq_lowercase_array_vals(&$val,$key) {
$val = strtolower($val);
@@ -1160,7 +1022,7 @@ function sq_lowercase_array_vals(&$val,$key) {
* vanilla string length function is used.
* @param string $str string
* @param string $charset charset
- * @since 1.5.1
+ * @since 1.5.1 and 1.4.6
* @return integer number of characters in string
*/
function sq_strlen($str, $charset=null){
@@ -1172,9 +1034,10 @@ function sq_strlen($str, $charset=null){
// use automatic charset detection, if function call asks for it
if ($charset=='auto') {
- global $default_charset;
+ global $default_charset, $squirrelmail_language;
set_my_charset();
$charset=$default_charset;
+ if ($squirrelmail_language=='ja_JP') $charset='euc-jp';
}
// Use mbstring only with listed charsets
@@ -1238,14 +1101,32 @@ function sq_str_pad($string, $width, $pad, $padtype, $charset='') {
*/
function sq_substr($string,$start,$length,$charset='auto') {
// use automatic charset detection, if function call asks for it
+ static $charset_auto, $bUse_mb;
+
if ($charset=='auto') {
- global $default_charset;
- set_my_charset();
- $charset=$default_charset;
+ if (!isset($charset_auto)) {
+ global $default_charset, $squirrelmail_language;
+ set_my_charset();
+ $charset=$default_charset;
+ if ($squirrelmail_language=='ja_JP') $charset='euc-jp';
+ $charset_auto = $charset;
+ } else {
+ $charset = $charset_auto;
+ }
}
$charset = strtolower($charset);
- if (function_exists('mb_internal_encoding') &&
- in_array($charset,sq_mb_list_encodings())) {
+
+ // in_array call is expensive => do it once and use a static var for
+ // storing the results
+ if (!isset($bUse_mb)) {
+ if (in_array($charset,sq_mb_list_encodings())) {
+ $bUse_mb = true;
+ } else {
+ $bUse_mb = false;
+ }
+ }
+
+ if ($bUse_mb) {
return mb_substr($string,$start,$length,$charset);
}
// TODO: add mbstring independent code
@@ -1268,14 +1149,31 @@ function sq_substr($string,$start,$length,$charset='auto') {
*/
function sq_strpos($haystack,$needle,$offset,$charset='auto') {
// use automatic charset detection, if function call asks for it
+ static $charset_auto, $bUse_mb;
+
if ($charset=='auto') {
- global $default_charset;
- set_my_charset();
- $charset=$default_charset;
+ if (!isset($charset_auto)) {
+ global $default_charset, $squirrelmail_language;
+ set_my_charset();
+ $charset=$default_charset;
+ if ($squirrelmail_language=='ja_JP') $charset='euc-jp';
+ $charset_auto = $charset;
+ } else {
+ $charset = $charset_auto;
+ }
}
$charset = strtolower($charset);
- if (function_exists('mb_internal_encoding') &&
- in_array($charset,sq_mb_list_encodings())) {
+
+ // in_array call is expensive => do it once and use a static var for
+ // storing the results
+ if (!isset($bUse_mb)) {
+ if (in_array($charset,sq_mb_list_encodings())) {
+ $bUse_mb = true;
+ } else {
+ $bUse_mb = false;
+ }
+ }
+ if ($bUse_mb) {
return mb_strpos($haystack,$needle,$offset,$charset);
}
// TODO: add mbstring independent code
@@ -1296,14 +1194,33 @@ function sq_strpos($haystack,$needle,$offset,$charset='auto') {
*/
function sq_strtoupper($string,$charset='auto') {
// use automatic charset detection, if function call asks for it
+ static $charset_auto, $bUse_mb;
+
if ($charset=='auto') {
- global $default_charset;
- set_my_charset();
- $charset=$default_charset;
+ if (!isset($charset_auto)) {
+ global $default_charset, $squirrelmail_language;
+ set_my_charset();
+ $charset=$default_charset;
+ if ($squirrelmail_language=='ja_JP') $charset='euc-jp';
+ $charset_auto = $charset;
+ } else {
+ $charset = $charset_auto;
+ }
}
$charset = strtolower($charset);
- if (function_exists('mb_strtoupper') &&
- in_array($charset,sq_mb_list_encodings())) {
+
+ // in_array call is expensive => do it once and use a static var for
+ // storing the results
+ if (!isset($bUse_mb)) {
+ if (function_exists('mb_strtoupper') &&
+ in_array($charset,sq_mb_list_encodings())) {
+ $bUse_mb = true;
+ } else {
+ $bUse_mb = false;
+ }
+ }
+
+ if ($bUse_mb) {
return mb_strtoupper($string,$charset);
}
// TODO: add mbstring independent code
@@ -1324,5 +1241,12 @@ function sq_count8bit($string) {
}
return $count;
}
-$PHP_SELF = php_self();
-?>
\ No newline at end of file
+
+/**
+ * Callback function to trim whitespace from a value, to be used in array_walk
+ * @param string $value value to trim
+ * @since 1.5.2 and 1.4.7
+ */
+function sq_trim_value ( &$value ) {
+ $value = trim($value);
+}