<?
	/** Biblioteka połączeń z bazą MySQL.
	 * @author Michał Malinowski
	 * @package XPDefault
	 */

	/** */
	if ( defined( '_CONNECT_INC' ) ) return;
	define( '_CONNECT_INC', 1 );

	/** Klasa inicjująca połączenie z bazą MySQL.
	 *
	 * Klasa obsługuje dwa typy połączeń: szybki (domyślnie) i standardowy.
	 * @author Michał Malinowski
	 * @package XPDefault
	 * @version 0.1
	 * @todo Możliwość łączenia na żądanie
	 * @todo Obsługa wielu połączeń
	 */
	class CConnection {
		var $connectID;
		var $xp_db = "xp";

		/** Konstruktor automatycznie inicjuje połączenie z bazą.
		 */
		function CConnection() {
			$this->connect();
		}
		/** Pobranie aktualnego połączenia z bazą.
		 * @return mixed
		 */
		function connID() {
			return $this->connectID;
		}
		function select_db($db) {
			if (!mysql_select_db($db, $this->connectID)) {
				include "./include_exe/connection_error.inc.php";
			}
		}
		function connect($host = "kni01", $user = "xpweb", $pass = "xpweb") {
//		function connect($host = "", $user = "xpweb", $pass = "xpweb") {
			$this->connectID = mysql_pconnect($host, $user, $pass);
			$this->select_db($this->xp_db);
		}
		function normalConnect($host = "", $user = "xpweb", $pass = "xpweb") {
			$this->connectID = mysql_connect($host, $user, $pass);
			$this->select_db($this->xp_db);
		}
	}

	$xpconn = new CConnection;

	/** Klasa obsługująca zapytanie w bazie MySQL.
	 * @author Michał Malinowski
	 * @package XPDefault
	 * @version 0.2
	 * @todo Obsługa większej ilości funkcji MySQL'a
	 */
	class CQuery {
		var $qres;
		var $conn;

		/** Konstruktor może wykonywać autoramycznie zapytanie.
		 * @param string $q Zapytanie w SQL'u
		 * @param mixed $c połączeni z bazą danych
		 */
		function CQuery($q = false, $c = false) {
			global $xpconn;
			if (!$c)
				$this->conn = $xpconn;
			else
				$this->conn = $c;
			if ($q)
				return $this->query($q);
		}
		/** Wykonanie zapytania.
		 * @param string $q Zapytanie w SQL'u
		 */
		function query($q) {
			if ($qres)
				$this->free();
			$this->qres = mysql_query($q, $this->conn->connID());
			if (!$this->qres) {
				echo $q;
				return false;
			}
			else
				return true;
		}
		/** Pobranie kolejnego wiersza w postaci tablicy.
		 * @return array
		 */
		function fetch_array() {
			return (mysql_fetch_array($this->qres));
		}
		/** Pobranie kolejnego wiersza w postaci objektu.
		 * @return object
		 */
		function fetch_object() {
			return (mysql_fetch_object($this->qres));
		}
		/** Zwraca ilość wierszy w jaką zwróciło zapytanie.
		 * @return int
		 */
		function num_rows() {
			return (mysql_num_rows($this->qres));
		}
		/** Zwalnia pamięć zajmowaną przez wynik zapytania.
		 */
		function free() {
			return (mysql_free_result($this->qres));
		}
	}

?>
