diff 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
line wrap: on
line diff
--- a/Reservation.class.php	Mon Mar 15 01:39:14 2010 +0900
+++ b/Reservation.class.php	Sun Mar 21 03:15:00 2010 +0900
@@ -3,6 +3,7 @@
 include_once( INSTALL_PATH . "/DBRecord.class.php" );
 include_once( INSTALL_PATH . "/reclib.php" );
 include_once( INSTALL_PATH . "/Settings.class.php" );
+include_once( INSTALL_PATH . "/recLog.inc.php" );
 
 
 // 予約クラス
@@ -77,7 +78,7 @@
 			$crec = new DBRecord( CHANNEL_TBL, "id", $channel_id );
 
 			// 既存予約数 = TUNER番号
-			$tuners = ($crec->type == "GR") ? $settings->gr_tuners : $settings->bs_tuners;
+			$tuners = ($crec->type == "GR") ? (int)($settings->gr_tuners) : (int)($settings->bs_tuners);
 			$type_str = ($crec->type == "GR") ? "type = 'GR' " : "(type = 'BS' OR type = 'CS') ";
 
 			$battings = DBRecord::countRecords( RESERVE_TBL, "WHERE complete = '0' ".
@@ -177,8 +178,7 @@
 			if( $duration < ($settings->former_time + 60) ) {	// 60秒以下の番組は弾く
 				throw new Exception( "終わりつつある/終わっている番組です" );
 			}
-
-
+			
 			// ここからファイル名生成
 /*
 			%TITLE%	番組タイトル
@@ -203,7 +203,7 @@
 			$fn_title = mb_ereg_replace("[ \./\*:<>\?\\|()\'\"&]","_", trim($title) );
 
 			// %TITLE%
-			$filename = str_replace("%TITLE%", $fn_title, $filename);
+			$filename = mb_str_replace("%TITLE%", trim($title), $filename);
 			// %ST%	開始日時
 			$filename = str_replace("%ST%",date("YmdHis", $start_time), $filename );
 			// %ET%	終了日時
@@ -229,13 +229,17 @@
 			// %SEC%	開始秒
 			$filename = str_replace("%SEC%",date("s", $start_time), $filename );
 			// %DURATION%	録画時間(秒)
-			$filename = str_replace("%DURATION%","".$duration, $filename );
-
+			$filename = mb_str_replace("%DURATION%","".$duration, $filename );
+			
+			// あると面倒くさそうな文字を全部_に
+			$filename = preg_replace("/[ \.\/\*:<>\?\\|()\'\"&]/u","_", trim($filename) );
+			
 			// 文字コード変換
 			if( defined("FILESYSTEM_ENCODING") ) {
 //				$filename = mb_convert_encoding( $filename, FILESYSTEM_ENCODING, "UTF-8" );
 				$filename = mb_convert_encoding( $filename, FILESYSTEM_ENCODING, "auto" );
 			}
+			
 			$filename .= $RECORD_MODE["$mode"]['suffix'];
 			$thumbname = $filename.".jpg";
 
@@ -299,6 +303,7 @@
 			}
 			else {
 				$rrec->delete();
+				reclog( "Reservation::custom atの実行に失敗した模様", E_ERROR);
 				throw new Exception("AT実行エラー");
 			}
 			// job番号を取り出す
@@ -312,11 +317,13 @@
 			if( $key !== false ) {
 				if( is_numeric( $rarr[$key+1]) ) {
 					$rrec->job = $rarr[$key+1];
+					reclog( "Reservation::custom ジョブ番号".$rrec->job."に録画ジョブを登録");
 					return $rrec->job;			// 成功
 				}
 			}
 			// エラー
 			$rrec->delete();
+			reclog( "Reservation::custom job番号の取得に失敗",E_ERROR );
 			throw new Exception( "job番号の取得に失敗" );
 		}
 		catch( Exception $e ) {
@@ -348,13 +355,16 @@
 			}
 			if( ! $rec->complete ) {
 				// 未実行の予約である
-				if( toTimestamp($rec->starttime) < (time() + PADDING_TIME + $settings->former_time) )
-					throw new Exception("過去の録画予約です");
+				if( toTimestamp($rec->starttime) < (time() + PADDING_TIME + $settings->former_time) ) {
+					reclog("Reservation::cancel 未実行の予約の取り消しが実行された", E_ERROR );
+				}
 				exec( $settings->atrm . " " . $rec->job );
+				reclog("Reservation::cancel ジョブ番号".$rec->job."を削除");
 			}
 			$rec->delete();
 		}
 		catch( Exception $e ) {
+			reclog("Reservation::cancel 予約キャンセルでDB接続またはアクセスに失敗した模様", E_ERROR );
 			throw $e;
 		}
 	}