Browse Source

wikidata/wikipedia: if there's no wikipedia abstract, show the label from Wikidata; url to commons or wikidata

master
parent
commit
c5154dbcfe
  1. 17
      src/wikidata.php
  2. 31
      src/wikipedia.php

17
src/wikidata.php

@ -17,3 +17,20 @@ function wikidataLoad ($id) {
return $wikidataCache[$id];
}
function wikidataGetLabel ($id, $lang) {
$data = wikidataLoad($id);
if (array_key_exists($lang, $data['labels'])) {
return $data['labels'][$lang]['value'];
}
elseif (array_key_exists('en', $data['labels'])) {
return $data['labels']['en']['value'];
}
elseif (!sizeof($data['labels'])) {
return $id;
}
else {
return array_values($data['labels'])[0]['value'];
}
}

31
src/wikipedia.php

@ -8,6 +8,11 @@ function ajax_wikipedia ($param) {
$data = wikidataLoad($param['page']);
if (array_key_exists('sitelinks', $data)) {
$sitelinks_ids = array_keys($data['sitelinks']);
$sitelinks_ids = array_values(array_filter($sitelinks_ids, function ($id) {
return preg_match('/wiki$/', $id) && $id !== 'commonswiki';
}));
if (array_key_exists($param['lang'] . 'wiki', $data['sitelinks'])) {
$wp_lang = $param['lang'];
$wp_url = $data['sitelinks'][$param['lang'] . 'wiki']['url'];
@ -16,17 +21,25 @@ function ajax_wikipedia ($param) {
$wp_lang = 'en';
$wp_url = $data['sitelinks']['enwiki']['url'];
}
elseif (sizeof($sitelinks_ids)) {
$id = $sitelinks_ids[0];
$wp_lang = substr($id, 0, strlen($id) - 4);
$wp_url = $data['sitelinks'][$id]['url'];
}
else {
$sitelinks_ids = array_keys($data['sitelinks']);
$sitelinks_ids = array_values(array_filter($sitelinks_ids, function ($id) {
return preg_match('/wiki$/', $id);
}));
if (sizeof($sitelinks_ids)) {
$id = $sitelinks_ids[0];
$wp_lang = substr($id, 0, strlen($id) - 4);
$wp_url = $data['sitelinks'][$id]['url'];
$content = "<div><div id='mw-content-text'><div><p>" . wikidataGetLabel($param['page'], $param['lang']) . "</p></div></div></div>";
$url = "https://wikidata.org/wiki/{$param['page']}";
if (array_key_exists('commonswiki', $data['sitelinks'])) {
$url = $data['sitelinks']['commonswiki']['url'];
}
return array(
'content' => $content,
'languages' => [
$param['lang'] => $url,
],
'language' => $param['lang'],
);
}
}
}

Loading…
Cancel
Save