root/trunk/install/php/m.php

リビジョン 104, 8.7 kB (コミッタ: sorshi, コミット時期: 14 年 前)

ψ(プサイ)さんより提供されたパッチを適用。
・EPG録画の予約を解除するdelepgp.phpが必ず「登録番組がありません」を返してしまうようなので、その修正。
・m.phpで録画局を入れていないときのチェックが無かったので追加。

Line 
1 <?php
2 /*
3  Anime recording system foltia
4  http://www.dcc-jpl.com/soft/foltia/
5
6 m.php
7
8 目的
9 番組表を用いない完全手動録画予約を実現します。
10 ケータイなどで予約する場合もここを開くとよさそうです。
11
12 引数
13 startdate:録画開始日 (ex.20051207)
14 starttime:録画開始時刻 (ex.2304)
15 lengthmin:録画尺分
16 recstid:録画局ID
17 pname:番組名
18
19  DCC-JPL Japan/foltia project
20
21 */
22
23 include("./foltialib.php");
24 $con = m_connect();
25 if ($useenvironmentpolicy == 1){
26     if (!isset($_SERVER['PHP_AUTH_USER'])) {
27         header("WWW-Authenticate: Basic realm=\"foltia\"");
28         header("HTTP/1.0 401 Unauthorized");
29         redirectlogin();
30         exit;
31     } else {
32     login($con,$_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']);
33     }
34 }//end if login
35
36 $now = date("YmdHi");   
37 $today = date("Ymd");
38 $nowdate = date("Hi",(mktime(date("G"),date("i")+8,date("s"),date("m"),date("d"),date("Y"))));
39 $errflag = 0;
40 $pname = "手動録画";
41
42 function printtitle(){
43 print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
44 <html lang=\"ja\">
45 <head>
46 <meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">
47 <meta http-equiv=\"Content-Style-Type\" content=\"text/css\">
48 <link rel=\"stylesheet\" type=\"text/css\" href=\"graytable.css\"> ";
49
50 print "<title>foltia:番組手動予約</title>
51 </head>";
52 }//end function printtitle()
53
54 printtitle();
55 ?>
56 <body BGCOLOR="#ffffff" TEXT="#494949" LINK="#0047ff" VLINK="#000000" ALINK="#c6edff" >
57 <div align="center">
58 <?php
59 printhtmlpageheader();
60 ?>
61 </div>
62 <p align="left"><font color="#494949" size="6">
63 番組手動予約
64 </font></p>
65 <hr size="4">
66 <?php
67 //値取得
68 $startdate = getgetnumform(startdate);
69 $starttime = getgetnumform(starttime);
70
71 if (($startdate == "") || ($starttime == "")){
72     print "<p align=\"left\">全項目手動指定で予約します。</p>\n";
73 }else{
74
75 $lengthmin = getgetnumform(lengthmin);
76 $recstid = getgetnumform(recstid);
77 $pname = getgetform(pname);
78 //$usedigital = getgetnumform(usedigital);
79
80 //確認
81 $startdatetime = "$startdate"."$starttime";
82 if (foldatevalidation($startdatetime)){
83 //print "valid";
84 }else{
85     $errflag = 1;
86     $errmsg = "日付が不正です。";
87 }
88 if ($lengthmin < 361){
89 //valid
90 }else{
91     $errflag = 2;
92     $errmsg = "録画時間は360分で区切ってください。";
93 }
94 //局確認
95 if ($recstid != ""){
96 $query = "
97 SELECT stationname 
98 FROM foltia_station
99 WHERE stationid = ? ";
100 //    $stationvalid = m_query($con, $query, "DBクエリに失敗しました");
101     $stationvalid = sql_query($con, $query, "DBクエリに失敗しました",array($recstid));
102         $recstationname = $stationvalid->fetch();
103         if (!is_array($recstationname) || empty($recstationname)) {
104         $errflag = 3;
105         $errmsg = "放送局設定が異常です。";
106     }
107 }else{
108     $errflag = 2;
109     $errmsg = "録画する局を設定してください。";
110 }
111 //デジタル優先
112 /*if ($usedigital == 1){
113 }else{
114     $usedigital = 0;
115 }
116 */
117 //正しければ
118 if ($errflag == 0){
119 //重複があるか?
120 //未チェック
121
122 //デモモードじゃなかったら書き込み
123 $enddatetime = calcendtime($startdatetime,$lengthmin);
124
125 //時刻検査
126 if (($startdatetime > $now ) && ($enddatetime > $now ) && ($enddatetime  > $startdatetime ) ){
127
128 //min pidを探す
129 $query = "SELECT min(pid) FROM  foltia_subtitle ";
130 //    $rs = m_query($con, $query, "DBクエリに失敗しました");
131     $rs = sql_query($con, $query, "DBクエリに失敗しました");
132     $rowdata = $rs->fetch();
133     if (! $rowdata) {
134         $insertpid = -1 ;
135     }else{
136         if ($rowdata[0] > 0) {
137             $insertpid = -1 ;
138         }else{
139             $insertpid = $rowdata[0];
140             $insertpid-- ;
141         }
142     }
143 // next 話数を探す
144 $query = "SELECT max(countno) FROM  foltia_subtitle WHERE tid = 0";
145 //    $rs = m_query($con, $query, "DBクエリに失敗しました");
146     $rs = sql_query($con, $query, "DBクエリに失敗しました");
147             $rowdata = $rs->fetch();
148             if (! $rowdata) {
149     $nextcno = 1 ;
150     }else{
151     $nextcno = $rowdata[0];
152     $nextcno++ ;
153     }
154
155 //INSERT
156 if ($demomode){
157 }else{
158     $userclass = getuserclass($con);
159     if ( $userclass <= 2){
160     $memberid = getmymemberid($con);
161     
162     $query = "
163     insert into foltia_subtitle  (pid ,tid ,stationid , countno ,subtitle ,
164 startdatetime ,enddatetime ,startoffset , lengthmin , epgaddedby ) 
165     values ( ?,'0',?,?,?,?,?,'0',?,?)";
166     
167 //        $rs = m_query($con, $query, "DBクエリに失敗しました");
168 //print "【DEBUG】$insertpid,$recstid,$nextcno,$pname,$startdatetime,$enddatetime ,$lengthmin,$memberid <br>\n";
169         $rs = sql_query($con, $query, "DBクエリに失敗しました",array($insertpid,$recstid,$nextcno,$pname,$startdatetime,$enddatetime ,$lengthmin,$memberid));
170     
171     //addatq.pl
172     //キュー入れプログラムをキック
173     //引数 TID チャンネルID
174     //echo("$toolpath/perl/addatq.pl $tid $station");
175     exec("$toolpath/perl/addatq.pl 0 0");
176     $oserr = system("$toolpath/perl/addatq.pl 0 0");
177     //---------------------------------------------------
178             if ($oserr){
179             print "[DEBUG]$oserr 「$toolpath/perl/addatq.pl 0 0」<br>\n";
180         }else{
181             print "[DEBUG]exec addatq.pl false 「$toolpath/perl/addatq.pl 0 0」<br>\n";
182             
183             $oserr = system("$toolpath/perl/perltestscript.pl");
184             if ($oserr){
185                 print "[DEBUG]exec perltestscript.pl $oserr<br>\n";
186             }else{
187                 print "[DEBUG]exec perltestscript.pl false <br>\n";
188             }
189             
190         }
191     //-----------------------------------------------------
192     }else{
193         print "EPG予約を行う権限がありません。";
194     }// end if $userclass <= 2
195 }//end if demomode
196
197 print "下記予約を完了いたしました。<br>";
198 //結果表示
199 print "録画開始:";
200 echo foldate2print($startdatetime);
201 print "<br />
202 録画終了:";
203 echo foldate2print($enddatetime);
204 print "<br />
205 録画尺: $lengthmin 分<br />
206 録画局:$recstationname[0]<br />
207 番組名:$pname<br />
208 ";
209 exit();
210 }else{
211 print "時刻が不正なために予約できませんでした。 <br>";
212
213 }
214
215
216 }else{
217     print "入力項目が正しくなさそうです。$errmsg<br />\n";
218 }
219
220 }// 初回表示かデータ処理か
221 ?>
222 <form id="record" name="record" method="get" action="./m.php" autocomplete="off">
223   <p>放送日:
224     <input name="startdate" type="text" id="startdate" size="9" value="<?=$startdate?>" />
225   年月日 Ex.<?=$today?></p>
226   <p>録画開始時刻:
227     <input name="starttime" type="text" id="starttime" size="5" value="<?=$starttime?>" />
228   時分 Ex.<?=$nowdate?>  </p>
229   <p>
230     録画尺:
231       <input name="lengthmin" type="text" id="lengthmin" size="4" value="<?=$lengthmin?>"/>
232     分 (最長360分) </p>
233
234   <p>録画局:
235 <?php
236 $query = "
237 SELECT stationid as x, stationname, stationrecch, digitalch
238 FROM foltia_station
239 WHERE stationrecch > 0
240 UNION
241 SELECT DISTINCT  stationid,stationname,stationrecch ,digitalch
242 FROM  foltia_station
243 WHERE digitalch > 0
244 UNION
245 SELECT DISTINCT  stationid,stationname,stationrecch ,digitalch
246 FROM  foltia_station
247 WHERE stationrecch = -2
248 ORDER BY x ASC";
249
250 $stations = sql_query($con, $query, "DBクエリに失敗しました");
251 $rowdata = $stations->fetch();
252
253 if ($rowdata) {
254                do {
255             if ($recstid == $rowdata[0]){
256             print " <input name=\"recstid\" type=\"radio\" value=\"$rowdata[0]\" checked />  $rowdata[1] ($rowdata[2]ch / $rowdata[3]ch) \n";
257             }elseif( $rowdata[2] == -2){
258             print " <input name=\"recstid\" type=\"radio\" value=\"$rowdata[0]\" checked />  $rowdata[1] (<!-- $rowdata[2]ch / $rowdata[3]ch -->RADIKO) \n";
259             }else{
260                 print " <input name=\"recstid\" type=\"radio\" value=\"$rowdata[0]\" />  $rowdata[1] ($rowdata[2]ch / $rowdata[3]ch) \n";
261             }
262                } while ($rowdata = $stations->fetch());
263 }else{
264 print "放送局データベースが正しくセットアップされていません。録画可能局がありません";
265 }
266 //外部入力チャンネル
267 $query = "
268 SELECT stationid as x ,stationname,stationrecch
269 FROM foltia_station
270 WHERE stationrecch > -2 AND stationrecch < 1
271 ORDER BY x ASC";
272
273 //    $stations = m_query($con, $query, "DBクエリに失敗しました");
274     $stations = sql_query($con, $query, "DBクエリに失敗しました");
275 $rowdata = $stations->fetch();   
276 if ($rowdata) {
277     do {
278         if ($rowdata[0] != 0){
279             if ($recstid == $rowdata[0]){
280             print " <input name=\"recstid\" type=\"radio\" value=\"$rowdata[0]\" checked />  $rowdata[1] \n";
281             }else{
282                 print " <input name=\"recstid\" type=\"radio\" value=\"$rowdata[0]\" />  $rowdata[1] \n";
283             }
284
285         }
286     } while ($rowdata = $stations->fetch());
287 }
288 /*
289 print "<p>デジタル録画を優先:";
290
291 if ($usedigital == 1){
292 print "<input name="useditial" type="radio" value="1" selected />  する 
293 <input name="useditial" type="radio" value="0" />  しない 
294 ";
295 }else{
296 print "<input name="useditial" type="radio" value="1" />  する 
297 <input name="useditial" type="radio" value="0" selected />  しない 
298 ";
299 }
300 */
301 ?>
302   <p>番組名:
303     <input name="pname" type="text" id="pname" value="<?=$pname ?>" />
304   </p>
305 <!-- <p  style='background-color: #DDDDFF'>
306 繰り返し指定-毎週以下の曜日に録画:
307 <input name="weeklyloop" type="radio" value="128" />  日曜 
308 <input name="weeklyloop" type="radio" value="64" />  月曜 
309 <input name="weeklyloop" type="radio" value="32" />  火曜 
310 <input name="weeklyloop" type="radio" value="16" />  水曜 
311 <input name="weeklyloop" type="radio" value="8" />  木曜 
312 <input name="weeklyloop" type="radio" value="4" />  金曜 
313 <input name="weeklyloop" type="radio" value="2" />  土曜 
314  </p>
315  -->
316 <input type="submit" value="予約"> 
317 </form>
318
319 </body>
320 </html>
321
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。
track feed