Browse Source

AJAX fun 'wikipedia': accept wikidata id as value

master
parent
commit
4597312506
  1. 40
      src/wikipedia.php

40
src/wikipedia.php

@ -4,12 +4,48 @@ function ajax_wikipedia ($param) {
$wp_lang = $m[1];
$wp_page = $m[2];
}
elseif (preg_match("/^Q\d+$/", $param['page'])) {
$id = $param['page'];
$body = file_get_contents("https://www.wikidata.org/wiki/Special:EntityData/{$id}.json");
$body = json_decode($body, true);
if (!isset($wp_lang) || !isset($wp_page)) {
if (!array_key_exists('entities', $body) || !array_key_exists($id, $body['entities'])) {
return false;
}
$data = $body['entities'][$id];
if (array_key_exists('sitelinks', $data)) {
if (array_key_exists($param['lang'] . 'wiki', $data['sitelinks'])) {
$wp_lang = $param['lang'];
$wp_url = $data['sitelinks'][$param['lang'] . 'wiki']['url'];
}
elseif (array_key_exists('enwiki', $data['sitelinks'])) {
$wp_lang = 'en';
$wp_url = $data['sitelinks']['enwiki']['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'];
}
}
}
}
if (!isset($wp_lang) || !(isset($wp_page) || isset($wp_url))) {
return false;
}
$wp_url = "https://{$wp_lang}.wikipedia.org/wiki/" . urlencode(strtr($wp_page, array(" " => "_")));
if (!isset($wp_url)) {
$wp_url = "https://{$wp_lang}.wikipedia.org/wiki/" . urlencode(strtr($wp_page, array(" " => "_")));
}
$content = file_get_contents($wp_url);

Loading…
Cancel
Save