comparison storeProgram.inc.php @ 137:a18df712fc7e

merged with upstream
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Sun, 21 Mar 2010 03:15:00 +0900
parents 9c5e597ef6c6
children 481e789605e3
comparison
equal deleted inserted replaced
119:b172a0b1ea48 137:a18df712fc7e
7 $arr = DBRecord::createRecords( PROGRAM_TBL, "WHERE endtime < subdate( now(), 8 )" ); 7 $arr = DBRecord::createRecords( PROGRAM_TBL, "WHERE endtime < subdate( now(), 8 )" );
8 foreach( $arr as $val ) $val->delete(); 8 foreach( $arr as $val ) $val->delete();
9 9
10 // 8日以上先のデータがあれば消す 10 // 8日以上先のデータがあれば消す
11 $arr = array(); 11 $arr = array();
12 $arr = DBRecord::createRecords( PROGRAM_TBL, "WHERE starttime > adddate( now(), 8 )" ); 12 $arr = DBRecord::createRecords( PROGRAM_TBL, "WHERE starttime > adddate( now(), 8 ) ");
13 foreach( $arr as $val ) $val->delete();
14
15 // 8日以上前のログを消す
16 $arr = array();
17 $arr = DBRecord::createRecords( LOG_TBL, "WHERE endtime < subdate( now(), 8 )" );
13 foreach( $arr as $val ) $val->delete(); 18 foreach( $arr as $val ) $val->delete();
14 } 19 }
15 20
16 function doKeywordReservation() { 21 function doKeywordReservation() {
17 // キーワード自動録画予約 22 // キーワード自動録画予約
18 $arr = array(); 23 $arr = array();
19 $arr = Keyword::createKeywords(); 24 $arr = Keyword::createKeywords();
20 foreach( $arr as $val ) { 25 foreach( $arr as $val ) {
21 try { 26 try {
22 $val->reservation(); 27 $val->reservation();
28 reclog( "getepg::キーワードID".$val->id."を予約");
23 } 29 }
24 catch( Exception $e ) { 30 catch( Exception $e ) {
25 // 無視 31 // 無視
26 } 32 }
27 } 33 }
28 } 34 }
29 35
30 function storeProgram( $type, $xmlfile ) { 36 function storeProgram( $type, $xmlfile ) {
31 global $BS_CHANNEL_MAP, $GR_CHANNEL_MAP, $CS_CHANNEL_MAP; 37 global $BS_CHANNEL_MAP, $GR_CHANNEL_MAP, $CS_CHANNEL_MAP;
38
32 // チャンネルマップファイルの準備 39 // チャンネルマップファイルの準備
33 $map = array(); 40 $map = array();
34 if( $type == "BS" ) $map = $BS_CHANNEL_MAP; 41 if( $type == "BS" ) $map = $BS_CHANNEL_MAP;
35 else if( $type == "GR") $map = $GR_CHANNEL_MAP; 42 else if( $type == "GR") $map = $GR_CHANNEL_MAP;
36 else if( $type == "CS") $map = $CS_CHANNEL_MAP; 43 else if( $type == "CS") $map = $CS_CHANNEL_MAP;
37 44
38 // XML parse 45 // XML parse
39 $xml = @simplexml_load_file( $xmlfile ); 46 $xml = @simplexml_load_file( $xmlfile );
40 if( $xml === false ) { 47 if( $xml === false ) {
48 reclog( "getepg::".$xmlfile."が作成されなかった模様", E_ERROR );
41 return; // XMLが読み取れないなら何もしない 49 return; // XMLが読み取れないなら何もしない
42 } 50 }
43 // channel抽出 51 // channel抽出
44 foreach( $xml->channel as $ch ) { 52 foreach( $xml->channel as $ch ) {
45 $disc = $ch['id']; 53 $disc = $ch['id'];
61 $rec = new DBRecord(CHANNEL_TBL, "channel_disc", $disc ); 69 $rec = new DBRecord(CHANNEL_TBL, "channel_disc", $disc );
62 $rec->name = $ch->{'display-name'}; 70 $rec->name = $ch->{'display-name'};
63 } 71 }
64 } 72 }
65 catch( Exception $e ) { 73 catch( Exception $e ) {
66 // 無視 74 reclog( "getepg::DBの接続またはチャンネルテーブルの書き込みに失敗", E_ERROR );
67 } 75 }
68 } 76 }
69 // channel 終了 77 // channel 終了
70 78
71 // programme 取得 79 // programme 取得
72 80
73 foreach( $xml->programme as $program ) { 81 foreach( $xml->programme as $program ) {
82 $channel_rec = null;
83
74 $channel_disc = $program['channel']; 84 $channel_disc = $program['channel'];
75 if( ! array_key_exists( "$channel_disc", $map ) ) continue; 85 if( ! array_key_exists( "$channel_disc", $map ) ) continue;
86 $channel = $map["$channel_disc"];
76 87
77 $channel = $map["$channel_disc"]; 88 try {
89 $channel_rec = new DBRecord(CHANNEL_TBL, "channel_disc", "$channel_disc" );
90 }
91 catch( Exception $e ) {
92 reclog( "getepg::チャンネルレコードが発見できない", E_ERROR );
93 }
94 if( $channel_rec == null ) continue; // あり得ないことが起きた
95 if( $channel_rec->skip == 1 ) continue; // 受信しないチャンネル
96
78 $starttime = str_replace(" +0900", '', $program['start'] ); 97 $starttime = str_replace(" +0900", '', $program['start'] );
79 $endtime = str_replace( " +0900", '', $program['stop'] ); 98 $endtime = str_replace( " +0900", '', $program['stop'] );
80 $title = $program->title; 99 $title = $program->title;
81 $desc = $program->desc; 100 $desc = $program->desc;
82 $cat_ja = ""; 101 $cat_ja = "";
99 $cat_rec->name_en = $cat_en; 118 $cat_rec->name_en = $cat_en;
100 $cat_rec->category_disc = $category_disc; 119 $cat_rec->category_disc = $category_disc;
101 } 120 }
102 else 121 else
103 $cat_rec = new DBRecord(CATEGORY_TBL, "category_disc" , $category_disc ); 122 $cat_rec = new DBRecord(CATEGORY_TBL, "category_disc" , $category_disc );
104 // 123 //
105 $channel_rec = new DBRecord(CHANNEL_TBL, "channel_disc", $channel_disc );
106 $num = DBRecord::countRecords(PROGRAM_TBL, "WHERE program_disc = '".$program_disc."'" ); 124 $num = DBRecord::countRecords(PROGRAM_TBL, "WHERE program_disc = '".$program_disc."'" );
107 if( $num == 0 ) { 125 if( $num == 0 ) {
108 // 新規番組 126 // 新規番組
109 // 重複チェック 同時間帯にある番組 127 // 重複チェック 同時間帯にある番組
110 $options = "WHERE channel_disc = '".$channel_disc."' ". 128 $options = "WHERE channel_disc = '".$channel_disc."' ".
116 foreach( $records as $rec ) { 134 foreach( $records as $rec ) {
117 // 自動録画予約された番組は放映時間変更と同時にいったん削除する 135 // 自動録画予約された番組は放映時間変更と同時にいったん削除する
118 try { 136 try {
119 $reserve = new DBRecord(RESERVE_TBL, "program_id", $rec->id ); 137 $reserve = new DBRecord(RESERVE_TBL, "program_id", $rec->id );
120 if( $reserve->autorec ) { 138 if( $reserve->autorec ) {
139 reclog( "getepg::録画ID".$reserve->id."は時間変更の可能性あり予約を取り消し");
121 Reservation::cancel( $reserve->id ); 140 Reservation::cancel( $reserve->id );
122 } 141 }
123 } 142 }
124 catch( Exception $e ) { 143 catch( Exception $e ) {
125 //無視 144 // 無視
126 } 145 }
127 // 番組削除 146 // 番組削除
147 reclog( "getepg::放送時間重複が発生した番組ID".$rec->id."を削除" );
128 $rec->delete(); 148 $rec->delete();
129 } 149 }
130 } 150 }
131 // // 151 // //
132 $rec = new DBRecord( PROGRAM_TBL ); 152 $rec = new DBRecord( PROGRAM_TBL );
148 $rec->description = $desc; 168 $rec->description = $desc;
149 $rec->category_id = $cat_rec->id; 169 $rec->category_id = $cat_rec->id;
150 } 170 }
151 } 171 }
152 catch(Exception $e) { 172 catch(Exception $e) {
173 reclog( "getepg::DBの入出力に問題が生じた模様", E_ERROR );
153 exit( $e->getMessage() ); 174 exit( $e->getMessage() );
154 } 175 }
155 } 176 }
156 // Programme取得完了 177 // Programme取得完了
157 } 178 }