+ // EditPage sometimes only sets the status code without setting
+ // any actual error messages. Supply defaults for those cases.
+ switch ( $status->value ) {
+ // Currently needed
+ case EditPage::AS_IMAGE_REDIRECT_ANON:
+ $status->fatal( 'apierror-noimageredirect-anon' );
+ break;
+ case EditPage::AS_IMAGE_REDIRECT_LOGGED:
+ $status->fatal( 'apierror-noimageredirect-logged' );
+ break;
+ case EditPage::AS_CONTENT_TOO_BIG:
+ case EditPage::AS_MAX_ARTICLE_SIZE_EXCEEDED:
+ $status->fatal( 'apierror-contenttoobig', $this->getConfig()->get( 'MaxArticleSize' ) );
+ break;
+ case EditPage::AS_READ_ONLY_PAGE_ANON:
+ $status->fatal( 'apierror-noedit-anon' );
+ break;
+ case EditPage::AS_NO_CHANGE_CONTENT_MODEL:
+ $status->fatal( 'apierror-cantchangecontentmodel' );
+ break;
+ case EditPage::AS_ARTICLE_WAS_DELETED:
+ $status->fatal( 'apierror-pagedeleted' );
+ break;
+ case EditPage::AS_CONFLICT_DETECTED:
+ $status->fatal( 'editconflict' );
+ break;
+
+ // Currently shouldn't be needed, but here in case
+ // hooks use them without setting appropriate
+ // errors on the status.
+ case EditPage::AS_SPAM_ERROR:
+ $status->fatal( 'apierror-spamdetected', $result['spam'] );
+ break;
+ case EditPage::AS_READ_ONLY_PAGE_LOGGED:
+ $status->fatal( 'apierror-noedit' );
+ break;
+ case EditPage::AS_RATE_LIMITED:
+ $status->fatal( 'apierror-ratelimited' );
+ break;
+ case EditPage::AS_NO_CREATE_PERMISSION:
+ $status->fatal( 'nocreate-loggedin' );
+ break;
+ case EditPage::AS_BLANK_ARTICLE:
+ $status->fatal( 'apierror-emptypage' );
+ break;
+ case EditPage::AS_TEXTBOX_EMPTY:
+ $status->fatal( 'apierror-emptynewsection' );
+ break;
+ case EditPage::AS_SUMMARY_NEEDED:
+ $status->fatal( 'apierror-summaryrequired' );
+ break;
+ default:
+ wfWarn( __METHOD__ . ": Unknown EditPage code {$status->value} with no message" );
+ $status->fatal( 'apierror-unknownerror-editpage', $status->value );
+ break;