<?

include_once "./setting.php";

include_once $global["root"] . "/include/handle.php";
include_once $global["root"] . "/include/print_array.php";

//-------------------------------------------------- protection
include_once $global["root"] . "/lib/Extend_message.php";
include_once $global["root"] . "/lib/Site.php";

$Site = new Site;
$Site->init("mail");

include_once $global["lang"] . "/" . $_SESSION["config_lang"] . ".php";

extract($_POST);

// struct of case sensitive.
$case = array("on"=>"1");

$Site->DB->transaction_start(true);

switch ($_POST["mode"]) {
	case ("move_up") :
		if (! $_POST["code_number"]) {
			$Site->end1();
			goprev();
		}

		$CM = new Control_Message;
		$current_seq = $CM->get_sequence($_POST["code_number"]);

		if ($current_seq < 2) {
			$retval = true;
		} else {

			$query =
				sprintf("update mail_filter_%s set sequence = '%s' where no = '%s'",
					$_SESSION["config_id"],
					$current_seq - 1,
					$_POST["code_number"]
				);

			$query1 =
				sprintf("update mail_filter_%s set sequence = sequence
						+ 1 where sequence = %s",
					$_SESSION["config_id"],
					$current_seq - 1
				);

			$Site->DB->query($query1);
			$retval = $Site->DB->retval;

			if ($retval) {
				$Site->DB->query($query);
				$retval = $Site->DB->retval;
			}
		}

	break;
	case ("move_down") :
		if (! $_POST["code_number"]) {
			$Site->end1();
			goprev();
		}

		$CM = new Control_Message;
		$current_seq = $CM->get_sequence($_POST["code_number"]);
		$last_seq = $CM->get_new_sequence($_POST["code_number"]) - 1;

		if ($current_seq + 1 > $last_seq) {
			$retval = true;
		} else {

			$query =
				sprintf("update mail_filter_%s set sequence = '%s' where no = '%s'",
					$_SESSION["config_id"],
					$current_seq + 1,
					$_POST["code_number"]
				);

			$query1 =
				sprintf("update mail_filter_%s set sequence = sequence
						- 1 where sequence = %s",
					$_SESSION["config_id"],
					$current_seq + 1
				);

			$Site->DB->query($query1);
			$retval = $Site->DB->retval;

			if ($retval) {
				$Site->DB->query($query);
				$retval = $Site->DB->retval;
			}
		}

	break;
	case ("add_new") :
		if (! array_key_exists("expression", $_POST)) {
			$expression = "0";
		} else {
			$expression = $_POST["expression"];
		}

		// check the code.
		if (trim($_POST["From_string"]) == "" and trim($_POST["Subject_string"]) == "" and
				trim($_POST["payload_name_string"]) == "" and
				trim($_POST["message_size_string"]) == "") {

			$_SESSION["tmp"]["msg"]["content"] = $string["message104"];
			$Site->end1();
			goprev();
		}

		if ($_POST["dontsave"]) {
			$directory_num = "-1";
		} else {
			$directory_num = $_POST["directory"];
		}

		$CM = new Control_Message;

		$query = sprintf(
			"insert into mail_filter_%s
				(name, f, s, payload_name, message_size, directory_num,
					sequence, expression, s_o, p_o, m_o, s_c, p_c)
				values('%s', '%s', '%s', '%s', '%s', '%s',
					'%s', '%s', '%s', '%s', '%s', '%s', '%s')",
				$_SESSION["config_id"],
					escape_string($_POST["name"]),
					escape_string($_POST["From_string"]),
					escape_string($_POST["Subject_string"]),
					escape_string($_POST["payload_name_string"]),
					escape_string($_POST["message_size_string"]),
					$directory_num,
					$CM->get_new_sequence(),
					$expression,
					$_POST["Subject_condition"],
					$_POST["payload_name_condition"],
					$_POST["message_size_condition"],
					$case[$_POST["Subject_case"]],
					$case[$_POST["payload_name_case"]],
					$_POST["no"]
			);

		$Site->DB->query($query);
		$retval = $Site->DB->retval;

	break;
	case ("filter_code_one") :
		if (! $_POST["no"]) goprev();

		if (! array_key_exists("expression", $_POST)) {
			$expression = "0";
		} else {
			$expression = $_POST["expression"];
		}

		// check the code.
		if (trim($_POST["From_string"]) == "" and trim($_POST["Subject_string"]) == "" and
				trim($_POST["payload_name_string"]) == "" and
				trim($_POST["message_size_string"]) == "") {

			$_SESSION["tmp"]["msg"]["content"] = $string["message104"];
			$Site->end1();
			goprev();
		}

		if ($_POST["dontsave"]) {
			$directory_num = "-1";
		} else {
			$directory_num = $_POST["directory"];
		}

		$query = sprintf(
			"update mail_filter_%s
				set
					name = '%s',
					f = '%s', s = '%s', payload_name = '%s', message_size = '%s',
					directory_num = '%s',
					expression = '%s',
					s_o = '%s', p_o = '%s', m_o = '%s',
					s_c = '%s', p_c = '%s'
				where no = '%s'",
				$_SESSION["config_id"],
					escape_string($_POST["name"]),
					escape_string($_POST["From_string"]),
					escape_string($_POST["Subject_string"]),
					escape_string($_POST["payload_name_string"]),
					escape_string($_POST["message_size_string"]),
					$directory_num,
					$expression,
					$_POST["Subject_condition"],
					$_POST["payload_name_condition"],
					$_POST["message_size_condition"],
					$case[$_POST["Subject_case"]],
					$case[$_POST["payload_name_case"]],
					$_POST["no"]
			);

		$Site->DB->query($query);
		$retval = $Site->DB->retval;
	break;
	case ("filter_item_list") :
		if (! is_array($_POST["remove"]) or count($_POST["remove"]) < 1) {
			$_SESSION["tmp"]["msg"]["content"] = $string["message106"];
			$Site->end1();
			goprev();
		}

		while (list($i, $j) = each($_POST["remove"])) {
			$q[] = sprintf("no = '%s'", $j);
		}

		$query = sprintf("delete from mail_filter_%s where %s",
				$_SESSION["config_id"],
				implode(" or ", $q)
			);

		$Site->DB->query($query);
		$retval = $Site->DB->retval;

		$Site->DB->close();

		// after remove item, reorder the entire sequence.
		$Site->DB->transaction_start(true);
		$retval = true;
		if ($retval) {
			$o = $Site->DB->fetch_all(sprintf("select no from
			mail_filter_%s order by sequence",
					$_SESSION["config_id"]));

			$n = 1;
			$retval = true;
			while (list($i, $j) = each($o)) {
				if (! $retval) break;

				$Site->DB->execute_query(
					sprintf("update mail_filter_%s set sequence = '%s'
							where no = '%s'",
						$_SESSION["config_id"], $n, $j["no"]));

				$retval = $Site->DB->retval;
				$n += 1;
			}

			$Site->DB->retval = $retval;
		}

	break;
	default :
		$Site->end1();
		goprev();
}

$Site->DB->retval = $retval;

$Site->DB->close();

if ($retval) {
	$url = "Location: " . $_SESSION["user_www_url"] .
		"/mail?mode=control&control=1&no=2";

	$Site->end1();

	Header($url);
	exit;
} else {
	$Site->end1();
	goprev();
}

/*
Description
-----------

Author
------
 Spike^ekipS <spike@spikeekips.net>

Changelog
---------

Usage
-----

*/

?>
