*/
public static function toUnsigned6( $ip ) {
if ( !$ip ) return null;
- $ip = explode(':', self::sanitizeIP( $ip ) );
- $r_ip = '';
- foreach ($ip as $v) {
- $r_ip .= str_pad( $v, 4, 0, STR_PAD_LEFT );
- }
- $r_ip = wfBaseConvert( $r_ip, 16, 10 );
- return $r_ip;
+ $ip = explode(':', self::sanitizeIP( $ip ) );
+ $r_ip = '';
+ foreach ($ip as $v) {
+ $r_ip .= str_pad( $v, 4, 0, STR_PAD_LEFT );
+ }
+ $r_ip = wfBaseConvert( $r_ip, 16, 10 );
+ return $r_ip;
}
/**
} else {
$repeat = ':0'; $extra = ':'; $pad = 8; // 6+2 (due to '::')
}
- $ip = str_replace('::', str_repeat($repeat, $pad-substr_count($ip,':')).$extra, $ip);
- }
- // Remove leading zereos from each bloc as needed
- $ip = preg_replace( '/(^|:)0+' . RE_IPV6_WORD . '/', '$1$2', $ip );
- return $ip;
+ $ip = str_replace('::', str_repeat($repeat, $pad-substr_count($ip,':')).$extra, $ip);
+ }
+ // Remove leading zereos from each bloc as needed
+ $ip = preg_replace( '/(^|:)0+' . RE_IPV6_WORD . '/', '$1$2', $ip );
+ return $ip;
}
/**
}
// NO leading zeroes
$ip_oct = preg_replace( '/(^|:)0+' . RE_IPV6_WORD . '/', '$1$2', $ip_oct );
- return $ip_oct;
+ return $ip_oct;
}
/**
}
// NO leading zeroes
$ip_oct = preg_replace( '/(^|:)0+' . RE_IPV6_WORD . '/', '$1$2', $ip_oct );
- return $ip_oct;
+ return $ip_oct;
}
/**
} else {
return array( $start, $end );
}
- }
+ }
/**
* Validate an IP address.
} else {
return array( $start, $end );
}
- }
+ }
- /**
- * Determine if a given IPv4/IPv6 address is in a given CIDR network
- * @param $addr The address to check against the given range.
- * @param $range The range to check the given address against.
- * @return bool Whether or not the given address is in the given range.
- */
- public static function isInRange( $addr, $range ) {
- // Convert to IPv6 if needed
- $hexIP = self::toHex( $addr );
- list( $start, $end ) = self::parseRange( $range );
- return (strcmp($hexIP, $start) >= 0 &&
+ /**
+ * Determine if a given IPv4/IPv6 address is in a given CIDR network
+ * @param $addr The address to check against the given range.
+ * @param $range The range to check the given address against.
+ * @return bool Whether or not the given address is in the given range.
+ */
+ public static function isInRange( $addr, $range ) {
+ // Convert to IPv6 if needed
+ $hexIP = self::toHex( $addr );
+ list( $start, $end ) = self::parseRange( $range );
+ return (strcmp($hexIP, $start) >= 0 &&
strcmp($hexIP, $end) <= 0);
- }
+ }
- /**
- * Convert some unusual representations of IPv4 addresses to their
- * canonical dotted quad representation.
- *
- * This currently only checks a few IPV4-to-IPv6 related cases. More
- * unusual representations may be added later.
- *
- * @param $addr something that might be an IP address
- * @return valid dotted quad IPv4 address or null
- */
- public static function canonicalize( $addr ) {
+ /**
+ * Convert some unusual representations of IPv4 addresses to their
+ * canonical dotted quad representation.
+ *
+ * This currently only checks a few IPV4-to-IPv6 related cases. More
+ * unusual representations may be added later.
+ *
+ * @param $addr something that might be an IP address
+ * @return valid dotted quad IPv4 address or null
+ */
+ public static function canonicalize( $addr ) {
if ( self::isValid( $addr ) )
return $addr;
// IPv4-mapped and IPv4-compatible IPv6 addresses
if ( preg_match( '/^' . RE_IPV6_V4_PREFIX . '(' . RE_IP_ADD . ')$/i', $addr, $m ) )
- return $m[1];
+ return $m[1];
if ( preg_match( '/^' . RE_IPV6_V4_PREFIX . RE_IPV6_WORD . ':' . RE_IPV6_WORD . '$/i', $addr, $m ) )
- return long2ip( ( hexdec( $m[1] ) << 16 ) + hexdec( $m[2] ) );
+ return long2ip( ( hexdec( $m[1] ) << 16 ) + hexdec( $m[2] ) );
return null; // give up
- }
+ }
}
}
function handleXmlNamespace ( $parser, $data, $prefix=false, $uri=false ) {
- if( preg_match( '/www.mediawiki.org/',$prefix ) ) {
- $prefix = str_replace( '/','\/',$prefix );
+ if( preg_match( '/www.mediawiki.org/',$prefix ) ) {
+ $prefix = str_replace( '/','\/',$prefix );
$this->mXmlNamespace='/^'.$prefix.':/';
}
}
function stripXmlNamespace($name) {
if( $this->mXmlNamespace ) {
- return(preg_replace($this->mXmlNamespace,'',$name,1));
+ return(preg_replace($this->mXmlNamespace,'',$name,1));
}
else {
- return($name);
- }
+ return($name);
+ }
}
-
+
# --------------
function doImport() {
}
function in_start( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_start $name" );
if( $name != "mediawiki" ) {
return $this->throwXMLerror( "Expected <mediawiki>, got <$name>" );
}
function in_mediawiki( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_mediawiki $name" );
if( $name == 'siteinfo' ) {
xml_set_element_handler( $parser, "in_siteinfo", "out_siteinfo" );
}
}
function out_mediawiki( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_mediawiki $name" );
if( $name != "mediawiki" ) {
return $this->throwXMLerror( "Expected </mediawiki>, got </$name>" );
function in_siteinfo( $parser, $name, $attribs ) {
// no-ops for now
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_siteinfo $name" );
switch( $name ) {
case "sitename":
}
function out_siteinfo( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
if( $name == "siteinfo" ) {
xml_set_element_handler( $parser, "in_mediawiki", "out_mediawiki" );
}
function in_page( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_page $name" );
switch( $name ) {
case "id":
}
function out_page( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_page $name" );
$this->pop();
if( $name != "page" ) {
}
function in_nothing( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_nothing $name" );
return $this->throwXMLerror( "No child elements allowed here; got <$name>" );
}
}
function out_append( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_append $name" );
if( $name != $this->appendfield ) {
return $this->throwXMLerror( "Expected </{$this->appendfield}>, got </$name>" );
}
function in_revision( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_revision $name" );
switch( $name ) {
case "id":
}
function out_revision( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_revision $name" );
$this->pop();
if( $name != "revision" ) {
}
}
}
-
+
function in_logitem( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_logitem $name" );
switch( $name ) {
case "id":
}
function out_logitem( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_logitem $name" );
$this->pop();
if( $name != "logitem" ) {
}
function in_upload( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_upload $name" );
switch( $name ) {
case "timestamp":
}
function out_upload( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_revision $name" );
$this->pop();
if( $name != "upload" ) {
}
function in_contributor( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_contributor $name" );
switch( $name ) {
case "username":
}
function out_contributor( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_contributor $name" );
$this->pop();
if( $name != "contributor" ) {
return new WikiErrorMsg( 'importuploaderrorsize' );
case 3: # The uploaded file was only partially uploaded
return new WikiErrorMsg( 'importuploaderrorpartial' );
- case 6: #Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.
- return new WikiErrorMsg( 'importuploaderrortemp' );
- # case else: # Currently impossible
+ case 6: #Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.
+ return new WikiErrorMsg( 'importuploaderrortemp' );
+ # case else: # Currently impossible
}
}