".RS_VW_ERR1."

\n"; exit(); else: $GLOBALS["cisloclanku"]=mysql_escape_string($GLOBALS["cisloclanku"]); endif; // znamkovani/hodnoceni clanku function Znamkuj($id_clanek = "",$znamka = 0) { // bezpecnostni korekce $id_clanek=mysql_escape_string($id_clanek); $znamka=mysql_escape_string($znamka); // inic. $hlasuj=1; // true if (isset($_COOKIE["znamkovani"])): // kdyz kontrolni cookie existuje $vstup=base64_decode($_COOKIE["znamkovani"]); $zakazna=explode(":",$vstup); $pocet_zak=count($zakazna); for ($pom=0;$pom<$pocet_zak;$pom++): if ($zakazna[$pom]==$id_clanek): $hlasuj=0; // false break; endif; endfor; if ($hlasuj==1): $str_cookie=base64_encode($vstup.":".$id_clanek); setcookie("znamkovani",$str_cookie,time()+315360000); // odeslani cookie endif; else: // kdyz kontrolni cookie neexistuje $str_cookie=base64_encode($id_clanek); setcookie("znamkovani",$str_cookie,time()+315360000); // odeslani cookie endif; if ($hlasuj==1): if ($znamka>0&&$znamka<6): // test na plastnost znamky: 1 - 5 @mysql_query("update ".$GLOBALS["rspredpona"]."clanky set hodnoceni=hodnoceni+".$znamka.", mn_hodnoceni=mn_hodnoceni+1 where link='".$id_clanek."'",$GLOBALS["dbspojeni"]); endif; endif; } include_once("trclanek.php"); $clanek = new CClanek(); $error=$clanek->NactiClanek($GLOBALS["cisloclanku"]); if ($error==1): if (TestNaOpakujiciIP('cla'.$GLOBALS["cisloclanku"],$GLOBALS['rsconfig']['cla_delka_omezeni'],$GLOBALS['rsconfig']['cla_max_pocet_opak'])==0): // navyseni pocitadla pristupu u zobrazeneho clanku mysql_query("update ".$GLOBALS["rspredpona"]."clanky set visit=(visit+1) where link='".$GLOBALS["cisloclanku"]."'",$GLOBALS["dbspojeni"]); endif; // hodnoceni clanku if (isset($GLOBALS["hlasovani"])): Znamkuj($GLOBALS["cisloclanku"],$GLOBALS["hlasovani"]); endif; if ($clanek->Ukaz("sablona")==""): // chybova hlaska: Chyba při zobrazování článku číslo XXXX! Systém nemůže nalézt odpovídající šablonu! echo "

".RS_IN_ERR1_1." ".$GLOBALS["cisloclanku"]."! ".RS_IN_ERR1_2."

\n"; else: $vzhledwebu->UlozPro("title",$clanek->Ukaz("titulek")); // tvorba stranky $vzhledwebu->Generuj(); $rs_typ_clanku="cely"; // urceni pozadovane varianty sablony include_once($clanek->Ukaz("sablona")); // vlozeni sablony $vzhledwebu->Generuj(); endif; else: // chybova hlaska: Chyba! Článek číslo XXXX neexistuje! echo "

".RS_VW_ERR2_1." ".$GLOBALS["cisloclanku"]." ".RS_VW_ERR2_2."

\n"; endif; // setrizeni komentaru function SetridKomentare($vstupnipole) { /* predpoklada se, ze vstupni pole je jiz chnologociky setrizeno -> u komentaru lze tohoto stavu docilit i setrizenim podle id - lze totiz logicky predpokladat, ze nejnizsi id patri nejdrive vlozenemu komentari, atd. $vstupnipole[X][0] - id [1] - id predka [2] - pouzito 1/0, defaulne 0 (ne) */ // inic. vstupniho pole $trizeni=0; // false if (is_array($vstupnipole)): $pocetprvku=count($vstupnipole); // pocet prvku ve vstupnim poli if ($pocetprvku>0): $trizeni=1; // true endif; endif; $polehist[0]=0; // historie prohledavani $polex=0; // akt. pozice v historii $vysledekcislo=0; // pocitadlo vyslednych radku ve vysledkovem poli // start trizeni while ($trizeni==1): $nasel=0; $aktpom=0; for ($pom=0;$pom<$pocetprvku;$pom++): if ($vstupnipole[$pom][2]==0): // kdyz nebyl akt. radek jeste pouzit if ($vstupnipole[$pom][1]==$polehist[$polex]): // kdyz nalezi hledanemu predku $aktpom=$pom; $nasel=1; break; // vyskoceni z for cyklu endif; endif; endfor; if ($nasel==1): // vysledek hledani je kladny $vysledek[$vysledekcislo][0]=$aktpom; // pridani do pole vysledku $vysledek[$vysledekcislo][1]=$polex; // od 0 vyse $vysledekcislo++; // prechod na dalsi radek ve vysledkovem poli $vstupnipole[$aktpom][2]=1; // nastaveni prepinace na pouzito $polex++; // prechod na vyssi uroven v historii $polehist[$polex]=$vstupnipole[$aktpom][0]; // nastaveni akt. hodnoty v historii else: // vysledek hledani je zaporny if ($polehist[$polex]==0): // vysledek hledani na zakladni urovni je prazdny -> neexistuje zadna dalsi vetev $trizeni=0; else: $polex--; // prechod na nizsi uroven v historii endif; endif; endwhile; /* $vysledek[X][0] - X ve vstupnim poly [1] - cislo urovne */ return $vysledek; } //zobrazeni komentaru function NovyFormKom() { // bezpecnostni korekce $GLOBALS["cisloclanku"]=mysql_escape_string($GLOBALS["cisloclanku"]); // test na existenci reg. ctenare if ($GLOBALS["prmyctenar"]->ctenarstav==1): $prctenar=$GLOBALS["prmyctenar"]->Ukaz("jmeno"); $prctenar_mail=$GLOBALS["prmyctenar"]->Ukaz("email"); else: $prctenar=''; $prctenar_mail='@'; endif; // formular pro pridani noveho komentare echo "

Komentáře k článku

".RS_KO_ZPR_JME.": 
".RS_KO_ZPR_EMAIL.": 
".RS_KO_ZPR_TIT.": 

    

".RS_KO_INFO."

\n"; } // zobrazeni vsech komentaru pridanych k vybranemu clanku function ZobrazKoKom() { // bezpecnostni korekce $GLOBALS["cisloclanku"]=mysql_escape_string($GLOBALS["cisloclanku"]); $dotaz="select idk,datum,obsah,od,od_mail,titulek,reakce_na,registrovany,reg_prezdivka from ".$GLOBALS["rspredpona"]."komentare where clanek='".$GLOBALS["cisloclanku"]."' order by idk"; $dotazkom=mysql_query($dotaz,$GLOBALS["dbspojeni"]); $pocetkom=mysql_num_rows($dotazkom); if ($pocetkom==0): // chyba - neni prirazen zadny komentar echo "

".RS_KO_NIC."

\n"; else: // prevod do pole for ($pom=0;$pom<$pocetkom;$pom++): // nacteni dat z DB $akt_pole_data=mysql_fetch_assoc($dotazkom); // pole informaci $data[$pom][0]=$akt_pole_data['idk']; // idk $data[$pom][1]=$akt_pole_data['titulek']; // titulek $data[$pom][2]=$akt_pole_data['od']; // autor $data[$pom][3]=$akt_pole_data['datum']; // datum $data[$pom][4]=$akt_pole_data['obsah']; // obsah komentare $data[$pom][5]=$akt_pole_data['od_mail']; // mail autora $data[$pom][6]=$akt_pole_data['registrovany']; // registrovany ctenar $data[$pom][7]=$akt_pole_data['reg_prezdivka']; // prezdivka registr. ctenare // pom. pole k setrideni $pomporadi[$pom][0]=$akt_pole_data['idk']; // id komentare $pomporadi[$pom][1]=$akt_pole_data['reakce_na']; // id predka komentare $pomporadi[$pom][2]=0; // nastaveni stavu radku endfor; // setrideni $poradi=SetridKomentare($pomporadi); // zjisteni maximalniho levelu $maxim_level=0; for($pom=0;$pom<$pocetkom;$pom++): if ($maxim_level<$poradi[$pom][1]): $maxim_level=$poradi[$pom][1]; endif; endfor; // preddefinovani zakladniho levelu if ($maxim_level>0): $vzhled_zakl_level=" colspan=\"".($maxim_level+1)."\""; else: $vzhled_zakl_level=""; endif; // zobrazeni komentaru echo "\n"; for($pom=0;$pom<$pocetkom;$pom++): $akt_komentar=$poradi[$pom][0]; // $poradi[$pom][0] -> obsahuje hodnotu poradi v poli $data // vypis radku echo "\n"; if ($poradi[$pom][1]==0): // zakladni level echo "',$poradi[$pom][1])."\n"; endif; echo "\n"; echo "\n"; endfor; echo "
\n"; else: // sublevel if ($poradi[$pom][1]>0): echo str_repeat('  \n"; endif; // hlavicka echo "
"; echo "".RS_KO_ZPR_ZE_DNE.": ".MyDatetimeToStd($data[$akt_komentar][3])."     "; echo "".RS_KO_ZPR_REG."
\n"; echo "".RS_KO_ZPR_AUT.": "; if ($data[$akt_komentar][6]==1): // test na registraci ctenare echo "[".$data[$pom][7]."] - ".$data[$akt_komentar][2]; else: echo RS_KO_NEREG." - ".$data[$akt_komentar][2]; endif; if ($data[$akt_komentar][5]!=''): // test na existenci e-mailu echo " (".$data[$akt_komentar][5].")"; endif; echo "
\n"; echo "".RS_KO_ZPR_TIT.": ".VycistiKoment($data[$akt_komentar][1]); echo "
\n"; // telo echo "
"; echo VycistiKoment($data[$akt_komentar][4]); echo "

\n"; echo "
\n"; endif; } ?>