Db=&$Db; } /** * Vraca Db objekat * * @return object */ function VratiDb() { return $this->Db; } /** * Dodeljuje Db objekat atributu Db * * @param $Db : object */ function DodeliDb(&$Db) { $this->Db=&$Db; } } /** * Klasa DPregled je klasa koja ima metode i atribute za osnovno rukovanje * podacima za razne vrste pregleda i lista. Osnovni podaci se prikupljeju kroz * njene skeleton metode * */ class DPregled extends DKlasa { var $SqlString; var $SqlForme; var $Filter; var $StatusFiltera; var $Podaci; var $Izabrani; var $Proces; var $Aktivnost; var $Parametri; var $OdabranaStranica; var $BrojElemenataListe; /** * Konstruktor klase, ukljucuje Db objekat za rad sa bazom podataka * @param $Db : object */ function DPregled(&$Db,$OdabranaStranica=0) { $this->DKlasa($Db); $this->StatusFiltera=2; $this->BrojElemenataListe=20; $this->OdabranaStranica=$OdabranaStranica; } /** * dodeliIzabrani dodeljuje izabrani primarni kljuc * @param $id :string */ function DodeliIzabrani($id) { $this->Izabrani=$id; } /**VratiIzabrani dodeljuje izabrani primarni kljuc * * @return $id :string */ function VratiIzabrani() { return $this->Izabrani; } /**dodeliSqlForme dodeljuje vrednost sql stringa za selekt po prim kljucu * @param $vrednost :string */ function DodeliSqlForme()//perimenovati u KreirajSqlForme { } /**dodeliSqlString dodeljuje sql string za izvrsenje u upitu * @param $vrednost :string */ function DodeliSqlString($Vrednost) { $this->SqlString=$Vrednost; } /**vratiIdPrvogPodatka iz niza koristi se kod inicijalizacije sifarnika * ##proveriti## * @return string */ function VratiIdPrvogPodatka() { return $this->Podaci["Podaci"][0][0]; } /**vratiSqlString vraca sql string za izvrsenje u upitu * * @return string */ function VratiSqlString() { return $this->SqlString; } /**IzvrsiSql izvrsava sql i vraca podatke kao niz * * @return string */ function IzvrsiSql() { return $this->Db->vratiStavke($this->SqlString); } /**IzvrsiUpit izvrsava sql sa zadatom sql recenicom i vraca podatke kao niz * @param string * @return string */ function IzvrsiUpit($vrednost) { return $this->Db->vratiStavke($vrednost); } /**IzvrsiUpitIDU izvrsava sql insert,delete,update sa zadatom sql recenicom * @vrednost string * @param true/false; */ function IzvrsiUpitIDU($vrednost) { return $this->Db->sqlUpit($vrednost); } /** ##proveriti## vratiInsertId izvrsava sql i vraca id za tabele koje nemaju autoIncrement id obelezja, * radi automatski insert u tu tabelu i ako je potrebno nakon toga dodatni podaci se rade kao update * te tabele za vraceni ID * @param NazivTabele string * @param PoljeKljuca string * @return int */ function VratiInsertId($NazivTabele,$PoljeKljuca) { $this->Sql("LOCK TABLES $NazivTabele WRITE "); $rezultat=$this->Db->vratiStavke(" select max($PoljeKljuca)+1 as ID from $NazivTabele "); $ID=$rezultat[0]["ID"]; if ($ID==null) { $ID=1; } $this->Sql("insert into $NazivTabele($PoljeKljuca)values($ID) "); $this->Sql("UNLOCK TABLES"); return $ID; } /** ##proveriti## vratiInsertId izvrsava sql i vraca id za tabele koje nemaju autoIncrement id obelezja, * radi automatski insert u tu tabelu i ako je potrebno nakon toga dodatni podaci se rade kao update * te tabele za vraceni ID * @param NazivTabele string * @param PoljeKljuca string * @return int */ function VratiInsertIdAuto($NazivTabele,$PoljeKljuca, $poljeUnosa, $vrednostUnosa) { $this->Sql("LOCK TABLES $NazivTabele WRITE "); $this->Sql("insert into $NazivTabele($poljeUnosa)values('$vrednostUnosa') "); $rezultat=$this->Db->vratiStavke(" select max($PoljeKljuca) as ID from $NazivTabele "); $ID=$rezultat[0]["ID"]; $this->Sql("UNLOCK TABLES"); return $ID; } /** MySql2EU * * Vraca datum u formatu EU dan.mesec.godina od datuma mysql * @return string */ function MySql2EU($Datum) { $string=explode('-',$Datum); $noviString=$string[2].'.'.$string[1].'.'.$string[0]; return $noviString; } /** EU2MySql * * vraca daum u formatu mysql godina-mesec-dan * @return string */ function EU2MySql($Datum) { $string=explode('.',$Datum); $noviString=$string[2].'-'.$string[1].'-'.$string[0]; return $noviString; } function EU2MsSql($Datum) { $string=explode('.',$Datum); $noviString=$string[2].'.'.$string[1].'.'.$string[0]; return $noviString; } /**Sql izvrsava sql * * @return string */ function Sql($Sql="") { if ($Sql<>"") { return $this->Db->sqlSkript($Sql); } else { return $this->Db->sqlSkript($this->SqlString); } } /**dodeliFilter dodeljuje filter string za izvrsenje u upitu * @param $vrednost :string */ function DodeliFilter() { } /**dodeliParametre dodeljuje string za izvrsenje u upitu * @param $vrednost :string */ function Dodeliparametre($Vrednost) { $this->Parametri=$Vrednost; } /**vratiFilter vraca filter string za izvrsenje u upitu * @param * @return string */ function VratiFilter() { return $this->Filter; } /**vratiKolonu vraca odabranu kolonu iz skupa rezultata kao niz * @param $niz - array * @param $nazivKolone - string * @return array */ function vratiKolonu($niz, $nazivKolone) { $vrednost=array(); for ($i=0;$iPodaci=$vrednost; } /**dodajPodaci dodeljuje niz atributu podaci pod asocijativnim indexom naziv * @param $vrednost :array /*@param $naziv:string */ function DodajPodaci($naziv,$vrednost) { $this->Podaci[$naziv]=$vrednost; } /**VratiDodatnePodatke dodeljuje nizove atributu podaci i prepisuje se u konkretnim klasama * @param */ function VratiDodatnePodatke() { } /**VratiDodatnePodatkeIzabrani radi dodatne upite da bi dobio sve neophodne podatke za prikaz forme * @param */ function VratiDodatnePodatkeIzabrani() { } /**vratiPodaci vraca niz kao rezultat upita * @param * @return array */ function VratiPodaci() { $this->Podaci=''; $this->DodeliFilter($this->Parametri); $this->DodeliSqlString(''); $this->Pregled(); $this->VratiDodatnePodatke(); return $this->Podaci; } /**vratiPodatak vraca niz kao rezultat upita * @param * @return array */ function VratiIzabraniPodaci() { $this->Podaci=''; $this->VratiPodatkeIzabrani(); $this->vratiDodatnePodatkeIzabrani(); return $this->Podaci; } /**dodeliStatusFiltera dodeljuje status filtera koji se dodaje iza * where reci u sql upitu i ona glasi 1=$statusFiltera * 1 vratice se podaci * 2 nece se vratiti podaci * @param $vrednost :string */ function DodeliStatusFiltera($vrednost) { $this->StatusFiltera=$vrednost; } /**vratiStatusFiltera vraca status filtera * @param * @return :1 ili 2 */ function VratiStatusFiltera() { if ($this->StatusFiltera==1) { return 1; } else { return 1; } } function Pregled() { $where=" where 1=".$this->vratiStatusFiltera(); $kol="$this->SqlString $where"; $SQL="$this->SqlString $where $this->Filter "; /*$p=new logPhp(); $p->UpisiLog("$SQL");*/ $this->SqlString=$SQL; //$sqlcount="select count(*) ".stristr($kol, 'from'); //$this->Podaci["BrojPodataka"]=$this->izvrsiUpit($sqlcount); $this->Podaci["BrojPodataka"]=0; if (isset($this->Parametri["Get"]["OdabranaStranica"])) { $this->OdabranaStranica=$this->Parametri["Get"]["OdabranaStranica"]; } //$ofset=$this->BrojElemenataListe*($this->OdabranaStranica-1); //$this->SqlString.=" order by prezime,ime LIMIT $ofset,$this->BrojElemenataListe "; //echo $this->SqlString; $this->Podaci["Podaci"]=$this->izvrsiSql($this->SqlString); return $this->Podaci; //echo "TEST (class DPregled:fun Pregled: atr podaci)"; //print_r($this->podaci); } } class DEdit extends DPregled { /**Konstruktor klase, ukljucuje Db objekat za rad sa bazom podataka * @param $Db :object */ function DEdit(&$Db) { $this->DPregled($Db); } function Brisi() { } function Dodaj() { } function Odustani() { } function Snimi() { } function WizardVratiPodatke($tabela, $poljeKljuc, $poljeVrednost, $uslov="") { if ($uslov<>""){$uslov=" $uslov";} $this->dodeliSqlString("select $poljeKljuc , $poljeVrednost from $tabela where 1=1 $uslov"); return $this->izvrsiSql(); } } class DIzvestaj extends Dpregled { /**Konstruktor klase, ukljucuje Db objekat za rad sa bazom podataka * @param $Db :object */ function DIzvestaj(&$Db) { $this->Dpregled($Db); } } class DSifarnik extends DEdit { /**Konstruktor klase, ukljucuje Db objekat za rad sa bazom podataka * @param $Db :object */ function DSifarnik(&$Db) { $this->Dedit($Db); } } class DMasterDetail extends DSifarnik { function DMasterDetail(&$Db) { $this->DSifarnik($Db); } function VratiIzabraniPodaciDetalj() { $this->Podaci=''; $this->VratiPodatkeIzabraniDetalj(); $this->vratiDodatnePodatkeIzabraniDetalj(); return $this->Podaci; } } class DVezaEntiteta extends Dedit { /**Konstruktor klase, ukljucuje Db objekat za rad sa bazom podataka * @param $Db :object */ function DVezaEntiteta(&$Db) { $this->Dedit($Db); } function Povezi() {} } class DEditVerzija extends Dedit { var $Izabranaverzija; var $RadnaVerzija; var $PodaciIzBaze; var $PodaciZaPrikaz; var $PodaciZaEdit; var $ProcitanoIzBaze; /**Konstruktor klase, ukljucuje Db objekat za rad sa bazom podataka * @param $Db :object */ function DEditVerzija(&$Db) { $this->DEdit($Db); } /**Setuje da li je citano iz baze 1 da jeste 0 da nije * @param $Vrednost :Int */ function DodeliStatusCitanjaIzBaze($Vrednost) { $this->ProcitanoIzBaze=$Vrednost; } /**Setuje koja je verzija izabrana za prikaz * @param $Verzija :string */ function DodeliIzabranaVerzija($Vrednost) { $this->Izabranaverzija=$Vrednost; } /**Vraca izabranu verziju * @param */ function VratiIzabranaVerzija() { return $this->Izabranaverzija; } /**Setuje koja je verzija editabilna tj koja nije istorijska * @param $Verzija :string */ function DodeliRadnaVerzija($Verzija) { } /**Vraca koja je verzija editabilna * @param */ function VratiRadnaVerzija() { } /**Setuje podatke promenljivoj PodaciIzBaze * @param $Db :object */ function DodeliPodaciIzBaze($Vrednost) { $this->PodaciIzBaze=$Vrednost; } /**Vraca podatke iz PodaciIzBaze * @param $Db :object */ function VratiPodaciIzBaze() { return $this->PodaciIzBaze; } /**Setuje podatke promenljivoj PodaciZaEdit * @param $Vrednost :array */ function DodeliPodaciZaEdit($Vrednost) { $this->PodaciZaEdit=$Vrednost; } /**Vraca podatke za edit (to su podaci koji su poceti da se edituju ali nisu snimljeni) * @param */ function VratiPodaciZaEdit() { return $this->PodaciZaEdit; } /**Setuje podatke promenljivoj PodaciZaPrikaz * @param $Vrednost :array */ function DodeliPodaciZaPrikaz($Vrednost) { $this->PodaciZaPrikaz=$Vrednost; } /**Vraca podatke za prikaz(ovi se podaci uvek predaju HTML objektima) * @param */ function VratiPodaciZaPrikaz() { return $this->PodaciZaPrikaz; } function VratiIzabranaVerzijaPodaci($id) { // ispitivanje mogucih stanja promenljivih stanjeDb i $aktuelnaVerzija // stanjeDb=0 nije vrseno citanje iz baze, stanjeDb=1 vec je citano za dati kor. zahtev if ($this->ProcitanoIzBaze=="0" and $this->RadnaVerzija==$this->Izabranaverzija) { //puni vrednosti PAMTI i PRIKAZUJE za aktuelnu verziju sa vrednostima iz baze i menja // stanjeDb na 1 $this->DodeliPodaciIzBaze($this->VratiIzabraniPodaci($id)); $this->DodeliPodaciZaEdit($this->VratiIzabraniPodaci($id)); $this->DodeliPodaciZaPrikaz($this->VratiIzabraniPodaci($id)); $this->DodeliStatusCitanjaIzBaze(1); } elseif ($this->ProcitanoIzBaze=="0" and $this->RadnaVerzija<>$this->Izabranaverzija) { //puni vrednosti samo PRIKAZUJE za aktuelnu verziju sa vrednostima iz baze $this->DodeliPodaciZaPrikaz($this->VratiIzabraniPodaci($id)); } elseif ($this->ProcitanoIzBaze=="1" and $this->RadnaVerzija<>$this->Izabranaverzija) { //puni vrednosti samo PRIKAZUJE za aktuelnu verziju sa vrednostima iz baze $this->DodeliPodaciZaPrikaz($this->VratiIzabraniPodaci($id)); } elseif ($this->ProcitanoIzBaze=="1" and $this->RadnaVerzija==$this->Izabranaverzija) { //echo "11"; //puni vrednosti PRIKAZUJE za aktuelnu verziju sa vrednostima iz PAMTI $this->DodeliPodaciZaPrikaz(VratiPodaciZaEdit()); } return $this->VratiPodaciZaPrikaz(); } } class Korpa extends DKlasa { var $stavke; /* array stavki */ var $total; /* total korpe */ function Korpa(&$Db) { /* object constructor */ $this->DKlasa($Db); $this->$stavke = array(); $this->total = 0; } function dodaj(&$idStavke, $kol) { /* dodaje stavke u korpu i menja total */ if (isset($idStavke)) { setdefault($this->stavke[$idStavke], 0); $this->stavke[$idStavke] += $kol; } } function setuj(&$idStavke, $kol) { /* setuje broj stavki u korpi na zadatu vrednost */ if (isset($idStavke)) { $this->stavke[$idStavke] = $kol; } } function brisi(&$idStavke) { // brise srtavke iz korpe if (isset($idStavke)) { unset($this->stavke[$idStavke]); } } function ocistiKorpu() { /* Brise stavke kojima stavke nisu produktid tj nisu int i * kojima kolicina nije jednaka ili ve?a od 1 */ foreach ($this->stavke as $idStavke => $kol) { if ($kol < 1) { unset($this->$stavke[$idStavke]); } } } function vratiBrojStavki() { /*vraca broj stavki u korpi */ $broj = 0; foreach ($this->stavke as $idStavke => $kol) { $broj += $kol; } return $broj; } function vratiListuIzabranih() { /* vra?a listi idStavke kao listu odvojenu zarezima * za koristenje u upitima, npr. SELECT id, price FROM products WHERE id IN .... */ $idStavke_list = ""; foreach ($this->$stavke as $idStavke => $kol) { $idStavke_list .= ",'" . $idStavke . "'"; } /* brisem prvi zarez */ return substr($idStavke_list, 1); } } ?>