Ricordisamoa has uploaded a new change for review.
https://gerrit.wikimedia.org/r/232017
Change subject: Bail out when trying to "create" entity pages
......................................................................
Bail out when trying to "create" entity pages
Mainly useful for Special:Search.
Implemented with the TitleQuickPermissions hook.
Bug: T58032
Change-Id: I3d8b12df5336ecf9267b8ff1d10d44ddbfff2ce4
---
M repo/Wikibase.hooks.php
M repo/Wikibase.php
2 files changed, 35 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/17/232017/1
diff --git a/repo/Wikibase.hooks.php b/repo/Wikibase.hooks.php
index bc5e7d9..4586bae 100644
--- a/repo/Wikibase.hooks.php
+++ b/repo/Wikibase.hooks.php
@@ -733,6 +733,40 @@
}
/**
+ * Handler for the TitleQuickPermissions hook.
+ *
+ * Implemented to point out that entity pages cannot be 'created'
normally.
+ *
+ * @see
https://www.mediawiki.org/wiki/Manual:Hooks/TitleQuickPermissions
+ *
+ * @param Title $title The Title being checked
+ * @param User $user The User performing the action
+ * @param string $action The action being performed
+ * @param array $errors Array of errors
+ * @param bool $doExpensiveQueries Whether to do expensive DB queries
+ * @param bool $short Whether to return immediately on first error
+ *
+ * @return bool
+ */
+ public static function onTitleQuickPermissions(
+ Title $title, User $user, $action, array &$errors,
$doExpensiveQueries, $short
+ ) {
+ if ( $action !== 'create' ) {
+ return true;
+ }
+
+ $entityNamespaceLookup =
WikibaseRepo::getDefaultInstance()->getEntityNamespaceLookup();
+
+ if ( $entityNamespaceLookup->isEntityNamespace(
$title->getNamespace() ) ) {
+ // Do not allow "create" for Wikibase namespaces
+ $errors[] = array( 'wikibase-no-direct-editing',
$title->getNsText() );
+ return false; // Bail out immediately
+ }
+
+ return true;
+ }
+
+ /**
* Hook handler for AbuseFilter's AbuseFilter-contentToString hook,
implemented
* to provide a custom text representation of Entities for filtering.
*
diff --git a/repo/Wikibase.php b/repo/Wikibase.php
index 3f77ae8..d42c935 100644
--- a/repo/Wikibase.php
+++ b/repo/Wikibase.php
@@ -248,6 +248,7 @@
$wgHooks['ShowSearchHit'][]
= 'Wikibase\RepoHooks::onShowSearchHit';
$wgHooks['ShowSearchHitTitle'][]
= 'Wikibase\RepoHooks::onShowSearchHitTitle';
$wgHooks['TitleGetRestrictionTypes'][] =
'Wikibase\RepoHooks::onTitleGetRestrictionTypes';
+ $wgHooks['TitleQuickPermissions'][]
= 'Wikibase\RepoHooks::onTitleQuickPermissions';
$wgHooks['AbuseFilter-contentToString'][] =
'Wikibase\RepoHooks::onAbuseFilterContentToString';
$wgHooks['SpecialPage_reorderPages'][] =
'Wikibase\RepoHooks::onSpecialPageReorderPages';
$wgHooks['OutputPageParserOutput'][] =
'Wikibase\RepoHooks::onOutputPageParserOutput';
--
To view, visit https://gerrit.wikimedia.org/r/232017
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3d8b12df5336ecf9267b8ff1d10d44ddbfff2ce4
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Ricordisamoa <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits