From 7a5c48e7f70b8bc938fcae3ffd2be0fdbeaab145 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Wed, 13 Dec 2006 02:17:24 -0500 Subject: [PATCH] Changed 'junk' label in French localization --- program/include/main.inc | 64 +++++++++++++++++++++++++++++++- 1 files changed, 62 insertions(+), 2 deletions(-) diff --git a/program/include/main.inc b/program/include/main.inc index 9cf1f67..10436ca 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -1142,8 +1142,12 @@ // parse for specialtags - $output = parse_rcube_xml($templ); + $output = parse_rcube_xml(parse_rcube_conditions($templ)); + // add debug console + if ($CONFIG['debug_level'] & 8) + $OUTPUT->footer = '<div style="position:absolute;top:5px;left:5px;width:400px;opacity:0.8;z-index:9000;"><form name="debugform"><textarea name="console" rows="15" cols="40" style="width:400px;border:none;font-size:x-small"></textarea></form>'; + $OUTPUT->write(trim(parse_with_globals($output)), $skin_path); if ($exit) @@ -1161,6 +1165,55 @@ } +// parse conditional code +function parse_rcube_conditions($input) + { + if (($matches = preg_split('/<roundcube:(if|elseif|else|endif)\s+([^>]+)>/is', $input, 2, PREG_SPLIT_DELIM_CAPTURE)) && count($matches)==4) + { + if (preg_match('/^(else|endif)$/i', $matches[1])) + return $matches[0] . parse_rcube_conditions($matches[3]); + else + { + $attrib = parse_attrib_string($matches[2]); + if (isset($attrib['condition'])) + { + $condmet = rcube_xml_condition($attrib['condition']); + $submatches = preg_split('/<roundcube:(elseif|else|endif)\s+([^>]+)>/is', $matches[3], 2, PREG_SPLIT_DELIM_CAPTURE); + + if ($condmet) + $result = $submatches[0] . preg_replace('/.*<roundcube:endif\s+[^>]+>/is', '', $submatches[3]); + else + $result = "<roundcube:$submatches[1] $submatches[2]>" . $submatches[3]; + + return $matches[0] . parse_rcube_conditions($result); + } + else + { + raise_error(array('code' => 500, 'type' => 'php', 'line' => __LINE__, 'file' => __FILE__, + 'message' => "Unable to parse conditional tag " . $matches[2]), TRUE, FALSE); + } + } + } + + return $input; + } + + +/** + * Determines if a given condition is met + * + * @return True if condition is valid, False is not + */ +function rcube_xml_condition($condition) + { + $condition = preg_replace( + array('/session:([a-z0-9_]+)/i', '/config:([a-z0-9_]+)/i', '/request:([a-z0-9_]+)/ie'), + array("\$_SESSION['\\1']", "\$GLOBALS['CONFIG']['\\1']", "get_input_value('\\1', RCUBE_INPUT_GPC)"), + $condition); + + return @eval("return (".$condition.");"); + } + function parse_rcube_xml($input) { @@ -1169,12 +1222,19 @@ } +/** + * Convert a xml command tag into real content + */ function rcube_xml_command($command, $str_attrib, $add_attrib=array()) { global $IMAP, $CONFIG, $OUTPUT; $command = strtolower($command); $attrib = parse_attrib_string($str_attrib) + $add_attrib; + + // empty output if required condition is not met + if (!empty($attrib['condition']) && !rcube_xml_condition($attrib['condition'])) + return ''; // execute command switch ($command) @@ -1620,7 +1680,7 @@ $now = time(); // local time $now -= (int)date('Z'); // make GMT time $now += ($tz * 3600); // user's time - $now_date = getdate(); + $now_date = getdate($now); $today_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday'], $now_date['year']); $week_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday']-6, $now_date['year']); -- Gitblit v1.9.1