Quellcodeviewer der Dragonslayer-Edition
Quellcodeviewer der Dragonslayer-Edition : 0.9.7+jt ext (GER)


Anmerkung: Dies ist nur ein Auszug aus dem Source. Um das jeweils aktuelle, vollständige Release zu erhalten, ist eine Anfrage mit gültiger Email-Adresse erforderlich. Ebenso sollte darin die Serveradresse bzw. sonstiger Verwendungszweck aufgeführt sein. 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!


./suhouses.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:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604:
605:
606:
607:
608:
609:
610:
611:
612:
613:
614:
615:
616:
617:
618:
619:
620:
621:
622:
623:
624:
625:
626:
627:
628:
629:
630:
631:
632:
633:
634:
635:
636:
637:
638:
639:
640:
641:
642:
643:
644:
645:
646:
647:
648:
649:
650:
651:
652:
653:
654:
655:
656:
657:
658:
659:
660:
661:
662:
663:
664:
665:
666:
667:
668:
669:
670:
671:
672:
673:
674:
675:
676:
677:
678:
679:
680:
681:
682:
683:
684:
685:
686:
687:
688:
689:
690:
691:
692:
693:
694:
695:
696:
697:
698:
699:
700:
701:
702:
703:
704:
705:
706:
707:
708:
709:
710:
711:
712:
713:
714:
715:
716:
717:
718:
719:
720:
721:
722:
723:
724:
725:
726:
727:
728:
729:
730:
731:
732:
733:
734:
735:
736:
737:
738:
739:
740:
741:
742:
743:
744:
745:
746:
747:
748:
749:
750:
751:
752:
753:
754:
755:
756:
757:
758:
759:
760:
761:
762:
763:
764:
765:
766:
767:
768:
769:
770:
771:
772:
773:
774:
775:
776:
777:
778:
779:
780:
781:
782:
783:
784:
785:
786:
787:
788:
789:
790:
791:
792:
793:
794:
795:
796:
797:
798:
799:
800:
801:
802:
803:
804:
805:
806:
807:
808:
809:
810:
811:
812:
813:
814:
815:
816:
817:
818:
819:
820:
821:
822:
823:
824:
825:
826:
827:
828:
829:
830:
831:
832:
833:
834:
835:
836:
837:
838:
839:
840:
841:
842:
843:
844:
845:
846:
847:
848:
849:
850:
851:
852:
853:
854:
855:
856:
857:
858:
859:
860:
861:
862:
863:
864:
865:
866:
867:
868:
869:
870:
871:
872:
873:
874:
875:
876:
877:
878:
879:
880:
881:
882:
883:
884:
885:
886:
887:
888:
889:
890:
891:
892:
893:
894:
895:
896:
897:
898:
899:
900:
901:
902:
903:
904:
905:
906:
907:
908:
909:
910:
911:
912:
913:
914:
915:
916:
917:
918:
919:
920:
921:
922:
923:
924:
925:
926:
927:
928:
929:
930:
931:
932:
933:
934:
935:
936:
937:
938:
939:
940:
941:
942:
943:
944:
945:
946:
947:
948:
949:
950:
951:
952:
953:
954:
955:
956:
957:
958:
959:
960:
961:
962:
963:
964:
965:
966:
967:
968:
969:
970:
971:
972:
973:
974:
975:
976:
977:
978:
979:
980:
981:
982:
983:
984:
985:
986:
987:
988:
989:
990:
991:
992:
993:
994:
995:
996:
997:
998:
999:
1000:
1001:
1002:
1003:
1004:
1005:
1006:
1007:
1008:
1009:
1010:
1011:
1012:
1013:
1014:
1015:
1016:
1017:
1018:
1019:
1020:
1021:
1022:
1023:
1024:
1025:
1026:
1027:
1028:
1029:
1030:
1031:
1032:
1033:
1034:
1035:
1036:
1037:
1038:
1039:
1040:
1041:
1042:
1043:
1044:
1045:
1046:
1047:
1048:
1049:
1050:
1051:
1052:
1053:
1054:
1055:
1056:
1057:
1058:
1059:
1060:
1061:
1062:
1063:
1064:
1065:
1066:
1067:
1068:
1069:
1070:
1071:
1072:
1073:
1074:
1075:
1076:
1077:
1078:
1079:
1080:
1081:
1082:
1083:
1084:
1085:
1086:
1087:
1088:
1089:
1090:
1091:
1092:
1093:
1094:
1095:
1096:
1097:
1098:
1099:
1100:
1101:
1102:
1103:
1104:
1105:
1106:
1107:
1108:
1109:
1110:
1111:
1112:
1113:
1114:
1115:
1116:
1117:
1118:
1119:
1120:
1121:
1122:
1123:
1124:
1125:
1126:
1127:
1128:
1129:
1130:
1131:
1132:
1133:
1134:
1135:
1136:
1137:
1138:
1139:
1140:
1141:
1142:
1143:
1144:
1145:
1146:
1147:
1148:
1149:
1150:
1151:
1152:
1153:
1154:
1155:
1156:
1157:
1158:
1159:
1160:
1161:
1162:
1163:
1164:
1165:
1166:
1167:
1168:
1169:
1170:
<?php
/*
* Version:    25.04.2004
* Author:    anpera
* Email:        logd@anpera.de
*
* Purpose:    Admin tool for houses
*
* BETA !!
*
* Ok, lets do the code...
*
*
* Version:    02.07.2005
* Revision:    Chaosmaker
* Email:        webmaster@chaosonline.de
*/


require_once('common.php');
require_once(
'housefunctions.php');

page_header('Hausmeister');

addnav('Zurück...');
addnav('D?... nach Dreythal','village.php');
addnav('G?... in die Grotte','superuser.php');


if (
$_GET['op']=='drin')
{
    if (!empty(
$_GET['subop'])) 
    {
        if (
$_GET['subop']=='addmodule'
        {
            
// add a module
            
$sql 'SELECT modulefile, modulename FROM housemodules WHERE moduleid="'.$_GET['mid'].'"';
            
$result db_query($sql);
            
            if (
$row db_fetch_assoc($result)) 
            {
                require_once(
'housemodules/'.$row['modulefile']);
                
$function 'module_build_'.$row['modulename'];
                
$function($_GET['id']);
            }
        }
        
        elseif (
$_GET['subop']=='delmodule') {
            
// delete a module
            
$sql 'SELECT modulefile, modulename FROM housemodules WHERE moduleid="'.$_GET['mid'].'"';
            
$result db_query($sql);
            if (
$row db_fetch_assoc($result)) {
                require_once(
'housemodules/'.$row['modulefile']);
                
$function 'module_destroy_'.$row['modulename'];
                
$function($_GET['id']);
            }
        }
    }
    
addnav("Schlüssel hinzufügen","suhouses.php?op=keys&hid=$_REQUEST[id]");
    
addnav("Daten ändern","suhouses.php?op=data&id=$_REQUEST[id]");
    
addnav("Haus zerstören","suhouses.php?op=destroy&id=$_REQUEST[id]"); // bad idea
    
addnav("Kommentare","suhouses.php?op=comment&id=$_REQUEST[id]");
    
addnav("Hausmeister","suhouses.php");
    
    
$sql='SELECT * FROM houses WHERE houseid="'.$_REQUEST['id'].'"';
    
$result db_query($sql) or die(db_error(LINK));
    
$row db_fetch_assoc($result);
    
    
output('<table cellpadding="3" cellspacing="3">
            <tr><td width="25%">`6Hausnummer:`0</td><td>`%'
.$row['houseid'].'`0</td></tr>
            <tr><td>`6Name:`0</td><td>`%'
.$row['housename'].'`0</td></tr>',true);

    if (
$row['owner']>0)
    {
        
$sql 'SELECT name FROM accounts WHERE acctid="'.$row['owner'].'"';
        
$result2 db_query($sql);
        
$row2  db_fetch_assoc($result2);

        
output('<tr><td>`6Besitzer (ID):`0</td><td>`%'.$row2['name'].' `%('.$row['owner'].')`0</td></tr>',true);
    }

    else
    
output('<tr><td>`6Besitzer:`0</td><td>`%derzeit niemand`0</td></tr>',true);

    
output('<tr><td valign="top">`6Beschreibung:`0</td><td>`%'.$row['description'].'`0</td></tr>
            <tr><td>`6restlicher Goldpreis:`0</td><td>`%'
.$row['goldprice'].'`0</td></tr>
            <tr><td>`6restlicher Edelsteinpreis:`0</td><td>`%'
.$row['gemprice'].'`0</td></tr>
            <tr><td>`6Status:`0</td><td>'
,true);
    
    if (
$row['status']=='build')
    {
        if (
$row['owner']>0)
        
output('`$im Bau`0');

        else
        
output('`*Bauruine`0');
    }

    elseif (
$row['status']=='ready')
    {
        if (
$row['owner']>0)
        
output('`_bewohnt`0');

        else
        
output('`xverlassen`0');
    }

    elseif (
$row['status']=='sell')
    
output('`7zum Verkauf`0');
    
    
output('</td></tr></table><hr />',true);

    
output('`n`b`6Schlüsselverteilung:`b`0');
    
output('<table cellpadding="3" cellspacing="3" width="100%"><tr class="trhead">
            <td>`b`cSchlüsselnr.`c`b</td>
            <td>`b`cSchlüsselnr. (DB)`c`b</td>
            <td>`bBesitzer-ID (Name)`b</td>
            <td>`b`cHausnr.`c`b</td>                
            <td>`b`cgebraucht?`c`b</td>
            <td colspan="2">`c`bAdmin`b`c</td>'
,true);

    
$sql 'SELECT items.*,accounts.acctid, accounts.name FROM items LEFT JOIN accounts ON accounts.acctid=items.owner WHERE items.value1="'.$row['houseid'].'" AND items.class="Schlüssel" ORDER BY items.value2 ASC,items.id ASC';

    
$result db_query($sql) or die(db_error(LINK));

    for (
$i=1;$i<=db_num_rows($result);$i++)
    {
        
$item db_fetch_assoc($result);

        
output('<tr><td>`c`b'.$i.'`b`c</td>
                    <td>`c'
.$item['value2'].'`c</td>
                    <td>'
.($item['acctid']?''.$item['acctid'].' ('.$item['name'].')':'0 (`4Verloren`0)').'</td>
                    <td>`c'
.$item['value1'].'`c</td>                    
                    <td>`c'
.$item['hvalue'].'`c</td><td>',true);

        if (
$row2['name']=='')
        {
            
output('<a href="suhouses.php?op=keys&subop=change&hid='.$_REQUEST['id'].'&id2='.$i.'&owner='.$row['owner'].'">Reset</a>',true);
            
            
addnav('','suhouses.php?op=keys&subop=change&hid='.$_REQUEST['id'].'&id2='.$i.'&owner='.$row['owner'].'');
        }

        
output('`c<a href="suhouses.php?op=keys&subop=edit&id='.$item['id'].'&hid='.$_REQUEST['id'].'">`@editieren`0</a>
                <a href="suhouses.php?op=keys&subop=delete&id='
.$item['id'].'&hid='.$_REQUEST['id'].'" onClick="return confirm(\'Diesen Schlüssel wirklich löschen?\');">`alöschen`0</a>`c',true);

        
addnav('','suhouses.php?op=keys&subop=edit&id='.$item['id'].'&hid='.$_REQUEST['id'].'');
        
addnav('','suhouses.php?op=keys&subop=delete&id='.$item['id'].'&hid='.$_REQUEST['id'].'');
        
        
output('</td></tr>',true);
    }

    
output('</table><hr />',true);
    
    
output('`n`b`6Eingebaute Module:`b`0');
    
output('<table cellpadding="3" cellspacing="3" width="100%"><tr class="trhead">
            <td>`b`caktiv?`c`b</td>
            <td>`bName intern`b</td>
            <td>`bName extern`b</td>
            <td>`bKategorie`b</td>
            <td>`b`cimmer inklusive`c`b</td>
            <td>`c`bAdmin`b`c</td>'
,true);

    
$sql 'SELECT hm.moduleid, hm.linkcategory, hm.linktitle, hm.modulename, hm.built_in, hmd.value FROM housemodules hm LEFT JOIN housemoduledata hmd ON hmd.moduleid=hm.moduleid AND hmd.houseid="'.$_REQUEST['id'].'" AND hmd.name="#activated#" ORDER BY hm.linkorder ASC';
    
    
$result db_query($sql) or die(db_error(LINK));
    
    while (
$row db_fetch_assoc($result)) 
    {
        if (
$row['built_in']==|| $row['value']==1
        
output('<tr><td>`c`6ja`c`0</td>',true);
        
        else 
        
output('<tr><td>`c`*nein`c`0</td>',true);
        
        
output('<td>'.$row['modulename'].'</td>
                <td>'
.$row['linktitle'].'</td>
                <td>'
.$row['linkcategory'].'</td>
                <td>`c'
.$row['built_in'].'`c</td>',true);
                
        if (
$row['built_in']==0
        {
            if (
$row['value']==1
            {
                
output('<td><a href="suhouses.php?op=drin&subop=delmodule&mid='.$row['moduleid'].'&id='.$_REQUEST['id'].'">entfernen</a></td>',true);
                
                
addnav('','suhouses.php?op=drin&subop=delmodule&mid='.$row['moduleid'].'&id='.$_REQUEST['id']);
            }
            
            else 
            {
                
output('<td><a href="suhouses.php?op=drin&subop=addmodule&mid='.$row['moduleid'].'&id='.$_REQUEST['id'].'">hinzufügen</a></td>',true);
                
                
addnav('','suhouses.php?op=drin&subop=addmodule&mid='.$row['moduleid'].'&id='.$_REQUEST['id']);
            }
        }
        
        else 
        
output('<td>&nbsp;</td>',true);
        
        
output('</tr>',true);
    }
    
    
output('</table>',true);
}

else if (
$_GET['op']=="comment")
{
    if (
$_GET['subop']=="delete")
    {
        
$sql "DELETE FROM commentary WHERE commentid='$_GET[commentid]'";
        
db_query($sql);
    }
    
    
viewcommentary("house-$_GET[id]","X",100);
    
    
addnav("Zurück zu Haus $_GET[id]","suhouses.php?op=drin&id=$_GET[id]");
}

else if (
$_GET['op']=='info')
{
    
$sql='SELECT acctid,name,house,housekey FROM accounts WHERE house ORDER BY house ASC';

    
output('<table cellpadding="3" cellspacing="3" width="50%"><tr class="trhead"><td>`bUser-ID`b</td>
                                                                                  <td>`bName`b</td>
                                                                                  <td>`bHaus-ID`b</td>
                                                                                  <td>`bSchlüssel`b</td></tr>'
,true);
    
    
$result db_query($sql) or die(db_error(LINK));
    
    if (
db_num_rows($result)==0)
    {
output('<tr><td colspan="4">`c`i`b`$Hier gibt es noch keine Häuser.`b`i`c`0</td></tr>',true);}
    
    else
    {
        for (
$i=0;$i<db_num_rows($result);$i++)
        {
            
$row db_fetch_assoc($result);
            
output("<tr><td align='center'>$row[acctid]</td><td>$row[name]</td><td>$row[house]</td><td>$row[housekey]</td></tr>",true);
        }
    }
    
    
output("</table>",true);
    
addnav("Hausmeister","suhouses.php");
}

else if (
$_GET['op']=='destroy')
// bad idea! write this code on your own risk! .. ok, i wrote it
    
if ($_GET['subop']=='confirmed')
    {
        
// first, delete all modules of this house
        
$sql 'SELECT modulefile, modulename FROM housemoduledata LEFT JOIN housemodules USING(moduleid) WHERE value="#activated#"';
        
$result db_query($sql);
        
        while (
$row db_fetch_assoc($result))
        {
            require_once(
'housemodules/'.$row['modulefile']);
            
$function 'module_destroy_'.$row['modulename'];
            
$function($_GET['id']);
        }

        
$sql='DELETE FROM houses WHERE houseid="'.$_GET['id'].'"';
        
db_query($sql);

        
$sql='DELETE FROM items WHERE class="Schlüssel" AND value1="'.$_GET['id'].'"';
        
db_query($sql);

        
$sql='UPDATE accounts SET house=0,housekey=0 WHERE house="'.$_GET['id'].'"';
        
db_query($sql);

        
output('`6`bDas Haus wurde erfolgreich gelöscht.`b`0');
    }
        
    else
    {
        
output('`n`b`c`aWillst du das Haus Nummer '.$_GET['id'].' und all seine Schlüssel wirklich löschen?`c`b');
        
        
addnav('Das Haus...');
        
addnav('l?... `alöschen`0','suhouses.php?op=destroy&subop=confirmed&id='.$_GET['id'].'');
    }   
    
    
addnav('Ü?... zur Übersicht','suhouses.php'); 
}

elseif (
$_GET['op']=='newhouse')
{
    
addnav('Hausmeister','suhouses.php');

    if (
$_GET['subop']=='save')
    { 
// save new house
        
if ($_POST['auto']=='true')
        { 
// check given data
            
$sql "SELECT house,housekey FROM accounts WHERE acctid=$_POST[owner]";
            
$result db_query($sql) or die(db_error(LINK));
            
$row db_fetch_assoc($result);
            
            if (
$row['house']>&& !empty($_POST['owner'])) 
            {
output("`\$Fehler: Zielperson besitzt bereits ein anderes Haus oder existiert nicht.");}
            
            elseif (empty(
$_POST['housename'])) 
            {
output("`\$Fehler: Du musst einen Namen für das Haus eingeben.");}
            
            else 
            {
                if (
$_POST['status']=='sell' && (int)$_POST['owner']>0
                {
                    
output("`%Warnung: Diesem Status darf kein Besitzer zugeordnet werden. Besitzer auf 0 gesetzt.`n");
                    
$_POST['owner'] = "0";
                }
                
                
output("`6Neues Haus erstellt.`n");
                
                
$sql "INSERT INTO houses (owner,status,goldprice,gemprice,housename,description,locid) VALUES ($_POST[owner],'$_POST[status]',$_POST[goldprice],$_POST[gemprice],'$_POST[housename]','$_POST[description]','$_POST[locid]')";
                
                
db_query($sql);
                
                
$sql "SELECT houseid FROM houses WHERE owner=$_POST[owner] ORDER BY houseid DESC LIMIT 1";
                
$result2 db_query($sql) or die(db_error(LINK));
                
$row2 db_fetch_assoc($result2);
                
                if (
$_POST['status']=="ready"
                {
                    for (
$i=1;$i<getsetting('newhousekeys',10);$i++) 
                    {
                        
$sql "INSERT INTO items (name,owner,class,value1,value2,description) VALUES ('Hausschlüssel',".($_POST['owner']>0?"$_POST[owner]":"0").",'Schlüssel',$row2[houseid],$i,'Schlüssel für Haus Nummer $row2[houseid]')";
                        
db_query($sql);
                    }
                    
                    
output("`6Schlüssel in Datenbank eingetragen`n");
                }
                
                if (
$_POST['status']!="sell")
                {
                    
$sql="UPDATE accounts SET house=$row2[houseid],housekey=".($_POST['status']=="ready"?"$row2[houseid]":"0")." WHERE acctid=$_POST[owner]";
                    
output("`6Userdatenbank angepasst`n");
                    
db_query($sql);
                }
            }
        }
        
        else 
        {
            
output("`6Neues Haus erstellt.");
            
            
$sql "INSERT INTO houses (owner,status,goldprice,gemprice,housename,description,locid) VALUES ($_POST[owner],'$_POST[status]',$_POST[goldprice],$_POST[gemprice],'$_POST[housename]','$_POST[description]','$_POST[locid]')";
            
db_query($sql);
        }
    }
    
    else 
    {
        
output("`6Neues Haus anlegen:`n`n");
        
output("`0<form action=\"suhouses.php?op=newhouse&subop=save\" method='POST'>",true);
        
output("<table><tr><td>Name </td><td><input name='housename' maxlength='30'></td></tr>",true);
        
output("<tr><td>Goldpreis (im Bau) </td><td><input type='text' name='goldprice' value='0'> </td></tr>",true);
        
output("<tr><td>Edelsteinpreis (im Bau) </td><td><input type='text' name='gemprice' value='0'></td></tr>",true);
        
output("<tr><td>Beschreibung </td><td><input type='text' name='description' maxlength='250'></td></tr>",true);
        
output("<tr><td>Standort </td><td><select name='locid'>",true);
        
        
$sql 'SELECT locid, locname FROM houseconfig ORDER BY locname ASC';
        
$result db_query($sql);
        
        while (
$row db_fetch_assoc($result)) 
        
output('<option value="'.$row['locid'].'">'.$row['locname'].'</option>',true);
        
        
output('</select></td></tr>',true);
        
output("<tr><td>Status </td><td><select name='status'><option value='build'>im Bau</option><option value='ready'>fertig</option><option value='sell'>zum Verkauf</option></select></td></tr>",true);
        
output("<tr><td>`4Besitzer (ID)`0 </td><td><input type='text' name='owner' value='0'> `4(VORSICHT!)`0</td></tr>",true);
        
output("<tr><td>`4Sicherer Modus`0 </td><td><input type='checkbox' name='auto' checked='true' value='true'> `4(VORSICHT!)`0</td></tr></table>`n",true);
        
output("<input type='submit' class='button' value='Speichern'></form>",true);
        
output("`0`n`nIm unsicheren Modus Haus auch im User-Editor beim Besitzer eintragen! Status berücksichtigen! Schlüsselverwaltung!");
        
        
addnav("","suhouses.php?op=newhouse&subop=save");
    }
}

else if (
$_GET['op']=='keys')
{
    
addnav('H?... zu Haus '.$_GET['hid'].'','suhouses.php?op=drin&id='.$_GET['hid'].'');
    
addnav('Ü?... zur Übersicht','suhouses.php');
    
    if (
$_GET['subop']=="change")
    { 
// reset key owner
        
$sql="UPDATE items SET owner=$_GET[owner] WHERE value1=$_GET[hid] AND class='Schlüssel' AND value2=$_GET[id2]";
        
db_query($sql);
        
output("`6Schlüssel `%$_GET[id2]`6 für Haus Nummer `%$_GET[hid]`6 zurückgesetzt.");
    }
    
    elseif (
$_GET['subop']=="edit")
    { 
// enter new values for key
        
$sql "SELECT * FROM items WHERE id=$_GET[id]";
        
$result db_query($sql) or die(db_error(LINK));
        
$item db_fetch_assoc($result);
        
        
output("`6Schlüssel Nr. $item[value2] (item-ID $_GET[id]) für Haus $_GET[hid] bearbeiten:`n`n");
        
output("`0<form action=\"suhouses.php?op=keys&subop=edit2&id=$_GET[id]&hid=$_GET[hid]\" method='POST'>",true);
        
output("<table>",true);
        
output("<tr><td>Besitzer (owner: acctid) </td><td><input type='text' name='owner' value='$item[owner]'></td></tr>",true);
        
// output("<tr><td>Für Haus Nr. (value1) </td><td><input type='text' name='value1' value='$item[value1]'></td></tr>",true); // to change house delete the key and add a new key in other house
        
output("<tr><td>In Gebrauch? (hvalue: 0 oder Hausnr.) </td><td><input type='text' name='hvalue' value='$item[hvalue]'></td></tr>",true);
        
output("<tr><td>`4Schlüssel-ID (value2: Laufende Nr.)`0 </td><td><input type='text' name='value2' value='$item[value2]'> `4(VORSICHT!)`0</td></tr>",true);
        
output("</table>`n",true);
        
output("<input type='submit' class='button' value='Speichern'></form>",true);
        
output("`0`n`nSchlüssel-ID darf nicht doppelt vergeben werden.`nSchlüssel ohne Besitzer werden als verloren behandelt.");
        
        
addnav("","suhouses.php?op=keys&subop=edit2&id=$_GET[id]&hid=$_GET[hid]");
    }
    
    elseif (
$_GET['subop']=="edit2")
    { 
// save new values into DB
        
$sql "SELECT * FROM items WHERE id=$_GET[id]";
        
$result db_query($sql) or die(db_error(LINK));
        
$item db_fetch_assoc($result);
        
$action=false;
        
        if ((int)
$_POST['value2']!=(int)$item['value2'])
        {
            
$sql "SELECT id FROM items WHERE class='Schlüssel' AND value1=$_GET[hid] AND value2=$_POST[value2]";
            
$result db_query($sql) or die(db_error(LINK));
            
$row db_fetch_assoc($result);
            
            if (
$row[id])
            {
output("`\$Fehler: Diese ID ist bereits vergeben.");}
            
            else
            {
$action=true;}
        }
        
        if ((int)
$item['owner']!=(int)$_POST['owner'])
        {
            
$action=false;
            
$sql 'SELECT acctid FROM accounts WHERE acctid="'.$_POST['owner'].'"';
            
$result db_query($sql) or die(db_error(LINK));
            
$row db_fetch_assoc($result);
            
            if (!
$row[acctid])
            {
output("`\$Fehler: Der User existiert nicht.");}
            
            else
            {
$action=true;}
        }
        
        if (
$action)
        {
            
$sql "UPDATE items SET owner=$_POST[owner],value2=$_POST[value2],hvalue=$_POST[hvalue] WHERE id=$_GET[id]";
            
db_query($sql);
            
output("`6Änderungen übernommen.");
        }
    }
    
    elseif (
$_GET['subop']=="savenew")
    { 
// save new key
        
if ($_POST['value2'])
        {
            
$sql "SELECT value1,value2 FROM items WHERE class='Schlüssel' AND value2=$_POST[value2] AND value1=$_GET[hid]";
            
$result db_query($sql) or die(db_error(LINK));
            
$item db_fetch_assoc($result);
            
$sql='SELECT COUNT(acctid) AS num FROM accounts WHERE acctid="'.$_POST['owner'].'"';
            
$result db_query($sql) or die(db_error(LINK));
            
$row db_fetch_assoc($result);
        }
        
        if (empty(
$_POST['value2']))
        {
output("`\$Fehler: Du musst eine Schlüssel-ID angeben");}
        
        elseif ((int)
$item['value2']==(int)$_POST['value2'])
        {
output("`\$Fehler: Diese ID ist bereits vergeben.");}
        
        elseif (
$row['num']==0)
        {
output("`\$Fehler: Der User existiert nicht.");}
        
        else
        {
            
$sql "INSERT INTO items (name,owner,class,value1,value2,hvalue,description) VALUES ('Hausschlüssel',$_POST[owner],'Schlüssel',$_GET[hid],$_POST[value2],$_POST[hvalue],'Schlüssel für Haus Nummer $_GET[hid]')";
            
db_query($sql);
            
            
output("`6Schlüssel eingetragen.");
        }
    }
    
    elseif (
$_GET['subop']=="delete")
    { 
// delete key
        
output("`6Schlüssel gelöscht.");
        
$sql "DELETE FROM items WHERE id=$_GET[id]";
        
db_query($sql);
    }
    
    else
    { 
// enter new key
        
output("`6Neuen Schlüssel für Haus $_GET[hid] anlegen:`n`n");
        
output("`0<form action=\"suhouses.php?op=keys&subop=savenew&hid=$_GET[hid]\" method='POST'>",true);
        
output("<table>",true);
        
output("<tr><td>Besitzer (owner: acctid) </td><td><input type='text' name='owner' value='0'></td></tr>",true);
        
output("<tr><td>In Gebrauch? (hvalue: 0 oder Hausnr.) </td><td><input type='text' name='hvalue' value='0'></td></tr>",true);
        
output("<tr><td>`4Schlüssel-ID (value2: Laufende Nr.)`0 </td><td><input type='text' name='value2'> `4(VORSICHT!)`0</td></tr>",true);
        
output("</table>`n",true);
        
output("<input type='submit' class='button' value='Speichern'></form>",true);
        
output("`0`n`nSchlüssel-ID darf nicht doppelt vergeben werden.`nSchlüssel ohne Besitzer werden als verloren behandelt.");
        
        
addnav("","suhouses.php?op=keys&subop=savenew&hid=$_GET[hid]");
    }
}

else if (
$_GET['op']=="data")
{
    
addnav("Hausmeister","suhouses.php");
    
addnav("Zurück zu Haus $_GET[id]","suhouses.php?op=drin&id=$_GET[id]");
    
    if (
$_GET['subop']=="save")
    { 
// save values
        
$action=false;
        
        if (
$_POST['auto']=="true")
        { 
// check given data
            
$sql "SELECT * FROM houses WHERE houseid=$_GET[id]";
            
$result db_query($sql) or die(db_error(LINK));
            
$row db_fetch_assoc($result);
            
$sql "SELECT house,housekey FROM accounts WHERE acctid=$_POST[owner]";
            
$result2 db_query($sql) or die(db_error(LINK));
            
$row2 db_fetch_assoc($result2);
            
            if (
$row2['house']!=$_GET['id'] && $row2['house']>0)
            {
output("`\$Fehler: Zielperson besitzt bereits ein anderes Haus oder existiert nicht. Datenbank nicht aktualisiert.");}
            
            elseif (
$row['status']!=$_POST['status'] && $row['owner']!=$_POST['owner'])
            {
                
output("`\$Fehler: Status und Besitzer können im sicheren Modus nicht gleichzeitig geändert werden. Datenbank nicht aktualisiert.");
            }
            
            else
            {
                if (
$row['owner']!=$_POST['owner'] && $_POST['status']=='sell')
                {
                    
$_POST['status']="build";
                    
output("`%Warnung: Status dieses Hauses lässt keinen Besitzer zu. Status auf 'im Bau' gesetzt.`n");
                }
                
                elseif (
$row['status']!=$_POST['status'] && $_POST['status']=='sell' && (int)$_POST['owner']>0)
                {
                    
$_POST['owner']="0";
                    
output("`%Warnung: Dieser Statuswechsel lässt keinen Besitzer zu. Besitzer auf 0 gesetzt.`n");
                }
                
                
$action=true;
                
                if (
$_POST['status']!=$row['status'])
                {
                    if (
$_POST['status']=="build" || $_POST['status']=="sell")
                    {
                        
$sql="DELETE FROM items WHERE class='Schlüssel' AND value1=$_GET[id]";
                        
db_query($sql);
                        
                        if (
$_POST['status']=="build"
                        
$house=$_GET['id'];
                        
                        else 
                        
$house=0;
                        
                        
$housekey=0;
                        
                        
output("`6Schlüssel aus Datenbank gelöscht`n");
                    }
                    
                    elseif (
$_POST['status']=="ready")
                    {
                        
$sql="DELETE FROM items WHERE class='Schlüssel' AND value1=$_GET[id]";
                        
db_query($sql);
                        
                        for (
$i=1;$i<getsetting('newhousekeys',10);$i++)
                        {
                            
$sql "INSERT INTO items (name,owner,class,value1,value2,description) VALUES ('Hausschlüssel',$_POST[owner],'Schlüssel',$_GET[id],$i,'Schlüssel für Haus Nummer $_GET[id]')";
                            
db_query($sql);
                        }
                        
                        
$house=$_GET['id'];
                        
$housekey=$_GET['id'];
                        
                        
output("`6Schlüssel in Datenbank eingetragen`n");
                    }

                    
$sql="UPDATE accounts SET house=$house,housekey=$housekey WHERE acctid='$row[owner]'";
                    
db_query($sql);
                }
                
                else
                {
                    
$sql="UPDATE accounts SET house=0,housekey=0 WHERE acctid=$row[owner]";
                    
db_query($sql);
                    
                    if (
$_POST['status']=="ready")
                    {
                        
$housekey $_GET['id'];
                        
$house $_GET['id'];
                    }
                    
                    else
                    {
                        
$housekey 0;
                        
                        if (
$_POST['status']=='sell'
                        
$house 0;
                        
                        else 
                        
$house $_GET['id'];
                    }
                    
                    
$sql="UPDATE accounts SET house='$house',housekey='$housekey' WHERE acctid='$_POST[owner]'";
                    
db_query($sql);
                    
                    if (
$_POST['status']=='ready'
                    {
                        
$sql="UPDATE items SET owner=$_POST[owner] WHERE class='Schlüssel' AND owner=$row[owner] AND value1=$_GET[id]";
                        
db_query($sql);
                    }
                }
            }
        }
        
        else
        {
$action=true;}
        
        if (
$action)
        {
            
output("`6Daten gespeichert.");
            
            
$sql="UPDATE houses SET owner=$_POST[owner],housename='".rawurldecode($_POST['housename'])."',goldprice=$_POST[goldprice],gemprice=$_POST[gemprice],status='$_POST[status]',description='".rawurldecode($_POST['description'])."',locid='".$_POST['locid']."' WHERE houseid='$_GET[id]'";
            
            
db_query($sql);
        }
    }
    
    else
    {
        
$sql "SELECT * FROM houses WHERE houseid=$_GET[id]";
        
$result db_query($sql) or die(db_error(LINK));
        
$row db_fetch_assoc($result);
        
output("`6Daten für Haus `b$_GET[id]`b ändern:`n`n");
        
output("`0<form action=\"suhouses.php?op=data&subop=save&id=$_GET[id]\" method='POST'>",true);
        
output("<table><tr><td>Name </td><td><input name='housename' maxlength='30' value='".(rawurlencode($row[housename]))."'></td></tr>",true);
        
output("<tr><td>Goldpreis (wenn im Bau) </td><td><input type='text' name='goldprice' value='$row[goldprice]'> </td></tr>",true);
        
output("<tr><td>Edelsteinpreis (wenn im Bau) </td><td><input type='text' name='gemprice' value='$row[gemprice]'></td></tr>",true);
        
output("<tr><td>Beschreibung </td><td><input type='text' name='description' maxlength='250' value='".(rawurlencode($row[description]))."'></td></tr>",true);
        
output("<tr><td>Standort </td><td><select name='locid'>",true);
        
$sql 'SELECT locid, locname FROM houseconfig ORDER BY locname ASC';
        
$result db_query($sql);
        while (
$row2 db_fetch_assoc($result)) output('<option value="'.$row2['locid'].'" '.($row['locid']==$row2['locid']?'selected="selected"':'').'>'.$row2['locname'].'</option>',true);
        
output('</select></td></tr>',true);
        
output("<tr><td>Status </td><td><select name='status'>
                    <option value='build' "
.($row['status']=='build'?'selected="selected"':'').">im Bau</option>
                    <option value='ready' "
.($row['status']=='ready'?'selected="selected"':'').">fertig</option>
                    <option value='sell' "
.($row['status']=='sell'?'selected="selected"':'').">zum Verkauf</option></select></td></tr>",true);
        
output("<tr><td>`4Besitzer (ID)`0 </td><td><input type='text' name='owner' value='$row[owner]'> `4(VORSICHT!)`0</td></tr>",true);
        
output("<tr><td>`4Sicherer Modus`0 </td><td><input type='checkbox' name='auto' checked='true' value='true'> `4(VORSICHT!)`0</td></tr></table>`n",true);
        
output("<input type='submit' class='button' value='Speichern'></form>",true);
        
output("`0`n`nDaten, die nicht geändert werden sollen, `bnicht`b verändern!`nStatusänderung kann Auswirkungen auf die Schlüsselverwaltung haben!`nBesitzer- und Statusänderungen müssen im unsicheren Modus manuell übertragen werden!`n");
        
addnav("","suhouses.php?op=data&subop=save&id=$_GET[id]");
    }    


elseif (
$_GET['op']=='location'
{
    
addnav('Hausmeister','suhouses.php');

    if (
$_GET['subop']=='new'
    {
        
addnav('Zu den Wohngebieten','suhouses.php?op=location');
        
        
// Neues Wohngebiet eintragen
        
if (!empty($_POST['location'])) 
        {
            
$sql "INSERT INTO houseconfig (location,locname,buy,sell,build,rob,defaultgoldprice,defaultgemprice,buildprice_increase) VALUES ('$_POST[location]','$_POST[locname]','$_POST[buy]','$_POST[sell]','$_POST[build]','$_POST[rob]','$_POST[defaultgoldprice]','$_POST[defaultgemprice]','$_POST[buildprice_increase]')";
            
            
db_query($sql);
            
output('Das Wohngebiet wurde erstellt. die ID (für Links) ist '.db_insert_id(LINK));
        }
        
        
// Erstellformular
        
else 
        {
            
output('`c`bWohngebiet erstellen`b`c`n`n');
            
output('<form action="suhouses.php?op=location&subop=new" method="POST">',true);
            
            
addnav('','suhouses.php?op=location&subop=new');
            
            
output('<table><tr><td>Standort (Script):</td><td><input type="text" name="location" size="50" maxlength="255"></td></tr>',true);
            
output('<tr><td>Name:</td><td><input type="text" name="locname" size="50" maxlength="50"></td></tr>',true);
            
output('<tr><td>Hauskauf ermöglichen:</td>
                            <td><select name="buy" size="1"><option value="1">ja</option>
                            <option value="0">nein</option></select></td></tr>
                        <tr><td>Hausverkauf ermöglichen:</td>
                            <td><select name="sell" size="1"><option value="1">ja</option>
                            <option value="0">nein</option></select></td></tr>
                        <tr><td>Hausbau ermöglichen:</td>
                            <td><select name="build" size="1"><option value="1">ja</option>
                            <option value="0">nein</option></select></td></tr>
                        <tr><td>Einbruch ermöglichen:</td>
                            <td><select name="rob" size="1"><option value="1">ja</option>
                            <option value="0">nein</option></select></td></tr>
                        <tr><td>Standard-Hauspreis Gold:</td>
                            <td><input type="text" name="defaultgoldprice" size="6" value="30000"></td></tr>
                        <tr><td>Standard-Hauspreis Edelsteine:</td>
                            <td><input type="text" name="defaultgemprice" size="6" value="50"></td></tr>
                        <tr><td>Teuerungsfaktor pro leerstehendem Haus:</td>
                            <td><input type="text" name="buildprice_increase" size="3" value="0">%</td></tr>
                            </table>'
,true);
            
output('<input type="Submit" value="Erstellen"></form>',true);
        }
    }
    
    elseif (
$_GET['subop']=='edit'
    {
        
addnav('Zu den Wohngebieten','suhouses.php?op=location');
        
        
// Änderung übernehmen
        
if (!empty($_POST['location'])) 
        {
            if (
$_POST['delete']==1
            
$sql "DELETE FROM houseconfig WHERE locid='$_GET[locid]'";
            
            else 
            
$sql "UPDATE houseconfig SET location='$_POST[location]',locname='$_POST[locname]',buy='$_POST[buy]',sell='$_POST[sell]',build='$_POST[build]',rob='$_POST[rob]',defaultgoldprice='$_POST[defaultgoldprice]',defaultgemprice='$_POST[defaultgemprice]',buildprice_increase='$_POST[buildprice_increase]' WHERE locid='$_GET[locid]'";
            
            
db_query($sql);
            
output('Änderung übernommen!');
        }
        
        
// Änderungsformular
        
else 
        {
            
$sql 'SELECT * FROM houseconfig WHERE locid="'.$_GET['locid'].'"';
            
$row db_fetch_assoc(db_query($sql));
            
            
output('`c`bWohngebiet bearbeiten`b`c`n`n');
            
output('<form action="suhouses.php?op=location&subop=edit&locid='.$_GET['locid'].'" method="POST">',true);
            
            
addnav('','suhouses.php?op=location&subop=edit&locid='.$_GET['locid']);
            
            
output('<table><tr><td>ID (für Links):</td><td>'.$_GET['locid'].'</td></tr>',true);
            
output('<tr><td>Standort:</td><td><input type="text" name="location" size="50" maxlength="255" value="'.$row['location'].'"></td></tr>',true);
            
output('<tr><td>Name:</td><td><input type="text" name="locname" size="50" maxlength="50" value="'.$row['locname'].'"></td></tr>',true);
            
output('<tr><td>Hauskauf ermöglichen:</td>
                            <td><select name="buy" size="1"><option value="1">ja</option>
                        <option value="0" '
.($row['buy']==1?'':'selected').'>nein</option></select></td></tr>
                        <tr><td>Hausverkauf ermöglichen:</td>
                            <td><select name="sell" size="1"><option value="1">ja</option>
                            <option value="0" '
.($row['sell']==1?'':'selected').'>nein</option></select></td></tr>
                        <tr><td>Hausbau ermöglichen:</td>
                            <td><select name="build" size="1"><option value="1">ja</option>
                            <option value="0" '
.($row['build']==1?'':'selected').'>nein</option></select></td></tr>
                        <tr><td>Einbruch ermöglichen:</td>
                            <td><select name="rob" size="1"><option value="1">ja</option>
                            <option value="0" '
.($row['rob']==1?'':'selected').'>nein</option></select></td></tr>
                        <tr><td>Standard-Hauspreis Gold:</td>
                            <td><input type="text" name="defaultgoldprice" size="6" value="'
.$row['defaultgoldprice'].'"></td></tr>
                        <tr><td>Standard-Hauspreis Edelsteine:</td>
                            <td><input type="text" name="defaultgemprice" size="6" value="'
.$row['defaultgemprice'].'"></td></tr>
                        <tr><td>Teuerungsfaktor pro leerstehendem Haus:</td>
                            <td><input type="text" name="buildprice_increase" size="3" value="'
.$row['buildprice_increase'].'">%</td></tr>
                        <tr><td>`4Löschen:`0</td>
                            <td><input type="checkbox" name="delete" value="1"> `4(VORSICHT!)`0</td></tr>
                            </table>'
,true);
            
output('<input type="Submit" value="Ändern"></form>',true);
        }
    }
    
    else 
    {
        
$sql 'SELECT locid,locname FROM houseconfig ORDER BY locname ASC';
        
$result db_query($sql);
        
        
output('`c`bWohngebiete`b`c`n`n');
        
output('`c<table><tr><td>ID</td><td>Wohngebiet</td></tr>',true);
        
        while (
$row db_fetch_assoc($result)) {
            
output('<tr><td>'.$row['locid'].'</td><td><a href="suhouses.php?op=location&subop=edit&locid='.$row['locid'].'">'.$row['locname'].'</a></td></tr>',true);
            
addnav('','suhouses.php?op=location&subop=edit&locid='.$row['locid']);
        }
        
output('</table>`c',true);
        
addnav('Neues Wohngebiet','suhouses.php?op=location&subop=new');
    }
}

elseif (
$_GET['op']=='modules'
{
    
addnav('Zurück zum Hausmeister','suhouses.php');
    
    
output('`6`b`cHausmodule`c`b`0`n`n');
    
    if (empty(
$_GET['subop']) || $_GET['subop']!='create'
    {
        if (
file_exists('./housemodules/_default_template.tpl') && (fileperms('./housemodules') & 0x0002))
        {
addnav('Modul erstellen / bearbeiten','suhouses.php?op=modules&subop=create');}
        
        
// get all module files
        
$dir dir('./housemodules');
        
        while (
$file $dir->read()) 
        {
            if (
substr($file,-4)=='.php'
            {include(
'./housemodules/'.$file);}
            
            elseif (
substr($file,-4)=='.tmp'
            {
unlink('./housemodules/'.$file);}
        }
        
        
$dir->close();
        
// do action now
        
if (!empty($_GET['subop'])) {
            if (
$_GET['subop']=='save') {
                
$sql 'SELECT linkorder FROM housemodules WHERE moduleid="'.$_GET['mid'].'"';
                
$result db_query($sql);
                
$row db_fetch_assoc($result);
                if (
$row['linkorder']>$_POST['linkorder']) {
                    
$sql 'UPDATE  housemodules SET linkorder=linkorder+1 WHERE linkorder >= "'.$_POST['linkorder'].'" AND linkorder < '.$row['linkorder'];
                    
db_query($sql);
                }
                else {
                    
$sql 'UPDATE  housemodules SET linkorder=linkorder-1 WHERE linkorder <= "'.$_POST['linkorder'].'" AND linkorder > '.$row['linkorder'];
                    
db_query($sql);
                }
                
$sql 'UPDATE housemodules SET linkorder="'.$_POST['linkorder'].'" WHERE moduleid="'.$_GET['mid'].'"';
                
db_query($sql);
            }
            elseif (
$_GET['subop']=='uninstall') {
                
$sql 'SELECT linkorder FROM housemodules WHERE modulename="'.$_GET['name'].'"';
                
$result db_query($sql);
                
$row db_fetch_assoc($result);
                
$sql 'UPDATE  housemodules SET linkorder=linkorder-1 WHERE linkorder > '.$row['linkorder'];
                
db_query($sql);
                
$fname 'module_uninstall_'.$_GET['name'];
                
$fname();
            }
            elseif (
$_GET['subop']=='install') {
                
$fname 'module_install_'.$_GET['name'];
                
$fname();
                
$moduleid getmoduleid($_GET['name']);
                
$sql 'SELECT MAX(linkorder) AS maximum FROM housemodules';
                
$result db_query($sql);
                
$row db_fetch_assoc($result);
                
$sql 'UPDATE housemodules SET linkorder='.($row['maximum']+1).' WHERE moduleid='.$moduleid;
                
db_query($sql);
            }
        }
        
// check for module functions
        
$function_array get_defined_functions();
        
$modules = array();
        foreach (
$function_array['user'] AS $thisfunction) {
            if (
substr($thisfunction,0,15)=='module_getinfo_'$modules[] = $thisfunction;
        }
        
// unset large array to free memory
        
unset($function_array);
        
// get all installed modules
        
$installed = array();
        
$sql 'SELECT * FROM housemodules ORDER BY linkorder ASC';
        
$result db_query($sql);
        while (
$row db_fetch_assoc($result)) {
            
$installed[$row['modulename']] = $row;
        }
        
// show installed modules first
        
foreach ($installed AS $thismod) {
            if (
file_exists('./housemodules/'.$thismod['modulefile'])) {
                
$status '`2installiert`0';
            }
            else 
$status '`qFehler: installiert, aber Datei fehlt!`0';
            
output('<form action="suhouses.php?op=modules&subop=save&mid='.$thismod['moduleid'].'" method="post">',true);
            
addnav('','suhouses.php?op=modules&subop=save&mid='.$thismod['moduleid']);
            
$str '<div style="float:right;"><a href="suhouses.php?op=modules&subop=create&module='.$thismod['modulename'].'">bearbeiten</a></div>';
            
addnav('','suhouses.php?op=modules&subop=create&module='.$thismod['modulename']);
            
output('<table border="0"><tr class="trhead"><td colspan="2">'.$str.$thismod['modulename'].'</td></tr>
                        <tr class="trlight"><td>Datei:</td><td>'
.$thismod['modulefile'].'</td></tr>
                        <tr class="trdark"><td>Autor:</td><td>'
.$thismod['moduleauthor'].'</td></tr>
                        <tr class="trlight"><td>Version:</td><td>'
.$thismod['moduleversion'].'</td></tr>
                        <tr class="trdark"><td>Immer eingebaut:</td><td>'
.$thismod['built_in'].'</td></tr>
                        <tr class="trlight"><td>Linkkategorie:</td><td>'
.$thismod['linkcategory'].'</td></tr>
                        <tr class="trdark"><td>Linktitel:</td><td>'
.$thismod['linktitle'].'</td></tr>
                        <tr class="trlight"><td>Anzeige:</td><td>'
.$thismod['showto'].'</td></tr>
                        <tr class="trdark"><td>Sortierung:</td><td><input type="text" class="input" name="linkorder" value="'
.$thismod['linkorder'].'"><input type="submit" class="button" name="save" value="Speichern"></td></tr>
                        <tr class="trlight"><td>Status:</td><td>'
.$status.' [<a href="suhouses.php?op=modules&subop=uninstall&name='.$thismod['modulename'].'">deinstallieren</a>]</td></tr>
                    </table>'
,true);
            
addnav('','suhouses.php?op=modules&subop=uninstall&name='.$thismod['modulename']);
            
output('</form>',true);
        }
        
// show other modules now
        
sort($modules);
        foreach (
$modules AS $thismodule) {
            
$modinfo $thismodule();
            if (isset(
$installed[$modinfo['modulename']])) continue;
            
$str '<div style="float:right;"><a href="suhouses.php?op=modules&subop=create&module='.$modinfo['modulename'].'">bearbeiten</a></div>';
            
addnav('','suhouses.php?op=modules&subop=create&module='.$modinfo['modulename']);
            
output('<table border="0"><tr class="trhead"><td colspan="2">'.$str.$modinfo['modulename'].'</td></tr>
                        <tr class="trlight"><td>Datei:</td><td>'
.$modinfo['modulefile'].'</td></tr>
                        <tr class="trdark"><td>Autor:</td><td>'
.$modinfo['moduleauthor'].'</td></tr>
                        <tr class="trlight"><td>Version:</td><td>'
.$modinfo['moduleversion'].'</td></tr>
                        <tr class="trdark"><td>Immer eingebaut:</td><td>'
.$modinfo['built_in'].'</td></tr>
                        <tr class="trlight"><td>Linkkategorie:</td><td>'
.$modinfo['linkcategory'].'</td></tr>
                        <tr class="trdark"><td>Linktitel:</td><td>'
.$modinfo['linktitle'].'</td></tr>
                        <tr class="trlight"><td>Anzeige:</td><td>'
.$modinfo['showto'].'</td></tr>
                        <tr class="trdark"><td>Status:</td><td>`4nicht installiert`0 [<a href="suhouses.php?op=modules&subop=install&name='
.$modinfo['modulename'].'">installieren</a>]</td></tr>
                    </table><br /><br />'
,true);
            
addnav('','suhouses.php?op=modules&subop=install&name='.$modinfo['modulename']);
        }
    }
    else {
        
addnav("Fertige Module","suhouses.php?op=modules");
        
$step = isset($_GET['step']) ? $_GET['step'] : 0;
        switch (
$step) {
            case 
0:
                if (!isset(
$_GET['module'])) {
                    
// show first data
                    
output('<form action="suhouses.php?op=modules&subop=create&step=1" method="post">',true);
                    
addnav('','suhouses.php?op=modules&subop=create&step=1');
                    
output('<table border="0"><tr class="trhead"><td colspan="2">Grunddaten</td></tr>
                                <tr class="trlight"><td>Interner Name (nur Buchstaben, Zahlen, _):</td><td><input type="text" name="int_name"></td></tr>
                                <tr class="trdark"><td>Autor:</td><td><input type="text" name="author"></td></tr>
                                <tr class="trlight"><td>Version:</td><td><input type="text" name="version"></td></tr>
                                <tr class="trdark"><td>Immer eingebaut:</td><td><select name="built_in"><option value="1">ja</option><option value="0">nein</option></select></td></tr>
                                <tr class="trlight"><td>Linkkategorie:</td><td><input type="text" name="linkcategory"></td></tr>
                                <tr class="trdark"><td>Linktitel:</td><td><input type="text" name="linktitle"></td></tr>
                                <tr class="trlight"><td>Anzeige für:</td><td><select name="showto"><option value="owner,guest">Besitzer und G&auml;ste</option><option value="owner">Besitzer</option><option value="guest">G&auml;ste</option></select></td></tr>
                                <tr class="trhead"><td colspan="2" align="right"><input type="submit" class="submit" value="Weiter"></td></tr>
                            </table>'
,true);
                    
output('</form>',true);
                    break;
                }
                else {
                    if (!isset(
$_POST)) $_POST = array();
                    include(
'./housemodules/'.$_GET['module'].'.php');
                    
$fname   'module_getinfo_'.$_GET['module'];
                    
$modinfo $fname();
                    if (!
is_array($modinfo)) redirect('suhouses.php?op=modules&subop=create');
                    
$_POST['int_name']     = $modinfo['modulename'];
                    
$_POST['author']       = $modinfo['moduleauthor'];
                    
$_POST['version']      = $modinfo['moduleversion'];
                    
$_POST['built_in']     = $modinfo['built_in'];
                    
$_POST['linkcategory'] = $modinfo['linkcategory'];
                    
$_POST['linktitle']    = $modinfo['linktitle'];
                    
$_POST['showto']       = $modinfo['showto'];
                }
            case 
1:
                
// show editable source
                
$find     = array('{modulename}','{author}','{version}','{built_in}','{category}','{linktitle}','{showto}');
                
$replace  = array($_POST['int_name'],$_POST['author'],$_POST['version'],$_POST['built_in'],$_POST['linkcategory'],$_POST['linktitle'],$_POST['showto']);
                
$tpl      file_get_contents('./housemodules/_default_template.tpl');
                
$tpl      str_replace($find$replace$tpl);
                
$tpl      highlight_string($tpl,true);
                
                
// Wenn das Modul schon existiert: Editieren!
                
if (file_exists('./housemodules/'.$_POST['int_name'].'.tmp')) {
                    
$content file_get_contents('./housemodules/'.$_POST['int_name'].'.tmp');
                    
preg_match_all('/\/\* (\w+) begin \*\/\s*(.*)\s*\/\* \w+ end \*\//Us',$content,$matches); 
                    
$values  = array();
                    foreach (
$matches[1] as $key=>$val) {
                        
$values[$val] = $matches[2][$key];
                    }
                }
                elseif (
file_exists('./housemodules/'.$_POST['int_name'].'.php')) {
                    
$content file_get_contents('./housemodules/'.$_POST['int_name'].'.php');
                    
preg_match_all('/\/\* (\w+) begin \*\/\s*(.*)\s*\/\* \w+ end \*\//Us',$content,$matches); 
                    
$values  = array();
                    foreach (
$matches[1] as $key=>$val) {
                        
$values[$val] = $matches[2][$key];
                    }
                }
                
$find     = array('"{install_moduledata}"','"{install_other}"','"{delete_other}"','"{build_other}"','"{destroy_other}"');
                
$raw      '<textarea name="{name}" cols="100" rows="20" style="white-space:nowrap;">{value}</textarea>';
                
$replace  = array();
                foreach (
$find as $part) {
                    if (isset(
$values) && isset($values[substr($part,2,-2)])) {
                        
$v htmlentities($values[substr($part,2,-2)]);
                    }
                    else 
$v '';
                    
$replace[] = str_replace(array('{name}','{value}'),array(substr($part,2,-2),$v),$raw);
                }
                
$tpl      str_replace($find$replace$tpl);
                
$find     '"{content_show}"';
                if (isset(
$values) && isset($values['content_show'])) {
                    
$v htmlentities($values['content_show']);
                }
                else 
$v = <<< PHP













// uncomment these lines if you want to show the default navs even if this is not the default module
// global \$shownavs;
// \$shownavs = true;

// uncomment these lines if you want to hide the default navs even if this is the default module
// global \$shownavs;
// \$shownavs = false;
PHP;
                
$v '<textarea name="content_show" cols="100" rows="20" style="white-space:nowrap;">'.$v.'</textarea>';
                
$tpl      str_replace($find$v$tpl);
                
output('<form action="suhouses.php?op=modules&subop=create&step=2" method="post">',true);
                
addnav('','suhouses.php?op=modules&subop=create&step=2');
                
output('<input type="hidden" name="int_name" value="'.$_POST['int_name'].'"',true);
                
output('<input type="hidden" name="author" value="'.$_POST['author'].'"',true);
                
output('<input type="hidden" name="version" value="'.$_POST['version'].'"',true);
                
output('<input type="hidden" name="built_in" value="'.$_POST['built_in'].'"',true);
                
output('<input type="hidden" name="linkcategory" value="'.$_POST['linkcategory'].'"',true);
                
output('<input type="hidden" name="linktitle" value="'.$_POST['linktitle'].'"',true);
                
output('<input type="hidden" name="showto" value="'.$_POST['showto'].'"',true);
                
output('<div style="background-color:#FFF;color:#000;">',true);
                
output($tpl,true);
                
output('</div>',true);
                
output('<input type="submit" class="submit" style="float:right;" value="Fertigstellen"></form>',true);
                
addnav('','suhouses.php?op=modules&subop=create&step=1');
                break;
            case 
2:
                
ini_set('error_prepend_string',
                        
'<html>
                                <head></head>
                                <body>
                                    <form action="suhouses.php?op=modules&subop=create&step=1" method="post">
                                    <input type="hidden" name="int_name" value="'
.$_POST['int_name'].'">
                                    <input type="hidden" name="author" value="'
.$_POST['author'].'">
                                    <input type="hidden" name="version" value="'
.$_POST['version'].'">
                                    <input type="hidden" name="built_in" value="'
.$_POST['built_in'].'">
                                    <input type="hidden" name="linkcategory" value="'
.$_POST['linkcategory'].'">
                                    <input type="hidden" name="linktitle" value="'
.$_POST['linktitle'].'">
                                    <input type="hidden" name="showto" value="'
.$_POST['showto'].'">
                                    Leider ist das Script fehlerhaft:<br>'
);
                
ini_set('error_append_string','<br><input type="submit" value="Fehler beheben"></form></body></html>');
                
// create module script
                
$find     = array('{modulename}','{author}','{version}','{built_in}','{category}','{linktitle}','{showto}');
                
$replace  = array($_POST['int_name'],$_POST['author'],$_POST['version'],$_POST['built_in'],$_POST['linkcategory'],$_POST['linktitle'],$_POST['showto']);
                
$tpl      file_get_contents('./housemodules/_default_template.tpl');
                
$tpl      str_replace($find$replace$tpl);
                
$find     = array('"{install_moduledata}"','"{install_other}"','"{delete_other}"','"{build_other}"','"{destroy_other}"','"{content_show}"');
                
$replace  = array();
                foreach (
$find as $part) {
                    
$cleanpart substr($part,2,-2);
                    
$replace[] = "/* $cleanpart begin */\n".stripslashes($_POST[$cleanpart])."\n/* $cleanpart end */";
                }
                
$tpl      str_replace($find$replace$tpl);
                
$fp       fopen('./housemodules/'.$_POST['int_name'].'.tmp','w+');
                
fwrite($fp$tpl);
                
fclose($fp);
                
chmod('./housemodules/'.$_POST['int_name'].'.tmp',0777);
                include(
'./housemodules/'.$_POST['int_name'].'.tmp');
                @
unlink('./housemodules/'.$_POST['int_name'].'.php');
                
rename('./housemodules/'.$_POST['int_name'].'.tmp''./housemodules/'.$_POST['int_name'].'.php');
                
output('`b`2Das Modul wurde gespeichert!`0`b`n`n');
                
addnav('Modul erstellen / bearbeiten','suhouses.php?op=modules&subop=create');
                break;
        }
    }
}

else 
{
    
output('`6`b`cDas Wohnviertel`c`b`n`n');
    
output('<form action="suhouses.php" method="post">',true);
    
    
addnav('','suhouses.php');
    
    
output('Häuser filtern: ');
    
output('<select name="status" size="1">
            <option value="">--- alle ---</option>
            <option value="0" '
.($_REQUEST['status']===0?'selected="selected"':'').'>im Bau</option>
            <option value="1" '
.($_REQUEST['status']==1?'selected="selected"':'').'>Bauruine</option>
            <option value="2" '
.($_REQUEST['status']==2?'selected="selected"':'').'>bewohnt</option>
            <option value="3" '
.($_REQUEST['status']==3?'selected="selected"':'').'>verlassen</option>
            <option value="4" '
.($_REQUEST['status']==4?'selected="selected"':'').'>zum Verkauf</option></select> 
            <input type="submit" value="anzeigen"></form>'
,true);
                
    
output('<form action="suhouses.php?op=drin" method="post">',true);
    
    
addnav('','suhouses.php?op=drin');
    
    
output('Springe direkt zu Haus Nr. ');
    
output('<input type="text" name="id" size="4">',true);
    
output('<input type="submit" value="anzeigen"></form>',true);
    
output('Wähle das Haus:`n`n');

    
output('<table border="1" align="center" cellpadding="3" cellspacing="3" bgcolor="transparent" width="50%"><tr class="trhead">
                <td width="15%">`c`bHausnr.`b`c</td>
                <td width="35%">`bHausname`b</td>
                <td width="15%">`c`bStatus`b`c</td></tr>'
,true);
                                                                      
    
$ppp=25// Player Per Page +1 to display
    
    
if (!$_GET['limit'])
    {
$page=0;}
    
    else
    {
        
$page=(int)$_GET['limit'];
        
addnav("Vorherige Straße","suhouses.php?limit=".($page-1).($_REQUEST['status']!=''?"&status=$_REQUEST[status]":""));
    }
    
    
$limit="".($page*$ppp).",".($ppp+1);
    
    if (
$_REQUEST['status']!=''
    {
        switch (
$_REQUEST['status']) 
        {
            case 
0
                
$search ' AND status="build" AND owner > 0'
                break;
            
            case 
1
                
$search ' AND status="build" AND owner=0'
                break;
            
            case 
2
                
$search ' AND status="ready" AND owner > 0'
                break;
            
            case 
3
                
$search ' AND status="ready" AND owner=0'
                break;
            
            case 
4
                
$search ' AND status="sell"'
                break;
            
            default: 
                
$search '';
        }
    }
    
    else 
    
$search '';
    
    
$sql "SELECT houseid,housename,status FROM houses WHERE 1$search ORDER BY houseid ASC LIMIT $limit";
    
$result db_query($sql) or die(db_error(LINK));
    
    if (
db_num_rows($result)>$ppp
    
addnav("Nächste Seite","suhouses.php?limit=".($page+1).($_REQUEST['status']!=''?"&status=$_REQUEST[status]":""));
    
    if (
db_num_rows($result)==0)
    {
output('<tr><td colspan="4">`c`i`b`$Es gibt es noch keine Häuser.`b`i`c`0</td></tr>',true);}
    
    else
    {
        for (
$i=0;$i<db_num_rows($result);$i++)
        {
            
$row2 db_fetch_assoc($result);

            
output('<tr><td>`c'.$row2['houseid'].'`c</td>
                        <td><a href="suhouses.php?op=drin&id='
.$row2['houseid'].'">`l'.$row2['housename'].'`0</a></td>
                        <td>`c'
.$row2['status'].'`c</td></tr>',true);

            
addnav('','suhouses.php?op=drin&id='.$row2['houseid'].''); 
        }
    }

    
output('</table>',true);
    
    
addnav('User mit Haus','suhouses.php?op=info');
    
addnav('Neues Haus','suhouses.php?op=newhouse');
    
addnav('Wohnorte','suhouses.php?op=location');
    
addnav('Module','suhouses.php?op=modules');
}




output('`n`n`c`%&copy; 2004 by anpera & 2005 Chaosmaker`c`0',true);
page_footer();
?>
0.9.7+jt ext (GER)