<?php
class Core{
	private static $db;
	private static $db_host = 'localhost';
	private static $db_name = 'dario169_RUSTATS';
	private static $db_user = 'dario169_RUSTATS';
	private static $db_pass = '}B;MXwktGKs2';
	public static $config;
	
	/**
	* Подключение к базе с помощью PDO
	*/
	private static function connect(){
		try {
			self::$db = new PDO('mysql:host='.self::$db_host.';dbname='.self::$db_name, self::$db_user, self::$db_pass);
			self::$db -> exec('SET CHARACTER SET utf8');
			self::$db -> exec('SET NAMES utf8');
			
			return self::$db;
		}
		catch (PDOException $e) {
			die('Connection failed: '.$e -> getMessage());
		} 
	}
	
	/**
	* Инициализация базы, конфигурационных данных 
	*/
	public static function run(){
		self::$config = self::connect() -> query("SELECT * FROM `system`") -> fetch();
		return self::connect();
	}
	
	/**
	* Подготовленный запрос к базе данных
	* Пример использования
	* Core::query("DELETE FROM `$config[prefix]_users` WHERE `id` = ? && `login` = ?", array('1', 'admin'));
	*/
	public static function query($sql, $params = array()) {
		$query = self::run() -> prepare($sql);
		$query -> execute($params);
		return $query;
	} 
	
	
	/**
	* Считает количество записей в таблице
	* Пример использования
	* $result = Core::count("SELECT COUNT(*) FROM `$config[prefix]_users` WHERE `id` = ?", array('1'));
	*/
	public static function count($sql, $params = array()){
		$count = self::query($sql, $params) -> fetch(PDO::FETCH_NUM);
		return $count[0];
	}
	
	/**
	* Вывод сообщений, ошибок и редирект
	*/
	public static function redirect($url = '/', $msg = NULL){
		if($msg != NULL) $_SESSION['message'] = $msg;
		header("Location: $url");
                exit();
	}
}
?>