class MWContentSerializationException extends MWException {
}
+/**
+ * Exception thrown when an unregistered content model is requested. This error
+ * can be triggered by user input, so a separate exception class is provided so
+ * callers can substitute a context-specific, internationalised error message.
+ *
+ * @ingroup Content
+ * @since 1.27
+ */
+class MWUnknownContentModelException extends MWException {
+ /** @var string The name of the unknown content model */
+ private $modelId;
+
+ /** @param string $modelId */
+ function __construct( $modelId ) {
+ parent::__construct( "The content model '$modelId' is not registered on this wiki.\n" .
+ 'See https://www.mediawiki.org/wiki/Content_handlers to find out which extensions ' .
+ 'handle this content model.' );
+ $this->modelId = $modelId;
+ }
+
+ /** @return string */
+ public function getModelId() {
+ return $modelId;
+ }
+}
+
/**
* A content handler knows how do deal with a specific type of content on a wiki
* page. Content is stored in the database in a serialized form (using a
* @param string $modelId The ID of the content model for which to get a
* handler. Use CONTENT_MODEL_XXX constants.
*
- * @throws MWException If no handler is known for the model ID.
+ * @throws MWException For internal errors and problems in the configuration.
+ * @throws MWUnknownContentModelException If no handler is known for the model ID.
* @return ContentHandler The ContentHandler singleton for handling the model given by the ID.
*/
public static function getForModelID( $modelId ) {
Hooks::run( 'ContentHandlerForModelID', array( $modelId, &$handler ) );
if ( $handler === null ) {
- throw new MWException( "No handler for model '$modelId' registered in \$wgContentHandlers" );
+ throw new MWUnknownContentModelException( $modelId );
}
if ( !( $handler instanceof ContentHandler ) ) {
* @return DifferenceEngine
*/
public function createDifferenceEngine( IContextSource $context, $old = 0, $new = 0,
- $rcid = 0, //FIXME: Deprecated, no longer used
+ $rcid = 0, // FIXME: Deprecated, no longer used
$refreshCache = false, $unhide = false ) {
// hook: get difference engine