diff 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
line wrap: on
line diff
--- a/storeProgram.inc.php	Mon Mar 15 01:39:14 2010 +0900
+++ b/storeProgram.inc.php	Sun Mar 21 03:15:00 2010 +0900
@@ -9,7 +9,12 @@
 	
 	// 8日以上先のデータがあれば消す
 	$arr = array();
-	$arr = DBRecord::createRecords(  PROGRAM_TBL, "WHERE starttime  > adddate( now(), 8 )" );
+	$arr = DBRecord::createRecords(  PROGRAM_TBL, "WHERE starttime  > adddate( now(), 8 ) ");
+	foreach( $arr as $val ) $val->delete();
+
+	// 8日以上前のログを消す
+	$arr = array();
+	$arr = DBRecord::createRecords(  LOG_TBL, "WHERE endtime < subdate( now(), 8 )" );
 	foreach( $arr as $val ) $val->delete();
 }
 
@@ -20,15 +25,17 @@
 	foreach( $arr as $val ) {
 		try {
 			$val->reservation();
+			reclog( "getepg::キーワードID".$val->id."を予約");
 		}
 		catch( Exception $e ) {
-		// 無視
+			// 無視
 		}
 	}
 }
 
 function storeProgram( $type, $xmlfile ) {
 	global $BS_CHANNEL_MAP, $GR_CHANNEL_MAP, $CS_CHANNEL_MAP;
+	
 	// チャンネルマップファイルの準備
 	$map = array();
 	if( $type == "BS" ) $map = $BS_CHANNEL_MAP;
@@ -38,6 +45,7 @@
 	// XML parse
   	$xml = @simplexml_load_file( $xmlfile );
 	if( $xml === false ) {
+		reclog( "getepg::".$xmlfile."が作成されなかった模様", E_ERROR );
 		return;	// XMLが読み取れないなら何もしない
 	}
 	// channel抽出
@@ -63,7 +71,7 @@
 		}
 	 }
 	 catch( Exception $e ) {
-		// 無視
+		reclog( "getepg::DBの接続またはチャンネルテーブルの書き込みに失敗", E_ERROR );
 	 }
 	}
 	// channel 終了
@@ -71,10 +79,21 @@
 	// programme 取得
 	
 	foreach( $xml->programme as $program ) {
+		$channel_rec = null;
+		
 		$channel_disc = $program['channel']; 
 		if( ! array_key_exists( "$channel_disc", $map ) ) continue;
+		$channel = $map["$channel_disc"];
 		
-		$channel = $map["$channel_disc"];
+		try {
+			$channel_rec = new DBRecord(CHANNEL_TBL, "channel_disc", "$channel_disc" );
+		}
+		catch( Exception $e ) {
+			reclog( "getepg::チャンネルレコードが発見できない", E_ERROR );
+		}
+		if( $channel_rec == null ) continue;	// あり得ないことが起きた
+		if( $channel_rec->skip == 1 ) continue;	// 受信しないチャンネル
+		
 		$starttime = str_replace(" +0900", '', $program['start'] );
 		$endtime = str_replace( " +0900", '', $program['stop'] );
 		$title = $program->title;
@@ -101,8 +120,7 @@
 		 }
 		 else
 			$cat_rec = new DBRecord(CATEGORY_TBL, "category_disc" , $category_disc );
-		  //
-		 $channel_rec = new DBRecord(CHANNEL_TBL, "channel_disc", $channel_disc );
+		 //
 		 $num = DBRecord::countRecords(PROGRAM_TBL, "WHERE program_disc = '".$program_disc."'" );
 		 if( $num == 0 ) {
 			// 新規番組
@@ -118,13 +136,15 @@
 					try {
 						$reserve = new DBRecord(RESERVE_TBL, "program_id", $rec->id );
 						if( $reserve->autorec ) {
+							reclog( "getepg::録画ID".$reserve->id."は時間変更の可能性あり予約を取り消し");
 							Reservation::cancel( $reserve->id );
 						}
 					}
 					catch( Exception $e ) {
-						//無視
+						// 無視
 					}
 					// 番組削除
+					reclog( "getepg::放送時間重複が発生した番組ID".$rec->id."を削除" );
 					$rec->delete();
 				}
 			}
@@ -150,9 +170,10 @@
 		 }
 		}
 		catch(Exception $e) {
+			reclog( "getepg::DBの入出力に問題が生じた模様", E_ERROR );
 			exit( $e->getMessage() );
 		}
 	}
 	// Programme取得完了
 }
-?>
\ No newline at end of file
+?>