<?

/*******************************

	V�ltoz�s eset�n verzi� sz�m kell:
	Aktu�lis verzi� 0.5
	utols� m�dosit�s: 2008.03.21

	v�ltoz�sok:
	- getPictures() kieg�sz�tve getPictureLabel()-el
	- kontruktor megh�vhat� param�ter n�lk�l is: folderek list�z�s�hoz


	Hogy mukodik?

	folder strukt�ra

	I) 		IMAGE_GAL hogy hol t�roljuk a k�pgal�ri�kat
	II) 	benne folderek
	III)  	folderekben f�jlok, de egy thumbnail folder felel�s a kisk�pek�rt
	IV) 	teljes site-re el�rhet� gal�ri�val dolgozik (nincs userenk�nti megk�l�nb�ztet�s)
	V) 		thumname jele:   PICNAME_t.EXT

	gel�ri�ra vonatkozik

	A) kiolvassa (IMAGE_GAL path alapj�n) a k�pgal�ri�kat
	B) f�k�pet kiolvas
	C) gal�ri�nak nevet ment
	D) gal�ri�b�l kiolvassa a k�peket, �s thumbnaileket gy�rt hozz�juk ha nem lenne
	E) gal�ri�ba k�pet t�lt fel
	F) gal�ri�t felvesz, let�r�l, sz�neteltet
	G) k�pgal�ri�kat list�z adataival (neve, f�k�p, k�pek sz�ma, folder m�ret)

	k�pekere vonatkozik

	1. felolvassa folderb�l a k�peket
	2. a k�pekhez labelt ment
	3. kiolvassa labeleket
	4. k�psorrendet �llit
	5. k�pet felt�lt, let�r�l
	6. f�k�pet be�llit
	7. LEHET vizjelezni a k�peket, egy k�pre t�bbet is, gal�ri�nk�nt elt�r�en


*******************************/

class gallery{

	var $folder_thumbnail_name='thumb/';
	var $folder_watermark_name='watermark/';
	var $default_inactive=1; 			// minden FTP felt�lt�s alapb�l aktiv vagy sem?
	var $get_inactive=1; 				// list�zza-e az inakt�v gal�ri�kat?
	var $folder;						// getGalleryList ciklus k�reib�l
	var $picture;						// ciklusonk�nti k�pek elt�rol�sa
	var $no_db;							// ne haszn�ljon adatb�zist a gal�ria folderekhez
	var $getlabel;
	var $get_thumbnail_from_folder;		// galleryList: folder els� k�p�t haszn�lja thumbnailk�nt
	var $path_gallery;					// gallery gy�kere

	var $pic_thumbnail_width=100;
	var $pic_thumbnail_height=75;
	var $pic_thumbnail_quality=80;

	var $pic_medium_width=200;
	var $pic_medium_height=130;
	var $pic_medium_quality=70;

	var $handleoriginal=1; // lekezelj�k az eredeti felt�tl�st vagy sem
	var $pic_large_width=700;
	var $pic_large_height=500;
	var $pic_large_quality=100;
	var $watermark_margin=10;
	var $watermarked_size; // construki

	var $smarty_folder = "gallery/";

	var $fontpath; // itt lesz a betutipus

	var $captcha=array(
		lenght=>5, // hany karakter legyen
		width=>120,
		height=>35,
		char=>'aabceefjkmprstuuvwxyz23456789'

	);
	var $picture_extensions=array(
		'jpg','jpeg','gif','png','bmp'
	);

	// �tn�zve

function gallery($folder=''){

	global $SITEGLOBALS;

	$this->watermarked_size=array(x=>$this->pic_large_width,y=>$this->pic_large_height);

	if($captcha_overwrite=$SITEGLOBALS[CAPTCHA]){
		foreach($captcha_overwrite as $key => $item){
			$this->captcha[$key]=$item;
		}
	}
	//echo "<pre>";print_r($this->captcha);

	$this->fontpath=PATH_SERVER."fonts/arialhunormal.ttf";

	if($gc=$SITEGLOBALS[GALLERY_CONFIG]) foreach($gc as $k=>$v) {
		$this->$k=$v;
	}

	if($folder){
		$this->root_folder = $this->folder = "$folder/"; // relative �tvonal, lehet leadni a template-nek
	}
	$this->webpath_gallery=IMAGE_GALLERY;
	$this->path_gallery=PATH.IMAGE_GALLERY; // gallery gy�kere
	$this->path_video=PATH.VIDEO_GALLERY; // gallery gy�kere
}

function getGalleryList($full_gallery=false){

	global $SITEGLOBALS;

	// minden gal�ri�t kiolvas minden adat�val
	$root=$this->path_gallery.$this->root_folder;

	$i=0;
	if(is_dir($root) && ($handle=opendir($root))) {
		while($dir=readdir($handle)) {
			if(is_dir($root.$dir) && $dir!='.' && $dir!='..'){

				$this->folder=$this->root_folder.$dir;
				$data = !$this->no_db
					? $this->getGalleryData(utf8_decode($this->folder),$full_gallery)
					: array(folder=>$this->folder);
				if($this->get_thumbnail_from_folder) {
					// folder els� k�p�t haszn�lja thumbnailk�nt
					if(@$handle1=opendir($root.$this->folder)) {
						do {
							$file=readdir($handle1);
							
						} while( is_dir("$root$this->folder/$file")  );
						closedir($handle1);

						$fd=@GetImageSize("$root$this->folder/$file");
						$tmp=array(pic=>$file,x=>$fd[0],y=>$fd[1]);
						$this->checkThumbnail($tmp);

						$data[thumb]=$this->getThumbname($file);
					}
				}
				if(!$data[inactive] || $this->get_inactive) {
					// ha nincs felv�ve a t�bl�ba
					if($data[folder]=='/') $data[inactive]=$this->default_inactive;
					//$data[folder]=$dir; // ez kuka mer a getGalleryData m�r nem null�zza ki (k�rdezi le) a foldert
					$data[folder_name]=utf8_decode($dir).'/'; // ez csak gui-ra kell
					$data[folder_iconv]=iconv('utf-8','iso-8859-2',$dir); // ez csak gui-ra kell
					$data[date]=date("Y-m-d",filemtime($root.$dir));
					$fmtime=filemtime($root.$dir);
					if(is_array($dirs) && key_exists($fmtime,$dirs)) $fmtime++;
					$dirs[$fmtime]=$data;
				}
			}
			if($this->limit_folder>0) if($this->limit_folder < $i){ break; }
			$i++;
		}
		closedir($handle);
	}

	if(is_array($dirs)) krsort($dirs);

	return $dirs;

}
function getGalleryData($folder,$full_gallery=false){

	global $dbi;

	$sql="select gallery_id,gallery_name,gallery_description, inactive from gallery where gallery_folder='$folder'";
	$res=sql_query($sql,$dbi);
	list($id,$name,$desc,$inactive)=sql_fetch_array($res,$dib);
	if($full_gallery) $pics=$this->getPictures();
	else{
		$count=$this->countImages();
		// lehet random keresni f�k�pet, ha nem lenne
		if($count) {
			$main=$this->getMainImage($id,1);
			$main_pic=$this->folder_thumbnail_name.$this->getThumbname($main);
		}
	}
	$folder_iconv=iconv('utf-8','iso-8859-2',$folder); // ez csak gui-ra kell
	$list=compact(id,folder,folder_iconv,name,desc,inactive,count,main_pic,main_pic_real,pics);

	return $list;
}

function getVideoFolders(){

			$path=$path=$this->path_video;
			$h1=opendir($path);
			while($dir=readdir($h1)) {
				if(is_dir($path.$dir) && $dir!='.' && $dir!='..'  && $dir!='.svn'){
					$h2=opendir($path.$dir);
					unset($vpics);
					while($file=readdir($h2)) {
						if(strtolower(strrchr($file,'.'))=='.jpg') {
							//$file=iconv('utf-8','iso-8859-2',$file);
							$vpics[]=$file;
						}
					}
					closedir($h2);
					$pic=$vpics[@array_rand($vpics)];
					$date=filemtime($path.$dir);
					$alldirs[ $date ]=array(folder=>$dir, folder_name=>iconv('utf-8','iso-8859-2',$dir), pic=>$pic, date=>date("Y-m-d",$date));

				}
			}
			closedir($h1);

		if(is_array($alldirs)) krsort($alldirs);
		//echo "<pre>";print_r($alldirs);
		return $alldirs;

}

function getVideoFolderData($folder){

			$path=$this->path_video.$folder."/";
			$folder_iconv=iconv('utf-8','iso-8859-2',$folder);
			$path_iconv="$folder_iconv/";
			$h=opendir($path);
			while($file=readdir($h)) {
				if(is_file("$path$file")) {
					if(($ext=strrchr($file,'.'))=='.flv') {
						$file=iconv('utf-8','iso-8859-2',$file);
						//$file=.$file;//str_replace($ext,'',$file);
						$videos[]=array(video=>$file,path=>VIDEO_GALLERY.$path_iconv,pic=>str_replace($ext,'.jpg',$file));
					}
				}
			}
			closedir($h);
		//echo "<pre>";print_r($videos);
		return $videos;
}



/**
  * switch image order
  *
  * @param integer $product_id product id
  * @param integer $id1 image id
  * @param string $direction direction of switching
  * @param string $table name of tabel, default: image_products
  */

function switchImages($id, $id1, $direction, $table = 'image_products',$typefield = 'product_id') {
	global $dbi;
	if($direction=='up') {
		$rel='<'; $ord='desc';
	}else{
		$rel='>'; $ord='asc';
	}
	$tableid=$table."_id";
	$sql="select pos from $table where $typefield=$id and $tableid=$id1";
	$res=sql_query($sql,$dbi);
	list($pos1)=sql_fetch_array($res,$dbi);

	$sql="select $tableid,pos from $table where $typefield=$id and pos$rel$pos1 order by pos $ord limit 1";
	$res=sql_query($sql,$dbi);
	list($id2,$pos2)=sql_fetch_array($res,$dbi);

	$sql="update $table set pos=$pos2 where $typefield=$id and $tableid=$id1";
	sql_query($sql,$dbi);
	$sql="update $table set pos=$pos1 where $typefield=$id and $tableid=$id2";
	sql_query($sql,$dbi);
}


function countImages(){

	return sizeof($this->getPictures());

}
function getPictures(){
	$path_images=$this->path_gallery.$this->folder.'/';

	if ($handle = opendir($path_images)) {
		while($file = readdir($handle)) {
			if(is_file($path_images.$file)){

				//echo "<br>K�P->  ".$path_images.$file;

				if ($path_images!=".svn")
				{
					$fd=@GetImageSize($path_images.$file);
					if($this->getlabel) $label=$this->getPictureLabel($file);
					$tmp=array(pic=>$file,x=>$fd[0],y=>$fd[1],label=>$label,thumb=>$this->getThumbname($file), folder=>$this->folder);
					$this->checkThumbnail($tmp);
					$files[]=$tmp;
				}
			}
		}
		closedir($handle);
	}

	//if($files) asort($files);

	//echo "<pre>";print_r($files);//exit;
	$this->pictures=$files;

	return $files;
}
function getThumbname($pic){

	$pic_ext=$this->getPictureExtension($pic);
	$pic_name=str_replace($pic_ext,'',$pic);
	$pic_name=str_replace('.','',$pic_name);
	return $pic_name."_t.".$pic_ext;

}
function checkThumbnail($data){

	$pic=$data[pic];

	// ha nem kep
	if(!in_array($this->getPictureExtension($pic),$this->picture_extensions)){
		return true;
	}

	$this->checkThumbnailFolderExists();

	$file_t=$this->getThumbname($pic);

	$dest_file=$this->path_gallery.$this->folder."/".$this->folder_thumbnail_name."/".$file_t;

	if(file_exists($dest_file))
		return false;
	else
		fclose(fopen($dest_file,"a+"));

	//echo "dest_file=>$dest_file";//exit;

	$quality=$this->pic_thumbnail_quality;
	$tn_size=$this->resize($data[x],$data[y],$this->pic_thumbnail_width,$this->pic_thumbnail_height);

	$image_big = imagecreatefromjpeg($this->path_gallery.$this->folder."/".$data[pic]);
	$image_small = imagecreatetruecolor($tn_size[x], $tn_size[y]);
	imagecopyresampled($image_small, $image_big, 0, 0, 0, 0, $tn_size[x], $tn_size[y], $data[x], $data[y]);
	imagedestroy($image_big);
	imagejpeg($image_small, $dest_file, $quality);
	//imagedestroy($image_small);

}
function deleteThumbnailFolder($thumb_folder){

		// t�rli a kisk�peket
		$list=$this->getPictures();
		if(is_array($list)) foreach($list as $item){
			$thumb="$thumb_folder/".$item[thumb];
			echo $thumb."  <----- <br>";
			if(file_exists($thumb)) unlink($thumb);
			rmdir($thumb_folder);
		}

}
function checkThumbnailFolderExists(){

	// ellen�rizni a thumbnail foldert adott gal�ri�ban
	$thumb_folder=$this->path_gallery.$this->folder."/".$this->folder_thumbnail_name;
	//echo "<br>thumb=> ".$thumb_folder."<br>";
	if(!file_exists($thumb_folder)) mkdir($thumb_folder);
	else{
		//echo"<br>VAN thumbnail folder!<br>";
		//$this->deleteThumbnailFolder($thumb_folder);
	}
}
function saveWatermark($placement,$global=false){

	global $dbi;
	//if(!$this->folder) return false;

	if($global)
		$w_folder=PATH.SITE_WATERMARK;
	else
		$w_folder=$this->path_gallery.$this->folder."/".$this->folder_watermark_name;

	$this->createWatermarkFolder($w_folder);
	if($global) $this->deleteGlobalWatermark($w_folder);

	// �jak felv�tele
	$ext=$this->getPictureExtension($_FILES[watermark][name]);
	move_uploaded_file($_FILES[watermark][tmp_name],"$w_folder$placement.$ext");

	//adatb�zis t�rl�s �s  ment�s
}

function createWatermarkFolder($w_folder){
	if(!file_exists($w_folder)){
		mkdir($w_folder);
		chmod($w_folder,0775);
	}
}

function getWatermarks($w_folder='') {
	if(!$w_folder) {
		$w_folder=$this->folder.$this->folder_watermark_name;
		$path=$this->path_gallery.$w_folder;
	}else{
		$path=PATH.$w_folder;
	}

	if(!$this->color) $this->color='fa0';
	if(!is_dir($path)) return;

	if ($handle = opendir($path)) {
		while (false !== ($file = readdir($handle)))
			if(is_file($path.$file))
				$files[]=array(pic=>$file, place=>$this->cropPictureExtension($file));
		closedir($handle);
	}
	$this->watermark_folder=$w_folder;
	return $files;
}

function deleteGlobalWatermark($w_folder){
	$files=$this->getWatermarks(SITE_WATERMARK);
	if($files[0][pic]) unlink(PATH.SITE_WATERMARK.$files[0][pic]);
}

function deleteWatermark($pic) {
	unlink(PATH.SITE_WATERMARK.$pic);
}

function getFreeWatermarkPlacements($global=false) {
	if(!$global) {
		// global v�zjel lefoglal�sa
		$files=$this->getWatermarks(SITE_WATERMARK);
		$place=$files[0][place];
		$reserved[$place]=1;
		// gal�ria v�zjeleinek lefoglal�sa
		$files=$this->getWatermarks();
		if($files) foreach($files as $f) {
			$place=$f[place];
			$reserved[$place]=1;
		}
	}

	for($i=0;$i<=2;$i++) {
		for($j=0;$j<=2;$j++) {
			$v++;
			if($reserved[$v]) $a[$i][$j]=0;
			else $a[$i][$j]=$v;
		}
	}
	return $a;
}

function putWatermarked($pic) {

	$file=$this->path_gallery.$this->folder.$pic;
	$ext=$this->getPictureExtension($pic);

	switch($ext) {
		case "jpeg":
		case "jpg": $src_image=imagecreatefromjpeg($file); break;
		case "png": $src_image=imagecreatefrompng ($file); break;
		case "gif": $src_image=imagecreatefromgif ($file); break;
		case "bmp": return false;
	}

	$src_x=imagesx($src_image);
	$src_y=imagesy($src_image);

	//dobozra m�retez�s
	$size=$this->resize($src_x,$src_y,$this->watermarked_size[x],$this->watermarked_size[y]);
	$x=$size[x];
	$y=$size[y];

	$image=imagecreatetruecolor($x,$y);
	imagecopyresampled($image, $src_image, 0, 0, 0, 0, $x, $y, $src_x, $src_y);
	imagedestroy($src_image);

	// v�zjelek kigy�jt�se
	if(!$watermarks=$this->watermarks) {
		$watermarks=$this->getWatermarks(); $w_folder=$this->path_gallery.$this->watermark_folder;
		$watermarks_global=$this->getWatermarks(SITE_WATERMARK); $w_global_folder=PATH.$this->watermark_folder;
		if($wg=$watermarks_global[0]) $watermarks['global']=$wg;
	}

	$wm=$this->watermark_margin;

	if($watermarks) foreach($watermarks as $wkey=>$w) {
		$w_file=($wkey==='global' ? $w_global_folder : $w_folder).$w[pic];
		$w_ext=$this->getPictureExtension($w[pic]);

		switch($w_ext) {
			case "jpeg":
			case "jpg": $w_image=imagecreatefromjpeg($w_file); break;
			case "png": $w_image=imagecreatefrompng ($w_file); break;
			case "gif": $w_image=imagecreatefromgif ($w_file); break;
			case "bmp": return false;
		}

		$wp=$w[place];
		$wx=imagesx($w_image);
		$wy=imagesy($w_image);

		if($wp%3==1)     $wposx=$wm;
		elseif($wp%3==0) $wposx=$x-$wx-$wm;
		else             $wposx=floor($x/2-$wx/2);

		if($wp<4)     $wposy=$wm;
		elseif($wp>6) $wposy=$y-$wy-$wm;
		else          $wposy=floor($y/2-$wy/2);

		imagecopy($image, $w_image, $wposx, $wposy, 0, 0, $wx, $wy);
		imagedestroy($w_image);
	}

	if(!$this->watermark_write_to_file){
		// ez kidobja a kepernyore
		header("content-type: image/jpeg");
		imagejpeg($image, '', $this->pic_large_quality);
		imagedestroy($image);
	}else{
		// ez meg vissza kellene adja fajlba
		imagejpeg($image, $file, $this->pic_large_quality);
		imagedestroy($image);
	}

	//echo "<pre>";print_r($watermarks);
}


function getPictureLabel($image){

	global $dbi;

	$sql="select image_label from gallery_images where image_name='$image'";
	$res=sql_query($sql,$dbi);
	list($label)=sql_fetch_array($res,$dbi);

	return $label;

}
function getMainImage($gallery_id,$random=''){

	// ha nincs v�lasztott f�k�p, akkor r�b�k�nk egyre
	// fent van $this->picture oszt�ly v�ltoz�ban
	$rnd=rand(0,count($this->pictures)-1);
	//echo count($this->pictures)." -> ".$rnd."<br><pre>";
	//print_r($this->pictures);
	$rnd=$this->pictures[$rnd][pic];

	if(!$gallery_id && $random) return $rnd;

	global $dbi;

	$sql="select image_name from gallery_images where image_main=1 and gallery_id=$gallery_id";
	$res=sql_query($sql,$dbi);
	list($pic)=sql_fetch_array($res,$dbi);

	if($random && !$pic){
		$pic=$rnd;
		$this->main_real=null;
	}
	else $this->main_real=$pic;

	return $pic;
}
function saveGalleryData($folder,$field,$value) {
	global $dbi;

	$data=$this->getGalleryData($folder);
	if($data[id])
		$sql="update gallery set $field='$value' where gallery_folder='$folder'";
	else
		$sql="insert into gallery (gallery_folder,$field) values ('$folder','$value')";
	sql_query($sql,$dbi);
}

function saveNewGallery($post,$folder_parent='') {
	global $dbi;
	extract($post);

	if(!$folder) {
		//ha nincs foldern�v, labelb�l lesz
		global $SITEGLOBALS;
		$folder=str_replace($SITEGLOBALS[REPLACE_CHARS][mit],$SITEGLOBALS[REPLACE_CHARS][mire],$label);
	}

	if($folder_parent) {
		$path_folder_parent=$this->path_gallery.$folder_parent;
		if(!is_dir($path_folder_parent)) {
			mkdir($path_folder_parent);
			chmod($path_folder_parent,0775);
		}

		$folder="$folder_parent/$folder";
	}

	$path_folder=$this->path_gallery.$folder;
	mkdir($path_folder);
	chmod($path_folder,0775);

	$sql="insert into gallery (gallery_folder,gallery_name,gallery_description,inactive) ".
		"values ('$folder','$label','$description',0)";
	sql_query($sql,$dbi);

}

function cropPictureExtension($file) {
	$ext=strrchr($file,'.');
	return str_replace($ext,'',$file);
}
function getPictureExtension($file){
	$ext=strrchr($file,'.');
	return strtolower(str_replace('.','',$ext));
}


function saveLabel($gallery_id,$image,$label){
	global $dbi;
	$where="where image_name='$image' and gallery_id='$gallery_id'";

	$sql="select image_name from gallery_images $where";
	$res=sql_query($sql,$dbi);
	list($image_van)=sql_fetch_array($res,$dbi);

	if(!$image_van){
		$sql="insert into gallery_images (gallery_id,image_name,image_label) values ('$gallery_id','$image','$label')";
	}else{
		$sql="update gallery_images set image_label='$label' $where";
	}
	sql_query($sql,$dbi);
}

function saveMain($gallery_id,$image){
	global $dbi;
	$where="where image_name='$image' and gallery_id='$gallery_id'";

	$sql="select image_name from gallery_images $where";
	$res=sql_query($sql,$dbi);
	list($image_van)=sql_fetch_array($res,$dbi);

	$sql="update gallery_images set image_main=0 where gallery_id='$gallery_id'";
	sql_query($sql,$dbi);

	if(!$image_van){
		$sql="insert into gallery_images (gallery_id,image_name,image_main) values ('$gallery_id','$image',1)";
	}else{
		$sql="update gallery_images set image_main=1 $where";
	}
	sql_query($sql,$dbi);
}


		// �tn�zni

function getPicturesFromTableOLDSTURKT($limit=9999,$random=false){

	global $dbi;

	if($random) $order='rand(id)'; else $order='pos';

	$sql="select id,ext,label,url,pos from image_gallery order by $order";
	$res=sql_query($sql,$dbi);
	while(list($id,$ext,$label,$url,$pos)=sql_fetch_array($res,$dbi)){
		$pic=$this->makeFileNames($id,$ext);
		$picpath=GALLERY_IMAGES.'/'.$pic[pic];
		if(file_exists($picpath)) $size=getimagesize($picpath);
		$orient=$size[0]>$size[1]?'x':'y';
		$data[]=array(id=>$id,pic=>$pic, orient=>$orient, label=>$label, url=>$url);
	}
	return $data;
}

function getPicturesFromTable($limit=9999,$random=false){

	global $dbi;

	if($random) $order='rand(id)'; else $order='image_pos';

	$sql="select image_name,image_ext,image_label,product_url,image_pos from gallery_images order by $order";
	$res=sql_query($sql,$dbi);
	while(list($name,$ext,$label,$url,$pos)=sql_fetch_array($res,$dbi)){
		$picpath=GALLERY_IMAGES.'/'.$name;
		if(file_exists($picpath)) $size=getimagesize($picpath);
		$orient=$size[0]>$size[1]?'x':'y';
		$data[]=array(pic=>$name, orient=>$orient, label=>$label, url=>$url);
	}
	return $data;
}

function saveNewImage($post) {
	global $dbi;

	$sql="select max(id),max(pos) from gallery_images";
	$res=sql_query($sql,$dbi);
	list($id,$pos)=sql_fetch_array($res,$dbi);
	$id++;
	$pos+=5;

	$this->uploadGalleryPic($id);

	$sql="insert into image_gallery (type,ext,label,url,pos) values ('$post[type]','$this->ext','$post[label]','$post[url]','$pos')";
	sql_query($sql,$dbi);

}
function deletePictureFromTable($id){
	global $dbi;

	$sql="select ext from image_gallery where id=$id";
	$res=sql_query($sql,$dbi);
	list($ext)=sql_fetch_array($res,$dbi);

	$pic=$this->makeFileNames($id,$ext);
	@unlink($this->path_gal.$pic[pic]);
	@unlink($this->path_gal.$pic[thumb]);

	$sql="delete from image_gallery where id=$id";
	sql_query($sql,$dbi);

	$sql="select max(id) from image_gallery";
	$res=sql_query($sql,$dbi);
	list($next_id)=sql_fetch_array($res,$dbi);
	$next_id++;

	$sql="alter table image_gallery auto_increment=$next_id";
	sql_query($sql,$dbi);
}
function uploadGalleryPic($id) {
	$files=$this->makeFileNames($id);
	// ezt kintr�l kapja, mert a tagok a users mapp�ban vannak
	$params=array(dst_file_name=>$this->path_gal.$files[pic]);
	$this->uploadPicture($params);
}
function makeFileNames($id,$ext='jpg',$nothumb=false) {
	while(strlen($id)<6) $id="0$id";
	$pic="g$id";
	if($nothumb) return $pic;
	$ext='.'.$ext;
	$thumb=$pic.'_t'.$ext;
	return array(pic=>$pic.$ext, thumb=>$thumb);
}
function switchPictures($id1,$id2) {
	global $dbi;

	$sql="select pos from image_gallery where id=$id1";
	$res=sql_query($sql,$dbi);
	list($pos1)=sql_fetch_array($res,$dbi);

	$sql="select pos from image_gallery where id=$id2";
	$res=sql_query($sql,$dbi);
	list($pos2)=sql_fetch_array($res,$dbi);

	$sql="update image_gallery set pos=$pos2 where id=$id1";
	sql_query($sql,$dbi);
	$sql="update image_gallery set pos=$pos1 where id=$id2";
	sql_query($sql,$dbi);
}

function deletePicture($gallery_id,$folder,$pic) {
	global $dbi;
	$folder.='/';

	$sql="delete from gallery_images where gallery_id='$gallery_id' and image_name='$pic'";
	sql_query($sql,$dbi);

	$thumb=$this->getThumbname($pic);
	 unlink($this->path_gallery.$folder.$pic);
	@unlink($this->path_gallery.$folder.$this->folder_thumbnail_name.$thumb);
}

function resize($src_x,$src_y,$to_x,$to_y){
	/*echo"scr_x $src_x<br>";
	echo"scr_y $src_y<br>";
	echo"to_x $to_x<br>";
	echo"to_y $to_y<br>";*/
	if($to_x && $to_y) {
		if($to_x<$src_x || $to_y<$src_y) {
			if($src_x/$src_y > $to_x/$to_y) $dst_x=$to_x; else $dst_y=$to_y;
			if($dst_x) $dst_y=round($dst_x*$src_y/$src_x);
			else       $dst_x=round($dst_y*$src_x/$src_y);
		}
		else $no_resize=true;
	}
	elseif($to_x && !$to_y) {
		if($to_x<$src_x) {
			$dst_x=$to_x;
			$dst_y=round($src_y*$to_x/$src_x);
		}
		else $no_resize=true;
	}
	elseif(!$to_x && $to_y) {
		if($to_y<$src_y) {
			$dst_y=$to_y;
			$dst_x=round($src_x*$to_y/$src_y);
		}
		else $no_resize=true;
	}
	else $no_resize=true;

	if($no_resize) {$dst_x=$src_x; $dst_y=$src_y;}

	$d=array(x=>$dst_x,y=>$dst_y);
	//echo "<pre>";print_r($d);
	return $d;
}

function uploadPicture($params) {

	extract($params);

	// v�ltoz�t kre�l
	// kiterjeszt�st kiolvas
	if($src_file) {
		$src_ext=$this->getPictureExtension($src_file);
	}else{
		$src_file=$_FILES['image']['tmp_name'];
		$src_ext=$this->getPictureExtension($_FILES['image']['name']);
	}
	$scr_ext=strtolower($scr_ext);

	if(!($x || $y || $dst_ext)) {
		move_uploaded_file($_FILES['image']['tmp_name'],"$dst_file_name.$src_ext");
		$this->ext=$src_ext;
		return;
	}

	list($src_x,$src_y) = getimagesize($src_file);

	//src_image l�trehoz�sa
	switch($src_ext) {
		case "jpeg":
		case "jpg": $src_image=imagecreatefromjpeg($src_file); break;
		case "png": $src_image=imagecreatefrompng ($src_file); break;
		case "gif": $src_image=imagecreatefromgif ($src_file); break;
		case "bmp": return false;
	}

	//�tm�retez�s
	$dst_size=$this->resize($src_x,$src_y,$x,$y);

	//dst_image l�trehoz�sa
	if(!$dst_ext) $dst_ext=$src_ext;

	$dst_image=imagecreatetruecolor($dst_size[x],$dst_size[y]);

	if($src_image){

		if($dst_ext!='gif')
			imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $dst_size[x], $dst_size[y], $src_x, $src_y);
		else
			imagecopyresized($dst_image, $src_image, 0, 0, 0, 0, $dst_size[x], $dst_size[y], $src_x, $src_y);

		imagedestroy($src_image);
	}

	//dst_file ment�se
	$dst_file="$dst_file_name.$dst_ext";

	if(!$quality) $quality=75;
	switch($dst_ext) {
		case "jpg":
		case "jpeg":	imagejpeg($dst_image, PATH.$dst_file, $quality); break;
		case "png":		imagepng ($dst_image, PATH.$dst_file); break;
		case "gif":		imagegif ($dst_image, PATH.$dst_file); break;
	}
	imagedestroy($dst_image);
	$this->ext=$dst_ext;
	return "$dst_file_name.$dst_ext";
}

function imageTypes() {
	return array('jpeg','jpg','png','gif');
}

function fileTypes() {
	return array_merge(
		$this->imageTypes(),
		array('pdf','doc','xls','txt','zip','rar','avi','mpg','mpeg','wmv','mp4')
	);
}


function getCaptchaCode($session_id) {
	global $dbi;
	$sql="select captcha_code from session where session_id='$session_id'";
	$res=sql_query($sql,$dbi);
	list($code)=sql_fetch_array($res,$dbi);
	return $code;
}

function generateCaptcha($session_id){

	// kod
	global $dbi;


	for($i=0;$i<$this->captcha[lenght];$i++){
		$code.=$this->captcha[char][rand(0,strlen($this->captcha[char])-1)];
	}

	$sql="update session set captcha_code='$code' where session_id='$session_id'";
	sql_query($sql,$dbi);

	// kep
	$x=$this->captcha[width]; $y=$this->captcha[height];

	// betumeret
	$fontheight=round($x/7.3);

	$code=$this->getCaptchaCode($session_id);

	// ha kell kepre tenni akkor mehet
	if($this->captcha[bck]){
		$im=imagecreatefrompng($this->captcha[bck]);
		$color[]=imagecolorallocate($im,32,72,176);
		$color[]=imagecolorallocate($im,65,73,79);
	}else{
		$im=imagecreatetruecolor($x,$y) or die("Cannot Initialize new GD image stream");

		// rajzolunk vonalakat bele
		$bg=imagecolorallocate($im,244,244,244);
		imagefilledrectangle($im,0,0,$x-1,$y-1,$bg);

		$lcolor[]=imagecolorallocate($im,130,163,198);
		$lcolor[]=imagecolorallocate($im,93,135,233);
		$color[]=imagecolorallocate($im,65,73,79);
		$color[]=imagecolorallocate($im,32,72,176);
		for($i=0;$i<9;$i++) {
			imageline($im,rand(0,10),rand(0,$y-1),rand($x-11,$x-1),rand(0,$y-1),$lcolor[$i%2]);
		}
	}

	$font=$this->fontpath; //imageloadfont("Image/site/dreamofme.gdf");

	for($i=0;$i<strlen($code);$i++) {
		$col=$code[$i]>0?1:0;
		$x_offset=rand(3,10);
		$y_offset=rand(-6,6);
		$angle=rand(-20,20);
		//imagechar($im,$font,$i*17+$x_offset,$y_offset,$code[$i],$color[$col]);
		imagettftext($im,$fontheight,$angle,$x*($fontheight/300)+$i*($fontheight/0.9)+$x_offset,$y/1.5+$y_offset,$color[$col],$this->fontpath,$code[$i]);
	}
	header("Content-type: image/png");
	imagepng($im);
	imagedestroy($im);

	$this->code=$code;
}

}
?>