LoGD Standardrelease steht hier zum Download zur Verfügung!

Zeige Source: /logd/multilogs.php

Hier klicken für den Source, ODER
Weitere Dateien, von denen du den Quelltext sehen kannst:
(Das Lesen des Source, um sich spielerische Vorteile zu verschaffen, ist nicht erlaubt. Solltest du Schwachstellen oder Fehler entdecken, bist du als Spieler verpflichtet, diese zu melden.)

Source von: /logd/multilogs.php

<?php
require_once "common.php";
page_header("Multilogs");

addnav("G?Zurück zur Grotte","superuser.php");
addnav("W?Zurück zum Weltlichen","village.php");


if(isset(
$_GET['id'])){
    
addnav("Zurück zu den Logs","logs.php");
   
addnav("Zurück zu den Multis","logs.php?op=multi&searchby=id");

    
$sql = "SELECT acctid,name,lastip,uniqueid,dragonkills,level FROM accounts
           WHERE uniqueid ='"
.$_GET['id']."' AND locked='0'
           ORDER BY dragonkills ASC, level ASC"
;
    
$result = db_query($sql) or die(db_error(LINK));
    while (
$row = db_fetch_assoc($result)) {
      
$userlist[$row['acctid']] = $row;
    }
    
$in_acctid = '';
    
$i = count($userlist);
    
output("`n`n`Q$i Characters mit ID: ".$_GET['id']."`0`n");
    
output("<table border=0 cellpadding=2 cellspacing=1 >",true);
    
output("<tr class='input'><td>Spieler/in</td><td>letzte IP</td><td>Drachen</td><td>Level</td>",true);
    foreach (
$userlist AS $member) {
        
output("<tr class='trmain'>",true);
        
output("<td>".$member['name']."`0</td><td>".$member['lastip']."</td><td align='center'>"
        
.$member['dragonkills']."</td><td align='center'>".$member['level']."</td>",true);
        
$in_acctid .= ','.$member['acctid'];
        
output("</tr>",true);
    }
    
output("</table>",true);
    
// -> debuglog
    
$sql = 'SELECT date,actor,target,debuglog.message,a1.name as actorname,a2.name as targetname
            FROM debuglog LEFT JOIN accounts as a1 ON a1.acctid=debuglog.actor
                          LEFT JOIN accounts as a2 ON a2.acctid=debuglog.target
           WHERE actor IN (-1'
.$in_acctid.')
             AND target IN (-1'
.$in_acctid.')
             AND DATE_ADD(date, INTERVAL 1 MONTH) >= NOW()
           ORDER BY date DESC, actor ASC'
;
    
$result = db_query($sql) or die(db_error(LINK));
    if (
db_num_rows($result) == 0) {
       
output("`^Debuglog:`0`n Keine Interaktion. `@Guuuuuut.`0`n");
    } else {
       
output("`^Debuglog:`0`n Die folgenden Interaktionen wurden gefunden:`n");
       while (
$row = db_fetch_assoc($result)) {
           
output("`$ Log:`0 ".$row['date']." - ".$row['actorname']."`0 ".$row['message'].
           
" ".$row['targetname']."`0`n" );
       }
    }

    
// Hauscheater!
    
$sql = 'SELECT h.houseid, h.housename, a.name, h.owner FROM items i LEFT JOIN houses h ON h.houseid=i.value1 LEFT JOIN accounts a ON a.acctid=h.owner WHERE i.class="Schlüssel" AND i.owner IN (-1'.$in_acctid.') AND i.owner!=h.owner GROUP BY i.value1 HAVING COUNT(*) > 1 OR owner IN (-1'.$in_acctid.')';
    
$result = db_query($sql);
    if (
db_num_rows($result)>0) {
        
output("`n`^Häuser:`0`n");
        
$houses = array();
        
$in_houses = '';
        
// Häuser speichern
        
while ($row = db_fetch_assoc($result)) {
            
$row['inhouse'] = '';
            
$houses[$row['houseid']] = $row;
            
$in_houses .= ','.$row['houseid'];
        }
        
db_free_result($result);
        
// Betroffene Bewohner rausfinden
        
$sql = 'SELECT value1,owner FROM items WHERE class="Schlüssel" AND owner IN (-1'.$in_acctid.') AND value1 IN (-1'.$in_houses.')';
        
$result = db_query($sql);
        while (
$row = db_fetch_assoc($result)) {
            if (
$row['owner']==$houses[$row['value1']]['owner']) continue;
            
$houses[$row['value1']]['inhouse'] .= '--- Schlüssel im Besitz von '.$userlist[$row['owner']]['name'].'`0`n';
        }
        
db_free_result($result);
        foreach (
$houses AS $house) {
            
output("`$ Vergehen:`0 Hausbesitzer von {$house['housename']}`0 (Nr. {$house['houseid']}) ist ".$house['name'].'`0`n'.$house['inhouse']);
        }
    }
} else {
    
addnav("Zurück zu den Logs","logs.php");
    
addnav("Zurück zu den Multis","logs.php?op=multi");
    
$ip = $users = $usergroup = array();
    
$in_ids = '';
    
$sql = 'SELECT uniqueid FROM accounts WHERE uniqueid!="" AND locked="0" GROUP BY uniqueid HAVING COUNT(*) > 1';
    
$result = db_query($sql) or die(db_error(LINK));
    while (
$row = db_fetch_assoc($result)) {
        
$in_ids .= ',"'.$row['uniqueid'].'"';
        
$usergroup[$row['uniqueid']] = array('users'=>array(),
                                                        
'houses'=>array(),
                                                        
'in_acctid'=>'',
                                                        
'in_houses'=>'',
                                                        
'debuglog'=>'');
    }
    
db_free_result($result);

    if (
$in_ids!='') {
        
$idlist = array();
        
$sql = 'SELECT acctid, name, lastip, uniqueid, dragonkills, level FROM accounts
                WHERE uniqueid IN ("X"'
.$in_ids.') AND locked="0"
                ORDER BY dragonkills ASC, level ASC'
;
        
$result = db_query($sql);
        while (
$row = db_fetch_assoc($result)) {
            
$usergroup[$row['uniqueid']]['users'][$row['acctid']] = $row;
            
$usergroup[$row['uniqueid']]['in_acctid'] .= ','.$row['acctid'];
            
$idlist[$row['acctid']] = $row['uniqueid'];
       }
       
db_free_result($result);

        
// -> debuglog
        
$sql = 'SELECT date,actor,target,debuglog.message,a1.name as actorname,a2.name as targetname,a1.uniqueid
                FROM accounts a1 LEFT JOIN accounts a2 ON a1.uniqueid=a2.uniqueid
                                        LEFT JOIN debuglog ON actor=a1.acctid AND target=a2.acctid
              WHERE a1.acctid IN ('
.implode(',',array_keys($idlist)).')
                  AND a2.acctid IS NOT NULL
                  AND debuglog.id IS NOT NULL
                AND DATE_ADD(date, INTERVAL 1 MONTH) >= NOW()
              ORDER BY date DESC, actor ASC'
;
        
$result = db_query($sql) or die(db_error(LINK));
        if (
db_num_rows($result) > 0) {
            while (
$row = db_fetch_assoc($result)) {
                
$usergroup[$row['uniqueid']]['debuglog'] .=
                        
"`$ Log:`0 ".$row['date']." - ".$row['actorname']."`0 ".$row['message']." ".$row['targetname']."`0`n" ;
            }
        }
        
db_free_result($result);


        
// Hauscheater!
        // Erstmal alle Schlüssel finden, die die Multis haben
        
$houseids = array();
        
$sql = 'SELECT items.value1, items.owner AS keyowner, houses.owner AS houseowner FROM items LEFT JOIN houses ON houses.houseid=items.value1 WHERE items.owner!=houses.owner AND items.class="Schlüssel" AND items.owner IN (-1,'.implode(',',array_keys($idlist)).')';
        
$result = db_query($sql);
        while (
$row = db_fetch_assoc($result)) {
            if (isset(
$idlist[$row['houseowner']]) && !isset($usergroup[$idlist[$row['houseowner']]]['houses'][$row['value1']])){
                
$usergroup[$idlist[$row['houseowner']]]['houses'][$row['value1']] = 1;
            }

            if (
$row['houseowner']==$row['keyowner']) continue;

            if (!isset(
$usergroup[$idlist[$row['keyowner']]]['houses'][$row['value1']])){
                
$usergroup[$idlist[$row['keyowner']]]['houses'][$row['value1']] = 1;
            }
            else {
                
$usergroup[$idlist[$row['keyowner']]]['houses'][$row['value1']]++;
                if (!
in_array($row['value1'],$houseids)) $houseids[] = $row['value1'];
            }
        }
        
db_free_result($result);

        
// Häuser raussuchen, wo mehr als ein Spieler einer Multigruppe drinsitzt und beides in Zusammenhang bringen
        
$in_houses = '';
        foreach (
$usergroup AS $grid=>$thisgroup) {
            
$tmpstr = '';
            foreach (
$thisgroup['houses'] AS $houseid=>$thishouse) {
                if (
$thishouse > 1) {
                    
$tmpstr .= ','.$houseid;
                }
            }
            if (
$tmpstr!='') {
                
$in_houses .= ' OR (owner IN (-1'.$thisgroup['in_acctid'].') AND value1 IN (-1'.$tmpstr.'))';
            }
            
$usergroup[$grid]['houses'] = array();
        }

        if (
count($houseids)>0) {
            
// Alle Häuserdaten zu betroffenen Häusern holen
            
$housedata = array();
            
$sql = 'SELECT h.houseid, h.housename, a.name, h.owner FROM houses h LEFT JOIN accounts a ON a.acctid=h.owner WHERE h.houseid IN ('.implode(',',$houseids).')';
            
$result = db_query($sql);
            while (
$row = db_fetch_assoc($result)) {
                
$housedata[$row['houseid']] = $row;
            }
            
db_free_result($result);
        }

       
// Alle als Multivergehen erkannten Schlüssel einlesen
        
$sql = 'SELECT value1, owner FROM items WHERE class="Schlüssel" AND (0'.$in_houses.')';
        
$result = db_query($sql);
        while (
$row = db_fetch_assoc($result)) {
            if (
$row['owner']==$housedata[$row['value1']]['owner']) continue;
            
$usergroup[$idlist[$row['owner']]]['houses'][$row['value1']] .= '--- Schlüssel im Besitz von '.$usergroup[$idlist[$row['owner']]]['users'][$row['owner']]['name'].'`0`n';
        }
        
db_free_result($result);

        
// Nu endlich mal an die Ausgabe...
        
foreach ($usergroup AS $cookie=>$thisgroup) {
            if (
count($thisgroup['houses'])==0 && $thisgroup['debuglog']=='') continue;
    
            
output("`n`n`Q".count($thisgroup['users'])." Characters mit Cookie: $cookie`0`n");
            
output("<table border=0 cellpadding=2 cellspacing=1 >",true);
            
output("<tr class='input'><td>Spieler/in</td><td>letzte IP</td><td>Drachen</td><td>Level</td>",true);

            foreach (
$thisgroup['users'] AS $member) {
                
output("<tr class='trmain'>",true);
                
output("<td>".$member['name']."`0</td><td>".$member['lastip']."</td><td align='center'>"
                    
.$member['dragonkills']."</td><td align='center'>".$member['level']."</td>",true);
                
output("</tr>",true);
            }
            
output("</table>",true);

            if (
$thisgroup['debuglog']!='') {
                
output("`^Debuglog:`0`n Die folgenden Interaktionen wurden gefunden:`n");
                
output($thisgroup['debuglog']);
          }
          if (
count($thisgroup['houses']>0)) {
              
output("`n`^Häuser:`0`n");
              foreach (
$thisgroup['houses'] AS $houseid=>$houseval) {
                    
output("`$ Vergehen:`0 Hausbesitzer von ".$housedata[$houseid]['housename']."`0 (Nr. {$houseid}) ist ".$housedata[$houseid]['name'].'`0`n'.$houseval);
              }
          }

          
output("`n`n");
        }
    }
    else
output('Keine Multis gefunden!');
}

output("`n");
page_footer();
?>