alecpl
2011-01-20 1ad1f88e389afe3fe7ead8bdff74aa8560bbd4e2
- Updated PEAR::Net_IDNA2 to 0.1.1


4 files modified
143 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/lib/Net/IDNA2.php 136 ●●●● patch | view | raw | blame | history
program/lib/Net/IDNA2/Exception.php 3 ●●●● patch | view | raw | blame | history
program/lib/Net/IDNA2/Exception/Nameprep.php 3 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Updated PEAR::Net_IDNA2 to 0.1.1
- Fix handling of comments inside an email address spec. (#1487673)
- Fix randomly disappearing folders list in IE (#1487704)
- Fix list column add/removal in IE (#1487703)
program/lib/Net/IDNA2.php
@@ -49,11 +49,11 @@
 *
 * ACE input and output is always expected to be ASCII.
 *
 * @package Net
 * @author  Markus Nix <mnix@docuverse.de>
 * @author  Matthias Sommerfeld <mso@phlylabs.de>
 * @author  Stefan Neufeind <pear.neufeind@speedpartner.de>
 * @package Net
 * @version $Id: IDNA2.php 301175 2010-07-12 03:31:17Z clockwerx $
 * @version $Id: IDNA2.php 305344 2010-11-14 23:52:42Z neufeind $
 */
class Net_IDNA2
{
@@ -1124,8 +1124,8 @@
        0x33BE  => array(0x6B, 0x77),
        0x33BF  => array(0x6D, 0x77),
        0x33C0  => array(0x6B, 0x3C9),
        0x33C1  => array(0x6D, 0x3C9), /*
        0x33C2  => array(0x61, 0x2E, 0x6D, 0x2E), */
        0x33C1  => array(0x6D, 0x3C9),
        /* 0x33C2  => array(0x61, 0x2E, 0x6D, 0x2E), */
        0x33C3  => array(0x62, 0x71),
        0x33C6  => array(0x63, 0x2215, 0x6B, 0x67),
        0x33C7  => array(0x63, 0x6F, 0x2E),
@@ -2194,6 +2194,20 @@
    private $_strict_mode = false;
    /**
     * IDNA-version to use
     *
     * Values are "2003" and "2008".
     * Defaults to "2003", since that was the original version and for
     * compatibility with previous versions of this library.
     * If you need to encode "new" characters like the German "Eszett",
     * please switch to 2008 first before encoding.
     *
     * @var bool
     * @access private
     */
    private $_version = '2003';
    /**
     * Cached value indicating whether or not mbstring function overloading is
     * on for strlen
     *
@@ -2210,7 +2224,8 @@
    /**
     * Constructor
     *
     * @param  array  $options
     * @param array $options Options to initialise the object with
     *
     * @access public
     * @see    setParams()
     */
@@ -2245,6 +2260,7 @@
     *
     * @param    mixed     $option      Parameter to set (string: single parameter; array of Parameter => Value pairs)
     * @param    string    $value       Value to use (if parameter 1 is a string)
     *
     * @return   boolean                true on success, false otherwise
     * @access   public
     */
@@ -2278,6 +2294,14 @@
                $this->_strict_mode = ($v) ? true : false;
                break;
            case 'version':
                if (in_array($v, array('2003', '2008'))) {
                    $this->_version = $v;
                } else {
                    throw new InvalidArgumentException('Set Parameter: Invalid parameter '.$v.' for option '.$k);
                }
                break;
            default:
                return false;
            }
@@ -2290,7 +2314,9 @@
     * Encode a given UTF-8 domain name.
     *
     * @param    string     $decoded     Domain name (UTF-8 or UCS-4)
     * [@param    string     $encoding    Desired input encoding, see {@link set_parameter}]
     * @param string $one_time_encoding Desired input encoding, see {@link set_parameter}
     *                                  If not given will use default-encoding
     *
     * @return   string                  Encoded Domain name (ACE string)
     * @return   mixed                   processed string
     * @throws   Exception
@@ -2377,8 +2403,9 @@
    /**
     * Decode a given ACE domain name.
     *
     * @param    string     $encoded     Domain name (ACE string)
     * @param    string     $encoding    Desired output encoding, see {@link set_parameter}
     * @param string $input             Domain name (ACE string)
     * @param string $one_time_encoding Desired output encoding, see {@link set_parameter}
     *
     * @return   string                  Decoded Domain name (UTF-8 or UCS-4)
     * @throws   Exception
     * @access   public
@@ -2430,7 +2457,7 @@
                if (isset($parsed['scheme'])) {
                    $parsed['scheme'] .= (strtolower($parsed['scheme']) == 'mailto') ? ':' : '://';
                }
                $return = join('', $parsed);
                $return = $this->_unparse_url($parsed);
            } else { // parse_url seems to have failed, try without it
                $arr = explode('.', $input);
                foreach ($arr as $k => $v) {
@@ -2462,9 +2489,47 @@
    // {{{ private
    /**
     * The actual encoding algorithm.
     * Opposite function to parse_url()
     *
     * Inspired by code from comments of php.net-documentation for parse_url()
     *
     * @param array $parts_arr parts (strings) as returned by parse_url()
     *
     * @return   string
     * @access private
     */
    private function _unparse_url($parts_arr)
    {
        if (!empty($parts_arr['scheme'])) {
            $ret_url = $parts_arr['scheme'];
        }
        if (!empty($parts_arr['user'])) {
            $ret_url .= $parts_arr['user'];
            if (!empty($parts_arr['pass'])) {
                $ret_url .= ':' . $parts_arr['pass'];
            }
            $ret_url .= '@';
        }
        $ret_url .= $parts_arr['host'];
        if (!empty($parts_arr['port'])) {
            $ret_url .= ':' . $parts_arr['port'];
        }
        $ret_url .= $parts_arr['path'];
        if (!empty($parts_arr['query'])) {
            $ret_url .= '?' . $parts_arr['query'];
        }
        if (!empty($parts_arr['fragment'])) {
            $ret_url .= '#' . $parts_arr['fragment'];
        }
        return $ret_url;
    }
    /**
     * The actual encoding algorithm.
     *
     * @param string $decoded Decoded string which should be encoded
     *
     * @return string         Encoded string
     * @throws   Exception
     * @access   private
     */
@@ -2519,7 +2584,8 @@
            if ((0x2F < $test && $test < 0x40)
                    || (0x40 < $test && $test < 0x5B)
                    || (0x60 < $test && $test <= 0x7B)
                    || (0x2D == $test)) {
                || (0x2D == $test)
            ) {
                $encoded .= chr($decoded[$i]);
                $codecount++;
            }
@@ -2592,7 +2658,9 @@
    /**
     * The actual decoding algorithm.
     *
     * @return   string
     * @param string $encoded Encoded string which should be decoded
     *
     * @return string         Decoded string
     * @throws   Exception
     * @access   private
     */
@@ -2667,6 +2735,11 @@
    /**
     * Adapt the bias according to the current code point and position.
     *
     * @param int     $delta    ...
     * @param int     $npoints  ...
     * @param boolean $is_first ...
     *
     * @return int
     * @access   private
     */
    private function _adapt($delta, $npoints, $is_first)
@@ -2684,6 +2757,9 @@
    /**
     * Encoding a certain digit.
     *
     * @param int $d One digit to encode
     *
     * @return char  Encoded digit
     * @access   private
     */
    private function _encodeDigit($d)
@@ -2694,6 +2770,9 @@
    /**
     * Decode a certain digit.
     *
     * @param char $cp One digit (character) to decode
     *
     * @return int     Decoded digit
     * @access   private
     */
    private function _decodeDigit($cp)
@@ -2706,6 +2785,7 @@
     * Do Nameprep according to RFC3491 and RFC3454.
     *
     * @param    array      $input       Unicode Characters
     *
     * @return   string                  Unicode Characters, Nameprep'd
     * @throws   Exception
     * @access   private
@@ -2740,7 +2820,9 @@
                foreach ($this->_hangulDecompose($v) as $out) {
                    $output[] = $out;
                }
            } else if (isset(self::$_np_replacemaps[$v])) { // There's a decomposition mapping for that code point
            } else if (($this->_version == '2003') && isset(self::$_np_replacemaps[$v])) {
                // There's a decomposition mapping for that code point
                // Decompositions only in version 2003 (original) of IDNA
                foreach ($this->_applyCannonicalOrdering(self::$_np_replacemaps[$v]) as $out) {
                    $output[] = $out;
                }
@@ -2801,6 +2883,7 @@
     * (see http://www.unicode.org/unicode/reports/tr15/#Hangul).
     *
     * @param    integer    $char        32bit UCS4 code point
     *
     * @return   array                   Either Hangul Syllable decomposed or original 32bit
     *                                   value as one value array
     * @access   private
@@ -2830,6 +2913,7 @@
     * (see http://www.unicode.org/unicode/reports/tr15/#Hangul).
     *
     * @param    array      $input       Decomposed UCS4 sequence
     *
     * @return   array                   UCS4 sequence with syllables composed
     * @access   private
     */
@@ -2894,6 +2978,7 @@
     * Returns the combining class of a certain wide char.
     *
     * @param    integer    $char        Wide char to check (32bit integer)
     *
     * @return   integer                 Combining class if found, else 0
     * @access   private
     */
@@ -2906,6 +2991,7 @@
     * Apllies the cannonical ordering of a decomposed UCS4 sequence.
     *
     * @param    array      $input       Decomposed UCS4 sequence
     *
     * @return   array                   Ordered USC4 sequence
     * @access   private
     */
@@ -2949,6 +3035,7 @@
     * Do composition of a sequence of starter and non-starter.
     *
     * @param    array      $input       UCS4 Decomposed sequence
     *
     * @return   array                   Ordered USC4 sequence
     * @access   private
     */
@@ -3011,6 +3098,10 @@
     *
     * Each x represents a bit that can be used to store character data.
     *
     * @param string $input utf8-encoded string
     *
     * @return array        ucs4-encoded array
     * @throws Exception
     * @access   private
     */
    private function _utf8_to_ucs4($input)
@@ -3082,8 +3173,11 @@
    }
    /**
     * Convert UCS-4 array into UTF-8 string.
     * Convert UCS-4 array into UTF-8 string
     *
     * @param array $input ucs4-encoded array
     *
     * @return string      utf8-encoded string
     * @throws   Exception
     * @access   private
     */
@@ -3138,6 +3232,9 @@
    /**
     * Convert UCS-4 array into UCS-4 string
     *
     * @param array $input ucs4-encoded array
     *
     * @return string      ucs4-encoded string
     * @throws   Exception
     * @access   private
     */
@@ -3153,8 +3250,11 @@
    }
    /**
     * Convert UCS-4 strin into UCS-4 garray
     * Convert UCS-4 string into UCS-4 array
     *
     * @param string $input ucs4-encoded string
     *
     * @return array        ucs4-encoded array
     * @throws   InvalidArgumentException
     * @access   private
     */
@@ -3189,6 +3289,7 @@
     *
     * @param    array      $input       UCS4 sequence
     * @param    boolean    $include_bit Include bitmask in output
     *
     * @return   void
     * @static
     * @access   private
@@ -3210,6 +3311,9 @@
     * Gives you a bit representation of given Byte (8 bits), Word (16 bits) or DWord (32 bits)
     * Output width is automagically determined
     *
     * @param int $octet ...
     *
     * @return string    Bitmask-representation
     * @static
     * @access   private
     */
@@ -3226,7 +3330,7 @@
        $return = '';
        for ($i = $w; $i > -1; $i--) {
            $return .= ($octet & (1 << $i))? 1 : '0';
            $return .= ($octet & (1 << $i))? '1' : '0';
        }
        return $return;
program/lib/Net/IDNA2/Exception.php
@@ -1,3 +1,4 @@
<?php
class Net_IDNA2_Exception extends Exception {
class Net_IDNA2_Exception extends Exception
{
}
program/lib/Net/IDNA2/Exception/Nameprep.php
@@ -1,5 +1,6 @@
<?php
require_once 'Net/IDNA2/Exception.php';
class Net_IDNA2_Exception_Nameprep extends Net_IDNA2_Exception {
class Net_IDNA2_Exception_Nameprep extends Net_IDNA2_Exception
{
}