[Snippet] Reset Warning - Verwarnungen zurücksetzen.

Hier findet Ihr Modifikationen (MODs) für phpBB3 Olympus (3.0.x)
Forumsregeln
Support für die MODs findet Ihr auf http://www.phpbb.de
Bereich: phpBB 3.0: MOD Support
Benutzeravatar
Dr.Death
Site Admin
Site Admin
Beiträge: 1952
Registriert: 05.02.2005 15:41
Wohnort: Xanten
Kontaktdaten:

[Snippet] Reset Warning - Verwarnungen zurücksetzen.

Beitrag von Dr.Death » 04.12.2008 07:57

MOD Name: Remove a warning
Author: KTUK Group
MOD Beschreibung: Ein Admin oder Moderator hat versehentlich eine Verwarnung ausgesprochen und möchte diese nun wieder entfernen. phpBB3 hat für diesen Fall keine eingebaute Möglichkeit. Daher wurde dieses kleine Script erstellt.
MOD Version: Keine Versionsangabe.

Quelle: http://www.ktuk.net/phpBB3/viewtopic.php?p=147762

Problem:
Ein Admin oder Moderator hat versehentlich eine Verwarnung ausgesprochen und möchte diese nun wieder entfernen. phpBB3 hat für diesen Fall keine eingebaute Möglichkeit. Daher wurde dieses kleine Script erstellt.

Lösung:
Erstelle eine Datei mit dem Namen remove_warning.php und füge diesen Inhalt hinein:

Code: Alles auswählen

<?php

// @copyright (c) 2005 KTUK Group
// Translated into german: http://www.lpi-clan.de - Dr.Death
// @license http://opensource.org/licenses/gpl-license.php GNU Public License

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Starte Session Verwaltung
$user->session_begin();
$auth->acl($user->data);
$user->setup('');

//Nun werden ein paar wichtige Variablen gesetzt
$username = request_var('username', '');
$count = request_var('count', 0);
$submit = request_var('submit', '');
$done = false;
//define some variables
$row_user = '';
$warning = '';
$warning_new = '';

//Hier wird das Adminrecht geprueft. Solltest Du kein Adminrecht besitzen wird eine Fehlermeldung ausgegeben ;)
if(!$auth->acl_get('a_'))
{
    trigger_error('Nur Admins koennen Verwarnungen entfernen.');
}

//Wurde das Formular abgeschickt? Wenn nicht, zeige das Formular.
if(!$submit)
{
    print "<form action="".$_SERVER['SCRIPT_NAME']."" method="post" />
    <h2>Verwarnungen entfernen</h2><br />
    Benutzername: <input type="text" name="username" /><br />
    Anzahl der zu entfernenden Verwarnungen: <input type="text" name="count" maxlength="2" size="2" />
    <input type="submit" value="Absenden" name="submit" />
    </form>";
}

//Userdaten abfragen
$sql = "SELECT * FROM " . USERS_TABLE . "
    WHERE username = '$username'";
$result = $db->sql_query($sql);
$row_user = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

//Zuweisung der Verwarnungsanzahl aus der Datenbank
$warning_count = $row_user['user_warnings'];

for($i=1;$i<=$count;$i++)
{    
    //Existiert der angegebene User ueberhaupt?
    if (isset($row_user['user_id']))
    {
        //Hole alle Verwarnungsinfos des betroffenen User
        $sql = "SELECT * FROM " . WARNINGS_TABLE . "
        WHERE user_id = ".$row_user['user_id']."
        ORDER BY warning_time DESC LIMIT 1";
        $result = $db->sql_query($sql);
        $warning = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
    }
    
    //Gibt es eine Verwarnung des betroffenen User?
    if (isset($warning['warning_id']))
    {
        //Ergebnis Ausgabe initialisieren
        $result = '';
        
        //Entferne Verwarnungs Log Eintrag
        $sql = "DELETE FROM " . LOG_TABLE . "
        WHERE log_id = ".$warning['log_id'];
        $db->sql_query($sql);
        
        print $result = ($db->sql_query($sql)) ? "Verwarnungs Log Eintrag entfernt.<br />" : '';
        
        //Entferne die letzte Verwarnung
        $sql = "DELETE FROM " . WARNINGS_TABLE . "
        WHERE warning_id = ".$warning['warning_id'];
        $db->sql_query($sql);
        
        //Erfolgsausgabe
        print $result = ($db->sql_query($sql)) ? "Letzte Verwarnung entfernt.<br />" : '';
        
        //Reduziere den Verwarnungszaehler des betroffenen Users um 1
        $warning_count = ($warning_count - 1);
        
        $sql = "UPDATE " . USERS_TABLE ."
        SET user_warnings = ".$warning_count."
        WHERE user_id = ".$row_user['user_id'];
        $db->sql_query($sql);
        
        //Erfolgsausgabe
        print $result = ($db->sql_query($sql)) ? "Anzahl der Benutzerverwarnung reduziert.<br />" : '';
        
        //Nun muessen wir noch die letzte Verwarnungszeit ermitteln um sie anpassen zu können.
        $sql = "SELECT warning_time FROM " . WARNINGS_TABLE . "
        WHERE user_id = ".$row_user['user_id']."
        ORDER BY warning_time DESC LIMIT 1";
        $result = $db->sql_query($sql);
        $warning_new = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
        
        $warning_new['warning_time'] = ($warning_new['warning_time']) ? $warning_new['warning_time'] : 0;
        
        //Letzte Verwarnungszeit anpassen
        $sql = "UPDATE " . USERS_TABLE . "
        SET user_last_warning = ".$warning_new['warning_time']."
        WHERE user_id = ".$row_user['user_id'];
        $db->sql_query($sql);
        
        //Erfolgsausgabe
        print $result = ($db->sql_query($sql)) ? "Die letzte Verwarnungszeit wurde aktualisiert falls vorherige Verwarnung bestanden haben.<br /><br />" : '';
        
        //Erzeuge einen Admin Log Eintrag ueber die erfolgreiche Entfernung der Verwarnung
        add_log('admin', 'Verwarnung entfernt', $user_row['username']);
        
        //Erfolgsausgabe abschliessen
        $done = true;
    }
}

if($submit)
{
    if ($done)
    {
        //Wir sollten den betroffenen User per Mail wissen lassen, dass wir eine oder mehrere Verwarnungen entfernt haben
        mail($row_user['user_email'], 'Verwarnung zurueckgenommen', 'Ein Administrator auf www.lpi-clan.de hat eine Verwarnung oder eine versehentlich ausgesprochene Verwarnung zurueckgenommen.');
    }
    //did it work?
    print $done = ($done) ? "Fertig. Verwarnung oder Verwarnungen wurden entfernt." : "Fertig. Es wurde keine Aktion durchgefuehrt.";
    //get form ready for another submit
    unset($submit);
    print "<br /><a href="./remove_warning.php">Zurueck</a>";
}

?>

  • Die im o.g. Code befindliche Zeile:

    Code: Alles auswählen

       mail($row_user['user_email'], 'Verwarnung zurueckgenommen', 'Ein Administrator auf www.lpi-clan.de hat eine Verwarnung oder eine versehentlich ausgesprochene Verwarnung zurueckgenommen.');        
    bitte anpassen und Eure Forum Adresse dort angeben.
  • Speichert die Datei und stellt sicher das sich kein Leerzeichen oder Leerzeile vor <?php und nach ?> befindet.
  • Lade die Datei per FTP in Dein Forums Root hoch ( dort wo auch die memberlist.php liegt ) und rufe die Datei mit deinem Browser auf : Beispiel URL : www . deine-seite . de / remove_warning.php
  • Gib nun den Benutzernamen des betroffenen Users an und die Anzal der Verwarnungen die Du zurücknehmen möchtest. Dann klicke auf "Absenden".
  • Der betroffene Benutzer wird per Mail über diesen Vorgang informiert ( nur wenn die php Funktion mail() auf Eurem Webspace funktioniert. SMTP Versand wird nicht unterstützt )
Doc. :schein:

Werbung wird nicht durch www.lpi-clan.de bereitgestellt, sondern durch Google. Besucher dieser Links werden gebeten sorgfaeltig mit den angebotenen Produkten/Seiten umzugehen.