Index: php/listreserve.php =================================================================== --- php/listreserve.php (revision 87) +++ php/listreserve.php (revision 88) @@ -201,16 +201,30 @@ $overlap = m_query($con, $query, "DBクエリに失敗しました"); $overlapmaxrows = pg_num_rows($overlap); if ($overlapmaxrows > ($recunits) ){ + + $owtimeline = array(); + for ($rrow = 0; $rrow < $overlapmaxrows ; $rrow++) { - $owrowdata = pg_fetch_row($overlap, $rrow); - $overlappid[] = $owrowdata[9]; + $owrowdata = pg_fetch_array($overlap, $rrow); + $owtimeline[ $owrowdata['startdatetime'] ] = $owtimeline[ $owrowdata['startdatetime'] ] +1; + + $owrend = calcendtime( $owrowdata['startdatetime'], $owrowdata['lengthmin'] ); + $owtimeline[ $owrend ] = $owtimeline[ $owrend ] -1; + //注意: NULL に減算子を適用しても何も起こりませんが、NULL に加算子を 適用すると 1 となります。 } - if (in_array($rowdata[9], $overlappid)) { - $rclass = "overwraped"; + + ksort ( $owtimeline ); + + $owcount = 0; + foreach ( $owtimeline as $key => $val ) { + $owcount += $val; + + if ( $owcount > $recunits ) { + $rclass = "overwraped"; + break; + } + } } - }else{ - $overlappid = ""; - }//end if //外部チューナー録画 $externalinputs = 1; //現状一系統のみ @@ -258,16 +272,29 @@ $eoverlap = m_query($con, $query, "DBクエリに失敗しました"); $eoverlapmaxrows = pg_num_rows($eoverlap); if ($eoverlapmaxrows > ($externalinputs) ){ + + $eowtimeline = array(); + for ($erow = 0; $erow < $eoverlapmaxrows ; $erow++) { - $eowrowdata = pg_fetch_row($eoverlap, $erow); - $eoverlappid[] = $eowrowdata[9]; + $eowrowdata = pg_fetch_array($eoverlap, $erow); + $eowtimeline[ $eowrowdata['startdatetime'] ] = $eowtimeline[ $eowrowdata['startdatetime'] ] +1; + + $eowrend = calcendtime( $eowrowdata['startdatetime'], $eowrowdata['lengthmin'] ); + $eowtimeline[ $eowrend ] = $eowtimeline[ $eowrend ] -1; } - - if (in_array($rowdata[9], $eoverlappid)) { - $rclass = "exoverwraped"; + + ksort ( $eowtimeline ); + + $eowcount = 0; + foreach ( $eowtimeline as $key => $val ) { + $eowcount += $val; + + if ( $eowcount > $externalinputs ) { + $rclass = "exoverwraped"; + break; + } } - }else{ - $eoverlappid = ""; + } echo("\n"); // TID