<?php
function ajax_wikipedia ($param) {
  if (preg_match("/^([^:]+):(.*)$/", $param['page'], $m)) {
    $wp_lang = $m[1];
    $wp_page = $m[2];
  }
  elseif (preg_match("/^Q\d+$/", $param['page'])) {
    $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'];
      }
      elseif (array_key_exists('enwiki', $data['sitelinks'])) {
        $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 {
        $content = "<div><div id='mw-content-text'><div><p>" . wikidataFormat($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'],
        );
      }
    }
  }

  if (!isset($wp_lang) || !(isset($wp_page) || isset($wp_url))) {
    return false;
  }

  if (!isset($wp_url)) {
    $wp_url = "https://{$wp_lang}.wikipedia.org/wiki/" . urlencode(strtr($wp_page, array(" " => "_")));
  }

  $content = file_get_contents($wp_url);

  $langList = array($wp_lang => $wp_url);

  $dom = new DOMDocument();
  $dom->loadHTML($content);

  $langDiv = $dom->getElementsByTagName('li');//interlanguage-link interwiki-bar');
  for ($i = 0; $i < $langDiv->length; $i++) {
    $li = $langDiv->item($i);

    if (preg_match('/^interlanguage-link interwiki-([a-z\-]+)( .*|)$/', $li->getAttribute('class'), $m)) {
      $a = $li->firstChild;
      $langList[$m[1]] = $a->getAttribute('href');
    }
  }

  if ($wp_lang !== $param['lang'] && array_key_exists($param['lang'], $langList)) {
    $content = file_get_contents($langList[$param['lang']]);
    $wp_lang = $param['lang'];
  }

  return array(
    'content' => $content,
    'languages' => $langList,
    'language' => $wp_lang,
  );
}