Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
mikmae

Mitglieder & Gruppen

Recommended Posts

hallo erstmal, ich bin ganz neu hier und habe da gleich mal zwei fragen :blush:

also ich möchte User einer bestimmten Gruppe, mit einer bestimmten Anzahl von Posts, zu einer anderen Gruppe "aufsteigen" lassen.

Wenn ich jetzt aber in der Gruppenverwaltung, diese Gruppe editiere und unten bei Gruppenbeförderung

die gewünschte Postzahl und die Gruppe zu der befördert werden soll eintrage,

bleiben die Member in der alten Gruppe.

Ich möchte das also nicht nur für die Zukunft so haben sondern das die

aktuellen Member, die diese Anzahl an Posts erreicht haben sofort "befördert" werden.

Anderseits möchte ich aus einer höheren Gruppe die Leute "degradieren" die sich

seit mehr als drei Monaten nicht mehr eingeloggt haben...

Wie mache ich das?

Ich danke euch schon mal im voraus B)

cu mikmae

Share this post


Link to post

Danke Rigo, ich habe das jetzt auch per Hand gemacht .. naja bei mehreren hundert Membern ist das

schon nicht mehr lustig .. hehe ;)

Gibt es dafür irgendein Hack oder könnte man das per phpMyAdmin machen?

Sollte Dir oder jemand anderes was dazu einfallen, gebt mir doch bitte Bescheid :)

cu mikmae

Share this post


Link to post

Praktisch brauch man doch nur ein SQL Befehl welcher schaut ob die Posts z.b. über Hundert sind und dann die GroupID geändert wird.

Kenn leider nicht den genauen Syntax, sonst würd ich dir das schreiben.

Aber Stefan ist da genau der Mann dafür :P

Edited by derKosta

Share this post


Link to post
Guest BitByter

also ich möchte User einer bestimmten Gruppe, mit einer bestimmten Anzahl von Posts, zu einer anderen Gruppe "aufsteigen" lassen........

Soweit ich weis, funzzt das nicht über das ACP.Dort kann mann nur die Gruppe komplett aufsteigen lassen,aber nicht einzelne User innerhalb der Gruppe.

Man kann aber anhand der Postingzahl festlegen,wann und ob jemand in einer bestimmte Gruppe aufsteigen soll bzw kann.

Share this post


Link to post

Aber Stefan ist da genau der Mann dafür

Hey der Stefan der mir schon so manches Mal aus der Patsche im ibforen geholfen hat?

Ich hoffe es ... B)

Man kann aber anhand der Postingzahl festlegen,wann und ob jemand in einer bestimmte Gruppe aufsteigen soll bzw kann.

Ja das ist schon klar, ich suchte was um es nachträglich machen zu können. ;)

Achso trotzdem möchte ich mich bei Euch für Eure Hilfe bedanken :)

Edited by mikmae

Share this post


Link to post

hallo erstmal, ich bin ganz neu hier und habe da gleich mal zwei fragen

also ich möchte User einer bestimmten Gruppe, mit einer bestimmten Anzahl von Posts, zu einer anderen Gruppe "aufsteigen" lassen.

Wenn ich jetzt aber in der Gruppenverwaltung, diese Gruppe editiere und unten bei Gruppenbeförderung

die gewünschte Postzahl und die Gruppe zu der befördert werden soll eintrage,

bleiben die Member in der alten Gruppe.

Ich möchte das also nicht nur für die Zukunft so haben sondern das die

aktuellen Member, die diese Anzahl an Posts erreicht haben sofort "befördert" werden.

Anderseits möchte ich aus einer höheren Gruppe die Leute "degradieren" die sich

seit mehr als drei Monaten nicht mehr eingeloggt haben...

Wie mache ich das?

Ich danke euch schon mal im voraus

cu mikmae

Ich bin mir nicht sicher, ob ich dich richtig verstanden hab, aber ich glaub du willst es über externe Schnittstellen machen ...

Was hälst du von cronjobs ? cronjobs und einem Script ?

Okay, Schritt für Schritt, let's go:

Erstmal erstellst du mir eine Datei mit dem namen script.php (oder so), da kommt dann mit dem Editor folgendes rein:

<?php

Start des PHP-Scriptes

// Diese Daten bitte ausfüllen !

$databasehost = "localhost";

$databaseuser = "username";

$userpass = "password";

$databasename = "datenbank";

$noetigeposts = X;

$altegruppe = Y;

$neuegruppe = V;

// Ende des Änderungsbereiches !

Datenbankdaten in Variablen ablegen, logischerweise musst du das auf deine Bedürfnisse anpassen, wie eben deine passwörter sind !

Die unteren drei Variablen musst du logischerweise auch anpassen, glaub mal die sind selbsterklärend !

$dreimonate = time() - 7776000;

Da setz ich die drei monate ein, übrigens als sekundenwert, ich hab pro Monat einfach mal 30 Tage gesetzt !

$DB = @mysql_connect($databasehost,$databaseuser,$userpass) or die("Datenbank-Server: Anmeldung abgewiesen.");

Verbinden mit MySQL-Server

$anfrage = MYSQL_QUERY( "SELECT * FROM ".$databasename.".ibf_members WHERE posts >= '".$noetigeposts."' AND mgroup = '".$altegruppe."';");

$befehleins = mysql_numrows($anfrage);

MYSQL_QUERY( "UPDATE ".$databasename.".ibf_members SET mgroup = '".$neuegruppe."' WHERE posts >= '".$noetigeposts."' AND mgroup = '".$altegruppe."';");

Ausführen des Befehls, das alle Leute die mehr als $noetigeposts Posts haben, und in der Gruppe $altegruppe sind, in die Gruppe $neuegruppe kommen :)

(Gleichzeitig speichern wieviele Datensätze betroffen waren !)

$anfrage = MYSQL_QUERY( "SELECT * FROM ".$databasename.".ibf_members WHERE  last_activity < '".$dreimonate."' AND mgroup = '".$neuegruppe."';");

$befehlzwei = mysql_numrows($anfrage);

MYSQL_QUERY( "UPDATE ".$databasename.".ibf_members SET mgroup = '".$altegruppe."' WHERE  last_activity < '".$dreimonate."' AND mgroup = '".$neuegruppe."';");

Ausführen des Befehls, das alle Leute die mehr als $dreimonate nichts mehr gemacht haben, und in der Gruppe $neuegruppe sind, in die Gruppe $altegruppe kommen.

(Gleichzeitig speichern wieviele Datensätze betroffen waren !)

  echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">";

  echo "<html>";

  echo "<head>";

  echo "</head>";

  echo "<body>";

  echo "Es wurden ".$befehleins." Member hochgestuft, ".$befehlzwei." Member wurden degradiert !";

  echo  "</body>";

  echo  "</html>";

Ausgeben des Textes

mysql_close($DB);

Beenden der Datenbankverbindung

?>

Ende der PHP-Datei !

Das ganze lädst du nun hoch, und lässt es per Cronjob jede Nacht oder so durchführen !

Ganz einfach :)

Hoffe ich war eine würdige Stefan-Urlaubsvertretung !

Script wurde geprüft, und für tauglich befunden !

Hier noch mal der komplette Code:

<?php

// Diese Daten bitte ausfüllen !

$databasehost = "localhost";

$databaseuser = "username";

$userpass = "password";

$databasename = "datenbank";

$noetigeposts = X;

$altegruppe = Y;

$neuegruppe = V;

// Ende des Änderungsbereiches !

$dreimonate = time() - 7776000;

$DB = @mysql_connect($databasehost,$databaseuser,$userpass) or die("Datenbank-Server: Anmeldung abgewiesen.");

$anfrage = MYSQL_QUERY( "SELECT * FROM ".$databasename.".ibf_members WHERE posts >= '".$noetigeposts."' AND mgroup = '".$altegruppe."';");

$befehleins = mysql_numrows($anfrage);

MYSQL_QUERY( "UPDATE ".$databasename.".ibf_members SET mgroup = '".$neuegruppe."' WHERE posts >= '".$noetigeposts."' AND mgroup = '".$altegruppe."';");

$anfrage = MYSQL_QUERY( "SELECT * FROM ".$databasename.".ibf_members WHERE  last_activity < '".$dreimonate."' AND mgroup = '".$neuegruppe."';");

$befehlzwei = mysql_numrows($anfrage);

MYSQL_QUERY( "UPDATE ".$databasename.".ibf_members SET mgroup = '".$altegruppe."' WHERE  last_activity < '".$dreimonate."' AND mgroup = '".$neuegruppe."';");

  echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">";

  echo "<html>";

  echo "<head>";

  echo "</head>";

  echo "<body>";

  echo "Es wurden ".$befehleins." Member hochgestuft, ".$befehlzwei." Member wurden degradiert !";

  echo  "</body>";

  echo  "</html>";

 

mysql_close($DB);

?>

Edited by Blackman

Share this post


Link to post

@ Blackman,

oh ich bin ja überwältigt ... wahnsinn :thumb_up:

ich werde mir dieses script mal in ruhe zu gemüte ziehen und bei meiner nächsten aktion testen...

hatte es jetzt ja erstmal per hand gemacht aber das ist wirklich keine lösung bei mehreren hundert zu bearbeitenden membern ;)

ist das ein service hier ... aller erste sahne ... D A N K E

Share this post


Link to post

Ich hab den Beitrag schon ein wenig länger in der Beobachtung gehabt, hab mich nur noch nicht gleich so recht überredet ein schönes Script zu schreiben...

Wie du das Script starten musst, ist klar, es muss "eigentlich" nicht in einem geschützen Ordner sein, denn es ist ja egal wenns jemand anders startet.

Da es keine Übergabeparameter hat, ist es auch kein Sicherheitsrisiko, SOLANG der Apache den PHP-Interpreter IMMER startet (sollte da was schief laufen, kriegt man deine Datenbankdaten natürlich auch über die conf_global.php) - falls du willst, könnte ich es sicherlich auch so umschreiben das es die Datenbankdaten nimmt, die in der conf_global.php sind, aber das ist wohl eher umständlicher, da ich dann den Pfad zu deiner conf_global noch definieren muss.

Solltest du noch Fragen haben, zum Programmcode, einzelnen Passagen, dem Einbau, den Cronjobs (oder vielleicht warum die Zeit in Sekunden angeben wird, diese Frage beantworte ich in letzter Zeit besonders gern :)), tu dir keinen Zwang an !

ist das ein service hier ... aller erste sahne ...

Danke zurück für das Lob !

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×