<?php  
defined('C5_EXECUTE') or die(_("Access Denied."));
class JlConcreteBricksGameResults extends Object {

	/*
	Generally work by uID, but if anonymous, can also use a specific name entered
	by the user.
	*/
	
	public static function addScore($uID, $uname='', $ucomment='', $score, $time_taken, $completed_lines, $level_achieved) {
		$db = Loader::db();
		$db->Execute(	'INSERT INTO JlConcreteBricksGameResults (uID, name, comment, score, time_taken, completed_lines, level_achieved) VALUES (?,?,?,?,?,?,?)', 
						array($uID,$uname,$ucomment,$score,$time_taken,$completed_lines,$level_achieved)
					);
		$id = $db->Insert_ID();
		return JlConcreteBricksGameResults::getByID($id);
	}
	
	public static function getByID($id) {
		$db = Loader::db();
		$r = $db->getRow(	'SELECT * FROM JlConcreteBricksGameResults WHERE GameID = ?', 
							array($id), 
							DB_FETCHMODE_ASSOC
							);
		return $r;
	}

	public static function getBestScores($number=10, $uID=null, $page=0) {
		$db = Loader::db();
		if (empty($number)){
			$number=10;
		}
		$query = 'SELECT * FROM JlConcreteBricksGameResults ';
		$order = ' ORDER BY score DESC, time_taken ASC LIMIT ?';
		$query_params = array();
		if (! empty($uID)){
			$query .= ' WHERE uID = ? ';
			$query_params[] = (integer)$uID;
		}
		$query_params[] = (integer)$number+0;
		
		if (!empty($page)){
			$order .= ' OFFSET ? ';
			$query_params[] = (integer)$page * $number;
		}
		
		$ra = $db->getAll($query.$order, $query_params, DB_FETCHMODE_ASSOC);
		return $ra;
	}
}
