Test only against protection for deleting
When deleting a page, only check that the user can edit through protection, rather than running all of the other checks. This is Tim Starling's option 3 from bug 69380. Bug: 69380 Bug: 69398 Change-Id: I5a7c4147bd241dc086fda6c16827f9554d78599b
This commit is contained in:
parent
93ddbbd998
commit
9dafa73b2f
4 changed files with 13 additions and 9 deletions
|
|
@ -2258,11 +2258,15 @@ class Title {
|
|||
$errors[] = array( 'immobile-target-page' );
|
||||
}
|
||||
} elseif ( $action == 'delete' ) {
|
||||
if ( count( $this->getUserPermissionsErrorsInternal( 'edit',
|
||||
$user, $doExpensiveQueries, true ) )
|
||||
) {
|
||||
// If they can't edit, they shouldn't delete.
|
||||
$errors[] = array( 'delete-cantedit' );
|
||||
$tempErrors = $this->checkPageRestrictions( 'edit',
|
||||
$user, array(), $doExpensiveQueries, true );
|
||||
if( !$tempErrors ) {
|
||||
$tempErrors = $this->checkCascadingSourcesRestrictions( 'edit',
|
||||
$user, $tempErrors, $doExpensiveQueries, true );
|
||||
}
|
||||
if ( $tempErrors ) {
|
||||
// If protection keeps them from editing, they shouldn't be able to delete.
|
||||
$errors[] = array( 'deleteprotected' );
|
||||
}
|
||||
if ( $doExpensiveQueries && $wgDeleteRevisionsLimit
|
||||
&& !$this->userCan( 'bigdelete', $user ) && $this->isBigDeletion()
|
||||
|
|
|
|||
|
|
@ -1411,9 +1411,9 @@ abstract class ApiBase extends ContextSource {
|
|||
'code' => 'cantedit',
|
||||
'info' => "You can't protect this page because you can't edit it"
|
||||
),
|
||||
'delete-cantedit' => array(
|
||||
'deleteprotected' => array(
|
||||
'code' => 'cantedit',
|
||||
'info' => "You can't delete this page because you can't edit it"
|
||||
'info' => "You can't delete this page because it has been protected"
|
||||
),
|
||||
'badaccess-group0' => array(
|
||||
'code' => 'permissiondenied',
|
||||
|
|
|
|||
|
|
@ -1876,7 +1876,7 @@
|
|||
"delete-edit-reasonlist": "Edit deletion reasons",
|
||||
"delete-toobig": "This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.\nDeletion of such pages has been restricted to prevent accidental disruption of {{SITENAME}}.",
|
||||
"delete-warning-toobig": "This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.\nDeleting it may disrupt database operations of {{SITENAME}};\nproceed with caution.",
|
||||
"delete-cantedit": "You cannot delete this page because you do not have permission to edit it.",
|
||||
"deleteprotected": "You cannot delete this page because it has been protected.",
|
||||
"deleting-backlinks-warning": "'''Warning:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Other pages]] link to or transclude the page you are about to delete.",
|
||||
"rollback": "Roll back edits",
|
||||
"rollback_short": "Rollback",
|
||||
|
|
|
|||
|
|
@ -2038,7 +2038,7 @@
|
|||
"delete-edit-reasonlist": "Shown beneath the page deletion form on the right side. It is a link to {{msg-mw|Deletereason-dropdown|notext=1}}.\n\nSee also:\n* {{msg-mw|Ipb-edit-dropdown}}\n* {{msg-mw|Protect-edit-reasonlist}}.\n{{Identical|Edit delete reasons}}",
|
||||
"delete-toobig": "Parameters:\n* $1 - the upper limit of number of revisions\nSee also:\n* {{msg-mw|Delete-warning-toobig}}",
|
||||
"delete-warning-toobig": "Parameters:\n* $1 - the upper limit of number of revisions\nSee also:\n* {{msg-mw|Delete-toobig}}",
|
||||
"delete-cantedit": "Used as error message when deleting the page.",
|
||||
"deleteprotected": "Used as error message when deleting the page.",
|
||||
"deleting-backlinks-warning": "A warning shown when a page that is being deleted has at least one link to it or is transcluded in at least one page.",
|
||||
"rollback": "{{Identical|Rollback}}",
|
||||
"rollback_short": "{{Identical|Rollback}}",
|
||||
|
|
|
|||
Loading…
Reference in a new issue