etext($label, array_map(array("it_html", "Q"), $values), $language) : $GLOBALS['it_text']->text($label, $language); } /** * Return a text in the selected language * Replaces variables of the form {var} with value from argument $values * @param $label Label of text to return * @param $values Associative array containing values to fill in * @param $language Optional language to return text in. * @return Localized text string with variables replaced by their values */ function ET($label, $values = null, $language = null) { it_text::init(); return $GLOBALS['it_text']->etext($label, $values, $language); } /** * Change language * @param $language New language to set * @param $setcookie Optional flag if a cookie is to be set (default: true) */ function T_set_language($language, $setcookie = true) { it_text::init(); return $GLOBALS['it_text']->set_language($language, $setcookie); } /** * Get active language * @return currently active language */ function T_lang() { it_text::init(); return $GLOBALS['it_text']->get_language(); } /** * Get available languages * @return available languages as langcode => langname */ function T_languages() { it_text::init(); return $GLOBALS['it_text']->languages; } /** * Check if a text entry for a specific label exists * @param $label Label to check * @return true if text exists in actual (or supplied) language, false otherwise. */ function T_exists($label, $language = null) { it_text::init(); return $GLOBALS['it_text']->text_exists($label, $language); } /** * Return "db4" or "db2" depending on availability */ function db_version() { return in_array("db4", dba_handlers()) ? "db4" : "db2"; } /****************** functions for class it_text **********************/ /** * Build an url */ function U(/* ... */) { $args = func_get_args(); return call_user_func_array(array('it_html', 'U'), $args); } /************************** other functions ***************************/ /** * Print an error message and end page */ function fail($text) { trigger_error($text, E_USER_ERROR); it::fatal($text); } /** * Global shortcut for $it_debug::debug() * @see it_debug::debug() */ function debug($text, $level=0) { if (isset($GLOBALS['it_debug'])) $GLOBALS['it_debug']->debug($text, $level); } /** * Convert a htmlentities-encoded string back to normal */ function it_htmlentities_decode($string) { return strtr($string, array_flip(get_html_translation_table(HTML_ENTITIES))); } /** * Clone an object and return copy, works for all PHP versions */ function &it_clone(&$object) { $result = (is_object($object) && version_compare(zend_version(), 2, '>=')) ? clone($object) : $object; return $result; # PHP internals need a tmp var to return by ref } /** * Experimental PHP taint support, see ftp://ftp.porcupine.org/pub/php/ */ if (function_exists("taint")) { function it_untaint($value, $marks = TC_HTML) { untaint($value, $marks); return $value; } function it_taintcheck($value, $marks = TC_HTML) { if (istainted($value) & $marks) { untaint($value, $marks); it::error(it_untaint("it_taintcheck($value, $marks) failed")); } return $value; } } else { define('TC_HTML', 0); define('TC_SHELL', 0); define('TC_MYSQL', 0); define('TC_MYSQLI', 0); define('TC_SELF', 0); define('TC_ALL', 0); define('TC_NONE', 0); function it_untaint($value, $dummy_marks = 0) { return $value; } function it_taintcheck($value, $dummy_marks = 0) { return $value; } } # ULTRAHOME is generated in a safe way $GLOBALS['ULTRAHOME'] = it_untaint($GLOBALS['ULTRAHOME'], TC_ALL); ?>