epgrec EPG放送局変動対処パッチ改良版

あっちで公表したパッチだが実際に局名変更があった場合にも対応できるよう改良した。

このパッチを当てることで
・番組表で放送局名と番組が別の局のものに変わってしまうことがある
・違う局の番組を録画されることがある
・予約したのに録画されないことがある
といった症状が改善される。

diff -u ./org/storeProgram.inc.php ./new/storeProgram.inc.php
--- ./org/storeProgram.inc.php	2011-09-18 02:16:56.833081000 +0900
+++ ./new/storeProgram.inc.php	2011-09-18 02:18:07.745810000 +0900
@@ -66,9 +66,18 @@
 			}
 		}
 		else {
-			// 存在した場合も、とりあえずチャンネル名は更新する
 			$rec = new DBRecord(CHANNEL_TBL, "channel_disc", $disc );
-			$rec->name = $ch->{'display-name'};
+			if( strcmp( $rec->name, $ch->{'display-name'} ) ){
+				$num = DBRecord::countRecords( CHANNEL_TBL , "WHERE name = '".$ch->{'display-name'}."'" );
+				if( $num == 0 )
+					$rec->name = $ch->{'display-name'};
+				else{
+					reclog( 'EPG更新::チャンネル名が違います('.$disc.' '.$rec->name.' -> '.$ch->{'display-name'}.' '.$xmlfile.')', E_ERROR );
+//					$new_name = $xmlfile.'.'.toDatetime(time());
+//					rename( $xmlfile, $new_name );
+					return;	//信頼できないデータなので終了
+				}
+			}
 		}
 	 }
 	 catch( Exception $e ) {