<?php

	function mod_xmlrpc_primjeri () {
		
		// deklaracija globalnih varijabli koje se koriste za prijenos podataka iz Smartyja u PHP
		global $xmlrpc_primjer, $xmlrpc_prvi, $xmlrpc_drugi, $xmlrpc_dan, $xmlrpc_mjesec;
		
		
		// je li zatrazena informacija o starosti Unixa (prvi primjer)?
		if ($xmlrpc_primjer == 1) {
			
			// definicija posluzivaca - objekt klase xmlrpc_client
			$server = new xmlrpc_client('/~mario/xmlrpc/xmlrpc_primjeri.php', 'geri.cc.fer.hr', 80);
			
			// definicija poruke  - objekt klase xmlrpcmsg
			$poruka = new xmlrpcmsg('primjer1.starost');
			
			// slanje poruke posluzivacu i pohranjivanje odgovora u varijablu $rezultat
			$rezultat = $server -> send($poruka);
				
			// hvatanje dumpa varijable $rezultat (odgovor posluzivaca) u buffer
			// da dump ne ode direktno u web preglednik
			ob_start();
				var_dump($rezultat);
				$primljeno = ob_get_contents();
			ob_end_clean();
			
			// stvaranje xmlrpcval objekta iz odgovora posluzivaca 
			$objekt = $rezultat -> value();		
			
			// vrijednost iz objekta pridruzuje se PHP varijabli $br_sekundi
			$br_sekundi = xmlrpc_decode($objekt);
			
			// odredjujemo lokalni jezik (zbog ispisa dana i mjeseca)
			setlocale (LC_ALL, 'hr_HR.ISO_8859-2');
			
			// odredjivanje predloska za 1. primjer
			$tpl = "xmlrpc_primjer1.tpl";
		
			
		// je li zatraeno zbrajanje i mnozenje dva broja (drugi primjer)?	
		} elseif (($xmlrpc_primjer == 2) && is_numeric($xmlrpc_prvi) && is_numeric($xmlrpc_drugi)) {
		
			// brojeve koje treba zbrojiti i pomnoziti spremamo u polje
			$brojevi = array();
			$brojevi["prvi"] = $xmlrpc_prvi;
			$brojevi["drugi"] = $xmlrpc_drugi;
			
			// definicija posluzivaca
			$server = new xmlrpc_client('/~mario/xmlrpc/xmlrpc_primjeri.php', 'geri.cc.fer.hr', 80);
			
			// definicija poruke tj. metode koju pozivamo i njezinog argumenata
			// argument je polje u kojem je xmlrpcval objekt (polje s nasim brojevima)
			$poruka = new xmlrpcmsg('primjer2.zbrajanje_mnozenje', array(xmlrpc_encode($brojevi)));
			
			// slanje poruke posluzivacu i pohranjivanje odgovora u varijablu $rezultat
			$rezultat = $server -> send($poruka);
			
			// hvatanje dumpa varijable $rezultat (odgovor posluzivaca) u buffer
			// da dump ne ode direktno u web preglednik
			ob_start();
				var_dump($rezultat);
				$primljeno = ob_get_contents();
			ob_end_clean();
			
			// podaci iz dobivenog objekta se pridruzuju PHP polju $dobiveni_rezultati
			$dobiveni_rezultati = xmlrpc_decode($rezultat -> value());
			
			// odredjivanje predloska za 2. primjer
			$tpl = "xmlrpc_primjer2.tpl";
		
			
		// je li zatrazeno odredjivanje horoskopskog znaka (treci primjer)?	
		} elseif ($xmlrpc_primjer == 3) {
			
			// primljeni dan i mjesec rodjenja pohranjujemo u polje
			$podaci = array();
			$podaci["dan"] = $xmlrpc_dan;
			$podaci["mjesec"] = $xmlrpc_mjesec;
			
			// definicija posluzivaca
			$server = new xmlrpc_client('/~mario/xmlrpc/xmlrpc_primjeri.php', 'geri.cc.fer.hr', 80);
			
			// definicija poruke tj. metode koju pozivamo i njezinog argumenata
			// argument je polje u kojem je xmlrpcval objekt
			$poruka = new xmlrpcmsg('primjer3.horoskopski_znak', array(xmlrpc_encode($podaci)));
			
			// slanje poruke posluzivacu i pohranjivanje odgovora u varijablu $rezultat
			$rezultat = $server -> send($poruka);
			
			// hvatanje dumpa varijable $rezultat (odgovor posluzivaca) u buffer
			// da dump ne ode direktno u web preglednik
			ob_start();
				var_dump($rezultat);
				$primljeno = ob_get_contents();
			ob_end_clean();
			
			// podaci iz dobivenog objekta se pridruzuju PHP polju $dobiveni_rezultati
			$dobiveni_rezultati = xmlrpc_decode($rezultat -> value());
			
			// pretvorba iz UTF-8 u ISO-8859-2 (ovaj XML-RPC library za PHP radi samo s UTF-8)
			$dobiveni_rezultati["naziv"] = iconv ("UTF-8", "ISO-8859-2", $dobiveni_rezultati["naziv"]);
			$dobiveni_rezultati["dani"] = iconv ("UTF-8", "ISO-8859-2", $dobiveni_rezultati["dani"]);
			$dobiveni_rezultati["boje"] = iconv ("UTF-8", "ISO-8859-2", $dobiveni_rezultati["boje"]);
			$dobiveni_rezultati["poznati"] = iconv ("UTF-8", "ISO-8859-2", $dobiveni_rezultati["poznati"]);
			
			// odredjivanje predloska za 3. primjer
			$tpl = "xmlrpc_primjer3.tpl";
		
			
		// ako nije odabran nijedan primjer onda smo na pocetno sucelju
		} else
			$tpl = "xmlrpc_primjeri.tpl";
		
		// slanje podataka u Smarty
		return array ('title' => "XML-RPC primjeri", 'template' => $tpl, data => array(br_sekundi => $br_sekundi, primljeno => $primljeno, dobiveni_rezultati => $dobiveni_rezultati));
		
	}

?>