From ba6f21caeb405c7e8512a09941fefbc97286e45f Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Wed, 21 Nov 2012 19:52:03 +0100 Subject: Framework files moved to lib/Roundcube --- program/include/bootstrap.php | 480 --- program/include/html.php | 849 ----- program/include/iniset.php | 5 +- program/include/rcube.php | 1227 ------- program/include/rcube_addressbook.php | 533 --- program/include/rcube_base_replacer.php | 108 - program/include/rcube_browser.php | 73 - program/include/rcube_cache.php | 559 --- program/include/rcube_charset.php | 791 ----- program/include/rcube_config.php | 441 --- program/include/rcube_contacts.php | 1002 ------ program/include/rcube_content_filter.php | 60 - program/include/rcube_csv2vcard.php | 382 --- program/include/rcube_db.php | 1009 ------ program/include/rcube_db_mssql.php | 156 - program/include/rcube_db_mysql.php | 159 - program/include/rcube_db_pgsql.php | 136 - program/include/rcube_db_sqlite.php | 179 - program/include/rcube_db_sqlsrv.php | 157 - program/include/rcube_image.php | 268 -- program/include/rcube_imap.php | 4167 ----------------------- program/include/rcube_imap_cache.php | 1160 ------- program/include/rcube_imap_generic.php | 3694 -------------------- program/include/rcube_ldap.php | 2352 ------------- program/include/rcube_message.php | 758 ----- program/include/rcube_message_header.php | 288 -- program/include/rcube_message_part.php | 100 - program/include/rcube_mime.php | 713 ---- program/include/rcube_output.php | 284 -- program/include/rcube_output_html.php | 1775 ---------- program/include/rcube_output_json.php | 258 -- program/include/rcube_plugin.php | 360 -- program/include/rcube_plugin_api.php | 495 --- program/include/rcube_result_index.php | 453 --- program/include/rcube_result_set.php | 72 - program/include/rcube_result_thread.php | 676 ---- program/include/rcube_session.php | 632 ---- program/include/rcube_smtp.php | 470 --- program/include/rcube_spellchecker.php | 621 ---- program/include/rcube_storage.php | 991 ------ program/include/rcube_string_replacer.php | 195 -- program/include/rcube_user.php | 723 ---- program/include/rcube_utils.php | 977 ------ program/include/rcube_vcard.php | 793 ----- program/lib/Roundcube/bootstrap.php | 482 +++ program/lib/Roundcube/html.php | 849 +++++ program/lib/Roundcube/rcube.php | 1227 +++++++ program/lib/Roundcube/rcube_addressbook.php | 533 +++ program/lib/Roundcube/rcube_base_replacer.php | 108 + program/lib/Roundcube/rcube_browser.php | 73 + program/lib/Roundcube/rcube_cache.php | 559 +++ program/lib/Roundcube/rcube_charset.php | 791 +++++ program/lib/Roundcube/rcube_config.php | 441 +++ program/lib/Roundcube/rcube_contacts.php | 1002 ++++++ program/lib/Roundcube/rcube_content_filter.php | 60 + program/lib/Roundcube/rcube_csv2vcard.php | 382 +++ program/lib/Roundcube/rcube_db.php | 1009 ++++++ program/lib/Roundcube/rcube_db_mssql.php | 156 + program/lib/Roundcube/rcube_db_mysql.php | 159 + program/lib/Roundcube/rcube_db_pgsql.php | 136 + program/lib/Roundcube/rcube_db_sqlite.php | 179 + program/lib/Roundcube/rcube_db_sqlsrv.php | 157 + program/lib/Roundcube/rcube_image.php | 268 ++ program/lib/Roundcube/rcube_imap.php | 4167 +++++++++++++++++++++++ program/lib/Roundcube/rcube_imap_cache.php | 1160 +++++++ program/lib/Roundcube/rcube_imap_generic.php | 3694 ++++++++++++++++++++ program/lib/Roundcube/rcube_ldap.php | 2352 +++++++++++++ program/lib/Roundcube/rcube_message.php | 758 +++++ program/lib/Roundcube/rcube_message_header.php | 288 ++ program/lib/Roundcube/rcube_message_part.php | 100 + program/lib/Roundcube/rcube_mime.php | 713 ++++ program/lib/Roundcube/rcube_output.php | 284 ++ program/lib/Roundcube/rcube_output_html.php | 1775 ++++++++++ program/lib/Roundcube/rcube_output_json.php | 258 ++ program/lib/Roundcube/rcube_plugin.php | 360 ++ program/lib/Roundcube/rcube_plugin_api.php | 495 +++ program/lib/Roundcube/rcube_result_index.php | 453 +++ program/lib/Roundcube/rcube_result_set.php | 72 + program/lib/Roundcube/rcube_result_thread.php | 676 ++++ program/lib/Roundcube/rcube_session.php | 632 ++++ program/lib/Roundcube/rcube_smtp.php | 470 +++ program/lib/Roundcube/rcube_spellchecker.php | 621 ++++ program/lib/Roundcube/rcube_storage.php | 991 ++++++ program/lib/Roundcube/rcube_string_replacer.php | 195 ++ program/lib/Roundcube/rcube_user.php | 723 ++++ program/lib/Roundcube/rcube_utils.php | 977 ++++++ 86 files changed, 30789 insertions(+), 31577 deletions(-) delete mode 100644 program/include/bootstrap.php delete mode 100644 program/include/html.php delete mode 100644 program/include/rcube.php delete mode 100644 program/include/rcube_addressbook.php delete mode 100644 program/include/rcube_base_replacer.php delete mode 100644 program/include/rcube_browser.php delete mode 100644 program/include/rcube_cache.php delete mode 100644 program/include/rcube_charset.php delete mode 100644 program/include/rcube_config.php delete mode 100644 program/include/rcube_contacts.php delete mode 100644 program/include/rcube_content_filter.php delete mode 100644 program/include/rcube_csv2vcard.php delete mode 100644 program/include/rcube_db.php delete mode 100644 program/include/rcube_db_mssql.php delete mode 100644 program/include/rcube_db_mysql.php delete mode 100644 program/include/rcube_db_pgsql.php delete mode 100644 program/include/rcube_db_sqlite.php delete mode 100644 program/include/rcube_db_sqlsrv.php delete mode 100644 program/include/rcube_image.php delete mode 100644 program/include/rcube_imap.php delete mode 100644 program/include/rcube_imap_cache.php delete mode 100644 program/include/rcube_imap_generic.php delete mode 100644 program/include/rcube_ldap.php delete mode 100644 program/include/rcube_message.php delete mode 100644 program/include/rcube_message_header.php delete mode 100644 program/include/rcube_message_part.php delete mode 100644 program/include/rcube_mime.php delete mode 100644 program/include/rcube_output.php delete mode 100644 program/include/rcube_output_html.php delete mode 100644 program/include/rcube_output_json.php delete mode 100644 program/include/rcube_plugin.php delete mode 100644 program/include/rcube_plugin_api.php delete mode 100644 program/include/rcube_result_index.php delete mode 100644 program/include/rcube_result_set.php delete mode 100644 program/include/rcube_result_thread.php delete mode 100644 program/include/rcube_session.php delete mode 100644 program/include/rcube_smtp.php delete mode 100644 program/include/rcube_spellchecker.php delete mode 100644 program/include/rcube_storage.php delete mode 100644 program/include/rcube_string_replacer.php delete mode 100644 program/include/rcube_user.php delete mode 100644 program/include/rcube_utils.php delete mode 100644 program/include/rcube_vcard.php create mode 100644 program/lib/Roundcube/bootstrap.php create mode 100644 program/lib/Roundcube/html.php create mode 100644 program/lib/Roundcube/rcube.php create mode 100644 program/lib/Roundcube/rcube_addressbook.php create mode 100644 program/lib/Roundcube/rcube_base_replacer.php create mode 100644 program/lib/Roundcube/rcube_browser.php create mode 100644 program/lib/Roundcube/rcube_cache.php create mode 100644 program/lib/Roundcube/rcube_charset.php create mode 100644 program/lib/Roundcube/rcube_config.php create mode 100644 program/lib/Roundcube/rcube_contacts.php create mode 100644 program/lib/Roundcube/rcube_content_filter.php create mode 100644 program/lib/Roundcube/rcube_csv2vcard.php create mode 100644 program/lib/Roundcube/rcube_db.php create mode 100644 program/lib/Roundcube/rcube_db_mssql.php create mode 100644 program/lib/Roundcube/rcube_db_mysql.php create mode 100644 program/lib/Roundcube/rcube_db_pgsql.php create mode 100644 program/lib/Roundcube/rcube_db_sqlite.php create mode 100644 program/lib/Roundcube/rcube_db_sqlsrv.php create mode 100644 program/lib/Roundcube/rcube_image.php create mode 100644 program/lib/Roundcube/rcube_imap.php create mode 100644 program/lib/Roundcube/rcube_imap_cache.php create mode 100644 program/lib/Roundcube/rcube_imap_generic.php create mode 100644 program/lib/Roundcube/rcube_ldap.php create mode 100644 program/lib/Roundcube/rcube_message.php create mode 100644 program/lib/Roundcube/rcube_message_header.php create mode 100644 program/lib/Roundcube/rcube_message_part.php create mode 100644 program/lib/Roundcube/rcube_mime.php create mode 100644 program/lib/Roundcube/rcube_output.php create mode 100644 program/lib/Roundcube/rcube_output_html.php create mode 100644 program/lib/Roundcube/rcube_output_json.php create mode 100644 program/lib/Roundcube/rcube_plugin.php create mode 100644 program/lib/Roundcube/rcube_plugin_api.php create mode 100644 program/lib/Roundcube/rcube_result_index.php create mode 100644 program/lib/Roundcube/rcube_result_set.php create mode 100644 program/lib/Roundcube/rcube_result_thread.php create mode 100644 program/lib/Roundcube/rcube_session.php create mode 100644 program/lib/Roundcube/rcube_smtp.php create mode 100644 program/lib/Roundcube/rcube_spellchecker.php create mode 100644 program/lib/Roundcube/rcube_storage.php create mode 100644 program/lib/Roundcube/rcube_string_replacer.php create mode 100644 program/lib/Roundcube/rcube_user.php create mode 100644 program/lib/Roundcube/rcube_utils.php (limited to 'program') diff --git a/program/include/bootstrap.php b/program/include/bootstrap.php deleted file mode 100644 index 9541f7e65..000000000 --- a/program/include/bootstrap.php +++ /dev/null @@ -1,480 +0,0 @@ - | - | Author: Aleksander Machniak | - +-----------------------------------------------------------------------+ -*/ - - -/** - * Roundcube Framework Initialization - * - * @package Framework - * @subpackage Core - */ - -$config = array( - 'error_reporting' => E_ALL &~ (E_NOTICE | E_STRICT), - // Some users are not using Installer, so we'll check some - // critical PHP settings here. Only these, which doesn't provide - // an error/warning in the logs later. See (#1486307). - 'mbstring.func_overload' => 0, - 'suhosin.session.encrypt' => 0, - 'session.auto_start' => 0, - 'file_uploads' => 1, - 'magic_quotes_runtime' => 0, - 'magic_quotes_sybase' => 0, // #1488506 -); -foreach ($config as $optname => $optval) { - if ($optval != ini_get($optname) && @ini_set($optname, $optval) === false) { - die("ERROR: Wrong '$optname' option value and it wasn't possible to set it to required value ($optval).\n" - ."Check your PHP configuration (including php_admin_flag)."); - } -} - -// application constants -define('RCMAIL_VERSION', '0.9-git'); -define('RCMAIL_CHARSET', 'UTF-8'); -define('RCMAIL_START', microtime(true)); - -if (!defined('INSTALL_PATH')) { - define('INSTALL_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/'); -} - -if (!defined('RCMAIL_CONFIG_DIR')) { - define('RCMAIL_CONFIG_DIR', INSTALL_PATH . 'config'); -} - -// set internal encoding for mbstring extension -if (extension_loaded('mbstring')) { - mb_internal_encoding(RCMAIL_CHARSET); - @mb_regex_encoding(RCMAIL_CHARSET); -} - -// Register autoloader -spl_autoload_register('rcube_autoload'); - -// set PEAR error handling (will also load the PEAR main class) -PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'rcube_pear_error'); - - - -/** - * Similar function as in_array() but case-insensitive - * - * @param string $needle Needle value - * @param array $heystack Array to search in - * - * @return boolean True if found, False if not - */ -function in_array_nocase($needle, $haystack) -{ - $needle = mb_strtolower($needle); - foreach ((array)$haystack as $value) { - if ($needle === mb_strtolower($value)) { - return true; - } - } - - return false; -} - - -/** - * Parse a human readable string for a number of bytes. - * - * @param string $str Input string - * - * @return float Number of bytes - */ -function parse_bytes($str) -{ - if (is_numeric($str)) { - return floatval($str); - } - - if (preg_match('/([0-9\.]+)\s*([a-z]*)/i', $str, $regs)) { - $bytes = floatval($regs[1]); - switch (strtolower($regs[2])) { - case 'g': - case 'gb': - $bytes *= 1073741824; - break; - case 'm': - case 'mb': - $bytes *= 1048576; - break; - case 'k': - case 'kb': - $bytes *= 1024; - break; - } - } - - return floatval($bytes); -} - - -/** - * Make sure the string ends with a slash - */ -function slashify($str) -{ - return unslashify($str).'/'; -} - - -/** - * Remove slashes at the end of the string - */ -function unslashify($str) -{ - return preg_replace('/\/+$/', '', $str); -} - - -/** - * Returns number of seconds for a specified offset string. - * - * @param string $str String representation of the offset (e.g. 20min, 5h, 2days, 1week) - * - * @return int Number of seconds - */ -function get_offset_sec($str) -{ - if (preg_match('/^([0-9]+)\s*([smhdw])/i', $str, $regs)) { - $amount = (int) $regs[1]; - $unit = strtolower($regs[2]); - } - else { - $amount = (int) $str; - $unit = 's'; - } - - switch ($unit) { - case 'w': - $amount *= 7; - case 'd': - $amount *= 24; - case 'h': - $amount *= 60; - case 'm': - $amount *= 60; - } - - return $amount; -} - - -/** - * Create a unix timestamp with a specified offset from now. - * - * @param string $offset_str String representation of the offset (e.g. 20min, 5h, 2days) - * @param int $factor Factor to multiply with the offset - * - * @return int Unix timestamp - */ -function get_offset_time($offset_str, $factor=1) -{ - return time() + get_offset_sec($offset_str) * $factor; -} - - -/** - * Truncate string if it is longer than the allowed length. - * Replace the middle or the ending part of a string with a placeholder. - * - * @param string $str Input string - * @param int $maxlength Max. length - * @param string $placeholder Replace removed chars with this - * @param bool $ending Set to True if string should be truncated from the end - * - * @return string Abbreviated string - */ -function abbreviate_string($str, $maxlength, $placeholder='...', $ending=false) -{ - $length = mb_strlen($str); - - if ($length > $maxlength) { - if ($ending) { - return mb_substr($str, 0, $maxlength) . $placeholder; - } - - $placeholder_length = mb_strlen($placeholder); - $first_part_length = floor(($maxlength - $placeholder_length)/2); - $second_starting_location = $length - $maxlength + $first_part_length + $placeholder_length; - - $str = mb_substr($str, 0, $first_part_length) . $placeholder . mb_substr($str, $second_starting_location); - } - - return $str; -} - - -/** - * Get all keys from array (recursive). - * - * @param array $array Input array - * - * @return array List of array keys - */ -function array_keys_recursive($array) -{ - $keys = array(); - - if (!empty($array) && is_array($array)) { - foreach ($array as $key => $child) { - $keys[] = $key; - foreach (array_keys_recursive($child) as $val) { - $keys[] = $val; - } - } - } - - return $keys; -} - - -/** - * Remove all non-ascii and non-word chars except ., -, _ - */ -function asciiwords($str, $css_id = false, $replace_with = '') -{ - $allowed = 'a-z0-9\_\-' . (!$css_id ? '\.' : ''); - return preg_replace("/[^$allowed]/i", $replace_with, $str); -} - - -/** - * Check if a string contains only ascii characters - * - * @param string $str String to check - * @param bool $control_chars Includes control characters - * - * @return bool - */ -function is_ascii($str, $control_chars = true) -{ - $regexp = $control_chars ? '/[^\x00-\x7F]/' : '/[^\x20-\x7E]/'; - return preg_match($regexp, $str) ? false : true; -} - - -/** - * Remove single and double quotes from a given string - * - * @param string Input value - * - * @return string Dequoted string - */ -function strip_quotes($str) -{ - return str_replace(array("'", '"'), '', $str); -} - - -/** - * Remove new lines characters from given string - * - * @param string $str Input value - * - * @return string Stripped string - */ -function strip_newlines($str) -{ - return preg_replace('/[\r\n]/', '', $str); -} - - -/** - * Compose a valid representation of name and e-mail address - * - * @param string $email E-mail address - * @param string $name Person name - * - * @return string Formatted string - */ -function format_email_recipient($email, $name = '') -{ - $email = trim($email); - - if ($name && $name != $email) { - // Special chars as defined by RFC 822 need to in quoted string (or escaped). - if (preg_match('/[\(\)\<\>\\\.\[\]@,;:"]/', $name)) { - $name = '"'.addcslashes($name, '"').'"'; - } - - return "$name <$email>"; - } - - return $email; -} - - -/** - * Format e-mail address - * - * @param string $email E-mail address - * - * @return string Formatted e-mail address - */ -function format_email($email) -{ - $email = trim($email); - $parts = explode('@', $email); - $count = count($parts); - - if ($count > 1) { - $parts[$count-1] = mb_strtolower($parts[$count-1]); - - $email = implode('@', $parts); - } - - return $email; -} - - -/** - * mbstring replacement functions - */ -if (!extension_loaded('mbstring')) -{ - function mb_strlen($str) - { - return strlen($str); - } - - function mb_strtolower($str) - { - return strtolower($str); - } - - function mb_strtoupper($str) - { - return strtoupper($str); - } - - function mb_substr($str, $start, $len=null) - { - return substr($str, $start, $len); - } - - function mb_strpos($haystack, $needle, $offset=0) - { - return strpos($haystack, $needle, $offset); - } - - function mb_strrpos($haystack, $needle, $offset=0) - { - return strrpos($haystack, $needle, $offset); - } -} - -/** - * intl replacement functions - */ - -if (!function_exists('idn_to_utf8')) -{ - function idn_to_utf8($domain, $flags=null) - { - static $idn, $loaded; - - if (!$loaded) { - $idn = new Net_IDNA2(); - $loaded = true; - } - - if ($idn && $domain && preg_match('/(^|\.)xn--/i', $domain)) { - try { - $domain = $idn->decode($domain); - } - catch (Exception $e) { - } - } - return $domain; - } -} - -if (!function_exists('idn_to_ascii')) -{ - function idn_to_ascii($domain, $flags=null) - { - static $idn, $loaded; - - if (!$loaded) { - $idn = new Net_IDNA2(); - $loaded = true; - } - - if ($idn && $domain && preg_match('/[^\x20-\x7E]/', $domain)) { - try { - $domain = $idn->encode($domain); - } - catch (Exception $e) { - } - } - return $domain; - } -} - -/** - * Use PHP5 autoload for dynamic class loading - * - * @todo Make Zend, PEAR etc play with this - * @todo Make our classes conform to a more straight forward CS. - */ -function rcube_autoload($classname) -{ - $filename = preg_replace( - array( - '/Mail_(.+)/', - '/Net_(.+)/', - '/Auth_(.+)/', - '/^html_.+/', - '/^utf8$/', - ), - array( - 'Mail/\\1', - 'Net/\\1', - 'Auth/\\1', - 'html', - 'utf8.class', - ), - $classname - ); - - if ($fp = @fopen("$filename.php", 'r', true)) { - fclose($fp); - include_once "$filename.php"; - return true; - } - - return false; -} - -/** - * Local callback function for PEAR errors - */ -function rcube_pear_error($err) -{ - error_log(sprintf("%s (%s): %s", - $err->getMessage(), - $err->getCode(), - $err->getUserinfo()), 0); -} diff --git a/program/include/html.php b/program/include/html.php deleted file mode 100644 index 8ff685a84..000000000 --- a/program/include/html.php +++ /dev/null @@ -1,849 +0,0 @@ - | - +-----------------------------------------------------------------------+ -*/ - - -/** - * Class for HTML code creation - * - * @package Framework - * @subpackage HTML - */ -class html -{ - protected $tagname; - protected $attrib = array(); - protected $allowed = array(); - protected $content; - - public static $doctype = 'xhtml'; - public static $lc_tags = true; - public static $common_attrib = array('id','class','style','title','align'); - public static $containers = array('iframe','div','span','p','h1','h2','h3','form','textarea','table','thead','tbody','tr','th','td','style','script'); - - /** - * Constructor - * - * @param array $attrib Hash array with tag attributes - */ - public function __construct($attrib = array()) - { - if (is_array($attrib)) { - $this->attrib = $attrib; - } - } - - /** - * Return the tag code - * - * @return string The finally composed HTML tag - */ - public function show() - { - return self::tag($this->tagname, $this->attrib, $this->content, array_merge(self::$common_attrib, $this->allowed)); - } - - /****** STATIC METHODS *******/ - - /** - * Generic method to create a HTML tag - * - * @param string $tagname Tag name - * @param array $attrib Tag attributes as key/value pairs - * @param string $content Optinal Tag content (creates a container tag) - * @param array $allowed_attrib List with allowed attributes, omit to allow all - * @return string The XHTML tag - */ - public static function tag($tagname, $attrib = array(), $content = null, $allowed_attrib = null) - { - if (is_string($attrib)) - $attrib = array('class' => $attrib); - - $inline_tags = array('a','span','img'); - $suffix = $attrib['nl'] || ($content && $attrib['nl'] !== false && !in_array($tagname, $inline_tags)) ? "\n" : ''; - - $tagname = self::$lc_tags ? strtolower($tagname) : $tagname; - if (isset($content) || in_array($tagname, self::$containers)) { - $suffix = $attrib['noclose'] ? $suffix : '' . $suffix; - unset($attrib['noclose'], $attrib['nl']); - return '<' . $tagname . self::attrib_string($attrib, $allowed_attrib) . '>' . $content . $suffix; - } - else { - return '<' . $tagname . self::attrib_string($attrib, $allowed_attrib) . '>' . $suffix; - } - } - - /** - * - */ - public static function doctype($type) - { - $doctypes = array( - 'html5' => '', - 'xhtml' => '', - 'xhtml-trans' => '', - 'xhtml-strict' => '', - ); - - if ($doctypes[$type]) { - self::$doctype = preg_replace('/-\w+$/', '', $type); - return $doctypes[$type]; - } - - return ''; - } - - /** - * Derrived method for
containers - * - * @param mixed $attr Hash array with tag attributes or string with class name - * @param string $cont Div content - * @return string HTML code - * @see html::tag() - */ - public static function div($attr = null, $cont = null) - { - if (is_string($attr)) { - $attr = array('class' => $attr); - } - return self::tag('div', $attr, $cont, array_merge(self::$common_attrib, array('onclick'))); - } - - /** - * Derrived method for

blocks - * - * @param mixed $attr Hash array with tag attributes or string with class name - * @param string $cont Paragraph content - * @return string HTML code - * @see html::tag() - */ - public static function p($attr = null, $cont = null) - { - if (is_string($attr)) { - $attr = array('class' => $attr); - } - return self::tag('p', $attr, $cont, self::$common_attrib); - } - - /** - * Derrived method to create - * - * @param mixed $attr Hash array with tag attributes or string with image source (src) - * @return string HTML code - * @see html::tag() - */ - public static function img($attr = null) - { - if (is_string($attr)) { - $attr = array('src' => $attr); - } - return self::tag('img', $attr + array('alt' => ''), null, array_merge(self::$common_attrib, - array('src','alt','width','height','border','usemap','onclick'))); - } - - /** - * Derrived method for link tags - * - * @param mixed $attr Hash array with tag attributes or string with link location (href) - * @param string $cont Link content - * @return string HTML code - * @see html::tag() - */ - public static function a($attr, $cont) - { - if (is_string($attr)) { - $attr = array('href' => $attr); - } - return self::tag('a', $attr, $cont, array_merge(self::$common_attrib, - array('href','target','name','rel','onclick','onmouseover','onmouseout','onmousedown','onmouseup'))); - } - - /** - * Derrived method for inline span tags - * - * @param mixed $attr Hash array with tag attributes or string with class name - * @param string $cont Tag content - * @return string HTML code - * @see html::tag() - */ - public static function span($attr, $cont) - { - if (is_string($attr)) { - $attr = array('class' => $attr); - } - return self::tag('span', $attr, $cont, self::$common_attrib); - } - - /** - * Derrived method for form element labels - * - * @param mixed $attr Hash array with tag attributes or string with 'for' attrib - * @param string $cont Tag content - * @return string HTML code - * @see html::tag() - */ - public static function label($attr, $cont) - { - if (is_string($attr)) { - $attr = array('for' => $attr); - } - return self::tag('label', $attr, $cont, array_merge(self::$common_attrib, array('for'))); - } - - /** - * Derrived method to create - * - * @param mixed $attr Hash array with tag attributes or string with frame source (src) - * @return string HTML code - * @see html::tag() - */ - public static function iframe($attr = null, $cont = null) - { - if (is_string($attr)) { - $attr = array('src' => $attr); - } - return self::tag('iframe', $attr, $cont, array_merge(self::$common_attrib, - array('src','name','width','height','border','frameborder'))); - } - - /** - * Derrived method to create