Quellcode der Dragonslayer-Edition
Quellcode der Dragonslayer-Edition: 0.9.7(DS V3) Ithil-Edition


Anmerkung: Dies ist nur ein Auszug aus dem Source. Ein etwas älteres, abgespecktes Release der Dragonslayer-Edition ist für jeden Interessenten frei zum Download verfügbar. Was wir uns unbedingt verbitten, ist Diebstahl unserer Arbeit ohne Nennung des Copyrights.
Falls beim Lesen des Source ein Bug entdeckt werden sollte, bitten wir um sofortige Meldung per Anfrage!


./petition.php

zurück
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:
347:
348:
349:
350:
351:
352:
<?php
/**
 * Diese Datei erstellt ein Interface über das die Spieler Anfragen an das Team senden können
 * @version DS V3
 */


require_once('common.php');

$str_filename basename(__FILE__);

if(
$_GET['op'] == 'help' || $_GET['op']=='faq') {

    
$str_default 'faq_start';

    
popup_header(getsetting('townname','Atrahor').' - Hilfe / FAQ');

    
$str_page = (empty($_GET['page']) ? $str_default $_GET['page']);

    
$str_txt get_extended_text($str_page,'rules_faq',false,false);

    
output('<script language="javascript">window.resizeTo(600,550);</script>',true);

    if (
false !== $str_txt) {

        
output($str_txt,true);

    }
    else {

        
output('`$Seite konnte nicht gefunden werden!');

    }

}
else if(
$_GET['op']=="rules_short")
{
    
popup_header("Kurzfassung der Regeln");
    
output('
    <a href="petition.php?op=faq">Inhaltsverzeichnis</a>`n`n
    '
.get_extended_text('rules_short'),true);

}
else
{
    
$BOOL_JSLIB_PLU_MI true;
    
$demouser_acctid=(int)getsetting('demouser_acctid',0);
    
popup_header("Anfrage für Hilfe",true);

    if(
$_GET['op'] == 'submit')
    {
        if (
count($_POST)>0){

            if(empty(
$_POST['description'])) {
                
$str_output .='`$Das Nichts ist zweifelsohne eine erhabene Tatsache, nur wird die Administration mit einer leeren Anfrage
                        wohl weniger als nichts anfangen können.`n`0'
;
            }
            elseif( (empty(
$_POST['email']) || !is_email(stripslashes($_POST['email']))) && (!$session['user']['loggedin'] || $session['user']['acctid']==$demouser_acctid)) {
                
$str_output .='`$Wie willst du denn eine Antwort auf diese Anfrage erhalten, wenn du keine gültige EMail-Adresse angibst?`n`0';
            }
            else
            {
                if(
$_GET['subop'] == 'mediator')
                {
                    
$mailbody strip_appoencode($_POST['description']).'

                    Charname: '
.$_POST['charname'].'
                    Charmail: '
.$_POST['email'].'
                    '
;
                    
$mailbody nl2br($mailbody);
                    if(
send_mail(getsetting('mediator_email','admin@localhost'),'Mediation erwünscht von '.$_POST['charname'],$mailbody))
                    {
                        
$str_output .= 'Dein Hilfegesuch wurde erfolgreich per Mail versand, '.getsetting('mediator_name','Admin').' wird sich bald bei dir melden.';
                    }
                    else
                    {
                        
$str_output .= 'Leider ist beim Senden der Mail ein Fehler aufgetreten...';
                    }
                }
                elseif(
$_GET['subop'] == 'petition')
                {
                    
$p $session['user']['password'];
                    unset(
$session['user']['password']);

                    
$array_petitionbans getsetting("petitionbans"serialize(array()));
                    
$array_petitionbans unserialize($array_petitionbans);
                    
                    if ((
$session['user']['loggedin']==true) && ((int)$_POST['kat']!=&& $_GET['petitionban']!="override") && (getsetting("petitionban_enabled",1)==1)){
                    
//Wenn eingeloggt, keine wichtige Anfrage und Setting aktiv (also nicht Hilferuf), Anfragenblock überprüfen
                        
$bool_petitionban_active=false;
                        
reset($array_petitionbans);
                        while (list(
$key$value) = each ($array_petitionbans)) {
                            if (
$array_petitionbans[$key][0]==$session['user']['acctid']){
                                if ((
time()-$array_petitionbans[$key][2])<=($array_petitionbans[$key][3]*60)){
                                    
$bool_petitionban_active=true;
                                    
$array_petitionbans[$key][4]=time();
                                    
$array_petitionbans[$key][5]++;
                                    
$int_sekunden=($array_petitionbans[$key][3]*60)-(time()-$array_petitionbans[$key][2]);
                                    
$int_wartestunden=floor($int_sekunden/3600);
                                    
$int_sekunden-=$int_wartestunden*3600;
                                    
$int_warteminuten=floor($int_sekunden/60);
                                    
$int_sekunden-=$int_warteminuten*60;
                                    
$str_wartezeit=$int_wartestunden." Stunden, ".$int_warteminuten." Minuten und ".$int_sekunden." Sekunden";
                                }
                                break;
                            }
                        }
                    }

                    if (
$bool_petitionban_active==false || $_GET['petitionban']=="override"){
                        if(!
$session['user']['loggedin'] || $session['user']['acctid']==$demouser_acctid)
                        {
                            
$sql 'SELECT login,acctid,uniqueid,lastip FROM accounts WHERE lastip = "'.addslashes($session['lastip']).'" OR uniqueid = "'.addslashes($session['uniqueid']).'" ORDER BY login, acctid';
                            
$res db_query($sql);
    
                            
$sec_info '';
    
                            while(
$r db_fetch_assoc($res) ) {
    
                                
$sec_info .= '`n'.$r['login'].' (AcctID '.$r['acctid'].', IP '.$r['lastip'].', ID '.$r['uniqueid'].')';
    
                            }
                        }

                        if (
$session['user']['loggedin']==true){ //Wenn eingeloggt, erfolgreiche Anfrage registrieren
                        
reset($array_petitionbans);
                        while (list(
$key$value) = each ($array_petitionbans)) {
                            if (
$array_petitionbans[$key][0]==$session['user']['acctid']){
                                
$array_petitionbans[$key][2]=time();
                                break;
                            }
                        }
                        }    

                        
db_insert('petitions',
                                    array(
                                            
'author'     => ($session['user']['acctid']==$demouser_acctid : (int)$session['user']['acctid']),
                                            
'date'        => array('sql'=>true,'value'=>'NOW()'),
                                            
'body'        => $_POST['description'],
                                            
'email'        => $_POST['email'],
                                            
'charname'    => $_POST['charname'],
                                            
'pageinfo'    => output_array($session,"Session:"),
                                            
'lastact'    => array('sql'=>true,'value'=>'NOW()'),
                                            
'IP'        => $session['lastip'],
                                            
'ID'        => $session['uniqueid'],
                                            
'connected'    => $sec_info,
                                            
'kat'        => (int)$_POST['kat']
                                        )
                                    );
    
                        
$session['user']['password']=$p;
                        if(
$session['user']['acctid']>0) {
                            
user_set_stats(array('petitions'=>'petitions+1'));
                        }
                        
$str_output .= "Deine Anfrage wurde an die Admins gesendet. Bitte hab etwas Geduld, Antworten und Reaktionen können eine Weile dauern, wir bemühen uns aber alles so schnell wie möglich zu beantworten.";

                    } else {
                        
$session['user']['password']=$p;
                        
addnav("","petition.php?op=submit&subop=petition&petitionban=override");
                        
$str_output .= "<form action='petition.php?op=submit&subop=petition&petitionban=override' method='POST'><input type='hidden' name='email' value='".$_POST['email']."'><input type='hidden' name='charname' value='".$_POST['charname']."'><input type='hidden' name='kat' value='".((int)$_POST['kat'])."'>";
                        
$str_output .= str_replace("{notwendiges textfeld}""<textarea name='description' class='input' rows='3' cols='50' readonly>".$_POST['description']."</textarea>"str_replace("{wartezeit}"$str_wartezeitget_extended_text("petitionban_hinweis")));
                        
$str_output .= '`n
                            `c<input id="ok_button" type="submit" value="Ja das ist wichtig, Absenden!">`c
                        
                                <script type="text/javascript" language="JavaScript">
                                    var count = 30;
                                    counter();
                                    function counter () {
                                        if(count == 0) {
                                            document.getElementById("ok_button").value = "Ja, das ist wichtig, Absenden!";
                                            document.getElementById("ok_button").disabled = false;
                                        }
                                        else {
                                            document.getElementById("ok_button").value = "Ja, das ist wichtig, Absenden! (noch "+count+" Sekunden)";
                                            document.getElementById("ok_button").disabled = true;
                                            count--;
                                            setTimeout("counter()",1000);
                                        }
                                    }
                                </script></form>
                            '
;

                    }
                    
                    
savesetting("petitionbans"serialize($array_petitionbans));

                }
            }
            
output($str_output,true);
            
popup_footer(false);
        }
    }

    
//
    // Formular für die Anfragen
    //
    
$str_kat_enum 'enum';

    
$arr_categories $ARR_PETITION_KATS;
    
//Namensänderung wird separat behandelt
    //$arr_categories = array_remove_val("Namensänderung",$arr_categories);

    
foreach($arr_categories as $id => $kat) {

        
$str_kat_enum .= ','.$id.','.$kat;

    }

    
$arr_data_anfrage = array('charname'=>$session['user']['login'],
                        
'email'=>$session['user']['emailaddress'],
                        
'description'=>stripslashes($_POST['description'])
                        );
    
$arr_form_anfrage = array('charname'=>'Name deiner Spielfigur:',
                        
'email'=>'Deine E-Mail Adresse:',
                        
'kat'=>'Art der Anfrage:,'.$str_kat_enum,
                        
'description'=>'Beschreibe dein Problem:`n,textarea,35,8');

    
$str_output_petition  '<script language="javascript">window.resizeTo(600,550);</script>';
    
$str_output_petition .= '`c`b`&Anfrage an die Administration`&`b`c`n`n';
    
$str_output_petition .= get_extended_text('anfrage_beschreibung','*',false,false).'
                            <form action="petition.php?op=submit&subop=petition" method="POST">'
;
    
$str_output_petition .= generateform($arr_form_anfrage,$arr_data_anfrage,false,'Absenden!');
    
$str_output_petition .= '</form>';

    
//
    // Anzeige der eigenen Anfragen mit einer kleinen Statusübersicht
    //

    
if($session['user']['loggedin'] == 1)
    {
        
$statuses=array(0=>"`bUngelesen`b","Gelesen.","Geschlossen/Abgearbeitet");

        
$str_sql_my_petitions ='

        SELECT         p.petitionid,p.prio,p.date, p.status,p.lastact,p.kat,p.p_for,p.commentcount,p.body
                    FROM         petitions p
                    WHERE        p.author = '
.$session['user']['acctid'].'
                    ORDER BY     p.petitionid DESC'
;

        
$db_res db_query($str_sql_my_petitions,false);
        
$int_count db_num_rows($db_res);

        
//Wenn der Nutzer anfragen gestellt hat, dann stelle den Bearbeitungsstatus dar
        
if($int_count>0)
        {
            
$str_output_petition .= '
            <hr>
            `c`bDeine Anfragen`b`c
            <table width="100%">
                <tr class="trhead">
                    <td>Anfragedatum</td>
                    <td>Status der Anfrage</td>
                    <td>#Kommentare</td>
                    <td>Zuordnung</td>
                </tr>
            '
;
            while(
$arr_result db_fetch_assoc($db_res))
            {
                
$str_class $str_class == 'trlight'?'trdark':'trlight';
                
$str_output_petition .= '
                <tr class="'
.$str_class.'">
                    <td>'
.date('d.m.y H:i:s',strtotime($arr_result['date'])).'</td>
                    <td>'
.$statuses[$arr_result['status']].'</td>
                    <td align="center">'
.$arr_result['commentcount'].'</td>
                    <td>'
.$ARR_PETITION_KATS[$arr_result['kat']];
                    
//Einkommentieren wenn die Zuordnung an einen bestimmten User auch dargestellt werden soll
                    //(!empty($arr_result['p_for']) ? '`nFür: '.$arr_result['p_for'].'`0' : '').'
                
$str_output_petition .= '</td>
                </tr>
                <tr class="'
.$str_class.'">
                    <td colspan="3">'
.plu_mi('petition_'.$arr_result['petitionid'],0,false).' Anfragetext: '.substr(htmlentities($arr_result['body']),0,80).'...
                                            <div id="'
.plu_mi_unique_id('petition_'.$arr_result['petitionid']).'" style="display:none;padding-left: 25px;">
                                                '
.htmlentities($arr_result['body']).'
                                            </div>
                    <td>
                </tr>'
;
            }
            
$str_output_petition .= '
            </table>'
;
        }
    }

    
//
    //Formular für die Mediatoren
    //
    
$arr_data_mediator = array('charname'=>$session['user']['login'],
                        
'email'=>$session['user']['emailaddress'],
                        
'description'=>stripslashes($_POST['description'])
                        );
    
$arr_form_mediator = array('charname'=>'(Optional)Name deiner Spielfigur:',
                        
'email'=>'Deine E-Mail Adresse:|?Eine Mailadresse unter der du erreichbar bist. Die Kommunikation erfolgt ausschließlich per Mail',
                        
'description'=>'Beschreibe dein Problem:`n,textarea,35,8');



    
$str_output_mediator .= '`c`b`&Schlichtung eines Streits`&`b`c`n`n';
    
$str_output_mediator .= get_extended_text('mediation_beschreibung','*',false,false).'
            <form action="petition.php?op=submit&subop=mediator" method="POST">'
;
    
$str_output_mediator .= generateform($arr_form_mediator,$arr_data_mediator,false,'Absenden!');
    
$str_output_mediator .= '</form>';

    
//
    // Formular für eine Namensänderung wird nur ausgegeben, wenn der User eingelogged ist
    //

    
$arr_flipped array_keys($ARR_PETITION_KATS,'Namensänderung');
    
$int_kat $arr_flipped[0];

    
$arr_data_namechange = array('charname'=>$session['user']['login'],
                        
'email'=>$session['user']['emailaddress'],
                        
'kat'=>$int_kat,
                        
'description'=>stripslashes($_POST['description'])
                        );
    
$arr_form_namechange = array('charname'=>'Name deiner Spielfigur:',
                        
'email'=>'Deine E-Mail Adresse:',
                        
'kat'=>',hidden',
                        
'description'=>'Grund für die Änderung:`n,textarea,35,8');

    
$str_output_namechange '`c`b`&Namensänderung beantragen`&`b`c`n`n';
    
$str_output_namechange .= get_extended_text('namensaenderung_beschreibung','*',false,false).'
            <form action="petition.php?op=submit&subop=petition" method="POST">'
;
    
$str_output_namechange .= generateform($arr_form_namechange,$arr_data_namechange,false,'Absenden!');
    
$str_output_namechange .= '</form>';

    
$arr_mainform_namechange = array('Namensänderung,title','change_name'=>'Quelltext für eine Namensänderung,html');
    
$arr_maindata_namechange = array('change_name'=>appoencode($str_output_namechange));

    
//
    // Ausgabe des Formulars
    //
    
$arr_mainform = array(
    
'Anfrage,title',
    
'petition'=>'Quelltext für eine Anfrage an die Administration,html',
    
'Streitschlichtung,title',
    
'mediation'=>'Quelltext für eine Anfrage an die Mediatoren,html',
    );
    
$arr_maindata = array(
    
'petition'=>appoencode($str_output_petition),
    
'mediation'=>appoencode($str_output_mediator)
    );

    if(
$session['user']['loggedin'] == true)
    {
        
$arr_mainform array_merge($arr_mainform,$arr_mainform_namechange);
        
$arr_maindata array_merge($arr_maindata,$arr_maindata_namechange);
    }

    
showform($arr_mainform,$arr_maindata,true);
}
popup_footer(false);
?>
0.9.7(DS V3) Ithil-Edition