Seite 1 von 2
Gesperrten Benutzer automatisch einen Benutzerrang zuteilen
Verfasst: 15.09.2012 14:00
von Alduin
Grüsst euch!
Ich hoffe das ich hier Hilfe find.
Ich hab mir eine "Gesperrt" Ranggrafik erstellen lassen, weil ich wollte, das wenn ein Benutzer gesperrt wird (unabhängig von der Dauer) automatisch den Benutzerrang "Gesperrt" zugeteilt bekommt, und wenn der User wieder durch mich entsperrt wird oder automatisch nach Ablauf der Zeit wieder seinen ursprünglichen Benutzerrang zurückbekommt.
Ich möchte nur den Benutzerrang geändert haben automatisch, nicht die Benutzerrechte oder die Benutzergruppe.
Vielen dank schonmal für die kommenden Antworten.
Gruss, Alduin
Re: Gesperrten Benutzer automatisch einen Benutzerrang zutei
Verfasst: 16.09.2012 08:31
von LisaserstesForum
Hey Alduin, dafür gab es mal eine MOD, die wurde aber eingestellt, weil man nach einiger Zeit merkte, dass die MOD den Moderatoren ihren Rang weg nimmt. Deswegen solltest du das lieber per Hand machen.
Re: Gesperrten Benutzer automatisch einen Benutzerrang zutei
Verfasst: 16.09.2012 09:40
von Miriam
Irgendwas war da mal. Was genau weiß ich nicht mehr. Da gab es ungelöste Herausforderungen, soweit ich mich entsinne.
Das mit dem Moderatoren Rang sollte nicht so wild sein: Ein gesperrter Moderator ist kein Moderator mehr.
Re: Gesperrten Benutzer automatisch einen Benutzerrang zutei
Verfasst: 16.09.2012 10:33
von LisaserstesForum
Ja, dabei ging es aber um die aktiven (nicht gesperrten) Moderatoren, die ihren Rang immer wieder verloren haben.
Re: Gesperrten Benutzer automatisch einen Benutzerrang zutei
Verfasst: 16.09.2012 13:34
von Miriam
'kay.
Mal sehen... was hältst Du von dieser Idee? -->
- Du erstellst einen Spezialrang namens "gesperrt" und stellst dafür ein Bild ein und alles, was Du eben brauchst.
- Du findest die ID dieses neuen Rangs heraus indem du
- in die Tabelle phpbb_ranks schaust oder
- im ACP unter Ränge die ID durch "überfahren" des grünen Zahnrades beim Rang aus der angezeigten URL herausliest.
(Bsp.: /adm/index.php?i=ranks&sid=e9c40ecb6ec7a4ae512d9b813f2fa74b&mode=ranks&action=edit&id=2)
- Du baust folgenden Code ein:
Finde in der includes/functions_display.php
Code: Alles auswählen
function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src)
{
global $ranks, $config, $phpbb_root_path;
if (empty($ranks))
{
global $cache;
$ranks = $cache->obtain_ranks();
}
tausche ihn aus gegen:
Code: Alles auswählen
function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src, $user_id = false)
{
global $ranks, $config, $phpbb_root_path, $phpEx, $db;
$banned_rank_id = 2; //set special rank ID here
if (empty($ranks))
{
global $cache;
$ranks = $cache->obtain_ranks();
}
if (isset($user_id))
{
if (!function_exists('phpbb_get_banned_user_ids'))
{
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
}
if ( in_array((int)$user_id, phpbb_get_banned_user_ids((int)$user_id)) )
{
$rank_title = (isset($ranks['special'][$banned_rank_id]['rank_title'])) ? $ranks['special'][$banned_rank_id]['rank_title'] : '';
$rank_img = (!empty($ranks['special'][$banned_rank_id]['rank_image'])) ? '<img src="' . $phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$banned_rank_id]['rank_image'] . '" alt="' . $ranks['special'][$banned_rank_id]['rank_title'] . '" title="' . $ranks['special'][$banned_rank_id]['rank_title'] . '" />' : '';
$rank_img_src = (!empty($ranks['special'][$banned_rank_id]['rank_image'])) ? $phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$banned_rank_id]['rank_image'] : '';
return;
}
}
- Überall, wo Du diese neue angepaßte Anzeige haben möchtest, änderst Du den Aufruf der Funktion
get_user_rank()
etwas ab, indem Du die ID des zu überprüfenden Users einfügst:
Bspw.: in der viewtopic.php
suche
Code: Alles auswählen
get_user_rank($row['user_rank'], false, $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src']);
tausche aus gegen:
Code: Alles auswählen
get_user_rank($row['user_rank'], false, $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src'], $poster_id);
suche:
Code: Alles auswählen
get_user_rank($row['user_rank'], $row['user_posts'], $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src']);
tausche aus gegen:
Code: Alles auswählen
get_user_rank($row['user_rank'], $row['user_posts'], $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src'], $poster_id);
Nun wird der jeweilige User automatisch mit einem Spezialrang "gesperrt" gekennzeichnet, falls er gebannt wurde und nach dem Entsperren, ist er wieder mit dem originalen Rang unterwegs.
Beachte, daß Du folgende Zeile nach den Vorgaben Deines Boards anpassen mußt:
$banned_rank_id = 2; //set special rank ID here
Was genau angepaßt werdeen muß, sollte unerklärt klar sein.
Re: Gesperrten Benutzer automatisch einen Benutzerrang zutei
Verfasst: 16.09.2012 14:19
von Alduin
Puh, da muss ich aber ne Menge ändern. Den Rang "Gesperrt" hab ich schon
Aber danke, dass du mir den Code vorgibst, ich werd mich wohl bald daran setzen.
#Edit: Ich hab das mit dem banned_ID rank gemacht aber es passiert nichts.
Und "überall wo ich das angezeigt haben will" versteh ich auch nicht so recht ^^
Re: Gesperrten Benutzer automatisch einen Benutzerrang zutei
Verfasst: 16.09.2012 17:28
von Miriam
Wenn Du die Codes so eingebaut und auch die Spezialrang ID eingepflegt hast, wird bei den gesperrten Benutzern dieser Rang in der Profilansicht der Themenansicht gezeigt.
Falls Du das auch noch woanders angepaßt haben möchtest, z.B. in der Profilansicht oder wo sonst noch Ränge angezeigt werden, dann mußt Du in den entsprechenden PHP Dateien den besagten Funktionsaufruf um den Paramater der User ID erweitern. Das ändert sich natürlich von Datei zu Datei; ist also nicht immer gleich. Mal heißt der Parameter
$user_id
mal
$poster_id
etc. pp.
Im Zweifel kannst Du gern dem Link in meiner Signatur folgen.
Re: Gesperrten Benutzer automatisch einen Benutzerrang zutei
Verfasst: 16.09.2012 19:50
von Alduin
Hab ich ja alles gemacht, bei der functions_display.php und bei der viewtopic.php.
Und entsprechend auch die RangID ersetzt bei der functions_display.php bei diesem banned-rankID. (bei mir ist das die 10).
Trotzdem passiert nichts.
Und in der unteren Hälfte deines Beitrags sind irgendwie alle Codes gleich...
Und ich weiss garnicht wohin mit denen.
Re: Gesperrten Benutzer automatisch einen Benutzerrang zutei
Verfasst: 16.09.2012 20:33
von Miriam
Meinst Du die unter 4.?
Na dann suche mal nach
get_user_rank
. Ich habe 2 Ergebnisse. Wieviele hast Du in der
viewtopic.php?
\viewtopic.php (2 hits) hat geschrieben: Line 1129: get_user_rank($row['user_rank'], false, $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src']);
Line 1182: get_user_rank($row['user_rank'], $row['user_posts'], $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src']);
Die Codes sind mitnichten identisch. Schreibe dort jeweils VOR
);
diesen Code:
, $poster_id
Re: Gesperrten Benutzer automatisch einen Benutzerrang zutei
Verfasst: 17.09.2012 14:37
von Alduin
Also in jedem Codeabsatz wo dieses user_rank drinne ist soll ich vor jedem ); dieses poster_id Zeug schreiben? direkt davor oder mit Leerzeichen?
(Jetzt hast du es weginstens vereinfacht, das da oben ist nämlich ab der zweiten Hälfte des Beitrages irgendwie verwirrend)