<?php
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//	自動でクラスを参照する
//	関数名	：	__autoload()
//	備考	：	参照先は./class/XXX.phpとする
//	更新	：	2012/10/19 KMK-Teraoka
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function __autoload($className)
{
	$fPath = "./class/" . str_replace("_", "/", $className) . ".php";
	require_once $fPath;
}

//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//	メッセージ一覧を取得する
//	関数名	：	getMessagesList
//	備考	：	
//	更新	：	2013/04/08 KMK-Teraoka
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function getMessagesList($conn_)
{
	$ret = array();
	
	$selectMsg = "SELECT msg_id, msg_info, msg_file_name FROM apc_common.messages";
	$selectMsg .= ";";
	Debug::write($insData);
	if (!($resMsg = pg_query($conn_, $selectMsg)))
	{
		return -1;
	}
	$row = pg_num_rows($resMsg);
	
	$ret[0]["msg_id"] = "-1";
	$ret[0]["msg_info"] = "利用しない";
	$ret[0]["msg_file_name"] = "-";
		
	for($iCount = 0; $iCount < $row; $iCount++)
	{
		$rowMsg = pg_fetch_array($resMsg, $iCount, PGSQL_ASSOC);
		$ret[$iCount + 1]["msg_id"] = $rowMsg["msg_id"];
		$ret[$iCount + 1]["msg_info"] = $rowMsg["msg_info"];
		$ret[$iCount + 1]["msg_file_name"] = $rowMsg["msg_file_name"];
	}
	return $ret;
}

//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//	エリアIDの頂点数を取得する
//	関数名	：	getMessagesList
//	備考	：	
//	更新	：	2013/04/08 KMK-Teraoka
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function getAreaIdList($conn_, $listId_)
{
	$ret = array();
	$selectIds = "SELECT area_id FROM qgis.area_list WHERE list_id='". $listId_. "'";
	if (!($resIds = pg_query($conn_, $selectIds)))
	{
		throw new Exception("エリアID一覧の取得に失敗<br />". $selectIds. "<br />". pg_last_error(). "<br />");
	}
	$row = pg_num_rows($resIds);
	
	if ($row != 0)
	{
		$selectPhase = "";
		for($iCount = 0; $iCount < $row; $iCount++)
		{
			$rowIds = pg_fetch_array($resIds, $iCount, PGSQL_ASSOC);
			$ret[$iCount]["id"] = $rowIds["area_id"];
			if ($iCount != 0)
			{
				$selectPhase .= ", ";
			}
			$selectPhase .= " COUNT(CASE WHEN area_id='". $ret[$iCount]["id"]. "' THEN 1 ELSE NULL END) as id_". $ret[$iCount]["id"]. "_cnt";
		}
		
		$selectVertex = "SELECT";
		$selectVertex .= $selectPhase;
		$selectVertex .= " FROM qgis.point_list";
		$selectVertex .= ";";
		Debug::write($selectVertex);
		if (!($resVertex = pg_query($conn_, $selectVertex)))
		{
			throw new Exception("頂点数の取得に失敗<br />". $selectVertex. "<br />". pg_last_error(). "<br />");
		}
		$rowVertex = pg_fetch_array($resVertex, 0, PGSQL_ASSOC);
		
		for($iCount = 0; $iCount < $row; $iCount++)
		{
			$key = "id_". $ret[$iCount]["id"]. "_cnt";
			$ret[$iCount]["vertex"] = $rowVertex[$key];
		}
		//Debug::writes($ret);
	}
	return $ret;
}

//===============================================
//	DEBUG_MODE
//	備考		：	
//	更新		：	2012/11/02 KMK-Teraoka
//===============================================
define("DEBUG_MODE", "1");
Debug::setMode(DEBUG_MODE);
if (DEBUG_MODE == 1)
{
	Stopwatch::start();
}

//===============================================
//	CommonUtilities
//	備考		：	
//	更新		：	2012/10/18 KMK-Teraoka
//===============================================
$eventsName = isset($_POST["events_name"]) ? htmlspecialchars($_POST["events_name"]) : "";

$PENTA_OCEAN = "五洋建設株式会社";
$TAIL_PENTA_OCEAN = "penta-ocean";
$SCRIPT_TITLE = "エリア編集 -". $eventsName. "-";
$CONST_ID = 4;
$APP_ID = 3;
$TOP_FORM = "../index.php";
$REGIST_FORM = "./area_regist.php";
$LIST_FORM = "./area_list.php";
$EDIT_FORM = "./area_edit.php";
$VIEW_FORM = "./area_view.php";
$DELETE_FORM = "./area_delete.php";
$HOST = "192.168.100.153";
$DB = "ansys";
$USER = "postgres";
$PASS = "am#71ZJ*";
$AREA_TABLE = "qgis.area_list";

$VIEW_LIST = array(
	"0"		=>	array("head"	=>	"形式",				"object"	=>	"format",		"type"		=>	"3",		"control"		=>		"selectFormat",		"defval"	=>	"-"),
	"1"		=>	array("head"	=>	"優先度",			"object"	=>	"priority",		"type"		=>	"3",		"control"		=>		"selectPriority",	"defval"	=>	"-"),
	"2"		=>	array("head"	=>	"メッセージ1",		"object"	=>	"msg_id1",		"type"		=>	"3",		"control"		=>		"selectMsg1",		"defval"	=>	"-"),
	"3"		=>	array("head"	=>	"メッセージ2",		"object"	=>	"msg_id2",		"type"		=>	"3",		"control"		=>		"selectMsg2",		"defval"	=>	"-"),
	"4"		=>	array("head"	=>	"メッセージ3",		"object"	=>	"msg_id3",		"type"		=>	"3",		"control"		=>		"selectMsg3",		"defval"	=>	"-"),
	"5"		=>	array("head"	=>	"メッセージ4",		"object"	=>	"msg_id4",		"type"		=>	"3",		"control"		=>		"selectMsg4",		"defval"	=>	"-"),
	"6"		=>	array("head"	=>	"間隔[ms]",			"object"	=>	"msg_interval",	"type"		=>	"1",		"control"		=>		"txtInterval",		"defval"	=>	"0"),
	"7"		=>	array("head"	=>	"無効[ms]",			"object"	=>	"msg_invalid",	"type"		=>	"1",		"control"		=>		"txtInvalid",		"defval"	=>	"10000"),
	"8"		=>	array("head"	=>	"頂点数",			"object"	=>	"rect_vertex",	"type"		=>	"4",		"control"		=>		"txtRectVertex",	"defval"	=>	"4"),
	"9"		=>	array("head"	=>	"備考",				"object"	=>	"remarks",		"type"		=>	"1",		"control"		=>		"txtRemarks",		"defval"	=>	""),
	"10"	=>	array("head"	=>	"更新時間",			"object"	=>	"upddatetime",	"type"		=>	"0",		"control"		=>		"-",				"defval"	=>	"-"),
);

$FORMAT_LIST = array(
	"0"		=>	array("value"	=>	"1",		"view"		=>	"侵入時発生(矩形)"),
);

$PRIORITY_LIST = array(
	"0"		=>	array("value"	=>	"1",		"view"		=>	"警告"),
);
$PAGE_LIMIT = 30;

//===============================================
//	HTML-HEAD-
//	備考		：	
//	更新		：	2012/10/18 KMK-Teraoka
//===============================================
print "<html>";
print "<head>";
print "<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">";
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"/ansys/config/css/style.css\">";
print "<link rel=\"shortcut icon\" href=\"/ansys/config/favicon.ico\">";
print "<title>". $SCRIPT_TITLE. "</title>";
print "</head>";

//===============================================
//	HTML-BODY部開始-
//	備考		：	
//	更新		：	2012/10/18 KMK-Teraoka
//===============================================
print "<body>";
print "<center>";
print "<font size=\"3\">";
print "<b>";
print "". $SCRIPT_TITLE. "<br>";
print "【". $PENTA_OCEAN. "】";
print "</b>";
print "</font>";
print "</center>";
print "<hr />";

try
{
	//================================================
	//	データベース接続
	//	備考		：	
	//	更新		：	2012/10/18 KMK-Teraoka
	//================================================
	$conn = pg_connect("
		host	=	". $HOST. "
		dbname	=	". $DB. "
		user	=	". $USER. "
		password=	". $PASS. "
	");
	if (!$conn)
	{
		throw new Exception("データベースへの接続に失敗しました");
	}
	
	//===============================================
	//	POST、GETパラメータの受け取り
	//	備考		：	
	//	更新		：	2012/10/18 KMK-Teraoka
	//===============================================
	if (DEBUG_MODE == 1)
	{
		extract($_POST);
		extract($_GET);
		Debug::writes($_POST);
	}
	$listId = isset($_POST["list_id"]) ? htmlspecialchars($_POST["list_id"]) : "";
	if (strcmp($listId, "") == 0)
	{
		throw new Exception("登録IDが指定されていません");
	}
	$areaId = isset($_POST["area_id"]) ? htmlspecialchars($_POST["area_id"]) : "";
	if (strcmp($areaId, "") == 0)
	{
		throw new Exception("エリアIDが指定されていません");
	}
	
	$btnDelete = isset($_POST["btnDelete"]) ? htmlspecialchars($_POST["btnDelete"]) : "";
	if (strcmp($btnDelete, "削除") == 0)
	{
		$delData = "DELETE FROM ". $AREA_TABLE. "";
		$delData .= " WHERE area_id='". $areaId. "'";
		$delData .= " AND list_id='". $listId. "'";
		$delData .= ";";
		Debug::write($delData);
		if (!($resDel = pg_query($conn, $delData)))
		{
			throw new Exception("ID[". $areaId. "]のデータ削除に失敗しました");
		}
		$delMode = 1;
		$mgrMsg = "エリアデータを削除しました<br />";
	}
	else
	{
		$mgrMsg = "下記のエリアデータを削除します<br />";
	}
	
	//===============================================
	//	メッセージ一覧を取得する
	//	備考		：	
	//	更新		：	2013/04/08 KMK-Teraoka
	//===============================================
	$msgList = getMessagesList($conn);
	$vertexList = getAreaIdList($conn, $listId);
	
	//===============================================
	//	WHERE句の作成
	//	備考		：	
	//	更新		：	2012/10/18 KMK-Teraoka
	//===============================================
	$whereObj = "";
	$whereObj .= " WHERE list_id='". $listId. "' AND area_id='". $areaId. "'";
	Debug::write($whereObj);
	
	//===============================================
	//	見出し
	//	備考		：	Table内TableでBorderを細くする
	//	更新		：	2012/10/18 KMK-Teraoka
	//===============================================
	print "<table width=\"100%\" border=\"0\" bgcolor=\"#000000\" cellspacing=\"0\" cellpadding=\"0\">";
	print "<tr>";
	print "<td>";
	print "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"3\">";
	print "<tr bgcolor=\"#99CCFF\">";
	print "<td align=\"left\">";
	print "エリア削除";
	print "</td>";
	print "</tr>";
	print "</table>";
	print "</td>";
	print "</tr>";
	print "</table>";
	print "<br />";
	
	//===============================================
	//	データの取得
	//	備考		：	
	//	更新		：	2012/10/19 KMK-Teraoka
	//===============================================
	if ($delMode != 1)
	{
		$selData = "SELECT * FROM ". $AREA_TABLE;
		if (strcmp($whereObj, "") != 0)
		{
			$selData .= $whereObj;
		}
		$selData .= ";";
		Debug::write($selData);
		if (!($resData = pg_query($conn, $selData)))
		{
			throw new Exception("エリアID：[". $editId. "]のデータ取得に失敗しました<br />". $selData. "<br />". pg_last_error(). "<br />");
		}
		$rowData = pg_fetch_array($resData, 0, PGSQL_ASSOC);
	}
	
	//===============================================
	//	管理メッセージの表示
	//	備考		：	
	//	更新		：	2012/10/18 KMK-Teraoka
	//===============================================
	print "<font color=\"#FF0000\">";
	print $mgrMsg;
	print "</font>";
	
	//===============================================
	//	一覧の表示
	//	備考		：	
	//	更新		：	2012/10/18 KMK-Teraoka
	//===============================================
	if ($delMode != 1)
	{
		print "<form action=\"". $_SERVER['PHP_SELF']. "\" method=\"post\" style=\"display:inline\">";
		print "<table width=\"45%\" border=\"0\" bgcolor=\"#000000\" cellspacing=\"0\" cellpadding=\"0\">";
		print "<tr>";
		print "<td>";
		print "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"3\">";
		for($iCount = 0; $iCount < count($VIEW_LIST); $iCount++)
		{
			print "<tr bgcolor=\"#FFFFFF\" align=\"left\">";
			print "<td bgcolor=\"#99CCFF\" style=\"width:30%;height:25px;\">";
			print $VIEW_LIST[$iCount]["head"];
			print "</td>";
			
			print "<td bgcolor=\"#FFFFFF\" style=\"width:70%\">";
			switch($VIEW_LIST[$iCount]["type"])
			{
				case 0:
					print $rowData[$VIEW_LIST[$iCount]["object"]];
					break;
				case 1:
					print $rowData[$VIEW_LIST[$iCount]["object"]];
					break;
				case 2:
					print $rowData[$VIEW_LIST[$iCount]["object"]];
					break;
				case 3:
					if (strcmp($VIEW_LIST[$iCount]["object"], "format") == 0)
					{
						$row = count($FORMAT_LIST);
						for($jCount = 0; $jCount < $row; $jCount++)
						{
							if (strcmp($rowData[$VIEW_LIST[$iCount]["object"]], $FORMAT_LIST[$jCount]["value"]) == 0)
							{
								print $FORMAT_LIST[$jCount]["view"];
								break;
							}
						}
					}
					else if (strcmp($VIEW_LIST[$iCount]["object"], "priority") == 0)
					{
						$row = count($PRIORITY_LIST);
						for($jCount = 0; $jCount < $row; $jCount++)
						{
							if (strcmp($rowData[$VIEW_LIST[$iCount]["object"]], $PRIORITY_LIST[$jCount]["value"]) == 0)
							{
								print $PRIORITY_LIST[$jCount]["view"];
								break;
							}
						}
					}
					else if (strcmp($VIEW_LIST[$iCount]["object"], "msg_id1") == 0 || strcmp($VIEW_LIST[$iCount]["object"], "msg_id2") == 0 || strcmp($VIEW_LIST[$iCount]["object"], "msg_id3") == 0 || strcmp($VIEW_LIST[$iCount]["object"], "msg_id4") == 0)
					{
						$row = count($msgList);
						for($jCount = 0; $jCount < $row; $jCount++)
						{
							if (strcmp($rowData[$VIEW_LIST[$iCount]["object"]], $msgList[$jCount]["msg_id"]) == 0)
							{
								print $msgList[$jCount]["msg_info"];
								break;
							}
						}
					}
					break;
				case 4:
					$row = count($vertexList);
					for($jCount = 0; $jCount < $row; $jCount++)
					{
						if ($rowData["area_id"] == $vertexList[$jCount]["id"])
						{
							if (strcmp($rowData[$VIEW_LIST[$iCount]["object"]], $vertexList[$jCount]["vertex"]) == 0)
								print "<font color=\"#000000\">";
							else
								print "<font color=\"#FF0000\">";
							
							print $rowData[$VIEW_LIST[$iCount]["object"]]. "(". $vertexList[$jCount]["vertex"]. ")";
							print "</font>";
							break;
						}
					}
					break;
				default:
					throw new Exception("リストに存在しません");
					break;
			}
			print "</td>";
			print "</tr>";
		}
		print "</table>";
		print "</td>";
		print "</tr>";
		print "</table>";
	}
	
	//===============================================
	//	確認、登録ボタン
	//	備考		：	
	//	更新		：	2012/10/19 KMK-Teraoka
	//===============================================
	if ($delMode != 1)
	{
		print "<input type=\"submit\" name=\"btnDelete\" value=\"削除\" style=\"width:60px\" id=\"submit_button\">";
		print "<br />";
		print "<input type=\"hidden\" name=\"area_id\" value=\"". $areaId. "\">";
		print "<input type=\"hidden\" name=\"list_id\" value=\"". $listId. "\">";
		print "<input type=\"hidden\" name=\"events_name\" value=\"". $eventsName. "\">";
		print "</form>";
		print "<br />";
	}
}
catch(Exception $exc)
{
	print "<font color=\"#FF0000\">";
	print "【スクリプトエラー】<br />";
	print $exc->getMessage(). "<br />";
	print "</font>";
}

//===============================================
//	一覧リンク
//	備考		：	
//	更新		：	2012/10/19 KMK-Teraoka
//===============================================
print "<form name=\"listForm\" method=\"post\" action=\"". $LIST_FORM. "\" style=\"display:inline\">";
print "<a href=\"javascript:listForm.submit()\">一覧</a>";
print "<input type=\"hidden\" name=\"list_id\" value=\"". $listId. "\">";
print "<input type=\"hidden\" name=\"events_name\" value=\"". $eventsName. "\">";
print "</form>";
print "<br />";

//===============================================
//	Postgresql終了処理
//	備考		：	
//	更新		：	2012/10/19 KMK-Teraoka
//===============================================
pg_close($conn);

//===============================================
//	HTML終了処理
//	備考		：	
//	更新		：	2012/10/18 KMK-Teraoka
//===============================================
print "<hr />";
print "<font size=\"3\" color=\"#000000\" face=\"Arial\">";
print "<center>";
print "<b>";
print "<i>";
print $TAIL_PENTA_OCEAN;
print "</i>";
print "</b>";
print "</center>";
print "</font>";
print "</body>";
print "</html>";
?>
