<?php

/**
* @name Vokativ loader klasa koja ucitava podatke iz MySQL baze podataka
* @package Vokativ
* @author Nemanja Avramović
* @link http://vokativ.vokabular.org/
* @version 0.1.1
*/

class Vokativ_MySQL {

    var 
$host 'localhost';
    var 
$user 'root';
    var 
$pass '';
    var 
$db 'razno';
    var 
$table 'vokativ';
    var 
$port 3306;
    var 
$conn false;
    
    
/**
    * @name Vokativ_MySQL
    * @description Konstruktor klase
    * @param string $host  MySQL host. Default vrednost: localhost
    * @param string $user  MySQL korisnik. Default vrednost: root
    * @param string $pass  Šifra MySQL korisnika. Default vrednost: PRAZAN STRING (bez šifre)
    * @param string $db    Ime MySQL baze. Default vrednost: vokativ
    * @param string $table Ime tabele u MySQL bazi. Default vrednost: vokativ
    * @param integer $port  MySQL port. Default vrednost: 3306
    * @return NULL
    */

    
function Vokativ_MySQL() {
        
//kreiramo prazan niz sa podesavanjima
        
$podesavanja = array();
    
        
//koliko je argumenata prosledjeno konstruktoru
        
$num_args func_num_args();

        
//ako je broj argumenata 1 i taj jedan argument je niz, onda imamo podesavanja
        
if ( ($num_args == 1) && is_array(func_get_arg(0)) ) {
            
$arr func_get_arg(0);
            if (
$this->is_assoc($arr)) { $podesavanja $arr; }
                else {
                    if (isset(
$arr[0])) {    $podesavanja['host'] = $arr[0]; }
                    if (isset(
$arr[1])) {    $podesavanja['user'] = $arr[1]; }
                    if (isset(
$arr[2])) {    $podesavanja['pass'] = $arr[2]; }
                    if (isset(
$arr[3])) {    $podesavanja['db'] = $arr[3]; }
                    if (isset(
$arr[4])) {    $podesavanja['table'] = $arr[4]; }
                    if (isset(
$arr[5])) {    $podesavanja['port'] = $arr[5]; }
                }
        }
        
//u suprotnom, ako imamo jedan ili vise argumenata (koji nisu niz), pravimo listu podesavanja
        
elseif ($num_args >= 1) {
            
$arr = array();
            for (
$i 0$i<$num_args$i++) { $arr[] = func_get_arg($i); }
                if (isset(
$arr[0])) {    $podesavanja['host'] = $arr[0]; }
                if (isset(
$arr[1])) {    $podesavanja['user'] = $arr[1]; }
                if (isset(
$arr[2])) {    $podesavanja['pass'] = $arr[2]; }
                if (isset(
$arr[3])) {    $podesavanja['db'] = $arr[3]; }
                if (isset(
$arr[4])) {    $podesavanja['table'] = $arr[4]; }
                if (isset(
$arr[5])) {    $podesavanja['port'] = $arr[5]; }
        }
        
        
        
//ako smo u gornjim petljama podesili bilo koje podesavanje, to preslikavamo na klasu
        
if (count($podesavanja) > 0) {
            if (isset(
$podesavanja['host'])) {    $this->host $podesavanja['host']; }
            if (isset(
$podesavanja['user'])) {    $this->user $podesavanja['user']; }
            if (isset(
$podesavanja['pass'])) {    $this->pass $podesavanja['pass']; }
            if (isset(
$podesavanja['db'])) {    $this->db $podesavanja['db']; }
            if (isset(
$podesavanja['table'])) {    $this->table $podesavanja['table']; }
            if (isset(
$podesavanja['port'])) {    $this->port $podesavanja['port']; }
        }
        
    }
    
    function 
is_assoc($array) {
        foreach (
array_keys($array) as $k => $v) {
            if (
$k !== $v)
                return 
true;
            }
        return 
false;
    }
    
    
/**
    * @name connect
    * @description Funkcija koja se konektuje na MySQL host i odabira bazu
    * @param NULL
    * @return boolean
    */
    
    
function connect() {
        
$this->conn = @mysql_connect($this->host.':'.$this->port$this->user$this->pass) or die(mysql_error());
        @
mysql_select_db($this->db$this->conn) or die(mysql_error());
        
        
mysql_query("SET NAMES utf8"$this->conn);
        
mysql_query("SET CHARACTER SET utf8"$this->conn);
        
mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'"$this->conn);
        
        return 
true;
    }
    
    
/**
    * @name napravi_niz
    * @description Funkcija koja izvlači podatke iz baze i kreira asocijativni niz u formatu $niz['nominativ'] = 'vokativ'
    * @param NULL
    * @return array
    */
    
    
function napravi_niz() {
        if (!
$this->conn) {
            
$this->connect();
        }
        
        
$query "SELECT * FROM {$this->table}";
        
$sql mysql_query($query$this->conn) or die(mysql_error());
        
        
$niz = array();
        
        while (
$row mysql_fetch_array($sql)) {
            
$niz[$row['nominativ']] = $row['vokativ'];
        }
        
        return 
$niz;
    }

}

?>