Disallow fetching from Wikidata disambiguation pages

Close #23
This commit is contained in:
2025-02-13 22:37:17 +01:00
parent 28f6db67ff
commit 9d7d53a858
3 changed files with 70 additions and 1 deletions

View File

@@ -178,7 +178,20 @@ final class NodaWikidataFetcher {
if (empty($data['entities'][$wikidata_id])) {
throw new MDhttpFailedException("Failed fetching from Wikidata. Try again later.");
}
return $data['entities'][$wikidata_id];
$output = $data['entities'][$wikidata_id];
// Throw exception if this page is a dedicated disambigation item.-
// P31: Instance of; Q4167410: Wikimedia disambiguation page
if (isset($output['claims']) && isset($output['claims']['P31'])) {
foreach ($output['claims']['P31'] as $is_instance_of) {
if (isset($is_instance_of['mainsnak']['datavalue']['value']['id']) && $is_instance_of['mainsnak']['datavalue']['value']['id'] === 'Q4167410') {
throw new NodaWikidataFetcherDisambiguationIsDisallowedException("Loading wikidata disambiguation pages is disallowed");
}
}
}
return $output;
}