-
Notifications
You must be signed in to change notification settings - Fork 0
/
wesnoth_hu_replays.inc
347 lines (312 loc) · 12.7 KB
/
wesnoth_hu_replays.inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
<?php
require_once 'verseny/verseny.inc';
function wesnoth_replay_access($op, $node, $account){
// hozzáférések meghatározása
// adatok lekérdezése
$query = db_query("SELECT `jatekos1`, `jatekos2` FROM {mwb_merkozesek} WHERE `mid`=%d LIMIT 1", $node->mid);
$adatok = db_fetch_array($query);
if($op == 'create'){
// ellenőrizd, hogy bajnokság, vagy sima mérkőzést akar-e feltölteni
return user_access('edit own wesnoth replays');
}
if($op == 'update'){
if($GLOBALS['user']->uid == $adatok['jatekos1'] || $GLOBALS['user']->uid == $adatok['jatekos2']){
return user_access('edit own wesnoth replays');
}else{
return user_access('edit any wesnoth replays');
}
}
if($op == 'delete'){
return FALSE;
}
if($op == 'view'){
return user_access('access wesnoth replays');
}
}
function _wreplays_uid2nick($id){
$s = "";
if(empty($id)){
return false;
}
$query = db_query("SELECT `nev`, `kizarva` FROM {mwb_jelentkezok} WHERE `uid`=".$id." LIMIT 1");
$r = db_fetch_array($query);
if(is_array($r)){
$s .= $r['nev'];
}else{
$u = user_load($id);
$s .= $u->name;
}
return $s;
}
function wesnoth_replay_merkozeshez($adatok){
$adatok['jatekos1'] = _wreplays_uid2nick($adatok['jatekos1']);
$adatok['jatekos2'] = _wreplays_uid2nick($adatok['jatekos2']);
$node = new stdClass();
$node->type = 'wesnoth_replay';
$node->title = $adatok['jatekos1'].' vs. '. $adatok['jatekos2'];
$node->body = '';
$node->uid = 0;
$node->status = 1;
$node->mid = $adatok['mid'];
$node->palya = $adatok['palya'];
$node->jatekos1 = $adatok['jatekos1'];
$node->jatekos2 = $adatok['jatekos2'];
$node->comment = 2; // legyen írható, olvasható
$node->tipus = 'bajnoksag';
node_save($node);
}
function wesnoth_replay_form(&$node, &$form_state){
$uj = false;
if($node->fid == 0){
$uj = true;
}
$mid = $node->mid;
$type = node_get_types('type', $node);
$form['rid'] = array(
'#type' => 'hidden',
'#value' => $node->rid,
);
$form['mid'] = array(
'#type' => 'hidden',
'#value' => $node->mid,
);
$form['tipus'] = array(
'#type' => 'hidden',
);
if(isset($mid)){
$form['tipus']['#value'] = 'bajnoksag';
}else{
$form['tipus']['#value'] = 'egyeb';
$form['info'] = array(
'#value' => '<div class="messages"><strong>Jelenleg az egyéb mérkőzések űrlapot használod.</strong> Ha verseny mérkőzéshez szeretnél visszajátszást feltölteni, kérlek használd a mérkőzések oldalon lévő <strong>"Visszajátszás feltöltése"</strong> linket!</div>',
'#weight' => -10,
);
}
// We need to define form elements for the node's title and body.
$form['title'] = array(
'#type' => 'hidden',
'#value' => $node->title,
);
if($uj) $form['title']['#value'] = 'Wesnoth visszajátszás '.$rid;
if(isset($mid)){
// információ gyűjtés
$query = db_query("SELECT `jatekos1`, `jatekos2`, `gyoztes`, `palya` FROM {mwb_merkozesek} WHERE `mid`=%d LIMIT 1", $mid);
$merkozes = db_fetch_array($query);
}
// első játékos mező
$form['jatekos1'] = array(
'#type' => 'textfield',
'#title' => 'Játékos 1',
'#default_value' => $node->jatekos1,
'#weight' => -10,
);
if(isset($mid)) $form['jatekos1']['#default_value'] = _wreplays_uid2nick($merkozes['jatekos1']);
$form['jatekos2'] = array(
'#type' => 'textfield',
'#title' => 'Játékos 2',
'#default_value' => $node->jatekos2,
'#weight' => -9,
);
if(isset($mid)) $form['jatekos2']['#default_value'] = _wreplays_uid2nick($merkozes['jatekos2']);
// pálya mező
if(isset($mid)){
$form['palya'] = array(
'#title' => 'Pálya',
'#type' => 'select',
'#options' => _mwb_palyak_tomb($GLOBALS['_mwb_alap_csoport']),
'#default_value' => $merkozes['palya'],
'#weight' => -7,
);
}else{
$form['palya'] = array(
'#title' => 'Pálya',
'#type' => 'textfield',
'#default_value' => $node->palya,
'#weight' => -7,
);
}
if(isset($mid)){
$form['gyoztes'] = array(
'#type' => 'textfield',
'#title' => 'Mérkőzés győztese',
'#description' => 'Add meg a mérkőzés győztesének nevét! A bajnokság alatt használt név kell (fentről puskázhatsz) vagy "döntetlen".',
'#default_value' => $node->gyoztes,
'#weight' => -8,
);
}
$form['body'] = array(
'#type' => 'textarea',
'#title' => 'Megjegyzés',
'#description' => 'A mérkőzés rövid leírása, fajok, taktikák stb.',
'#required' => 'required',
'#default_value' => $node->body,
'#size' => 20,
'#weight' => -5,
);
$form['#attributes'] = array('enctype' => "multipart/form-data");
$form['visszajatszas'] = array(
'#type' => 'file',
'#title' => 'Visszajátszás',
'#description' => 'A visszajátszás. Kizárólag a gz kiterjesztésű visszajátszást töltsed fel! Amennyiben a visszajátszás több részletben van meg, tömörítsd őket zip fájlba! A megengedett fájlméret: ' . round(file_upload_max_size()/1024, 0) . 'kb.',
'#weight' => -4,
);
if($node->fid){
$query = db_query("SELECT `filename`, `filepath` FROM {files} WHERE `fid`=%d LIMIT 1", $node->fid);
while($r = db_fetch_array($query)){
$form['visszajatszas']['#prefix'] = 'Korábban feltöltött visszajátszás: <a href="'.file_create_url($r['filepath']).'">' . $r['filename'] . '</a>';
}
$form['korabbi-visszajatszas'] = array(
'#type' => 'hidden',
'#value' => $node->fid,
);
}
$form['verzio'] = array(
'#type' => 'select',
'#title' => 'Visszajátszás verziója',
'#description' => 'Kérlek add meg, hogy a játék melyik verziójával készült a visszajátszás!',
'#options' => array(
'1-12' => '1.12',
'1-10' => '1.10',
'1-8' => '1.8',
'1-6' => '1.6',
'1-4' => '1.4',
'1-2' => '1.2',
'1-0' => '1.0',
),
'#default_value' => $node->verzio,
'#weight' => -3,
);
if($uj) $form['verzio']['#default_value'] = '1-10';
$form['#validate'] = array('wesnoth_replay_form_validate');
return $form;
}
function wesnoth_replay_form_alter(&$form, $form_state, $form_id){
switch ($form_id) {
case 'wesnoth_replay_node_form':
unset($form['buttons']['delete']);
break;
}
}
function wesnoth_replay_form_validate($form, &$form_state){
$adatok = $form_state['values'];
$fnev = $_FILES['files']['name']['visszajatszas'];
$frissites = false;
if(!empty($fnev)){
$validators = array(
'file_validate_extensions' => array('gz zip'),
'file_validate_size' => array(file_upload_max_size()),
);
if($adatok['tipus'] == 'bajnoksag'){
$mappa = file_directory_path().'/visszajatszasok/'.$GLOBALS['_wreplays_bajnoksagmappa'].'/';
}else{
$mappa = file_directory_path().'/visszajatszasok';
}
$file = file_save_upload('visszajatszas', $validators, $mappa, FILE_EXISTS_RENAME);
if (!$file) {
form_set_error('visszajatszas', 'Érvényes fájlt töltsél fel!');
} else {
$form_state['values']['fajl'] = $file;
$frissites = true;
}
}else{
if(empty($adatok['korabbi-visszajatszas'])){
form_set_error('visszajatszas', 'Tallózz egy visszajátszást!');
}else{
$frissites = true;
}
}
// adatok frissítése a mérkőzések táblában
if($adatok['tipus'] == 'bajnoksag' && $frissites){
$query = db_query("SELECT `jatekos1`, `jatekos2`, `palya`, `csoport` FROM {mwb_merkozesek} WHERE `mid`=%d LIMIT 1", $adatok['mid']);
while($r = db_fetch_array($query)){
$merkozes_adatok = $r;
$form_state['values']['jatekos1'] = _wreplays_uid2nick($r['jatekos1']);
$form_state['values']['jatekos2'] = _wreplays_uid2nick($r['jatekos2']);
}
if($adatok['gyoztes'] != _wreplays_uid2nick($merkozes_adatok['jatekos1']) && $adatok['gyoztes'] != _wreplays_uid2nick($merkozes_adatok['jatekos2']) && $adatok['gyoztes'] != 'döntetlen'){
// a győztes neve nem egyezik meg egyikkel sem, ez gond
form_set_error('gyoztes', 'A győztes neve nem stimmel a játékosok nevével! Győztesnek valamelyik fél bajnokságban használt nevét kell beírnod vagy azt, hogy "döntetlen"!');
}else{
// a győztes neve megfelelő, vidd be a bajnokságba
if($adatok['gyoztes'] == _wreplays_uid2nick($merkozes_adatok['jatekos1'])){
$gyoztes = $merkozes_adatok['jatekos1'];
}else if($adatok['gyoztes'] == _wreplays_uid2nick($merkozes_adatok['jatekos2'])){
$gyoztes = $merkozes_adatok['jatekos2'];
}else{
$gyoztes = 1;
}
db_query('UPDATE {mwb_merkozesek} SET `gyoztes`=%d, `palya`=\'%s\', `ellenorizve`=0 WHERE `mid`=%d LIMIT 1', $gyoztes, $adatok['palya'], $adatok['mid']); // mérkőzések felírása
_mwb_pontszam_frissit($merkozes_adatok['csoport']); //pontszámok frissítése
// pálya teljes nevét adjuk tovább
$ptomb = _mwb_palyak_tomb($GLOBALS['_mwb_alap_csoport']);
$form_state['values']['palya'] = $ptomb[$adatok['palya']];
}
}
}
function wesnoth_replay_load($node){
$additions = db_fetch_object(db_query('SELECT * FROM {wesnoth_replays} WHERE `nid`=%d', $node->nid));
if(isset($additions->mid) && $additions->mid > 0){
// ha van hozzá mérkőzés rendelve, akkor az adatok pontosabbak lehetnek
$additions->gyoztes = _wreplays_uid2nick(db_result(db_query('SELECT `gyoztes` FROM {mwb_merkozesek} WHERE `mid`=%d', $additions->mid)));
}
return $additions;
}
function wesnoth_replay_insert(&$node){
db_query("INSERT INTO {wesnoth_replays} (`nid`, `fid`, `jatekos1`, `jatekos2`, `palya`, `verzio`, `tipus`, `mid`) VALUES (%d, %d, '%s', '%s', '%s', '%s', '%s', %d)", $node->nid, $fid, $node->jatekos1, $node->jatekos2, $node->palya, $node->verzio, $node->tipus, $node->mid);
if ($node->fajl) {
// Do something useful with the uploaded file
file_set_status($node->fajl, FILE_STATUS_PERMANENT);
$fid = db_result(db_query("SELECT `fid` FROM {files} WHERE `filepath`='%s'", $node->fajl->filepath));
db_query("UPDATE {wesnoth_replays} SET `fid`=%d WHERE `nid`=%d", $fid, $node->nid);
db_query("INSERT INTO {upload} (`fid`, `nid`, `vid`, `description`, `list`) VALUES (%d, %d, %d, '%s', %d)", $fid, $node->nid, $node->vid, $node->fajl->filepath);
}
}
function wesnoth_replay_update(&$node){
db_query("UPDATE {wesnoth_replays} SET `nid`=%d, `jatekos1`='%s', `jatekos2`='%s', `palya`='%s', `verzio`='%s', `tipus`='%s', `mid`=%d WHERE `nid`=%d", $node->nid, $node->jatekos1, $node->jatekos2, $node->palya, $node->verzio, $node->tipus, $node->mid, $node->nid);
if ($node->fajl) {
// ellenőrizd, hogy volt-e már csatolva hozzá fájl, ha igen, akkor azt tedd törölhetővé
$rfid = db_result(db_query("SELECT `fid` FROM {wesnoth_replays} WHERE `nid`=%d", $node->nid));
if(!empty($rfid)){
db_query("UPDATE {files} SET `status`=0 WHERE `fid`=%d LIMIT 1", $rfid);
db_query("DELETE FROM {upload} WHERE `fid`=%d LIMIT 1", $rfid); // töröld a régi feltöltést a csatolmányok közül
}
// Do something useful with the uploaded file
file_set_status($node->fajl, FILE_STATUS_PERMANENT);
$fid = db_result(db_query("SELECT `fid` FROM {files} WHERE `filepath`='%s'", $node->fajl->filepath));
db_query("UPDATE {wesnoth_replays} SET `fid`=%d WHERE `nid`=%d", $fid, $node->nid);
db_query("INSERT INTO {upload} (`fid`, `nid`, `vid`, `description`, `list`) VALUES (%d, %d, %d, '%s', %d)", $fid, $node->nid, $node->vid, $node->fajl->filepath);
}
}
/*
function wesnoth_replay_delete(&$node){
db_query("DELETE FROM {node} WHERE `nid`=%d", $node->nid);
db_query("DELETE FROM {node_revisions} WHERE `nid`=%d", $node->nid);
if(module_exists('comment')){
db_query("DELETE FROM {node_comment_statistics} WHERE `nid`=%d", $node->nid);
db_query("DELETE FROM {comments} WHERE `nid`=%d", $node->nid);
}
db_query("DELETE FROM {wesnoth_replays} WHERE `nid`=%d", $node->nid);
db_query("DELETE FROM {files} WHERE `fid`=%d", $node->fid);
}
*/
function wesnoth_replay_view($node, $teaser = FALSE, $page = FALSE){
$node->content['tartalom'] = array(
'#value' => theme('wreplay_mutasd', $node),
'#weight' => 1,
);
return $node;
}
function theme_wreplay_mutasd($node){
$display_text = "<p>";
$display_text .= "<br />".$node->jatekos1 . " vs. ".$node->jatekos2;
$display_text .= "<br />Pálya: ".$node->palya;
$display_text .= "<br />".$GLOBALS['_wreplays_tipus'][$node->tipus]." mérkőzés";
$display_text .= "</p>";
$display_text .= "<p>" . $node->body . "</p>";
$display_text .= $node->visszajatszas;
$fpath = db_result(db_query("SELECT `filepath` FROM {files} WHERE `fid`=%d", $node->fid));
$u = file_create_url($fpath);
$fname = substr($fpath, strrpos($fpath, "/")+1);
$display_text .= "<p><a href=\"" . $u . "\">" . $fname . "</a></p>";
return $display_text;
}