MyBB.de Forum

Normale Version: Export-Möglichkeit von (einzelnen) User-Profilen bzw Stamm-Daten?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7
(08.12.2017, 20:37)MrBrechreiz schrieb: [ -> ]... Zu finden wird ab hier ein Link im Popup, bei den "Benutzer & Gruppen->Benutzer", wenn man auf den Optionen Button klickt...

Funktioniert wie beschrieben StarStarStar  

In der Übersichtseite mit Downloadlink bzw in der Textdatei findet man dann, zB:

Benutzername: ...
Webseite: Unbekannt
Email: ...
ICQ-ID: Unbekannt
AIM-ID: Unbekannt
Yahoo-ID: Unbekannt
Skype-ID: Unbekannt
Google-Hangouts-ID: Unbekannt
Registrierungs-IP: ...
Letzte bekannte IP: ...

Es gibt auch einen Eintrag in "Administrator Log-DatenCool


Allerdings wird bei einem Sonderzeichen im Nick dieses nicht korrekt dargestellt - zB æ wird zu Ã¦
Hat das vielleicht damit
(11.12.2017, 13:15)DeGato schrieb: [ -> ]... Diese Zeile sieht bei mir so aus (siehe am Ende extra Klammer):

PHP-Code:
$popup->add_item($lang->show_attachments"index.php?module=forum-attachments&results=1&username=".urlencode(htmlspecialchars_uni($user['username']))); 
...
 zu tun bzw weil wir (noch) 1.8.7 laufen haben?


Außerdem werden nur die "Letzte bekannte IP:" und "Registrierungs-IP:" ausgegeben; Es gibt aber auch welche "dazwischen", also alle die bisher vom User verwendet wurden - das kann bei einigen Usern eine ziemlich lange Liste sein;


Auch fehlen noch:
Signatur: ...
Registriert seit: ...
Letzter Besuch: ...
Beiträge (gesamt): ...
Themen (gesamt): ...
Gesamte Onlinezeit: ...
Eigener Benutzertitel: ...
Abwesenheitsinformation: ...
Avatar: ...
Attachments: ...
Bei beidem letzteren müsste man wohl die Bild-Datei/en neben der generierten Text-Datei der/dem User/in übermitteln, in der Text-Datei könnten die (absoluten) URLs zu den Dateien ausgegeben werden?! Wobei, bei den Attachments müsste ich noch nachfragen ob das nötig ist...


Bei dieser Gelegenheit - die zusätzlichen eigenen Profilfelder wären:

Geburtsdatum / fid=?
Ort / fid=1
? / fid=2
Gender/Beziehung / fid=3
Sternzeichen / fid=4
Land / fid=5
Kurzprofil/Lebensmotto / fid=6
Ich mag / fid=7
Ich mag nicht / fid=8
Interessen / fid=9
Mehr über mich / fid=10


Schließlich gibts bei uns noch die "Social Sites" - https://www.mybb.de/erweiterungen/18x/pl...al-sites2/


... das müsste ja auch noch alles rein, weil vom User selbst veränderbar/ausfüllbar; Wenn das jetzt zu aufwändig werden würde müssten wohl doch andere Möglichkeiten zum Exportieren genutzt werden...  Undecided
(12.12.2017, 06:52)DeGato schrieb: [ -> ]...
Allerdings wird bei einem Sonderzeichen im Nick dieses nicht korrekt dargestellt - zB æ wird zu Ã¦
Hat das vielleicht damit ... zu tun bzw weil wir (noch) 1.8.7 laufen haben?
...

Das ist hinfällig, die Datei wird richtig benannt und auch der Eintrag im Text darin ist richtig - nur der Browser kann es selbst ev nicht richtig anzeigen...
@ all -> Danke bisher.

Ich frage mich ob wir (die deutschsprachigen User/Forenbetreiber) die einzigen sind, die dieses Thema ernst nehmen?
Das die Amis das auf die leichte Schulter nehmen ist verständlich - doch die EU besteht ja nicht nur aus den deutschsprachigen Ländern - und dass sich die anderen EU-User diesem Thema nicht annehmen erstaunt mich doch echt.
Die anderen EU-User diskutieren das u.U. in deren Support-Foren evtl. auch. Vielleicht findet sich aber mal jemand, der zumindest ein Plugin für diese Anforderung strickt.
Bin noch dran, aber vorerst als Hardcoded Version.
Hier nun die nächste Version.

Tausche die gesamte export_user action aus Beitrag 11 mit dieser.

PHP-Code:
// user-export
if($mybb->input['action'] == "export_user")
{
    
$page->add_breadcrumb_item("Benuter-Export Vorschau");
    
$page->output_header("Benuter-Export");

    
$sub_tabs['export_user'] = array(
        
'title' => "Benuter-Export",
        
'link' => "index.php?module=user-users&action=export_user&uid={$mybb->input['uid']}",
        
'description' => "Hier eine Zusammenstellung aller erforderlichen Benutzerdaten für den Export."
    
);

    
$page->output_nav_tabs($sub_tabs'export_user');

    
$usergroups = array();
    
#$query = $db->simple_select("users", "*", "uid='{$mybb->input['uid']}'", array('limit' => 1));
    
$query $db->query("
        SELECT u.*, u.uid, u.username, u.usergroup, u.displaygroup, u.additionalgroups, u.avatar, g.title as usergrouptitle, uf.*
        FROM "
.TABLE_PREFIX."users u
        LEFT JOIN "
.TABLE_PREFIX."usergroups g ON (g.gid=u.usergroup)
        LEFT JOIN "
.TABLE_PREFIX."userfields uf ON (u.uid = uf.ufid)
        WHERE u.uid='
{$mybb->input['uid']}'
        LIMIT 1
    "
);
    
$user $db->fetch_array($query);
    
    
$allgroups $user['additionalgroups'];
    
$alle explode (',',$allgroups);
    if(
$user['uid'] || $mybb->input['uid'] == $user['uid'])
    {
        
$totalgroups count($alle);
    
        for(
$counter 0$counter $totalgroups$counter++)
        {
            
$g $alle[$counter];

            
$query $db->query("select gid, title FROM ".TABLE_PREFIX."usergroups WHERE gid='$g'");
            
$fetch $db->fetch_array($query);
            
            
$additionalgroups .= $coma.$fetch['title'];
            
$coma ", ";
        }
    }
    
    
$user['username'] = htmlspecialchars_uni($user['username']);
    
$username htmlspecialchars_uni($user['username']);

    
log_admin_action($user['uid'], htmlspecialchars_uni($user['username']));

    
$table = new Table;

    
$table->construct_header("Benutzer-Daten", array('colspan' => '2'));
    
    
$table->construct_cell("<strong>Benutzername:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['username']);
    
$table->construct_row();
    
    if(empty(
$user['birthday']))
    {
        
$user['birthday'] = $lang->unknown;
    }
    else
    {
        
$membday explode("-"$user['birthday']);

        if(
$user['birthdayprivacy'] != 'none')
        {
            if(
$membday[0] && $membday[1] && $membday[2])
            {
                
$lang->membdayage $lang->sprintf($lang->membdayageget_age($user['birthday']));

                
$bdayformat fix_mktime($mybb->settings['dateformat'], $membday[2]);
                
$membday mktime(000$membday[1], $membday[0], $membday[2]);
                
$membday date($bdayformat$membday);

                
$membdayage $lang->membdayage;
            }
            elseif(
$membday[2])
            {
                
$membday mktime(00011$membday[2]);
                
$membday date("Y"$membday);
                
$membdayage '';
            }
            else
            {
                
$membday mktime(000$membday[1], $membday[0], 0);
                
$membday date("F j"$membday);
                
$membdayage '';
            }
        }

        if(
$user['birthdayprivacy'] == 'age')
        {
            
$membday $lang->birthdayhidden;
        }
        else if(
$user['birthdayprivacy'] == 'none')
        {
            
$membday $lang->birthdayhidden;
            
$membdayage '';
        }
    }
    
$table->construct_cell("<strong>{$lang->birthday}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($membday);
    
$table->construct_row();    
    
    
$reg_date my_date('relative'$user['regdate']);
    if(
$user['dst'] == 1)
    {
        
$timezone = (float)$user['timezone']+1;
    }
    else
    {
        
$timezone = (float)$user['timezone'];
    }
    
$local_date gmdate($mybb->settings['dateformat'], TIME_NOW + ($timezone 3600));
    
$local_time gmdate($mybb->settings['timeformat'], TIME_NOW + ($timezone 3600));

    
$localtime $lang->sprintf($lang->local_time_format$local_date$local_time);
    
    
$table->construct_cell("<strong>{$lang->registration_date}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($reg_date);
    
$table->construct_row();
    
    if(empty(
$user['lastactive']))
    {
        
$last_active $lang->unknown;
    }
    else
    {
        
$last_active gmdate($mybb->settings['dateformat'], $user['lastactive']);
        
$last_active_time gmdate($mybb->settings['timeformat'], $user['lastactive']);
    }
    
$table->construct_cell("<strong>{$lang->last_active}:</strong> ", array('width' =>'200'));
    
$table->construct_cell("{$last_active}{$last_active_time}");
    
$table->construct_row();
    
    if(empty(
$user['website']))
    {
        
$user['website'] = $lang->unknown;
    }
    else
    {
        
$user['website'] = htmlspecialchars_uni($user['website']);

    }
    
$table->construct_cell("<strong>Webseite:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['website']);
    
$table->construct_row();
    
    if(empty(
$user['email']))
    {
        
$user['email'] = $lang->unknown;
    }
    else
    {
        
$user['email'] = htmlspecialchars_uni($user['email']);

    }
    
$table->construct_cell("<strong>E-Mail:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['email']);
    
$table->construct_row();
    
    if(empty(
$user['icq']))
    {
        
$user['icq'] = $lang->unknown;
    }
    else
    {
        
$user['icq'] = htmlspecialchars_uni($user['icq']);

    }
    
$table->construct_cell("<strong>ICQ-Nummer:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['icq']);
    
$table->construct_row();
    
    if(empty(
$user['aim']))
    {
        
$user['aim'] = $lang->unknown;
    }
    else
    {
        
$user['aim'] = htmlspecialchars_uni($user['aim']);

    }
    
$table->construct_cell("<strong>AIM-ID:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['aim']);
    
$table->construct_row();
    
    if(empty(
$user['yahoo']))
    {
        
$user['yahoo'] = $lang->unknown;
    }
    else
    {
        
$user['yahoo'] = htmlspecialchars_uni($user['yahoo']);

    }
    
$table->construct_cell("<strong>Yahoo-ID:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['yahoo']);
    
$table->construct_row();
    
    if(empty(
$user['skype']))
    {
        
$user['skype'] = $lang->unknown;
    }
    else
    {
        
$user['skype'] = htmlspecialchars_uni($user['skype']);

    }
    
$table->construct_cell("<strong>Skype-ID:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['skype']);
    
$table->construct_row();
    
    if(empty(
$user['google']))
    {
        
$user['google'] = $lang->unknown;
    }
    else
    {
        
$user['google'] = htmlspecialchars_uni($user['google']);

    }
    
$table->construct_cell("<strong>Google-Hangouts-ID:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['google']);
    
$table->construct_row();

    if(empty(
$user['lastip']))
    {
        
$user['lastip'] = $lang->unknown;
    }
    else
    {
        
$user['lastip'] = my_inet_ntop($db->unescape_binary($user['lastip']));
    }
    
    
$table->construct_cell("<strong>{$lang->last_known_ip}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['lastip']);
    
$table->construct_row();

    if(empty(
$user['regip']))
    {
        
$user['regip'] = $lang->unknown;
    }
    else
    {
        
$user['regip'] = my_inet_ntop($db->unescape_binary($user['regip']));

    }
    
$table->construct_cell("<strong>{$lang->registration_ip}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['regip']);
    
$table->construct_row();
    
    
$table->construct_cell("<strong>{$lang->thread_count}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['threadnum']);
    
$table->construct_row();
    
    
$table->construct_cell("<strong>{$lang->post_count}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['postnum']);
    
$table->construct_row();
    
    
$table->construct_cell("<strong>{$lang->primary_user_group}:</strong> ", array('width' =>'200'));
    
$table->construct_cell(htmlspecialchars_uni($user['usergrouptitle']));
    
$table->construct_row();
    
    
$table->construct_cell("<strong>{$lang->additional_groups}:</strong> ", array('width' =>'200'));
    
$table->construct_cell(htmlspecialchars_uni($additionalgroups));
    
$table->construct_row();
    
    require_once 
MYBB_ROOT."inc/class_parser.php";
    
$parser = new postParser;
        
    if(empty(
$user['signature']) && ($user['suspendsignature'] == || $user['suspendsigtime'] < TIME_NOW))
    {
        
$user['signature'] = $lang->unknown;
    }
    else
    {
        
$sig_parser = array(
            
"allow_html" => 0,
            
"allow_mycode" => 0,
            
"allow_smilies" => 0,
            
"allow_imgcode" => 0,
            
//"me_username" => $me_username,
            
"filter_badwords" => 1
        
);
        
$user['signature'] = $parser->parse_message($user['signature'], $sig_parser);
    }
    
$table->construct_cell("<strong>{$lang->signature}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['signature']);
    
$table->construct_row();
    
    if(
$user['timeonline'] > 0)
    {
        
$timeonline nice_time($user['timeonline']);
    }
    
$table->construct_cell("<strong>Gesamte Onlinezeit:</strong> ", array('width' =>'200'));
    
$table->construct_cell($timeonline);
    
$table->construct_row();
    
    if(empty(
$user['usertitle']))
    {
        
$user['usertitle'] = $lang->unknown;
    }
    else
    {
        
$user['usertitle'] = htmlspecialchars_decode($user['usertitle']);

    }
    
$table->construct_cell("<strong>{$lang->custom_user_title}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['usertitle']);
    
$table->construct_row();
    
    if(
$user['away'] == 0)
    {
        
$user['away'] = $lang->im_here;
    }
    if(
$user['away'] == && $mybb->settings['allowaway'] != 0)
    {
        
$user['away'] = $lang->im_away."\r\n";
        
$awaydate my_date($mybb->settings['dateformat'], $user['awaydate']);
        if(!empty(
$user['awayreason']))
        {
            
$reason $parser->parse_badwords($user['awayreason']);
            
$awayreason htmlspecialchars_uni($reason);
            
$user['away'] .= $lang->away_reason " " .$awayreason."\r\n";
        }
        else
        {
            
$awayreason $lang->away_no_reason;
        }
        if(
$user['returndate'] == '')
        {
            
$returndate $lang->unknown;
        }
        else
        {
            
$returnhome explode("-"$user['returndate']);

            if(
$returnhome[2] >= 2038)
            {
                require_once 
MYBB_ROOT."inc/functions_time.php";
                
$returnmkdate adodb_mktime(000$returnhome[1], $returnhome[0], $returnhome[2]);
                
$returndate my_date($mybb->settings['dateformat'], $returnmkdate""1true);
                
$user['away'] .= $lang->return_date " " .$returndate;
            }
            else
            {
                
$returnmkdate mktime(000$returnhome[1], $returnhome[0], $returnhome[2]);
                
$returndate my_date($mybb->settings['dateformat'], $returnmkdate);
                
$user['away'] .= $lang->return_date " " .$returndate;
            }

            if(
$returnmkdate TIME_NOW)
            {
                
$db->update_query('users', array('away' => '0''awaydate' => '0''returndate' => '''awayreason' => ''), 'uid=\''.(int)$user['uid'].'\'');

                
$user['away'] = 0;
            }
        }
    }
    
$table->construct_cell("<strong>{$lang->away_information}:</strong> ", array('width' =>'200'));
    
$table->construct_cell(nl2br($user['away']));
    
$table->construct_row();
    
    
$filds = array(
        
"fid1: ".$user['fid1'],
        
"fid2: ".$user['fid2'],
        
"fid3: ".$user['fid3'],
        
"fid4: ".$user['fid4'],
        
"fid5: ".$user['fid5'],
        
"fid6: ".$user['fid6']
    );
    
$userfields implode("<br />\r\n"$filds);
    
$table->construct_cell("<strong>Profilfeld(er):</strong> ", array('width' =>'200'));
    
$table->construct_cell($userfields);
    
$table->construct_row();
    
    
$exportuser $user['username'];
    
$table->construct_cell("<strong>Diese Daten als txt downloaden:</strong><br />(Rechtsklick->Speichern unter)", array('width' =>'200'));
    
#$filename = $exportuser;
    
$user = array(
        
"Benutzername: ".$user['username']."\r\n",
        
"Geburtsdatum: ".$membday."\r\n",
        
"Registrierungsdatum: ".$reg_date."\r\n",
        
"Letzte Aktivität: ".$last_active.", ".$last_active_time."\r\n",
        
"Gesamte Onlinezeit: ".$timeonline."\r\n",
        
"Webseite: ".$user['website']."\r\n",
        
"Email: ".$user['email']."\r\n",
        
"ICQ-ID: ".$user['icq']."\r\n",
        
"AIM-ID: ".$user['aim']."\r\n",
        
"Yahoo-ID: ".$user['yahoo']."\r\n",
        
"Skype-ID: ".$user['skype']."\r\n",
        
"Google-Hangouts-ID: ".$user['google']."\r\n",
        
"Registrierungs-IP: ".$user['regip']."\r\n",
        
"Letzte bekannte IP: ".$user['lastip']."\r\n",
        
"Themenanzahl: ".$user['threadnum']."\r\n",
        
"Beitragsanzahl: ".$user['postnum']."\r\n",
        
"Primäre Benutzergruppe: ".$user['usergrouptitle']."\r\n",
        
"Sekundäre Gruppen: ".$additionalgroups."\r\n",
        
"Signatur: ".$user['signature'] = str_replace("<br />"""$user['signature'])."\r\n",
        
"Eigener Benutzertitel: ".$user['usertitle']."\r\n",
        
"Abwesenheitsinformation: ".$user['away']."\r\n",
        
"Profilfeld(er): ".$userfields str_replace("<br />"""$userfields)
    );

    
$ordner "userdaten/".$exportuser.".txt";
    
$fp = @fopen($ordner"w+");
    foreach(
$user as $valuesfwrite($fp$values."\r\n");
    
fclose($fp);
    
    
$table->construct_cell("<a href=\"userdaten/{$exportuser}\" title=\"\">Datei downloaden</a>");
    
$table->construct_row();

    
$table->output("Benutzer-Daten von ".$username);

    
$page->output_footer();
}
// user-export ende 

Ich habe bis auf eine Sache (Letzte bekannte IP: ...) alle genannten Felder eines Users berücksichtigt. Die Profilfelder (fidxx) müssen noch entsprechend angepasst werden. Zur Zeit sind fid1 bis fid6 eingebaut.

Einfach dieses Array erweitern / ändern

PHP-Code:
    $filds = array(
        
"fid1: ".$user['fid1'],
        
"fid2: ".$user['fid2'],
        
"fid3: ".$user['fid3'],
        
"fid4: ".$user['fid4'],
        
"fid5: ".$user['fid5'],
        
"fid6: ".$user['fid6']
    ); 


Hoffe dir genügt es ? Big Grin
(14.12.2017, 21:23)MrBrechreiz schrieb: [ -> ]Hier nun die nächste Version.

Tausche die gesamte export_user action aus Beitrag 11 mit dieser.
...

Ich habe bis auf eine Sache (Letzte bekannte IP: ...) alle genannten Felder eines Users berücksichtigt. Die Profilfelder (fidxx) müssen noch entsprechend angepasst werden. Zur Zeit sind fid1 bis fid6 eingebaut.

Einfach dieses Array erweitern / ändern...

Hoffe dir genügt es ?  Big Grin

Jain - was ich so in Version2 gesehen habe, ist fast alles drin (aber halt nur fast)...  Wink 

Was mir aufgefallen ist:

Das Geburtsdatum wird nicht ausgegeben, auch wenn in der DB ein volles oder auch nur die Jahreszahl steht;

In der Feld-Ausgabe der Signatur wird auch der html/BB-Formatierungs-Code ausgegeben, ist aber ev so richtig (frage ich bei uns intern nach);

Die Zeilen mit den "fidxx: ... hab ich noch bissi formatiert ( "<strong>Ort:</strong> ".$user['fid1'], usw usf), damit man bei der Übersicht zumindest bissi Struktur drin hat, im Textfile wäre das ja wieder weg(?!); Nachtrag: das nehm ich wieder raus, weil die html-Formatierung in die Datei leider mit übernommen wird;

Die "fid2: ... hab ich mit # deaktiviert, da wird kein Ergebnis ausgegeben (eventuell ist da bei 1. Installation ein Profilfeld gewesen, wurde aber wieder gelöscht, kann ich so jetzt auf die Schnelle nicht herausbekommen);

Die Download-Datei bekommt automatisch (so wie in Version1) KEINE Endung mehr, also das ".txt" fehlt - im Ordner "userdaten" befindet sich aber die Datei mit Endung; Egal ob ich es einfach so downloade oder beim richtig ausgegebenen Profil-Namen das ".txt" manuell anfüge, es wird diese Datei downgeloadet:
Code:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /admin/userdaten/Profil-Name was not found on this server.</p>
<hr>
<address>Apache/2.2.22 (Debian) DAV/2 SVN/1.6.17 PHP/5.5.37-1~dotdeb+7.1 mod_python/3.3.1 Python/2.7.3 mod_ssl/2.2.22 OpenSSL/1.0.1e mod_perl/2.0.7 Perl/v5.14.2 Server at ... Port 80</address>
</body></html>

- habs erneut mit Deiner originalen Version2 probiert, dennoch dieses ".txt"-Problem; Lade ich die generierte Datei per FTP runter, ist in der Datei allerdings alles drinn was soll;

Huh
Habe nun noch ein paar Fehler entfernt und auch gleich eine Umlaute-Umwandlung mit eingebaut.

Profilfelder und die beiden array´s für die Umlaute ggf. erweitern. Habe jetzt nur die gängigsten drinnen.

PHP-Code:
// user-export
if($mybb->input['action'] == "export_user")
{
    
$page->add_breadcrumb_item("Benuter-Export Vorschau");
    
$page->output_header("Benuter-Export");

    
$sub_tabs['export_user'] = array(
        
'title' => "Benuter-Export",
        
'link' => "index.php?module=user-users&amp;action=export_user&amp;uid={$mybb->input['uid']}",
        
'description' => "Hier eine Zusammenstellung aller erforderlichen Benutzerdaten für den Export."
    
);

    
$page->output_nav_tabs($sub_tabs'export_user');

    
$usergroups = array();
    
#$query = $db->simple_select("users", "*", "uid='{$mybb->input['uid']}'", array('limit' => 1));
    
$query $db->query("
        SELECT u.*, u.uid, u.username, u.usergroup, u.displaygroup, u.additionalgroups, u.avatar, g.title as usergrouptitle, uf.*
        FROM "
.TABLE_PREFIX."users u
        LEFT JOIN "
.TABLE_PREFIX."usergroups g ON (g.gid=u.usergroup)
        LEFT JOIN "
.TABLE_PREFIX."userfields uf ON (u.uid = uf.ufid)
        WHERE u.uid='
{$mybb->input['uid']}'
        LIMIT 1
    "
);
    
$user $db->fetch_array($query);
    
    
$allgroups $user['additionalgroups'];
    
$alle explode (',',$allgroups);
    if(
$user['uid'] || $mybb->input['uid'] == $user['uid'])
    {
        
$totalgroups count($alle);
    
        for(
$counter 0$counter $totalgroups$counter++)
        {
            
$g $alle[$counter];

            
$query $db->query("select gid, title FROM ".TABLE_PREFIX."usergroups WHERE gid='$g'");
            
$fetch $db->fetch_array($query);
            
            
$additionalgroups .= $coma.$fetch['title'];
            
$coma ", ";
        }
    }
    
    
$user['username'] = htmlspecialchars_uni($user['username']);
    
$username htmlspecialchars_uni($user['username']);

    
log_admin_action($user['uid'], htmlspecialchars_uni($user['username']));

    
$table = new Table;

    
$table->construct_header("Benutzer-Daten", array('colspan' => '2'));
    
    
$table->construct_cell("<strong>Benutzername:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['username']);
    
$table->construct_row();
    
    if(empty(
$user['birthday']))
    {
        
$user['birthday'] = $lang->unknown;
    }
    else
    {
        
$membday explode("-"$user['birthday']);

        if(
$user['birthdayprivacy'] != 'none')
        {
            if(
$membday[0] && $membday[1] && $membday[2])
            {
                
$lang->membdayage $lang->sprintf(" ({1} Jahre alt)"get_age($user['birthday']));

                
$bdayformat fix_mktime($mybb->settings['dateformat'], $membday[2]);
                
$membday mktime(000$membday[1], $membday[0], $membday[2]);
                
$membday date($bdayformat$membday);

                
$membdayage "({1} Jahre alt)";
            }
            elseif(
$membday[2])
            {
                
$membday mktime(00011$membday[2]);
                
$membday date("Y"$membday);
                
$membdayage '';
            }
            else
            {
                
$membday mktime(000$membday[1], $membday[0], 0);
                
$membday date("F j"$membday);
                
$membdayage '';
            }
        }

        if(
$user['birthdayprivacy'] == 'age')
        {
            
$membday "Versteckt";
        }
        else if(
$user['birthdayprivacy'] == 'none')
        {
            
$membday "Versteckt";
            
$membdayage '';
        }
    }
    
$table->construct_cell("<strong>{$lang->birthday}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($membday.$lang->membdayage);
    
$table->construct_row();    
    
    
$reg_date my_date('relative'$user['regdate']);
    if(
$user['dst'] == 1)
    {
        
$timezone = (float)$user['timezone']+1;
    }
    else
    {
        
$timezone = (float)$user['timezone'];
    }
    
$local_date gmdate($mybb->settings['dateformat'], TIME_NOW + ($timezone 3600));
    
$local_time gmdate($mybb->settings['timeformat'], TIME_NOW + ($timezone 3600));

    
$localtime $lang->sprintf($lang->local_time_format$local_date$local_time);
    
    
$table->construct_cell("<strong>{$lang->registration_date}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($reg_date);
    
$table->construct_row();
    
    if(empty(
$user['lastactive']))
    {
        
$last_active $lang->unknown;
    }
    else
    {
        
$last_active gmdate($mybb->settings['dateformat'], $user['lastactive']);
        
$last_active_time gmdate($mybb->settings['timeformat'], $user['lastactive']);
    }
    
$table->construct_cell("<strong>{$lang->last_active}:</strong> ", array('width' =>'200'));
    
$table->construct_cell("{$last_active}{$last_active_time}");
    
$table->construct_row();
    
    if(empty(
$user['website']))
    {
        
$user['website'] = $lang->unknown;
    }
    else
    {
        
$user['website'] = htmlspecialchars_uni($user['website']);

    }
    
$table->construct_cell("<strong>Webseite:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['website']);
    
$table->construct_row();
    
    if(empty(
$user['email']))
    {
        
$user['email'] = $lang->unknown;
    }
    else
    {
        
$user['email'] = htmlspecialchars_uni($user['email']);

    }
    
$table->construct_cell("<strong>E-Mail:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['email']);
    
$table->construct_row();
    
    if(empty(
$user['icq']))
    {
        
$user['icq'] = $lang->unknown;
    }
    else
    {
        
$user['icq'] = htmlspecialchars_uni($user['icq']);

    }
    
$table->construct_cell("<strong>ICQ-Nummer:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['icq']);
    
$table->construct_row();
    
    if(empty(
$user['aim']))
    {
        
$user['aim'] = $lang->unknown;
    }
    else
    {
        
$user['aim'] = htmlspecialchars_uni($user['aim']);

    }
    
$table->construct_cell("<strong>AIM-ID:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['aim']);
    
$table->construct_row();
    
    if(empty(
$user['yahoo']))
    {
        
$user['yahoo'] = $lang->unknown;
    }
    else
    {
        
$user['yahoo'] = htmlspecialchars_uni($user['yahoo']);

    }
    
$table->construct_cell("<strong>Yahoo-ID:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['yahoo']);
    
$table->construct_row();
    
    if(empty(
$user['skype']))
    {
        
$user['skype'] = $lang->unknown;
    }
    else
    {
        
$user['skype'] = htmlspecialchars_uni($user['skype']);

    }
    
$table->construct_cell("<strong>Skype-ID:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['skype']);
    
$table->construct_row();
    
    if(empty(
$user['google']))
    {
        
$user['google'] = $lang->unknown;
    }
    else
    {
        
$user['google'] = htmlspecialchars_uni($user['google']);

    }
    
$table->construct_cell("<strong>Google-Hangouts-ID:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['google']);
    
$table->construct_row();

    if(empty(
$user['lastip']))
    {
        
$user['lastip'] = $lang->unknown;
    }
    else
    {
        
$user['lastip'] = my_inet_ntop($db->unescape_binary($user['lastip']));
    }
    
    
$table->construct_cell("<strong>{$lang->last_known_ip}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['lastip']);
    
$table->construct_row();

    if(empty(
$user['regip']))
    {
        
$user['regip'] = $lang->unknown;
    }
    else
    {
        
$user['regip'] = my_inet_ntop($db->unescape_binary($user['regip']));

    }
    
$table->construct_cell("<strong>{$lang->registration_ip}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['regip']);
    
$table->construct_row();
    
    
$table->construct_cell("<strong>{$lang->thread_count}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['threadnum']);
    
$table->construct_row();
    
    
$table->construct_cell("<strong>{$lang->post_count}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['postnum']);
    
$table->construct_row();
    
    
$table->construct_cell("<strong>{$lang->primary_user_group}:</strong> ", array('width' =>'200'));
    
$table->construct_cell(htmlspecialchars_uni($user['usergrouptitle']));
    
$table->construct_row();
    
    
$table->construct_cell("<strong>{$lang->additional_groups}:</strong> ", array('width' =>'200'));
    
$table->construct_cell(htmlspecialchars_uni($additionalgroups));
    
$table->construct_row();
    
    require_once 
MYBB_ROOT."inc/class_parser.php";
    
$parser = new postParser;
        
    if(empty(
$user['signature']) && ($user['suspendsignature'] == || $user['suspendsigtime'] < TIME_NOW))
    {
        
$user['signature'] = $lang->unknown;
    }
    else
    {
        
$sig_parser = array(
            
"allow_html" => 0,
            
"allow_mycode" => 0,
            
"allow_smilies" => 0,
            
"allow_imgcode" => 0,
            
//"me_username" => $me_username,
            
"filter_badwords" => 1
        
);
        
$user['signature'] = $parser->parse_message($user['signature'], $sig_parser);
    }
    
$table->construct_cell("<strong>{$lang->signature}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['signature']);
    
$table->construct_row();
    
    if(
$user['timeonline'] > 0)
    {
        
$timeonline nice_time($user['timeonline']);
    }
    
$table->construct_cell("<strong>Gesamte Onlinezeit:</strong> ", array('width' =>'200'));
    
$table->construct_cell($timeonline);
    
$table->construct_row();
    
    if(empty(
$user['usertitle']))
    {
        
$user['usertitle'] = $lang->unknown;
    }
    else
    {
        
$user['usertitle'] = htmlspecialchars_decode($user['usertitle']);

    }
    
$table->construct_cell("<strong>{$lang->custom_user_title}:</strong> ", array('width' =>'200'));
    
$table->construct_cell($user['usertitle']);
    
$table->construct_row();
    
    if(
$user['away'] == 0)
    {
        
$user['away'] = $lang->im_here;
    }
    if(
$user['away'] == && $mybb->settings['allowaway'] != 0)
    {
        
$user['away'] = $lang->im_away."\r\n";
        
$awaydate my_date($mybb->settings['dateformat'], $user['awaydate']);
        if(!empty(
$user['awayreason']))
        {
            
$reason $parser->parse_badwords($user['awayreason']);
            
$awayreason htmlspecialchars_uni($reason);
            
$user['away'] .= $lang->away_reason " " .$awayreason."\r\n";
        }
        else
        {
            
$awayreason $lang->away_no_reason;
        }
        if(
$user['returndate'] == '')
        {
            
$returndate $lang->unknown;
        }
        else
        {
            
$returnhome explode("-"$user['returndate']);

            if(
$returnhome[2] >= 2038)
            {
                require_once 
MYBB_ROOT."inc/functions_time.php";
                
$returnmkdate adodb_mktime(000$returnhome[1], $returnhome[0], $returnhome[2]);
                
$returndate my_date($mybb->settings['dateformat'], $returnmkdate""1true);
                
$user['away'] .= $lang->return_date " " .$returndate;
            }
            else
            {
                
$returnmkdate mktime(000$returnhome[1], $returnhome[0], $returnhome[2]);
                
$returndate my_date($mybb->settings['dateformat'], $returnmkdate);
                
$user['away'] .= $lang->return_date " " .$returndate;
            }

            if(
$returnmkdate TIME_NOW)
            {
                
$db->update_query('users', array('away' => '0''awaydate' => '0''returndate' => '''awayreason' => ''), 'uid=\''.(int)$user['uid'].'\'');

                
$user['away'] = 0;
            }
        }
    }
    
$table->construct_cell("<strong>{$lang->away_information}:</strong> ", array('width' =>'200'));
    
$table->construct_cell(nl2br($user['away']));
    
$table->construct_row();
    
    
$filds = array(
        
"fid1: ".$user['fid1'],
        
"fid2: ".$user['fid2'],
        
"fid3: ".$user['fid3'],
        
"fid4: ".$user['fid4'],
        
"fid5: ".$user['fid5'],
        
"fid6: ".$user['fid6']
    );
    
$userfields implode("<br />\r\n"$filds);
    
$table->construct_cell("<strong>Profilfeld(er):</strong> ", array('width' =>'200'));
    
$table->construct_cell($userfields);
    
$table->construct_row();
    
    
$exportuser $user['username'].".txt";
    
$table->construct_cell("<strong>Diese Daten als txt downloaden:</strong><br />(Rechtsklick->Speichern unter)", array('width' =>'200'));
    
#$filename = $exportuser;
    
$user = array(
        
"Benutzername: ".$user['username']."\r\n",
        
"Geburtsdatum: ".$membday.$lang->membdayage."\r\n",
        
"Registrierungsdatum: ".$reg_date."\r\n",
        
"Letzte Aktivität: ".$last_active.", ".$last_active_time."\r\n",
        
"Gesamte Onlinezeit: ".$timeonline."\r\n",
        
"Webseite: ".$user['website']."\r\n",
        
"Email: ".$user['email']."\r\n",
        
"ICQ-ID: ".$user['icq']."\r\n",
        
"AIM-ID: ".$user['aim']."\r\n",
        
"Yahoo-ID: ".$user['yahoo']."\r\n",
        
"Skype-ID: ".$user['skype']."\r\n",
        
"Google-Hangouts-ID: ".$user['google']."\r\n",
        
"Registrierungs-IP: ".$user['regip']."\r\n",
        
"Letzte bekannte IP: ".$user['lastip']."\r\n",
        
"Themenanzahl: ".$user['threadnum']."\r\n",
        
"Beitragsanzahl: ".$user['postnum']."\r\n",
        
"Primäre Benutzergruppe: ".$user['usergrouptitle']."\r\n",
        
"Sekundäre Gruppen: ".$additionalgroups."\r\n",
        
"Signatur: ".$user['signature'] = str_replace("<br />"""$user['signature'])."\r\n",
        
"Eigener Benutzertitel: ".$user['usertitle']."\r\n",
        
"Abwesenheitsinformation: ".$user['away']."\r\n",
        
"Profilfeld(er): ".$userfields str_replace("<br />"""$userfields)
    );

    
$ordner "userdaten/".$exportuser;
    
$fp = @fopen($ordner"w+");
    foreach(
$user as $values)
    {
        
$suchumlaut = array("&Auml;","&auml;","    &Ouml;","&ouml;","&Uuml;","&Üuml;","&amp;","&szlig;","&aelig;");
        
$ersatzumlaut = array("Ä","ä","Ö","ö","Ü","ü","&","ß","æ");
        
$values str_replace($suchumlaut$ersatzumlaut$values);
        
fwrite($fp$values."\r\n");
    }
    
fclose($fp);
    
    
$table->construct_cell("<a href=\"userdaten/{$exportuser}\" title=\"\">Datei downloaden</a>");
    
$table->construct_row();

    
$table->output("Benutzer-Daten von ".$username);

    
$page->output_footer();
}
// user-export ende 


Mehr werde ich ab jetzt nicht einbauen, da dies, was jetzt schon abgefragt und geschrieben wird, viel zu viel an unnötigen unrelevanten Daten beinhaltet die nichts mit dem eigentlichen Benutzerdaten gemein hat.

Trotzdem viel Spass mit meinem Code.
(15.12.2017, 19:09)MrBrechreiz schrieb: [ -> ]... Mehr werde ich ab jetzt nicht einbauen, da dies, was jetzt schon abgefragt und geschrieben wird, viel zu viel an unnötigen unrelevanten Daten beinhaltet die nichts mit dem eigentlichen Benutzerdaten gemein hat.

Trotzdem viel Spass mit meinem Code.

Danke, jedenfalls/trotzdem... kanns erst später ausprobieren; Was fehlt müssten wir dann wohl manuell dazu kopieren... ABER "unnötige unrelevante" Daten sind das eben nicht, da sie ja vom User selbst eingegeben wurden bzw via die Forensoftware in die Datenbank auf unsere Server abgespeichert werden - es sind somit des Users Daten, die von uns lt Gesetz datenschutzrechtlich behandelt werden müssen - in einigen Monaten könnte ein User danach fragen und lt Gesetz müssen wir ihm das entsprechend übermitteln können...
Unter Benutzerbezogenen Daten verstehe ich: Name, Vorname, Adresse, Tel-Nr, Geb-Datum, Email-Adr., Du verstehst was ich meine. Unrelevante Dinge, auch die ein User nach seiner Registrierung eintragen kann, sind: Deine lieblingsfarbe, dein lieblings Haustier usw. All dies sind keine Benutzerbezogenen Daten, die laut den kommenenden Richtlinien, als solche zu handhaben sind. Einige Seiten verlangen Kontonummer, Kreditkartennummer usw., diese dürfen sowieso nicht leserlich abgespeichert werden und müssen mit Sternchen versehen werden, evtl. die letzten 3-4 Ziffern dürfen sichtlich sein.
Seiten: 1 2 3 4 5 6 7