<?php
/**
 * DBの内容をXML形式で返す.
 */

ini_set('include_path', 'libs/pear:'. ini_get("include_path"));
require_once 'DB.php';

define('DB_CONNECTION_DSN', 'mysql://username@localhost/tkrb_myfavorit');


// DBから取得する
$rResult = getLast10UsersFavorites();
if ($rResult == null) {
	echo 'load faild';
	exit;
}
$aRecords = $rResult;

// 出力する
outputForXML($aRecords);
exit;


/**
 * DBから最後の10ユーザ分のfavoriteを返す.
 *
 * @return mixed   成功(レコードリスト) / 失敗(null)
 */
function getLast10UsersFavorites() {
	$oDb = DB::connect(DB_CONNECTION_DSN);
	
	// データの取得
	$sSql = sprintf("SELECT * FROM users ".
					"LEFT JOIN favorites ON favorites.user_id = users.id ".
					"ORDER BY favorites.regist_date DESC ".
					"LIMIT 10");
	$rResult = $oDb->query($sSql);
	if(DB::isError($rResult)) {
		echo $rResult->getMessage();
		return null;
	}
	
	$aRecords = array();
	while($aRecord = $rResult->fetchRow(DB_FETCHMODE_ASSOC)) {
		array_push($aRecords, $aRecord);
	}
	
	return $aRecords;
}

/**
 * XMLに出力する.
 *
 * @return mixed   成功(レコードリスト) / 失敗(null)
 */
function outputForXML($aRecords) {
	header("Content-type:text/xml");
	echo '<?xml version="1.0"?>'."\n";
	echo "<rows>\n";
	$id = 1;
	foreach ($aRecords as $aRecord) {
		$aRecord['image'] = preg_replace('/\\\"/', '"', $aRecord['image']);
		echo sprintf("<row id=\"%s\"><cell>%s</cell><cell><![CDATA[%s]]></cell><cell><![CDATA[%s]]></cell><cell><![CDATA[%s]]></cell></row>",
					$id, $aRecord['web_api_id'], $aRecord['image'], $aRecord['title'], $aRecord['comment']);
		$id++;
	}
	echo "</rows>";
}
?>
