Welcome, Guest. Please login or register.
Did you miss your activation email?
May 27, 2012, 12:06:22 AM

Login with username, password and session length
Search:     Advanced search
Interested in joining the WebsiteBaker team?
For more Information read here or on our new website.
155556 Posts in 21715 Topics by 7737 Members
Latest Member: gx-world
* Home Help Search Login Register
Pages: [1] 2 3   Go Down
Print
Author Topic: Benutzerübersicht  (Read 913 times)
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« on: February 11, 2012, 10:02:04 PM »

Hallo,

habe das Forum durchwühlt um ein Script, Snippet oder Modul zu finden, dass alle registrierten Benutzer auflistet.
Damit man auf einen Blick sehen kann welcher User in welcher Gruppe steckt.

Gefunden hab ich nicht was ich suchte, aber User-Extend kommt der Sache am Nächsten. Haken ist, dass man erst jeden User manuell hinzufügen muss, dafür erhält man aber eine prima Übersicht inkl. nützlicher Links.

Fast optimal dagegen ist Modul User Stat. Die Gruppen-ID pro User ist schnell angezeigt, wenn man den Länder-IP-Kram rauswirft, aber ich hatte es nicht geschafft die ID in den Gruppennamen zu verwandeln. Damit ist es zu unkomfortable.

Frage, hab ich eine User-Übersicht-Möglichkeit übersehen im Forum?

dbs
Logged

gottfried

Offline Offline

Posts: 981


« Reply #1 on: February 12, 2012, 06:58:43 PM »

Abend !

das ist doch nur ein 3 zeiler in einem Code2 abschnitt Huh?

z.B

Code:
echo "User -gruppen" ;

global $database;


$sql = 'SELECT u.user_id,u.username,u.group_id,g.name FROM '. TABLE_PREFIX .'users u, '. TABLE_PREFIX . 'groups g WHERE g.group_id = u.group_id ;' ;


$query = $database->query($sql);
                
            if ($query->numRows() == 0) {
               echo "nix" ;
               return $files ;  
            }
          
    $count = 0 ;            
    while ($bild = $query->fetchRow()) {
    $name = $bild['username'] ;  
    $gruppe= $bild['name'] ;  
    echo '<p>'. $name . ' - '. $gruppe. '<p>';
    }              



waren doch mehr als 3Zeilen. kann natürlich auf alle felder aus der relationuser - gruppe erweitert werden.


http://www.kunstverein-spectrum.de/x/pages/x.php


oder geht es umaktuellangemeldet e ?
« Last Edit: February 12, 2012, 07:38:20 PM by gottfried » Logged
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #2 on: February 12, 2012, 07:59:49 PM »

hey, danke.  wink
hatte es nicht hinbekommen gruppenname durch gruppen-id anzeigen zu lassen.
nun überlege ich mir ob ich das in das modul user stat reinfummle.
Logged

DarkViper
Development Team
*****
Offline Offline

Posts: 1254


« Reply #3 on: February 13, 2012, 01:14:08 AM »

vielleicht kannst damit ja etwas anfangen:
Der Codeschnipsel erzeugt eine nach Gruppen sortierte Userliste mit formatierter Ausgabe, die auch leere Gruppen ausgibt.
Ausgabebeispiel:
Gruppe A
  User 2
  User 4
Gruppe B
  --- leere Gruppe ---
Gruppe C
  User 1
  User 3


Code:
<?php

global 
$database;
$sql 'SELECT `u`.`username` `username`, `g`.`name` `groupname` '
     . 'FROM `'.TABLE_PREFIX.'groups` `g`, '
     .     'LEFT OUTER JOIN `'.TABLE_PREFIX.'users` `u` ON `u`.`group_id`=`g`.`group_id` '
     . 'ORDER BY `groupname`, `username`';
// Abfrage sortiert nach Gruppen und innerhalb der Gruppen nach Usernamen
if (($resUsers $database->query($sql))) {
$sUserListe $sLastUser '';
while ($aUser $resUsers->fetchRow()) {
if ($sLastUser != $aUser['groupname']) {
// beim ersten Auftreten eines Gruppennamens
$sUserList .= '<b>'.$aUser['groupname'].'</b><br />'."\n";
$sLastUser $aUser['groupname'];
}
if (is_null($aUser['username'])) {
// wenn die Gruppe keine User enthaelt
$sUserList .= '&nbsp;&nbsp;--- leere Gruppe ---<br />'."\n";
}else {
$sUserList .= '&nbsp;&nbsp;'.$aUser['username'].'<br />'."\n";
}
}
if ($sUserListe == '') { $sUserListe 'Kein Eintrag'; }
}else { $sUserListe 'Datenbankfehler: '.$database->get_error(); }
echo '<p>'.$sUserList.'</p>'."\n";

?>
Logged

Anleitungen lesen und selber nachdenken ist anstrengend...  Da lass ich doch lieber andere für mich denken...

In 1984:  Nineteen Eighty-Four is a unrealistic utopia!!
In 2012:  Nineteen Eighty-Four is a little piece only of our reality!!
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #4 on: February 13, 2012, 05:13:18 AM »

Danke, eine schöne Liste  wink
Ein paar e bei sUserList und ein Komma zu viel, ein s zu wenig bei u.groups_id.
So läufts:
Code:
<?php
global $database;
$sql 'SELECT `u`.`username` `username`, `g`.`name` `groupname` '
     . 'FROM `'.TABLE_PREFIX.'groups` `g` '
     . 'LEFT OUTER JOIN `'.TABLE_PREFIX.'users` `u` ON `u`.`groups_id`=`g`.`group_id` '
     . 'ORDER BY `groupname`, `username` ';

        
// Abfrage sortiert nach Gruppen und innerhalb der Gruppen nach Usernamen
if (($resUsers $database->query($sql))) {
$sUserList $sLastUser '';
while ($aUser $resUsers->fetchRow()) {
if ($sLastUser != $aUser['groupname']) {

// beim ersten Auftreten eines Gruppennamens
$sUserList .= '<b>'.$aUser['groupname'].'</b><br />'."\n";
$sLastUser $aUser['groupname'];
}
if (is_null($aUser['username'])) {

// wenn die Gruppe keine User enthaelt
$sUserList .= '&nbsp;&nbsp;--- leere Gruppe ---<br />'."\n";
}else {
$sUserList .= '&nbsp;&nbsp;'.$aUser['username'].'<br />'."\n";
}
}
if ($sUserList == '') { $sUserListe 'Kein Eintrag'; }
}else { $sUserList 'Datenbankfehler: '.$database->get_error(); }
echo '<p>'.$sUserList.'</p>'."\n";

Von einer in eine andere Gruppe verschobene Mitglieder landen nicht in der u.group_id, sondern u.groups_id.
Korrekt?



Für das Modul UserStat konnte ich die Anzeige Gruppenname einbauen.
Am Ende ist das zwar nett anzusehen und zu sortieren, aber mehr kann man nicht machen.

Ich sollte wohl erwähnen, dass es um Mitgliederbereiche geht für die man sich registrieren kann und dann erstmal in einer rechtlosen Gruppe landet. Der Admin erhält dazu eine Email und muss den User verschieben.
Der Übersichtlichkeit wegen wäre so eine Liste mit schnellem Erkennen der rechtlosen Gruppe und schnellem Ändern der Zugehörigkeit wünschenswert.

Bei Modul User-Extend gibt es Links zum Bearbeiten und so kann man einen User recht einfach von einer Gruppe in die andere weisen. Werde mal versuchen das Modul anzupassen.
Im Moment zeigt es keine Liste aller User, sondern jeder muss extra hinzugefügt werden. Die entstandene Liste kommt den Wünschen schon sehr nahe.
« Last Edit: February 13, 2012, 05:14:52 AM by dbs » Logged

ruebenwurzel
WebsiteBaker Org e.V.

Offline Offline

Posts: 7973



WWW
« Reply #5 on: February 13, 2012, 06:47:32 AM »

Hallo,

Quote
Von einer in eine andere Gruppe verschobene Mitglieder landen nicht in der u.group_id, sondern u.groups_id.
Korrekt?

Da sollten die Dev's nochmal drüber schauen. Das kann so nicht sein. Eine der beiden id's ist eigentlich nur noch aus Kompatibilitätsgründen drinne, die sollte eigentlich nicht mehr bedient werden. Wenn das beim verschieben der Gruppenmitglieder tatsächlcih gewechselt wird ist das ein bug, der gefixt werden sollte.

Matthias
Logged
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #6 on: February 13, 2012, 07:14:15 AM »

Sorry, die betreffende Seite läuft noch auf WB 2.8.1.
Deshalb zeigte mir das veraltete u.group_id die rechtlose Gruppe in der die User zuerst landen.
Nach dem Verschieben blieb die Anzeige der User gleich, also immer noch rechtlose Gruppe.

In der DB-Tabelle users sah es anders aus bzw. group_id und groups_id hatten unterschiedliche Werte.
Deshalb änderte ich die Abfrage zu u.groups_id und die Verschobenen wurden korrekt angezeigt.
« Last Edit: February 13, 2012, 07:20:25 AM by dbs » Logged

iradj

Offline Offline

Posts: 261



« Reply #7 on: February 13, 2012, 11:44:52 AM »

Ich versuche group_id vor dem groupname zusetzten und gelingt mir nicht.
Kann jemand mir helfen

Grüße Iradj
Logged
DarkViper
Development Team
*****
Offline Offline

Posts: 1254


« Reply #8 on: February 13, 2012, 12:29:15 PM »


grummel....  kommt davon, wenn man mitten bei der Nacht so'n Codeststückchen schnell blind eintippert, ohne erst noch in die Datenbank zu schauen.

@ruebenwurzel:  das Feld users.group_id ist seit gut einem Jahr auf deprecated. Wurde damals nur nicht sofort entfernt, weil irgendjemand sein Modul/Snippet/Droplet darauf aufgebaut hatte. Das Feld wird allerdings nur beim Add-User mit der DefaultGruppe gefülllt und danach (vom Core) nie wieder abgefragt und erst recht nicht geändert.

@dbs: in dem Teil haben sich mal wieder die typischen Nacht-Tipp-Fehler eingeschlichen. Ich hänge hier eine korrigierte Version an, die vor allem auch berücksichtigt, dass ein User in mehreren Gruppen Mitglied sein kann.

Code:
<?php

global 
$database;
$sql 'SELECT `u`.`username` `username`, `g`.`name` `groupname` '
     . 'FROM `'.TABLE_PREFIX.'groups` `g` '
     .   'LEFT OUTER JOIN `'.TABLE_PREFIX.'users` `u` ON ( FIND_IN_SET( `g`.`group_id` , `u`.`groups_id` ) ) '
/*      . 'WHERE (irgendeine Bedingung) ' *//* optionale Einschraenkungen */
     . 'ORDER BY `groupname`, `username` ';

        
// Abfrage sortiert nach Gruppen und innerhalb der Gruppen nach Usernamen
if (($resUsers $database->query($sql))) {
$sUserList $sLastUser '';
while ($aUser $resUsers->fetchRow()) {
if ($sLastUser != $aUser['groupname']) {

// beim ersten Auftreten eines Gruppennamens
$sUserList .= '<b>'.$aUser['groupname'].'</b><br />'."\n";
$sLastUser $aUser['groupname'];
}
if (is_null($aUser['username'])) {

// wenn die Gruppe keine User enthaelt
$sUserList .= '&nbsp;&nbsp;--- leere Gruppe ---<br />'."\n";
}else {
$sUserList .= '&nbsp;&nbsp;'.$aUser['username'].'<br />'."\n";
}
}
if ($sUserList == '') { $sUserListe 'Kein Eintrag'; }
}else { $sUserList 'Datenbankfehler: '.$database->get_error(); }
echo '<p>'.$sUserList.'</p>'."\n";

?>

@iradj: dazu brauchst 2 kleine Anpassungen

Code:
<?php

$sql 'SELECT `u`.`username` `username`, `g`.`name` `groupname`, `g`.`group_id` `group_id` '
...
...
// beim ersten Auftreten eines Gruppennamens
$sUserList .= '<b>['.$aUser['group_id'].'] '.$aUser['groupname'].'</b><br />'."\n";


?>

« Last Edit: February 13, 2012, 03:35:11 PM by DarkViper » Logged

Anleitungen lesen und selber nachdenken ist anstrengend...  Da lass ich doch lieber andere für mich denken...

In 1984:  Nineteen Eighty-Four is a unrealistic utopia!!
In 2012:  Nineteen Eighty-Four is a little piece only of our reality!!
iradj

Offline Offline

Posts: 261



« Reply #9 on: February 13, 2012, 12:45:21 PM »

Danke DarkViper

Iradj
Logged
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #10 on: February 13, 2012, 01:33:27 PM »

Quote
in dem Teil haben sich mal wieder die typischen Nacht-Tipp-Fehler eingeschlichen. Ich hänge hier eine korrigierte Version an, die vor allem auch berücksichtigt, dass ein User in mehreren Gruppen Mitglied sein kann.
Ich denke eher das ist clevere Absicht mit den Tippfehlern, denn so bringt man die Leute dazu auf Spurensuche zu gehen und was zu lernen.  grin

Was mehrere Gruppen angeht:
Ein User wird mit STRG+Linksklick  2 Gruppen zugeordnet. Die Markierung bleibt erhalten nach dem Speichern.
In der Code-Userlist wird er nur bei 1 Gruppe angezeigt.
Kann das sein?
Logged

Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #11 on: February 13, 2012, 03:09:06 PM »

Moin Frank,
mit User-Extend meintest Du dieses Modul?
http://www.websitebaker2.org/forum/index.php?topic=15162.0

Oder welches?

- Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #12 on: February 13, 2012, 03:14:44 PM »

Hi Stefek, ja das meinte ich.
Dieses Modul zeigt übrigens die User korrekt in mehreren Gruppen an.
Ich hatte noch nicht probiert/gefummelt die Mitglieder automatisch auflisten zu lassen da.
Logged

DarkViper
Development Team
*****
Offline Offline

Posts: 1254


« Reply #13 on: February 13, 2012, 03:24:59 PM »

@dbs:
anscheinend mag nicht jede DB-Version das 'IN' gleich.
Ändern auf 'FIND_IN_SET' sollte dann bei allen moderneren Datenbanken klappen.

einfach diese Zeile:
.   'LEFT OUTER JOIN `'.TABLE_PREFIX.'users` `u` ON (`g`.`group_id` IN(`u`.`groups_id`)) '

gegen diese Zeile austauschen.
.   'LEFT OUTER JOIN `'.TABLE_PREFIX.'users` `u` ON ( FIND_IN_SET( `g`.`group_id` , `u`.`groups_id` ) )

Das sollte das gewünschte Ergebnis zeigen.

Logged

Anleitungen lesen und selber nachdenken ist anstrengend...  Da lass ich doch lieber andere für mich denken...

In 1984:  Nineteen Eighty-Four is a unrealistic utopia!!
In 2012:  Nineteen Eighty-Four is a little piece only of our reality!!
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #14 on: February 13, 2012, 03:33:00 PM »

@Frank
Hi Stefek, ja das meinte ich.
Dieses Modul zeigt übrigens die User korrekt in mehreren Gruppen an.
Ich hatte noch nicht probiert/gefummelt die Mitglieder automatisch auflisten zu lassen da.
Also die Version, die ich mir davon runtergeladen habe (erster Post) ist ziemlich unvollständig.
Viele Fehlernotizen und Errors, wenn E_ALL im Backend eingestellt ist.
Hast Du eine neuere Version oder hast Du die Warnhinweise im BE (BackEnd) ausgeschaltet?

- Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #15 on: February 13, 2012, 03:37:50 PM »

@darkviper:
Yepp, das hat geholfen. Danke.  smiley

Mal so hinterhergefragt, jedem User einen passenden Link zu admin/users/users.php zu verpassen (um seine Gruppe zu ändern), wäre einfach zu machen oder aufwändiger?

@stefek:
Das ist ein altes Modul mit vielen Meldungen, ja.
Aber ich hab Spaß dran die Meldungen zu eliminieren.
meldung > google > php.net > testen > probieren > testen ....
Logged

Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #16 on: February 13, 2012, 03:48:43 PM »

@stefek:
Das ist ein altes Modul mit vielen Meldungen, ja.

Was würdest Du in dieses denn gerne eingebaut haben?
Habe mir das grade angeschaut und die Meldungen soweit in den Griff bekommen.

Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #17 on: February 13, 2012, 03:54:13 PM »

Mir wäre am liebsten, wenn jeder User automatisch in der Liste erscheint.
Im Moment muss man jeden User extra mit "Neu" hinzufügen.

Das schöne an der Liste ist, dass man sortieren kann und eine schnelle Übersicht hat wer in welcher Gruppe ist.
Ein Klick auf Edit eines Users zeigt dann unten einen Link "Benutzer" der zu den Benutzereinstellung en führt, wo man ihn einer anderen Gruppe zuweisen kann.
Logged

Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #18 on: February 13, 2012, 04:26:42 PM »

Das schöne an der Liste ist, dass man sortieren kann und eine schnelle Übersicht hat wer in welcher Gruppe ist.
Ein Klick auf Edit eines Users zeigt dann unten einen Link "Benutzer" der zu den Benutzereinstellung en führt, wo man ihn einer anderen Gruppe zuweisen kann.
Ja, das ist eine interessante Sache.

Mir wäre am liebsten, wenn jeder User automatisch in der Liste erscheint.
Im Moment muss man jeden User extra mit "Neu" hinzufügen.
Mit diesem Modul wird das nicht wirklich gehen, weil es seine eigene Aufzeichnung in der DB führt (und deswegen muss man die "Neuen" übertragen).
Obwohl...
ich schau mal.

Gruß,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #19 on: February 13, 2012, 05:37:46 PM »

Frank,
man kann das schon so machen, dass immer ALLE user angezeigt werden.
Aber dann macht die "löschen" Funktion keinen Sinn mehr.
Ich frage mich sowieso, warum das Modul von Anfang an so programmiert wurde, dass man die User erst in den Extend übernehmen soll.

Also mein Vorschalg:
Die "Löschen" Funktion wird ersetzt in "Aufnehmen in das ExtendUser Verzeichnis" (solange man auf das Icon nicht klickt, ist das Ding zwar angezeigt, aber man kann keine Ergänzungen zum Record/Aufzeichnnung in der UserExtend DB-Tabelle machen).
Diese noch nicht im UserExtend übernomennen Records werden einen anderen Hintergrund haben.
Ein erneuter Klick nimmt den Record wieder raus und die Farbe wird wieder auf "unrecorded" gesetzt.
Also css Klassen "recorded/unrecorded" können dann per CSS gesetzt werden.

Quote
Ein Klick auf Edit eines Users zeigt dann unten einen Link "Benutzer" der zu den Benutzereinstellung en führt, wo man ihn einer anderen Gruppe zuweisen kann.
Das können wir gleich in die Liste aufnehmen. Ein Klick von hier, bringt den Admin in die User Verwaltung.

Allerdings gibt es hier das Problem, dass sobald man die Aufzeichnung deaktiviert, werden auch sämtliche vorher eingegebenen Daten gelöscht - sie kommen nicht wieder, wenn man wieder drauf klickt!

So, was sagst?

- Stefek





Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #20 on: February 13, 2012, 06:13:23 PM »

Das klingt gut Stefek.
Eigentlich reicht ja edit und active/inactive.
Dazu dein Vorschlag mit Link zu User-Verwaltung.
Oder noch einen Schritt weiter: Gruppe auswählen.

Das wäre doch eine prima Übersicht mit Handlungsmöglichkeit.

Was möchtest du mit record machen?
« Last Edit: February 13, 2012, 06:15:08 PM by dbs » Logged

Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #21 on: February 13, 2012, 06:23:10 PM »

Das klingt gut Stefek.
Eigentlich reicht ja edit und active/inactive.
Dazu dein Vorschlag mit Link zu User-Verwaltung.
Oder noch einen Schritt weiter: Gruppe auswählen.
Die Gruppe ist dann unter "User-Verwaltung" einstellbar, wenn man über den Link hinkommt.
Ich will hier das Rad nicht neu erfinden, vor allem, da sich mit 2.9.x hier wahrscheinlich einiges ändert.
Zudem kann man einen User mehreren Gruppen hinzufügen, das kann ich von der Liste aus nicht unbedingt übersichtlich machen. Daher besser über den Umweg der User-Verwlt.

Was möchtest du mit record machen?
Mit Record meine ich einen Eintrag in einer Datenbank-Tabelle (in diesem Falle die DB-Tabelle `{TABLE_PREFIX}user_extend`).
Siehe oben nochmal.
Es ist halt so, dass das Modul jetzt alle Records aus der Tabelle `users` anzeigen wird. Wenn einer der user auch als Record in der `user_extend` Tabelle existiert, werden die dort hinterlegten Daten ausgegeben.
(weiteres siehe oben.)

- Stefek

Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #22 on: February 13, 2012, 06:26:51 PM »

Quote
Daher besser über den Umweg der User-Verwlt.
Ja ist gut so, hatte mehrere Gruppen pro User schon wieder vergessen.  smiley
Logged

Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #23 on: February 14, 2012, 05:03:38 PM »

Hallo Frank,

das Modul muss sehr überarbeitet werden.
Mamma mia. Das verwendet separate Seiten, anstatt die tool.php als include zu verwenden.

Ich will dieses Modul auf Vordermann bringen - was sagst Du dazu, wir machen das zu einem 2.8.3 Modul?
Es würde mit <2.8.3 nicht mehr arbeiten, es sei denn, jemand macht ein Upgrade auf 2.8.3 (oder ein kleines Patch).

Wollen wir das machen?

Das Modul muss aber auf jeden Fall sicher gemacht werden, wenn man damit arbeiten will.

Die Funktionen, die Du beschrieben hast, sind aber schon eingebaut.
Gruß,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
dbs
WebsiteBaker Org e.V.

Offline Offline

Posts: 3719


WWW
« Reply #24 on: February 14, 2012, 05:20:02 PM »

Hallo Stefek,

das können WIR gerne machen, aber ICH kann nicht viel beitragen, außer zu testen.  grin
Sicherheit muss natürlich rein.

Du meinst also es wäre ein interessantes Modul für die Allgemeinheit?
Wie gehts weiter?
GitHub?

Gruß
Frank

Logged

Pages: [1] 2 3   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!