<?
include_once('./_common.php');

if(AMINA != "g4s") include_once(AMINA_PATH.'/lib/head.lib.php');

if($_POST['js'] != "on") $move_href = G4_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;

function amina_return($error, $success, $count) {
	global $move_href;

	if($move_href) {
		if($success) $error = $success;
		if($error) {
			alert($error, $move_href);
		} else {
			goto_url($move_href);
		}
	} else {
		echo '{ "error": "' . $error . '", "success": "' . $success . '", "count": "' . $count . '" }';
		exit;
	}
}

if (!$is_member) {
	$error = '회원만 가능합니다.';
	amina_return($error, $success, $count);
}

if (!($bo_table && $wr_id)) {
	$error = '값이 제대로 넘어오지 않았습니다.';
	amina_return($error, $success, $count);
}

$row = sql_fetch(" select count(*) as cnt from {$g4['board_table']} where bo_table = '$bo_table' ", FALSE);
if (!$row['cnt']) {
	$error = '존재하는 게시판이 아닙니다.';
	amina_return($error, $success, $count);
}

if($write['wr_9'] == "lock" || $write['wr_9'] == "shingo") {
	$error = '블라인드 처리된 글입니다.';
	amina_return($error, $success, $count);
}

if($mode == "c") { //댓글의 경우

	$ment = $amina['cmt_good_txt'];
	if(!$ment) $ment = "공감";

	if (!$amina['cmt_good']) {
		$error = '이 게시판은 '.$ment.' 기능을 사용하지 않습니다.';
		amina_return($error, $success, $count);
	}

	if($good != "good") {
		$error = '이 게시판은 '.$ment.' 기능만 가능합니다.';
		amina_return($error, $success, $count);
	}

	if($write['mb_id'] == $member['mb_id']) {
		$error = '자신의 댓글에는 '.$ment.' 하실 수 없습니다.';
		amina_return($error, $success, $count);
	}

	$sql = " select bg_flag, bg_datetime from {$g4['board_good_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' and mb_id = '{$member['mb_id']}' and bg_flag in ('good', 'nogood') ";
	$row = sql_fetch($sql);
	if ($row['bg_flag']) {
		$error = '이미 '.$status.' 하신 댓글입니다.';
		amina_return($error, $success, $count);
	} else {
		// 추천(찬성), 비추천(반대) 카운트 증가
		sql_query(" update {$g4['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '$wr_id' ");

		// 내역 생성
		sql_query(" insert {$g4['board_good_table']} set bo_table = '$bo_table', wr_id = '$wr_id', mb_id = '{$member['mb_id']}', bg_flag = '$good', bg_datetime = '".G4_TIME_YMDHIS."' ");

		if($amina['limit_date'] > 0) $chk_limit = date("Y-m-d H:i:s", G4_SERVER_TIME - ( $amina['limit_date'] * 24 * 3600 ));

		if(($member['mb_id'] == $write['mb_id'] && $amina['limit_cmt']) || ($chk_limit && $write['wr_datetime'] < $chk_limit)) { 
			;
		} else {
			$good_point = (int)$amina['cmt_good_point'];
			$good_msg = $board['bo_subject'].' '.$wr_id.' - '.$ment.' 했습니다.';
			$good_repoint = (int)$amina['cmt_good_repoint'];
			$good_remsg = $board['bo_subject'].' '.$wr_id.' - '.$ment.' 포인트를 받았습니다.';

			if($good_point) {
				insert_point($member['mb_id'], $good_point, $good_msg, $bo_table, $wr_id, '@'.$good);

				if($xp['exp']['good']) check_xp($member['mb_id']);
			}

			if($write['mb_id'] && $good_repoint) {
				insert_point($write['mb_id'], $good_repoint, $good_remsg, $bo_table, $wr_id, '@'.$good.'_re_'.$member['mb_id']);

				if($xp['exp']['good_re']) check_xp($write['mb_id']);
			}
		}

		$good_cnt = $write['wr_good'] + 1;

		$success = '이 댓글을 '.$ment.' 하셨습니다.';
		$count = $good_cnt;
		amina_return($error, $success, $count);
	}

} else { //글 추천

	if ($good == "good" || $good == "nogood") {
	    if($write['mb_id'] == $member['mb_id']) {
			$error = '자신의 글에는 추천 또는 비추천 하실 수 없습니다.';
			amina_return($error, $success, $count);
		}

	    if (!$board['bo_use_good'] && $good == "good") {
			$error = '이 게시판은 추천 기능을 사용하지 않습니다.';
			amina_return($error, $success, $count);
		}

	    if (!$board['bo_use_nogood'] && $good == "nogood") {
			$error = '이 게시판은 비추천 기능을 사용하지 않습니다.';
			amina_return($error, $success, $count);
		}

	    $sql = " select bg_flag, bg_datetime from {$g4['board_good_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' and mb_id = '{$member['mb_id']}' and bg_flag in ('good', 'nogood') ";
	    $row = sql_fetch($sql);
	    if ($row['bg_flag']) {
			if ($row['bg_flag'] == "good")
			    $status = '추천';
	        else 
		        $status = '비추천';

			$error = '이미 '.$status.' 하신 글입니다.';
			amina_return($error, $success, $count);
		} else {

			//추천 제한 - 회원만 가능,  관리자와 글쓴이는 제외
			if(!$is_admin && $member['mb_id'] && $write['mb_id'] != $member['mb_id']) {

				//다운로드시
				if($amina['limit_good_down'] && $board['bo_download_point']) {
					$attach = get_file($bo_table, $wr_id);
					if(amina_attach_file($attach)) {
						$row2 = sql_fetch(" select count(*) as cnt from {$g4['point_table']} where mb_id = '{$member['mb_id']}' and po_rel_table = '$bo_table' and po_rel_id = '$wr_id' and po_rel_action = '다운로드' ");
						if(!$row2['cnt']) {
							$error = '다운로드후 추천 또는 비추천할 수 있습니다.';
							amina_return($error, $success, $count);
						}
					}
				}

				//댓글작성시
				if($amina['limit_good_cmt']) {
					$row2 = sql_fetch(" select count(*) as cnt from $write_table where wr_is_comment=1 and wr_parent = '$wr_id' and mb_id = '{$member['mb_id']}' ");
					if(!$row2['cnt']) {
						$error = '댓글 작성시 추천 또는 비추천할 수 있습니다.';
						amina_return($error, $success, $count);
					}
				}

				//별점시
				if($amina['limit_good_star'] && $amina['star'] > 1) {
					$row2 = sql_fetch(" select count(*) as cnt from {$g4['amina_star']} where bo_table = '$bo_table' and wr_id = '$wr_id' and mb_id = '{$member['mb_id']}' ");
					if(!$row2['cnt']) {
						$error = '별점을 주셔야 다운로드할 수 있습니다.';
						amina_return($error, $success, $count);
					}
				}

				//투표시
				if($amina['limit_good_poll']) {
					$wr_post = amina_array_write($write['wr_10']);
					if($wr_post['chk_poll']) {
						$row2 = sql_fetch(" select count(*) as cnt from {$g4['amina_polllog']} where bo_table = '$bo_table' and wr_id = '$wr_id' and mb_id = '{$member['mb_id']}' ");
						if(!$row2['cnt']) {
							$error = '투표를 하셔야 다운로드할 수 있습니다.';
							amina_return($error, $success, $count);
						}
					}
				}
			}

			//Good Skin
			$good_skin_path = AMINA_PATH.'/skin/good/'.$amina['view_good'];
			$good_skin_url = AMINA_URL.'/skin/good/'.$amina['view_good'];

			@include_once($good_skin_path.'/good.head.skin.php');

			// 추천(찬성), 비추천(반대) 카운트 증가
		    sql_query(" update {$g4['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '$wr_id' ");

			// 내역 생성
		    sql_query(" insert {$g4['board_good_table']} set bo_table = '$bo_table', wr_id = '$wr_id', mb_id = '{$member['mb_id']}', bg_flag = '$good', bg_datetime = '".G4_TIME_YMDHIS."' ");

	        if ($good == "good") {
		        $status = '추천';
				$good_cnt = $write['wr_good'] + 1;
				$good_id = 'good_'.$wr_id;
			} else {
		        $status = '비추천';
				$good_cnt = $write['wr_nogood'] + 1;
				$good_id = 'nogood_'.$wr_id;
			}

			if($amina['limit_date'] > 0) $chk_limit = date("Y-m-d H:i:s", G4_SERVER_TIME - ( $amina['limit_date'] * 24 * 3600 ));

			if(($member['mb_id'] == $write['mb_id'] && $amina['limit_cmt']) || ($chk_limit && $write['wr_datetime'] < $chk_limit)) { 
				;
			} else {
				$good_point = (int)$amina['good_point'];
				$good_msg = $board['bo_subject'].' '.$wr_id.' - '.$status.' 했습니다.';
				$good_repoint = (int)$amina['good_repoint'];
				$good_remsg = $board['bo_subject'].' '.$wr_id.' - '.$status.' 포인트를 받았습니다.';

				if($good_point) {
					insert_point($member['mb_id'], $good_point, $good_msg, $bo_table, $wr_id, '@'.$good);
	
					if(($xp['exp']['good'] && $good == "good") || ($xp['exp']['nogood'] && $good != "good")) check_xp($member['mb_id']);
				}

				if($write['mb_id'] && $good_repoint) {
					insert_point($write['mb_id'], $good_repoint, $good_remsg, $bo_table, $wr_id, '@'.$good.'_re_'.$member['mb_id']);

					if(($xp['exp']['good_re'] && $good == "good") || ($xp['exp']['nogood_re']  && $good != "good")) check_xp($write['mb_id']);
				}
			}

			$success = '이 글을 '.$status.' 하셨습니다.';
			$count = $good_cnt;

			@include_once($good_skin_path.'/good.tail.skin.php');

			amina_return($error, $success, $count);
		}
	}
}

//js미사용시
if($move_href) amina_return($error, $success, $count);

?>