setUpSmarty(); } /** * Elvégzi az oldal megjelenítését és kiküldi az output-ra * * @param string $template a template neve (pl. fooldal.tpl) * @param array $menus A smarty-nak átadandó menük sorszámai */ function show($template,$menus=array(1,2,3)) { foreach ($menus as $menuid) $this->getMenu($menuid); $this->smarty->display($template); } /** * Bekonfigurálja a smarty objektumot + láblécnek a keresőoptimalizálást átadja */ /*private*/ function setUpSmarty() { global $DEF_FEJLESZTOI,$nick,$hibasbelepes,$kereshetotablak, $nickadm,$nickmod,$szekcio_id,$nickid,$speakingurl,$szekcio_DATA,$automagazin; if(!empty($automagazin) && $automagazin==1){ $szekcio_DATA[$szekcio_id]['mappa']="automagazin"; } $this->smarty = new Smarty; $this->smarty->template_dir = "/templates/"; $this->smarty->compile_dir = "../".$szekcio_DATA[$szekcio_id]['mappa']."/templates/templates_c/"; $this->smarty->config_dir = "../".$szekcio_DATA[$szekcio_id]['mappa']."/templates/configs/"; $this->smarty->cache_dir = "../".$szekcio_DATA[$szekcio_id]['mappa']."/templates/cache/"; //if (isset($DEF_FEJLESZTOI)) $this->smarty->force_compile=true; $self=$_SERVER['PHP_SELF']."?"; foreach ($_GET as $valtozo => $ertek) if ($valtozo!="user_kilepes") $self.=$valtozo."=".$ertek."&"; $this->self=$self; if($speakingurl == 1) $this->smarty->assign("speakingurl",1); else $this->smarty->assign("speakingurl",0); $this->smarty->assign("self",$self); $this->smarty->assign("REQUEST_URI",$_SERVER['REQUEST_URI']); $this->smarty->assign("nick",$nick); $this->smarty->assign("nickadm",$nickadm); $this->smarty->assign("nickmod",$nickmod); $this->smarty->assign("hibasbelepes",$hibasbelepes); $this->smarty->assign("kereshetotablak",$kereshetotablak); if ($szekcio_id>=50) { $r=sqlr("select nick,title from user_section where szekcio_id='".$szekcio_id."'"); $this->smarty->assign("szekciocim",$r->title); if (($nick==$r->nick)||($nickadm==1)) $this->smarty->assign("linktoadmin",$szekcio_id); else $this->smarty->assign("linktoadmin",""); } /* if($nickid!=""){ $q=sql("select id,kitol,targy from privat_uzi where tulaj_id=$nickid and olvasva=0 order by datum desc"); $lev=array(); $uzenetszam=0; while ($r=mysql_fetch_assoc($q)) { array_push($lev,$r); $uzenetszam++; } $this->smarty->assign("lev",$lev); $this->smarty->assign("uzenetszam",$uzenetszam); } //KERESŐOPTIMALIZÁLÁS if($szekcio_id==1){ $q=sql("SELECT DISTINCT text FROM keresoszavak WHERE szekcio_id='$szekcio_id' ORDER BY acc DESC LIMIT 50"); $kereso=array(); while ($r=mysql_fetch_assoc($q)) { $kereso[]=$r['text']; } $this->smarty->assign("keresoopt",$kereso); // $sql="SELECT id, cim,speakingURL FROM leiras_jatekleiro WHERE (szekcio_id=$szekcio_id) and (datumsmarty->assign("keresoopt_jatek",$friss); } */ } /** * Felépíti a $id-jű menüt (cache-ből vagy újonnan ha kell) és átadja a smarty-nak */ function getMenu($id) { GLOBAL $MenuBuilderLoaded,$szekcio_id,$MenuBuilder,$engine,$nick; if(isset($nick) && $nick=="yoda"){ error_reporting(1); ini_set("display_errors",E_ALL); } $filename="cache/menu_$id.php"; if ($szekcio_id>=50) $filename="cache/menu_".$szekcio_id."_$id.php"; if (!file_exists($filename)) { if (!isset($MenuBuilderLoaded)) include("engine-menubuilder.php"); $MenuBuilder->build(".",$szekcio_id,$id); } ob_start(); include($filename); $this->smarty->assign("menu_$id",ob_get_contents()); ob_end_clean(); } /** * Az oldalakon előforduló, admiból változtatható 'statikus' szöveget ad vissza * azonosító alapján. Ha nem létezik az adott azonosítójú szöveg, létrehozza. */ function beagy($str) { global $szekcio_id; $q=sql("select text from szovegek where nev='$str' and szekcio_id=$szekcio_id"); if ($r=mysql_fetch_object($q)) { return $r->text; } else { sql("insert into szovegek (nev,szekcio_id,text) values " . "('$str',$szekcio_id,'')"); return ""; } } /** * Megvizsgálja, hogy van-e jelentkezve a felhasználó. Ha mode=1, akkor előfizetői jogokat is vár. * @param int $mode A bejelentkezés vizsgálatának fajtája * @return bool Igen vagy nem */ function bjel($mode=0) { GLOBAL $nick,$nickadm,$nickid,$szekcio_id; if($mode==1 && !empty($nickid)){ if(!empty($nickadm) && $nickadm==1) return (1); $erv=date("Y-m-d 00:00:00"); $szam=sqln("SELECT id FROM tagok_elofizeto WHERE user_id='$nickid' AND szekcio_id='$szekcio_id' AND ervenyes>'$erv' LIMIT 1"); if($szam==1) return (1); else return(0); } return ($nick!=""); } /** * Végzetes hiba. Kiírja a hibaüzenetet, aztán meghal */ function fatalerror($str,$str2="") { $this->smarty->assign("error",$str); $this->smarty->assign("error2",$str2); $this->show("error.tpl"); die(); } function getText($str) { global $FormFactorynyelv; if(!empty($FormFactorynyelv[$str])) return $FormFactorynyelv[$str]; else return $str; } /** * Rangkezelés. Új pontok hozzáadása egy adott tevékenységért * A rendszer fentartja az adatbáziskonzisztenciát (mindenhol * módosít, ahol kell) valamint kezeli a kitűntetéseket. Ha elért * egy olyan pontot valamilyen kategóriában a user, hogy kitűntetés * jár neki ezért, akkor a rendszer megadja neki. * * KÉRDÉS: pontlevonás esetén a kitűntetés is törlődjön? jelenleg nem * * @param $pont Mennyi pontot adunk hozzá? (lehet negatív is) * @param $tipus Milyen tevékenységért kapja a pontot? * @param $user_id Ki kapja a pontot? */ function addPoints($pont, $tipus, $user_id = -1) { global $nick, $nickid, $szekcio_id; if ($pont==0) return -1; if ($user_id == -1) { //Ha a $user_id paraméter nincs megadva, az aktuálisan bejelentkezett felhasználóra vonatkozik... if ($nick == "") return -1; else $user_id = $nickid; } if (!isset($this->Config)) $this->Config=require('configuration.inc.php'); //Ha a konfiguráció nincs betöltve még, épp ideje... $q = sql("SELECT * FROM kituntetes WHERE user_id=$user_id and tipus=$tipus and szekcio_id=$szekcio_id"); if ($r = mysql_fetch_object($q)) { // A rekord már létezik a táblában if ($pont >= 0) { //Pont hozzáadás sql("UPDATE kituntetes SET pont=pont+$pont WHERE user_id=$user_id and tipus=$tipus and szekcio_id=$szekcio_id"); $pont_after = $r->pont + $pont; } else { if ($r->pont + $pont > 0) { sql("UPDATE kituntetes SET pont=pont+$pont WHERE user_id=$user_id and tipus=$tipus and szekcio_id=$szekcio_id"); $pont_after = $r->pont + $pont; } else { sql("DELETE FROM kituntetes WHERE user_id=$user_id and tipus=$tipus and szekcio_id=$szekcio_id"); $pont_after = 0; } } } else { // Még nem létezik ez a rekord a táblában if ($pont<0) return -1; sql("INSERT INTO kituntetes (user_id,tipus,szekcio_id,pont) VALUES ($user_id,$tipus,$szekcio_id,$pont)"); $pont_after = $pont; } //Kitűntetések $awards=$this->getAwards($user_id); $kit=array(); foreach ($awards as $aw) { if (ceil($aw['azon'] / 500)-1==$tipus) $kit[$aw['azon'] % 500]=1; $pont_after+=$aw['pont']; } foreach ($this->Config[$tipus] as $key => $kituntet) { if ((!isset($kit[$key])) && ($kituntet['pont'] <= $pont_after)) { // Ezt a kitűntetést át kell adni $q = sql("select * from kituntetes where tipus=" . (500 * $tipus + $key) . " and szekcio_id=$szekcio_id and user_id=$user_id"); if ($r = mysql_fetch_object($q)) { // Már korábban is volt ilyen kitűntetése.. Ez mindenesetre furcsa de nem csinálunk semmit } else { // Megadjuk a kitűntetést sql("insert into kituntetes (user_id,tipus,szekcio_id,pont) VALUES ($user_id," . (500 * $tipus + $key) . ",$szekcio_id," . $kituntet['pluszpont'] . ")"); if (is_numeric($kituntet['pluszpont'])) $pont_after+=$kituntet['pluszpont']; } } } $this->updatePoints($user_id); } function addPointsbType($tipus, $user_id = -1) { $this->addPoints($this->getConfig(1000+$tipus), $tipus, $user_id); } function removePointsbType($tipus, $user_id = -1) { $this->addPoints(-$this->getConfig(1000+$tipus), $tipus, $user_id); } /** * Visszatér a $user_id jű felhasználó elért kitűntetéseivel. * Amennyiben $user_id nincs megadva, az aktuális bejelentkezett felhasználót veszi alapul. * A visszatérési érték egy tömb amelyben a kitűntetések szerepelnek, * ezek mindegyike egy-egy újabb tömbbel van deklarálva */ function getAwards($user_id = -1) { global $nick, $nickid, $szekcio_id; if ($user_id == -1) { //Ha a $user_id paraméter nincs megadva, az aktuálisan bejelentkezett felhasználóra vonatkozik... if ($nick == "") return array (); else $user_id = $nickid; } if (!isset($this->Config)) $this->Config=require('configuration.inc.php'); //Ha a konfiguráció nincs betöltve még, épp ideje... $q = sql("select tipus from kituntetes where user_id=$user_id and tipus>500 and szekcio_id=$szekcio_id"); $ret = array (); while ($r = mysql_fetch_object($q)) { $sor['nev'] = $this->Config[ceil($r->tipus / 500)-1][$r->tipus % 500]['nev']; $sor['img'] = $this->Config[ceil($r->tipus / 500)-1][$r->tipus % 500]['img']; $sor['pont'] = $this->Config[ceil($r->tipus / 500)-1][$r->tipus % 500]['pluszpont']; $sor['holjar'] = $this->Config[ceil($r->tipus / 500)-1][$r->tipus % 500]['pont']; $sor['azon']=$r->tipus; $sor['tipus']=ceil($r->tipus / 500)-1; array_push($ret, $sor); } return $ret; } /** * Megadja az $user_id –jű felhasználó rangját (összpontszámból számolva, az adminon beállított szinteknek megfelelően. * Amennyiben $user_id nincs megadva, az aktuális bejelentkezett felhasználót veszi alapul. */ function getRank($user_id=-1) { global $nick, $nickid, $szekcio_id; if ($user_id == -1) { //Ha a $user_id paraméter nincs megadva, az aktuálisan bejelentkezett felhasználóra vonatkozik... if ($nick == "") return array (); else $user_id = $nickid; } if (!isset($this->Config)) $this->Config=require('configuration.inc.php'); //Ha a konfiguráció nincs betöltve még, épp ideje... $r=sqlr("select pont_$szekcio_id as n from tagok where id='$user_id'"); $max=0; $ret=array(); foreach ($this->Config['RANKS'] as $RANK) { if (($RANK['pont']<=$r->n)&&($RANK['pont']>=$max)) { $ret=$RANK; $max=$RANK['pont']; } } $ret['pont']=$r->n; return $ret; } /** * Megadja pontszámból a rangot */ function getRankFromPoint($n) { global $nick, $nickid, $szekcio_id; if (!isset($this->Config)) $this->Config=require('configuration.inc.php'); //Ha a konfiguráció nincs betöltve még, épp ideje... $max=0; $ret=array(); foreach ($this->Config['RANKS'] as $RANK) { if (($RANK['pont']<=$n)&&($RANK['pont']>=$max)) { $ret=$RANK; $max=$RANK['pont']; } } $ret['pont']=$n; return $ret; } /** * Karbantartja a tagok táblát */ function updatePoints($user_id=-1) { global $nick, $nickid, $szekcio_id; if ($user_id == -1) { //Ha a $user_id paraméter nincs megadva, az aktuálisan bejelentkezett felhasználóra vonatkozik... if ($nick == "") return array (); else $user_id = $nickid; } $r=sqlr("select sum(pont) as n from kituntetes where user_id=$user_id and szekcio_id=$szekcio_id"); if ($r->n==null) $r->n=0; sql("update tagok set pont_$szekcio_id=$r->n where id='$user_id'"); } /** * Lekérdez egy konfigurációs bejegyzést */ function getConfig($val) { if (!isset($this->Config)) $this->Config=require('configuration.inc.php'); //Ha a konfiguráció nincs betöltve még, épp ideje... if (isset($this->Config[$val])) return $this->Config[$val]; else return 0; } } /** * A cache-lt oldalsáv php kódok hívják meg ezt a fv.-t, ha egy olyan blokk * megjelenítését kell elvégezniük, ami nem cache-lhető. Ha szükséges, betölti * a kívánt modult (ha még nincsen), majd meghívja a show() metódusát */ function showModule($modulnev,$modul_id) { global $MODULES,$engine; if (!isset($MODULES[$modulnev])) { include ("modules/$modulnev.php"); eval('$MODULES[\''.$modulnev.'\']=new MOD_'.$modulnev.'();'); } $MODULES[$modulnev]->show($modul_id); } /** * Ebben a globális tömbben tároljuk, hogy az oldalon elhelyezett keresés funkció miket keres, * milyen táblákban, milyen mezőkben, milyen feltétel mellett, milyen linkre * az asszociatív tömbök elemei: * 0: Mikre keresünk (ez jelenik meg kiírva) * 1: Melyik táblában keresünk * 2: Tömb, azon mezők neveivel, amikben keresünk. Ezek varchar vagy text vagy blob mezők kell legyenek * 3: Megadható tetszőleges feltétel (pl. szekcio_id) * 4: A linkelt URL. Az URL végére oda lesz illesztve a talált rekord id-je. */ if($szekcio_id==1) //PCGURU $kereshetotablak=array( 1=>array("Hírek","hirek",array("cim_1","cim_2","cim_3","bev_1","bev_2","bev_3","bevezeto","szoveg","szerzo","speakingURL"),"(szekcio_id=$szekcio_id) and (kesz=1) and (datumarray("Játékadatlapok","leiras_jatekleiro",array('cim','szoveg','fejleszto','kiado','speakingURL'),"(szekcio_id=$szekcio_id) and (datumarray("Letöltések","letoltesek",array('name','version','setup','description','author',"speakingURL"),"(szekcio_id=$szekcio_id) and (datumarray("Végigjátszások","leiras_vegigjatszas",array('cim','bevezeto','szoveg'),"(szekcio_id=$szekcio_id) and (datumarray("Játéktesztek","leiras_jatekteszt",array('cim','bevezeto','szoveg','velemeny','pro','kontra','osszegzes','szerzo'),"(szekcio_id=$szekcio_id) and (datumarray("Galéria","galeria",array('node', 'description'),"((is_category=1) or (incat=1)) and (szekcio_id=$szekcio_id) and (datumarray("Hírek","hirek",array("cim_1","cim_2","cim_3","bev_1","bev_2","bev_3","bevezeto","szoveg","szerzo",'speakingURL'),"(szekcio_id=$szekcio_id) and (kesz=1) and (datumarray("PDF Archívum","doksitar",array('name','tipus','search_data'),"(szekcio_id=$szekcio_id) and (datumarray("Leírások","leiras",array('cim','bevezeto','szoveg'),"(szekcio_id=$szekcio_id) and (datumarray("Letöltések","letoltesek",array('name','version','setup','description','author',"speakingURL"),"(szekcio_id=$szekcio_id) and (datumarray("Lapszámok","lapszamok",array('shortname', 'szoveg'),"(szekcio_id=$szekcio_id) and (publicdatearray("Kereskedések","motor_markakereskedes",array('cegnev', 'cim','leiras'),"(szekcio_id=$szekcio_id)","markakereskedo.php?id="), ); elseif ($szekcio_id==8) //ITB $kereshetotablak=array( 1=>array("Cikkek","hirek",array("cim_1","cim_2","cim_3","bev_1","bev_2","bev_3","bevezeto","szoveg","szerzo"),"(szekcio_id=$szekcio_id) and (kesz=1) and (datumarray("PDF Archívum","doksitar",array('name','tipus','search_data'),"(szekcio_id=$szekcio_id) and (datumarray("Események","esemenyek",array('nev','leiras','helyszin'),"(szekcio_id=$szekcio_id) and (datumarray("Galéria","galeria",array('node', 'description'),"(is_category='0') AND (szekcio_id=$szekcio_id) and (datumarray("Hírlevél archívum","hirlevel_napi",array('tartalom','dbal','djobb','dkozep','dalul'),"(kikuldve=2) and (datumarray("Lapszámok","lapszamok",array('shortname', 'szoveg'),"(szekcio_id=$szekcio_id) and (publicdate"hirek", 'leiras_jatekteszt'=>"teszt", 'leiras_vegigjatszas'=>"vegigjatszas", 'leiras_jatekleiro'=>"jatek", 'letoltesek'=>"letoltes", 'kepregeny'=>"kepregeny", ); $rnew['link']=$szekcio_DATA[$szekcio_id]['URL'].$speakmappa[$table]."/".$r['speakingURL']; }else { $rnew['link']=$URL.$r['id']; } $rnew['id']=$r['id']; $rnew['nev']=$r[$txtfieldname]; if(!empty($extrafiled)) $rnew[$efn]=$r[$efn]; if(!empty($extrafiled2)) $rnew[$efn2]=$r[$efn2]; if(!empty($extrafieldarray)){ foreach($extrafieldarray as $ea){ $rnew[$ea]=$r[$ea]; } } if(!empty($datumoz)){ $datumev=substr($r[$datumoz],0,4); $datumho=substr($r[$datumoz],5,2); $datumnap=substr($r[$datumoz],8,2); switch ($datumho) { case "01": $datumho="január"; break; case "02": $datumho="február"; break; case "03": $datumho="március"; break; case "04": $datumho="árpilis"; break; case "05": $datumho="május"; break; case "06": $datumho="június"; break; case "07": $datumho="július"; break; case "08": $datumho="augusztus"; break; case "09": $datumho="szeptember"; break; case "10": $datumho="október"; break; case "11": $datumho="november"; break; case "12": $datumho="december"; break; } $rnew[$datumoz]=$datumev.". ".$datumho." ".$datumnap."."; } array_push($res,$rnew); } } } if(empty($smartyname)) $engine->smarty->assign($field,$res); else $engine->smarty->assign($smartyname,$res); if(empty($smartyname)) $engine->smarty->assign($field."num",count($res)); else $engine->smarty->assign($smartyname."num",count($res)); } ?>