comparison index.php @ 18:19cd7816b2c1

change: draw main program table too fast.
author Sushi-k <epgrec@park.mda.or.jp>
date Thu, 16 Jul 2009 11:54:24 +0900
parents f5a9f0eb4858
children 18df04305501
comparison
equal deleted inserted replaced
17:d3ee3927eb3a 18:19cd7816b2c1
34 // 番組表 34 // 番組表
35 $programs = array(); 35 $programs = array();
36 if( $type == "BS" ) $channel_map = $BS_CHANNEL_MAP; 36 if( $type == "BS" ) $channel_map = $BS_CHANNEL_MAP;
37 else if( $type == "GR" ) $channel_map = $GR_CHANNEL_MAP; 37 else if( $type == "GR" ) $channel_map = $GR_CHANNEL_MAP;
38 $st = 0; 38 $st = 0;
39 $prec = new DBRecord(TBL_PREFIX.PROGRAM_TBL);
39 foreach( $channel_map as $channel_disc => $channel ) { 40 foreach( $channel_map as $channel_disc => $channel ) {
40 $prev_end = $top_time; 41 $prev_end = $top_time;
41 try { 42 try {
42 $crec = new DBRecord( TBL_PREFIX . CHANNEL_TBL, "channel_disc", $channel_disc ); 43 $crec = new DBRecord( TBL_PREFIX . CHANNEL_TBL, "channel_disc", $channel_disc );
43 $programs[$st]["station_name"] = $crec->name; 44 $programs[$st]["station_name"] = $crec->name;
44 $prec = DBRecord::createRecords( TBL_PREFIX . PROGRAM_TBL, "". 45
45 "WHERE channel_disc = '".$channel_disc."' ". 46 $reca = $prec->fetch_array( "channel_disc", $channel_disc,
46 "AND endtime > '".toDatetime($top_time)."' ". 47 "endtime > '".toDatetime($top_time)."' ".
47 "AND starttime < '". toDatetime($last_time)."' ". 48 "AND starttime < '". toDatetime($last_time)."' ".
48 "ORDER BY starttime ASC " 49 "ORDER BY starttime ASC "
49 ); 50 );
50 $programs[$st]['list'] = array(); 51 $programs[$st]['list'] = array();
51 $num = 0; 52 $num = 0;
52 foreach( $prec as $prg ) { 53 foreach( $reca as $prg ) {
53 // 前プログラムとの空きを調べる 54 // 前プログラムとの空きを調べる
54 $start = toTimestamp( $prg->starttime ); 55 $start = toTimestamp( $prg['starttime'] );
55 if( $start - $prev_end ) { 56 if( $start - $prev_end ) {
56 $height = ($start-$prev_end) / 60; 57 $height = ($start-$prev_end) / 60;
57 if( $height > 0.5 ) { 58 if( $height > 0.5 ) {
58 $height = (int)($height * 2); 59 $height = (int)($height * 2);
59 $programs[$st]['list'][$num]['category_none'] = "none"; 60 $programs[$st]['list'][$num]['category_none'] = "none";
62 $programs[$st]['list'][$num]['starttime'] = ""; 63 $programs[$st]['list'][$num]['starttime'] = "";
63 $programs[$st]['list'][$num]['description'] = ""; 64 $programs[$st]['list'][$num]['description'] = "";
64 $num++; 65 $num++;
65 } 66 }
66 } 67 }
67 $prev_end = toTimestamp( $prg->endtime ); 68 $prev_end = toTimestamp( $prg['endtime'] );
68 69
69 $height = (int)((toTimestamp($prg->endtime) - toTimestamp($prg->starttime)) / 30); 70 $height = (int)((toTimestamp($prg['endtime']) - toTimestamp($prg['starttime'])) / 30);
70 // $top_time より早く始まっている番組 71 // $top_time より早く始まっている番組
71 if( toTimestamp($prg->starttime) <$top_time ) { 72 if( toTimestamp($prg['starttime']) <$top_time ) {
72 $height = (int)((toTimestamp($prg->endtime) - $top_time ) / 30); 73 $height = (int)((toTimestamp($prg['endtime']) - $top_time ) / 30);
73 } 74 }
74 // $last_time より遅く終わる番組 75 // $last_time より遅く終わる番組
75 if( toTimestamp($prg->endtime) > $last_time ) { 76 if( toTimestamp($prg['endtime']) > $last_time ) {
76 $height = (int)(($last_time - toTimestamp($prg->starttime)) / 30); 77 $height = (int)(($last_time - toTimestamp($prg['starttime'])) / 30);
77 } 78 }
78 79
79 // プログラムを埋める 80 // プログラムを埋める
80 $cat = new DBRecord( TBL_PREFIX . CATEGORY_TBL, "id", $prg->category_id ); 81 $cat = new DBRecord( TBL_PREFIX . CATEGORY_TBL, "id", $prg['category_id'] );
81 $programs[$st]['list'][$num]['category_name'] = $cat->name_en; 82 $programs[$st]['list'][$num]['category_name'] = $cat->name_en;
82 $programs[$st]['list'][$num]['height'] = $height; 83 $programs[$st]['list'][$num]['height'] = $height;
83 $programs[$st]['list'][$num]['title'] = $prg->title; 84 $programs[$st]['list'][$num]['title'] = $prg['title'];
84 $programs[$st]['list'][$num]['starttime'] = date("H:i", $start )."" ; 85 $programs[$st]['list'][$num]['starttime'] = date("H:i", $start )."" ;
85 $programs[$st]['list'][$num]['description'] = $prg->description; 86 $programs[$st]['list'][$num]['description'] = $prg['description'];
86 $programs[$st]['list'][$num]['prg_start'] = str_replace( "-", "/", $prg->starttime); 87 $programs[$st]['list'][$num]['prg_start'] = str_replace( "-", "/", $prg['starttime']);
87 $programs[$st]['list'][$num]['duration'] = "" . (toTimestamp($prg->endtime) - toTimestamp($prg->starttime)); 88 $programs[$st]['list'][$num]['duration'] = "" . (toTimestamp($prg['endtime']) - toTimestamp($prg['starttime']));
88 $programs[$st]['list'][$num]['channel'] = ($prg->type == "GR" ? "地上D" : "BS" ) . ":". $prg->channel . "ch"; 89 $programs[$st]['list'][$num]['channel'] = ($prg['type'] == "GR" ? "地上D" : "BS" ) . ":". $prg['channel'] . "ch";
89 $programs[$st]['list'][$num]['id'] = "" . ($prg->id); 90 $programs[$st]['list'][$num]['id'] = "" . ($prg['id']);
90 $programs[$st]['list'][$num]['rec'] = DBRecord::countRecords( TBL_PREFIX.RESERVE_TBL, "WHERE complete = '0' AND program_id = '".$prg->id."'" ); 91 $programs[$st]['list'][$num]['rec'] = DBRecord::countRecords( TBL_PREFIX.RESERVE_TBL, "WHERE complete = '0' AND program_id = '".$prg['id']."'" );
91 $num++; 92 $num++;
92 } 93 }
93 } 94 }
94 catch( exception $e ) { 95 catch( exception $e ) {
95 exit( $e->getMessage() ); 96 exit( $e->getMessage() );
107 $num++; 108 $num++;
108 } 109 }
109 } 110 }
110 $st++; 111 $st++;
111 } 112 }
113 $prec = null;
112 114
113 // 局の幅 115 // 局の幅
114 $ch_set_width = 150; 116 $ch_set_width = 150;
115 // 全体の幅 117 // 全体の幅
116 $chs_width = $ch_set_width * count( $channel_map ); 118 $chs_width = $ch_set_width * count( $channel_map );