<?php
	session_start();
	mb_language("Japanese");
	mb_internal_encoding('UTF-8');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="author" content="ok.2nd">
<meta name="description" content="MyHome Portal">
<style type="text/css">
<!--
* {margin: 0px; padding: 0px; }
form { margin: 0px; }
img { border: 0px; }
body {
	background-color: #ffffff;
	margin: 10px 20px;
	padding: 0px;
	text-align: left;
}
body {
	font-size: 84%;
	font-family: "ＭＳ Ｐゴシック",arial,helvetica,clean,sans-serif;
}
h1 { font-size: 130%; }
h2 { font-size: 120%; }
h3 { font-size: 108%; }
h4 { font-size: 100%; }
td { text-align: left; vertical-align: top; }
a { text-decoration: underline; font-weight: normal; }
a:link { color: #0000ff; font-weight: normal; }
a:visited { color: #0000ff; font-weight: normal; }
a:hover { color: #ff0000; font-weight: normal; }
a:active { color: #ff0000; font-weight: normal; }
.alarm_text { color: red; margin: 0; padding: 0 0 0 5px; }
.normal_text { color: black; }
.error_msg { color: red; margin: 20px; padding: 0; }
.noramal_msg { color: #000000; margin: 20px; padding: 0; }
-->
</style>
<title>MyHome Portal サンプルDB自動セットアップ</title>
</head>
<body>
<?php
	if ($_POST) {
		$_SESSION['mysql_root_id'] = $_POST['mysql_root_id'];
		$_SESSION['mysql_root_password'] = $_POST['mysql_root_password'];
		$_SESSION['install_path_myhome'] = str_replace("\\", "/", form_str_filepath($_POST['install_path_myhome']));
	} else {
		if ($_SESSION['install_path_myhome'] == '') {
			$_SESSION['install_path_myhome'] = $_SERVER['DOCUMENT_ROOT'].'/_myhome';
		}
	}
?>
<div class="input_form">
<h3><font color=blue>MyHome Portal サンプルDB自動セットアップ</font></h3>
<br>
<form name="form0" method="POST" action="<?= $_SERVER['SCRIPT_NAME'] ?>">
<table>
<tr>
	<td>MySQL管理者 ユーザー名：</td>
	<td><input type="text" name="mysql_root_id" size=10 value="<?= $_SESSION['mysql_root_id'] ?>"></td>
</tr>
<tr>
	<td>MySQL管理者 パスワード：</td>
	<td><input type="password" name="mysql_root_password" size=16 value="<?= $_SESSION['mysql_root_password'] ?>"></td>
</tr>
<tr>
	<td>_myhome ディレクトリ：</td>
	<td><input type="text" name="install_path_myhome" size=40 value="<?= $_SESSION['install_path_myhome'] ?>"></td>
</tr>
</table>
	<input type="submit" name="開始" value="開始">
	<br><br>
<?php
	if (!$_POST) {
		exit;
	}
	if ($_SESSION['mysql_root_id'].'' == '') {
		echo '<br><br>MySQL管理者 ユーザー名を入れてください。<br>';
		exit;
	}
	error_reporting(0);	//エラーメッセージ抑制
	if (!opendir(mb_convert_encoding($_SESSION['install_path_myhome'], 'SJIS-win', 'UTF-8'))) {
		echo '<br><br>ディレクトリ「<font color=red><b>'.$_SESSION['install_path_myhome'].'</b></font>」が、ありません。<br>';
		exit;
	}
	if (!opendir(mb_convert_encoding($_SESSION['install_path_myhome'].'/z_db_backup', 'SJIS-win', 'UTF-8'))) {
		echo '<br><br>ディレクトリ「<font color=red><b>'.$_SESSION['install_path_myhome'].'/z_db_backup'.'</b></font>」が、ありません。<br>';
		exit;
	}
	$con = mysql_connect('localhost', $_SESSION['mysql_root_id'], $_SESSION['mysql_root_password']);
	if ($con == False) {
		echo '<br><br>データベース接続エラー<br>';
		exit;
	}
	error_reporting(E_ALL);
	mysql_query('set names utf8');
	if (db_exist_check_all() > 0) {
		echo '<br>上記のデータベースが存在します。';
		if ($_POST['中止']) {
			echo '<br><br><br><font color=red>*****  セットアップを中止しました。 *****</font><br><br>';
			exit;
		}
		echo '<br>上記のデータベースを削除しても良ければ、次のボタンを押してください。<br><br>';
?>
	<input type="submit" name="削除" value="既存のデータベースを削除して、セットアップを継続">
	<input type="submit" name="中止" value="セットアップ中止">
	<br>
<?php
		if (!$_POST['削除']) {
			exit;
		}
	}
	$backup_file_path = $_SESSION['install_path_myhome'].'\z_db_backup';
	db_create_proc('_db_account', $backup_file_path);
	db_create_proc('_db_index', $backup_file_path);
	db_create_proc('_db_calendar', $backup_file_path);
	db_create_proc('_db_memo', $backup_file_path);
	db_create_proc('_db_bbs', $backup_file_path);
	db_create_proc('_db_rss', $backup_file_path);
	db_create_proc('_db_chat', $backup_file_path);
	db_create_proc('_db_kakeibo', $backup_file_path);
	db_create_proc('_db_study', $backup_file_path);
	db_create_proc('_db_abook', $backup_file_path);
	db_create_proc('_db_guide', $backup_file_path);
	db_create_proc('_db_zid_mgr_b', $backup_file_path, False);
	db_create_proc('_db_zid_mgr_a', $backup_file_path);

	$sql = "GRANT USAGE ON *.* TO myhome@localhost IDENTIFIED BY 'pass123';";
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_account.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_index.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_calendar.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_memo.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_bbs.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_rss.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_chat.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_kakeibo.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_study.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_abook.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_guide.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_zid_mgr_a.* TO myhome@localhost;';
	$sql .= 'GRANT SELECT,INSERT,UPDATE,DELETE ON _db_zid_mgr_b.* TO myhome@localhost;';
	$sql .= 'FLUSH PRIVILEGES;';
	mysqli_multi_query_by_text(NULL, $sql);
?>
</form>
<br><br>**********  サンプル・データベース　作成完了  **********<br><br>
<br><a href="http://localhost/_myhome/" target="_blank">http://localhost/_myhome/</a><br><br>
を開いて、アカウント名「<b>taro</b>」パスワード「<b>demo</b>」でログインしてください。<br><br>
MyHome Portalトップページが表示されればOKです。<br><br><br><br>
<?php
function db_create_proc($dbname, $backup_dir, $create_view = True) {
	echo '<br>------------------<br><font color=blue>【<b>'.$dbname.'</b>】</font><br>';
	// DB存在チェック
	error_reporting(0);	//エラーメッセージ抑制
	if (db_exist_check($dbname)) {
		mysql_query('drop  database '.$dbname);
	}
	error_reporting(E_ALL);
	// DB作成
	if (!mysql_query('create database '.$dbname)) {
		echo '<br>Create Database failed: ('.mysql_errno($con).') '.$mysql_error($con).'<br>';
		exit;
	}
	// バックアップファイル： ex. _db_memo.bk.txt
	mysqli_multi_query_by_file($dbname, $backup_dir, $dbname.'.bk.txt');
	// ビュー定義ファイル： ex. _db_memo.bk.txt
	if ($create_view) {
		mysqli_multi_query_by_file($dbname, $backup_dir, 'create_view'.$dbname.'.txt');
	}
}
function db_exist_check_all() {
	$db_exist = 0;
	$db_exist .= db_exist_check('_db_account', True);
	$db_exist .= db_exist_check('_db_index', True);
	$db_exist .= db_exist_check('_db_calendar', True);
	$db_exist .= db_exist_check('_db_memo', True);
	$db_exist .= db_exist_check('_db_bbs', True);
	$db_exist .= db_exist_check('_db_rss', True);
	$db_exist .= db_exist_check('_db_chat', True);
	$db_exist .= db_exist_check('_db_kakeibo', True);
	$db_exist .= db_exist_check('_db_study', True);
	$db_exist .= db_exist_check('_db_abook', True);
	$db_exist .= db_exist_check('_db_guide', True);
	$db_exist .= db_exist_check('_db_zid_mgr_b', True);
	$db_exist .= db_exist_check('_db_zid_mgr_a', True);
	return $db_exist;
}
function db_exist_check($dbname, $msg = False) {
	error_reporting(0);	//エラーメッセージ抑制
	if (mysqli_connect('localhost', $_SESSION['mysql_root_id'], $_SESSION['mysql_root_password'], $dbname)) {
		if ($msg) {
			echo 'データベース「<font color=red><b>'.$dbname.'</b></font>」が存在します。<br>';
		}
		return True;	//データベースが存在
	}
	return False;
}
function mysqli_multi_query_by_file($dbname, $backup_dir, $sql_file) {
	$sql_path = mb_convert_encoding($backup_dir.chr(0x5c).$sql_file, 'SJIS-win', 'UTF-8');
	echo '実行 → '.$sql_path.'<br>';
	$sql = file_get_contents($sql_path);

//echo str_replace("\n","<br>",str_replace('<','&lt;',$sql));

	$con = mysqli_connect('localhost', $_SESSION['mysql_root_id'], $_SESSION['mysql_root_password'], $dbname);
	if (mysqli_connect_errno()) {
		echo '<br>Connect failed: '.mysqli_connect_error().'<br>';
		exit;
	}
	if (!mysqli_multi_query($con, $sql)) {
		echo '<br>Create Table failed: ('.mysql_errno($con).') '.$mysql_error($con).'<br>';
		exit;
	}
	mysqli_close($con);
}
function mysqli_multi_query_by_text($dbname, $sql) {
	$con = mysqli_connect('localhost', $_SESSION['mysql_root_id'], $_SESSION['mysql_root_password']);
	if (mysqli_connect_errno()) {
		echo '<br>Connect failed: '.mysqli_connect_error().'<br>';
		exit;
	}
	if (!mysqli_multi_query($con, $sql)) {
		echo '<br>Create Table failed: ('.mysql_errno($con).') '.$mysql_error($con).'<br>';
		exit;
	}
	mysqli_close($con);
}
function form_str_filepath($str) {				//form入力データは stripslashes する
	if (get_magic_quotes_gpc()) {
		$str = stripslashes($str);
	}
	return trim($str);
}
?>