Mercurial > epgrec.yaz
comparison Reservation.class.php @ 137:a18df712fc7e
merged with upstream
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Sun, 21 Mar 2010 03:15:00 +0900 |
parents | b172a0b1ea48 9c5e597ef6c6 |
children | 0ded1d3bd448 |
comparison
equal
deleted
inserted
replaced
119:b172a0b1ea48 | 137:a18df712fc7e |
---|---|
1 <?php | 1 <?php |
2 include_once('config.php'); | 2 include_once('config.php'); |
3 include_once( INSTALL_PATH . "/DBRecord.class.php" ); | 3 include_once( INSTALL_PATH . "/DBRecord.class.php" ); |
4 include_once( INSTALL_PATH . "/reclib.php" ); | 4 include_once( INSTALL_PATH . "/reclib.php" ); |
5 include_once( INSTALL_PATH . "/Settings.class.php" ); | 5 include_once( INSTALL_PATH . "/Settings.class.php" ); |
6 include_once( INSTALL_PATH . "/recLog.inc.php" ); | |
6 | 7 |
7 | 8 |
8 // 予約クラス | 9 // 予約クラス |
9 | 10 |
10 class Reservation { | 11 class Reservation { |
75 } | 76 } |
76 | 77 |
77 $crec = new DBRecord( CHANNEL_TBL, "id", $channel_id ); | 78 $crec = new DBRecord( CHANNEL_TBL, "id", $channel_id ); |
78 | 79 |
79 // 既存予約数 = TUNER番号 | 80 // 既存予約数 = TUNER番号 |
80 $tuners = ($crec->type == "GR") ? $settings->gr_tuners : $settings->bs_tuners; | 81 $tuners = ($crec->type == "GR") ? (int)($settings->gr_tuners) : (int)($settings->bs_tuners); |
81 $type_str = ($crec->type == "GR") ? "type = 'GR' " : "(type = 'BS' OR type = 'CS') "; | 82 $type_str = ($crec->type == "GR") ? "type = 'GR' " : "(type = 'BS' OR type = 'CS') "; |
82 | 83 |
83 $battings = DBRecord::countRecords( RESERVE_TBL, "WHERE complete = '0' ". | 84 $battings = DBRecord::countRecords( RESERVE_TBL, "WHERE complete = '0' ". |
84 "AND ".$type_str. | 85 "AND ".$type_str. |
85 "AND starttime < '".toDatetime($end_time) ."' ". | 86 "AND starttime < '".toDatetime($end_time) ."' ". |
175 | 176 |
176 // 改めてdurationをチェックしなおす | 177 // 改めてdurationをチェックしなおす |
177 if( $duration < ($settings->former_time + 60) ) { // 60秒以下の番組は弾く | 178 if( $duration < ($settings->former_time + 60) ) { // 60秒以下の番組は弾く |
178 throw new Exception( "終わりつつある/終わっている番組です" ); | 179 throw new Exception( "終わりつつある/終わっている番組です" ); |
179 } | 180 } |
180 | 181 |
181 | |
182 // ここからファイル名生成 | 182 // ここからファイル名生成 |
183 /* | 183 /* |
184 %TITLE% 番組タイトル | 184 %TITLE% 番組タイトル |
185 %ST% 開始日時(ex.200907201830) | 185 %ST% 開始日時(ex.200907201830) |
186 %ET% 終了日時 | 186 %ET% 終了日時 |
201 $filename = $settings->filename_format; | 201 $filename = $settings->filename_format; |
202 // あると面倒くさそうな文字を全部_に | 202 // あると面倒くさそうな文字を全部_に |
203 $fn_title = mb_ereg_replace("[ \./\*:<>\?\\|()\'\"&]","_", trim($title) ); | 203 $fn_title = mb_ereg_replace("[ \./\*:<>\?\\|()\'\"&]","_", trim($title) ); |
204 | 204 |
205 // %TITLE% | 205 // %TITLE% |
206 $filename = str_replace("%TITLE%", $fn_title, $filename); | 206 $filename = mb_str_replace("%TITLE%", trim($title), $filename); |
207 // %ST% 開始日時 | 207 // %ST% 開始日時 |
208 $filename = str_replace("%ST%",date("YmdHis", $start_time), $filename ); | 208 $filename = str_replace("%ST%",date("YmdHis", $start_time), $filename ); |
209 // %ET% 終了日時 | 209 // %ET% 終了日時 |
210 $filename = str_replace("%ET%",date("YmdHis", $end_time), $filename ); | 210 $filename = str_replace("%ET%",date("YmdHis", $end_time), $filename ); |
211 // %TYPE% GR/BS | 211 // %TYPE% GR/BS |
227 // %MIN% 開始分 | 227 // %MIN% 開始分 |
228 $filename = str_replace("%MIN%",date("i", $start_time), $filename ); | 228 $filename = str_replace("%MIN%",date("i", $start_time), $filename ); |
229 // %SEC% 開始秒 | 229 // %SEC% 開始秒 |
230 $filename = str_replace("%SEC%",date("s", $start_time), $filename ); | 230 $filename = str_replace("%SEC%",date("s", $start_time), $filename ); |
231 // %DURATION% 録画時間(秒) | 231 // %DURATION% 録画時間(秒) |
232 $filename = str_replace("%DURATION%","".$duration, $filename ); | 232 $filename = mb_str_replace("%DURATION%","".$duration, $filename ); |
233 | 233 |
234 // あると面倒くさそうな文字を全部_に | |
235 $filename = preg_replace("/[ \.\/\*:<>\?\\|()\'\"&]/u","_", trim($filename) ); | |
236 | |
234 // 文字コード変換 | 237 // 文字コード変換 |
235 if( defined("FILESYSTEM_ENCODING") ) { | 238 if( defined("FILESYSTEM_ENCODING") ) { |
236 // $filename = mb_convert_encoding( $filename, FILESYSTEM_ENCODING, "UTF-8" ); | 239 // $filename = mb_convert_encoding( $filename, FILESYSTEM_ENCODING, "UTF-8" ); |
237 $filename = mb_convert_encoding( $filename, FILESYSTEM_ENCODING, "auto" ); | 240 $filename = mb_convert_encoding( $filename, FILESYSTEM_ENCODING, "auto" ); |
238 } | 241 } |
242 | |
239 $filename .= $RECORD_MODE["$mode"]['suffix']; | 243 $filename .= $RECORD_MODE["$mode"]['suffix']; |
240 $thumbname = $filename.".jpg"; | 244 $thumbname = $filename.".jpg"; |
241 | 245 |
242 // サムネール | 246 // サムネール |
243 $gen_thumbnail = INSTALL_PATH."/gen-thumbnail.sh"; | 247 $gen_thumbnail = INSTALL_PATH."/gen-thumbnail.sh"; |
297 fclose( $pipes[2] ); | 301 fclose( $pipes[2] ); |
298 proc_close( $process ); | 302 proc_close( $process ); |
299 } | 303 } |
300 else { | 304 else { |
301 $rrec->delete(); | 305 $rrec->delete(); |
306 reclog( "Reservation::custom atの実行に失敗した模様", E_ERROR); | |
302 throw new Exception("AT実行エラー"); | 307 throw new Exception("AT実行エラー"); |
303 } | 308 } |
304 // job番号を取り出す | 309 // job番号を取り出す |
305 $rarr = array(); | 310 $rarr = array(); |
306 $tok = strtok( $rstring, " \n" ); | 311 $tok = strtok( $rstring, " \n" ); |
310 } | 315 } |
311 $key = array_search("job", $rarr); | 316 $key = array_search("job", $rarr); |
312 if( $key !== false ) { | 317 if( $key !== false ) { |
313 if( is_numeric( $rarr[$key+1]) ) { | 318 if( is_numeric( $rarr[$key+1]) ) { |
314 $rrec->job = $rarr[$key+1]; | 319 $rrec->job = $rarr[$key+1]; |
320 reclog( "Reservation::custom ジョブ番号".$rrec->job."に録画ジョブを登録"); | |
315 return $rrec->job; // 成功 | 321 return $rrec->job; // 成功 |
316 } | 322 } |
317 } | 323 } |
318 // エラー | 324 // エラー |
319 $rrec->delete(); | 325 $rrec->delete(); |
326 reclog( "Reservation::custom job番号の取得に失敗",E_ERROR ); | |
320 throw new Exception( "job番号の取得に失敗" ); | 327 throw new Exception( "job番号の取得に失敗" ); |
321 } | 328 } |
322 catch( Exception $e ) { | 329 catch( Exception $e ) { |
323 if( $rrec != null ) { | 330 if( $rrec != null ) { |
324 if( $rrec->id ) { | 331 if( $rrec->id ) { |
346 if( $rec == null ) { | 353 if( $rec == null ) { |
347 throw new Exception("IDの指定が無効です"); | 354 throw new Exception("IDの指定が無効です"); |
348 } | 355 } |
349 if( ! $rec->complete ) { | 356 if( ! $rec->complete ) { |
350 // 未実行の予約である | 357 // 未実行の予約である |
351 if( toTimestamp($rec->starttime) < (time() + PADDING_TIME + $settings->former_time) ) | 358 if( toTimestamp($rec->starttime) < (time() + PADDING_TIME + $settings->former_time) ) { |
352 throw new Exception("過去の録画予約です"); | 359 reclog("Reservation::cancel 未実行の予約の取り消しが実行された", E_ERROR ); |
360 } | |
353 exec( $settings->atrm . " " . $rec->job ); | 361 exec( $settings->atrm . " " . $rec->job ); |
362 reclog("Reservation::cancel ジョブ番号".$rec->job."を削除"); | |
354 } | 363 } |
355 $rec->delete(); | 364 $rec->delete(); |
356 } | 365 } |
357 catch( Exception $e ) { | 366 catch( Exception $e ) { |
367 reclog("Reservation::cancel 予約キャンセルでDB接続またはアクセスに失敗した模様", E_ERROR ); | |
358 throw $e; | 368 throw $e; |
359 } | 369 } |
360 } | 370 } |
361 } | 371 } |
362 ?> | 372 ?> |