<?php

/**
 * generates heflang sitemap for a single enwiki article topic.
 **/

function get_interlanguage_links( $article_url ) {
	 // uses the Wikidata API to return an array of language alternates for a given article
	 $article_language = substr( $article_url, 8, 2);
	 $article_title = substr( $article_url, 30);
	 $wikidata_json_response = file_get_contents( "https://www.wikidata.org/w/api.php?action=wbgetentities&sites=$article_language" . "wiki&titles=$article_title&props=labels&format=json" );
	 $json_decoded = json_decode( $wikidata_json_response, true );
	 $temp = array_values($json_decoded);
	 $temp = $temp[0];
	 $temp = array_values($temp);
	 $temp = $temp[0];
	 $temp = array_values($temp);
	 $article_alternates = $temp[2];
	 return ( $article_alternates );
	}

$enwiki_url = 'https://en.wikipedia.org/wiki/Pluto';
$article_alternates = get_interlanguage_links ( $enwiki_url );
echo "count of alternaties for $enwiki_url\t" . count($article_alternates) . '<br><br>';

function build_sitemap_loc( $loc , $article_alternates ) {
	// build a sitemap <url> section based on an article and its alternates
	$output = '';
	$output .= "\t<url>\n";
	$output .= "\t\t<loc>$loc</loc>\n";
	foreach ( $article_alternates as $article_alternate ) {
		$output .= "\t\t<xhtml:link\n";
		$output .= "\t\t\trel=\"alternate\"\n";
		$output .= "\t\t\threflang=\"{$article_alternate['language']}\"\n";
		$output .= "\t\t\thref=\"https://{$article_alternate['language']}.wikipedia.org/wiki/{$article_alternate['value']}\"\n";
		$output .= "\t\t\t/>\n";
	}
	$output .= "\t</url>\n";
	return $output;
}

$output = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$output .= "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n";
$output .= "\txmlns:xhtml=\"http://www.w3.org/1999/xhtml\">\n";
foreach ( $article_alternates as $article_alternate ) {
	$output .= build_sitemap_loc( "https://{$article_alternate['language']}.wikipedia.org/wiki/{$article_alternate['value']}", $article_alternates );
}
$output .= "</urlset>";
file_put_contents( 'sitemap.xml', $output );
?>
