OSDN Git Service

r74 更新履歴マージ
[trpgtools-onweb/AjaxChat.git] / pastlog_create.php
1 <?php
2 /*
3  Ajax Chat for TRPG ver.2.6.2
4  (c)2007-2009 Cake All Rights Reserved.
5  Mail : cake_67@users.sourceforge.jp
6  Home : http://trpgtools-onweb.sourceforge.jp/
7  */
8
9 // 設定ファイルの読み込み
10 require_once './trpgchat-ini.php';
11 require_once './lib/trpgchat.php';
12 require_once './lib/pastlog.php';
13
14 // 受信データの成形
15 if (!$request = request()) {
16     error('リクエストを受信できません', true);
17 }
18
19 // パスワードの照合
20 auth();
21
22 // 設定セット
23 set_config(read_config());
24
25 // 書き込みブロック
26 write_block();
27
28 // アクセスブロック
29 access_block();
30
31 check_name($request['filename']);
32
33 // 過去ログ作成
34 write_log($request['datetime'], $request['whisper'], $request['filename']);
35
36 if ($request['delete']) {
37     // ファイルロック
38     $lfp = fopen(LOCK,"w");
39     stream_set_write_buffer($lfp, 0);
40     flock($lfp,LOCK_EX);
41
42     // 直近の過去ログは表示を残す
43     // 行番号を書き換えて保管
44     $log = file(RECENT_LOG);
45     $count_log = count($log);
46     $fp = @fopen(RECENT_LOG, "w") or error("ログファイルを開けません。", true);
47     if ($log[0]) {
48         foreach ($log as $k => $v) {
49             $num = $count_log - $k;
50             fwrite($fp, preg_replace("/^([0-9]{1,})<>.*/U", "$num<>", $v, 1));
51         }
52     }
53     fclose($fp);
54
55     // 以前の過去ログは全消去
56     $fp = fopen(PAST_LOG, "w");
57     fclose($fp);
58
59     fflush($lfp);
60     fclose($lfp);
61 }
62
63 // 過去ログ作成完了
64 display_finish(CHAT_TITLE.' 過去ログ作成完了', '過去ログを作成しました');
65
66 exit;
67
68
69 /* 関数 */
70 // 過去ログ作成
71 function write_log($datetime, $whisper, $filename) {
72     if (file_exists(PAST_DIR.$filename.".html") || file_exists(MASTER_PAST_DIR.$filename.".html")) {
73         error("同名の過去ログファイルがあります。違う名前にして下さい。", true);
74     }
75
76     $log_master = read_log(PAST_LOG, MASTERPASS, true, false);
77     if (!$log_master) return false;
78     if (!$whisper) {
79         $log = read_log(PAST_LOG, '', $datetime, false);
80     } else {
81         $log = read_log(PAST_LOG, MASTERPASS, $datetime, false);
82     }
83     if (!$log) return false;
84
85     $header = html_header('過去ログ '.$filename, 'pastlog', false, false);
86     $header2 = html_header('過去ログ [管理用]'.$filename, 'pastlog', false, false);
87     $footer = html_footer();
88
89     $fp = fopen(PAST_DIR.$filename.".html", "w");
90     stream_set_write_buffer($fp, 0);
91     flock($fp,LOCK_EX);
92     fwrite($fp, $header);
93     if ($log) {
94         foreach ($log as $v) {
95             fwrite($fp, $v."\n");
96         }
97     }
98     fwrite($fp, '<hr>');
99     fwrite($fp, $footer);
100     fflush($fp);
101     fclose($fp);
102
103     $fp2 = fopen(MASTER_PAST_DIR.$filename.".html", "w");
104     stream_set_write_buffer($fp2, 0);
105     flock($fp2,LOCK_EX);
106     fwrite($fp2, $header2);
107     if ($log_master) {
108         foreach ($log_master as $v) {
109             fwrite($fp2, $v."\n");
110         }
111     }
112     fwrite($fp2, '<hr>');
113     fwrite($fp2, $footer);
114     fflush($fp2);
115     fclose($fp2);
116
117 }
118 ?>