<?php
//=================================================================
// KOOBI R7 - CMS - PORTALSOFTWARE(c) DREAM4(r) 
// HTTP://WWW.DREAM4.DE
//=================================================================
// ACHTUNG!
// DIESER PROGRAMMCODE IST URHERRECHTLICH GESCHUETZT
// DIE URHEBERRECHTE LIEGEN BEI DEN JEWEILIGEN AUTOREN.
// AENDERUNGEN IN DIESER DATEI ERFOLGEN AUF EIGENE GEFAHR!
// ES IST NICHT GESTATTET, DEN COPYRIGHTHINWEIS ZU AENDERN ODER ZU
// ENTFERNEN. NUR WENN SIE EINE COPYRIGHTHINWEIS-ENTFERNUNG BESTELLT
// HABEN, DUERFEN SIE DIESEN ENTFERNEN.
//================================================================
// BEI FRAGEN WENDEN SIE SICH BITTE AN: KONTAKT@DREAM4.DE
//=================================================================
class Comments
{
	function CheckScode($oext='',$valid='')
	{
		$valid = 'false';
		$scode  = (isset($_REQUEST['scode']) && !empty($_REQUEST['scode'])) ? $_REQUEST['scode'] : '';
		
		if($scode!='') 
		{
			if($scode!=$_SESSION['comment_secure_result'])
				$valid = 'false';
			else
				$valid = 'true';
		}
		echo @$valid;
	}
	
	function switchOnline($id,$bereich)
	{
		if(!permission('edit_comments')) exit;
		$GLOBALS['db']->RowQuery("UPDATE " . PREFIX . "_kommentare SET Aktiv = '1' WHERE Id = '$id'");
		
		Logger('User ' . $_SESSION['user_name'] . ' moderates comment.', '', $_SESSION['benutzer_id']);
		$back = str_replace('&amp;','&',$_SERVER['HTTP_REFERER']);
		refer($back . '#comments');
		exit;
	}
	
	function CommentCount($bereich,$objekt_id)
	{
		$num_sql = $GLOBALS['db']->RowQuery("SELECT COUNT(Id) AS Anzahl FROM " . PREFIX . "_kommentare WHERE  Bereich = '$bereich' AND Objekt_Id = '$objekt_id' AND Aktiv = '1'");
		$num = $num_sql->Anzahl;
		return $num;
	}
	
	function GetComments($bereich,$objekt_id,$navlink,$guestbook='',$entries='')
	{
		$ga = ($guestbook==1) ? 'guestbook' : 'comments';
		if(get_active($ga))
		{
		
			$db_active = (permission('edit_comments')) ? "" : "AND Aktiv = '1'";
			$num_sql = $GLOBALS['db']->RowQuery("SELECT COUNT(Id) AS Anzahl FROM " . PREFIX . "_kommentare WHERE  Bereich = '$bereich' AND Objekt_Id = '$objekt_id' {$db_active}");
			$num = $num_sql->Anzahl;
			$limit = $GLOBALS['settings']['Kommentare_Seite'];
			$seiten = ceil($num / $limit);
			$a = prepage() * $limit - $limit;
			
			$eintrag = array();
			
			$gb_sql = $GLOBALS['db']->Query("SELECT * FROM " . PREFIX . "_kommentare WHERE  Bereich = '$bereich' AND Objekt_Id = '$objekt_id' {$db_active} ORDER BY Id DESC LIMIT $a,$limit");
			while($_comment = $gb_sql->fetcharray())
			{
				$_comment['Eintrag_Raw'] = $_comment['Eintrag'];
				
				if (BBCODESITE == 1)
				{
					$_comment['Eintrag'] = pre_kcodes($_comment['Eintrag'], '', 1);
				} else {
					$_comment['Eintrag'] = koobispecialchars($_comment['Eintrag']);
					$_comment['Eintrag'] = nl2br($_comment['Eintrag']);
				}
				
				if (SMILIES == 1)
				{
					$_comment['Eintrag'] = dosmilies($_comment['Eintrag']);
				}
				$_comment['Avatar'] =  ($_comment['Autor_Id'] && $GLOBALS['settings']['Kommentare_Icon']==1) ? $this->getUserAvatar($_comment['Autor_Id']) : '';
				$_comment['Eintrag'] = (!badwordreplace($_comment['Eintrag'])) ? $_comment['Eintrag'] : badwordreplace($_comment['Eintrag']);
				$_comment['Eintrag'] = wordwrap($_comment['Eintrag'], 75, "\n", 1);
				$_comment['Eintrag'] = autowords($_comment['Eintrag']);
				$_comment['Autor_Web'] = ($_comment['Autor_Web'] != '' && !starts_with('http://',$_comment['Autor_Web'])) ? 'http://' . $_comment['Autor_Web'] : $_comment['Autor_Web'];
				array_push($eintrag, $_comment);
			}
			
			if($num > $limit)
			{
				$GLOBALS['tmpl']->assign('pages', pagenav($seiten, '', 
						"<a class=\"page_navigation\" style=\"text-decoration:none\" href=\"" . $navlink . "&amp;page={s}&amp;area=" . AREA . "#comments\">{t}</a> "));
			}
			$GLOBALS['tmpl']->assign('listemos', listsmilies('14',1,1));
			$GLOBALS['tmpl']->assign('comments', 1);
			$GLOBALS['tmpl']->assign('eintrag', $eintrag);
		}
	}
	
	function EditComment($bereich,$id)
	{
		if(!permission('edit_comments')) exit;
		if(isset($_POST['E_Eintrag']) && !empty($_POST['E_Eintrag']) && isset($_POST['E_Autor']) && !empty($_POST['E_Autor']))
		{
			
			$GLOBALS['db']->Query("UPDATE " . PREFIX . "_kommentare 
			SET 
				Eintrag = '" . $_POST['E_Eintrag'] . "',
				Autor = '" . $_POST['E_Autor'] . "',
				Autor_Web = '" . @$_POST['E_Webseite'] . "',
				Autor_Herkunft = '" . @$_POST['E_Herkunft'] . "' 
			WHERE  Bereich = '$bereich' AND Id = '$id'");
			Logger('User ' . $_SESSION['user_name'] . ' edit comment ($bereich).', '', $_SESSION['benutzer_id']);
			
		}
	}
	
	function deleteComment($id)
	{
		if(!permission('edit_comments')) exit;
		$GLOBALS['db']->Query("DELETE FROM " . PREFIX . "_kommentare WHERE  Id = '$id'");
		Logger('User ' . $_SESSION['user_name'] . ' delete comment.', '', $_SESSION['benutzer_id']);
		
		$back = str_replace('&amp;','&',$_SERVER['HTTP_REFERER']);
		refer($back . '#comments');
		exit;
	}
	
	
	function NewComment($bereich,$page,$objekt_id,$guestbook='',$ismoderated='')
	{
		
		$error = array();
		$use_code = -1;
		
		if($GLOBALS['settings']['Sicherheitscode']==1) 
		{
			$GLOBALS['tmpl']->assign('use_code', 1);
			$use_code = 1;
		}
		
		
		if(!isset($_REQUEST['Eintrag']) && $use_code == 1) giveSecure();
		
		if(isset($_POST['Eintrag']) && $_POST['Eintrag'] == 1)
		{
			if($_SESSION['user_group'] == 2)
			{
				if(empty($_POST['Autor'])) $error[] = $GLOBALS['config_vars']['Comment_NoAuthor'];
				if(empty($_POST['Email']))  $error[] = $GLOBALS['config_vars']['Comment_NoEmail'];
			} else {
				$_POST['Autor'] = $_SESSION['user_name'];
				$_POST['Email'] = $_SESSION['login_email'];
			}
			
			if(empty($_POST['text']))  $error[] = $GLOBALS['config_vars']['Comment_NoComment'];
			
			
			if($use_code==1)
			{
				$scode_form = (isset($_POST['scode']) && !empty($_POST['scode'])) ? $_POST['scode'] : '';
				$scode_ses = @$_SESSION['scode'];
				
				if(($use_code && @empty($_POST['scode'])) || (!$_SESSION['scode'] && $use_code) || ($scode_form != $scode_ses && ($use_code)))
				{
					$error[] = $GLOBALS['config_vars']['Reg_SecurecodeWrong'] . "<br />";
					giveSecure();
					$secureCode = rand_string(4); 
					$_SESSION['scode'] = $secureCode; 
				} else {
					$_SESSION['scode'] = $_POST['scode'];
					giveSecure($_SESSION['scode']);
					$secureCode = $_POST['scode']; 
				}
			}
		
			//=================================================================
			// Gibt es Spam in den Feldern?
			//=================================================================
			$spam = false;
			foreach($_POST as $key) if(!SpamCheck($key) && strlen($key)>=2) $spam=true;
			if($spam) $error[] = $GLOBALS['config_vars']['SpamUsed'];
		
			if($error)
			{
				$GLOBALS['tmpl']->assign('error', $error);
				return false;
			} else {
				
				$status = (($GLOBALS['settings']['Kommentar_Moderiert']==1) ? 0 : 1);
				//if($ismoderated==1) $status = 0;
				
				//=================================================================
				// Kein Fehler, Kommentar eintragen
				//=================================================================
				$q = "INSERT INTO " . PREFIX . "_kommentare
				(
					Id,
					Objekt_Id,
					Bereich, 	 
					Datum,  	 
					Titel, 
					Eintrag, 	
					Autor, 
					Autor_Id, 	 
					Autor_Web,  	 
					Autor_Herkunft,  	 
					Autor_Ip,
					Aktiv 
				) VALUES (
					'',
					'$objekt_id',
					'" . $bereich . "',
					'" .  stime() . "',
					'',
					'" . @substr($_POST['text'],0,$GLOBALS['settings']['Kommentar_Laenge']) . "',
					'" . $_POST['Autor'] . "',
					'" . ((isset($_SESSION['benutzer_id']) && $_SESSION['benutzer_id'] > 0) ? $_SESSION['benutzer_id'] : 'NULL' ) . "',
					'" . $_POST['Webseite'] . "',
					'" . $_POST['Herkunft'] . "',
					'" . $_SERVER['REMOTE_ADDR'] . "',
					'" . (($GLOBALS['settings']['Kommentar_Moderiert']==1) ? 0 : 1) . "'
				)";
				$GLOBALS['db']->Query($q);
				koobi_message('Comment_thankyou', 'Comment_thankyouText', $page);
			}
		}
	}
	
	
	
	
	function getUserAvatar($user_id)
	{
		
		$row = $GLOBALS['db']->ArrQuery("SELECT Gruppe,Avatar,Avatar_Default FROM " . PREFIX . "_benutzer WHERE Id = '" . $user_id . "'");
		$group = $row['Gruppe'];
		$avatar = $row['Avatar'];
		$usedefault = $row['Avatar_Default'];
		
		$own = 1;
		$permown = -1; 
		
		// nutzt er default- avatar?
		if (($usedefault == 1) && ($avatar == ''))  $own = 0;
		$row  = $GLOBALS['db']->RowQuery("SELECT Rechte FROM " . PREFIX . "_berechtigungen WHERE Gruppe='$group' AND Sektion = '" . $_SESSION['area'] . "'");
		
		// wenn er admin ist, fallen alle regeln weg
		if ($row->Rechte == 'all' || $group == 1)
		{
			$permown = 1;
		} else {
			$perms = explode(',', $row->Rechte); 
			// wenn seine gruppe die rechte besitzt, eigene avatar zu nutzen
			if (in_array('own_avatar', $perms))
			{
				$permown = 1;
			} 
		} 
		if ($permown != 1) $own = 0;
		
		
		// wenn eigenes avatar beutzt werden darf und es existiert
		if ($own == 1 && $usedefault != 1)
		{
			if (@is_file(BASE_DIR . "/uploads/avatars/$avatar"))
			{
				$avatar = "<img class=\"comment_avatar\" src=\"system/commentavatar.php?avatar=$avatar&amp;typ=own\" alt=\"\" border=\"0\" />";
			} 
		} else {
			
			$row = $GLOBALS['db']->RowQuery("SELECT Avatar_Default,Avatar FROM " . PREFIX . "_benutzer_gruppen WHERE Id = '$group'");
			
			if (($row->Avatar_Default == 1) && ($row->Avatar != ""))
			{
				
				$avatar = "<img class=\"comment_avatar\" src=\"system/commentavatar.php?avatar=$row->Avatar&amp;typ=default\" alt=\"\" border=\"0\" />";
			} 
		} 
		return $avatar;
	} 
	
	
}
?>