OSDN Git Service

trpgchat ver2.6.1
[trpgtools-onweb/AjaxChat.git] / card_deck_change.php
1 <?php
2 /*
3  Ajax Chat for TRPG ver.2.6.1
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  *******************/
11
12 // デバッグ用設定
13 ini_set('log_errors', false);
14 ini_set('error_log', "./php_error.log");
15
16 // 設定ファイルの読み込み
17 require_once './trpgchat-ini.php';
18 require_once './lib/trpgchat.php';
19 require_once './lib/member_check.php';
20 require_once './lib/card.php';
21
22 // 受信データの成形
23 if (!$request = request()) {
24     error('リクエストを受信できません', true);
25 }
26
27 // 設定セット
28 set_config(read_config());
29
30 // 書き込みブロック
31 write_block();
32
33 // アクセスブロック
34 access_block();
35
36 // デック交換者チェック
37 $plname = htmlspecialchars($request['n']);
38 if (!$plname) {
39     error('チャットに参加してください', true);
40 }
41 if (OBFUSCATION) {
42     $plname = obf_xor($plname);
43 }
44 $now_member = get_member_log();
45 $member_flag = false;
46 foreach($now_member as $v) {
47     if ($plname == $v[0]) {
48         $member_flag = true;
49         break;
50     }
51 }
52 if (!$member_flag) {
53     error('カード変更は参加者のみ可能です', true);
54 }
55
56 $write_msg = array();
57 // 新デック設定がある場合、設定を読み込みつつ内容チェック
58 if (!$request['newdeck']) {
59     error('カードを指定して下さい', true);
60 } elseif ($request['newdeck'] != 'noCard') {
61     $deck_ini = parse_ini_file(CARD_DIR.$request['newdeck'], true);
62
63     if (!$deck_ini) {
64         error($request['newdeck'].' カードの設定がありません', true);
65     }
66
67     // カード設定
68     if (!$deck_ini['config']) {
69         error($request['newdeck'].' 設定ファイルが不正です', true);
70     }
71
72     // 新しいデック作成
73     $deck_config = set_array2json($deck_ini);
74
75     // カード状態セット
76     $GLOBALS['AJAX_CHAT_TRPG']['deck']['status'] = array();
77     foreach($deck_ini as $k => $v) {
78         if ($v && $k != 'config') {
79             card_status("deckCardSet", $k);
80         }
81     }
82     $write_msg[]['msg'] = '現在のカードを'.$deck_ini['config']['name'].'に変えました。';
83
84 // デック削除
85 } else {
86     $deck_ini = array();
87     $deck_ini[] = 'なし';
88     $deck_config = set_array2json($deck_ini);
89     $GLOBALS['AJAX_CHAT_TRPG']['deck']['status'] = array();
90     $write_msg[]['msg'] = '現在のカードを片付けました。';
91 }
92
93 // ファイルロック
94 $lfp = fopen(LOCK3,"w");
95 stream_set_write_buffer($lfp, 0);
96 flock($lfp,LOCK_EX);
97
98 // 現在のデックを削除
99 if (file_exists(NOW_DECK)) {
100     unlink(NOW_DECK);
101     unlink(NOW_DECK_STATUS);
102     // デックお片づけをチャットに書き込み
103 }
104 // デック書き込み
105 if ($deck_config) {
106     $fp = @fopen(NOW_DECK, "w") or error("カードファイルを開けません。", true);
107     if ($deck_config) {
108         fwrite($fp, $deck_config);
109     }
110     fclose($fp);
111 }
112 if (file_exists(NOW_DECK)) {
113     chmod(NOW_DECK, 0666);
114 }
115
116 // 現在のカード配置書き込み
117 $deck_status = $GLOBALS['AJAX_CHAT_TRPG']['deck']['status'];
118 $fp = @fopen(NOW_DECK_STATUS, "w") or error("カードファイルを開けません。", true);
119 fwrite($fp, set_array2json($deck_status));
120 fclose($fp);
121 if (file_exists(NOW_DECK_STATUS)) {
122     chmod(NOW_DECK_STATUS, 0666);
123 }
124
125 // 新デック展開をチャットに書き込み
126 echo set_array2json($write_msg);
127
128 // ロック解除
129 fflush($lfp);
130 fclose($lfp);
131
132 exit;
133
134 ?>