Thread Author: emblinux
Thread ID: 2289
Thread Info
Es gibt 14 Beiträge zu diesem Thema, und es wurde 5647 mal angesehen.
Wer ist hier? 1 Gäste
 Thema drucken
User aus Gruppe entfernen - Schnellzugriff
emblinux
In PHP-Fusion ist es als Administrator möglich, User per Schnellzugriff in eine Gruppe zu packen. Dazu braucht man lediglich auf das entsprechende Profil des Users gehen und unten erscheinen die Möglichkeiten diesen User zu bearbeiten, bannen, löschen oder einer Gruppe hinzuzufügen. Wie gesagt nur als Administrator mit dem entsprechendem Recht.

Aber wie entferne ich diesen User mal schnell wieder. Dazu muss man in den Adminbereich zu der Gruppenverwaltung, die Gruppe auswählen und dann auf löschen klicken. Nun habe ich mir gedacht, das geht doch auch schneller, so wie es ja auch mit dem hinzufügen geht, kann man das doch auch mit dem entfernen machen. Deshalb habe ich dazu einen Mod geschrieben, den ich euch hier auch nicht vorenthalten und vorstellen möchte.

Dazu sind nur geringfügige Änderungen notwendig.
* anzupassende Dateien:
- profile.php
- view_profile.php aus dem entsprechenden Sprach-Ordner ( z.B. locale/German)

Als 1. öffnet man die Datei profile.php und sucht dort folgenden Code:

Code 


    if (iADMIN && checkrights("UG") && $user_data['user_id'] != $userdata['user_id'])
      {
        if ((isset($_POST['add_to_group'])) && (isset($_POST['user_group']) && isnum($_POST['user_group'])))
          {
            if (!preg_match("(^\.{$_POST['group_id']}$|\.{$_POST['group_id']}\.|\.{$_POST['group_id']}$)", $user_data['user_groups']))
              {
                $result = dbquery("UPDATE ".DB_USERS." SET user_groups='".$user_data['user_groups'].".".$_POST['user_group']."' WHERE user_id='".$user_data['user_id']."'");
              }
            redirect(FUSION_SELF."?lookup=".$user_data['user_id']);
          }
      }



und ersetze diesen durch den nun folgenden Code:

Code 


    if (iADMIN && checkrights("UG") && $user_data['user_id'] != $userdata['user_id'])
      {
        if ((isset($_POST['add_to_group'])) && (isset($_POST['user_group']) && isnum($_POST['user_group'])))
          {
            if (!preg_match("(^\.{$_POST['group_id']}$|\.{$_POST['group_id']}\.|\.{$_POST['group_id']}$)", $user_data['user_groups']))
              {
                $result = dbquery("UPDATE ".DB_USERS." SET user_groups='".$user_data['user_groups'].".".$_POST['user_group']."' WHERE user_id='".$user_data['user_id']."'");
              }
            redirect(FUSION_SELF."?lookup=".$user_data['user_id']);
          }

        if ( ( isset($_GET['remove_group']) && isNum($_GET['remove_group']) && $_GET['remove_group'] == 1 )
          && ( isset($_GET['user_group']) && isnum($_GET['user_group']) ) && $user_data['user_level'] < $userdata['user_level'] )
          {
            if ( preg_match("(^\.{$_GET['user_group']}$|\.{$_GET['user_group']}\.|\.{$_GET['user_group']}$)", $user_data['user_groups']) )
              {
                $user_groups = preg_replace(array("(^\.{$_GET['user_group']}$)","(\.{$_GET['user_group']}\.)","(\.{$_GET['user_group']}$)"), array("",".",""), $user_data['user_groups']);
                $result = dbquery("UPDATE ".DB_USERS." SET user_groups='".$user_groups."' WHERE user_id='".$user_data['user_id']."'");
              }
            redirect(FUSION_SELF."?lookup=".$user_data['user_id']);
          }
      }



Es wurde die Verarbeitung zum entfernen der Gruppe hinzugefügt. Nun fehlt uns noch der Link, der uns dahinleitet. Dazu sucht man in der profile.php weiter nach folgendem Code:

Code 

for ($i = 0; $i < count($user_groups); $i++) {
echo "<div style='float:left'><a href='".FUSION_SELF."?group_id=".$user_groups[$i]."'>".getgroupname($user_groups[$i])."</a></div><div style='float:right'>".getgroupname($user_groups[$i], true)."</div><div style='float:none;clear:both'></div>\n";
}



und ersetzt diesen durch folgenden:

Code 


            for ($i = 0; $i < count($user_groups); $i++)
               {
                 echo "<div style='float:left'><a href='".FUSION_SELF."?group_id=".$user_groups[$i]."'>".getgroupname($user_groups[$i])."</a></div>";
                 echo "<div style='float:right'>".getgroupname($user_groups[$i], true)."</div>";
                 if (iADMIN && checkrights("M") && $user_data['user_id'] != $userdata['user_id'] && $user_data['user_level'] < $userdata['user_level'] )
                   {
                     echo "<br /><div style='float:right'><a href='".FUSION_SELF."?lookup=".$user_data['user_id']."&amp;user_group=".$user_groups[$i]."&amp;remove_group=1'>".$locale['418']."</a></div>";
                   }
                 echo "<div style='float:none;clear:both'></div>\n";
               }



Hier wurde nun der Link hinzugefügt, der uns dann zur Verarbeitung der Gruppenentfernung leitet. Damit der Link auch richtig angezeigt wird, fehlt uns lediglich noch der entsprechnde Text in der view_profile.php. Dazu öffnet man die Datei locale/German/view_profile.php und sucht nach:

Code 

// View User Groups



und fügt davor folgende Zeile ein:

Code 

$locale['418'] = "Aus Gruppe entfernen";



Den Text kann man natürlich auch noch ändern, so wie es jeder möchte.

Bitte macht von beiden Dateien ein Backup, damit man diese bei Problemen einfach wieder aufspielen kann. Das sollte es dann auch schon gewesen sein. Ich hoffe ihr könnt diesen Mod gebrauchen. Auf meiner Seite habe ich es im Einsatz, das es mir ein schnelleres Arbeiten ermöglicht. Für Feedback und konstruktive Kritik bin ich natürlich offen.


EDIT: Bugfix.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
SC-Ad-Bot
 
please_delete_me
Sehr gute Idee, funktioniert prima.
bitte löschen
 
emblinux
Danke. Leider musste ich gerade noch einen Bugfix vornehmen. Mit der nun oben aktualisierten Version ist es normalen Admins nicht mehr möglich andere Admins bzw. Superadmins aus diversen Gruppen zu entfernen. Soll also heißen, dass ein Admin oder SuperAdmin nur User/Admins mit kleinerem User-Level aus einer Gruppe entfernen darf.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
DJ-Papst
HIHI

Genau die Idee hat ich vor ein paar Tagen auch, weil´s die Arbeit erleichert und es schneller geht.

http://www.phpfusion-support.de/forum...d_id=24144

Erspart mir jetzt die Arbeit.

Aber geile sache emblinux. Dankeeeeeeeeeeeeee
 
Bumblebee
Hi, emblinux

Eine sehr gute idee die modifikation. Danke funktioniert auch prima.

klatsch
Gruß
Bumblebee
 
DJ-Papst
Zitat emblinux schrieb:
Danke. Leider musste ich gerade noch einen Bugfix vornehmen. Mit der nun oben aktualisierten Version ist es normalen Admins nicht mehr möglich andere Admins bzw. Superadmins aus diversen Gruppen zu entfernen. Soll also heißen, dass ein Admin oder SuperAdmin nur User/Admins mit kleinerem User-Level aus einer Gruppe entfernen darf.


Sorry das ich diesen mehr als 1 Jahr alten beitrag hochhole. schweige

Aber mal anmerken muss das der Mod auch einwandfrei mit der 7.02.01 funzt.

Jetzt zum eigentlichen Problem. Ich hab mich dumm und dämlich Probiert mal mit den fehlern mal Funtioniert es aber dann nur einseitig.

emblinux könntest du mir den Fix wieder Rückgängig machen so das auch Super Admins andere Admin´s aus Gruppen entfernen können bzw Hinzufügen weil über die Benutzer Gruppen Option ist das immer sehr umständlich.

Danke Gruß

Papst
 
emblinux
Das könnt ihr doch auch alleine oder...?

es geht letztendlich nur um folgende Stellen:

Code 

$user_data['user_level'] < $userdata['user_level']



Diese muss man anpassen.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
DJ-Papst
Danke für den Denkanstoss

Ich hab zwar schon richtig gedacht mit Größer & Kleiner nur an der Falschen stelle geändert da war nen Denkfehler in meinem Kopf. schweigeDAU
 
please_delete_me
Ich weiss nicht genau seit welcher Version (muss 7.01.06 oder früher sein), aber die $locale['418'] in der view_profile.php ist belegt.

Code 

<?php
// Member Profile
$locale['400'] = "Profil des Mitglieds";
$locale['401'] = "User Gruppe";
$locale['402'] = "Administrator Optionen";
// Administrator Options
$locale['410'] = "Bearbeiten";
$locale['411'] = "Sperren";
$locale['412'] = "L&ouml;schen";
$locale['413'] = "Dieses Mitglied sperren?";
$locale['414'] = "Dieses Mitglied l&ouml;schen?";
$locale['415'] = "Zu Gruppe hinzuf&uuml;gen:";
$locale['416'] = "Hinzuf&uuml;gen";
$locale['417'] = "Dieses Mitglied zur gew&auml;hlten Gruppe hinzuf&uuml;gen?";
$locale['418'] = "Aktivieren";
$locale['419'] = "Sperr-Protokoll ansehen";
// View User Groups
$locale['420'] = "User Gruppe ansehen";
$locale['421'] = "%u Mitglied";
$locale['422'] = "%u Mitglieder";
$locale['423'] = "Name des Mitglieds";
$locale['424'] = "Typ des Mitglieds";
// Member status
$locale['440'] = "Aktiv";
$locale['441'] = "Gesperrt";
$locale['442'] = "Deaktiviert wegen Inaktivit&auml;t";
$locale['443'] = "Tempor&auml;r gesperrt";
$locale['444'] = "Aus Sicherheitsgr&uuml;nden gesperrt";
$locale['445'] = "Abgebrochen";
$locale['446'] = "Anonymisiert";
$locale['447'] = "Deaktiviert";
$locale['448'] = "Grund:";
?>


bitte löschen
 
emblinux
Das kann dann ja jeder selbst anpassen. Ist ja nicht weiter schwer. Wink
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Hads
Guten Morgen liebe Kollegen,

ich habe mir mal erlaubt, auf Anfrage eines Benutzers auf meiner Seite, eure Anleitung zu nehmen und für die aktuelle Version v7.02.05 umzuschreiben.
Ich bin mir nicht sicher, ob man hier einen Link zu einer anderen Seite setzten darf, falls nicht, entferne ich ihn wieder Wink.
Jedenfalls habe ich hier einen Tutorial Online gestellt, welcher es für die v7.02.05 beschreibt, natürlich mit einen Verweis zu euch.
http://php-fusion.at/infusions/tutorials_database_panel/tutorial.php?tutorial_id=10

Vielen Dank, liebe Grüße, David.
Mit freundlichen Grüßen, Hads (David)
 
Septron
Hallo David,

ich denke das wird bestimmt okay sein Wink
ich habe das Tut von dir auch gleich mal eingetragen bei mir in die Tut DB razz
falls es nicht okay ist entferne ich es wieder Wink

LG Septron
www.septron.de/signaturen/septron_1.png
 
Hads
Hallo Septron,

ist schon Ok, wie gesagt, ist ja eigentlich Emblinux sein Tutorial Smile.

Liebe Grüße, David.
Mit freundlichen Grüßen, Hads (David)
 
emblinux
Ist schon OK. Wink
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Springe ins Forum:

 Ähnliche Themen 

TEST
Thema Forum Antworten Letzter Beitrag
PHP Fusion 7 User Photogallery Allgemeine Support Fragen 3 26.04.2019 um 08:50
User Online / Offline Allgemeine Support Fragen 3 19.02.2017 um 00:46
Unable to establish connection to MySQL 1045 : Access denied for user 'www-data'@'localh PHP & MySql 13 18.08.2016 um 17:00
User News/Blog Infusionen 2 03.04.2016 um 17:33
PN bei User-Transfer (Scoresystem) Infusionen 18 06.01.2016 um 06:06
SGI Fusion