MediaWiki
REL1_22
|
00001 <?php 00031 class WikiError { 00037 function __construct( $message ) { 00038 wfDeprecated( __METHOD__, '1.17' ); 00039 $this->mMessage = $message; 00040 } 00041 00045 function getMessage() { 00046 return $this->mMessage; 00047 } 00048 00054 function toString() { 00055 return $this->getMessage(); 00056 } 00057 00067 public static function isError( $object ) { 00068 wfDeprecated( __METHOD__, '1.17' ); 00069 if ( $object instanceof WikiError ) { 00070 return true; 00071 } elseif ( $object instanceof Status ) { 00072 return !$object->isOK(); 00073 } else { 00074 return false; 00075 } 00076 } 00077 } 00078 00083 class WikiErrorMsg extends WikiError { 00090 function __construct( $message/*, ... */ ) { 00091 wfDeprecated( __METHOD__, '1.17' ); 00092 $args = func_get_args(); 00093 array_shift( $args ); 00094 $this->mMessage = wfMessage( $message )->rawParams( $args )->text(); 00095 $this->mMsgKey = $message; 00096 $this->mMsgArgs = $args; 00097 } 00098 00099 function getMessageKey() { 00100 return $this->mMsgKey; 00101 } 00102 00103 function getMessageArgs() { 00104 return $this->mMsgArgs; 00105 } 00106 } 00107 00113 class WikiXmlError extends WikiError { 00122 function __construct( $parser, $message = 'XML parsing error', $context = null, $offset = 0 ) { 00123 wfDeprecated( __METHOD__, '1.17' ); 00124 $this->mXmlError = xml_get_error_code( $parser ); 00125 $this->mColumn = xml_get_current_column_number( $parser ); 00126 $this->mLine = xml_get_current_line_number( $parser ); 00127 $this->mByte = xml_get_current_byte_index( $parser ); 00128 $this->mContext = $this->_extractContext( $context, $offset ); 00129 $this->mMessage = $message; 00130 xml_parser_free( $parser ); 00131 wfDebug( "WikiXmlError: " . $this->getMessage() . "\n" ); 00132 } 00133 00135 function getMessage() { 00136 // '$1 at line $2, col $3 (byte $4): $5', 00137 return wfMessage( 'xml-error-string', 00138 $this->mMessage, 00139 $this->mLine, 00140 $this->mColumn, 00141 $this->mByte . $this->mContext, 00142 xml_error_string( $this->mXmlError ) )->escaped(); 00143 } 00144 00145 function _extractContext( $context, $offset ) { 00146 if ( is_null( $context ) ) { 00147 return null; 00148 } else { 00149 // Hopefully integer overflow will be handled transparently here 00150 $inlineOffset = $this->mByte - $offset; 00151 return '; "' . substr( $context, $inlineOffset, 16 ) . '"'; 00152 } 00153 } 00154 }