<?php

/**
 *
 * @author Peter Csubak (chuby)
 * @copyright Peter Csubak (chuby)
 */

/**
 * Az általános adatbáziskapcsolat interfészét (DBCInterface) MySQL specifikusan implementáló
 * osztály. Miután létrehozza a kapcsaolatot az adatbázissal utánna az adatbázis kapcsolat 
 * azonosítóját is tartalmazza majd, de a PEA perzisztenciakezelési módszere ezt meg is követeli
 * és nem ezzel az azonosítóval dolgozik, hanem konkrétan a kapcsolatot implementáló osztályok,
 * mint amilyen ez is, példányaival. Ennek abban van szerepe, hogy ha esetleg megszakadna a 
 * kapcsolat, vagy valaki megszüntetné azt, az ilyen osztályok példányaival az újra felépíthető. 
 */
class MySQLDBConnect implements DBCInterface {

	private $username;
	private $password;
	private $prefix = "";
	private $schema;
	private $connectionURL;
	private $connected = false;
	private $connectionID = null;

	/**
	 * Az adatbáziskapcsolatot hozza létre, a megadott adatok alapján.
	 * Alapvetően a PersistenceHandler használja, de természetesen nem kötelezően csak ez használhatja.
	 * 
	 * A metódus az előírt kapcsolatlétrehozáson kívül beállítja az UTF-8 karakterkódolást, mint a 
	 * kapcsolat alapértelmezett karakterkészletet. 
	 */
	public function connect(){
		$this->connectionID = mysql_connect($this->connectionURL, $this->username, $this->password);
		@mysql_select_db($this->schema) or die("Database connection error.");
		mysql_query("SET NAMES utf8");
		$this->connected = true;
	}

	/**
	 * Megszünteti az adatbáziskapcsolatot, de a kapcsolódási adatokat nem szünteti meg, így a példány
	 * bármikor új kapcsolatot indíthat.
	 */
	public function disconnect(){
		mysql_close($this->connectionID);
		$this->connected = false;
	}

	/**
	 * Szabályos konstruktor, amelyben az összes kapcsolódási adat megadható.
	 * @param string $connectionURL Az adatbázis url címe. (nyilván a szervertől értelmezve, tehát ha 
	 * például a webszerveren van az adatbázis is telepítve, akkor azt elég a localhost névvel megnevezni.
	 * @param string $username Az adatbáziskapcsolathoz használandó felhasználóinév.
	 * @param string $password Az adatbáziskapcsolathoz használandó jelszó.
	 * @param string $schema Az adatbáziskapcsolat alapértelmezett adatbázissémája.
	 * @param string $prefix Az adatbázis elemekhez használandó prefixum. Ennek akkor van
	 * szerepe, ha nagyon sok hasonlónevű adatbáziselem található a sémán belül, ennek 
	 * segítságével jól szeparálhatóak, és mégis egyszerű nevűek maradhatnak.
	 */
	public function __construct($connectionURL, $username, $password, $schema, $prefix = ""){
		$this->connectionURL = $connectionURL;
		$this->username = $username;
		$this->password = $password;
		$this->schema = $schema;
		$this->prefix = $prefix;
	}
	
	public function setConnectionURL($value){
		$this->connectionURL = $value;
	}
	
	public function setUsername($value){
		$this->username = $value;
	}
	
	public function setPassword($value){
		$this->password = $value;
	}
	
	public function setSchema($value){
		$this->schema = $value;
	}
	
	public function setPrefix($value){
		$this->prefix = $value;
	}
	
	public function getPrefix(){
		return $this->prefix;
	}
	
	public function getConnectionID(){
		return $this->connectionID;
	}
	
	public function isConnected(){
		return $this->connected;
	}

}

?>
