<?php
/*
####################################################################
# DEBRECENI VIRTUÁLIS SZOBORPARK                                   #
# FUNCTIONS                                                        #
# gyakran használt saját függvények                                #
#                                                                  #
# (C) Debreceni Városi Könyvtár 2008.04.22.                        #
# Készítette: Lente Tamás                                          #
####################################################################
*/

// Konfigurációs adatok, ha már be lettek töltve ne töltsük újra 
if (defined("_functions")) return;
define("_functions", "1");

// Modul belinkelése a modul mappából
function module($modulnev) {
  global $mitcsinal, $al, $item, $id, $page, $galeria, $smtp, $charset;
  global $szoveg;  
  global $php;
  global $url;
  global $_style;
  global $url_style;
  global $swf;
  global $dir;
  global $images;
  global $listazando;
  global $tomb_honapok;
  global $tomb_hetnapok;  
  $_modulfile = $dir['modules']."/".$modulnev.".php";
  if (file_exists($_modulfile))
    include ($_modulfile);
  else 
    echo "<span class=\"hiba\">Hibás modul: $_modulfile !</span>\n";
}

// TESZTELÉSHEZ! átadott paramétereket képernyőre kiíró függvény 
function rinfo() {
  while (list($k, $v) = each($_REQUEST)) {
	echo "$k = $v<br>\n";
  }
}

// Lépjen kapcsolatba a program készítőjével
function contactme() {
  echo "      <div class=\"szoveg\">További információért kérjük lépjen kapcsolatba a program készítőjével: Lente Tamás ".antispambot(hyperlink(' lentet@dbvk.hu '),'link')." (20/945-8762)!</div>\n";
}

// Megadott szövegrészben szereplő www vagy http:// esetén linkként értelmezi a szöveget és külön ablakba hivatkozást készít
function find_url($string){
//"www."
   $pattern_preg1 = '#(^|\s)(www|WWW)\.([^\s<>\.]+)\.([^\s\n<>]+)#sm';
   $replace_preg1 = '\\1<a href="http://\\2.\\3.\\4" target="_blank" class="link">\\2.\\3.\\4</a>';

//"http://"
   $pattern_preg2 = '#(^|[^\"=\]]{1})(http|HTTP|ftp)(s|S)?://([^\s<>\.]+)\.([^\s<>]+)#sm';
   $replace_preg2 = '\\1<a href="\\2\\3://\\4.\\5" target="_blank" class="link">\\2\\3://\\4.\\5</a>';
   
   $string = preg_replace($pattern_preg1, $replace_preg1, $string);
   $string = preg_replace($pattern_preg2, $replace_preg2, $string);

   return $string;
}

// A megadott szövegben lévő mailto: előfordulásokat mail.php -re cseréli, és 
// az e-mail címekben a  @-ot képfájllal helyettesítve a spambot-ok elől elrejti
// stilus teruletre!
function antispambot($text, $stilus) {   
  $search_mailto  = 'mailto:';
  $search_mailto_end = '>';
  $search_a_closetag = '</a>';
  // ha találunk benne mailto: -t, akkor cseréljük 
  while (preg_match ("/$search_mailto/i", $text)) {  
    $string_mailto = strstr($text, $search_mailto);                 //a mailto: -t tartalmazó rész
    $pos = stripos($text, $search_mailto);                          //a mailto: -t tartalmazó rész pozíciója
    $pos_mailto_end = stripos($string_mailto, $search_mailto_end);  //a mailto: <a href tagjának > záró részének pozíciója
    $pos_a_closetag = stripos($string_mailto, $search_a_closetag);  //a mailto: href -et lezáró </a> pozíciója
    
    // e-mail cím meghatározása a mailto: utáni részből külön user és külön domain
    $email_address = substr($string_mailto, 0+strlen($search_mailto), $pos_mailto_end-strlen($search_mailto));    
    $email_address_user = substr($email_address, 0, strpos($email_address, '@'));
    $email_address_domain = substr($email_address, strpos($email_address, '@')+1, strlen($email_address));
    
    // Összefűzve az új  szöveg   
    $text = substr($text, 0, $pos).
            text_send_email($email_address_user, $email_address_domain, $stilus).
            substr($text, $pos+$pos_a_closetag+strlen($search_a_closetag), strlen($text));    
  }
  return $text;
}

// Megadott felhasználónév és domain-hez egyedi mail.php -t készít @-ot képre cseréli
function text_send_email($user, $domain, $stilus) {
  global $dir;
  return "\"".$dir['modules']."/mailto.php?u=$user&d=$domain\" class=\"$stilus\">$user<img src=\"images/kukac.gif\" align=\"absmiddle\" border=\"0\">$domain</a>";
}

// A megadott szövegben lévő az e-mail címből mailto linket készít 
function hyperlink($text) {
  $text = preg_replace(
   "/([\s|\,\>])([a-zA-Z][a-zA-Z0-9\_\.\-]*[a-z" .
   "A-Z]*\@[a-zA-Z][a-zA-Z0-9\_\.\-]*[a-zA-Z]{2,6})" .
   "([A-Za-z0-9\!\?\@\#\$\%\^\&\*\(\)\_\-\=\+]*)" .
   "([\s|\.|\,\<])/i",
    "$1<a href=mailto:$2>$2</a>$4",
   $text); 
  return $text;
} 

// Találati oldalakra ugrás
function talalatioldalak($ossz,$kiirt,$tovabbilink) {
   global $page,$mitcsinal,$listazando;
   $kovetkezo_oldal = $page+1;
   $elozo_oldal = $page-1;
   echo "      <div align=\"center\">\n";
  
   // Ha nem az 1. oldal akkor legyen Előző oldalra ugrás
   if ($page>1)
   	echo "        <a href=\"?do=".$mitcsinal.$tovabbilink."&page=".$elozo_oldal."\" class=\"link\">Előző oldal</a> \n";
   
   // Oldalak számának megjelenítése
   if ($ossz > $listazando) {    	
      for ($i=0; ($i*$listazando)<$ossz; $i++) {
      	$oldal = $i+1;
      	// Ha épp az aktuális oldalon vagyunk, akkor ezt linkoldal stílussal íratjuk ki
        $linkstilus = $oldal == $page ? "linkoldal" : "link"; 
        echo "        <a href=\"?do=".$mitcsinal.$tovabbilink."&page=".$oldal."\" class=\"".$linkstilus."\">".$oldal."</a> \n";          
      }
   }
   // Ha nem az utolsó oldal, akkor legyen következő oldal
   if (($kiirt == $listazando) && (($kiirt*$page) < $ossz))
      echo "        <a href=\"?do=".$mitcsinal.$tovabbilink."&page=".$kovetkezo_oldal."\" class=\"link\">Következő oldal</a>\n";
   
   echo "      </div>\n";
}

// Keresés feltételeinek megfelelően lekérdezés lefuttatása
// Ha eredménytelen --> nincs találat
// ha eredményes --> találatoklistázás
function kereses_eredmenye($lekerdezes_kapcsolo, $lekerdezes_feltetel, $tobbilink) {
  global $szoveg,$_REQUEST;
  $sql = "SELECT * FROM nezet_mualkotasok
         ".$lekerdezes_kapcsolo."
         WHERE ".$lekerdezes_feltetel."
         ORDER BY mu_cim";
  //echo $sql; // ellenőrzéshez
  $lekerdezes_alkotasok = lekerdezes($sql);
  // Ha nincs ilyen találatú rekord, akkor kiírjuk, hogy nincs
  // egyébként kiíratjuk   
  if (ossz_rekord($lekerdezes_alkotasok)>0)
    talalatok_listazasa($lekerdezes_alkotasok,$tobbilink);
  else 
    echo "      <div class=\"hiba\">".ucfirst($szoveg['hiba_nincskeresett']).".</div>\n";
}

// Megadott SQL lekérdezés Resource ID-ja alapján eredmények kilistázása
// szükség szerint többoldalra
function talalatok_listazasa($lekerdezes_alkotasok,$tobbilink) {
  global $szoveg,$listazando,$page,$mitcsinal,$dir;
  $ossz_alkotasok = ossz_rekord($lekerdezes_alkotasok);
  echo "      <div class=talalatok>\n";
  $mettol = $listazando*($page-1)+1;
  $meddig = $listazando*$page;
  if ($meddig>$ossz_alkotasok) $meddig = $ossz_alkotasok;
  echo "        ".ucfirst($szoveg['talalatok']).": $mettol - $meddig.\n";
  echo "        ".ucfirst($szoveg['ossz'])." $ossz_alkotasok db ".$szoveg['mualkotas'].".\n";
  echo "      </div>\n";
  
  // Rekordmutató beállítása a $page -ben megadott oldalszámú találati elemre
  $lekerdezes_sora = $listazando*($page-1);
  rekord_ugras($lekerdezes_alkotasok, $lekerdezes_sora);

  // A kiirt találatok száma
  $kiirt=0;
  
  // rekord elemek listázása amíg a találati lista végére nem ér vagy 
  // a kiirt elemek száma el nem éri a kilistázandó elemek számát   
  while (($_rekord = olvas_asszociativ($lekerdezes_alkotasok)) && ($kiirt < $listazando)) {
    $kiirt++;
    echo "      <div class=\"alkotas\">\n";
    // Fotó, ha van a műalkotásról, akkor az első fotóját elhelyezzük rajta
    $lekerdezes_fotok = lekerdezes("SELECT * FROM nezet_mualkotas_fotoi WHERE mu_kod = $_rekord[mu_azon]");
    if (ossz_rekord($lekerdezes_fotok)>0) {
      $rekord_fotok = olvas_asszociativ($lekerdezes_fotok);        
      $kepfile = $dir['photos']."/tn_".$rekord_fotok['foto_file'];
      $kepinfo = getimagesize($kepfile);
      $kep_x = $kepinfo[0];
      $kep_y = $kepinfo[1];
      echo "        <a href=\"?do=show&id=".$_rekord[mu_azon]."\"><img src=\"".$kepfile."\" width=\"".$kep_x."\" height=\"".$kep_y."\" class=\"kiskep\" align=\"right\"></a>";
    }
    // Mű cím kiírása
    echo "        <div class=\"mucimkicsi\">".$_rekord[mu_cim]."</div>\n";
    // Mű alcím - ha van
    if ($_rekord[mu_alcim]) 
      echo "        <div class=\"mualcim\">(".$_rekord[mu_alcim].")</div>\n";
    // Készítette, ha több van, mindet kiiírjuk!
    $lekerdezes_alkotok = lekerdezes("SELECT * FROM nezet_mualkotas_alkotoi WHERE mu_kod = $_rekord[mu_azon]");
    if (ossz_rekord($lekerdezes_alkotok)>0) {
      echo "        <div class=\"szovegbold\">".ucfirst($szoveg['keszitette']).":</div>\n";
      while ($rekord_alkotok = olvas_asszociativ($lekerdezes_alkotok)) {
        echo "        <div class=\"alkotonev\">".$rekord_alkotok[alk_nev];
        if ($rekord_alkotok[dij_nev]) echo " ".$rekord_alkotok[dij_nev]."as";
        echo "</div>\n";
      }
    }
    // Készítés dátuma
    if ($_rekord[mu_evszam]) { 
      echo "        <span class=\"szovegbold\">".ucfirst($szoveg['keszult']).": </span>\n";
      echo "        <span class=\"szoveg\">".$_rekord[mu_evszam]."</span><br>\n";
    }
    // Műalkotás lelőhelye
    echo "        <span class=\"szovegbold\">".ucfirst($szoveg['lelohely']).":</span>\n";
    echo "        <span class=\"szoveg\">".$_rekord[cim_nev]." ".$_rekord[hely_hazszam]."</span><br>\n";
    echo "        <div class=\"lelohely\">".$_rekord[helynev_nev]." ".$_rekord[pontositas]."</div>\n";
    // További részletekre a teljes műalkotás információi jelenjenek meg
    echo "        <a href=\"?do=show&id=".$_rekord[mu_azon]."\" class=\"link\"><img src=\"images/nyil_tovabb.gif\" width=\"13\" height=\"7\" align=\"absmiddle\" border=\"0\"> ".ucfirst($szoveg['tovabbireszlet'])."</a>\n";
    echo "      </div>\n";
    echo "      <hr>\n";        
  }
  
  // Találati oldalak kiírása alul        
  talalatioldalak($ossz_alkotasok,$kiirt,$tobbilink);
}

// E-mail cím ellenőrzés
// Eredeti kód: Dave Child
// http://www.phpit.net/code/valid-email/
function valid_email($email) { 
  // @ szimbólum és a hosszúságok ellenőrzése 
  if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
    // Email invalid because wrong number of characters in one section, or wrong number of @ symbols. 
    return false; 
  } 
  // Split it into sections to make life easier 
  $email_array = explode("@", $email); 
  $local_array = explode(".", $email_array[0]); 
  for ($i = 0; $i < sizeof($local_array); $i++) { 
     if (!ereg("^(([A-Za-z0-9!#$%&#038;'*+/=?^_`{|}~-][A-Za-z0-9!#$%&#038;'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) { 
      return false; 
    } 
  }   
  if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name 
    $domain_array = explode(".", $email_array[1]); 
    if (sizeof($domain_array) < 2) { 
        return false; // Not enough parts to domain 
    } 
    for ($i = 0; $i < sizeof($domain_array); $i++) { 
      if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) { 
        return false; 
      } 
    } 
  } 
  return true; 
} 
// Eddig tart az e-mail ellenőrző programrész

?>

