<?
require_once('include/global.php');
require_once('include/mail_lib.php');
require_once('include/file.php');
require_once('conf.inc.php');

page_loading_view("메일을 이동하고 있습니다.");

// check
	// 편지읽기에서 이동시
	if (!$_POST && $_GET)
		$_POST = $_GET;

	if (!$_POST['mb_id'] || (!$_POST['mf_no'] && !$_POST['cmf']) || !$_POST['sel_mail_box'])
		msg('올바른 URL로 접근하여 주십시오');


// data
	// set data
		$mail_file_table = $AUTH[auth_m_mf_table];

	$mf_no = array();
	if (getarraycount($_POST['cmf']) > 0)
	{
		$mf_no = $_POST['cmf'];
	} else
	{
		$mf_no[] = $_POST['mf_no'];
	}	// if()


// [2007-11-15] 메일 자동분류
	$msg = '';
	// [2011-03-29] 계속이동 버튼 추가
	//if ($_POST['cmd'] == 'AUTO_FILTER')
	if ($_POST['cmd'] == 'AUTO_FILTER' || $_GET['cmd'] == 'AUTO_FILTER')
	{
		require_once('include/auto_filter_lib.php');

		// 선택한 메일들의 보낸사람주소 가져오기
		$mf_from = array();
		$mf_from_ori = array();
		$mf_from_addr = array();
		$mf_from_insert = array();
		$mf_from_exists = array();
		for ($i=0; $i<sizeof($mf_no); $i++)
		{
			$q = "SELECT mf_from FROM " . $mail_file_table . " WHERE mf_no='" . $mf_no[$i] . "' AND m_no='" . $AUTH['auth_m_no'] . "' AND mb_id='". $_POST['mb_id']. "'";
			$_from = db_get_one($q);
			$_ap = mime_address_parse($_from);
			$_ap['address'] = trim($_ap['address']);
			if ($_ap['address'] != '' && isemail($_ap['address']) && array_search($_ap['address'], $mf_from_addr) === false)		// 빈주소와 중복된 주소는 제외함.
			{
				$mf_from[] = $_from;
				$mf_from_addr[] = $_ap['address'];
			} else
			{
				$mf_from_ori[] = $_from;
			}	// if()
		}	// for()

		if (sizeof($mf_from_addr) > 0)
		{
			// as_exec_text - 4 , 4| , 4||
			$q = "
				SELECT
					*
				FROM
					" . $TB['AUTO_FILTER'] . "
				WHERE
					m_no='" . $AUTH['auth_m_no'] . "'
					AND as_name LIKE '" . $G_SYS['AUTO_FILTER_PREFIX'] . "%'
					AND as_condition LIKE '%FROM%'
					AND as_exec LIKE '%MOVE%'
					AND (as_exec_text = '" . $_POST['sel_mail_box'] . "' OR as_exec_text LIKE '" . $_POST['sel_mail_box'] . "|%')
				";
			$row = db_get_row($q);
			if (!$row)		// 추가
			{
				// 최대 등록 수 제한.
					// [2011-03-29] 계속이동 버튼 추가
					//limit_auto_filter_max();
					$sql = "
						SELECT
							COUNT(*)
						FROM
							" . $TB['AUTO_FILTER'] . "
						WHERE
							m_no='" . $AUTH['auth_m_no'] . "'
						";
					$as_cnt = db_get_one($sql);
					if ($as_cnt >= $G_SYS['AUTO_FILTER_MAX'])
					{
						?>
							<script type="text/javascript">
							<!--
								if (confirm("[계속이동]을 위한 자동분류 등록이 실패하였습니다.\n\n불필요한 '자동분류'항목을 삭제해야 합니다.\n\n[환경설정 - 메일 자동분류]로 이동하시겠습니까?"))
								{
									location.replace("<?= $nmpath ?>/auto_filter_list.php");
								} else
								{
									history.back();
									
								}
							//-->
							</script>
						<?
						exit;
					}	// if()

				// set
					$q = "SELECT mb_name FROM ".$TB['MAIL_BOX']." WHERE m_no='" . $AUTH['auth_m_no'] . "' AND mb_id='" . $_POST['sel_mail_box'] . "'";
					$mb_name = db_get_one($q);
					$_POST['as_name'] = to_db_str(addslashes($G_SYS['AUTO_FILTER_PREFIX'].$mb_name));
					$_POST['as_condition'] = 'FROM';
					$_text = str_replace('|', '', set_auto_filter_trim(implode(',', $mf_from_addr)));
					$_POST['as_condition_text'] = to_db_str(addslashes($_text));
					$_POST['as_exec'] = 'MOVE';
					$_POST['as_exec_text'] = to_db_str($_POST['sel_mail_box']);
					$sql = "SELECT MAX(as_sort) FROM ".$TB['AUTO_FILTER']." WHERE m_no='" . $AUTH['auth_m_no'] . "'";
					$_POST['as_sort'] = db_get_one($sql) + 1;


				// data
					$sql = "
						INSERT INTO
							" .	$TB['AUTO_FILTER']	. "
							( as_no , m_no , as_name , as_condition , as_condition_text , as_exec , as_exec_text , as_econdition , as_econdition_text , as_is_use , as_sort )
						VALUES
							( ".db_sqc_next($TB['AUTO_FILTER']).", '" . $AUTH['auth_m_no'] . "', '" . $_POST['as_name'] . "', '" . $_POST['as_condition'] . "', '" . $_POST['as_condition_text'] . "', '" . $_POST['as_exec'] . "', '" . $_POST['as_exec_text'] . "', '', '', 'Y', '" . $_POST['as_sort'] . "' )
						";
					db_query($sql);

					$msg = "메일 자동분류에 [".$_POST['as_name']."] 규칙이 새로 추가되었습니다.\\n\\n";						
					$msg .= "- 추가된 주소 :\\n".implode(", ", $mf_from)."\\n\\n";
			} else		// 수정
			{
				// 현재 조건 분석
				$as = get_auto_filter_vars();
				$_ex = explode('|', $row['as_condition']);
				$_ex2 = explode('|', $row['as_condition_text']);
				$view['as_condition_ischk'] = array();
				$view['as_condition_value'] = array();
				foreach ($as['condition'] as $key=>$val)
				{
					$_as = array_search($key, $_ex);
					if ($_as !== false)
					{
						$view['as_condition_ischk'][$key] = true;
						$view['as_condition_value'][$key] = $_ex2[$_as];
					}	// if()
				}	// foreach()

				// 조건을 검색후 중복되지 않은 메일주소만 추가함.
				if ($view['as_condition_value']['FROM'] != '')		// 기존에 등록된 주소가 있을때
				{
					$_ex = explode(',', $view['as_condition_value']['FROM']);
					for ($i=0; $i<sizeof($mf_from_addr); $i++)
					{
						if (array_search($mf_from_addr[$i], $_ex) === false)		// 추가하려는 주소가 등록되지 않았을 때
						{
							$view['as_condition_value']['FROM'] .= ','.$mf_from_addr[$i];
							$mf_from_insert[] = $mf_from[$i];
						} else
						{
							$mf_from_exists[] = $mf_from[$i];
						}	// if()
					}	// for()
				} else
				{
					$view['as_condition_value']['FROM'] .= ','.implode(',', $mf_from_addr);
				}	// if()

				// 디비저장 형식에 맞게 변환.
				$_POST['as_condition_text'] = '';
				$i = 0;
				foreach ($view['as_condition_value'] as $key=>$val)
				{
					$_POST['as_condition_text'] .= str_replace('|', '', set_auto_filter_trim($val));
					if ($i+1 != sizeof($view['as_condition_value']))
						$_POST['as_condition_text'] .= '|';
					$i++;
				}	// foreach()
				$_POST['as_condition_text'] = to_db_str(addslashes($_POST['as_condition_text']));

				// length cechk
				if (strlen($_POST['as_condition_text']) > $G_SYS['DB_TEXT'])
					msg("현재 사용중인 자동분류에 등록된 주소들의 총 길이가 ".number_format($G_SYS['DB_TEXT'])."자를 초과하였습니다.\\n\\n다음처럼 사용중인 자동분류의 이름을 변경한 후 다시 실행하시면 새로운 자동분류 규칙이 생성되어 문제가 해결됩니다.\\n\\n☞ [환경설정 - 메일 자동분류]에서 [".$row['as_name']."]규칙의 이름 가운데 \"".$G_SYS['AUTO_FILTER_PREFIX']."\" 단어를 다른 단어로 수정하시면 됩니다.");

				// data
					if ($_POST['as_condition_text'] != $row['as_condition_text'])
					{				
						$q = "
							UPDATE
								" . $TB['AUTO_FILTER'] . "
							SET
								as_condition_text='" . $_POST['as_condition_text'] . "'
							WHERE
								as_no='" . $row['as_no'] . "'
								AND m_no='" . $AUTH['auth_m_no'] . "'
							";
						db_query($q);

						$msg = "메일 자동분류의 [".$row['as_name']."] 규칙이 수정되었습니다.\\n\\n";						
					} else 
					{
						$msg = "메일 자동분류의 [".$row['as_name']."] 규칙이 수정되지 않았습니다.\\n\\n";						
					}	// if()
				if (sizeof($mf_from_insert) > 0)
					$msg .= "- 추가된 주소 :\\n".implode(", ", $mf_from_insert)."\\n\\n";
				if (sizeof($mf_from_exists) > 0)
					$msg .= "- 생략된 주소(이미 등록되어 있음) :\\n".implode(", ", $mf_from_exists)."\\n\\n";
			}	// if()
		} else
		{
			$msg = "선택하신 메일들의 보낸사람주소가 정확하지 않아서 메일 자동분류에 등록되지 않았습니다.\\n\\n";
			$msg .= "- 생략된 주소 :\\n".implode(", ", $mf_from_ori)."\\n\\n";
		}	// if()
	}	// if()


// 메일 이동
	// set file
	$UPLOAD_ROOT = get_mail_dir();
	$errorMsg = '';

	if ($_POST['mb_id'] != $_POST['sel_mail_box'])
	{
		$mb_dir_src = get_mb_dir($_POST['mb_id']);
		$mb_dir_dest = get_mb_dir($_POST['sel_mail_box']);
		for ($i=0; $i<sizeof($mf_no); $i++)
		{
			// file move
				if ($mb_dir_src != $mb_dir_dest)
				{
					$row = db_get_row("SELECT mf_filename, mfext1 FROM " . $mail_file_table . " WHERE mf_no='" . $mf_no[$i] . "' AND m_no='" . $AUTH['auth_m_no'] . "' AND mb_id='". $_POST['mb_id']. "'");
					// [2006-01-05][custmize] 보낸편지함/수신확인 보관기능.
					if ($row['mfext1'] != 'Y')
					{
						if (!$row['mf_filename'])
							msg("존재하지 않는 메일입니다.\\n\\n이미 삭제되었거나 다른 편지함으로 옮겨졌을 수 있습니다.");
						$errorMsg .= file_move($row['mf_filename'], '', $mb_dir_src, $row['mf_filename'], '', $mb_dir_dest, false);
					}	// if()
				}	// if()
		}	// for()

		// db update
			// [2006-01-05][custmize] 보낸편지함/수신확인 보관기능.
			$q_where = " AND ( mfext1 != 'Y' OR mfext1 IS NULL ) ";

			$q_mf_no = set_array2comma(" (", ") ", $mf_no);
			$sql = "
				UPDATE
					$mail_file_table
				SET
					mb_id='" . $_POST['sel_mail_box'] . "'
				WHERE
					mf_no IN ".$q_mf_no."
					AND m_no='" . $AUTH['auth_m_no'] . "'
					AND mb_id='". $_POST['mb_id']. "'
					$q_where
				";
			db_query($sql);
		#$msg = "선택하신 메일들이 [".get_mb_name($_POST['sel_mail_box'])."](으)로 이동되었습니다.";
	} else
	{
		//$msg .= "동일한 편지함으로는 이동할 수 없습니다.";
	}	// if()


// end
	if ($errorMsg)
	{
		page_loading_view_hidden();
		error($errorMsg, 'FILE', false);
		$_time = 3;
	} else
	{
		$_time = 0;
	}	// if()
	if ($msg)
		msg($msg, 0);
	movepage('mail_list.php?mb_id=' . $_POST['mb_id'] . '&' . get_qs('mb_id', 'mf_no', 'sel_mail_box', 'sel_mail_box_2', 'cmd', 'cmd_2'), $_time);

require_once('include/global_end.php');
?>