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

Reply via email to