2011年1月9日日曜日

epgrec EPG更新(時間追従)不具合パッチ(場当たり版)

(11.02.15  タイトルを「epgrec番組追跡(時間追従)不具合パッチ(場当たり版)」 から現行に変更)
 
まあ役に立たない事ばかりを書いているだけなのも何なので当たり障りのない部分のパッチを上げておこう。
このパッチでは、 枠移動かタイトルの更新なのか判定できないが実用上問題ない。
完全対策をするには、$program_discのMD5算出時にEIDを加えればいい。この場合、今回のパッチを適用する必要はないがepgdumpの改修とEPGのDBをdropする必要がある。

パッチ当ては、手動でヨロ

storeProgram.inc.php ----------------------------------------------------------------------------

            else {
                // 番組内容更新
                $rec = new DBRecord( PROGRAM_TBL, "program_disc", $program_disc );
                //枠移動チェック
                if( $rec->title != $title ){
                    try {
                        $reserve = new DBRecord( RESERVE_TBL, "program_id", $rec->id );
                        //自動キーワード予約判定
                        if( $reserve->autorec &&  toTimestamp($reserve->starttime)-PADDING_TIME > time() )
                            Reservation::cancel( $reserve->id );
                        else
                        if( $reserve->dirty == 0 && toTimestamp($reserve->starttime)-$settings->former_time > time() ){
                            // dirtyが立っておらず現在より後の録画予約であるなら
                            $reserve->title = $title;
                            $reserve->description = $desc;
                            reclog( "getepg:: 予約ID".$reserve->id."のEPG情報が更新された" );
                        }
                    }
                    catch( Exception $e ) {
                        // 無視する
                    }
                    $rec->title = $title;
                }
                $rec->description = $desc;
                $rec->category_id = $cat_rec->id;
            }
        }
        catch(Exception $e) {
            reclog( "getepg:: プログラムテーブルに問題が生じた模様", EPGREC_ERROR );
            reclog( "getepg:: ".$e->getMessage()."" , EPGREC_ERROR);
            exit( $e->getMessage() );
        }
    }
    // Programme取得完了
}
?>

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。