| | |
| | | var $scripts_path = ''; |
| | | var $script_files = array(); |
| | | var $scripts = array(); |
| | | var $charset = 'ISO-8859-1'; |
| | | |
| | | var $script_tag_file = "<script type=\"text/javascript\" src=\"%s%s\"></script>\n"; |
| | | var $script_tag = "<script type=\"text/javascript\">\n<!--\n%s\n\n//-->\n</script>\n"; |
| | |
| | | |
| | | } |
| | | |
| | | function set_charset($charset) |
| | | { |
| | | global $MBSTRING; |
| | | |
| | | $this->charset = $charset; |
| | | |
| | | if ($MBSTRING && function_exists("mb_internal_encoding")) |
| | | { |
| | | if(!@mb_internal_encoding($charset)) |
| | | $MBSTRING = FALSE; |
| | | } |
| | | } |
| | | |
| | | function get_charset() |
| | | { |
| | | return $this->charset; |
| | | } |
| | | |
| | | |
| | | function write($templ='', $base_path='') |
| | | { |
| | |
| | | // replace specialchars in content |
| | | $__page_title = rep_specialchars_output($this->title, 'html', 'show', FALSE); |
| | | $__page_header = $__page_body = $__page_footer = ''; |
| | | |
| | | |
| | | // include meta tag with charset |
| | | if (!empty($this->charset)) |
| | | $__page_header = '<meta http-equiv="content-type" content="text/html; charset='.$this->charset.'" />'."\n";; |
| | | |
| | | |
| | | // definition of the code to be placed in the document header and footer |
| | |
| | | // correct absolute pathes in images and other tags |
| | | $output = preg_replace('/(src|href|background)=(["\']?)(\/[a-z0-9_\-]+)/Ui', "\\1=\\2$base_path\\3", $output); |
| | | |
| | | print $output; |
| | | print rcube_charset_convert($output, 'UTF-8', $this->charset); |
| | | } |
| | | |
| | | |
| | |
| | | // get text in the desired language from the language file |
| | | function rcube_label($attrib) |
| | | { |
| | | global $sess_user_lang, $INSTALL_PATH; |
| | | global $sess_user_lang, $INSTALL_PATH, $OUTPUT; |
| | | static $sa_text_data, $s_language, $utf8_decode; |
| | | |
| | | // extract attributes |
| | |
| | | $sa_text_data = array(); |
| | | |
| | | // get english labels (these should be complete) |
| | | @include($INSTALL_PATH.'program/localization/en/labels.inc'); |
| | | @include($INSTALL_PATH.'program/localization/en/messages.inc'); |
| | | @include($INSTALL_PATH.'program/localization/en_US/labels.inc'); |
| | | @include($INSTALL_PATH.'program/localization/en_US/messages.inc'); |
| | | |
| | | if (is_array($labels)) |
| | | $sa_text_data = $labels; |
| | |
| | | { |
| | | include_once($INSTALL_PATH.'program/localization/'.$sess_user_lang.'/labels.inc'); |
| | | include_once($INSTALL_PATH.'program/localization/'.$sess_user_lang.'/messages.inc'); |
| | | |
| | | |
| | | if (is_array($labels)) |
| | | $sa_text_data = array_merge($sa_text_data, $labels); |
| | | if (is_array($messages)) |
| | | $sa_text_data = array_merge($sa_text_data, $messages); |
| | | } |
| | | |
| | | if (isset($utf8_decoding) && $utf8_decoding==TRUE) |
| | | { |
| | | @include_once('lib/utf8.inc'); |
| | | $utf8_decode = TRUE; |
| | | } |
| | | |
| | | $s_language = $sess_user_lang; |
| | |
| | | EOF; |
| | | "); |
| | | |
| | | |
| | | // perform utf-8 decoding |
| | | if ($utf8_decode && function_exists('utf8ToUnicodeEntities')) |
| | | $text = utf8ToUnicodeEntities($text); |
| | | |
| | | |
| | | // format output |
| | | if (($attrib['uppercase'] && strtolower($attrib['uppercase']=='first')) || $attrib['ucfirst']) |
| | | return ucfirst($text); |
| | |
| | | if (!headers_sent()) |
| | | header("Expires: ".gmdate("D, d M Y H:i:s", mktime()+2600000)." GMT"); |
| | | } |
| | | |
| | | |
| | | // replace specials characters to a specific encoding type |
| | | function rep_specialchars_output($str, $enctype='', $mode='', $newlines=TRUE) |
| | | { |
| | | global $OUTPUT_TYPE; |
| | | static $html_encode_arr, $js_rep_table, $rtf_rep_table, $xml_rep_table; |
| | | |
| | | if (!$enctype) |
| | | $enctype = $GLOBALS['OUTPUT_TYPE']; |
| | | |
| | | // convert nbsps back to normal spaces if not html |
| | | if ($enctype!='html') |
| | | $str = str_replace(chr(160), ' ', $str); |
| | | |
| | | |
| | | // encode for plaintext |
| | | if ($enctype=='text') |
| | | return str_replace("\r\n", "\n", $mode=='remove' ? strip_tags($str) : $str); |
| | | |
| | | // encode for HTML output |
| | | if ($enctype=='html') |
| | | { |
| | | if (!$html_encode_arr) |
| | | { |
| | | $html_encode_arr = get_html_translation_table(HTML_ENTITIES); |
| | | $html_encode_arr[chr(128)] = '€'; |
| | | unset($html_encode_arr['?']); |
| | | unset($html_encode_arr['&']); |
| | | } |
| | | |
| | | $ltpos = strpos($str, '<'); |
| | | $encode_arr = $html_encode_arr; |
| | | |
| | | // don't replace quotes and html tags |
| | | if (($mode=='show' || $mode=='') && $ltpos!==false && strpos($str, '>', $ltpos)!==false) |
| | | { |
| | | unset($encode_arr['"']); |
| | | unset($encode_arr['<']); |
| | | unset($encode_arr['>']); |
| | | } |
| | | else if ($mode=='remove') |
| | | $str = strip_tags($str); |
| | | |
| | | $out = strtr($str, $encode_arr); |
| | | |
| | | return $newlines ? nl2br($out) : $out; |
| | | } |
| | | |
| | | |
| | | if ($enctype=='url') |
| | | return rawurlencode($str); |
| | | |
| | | |
| | | // if the replace tables for RTF, XML and JS are not yet defined |
| | | if (!$js_rep_table) |
| | | { |
| | | for ($c=160; $c<256; $c++) // can be increased to support more charsets |
| | | { |
| | | $hex = dechex($c); |
| | | $js_rep_table[Chr($c)] = sprintf("\u%s%s", str_repeat('0', 4-strlen($hex)), $hex); |
| | | $rtf_rep_table[Chr($c)] = "\\'$hex"; |
| | | $xml_rep_table[Chr($c)] = "&#$c;"; |
| | | } |
| | | |
| | | $js_rep_table['"'] = sprintf("\u%s%s", str_repeat('0', 4-strlen(dechex(34))), dechex(34)); |
| | | $xml_rep_table['"'] = '"'; |
| | | } |
| | | |
| | | // encode for RTF |
| | | if ($enctype=='xml') |
| | | return strtr($str, $xml_rep_table); |
| | | |
| | | // encode for javascript use |
| | | if ($enctype=='js') |
| | | return preg_replace(array("/\r\n/", '/"/', "/([^\\\])'/"), array('\n', '\"', "$1\'"), strtr($str, $js_rep_table)); |
| | | |
| | | // encode for RTF |
| | | if ($enctype=='rtf') |
| | | return preg_replace("/\r\n/", "\par ", strtr($str, $rtf_rep_table)); |
| | | |
| | | // no encoding given -> return original string |
| | | return $str; |
| | | } |
| | | |
| | | |
| | | function decode_specialchars($input, $charset='') |
| | | { |
| | | $charset = strtolower($charset); |
| | | |
| | | if ($charset=='utf-8') |
| | | { |
| | | require_once('lib/utf8.inc'); |
| | | return utf8ToUnicodeEntities($input); |
| | | } |
| | | else if ($charset=="koi8-r") |
| | | return convert_cyr_string($input, 'k', 'w'); |
| | | else if ($charset=="iso8859-5") |
| | | return convert_cyr_string($input, 'i', 'w'); |
| | | else if ($charset=="x-cp866") |
| | | return convert_cyr_string($input, 'a', 'w'); |
| | | else if ($charset=="x-mac-cyrillic") |
| | | return convert_cyr_string($input, 'm', 'w'); |
| | | |
| | | return $input; |
| | | } |
| | | |
| | | |
| | | |
| | | // function to convert an array to a javascript array |
| | |
| | | |
| | | return $str; |
| | | } |
| | | |
| | | |
| | | |
| | | ?> |
| | | // delete all files within a folder |
| | | function clear_directory($dir_path) |
| | | { |
| | | $dir = @opendir($dir_path); |
| | | if(!$dir) return FALSE; |
| | | |
| | | while ($file = readdir($dir)) |
| | | if (strlen($file)>2) |
| | | unlink("$dir_path/$file"); |
| | | |
| | | closedir($dir); |
| | | return TRUE; |
| | | } |
| | | |
| | | |
| | | // create a unix timestamp with a specified offset from now |
| | | function get_offset_time($offset_str, $factor=1) |
| | | { |
| | | if (preg_match('/^([0-9]+)\s*([smhdw])/i', $offset_str, $regs)) |
| | | { |
| | | $amount = (int)$regs[1]; |
| | | $unit = strtolower($regs[2]); |
| | | } |
| | | else |
| | | { |
| | | $amount = (int)$offset_str; |
| | | $unit = 's'; |
| | | } |
| | | |
| | | $ts = mktime(); |
| | | switch ($unit) |
| | | { |
| | | case 'w': |
| | | $amount *= 7; |
| | | case 'd': |
| | | $amount *= 24; |
| | | case 'h': |
| | | $amount *= 60; |
| | | case 'h': |
| | | $amount *= 60; |
| | | case 's': |
| | | $ts += $amount * $factor; |
| | | } |
| | | |
| | | return $ts; |
| | | } |
| | | |
| | | |
| | | ?> |