Seite 1 von 1

inaktiver Benutzer einer Gruppe deaktivieren

Verfasst: 20.06.2012 17:53
von guellepumper
Hallo

unter "Benutzer und Gruppen" gibt es "Automatisches löschen inaktiver Benutzer".

Die Funktion würde so weit ganz gut passen und funktionieren, aber ich möchte dies gerne auf eine Gruppe beschränken.
Gäste und Freunde z.B. sollten davon unbehelligt bleiben, nur in der Gruppe der Mitglieder sollte die Funktion nach inaktiven suchen.
jemand ne Idee wie ich das umsetzen kann?


phpbb 3.0.10
Rainbow Pearl Style http://www.phpbb.com/customise/db/style/rainbow_pearl/

Gruß Matze

Re: inaktiver Benutzer einer Gruppe deaktivieren

Verfasst: 20.06.2012 19:02
von Miriam
Idee:
  • Du erstellst ein Gruppe namens Freunde.
  • Du packst alle Deine nichtzulöschenden Mitglieder in diese Gruppe (die Du evtl. als versteckte Gruppe erstellen solltest).
  • Du machst diese Codeänderungen und testest alles. Die zu Löschenden werden VORHER angezeigt und Du mußt dann nur abbrechen. Deine (nunmehr) Freunde sollten nicht angezeigt werden.
  • Codeänderungen:
    finde in der includes/acp/acp_prune.php
    • Code: Alles auswählen

              $bot_ids = array();
              while ($row = $db->sql_fetchrow($result))
              {
                  $bot_ids[] = $row['user_id'];
              }
              $db->sql_freeresult($result); 
    danach füge ein:
    • Code: Alles auswählen

              // Find friends using friends' group_id 
              $sql = 'SELECT user_id
                  FROM ' . USER_GROUP_TABLE  . ' 
                  WHERE group_id = (SELECT group_id FROM ' . GROUPS_TABLE . " WHERE group_name = 'Freunde')";
              $result = $db->sql_query($sql);
      
              $friend_ids = array();
              while ($row = $db->sql_fetchrow($result))
              {
                  $friend_ids[] = $row['user_id'];
              }
              $db->sql_freeresult($result); 
    finde
    • Code: Alles auswählen

                  // Do not prune bots and the user currently pruning.
                  if ($row['user_id'] != $user->data['user_id'] && !in_array($row['user_id'], $bot_ids)) 
    tausche aus gegen:
    • Code: Alles auswählen

                  // Do not prune bots and the user currently pruning and no friends as well.
                  if ($row['user_id'] != $user->data['user_id'] && !in_array($row['user_id'], $bot_ids) && !in_array($row['user_id'], $friend_ids)) 
Abspeichern, testen, fertig.

Re: inaktiver Benutzer einer Gruppe deaktivieren

Verfasst: 20.06.2012 23:48
von guellepumper
super vielen dank für die schnelle Antwort ... zum testen komme ich erst morgen ....

aber gleich noch ne Frage dazu .... ich soll ja die Gruppen quasi vom Suchen ausschließen ..... wie schaut der Code aus, wenn ich 5 verschieden Gruppen von der Suche ausschließen möchte ? (habe 6 Gruppen möchte aber nur in einer suchen.)

Die Gruppen die ich vom suchen ausschließen möchte heißen: mit der Zahl und der Klammer ;-)

1)Leader
2)Offiziere
4)Clan Friends
Gäste mit CF Status
ingo


geht es dann trotzdem? und kannst du mir das in den Code gleich einbauen? ..... ich selber kann das glaube nicht ....
oder müsste ich den ganze Code für jede Gruppe komplett erstellen?

danke schon mal fürs helfen
Gruß Matze

Re: inaktiver Benutzer einer Gruppe deaktivieren

Verfasst: 21.06.2012 21:24
von Miriam
Find in den vorgeschlagenen Codeänderungen:
  • Code: Alles auswählen

            // Find friends using friends' group_id 
            $sql = 'SELECT user_id
                FROM ' . USER_GROUP_TABLE  . ' 
                WHERE group_id = (SELECT group_id FROM ' . GROUPS_TABLE . " WHERE group_name = 'Freunde')";
            $result = $db->sql_query($sql);
    
            $friend_ids = array();
            while ($row = $db->sql_fetchrow($result))
            {
                $friend_ids[] = $row['user_id'];
            }
            $db->sql_freeresult($result);  
tausche aus gegen:
  • Code: Alles auswählen

            // Find friends using friends' group_id 
            $sql = 'SELECT user_id
                FROM ' . USER_GROUP_TABLE  . ' 
                WHERE group_id IN (SELECT group_id FROM ' . GROUPS_TABLE . " WHERE group_name IN ('Leader', 'Offiziere', 'Clan Friends'))";
            $result = $db->sql_query($sql);
    
            $friend_ids = array();
            while ($row = $db->sql_fetchrow($result))
            {
                $friend_ids[] = $row['user_id'];
            }
            $db->sql_freeresult($result);  

Re: inaktiver Benutzer einer Gruppe deaktivieren

Verfasst: 21.06.2012 21:56
von Malte
Hallo,

ich werde mich auch mal zu Wort melden:
In der MOD-Datenbank von phpBB.com gibt es diesen MOD:
http://www.phpbb.com/customise/db/mod/a ... _block_mod

Selbiger hat so viele verschiedene Funktionen, aber eine kann entscheidend sein:
Und zwar kann man mit selbiger Funktion im ACP im Benutzermenü ein Häkchen setzen bei "Benutzer von der automatischen Benutzerbereinigung ausschließen". Wenn man das macht, wird der Nutzer, wie man sich dann sicherlich denken kann, bei der automatischen Bereinigung nicht gelöscht. Dann macht man dad ganze eben nicht bei einer Gruppe, sondern markiert die Nutzer einzeln. Je nachdem, ob es wenige oder viele Nutzer sind, würde ich eben das eine oder andere empfehlen. Bei ganz vielen Nutzern, wäre das Benutzer ausschließen im ACP mühselig und falls es nur eine Hand voll ist, würde ich eine extra Gruppe dafür, für unsinnig halten.

Du kannst ja mal sehen, was du machen kann, ich persönlich warne dich jedoch auch davor, dass dieser Mod sehr umfangreich, sowohl an Funktionen, als auch an Installationsschritten ist, also würde ich dir, wenn du dein Board nicht all zu sehr verändern möchtest oder mit der Materie Modeinbau noch nicht ganz so vertraut, eher von dem MOD anraten und Mariams Variante ans Herz legen.

Viel Glück

Gruß
Malte :D

Re: inaktiver Benutzer einer Gruppe deaktivieren

Verfasst: 22.06.2012 06:13
von guellepumper
vielen danke euch beiden ... :-)

werde das von Miriam heute abend mal versuchen .....

Gruß Matze

Re: inaktiver Benutzer einer Gruppe deaktivieren

Verfasst: 22.06.2012 15:12
von guellepumper
habe es noch ein klein wenig den Namen anpassen müssen .... z.B. noch die 1) vor die Gruppen .....
habe auch noch Gäste Gruppe hinzugefügt ... funktionierte allerdings nur mit Gaeste.

Aber sonst funktioniert alles so weit und ist eine große Hilfe

Danke nochmal

Gruß Matze

Re: inaktiver Benutzer einer Gruppe deaktivieren

Verfasst: 22.06.2012 16:18
von Miriam
Gern.

Der Gast als solches wird nicht gelöscht. Komme was wolle.