3 $script_path = dirname( __FILE__ );
5 include_once($script_path . '/config.php');
6 include_once(INSTALL_PATH . '/Settings.class.php' );
7 include_once(INSTALL_PATH . '/DBRecord.class.php' );
8 include_once(INSTALL_PATH . '/tableStruct.inc.php' );
10 // mysqli::multi_queryは動作がいまいちなので使わない
12 function multi_query( $sqlstrs, $dbh ) {
15 foreach( $sqlstrs as $sqlstr ) {
16 $res = mysql_query( $sqlstr );
17 if( $res === FALSE ) {
18 echo "failed: ". $sqlstr . "\n";
25 function column_exists( $tbl, $col, $dbh ) {
26 $sqlstr = "show fields from ".$tbl." where Field='".$col."'";
27 $res = mysql_query( $sqlstr, $dbh );
28 return mysql_num_rows($res);
31 function index_exists( $tbl, $idx, $dbh ) {
32 $sqlstr = "show index from ".$tbl." where Key_name='".$idx."'";
33 $res = mysql_query( $sqlstr, $dbh );
34 return mysql_num_rows($res);
38 $settings = Settings::factory();
39 $dbh = mysql_connect( $settings->db_host, $settings->db_user, $settings->db_pass );
40 if( $dbh !== FALSE ) {
42 $sqlstr = "use ".$settings->db_name;
43 mysql_query( $sqlstr );
45 $sqlstr = "set NAMES 'utf8'";
46 mysql_query( $sqlstr );
51 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify channel_disc varchar(128) not null default 'none';", // channel disc
52 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify channel_id integer not null default '0';", // channel ID
53 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify program_id integer not null default '0';", // Program ID
54 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify type varchar(8) not null default 'GR';", // 種別(GR/BS/CS)
55 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify channel varchar(10) not null default '0';", // チャンネル
56 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify title varchar(512) not null default 'none';", // タイトル
57 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify description varchar(512) not null default 'none';", // 説明 text->varchar
58 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify category_id integer not null default '0';", // カテゴリID
59 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify starttime datetime not null default '1970-01-01 00:00:00';", // 開始時刻
60 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify endtime datetime not null default '1970-01-01 00:00:00';", // 終了時刻
61 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify job integer not null default '0';", // job番号
62 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify path blob default null;", // 録画ファイルパス
63 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify complete boolean not null default '0';", // 完了フラグ
64 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify reserve_disc varchar(128) not null default 'none';", // 識別用hash
65 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify autorec integer not null default '0';", // キーワードID
66 "alter table ".$settings->tbl_prefix.RESERVE_TBL." modify mode integer not null default '0';", //録画モード
69 if( column_exists( $settings->tbl_prefix.RESERVE_TBL, "dirty", $dbh) ) {
70 echo "dirtyフィールドはすでに存在しているため作成しません\n";
73 array_push( $sqlstrs, "alter table ".$settings->tbl_prefix.RESERVE_TBL." add dirty boolean not null default '0';" );
76 if( multi_query( $sqlstrs, $dbh ) ) {
77 echo "予約テーブルのアップデートに失敗\n";
82 if( index_exists( $settings->tbl_prefix.RESERVE_TBL, "reserve_ch_idx", $dbh ) ) {
83 echo "reserve_ch_idxはすでに存在しているため作成しません\n";
86 array_push( $sqlstrs, "create index reserve_ch_idx on ".$settings->tbl_prefix.RESERVE_TBL." (channel_disc);" );
88 if( index_exists( $settings->tbl_prefix.RESERVE_TBL, "reserve_st_idx", $dbh ) ) {
89 echo "reserve_st_idxはすでに存在しているため作成しません\n";
92 array_push( $sqlstrs, "create index reserve_st_idx on ".$settings->tbl_prefix.RESERVE_TBL." (starttime);" );
94 if( multi_query( $sqlstrs, $dbh ) ) {
95 echo "予約テーブルにインデックスが作成できません\n";
101 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify channel_disc varchar(128) not null default 'none';", // channel disc
102 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify channel_id integer not null default '0';", // channel ID
103 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify type varchar(8) not null default 'GR';", // 種別(GR/BS/CS)
104 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify channel varchar(10) not null default '0';", // チャンネル
105 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify title varchar(512) not null default 'none';", // タイトル
106 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify description varchar(512) not null default 'none';", // 説明 text->varchar
107 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify category_id integer not null default '0';", // カテゴリID
108 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify starttime datetime not null default '1970-01-01 00:00:00';", // 開始時刻
109 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify endtime datetime not null default '1970-01-01 00:00:00';", // 終了時刻
110 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify program_disc varchar(128) not null default 'none';", // 識別用hash
111 "alter table ".$settings->tbl_prefix.PROGRAM_TBL." modify autorec boolean not null default '1';", // 自動録画有効無効
114 if( multi_query( $sqlstrs, $dbh ) ) {
115 echo "番組テーブルのアップデートに失敗\n";
120 if( index_exists( $settings->tbl_prefix.PROGRAM_TBL , "program_ch_idx", $dbh ) ) {
121 echo "program_ch_idxはすでに存在しているため作成しません\n";
124 array_push( $sqlstrs, "create index program_ch_idx on ".$settings->tbl_prefix.PROGRAM_TBL." (channel_disc);" );
126 if( index_exists( $settings->tbl_prefix.PROGRAM_TBL , "program_st_idx", $dbh ) ) {
127 echo "program_st_idxはすでに存在しているため作成しません\n";
130 array_push( $sqlstrs, "create index program_st_idx on ".$settings->tbl_prefix.PROGRAM_TBL." (starttime);" );
132 if( multi_query( $sqlstrs, $dbh ) ) {
133 echo "番組テーブルにインデックスが作成できません\n";
139 "alter table ".$settings->tbl_prefix.CHANNEL_TBL." modify type varchar(8) not null default 'GR';", // 種別
140 "alter table ".$settings->tbl_prefix.CHANNEL_TBL." modify channel varchar(10) not null default '0';", // channel
141 "alter table ".$settings->tbl_prefix.CHANNEL_TBL." modify name varchar(512) not null default 'none';", // 表示名
142 "alter table ".$settings->tbl_prefix.CHANNEL_TBL." modify channel_disc varchar(128) not null default 'none';", // 識別用hash
144 if( column_exists( $settings->tbl_prefix.CHANNEL_TBL, "sid", $dbh ) ) {
145 echo "sidフィールドは存在しているので作成しません\n";
148 array_push( $sqlstrs , "alter table ".$settings->tbl_prefix.CHANNEL_TBL." add sid varchar(64) not null default 'hd'" );
150 if( column_exists( $settings->tbl_prefix.CHANNEL_TBL, "skip", $dbh ) ) {
151 echo "skipフィールドは存在しているので作成しません\n";
154 array_push( $sqlstrs , "alter table ".$settings->tbl_prefix.CHANNEL_TBL." add skip boolean not null default '0'" );
156 if( multi_query( $sqlstrs, $dbh ) ) {
157 echo "チャンネルテーブルのアップデートに失敗\n";
163 "alter table ".$settings->tbl_prefix.CATEGORY_TBL." modify name_jp varchar(512) not null default 'none';", // 表示名
164 "alter table ".$settings->tbl_prefix.CATEGORY_TBL." modify name_en varchar(512) not null default 'none';", // 同上
165 "alter table ".$settings->tbl_prefix.CATEGORY_TBL." modify category_disc varchar(128) not null default 'none'", // 識別用hash
167 if( multi_query( $sqlstrs, $dbh ) ) {
168 echo "カテゴリテーブルのアップデートに失敗\n";
174 "alter table ".$settings->tbl_prefix.KEYWORD_TBL." modify keyword varchar(512) not null default '*';", // 表示名
175 "alter table ".$settings->tbl_prefix.KEYWORD_TBL." modify type varchar(8) not null default '*';", // 種別
176 "alter table ".$settings->tbl_prefix.KEYWORD_TBL." modify channel_id integer not null default '0';", // channel ID
177 "alter table ".$settings->tbl_prefix.KEYWORD_TBL." modify category_id integer not null default '0';", // カテゴリID
178 "alter table ".$settings->tbl_prefix.KEYWORD_TBL." modify use_regexp boolean not null default '0';", // 正規表現を使用するなら1
180 if( column_exists( $settings->tbl_prefix.KEYWORD_TBL, "autorec_mode", $dbh ) ) {
181 echo "autorec_modeは存在しているので作成しません\n";
184 array_push( $sqlstrs, "alter table ".$settings->tbl_prefix.KEYWORD_TBL." add autorec_mode integer not null default '0';");
186 if( column_exists( $settings->tbl_prefix.KEYWORD_TBL, "weekofday", $dbh ) ) {
187 echo "weekofdayは存在しているので作成しません\n";
188 array_push( $sqlstrs, "alter table ".$settings->tbl_prefix.KEYWORD_TBL." modify weekofday enum ('0','1','2','3','4','5','6','7' ) not null default '7'" );
191 array_push( $sqlstrs, "alter table ".$settings->tbl_prefix.KEYWORD_TBL." add weekofday enum ('0','1','2','3','4','5','6','7' ) not null default '7'" );
193 if( column_exists( $settings->tbl_prefix.KEYWORD_TBL, "prgtime", $dbh ) ) {
194 echo "prgtimeは存在しているので作成しません\n";
195 array_push( $sqlstrs,
196 "alter table ".$settings->tbl_prefix.KEYWORD_TBL." modify prgtime enum ('0','1','2','3','4','5','6','7','8','9','10','11','12',".
197 "'13','14','15','16','17','18','19','20','21','22','23','24') not null default '24'" );
200 array_push( $sqlstrs,
201 "alter table ".$settings->tbl_prefix.KEYWORD_TBL." add prgtime enum ('0','1','2','3','4','5','6','7','8','9','10','11','12',".
202 "'13','14','15','16','17','18','19','20','21','22','23','24') not null default '24'" );
205 if( multi_query( $sqlstrs, $dbh ) ) {
206 echo "キーワードテーブルのアップデートに失敗\n";
212 $log = new DBRecord( LOG_TBL );
213 $log->createTable( LOG_STRUCT );
215 catch( Exception $e ) {
216 echo $e->getMessage();
222 exit( "DBの接続に失敗\n" );