<?
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

//-------------------------------------------------------------------------------------
// AMINA Skin Lib for AMINA BBS & THEMA - Copyright (c) 2012 AMINA - http://amina.co.kr
//
// only for AMINA Point
//-------------------------------------------------------------------------------------

function amina_point($act, $bo_table, $wr_id, $po_mb_id, $po_point, $po_flag, $regi_date) {
	global $g4, $board, $member, $amina, $is_admin, $xp;

	//로그인하지 않았거나, 포인트설정값이 없으면 돌아가기
	if(!$member['mb_id'] || !$po_point || $po_point < 0) return;

	//자신의 글이면 돌아가기
	if($member['mb_id'] && $member['mb_id'] == $po_mb_id) return;

	//값정리
	if($po_flag == '@po_view') {
		$po_time = (int)$amina['po_view_time'];
		$po_day = (int)$amina['po_view_day'];
		$po_cnt = (int)$amina['po_view_cnt'];
		$po_term = (int)$amina['po_view_term'];
		$po_fee = $amina['po_view_fee'];
		$po_free = $amina['po_view_free'];
		$po_level = $amina['po_view_level'];
		$po_txt = '열람 포인트';
	} else if($po_flag == '@po_down') {
		$po_time = (int)$amina['po_down_time'];
		$po_day = (int)$amina['po_down_day'];
		$po_cnt = (int)$amina['po_down_cnt'];
		$po_term = (int)$amina['po_down_term'];
		$po_fee = $amina['po_down_fee'];
		$po_free = $amina['po_view_free'];
		$po_level = $amina['po_down_level'];
		$po_txt = '다운 포인트';
	} else {
		return;
	}

	//등록여부 체크
	$row = array();

	//등록내역
	if($po_day > 0) {
		$chk_day = date("Y-m-d H:i:s", G4_SERVER_TIME - ( $po_day * 24 * 3600 ));
		$row = sql_fetch(" select * from {$g4['amina_point']} where bo_table = '$bo_table' and wr_id = '$wr_id' and mb_id = '{$member['mb_id']}' and po_datetime > '$chk_day' and po_flag = '$po_flag' order by po_id desc limit 0, 1 ");
	} else {
		$row = sql_fetch(" select * from {$g4['amina_point']} where bo_table = '$bo_table' and wr_id = '$wr_id' and mb_id = '{$member['mb_id']}' and po_flag = '$po_flag' order by po_id desc limit 0, 1 ");
	}

	if($row['po_id']) {

		$is_po = false;

		if($po_cnt > 0 || $po_day > 0) {

			$po_datetime = strtotime($row['po_datetime']);

			//기간 검사
			if($po_day > 0) {
				$is_po = ($po_datetime >= (G4_SERVER_TIME - ($po_day * 24 * 3600))) ? false : true;
				$row['po_endtime'] = date("Y-m-d H:i", $po_datetime + ($po_day * 24 * 3600));
			}

			//횟수 검사
			if(!$is_po && $po_cnt > 0) {
				$po_used = $row['po_cnt']%$po_cnt;
				$is_po = ($po_used != 0) ? false : true;
				$row['po_remain'] = $po_cnt - $po_used;
			}

			//유효시간 검사
			if(!$is_po && $po_time > 0) {
				$is_po = ($po_datetime >= (G4_SERVER_TIME - ($po_time * 3600))) ? false : true;
				$row['po_free'] = round(($po_datetime + ($po_time * 3600) - G4_SERVER_TIME) / 3600);
			}
		}
	} else {
		$is_po = true;
	}

	$row['is_po'] = $is_po;

	//Check면 여기서 값을 넘김
	if($act == 'check') return $row;

	//등록하기
	if(!$is_admin && $is_po) {

		//포인트가 음수이고 회원의 포인트가 0 이거나 작다면
		if ($member['mb_point'] - $po_point < 0) {
			if($po_flag == '@po_view') {
				alert("보유하신 포인트(".number_format($member['mb_point']).")가 없거나 모자라서 열람(".number_format($po_point).")이 불가합니다.\\n\\n포인트를 적립하신 후 다시 열람해 주십시오.");
			} else if($po_flag == '@po_down') {
				alert("보유하신 포인트(".number_format($member['mb_point']).")가 없거나 모자라서 다운(".number_format($po_point).")이 불가합니다.\\n\\n포인트를 적립하신 후 다시 다운해 주십시오.");
			}
		}

		//지급기간이 지났는지 체크..
		$payment_term = true;
		if($po_term > 0 && $regi_date) {
			$chk_term = (strtotime($regi_date) + ( $po_term * 24 * 3600 )) - G4_SERVER_TIME;
			if($chk_term < 0) $payment_term = false;
		}

		if($payment_term && $po_mb_id) {
			if($po_fee > 0) {
				$po_payment = $po_point - $po_point * ($po_fee / 100);
				$po_payment = (int)$po_payment;
			} else {
				$po_payment = (int)$po_point;
			}
		} else {
			$po_payment = 0;
		}

		if($member['mb_level'] >= $po_free) $po_point = 0;

		if($row['po_id']) {
			//업데이트
			$po_cnt = $row['po_cnt'] + 1;
			$po_point = $row['po_point'] + $po_point;
			$po_payment = $row['po_payment'] + $po_payment;
			sql_query(" update {$g4['amina_point']} set po_cnt = '$po_cnt', po_point = '$po_point', po_payment = '$po_payment' where po_id = '{$row['po_id']}' and mb_id = '{$member['mb_id']}' and po_flag = '$po_flag' and po_datetime = '{$row['po_datetime']}' ");
		} else {
			//신규 생성
			sql_query(" insert {$g4['amina_point']} set bo_table = '$bo_table', wr_id = '$wr_id', mb_id = '{$member['mb_id']}', po_mb_id = '$po_mb_id', po_cnt = '1', po_point = '$po_point', po_payment = '$po_payment', po_flag = '$po_flag', po_datetime = '".G4_TIME_YMDHIS."' ");
		}

		//포인트 차감
		if($member['mb_id'] && $po_point > 0) {
	        insert_point($member['mb_id'], (int)$po_point * (-1), "{$board['bo_subject']} {$wr_id} {$po_txt}", $bo_table, $wr_id, $po_flag.'_'.G4_TIME_YMDHIS);
		}

		//포인트 등록
		if($po_mb_id && $po_payment > 0) {
		    if($amina['mileage']) {
				amina_insert_mileage($po_mb_id, $member['mb_id'], (int)$po_payment, "{$board['bo_subject']} {$wr_id} {$po_txt} 받음", $bo_table, $wr_id, $po_flag.'_re_'.G4_TIME_YMDHIS);
			} else {
				insert_point($po_mb_id, (int)$po_payment, "{$board['bo_subject']} {$wr_id} {$po_txt} 받음", $bo_table, $wr_id, $po_flag.'_re_'.G4_TIME_YMDHIS);
				if(($xp['exp']['po_view'] && $po_flag == "@po_view") || ($xp['exp']['po_down'] && $po_flag == "@po_down")) check_xp($po_mb_id);
			}
		}
	}
}

?>