<?php
class Wikipedia_model
{
	public function loadWikipediaSummaryXml($requestedTerm)
	{

		$key = md5(base_url() . '__wikipedia__' . $requestedTerm);
		$ttl = 60 * 60 * 24 * 30; // 30 days

		$results = lib_Memcache::mGet()->get($key);
		$results = false;
		if ($results === false) {
			$wikipediaDocument = new DomDocument();

			// set xml url
			$wikipediaDocumentUrl = "http://en.wikipedia.org/w/api.php?action=query&prop=extracts&exintro&explaintext&titles=" . $requestedTerm . "&format=xml&redirects=";
			$CurlData = array("url" => $wikipediaDocumentUrl, "ua" => $_SERVER['HTTP_USER_AGENT']);
			$view = $this->curl_get_contents($CurlData);
			// load xml
			if (!empty($view)) {
				$wikipediaDocument->loadXML($this->curl_get_contents($CurlData));
				if (!empty($wikipediaDocument->textContent)) {
					$results = $wikipediaDocument->textContent;
					lib_Memcache::mGet()->set($key, $results, 0, $ttl);
				} else {
					// error, empty return
					return '<p>We\'re sorry, a server error occurred. Please try again.</p>';
				}
			}
		}
		return $results;
	}

	public function curl_get_contents($data)
	{
		$ch = curl_init($data['url']);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
		curl_setopt($ch, CURLOPT_USERAGENT, $data['ua']);

		$result = curl_exec($ch);

		if (curl_error($ch))
			return curl_error($ch);
		$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		curl_close($ch);

		return $result;
	}
}
