To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

1.12.7 i starsze - No Warn For Administrator

Bucu - 28-02-2009, 17:25
Temat postu: No Warn For Administrator
Poprawiona wersja moda - v1.2

Kod:
##############################################################
## MOD Title: No Warn For Admin
## MOD Author: bucu < bucu666@gmail.com > (Wiktor Bucki) www.backbone.neth.pl
## MOD Description: Uniemozliwia wystawienie ostrzezenia osobom z ranga moderator  i admin
## MOD Version: 1.2
##
## Installation Level: (Easy)
## Installation Time: 3 Minutes
## Files To Edit: warnings.php
## Included Files: N/A
## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
#
#-----[ FIND ]------------------------------------------
#

if ( $mode == 'add' && $can_add )
{
    if ( $userid && !$username )
    {
        $username = get_username($userid);
    }

    $template->assign_block_vars('add', array(
        'L_EXPLAIN' => $lang['add_warning_e'],
        'L_USERNAME' => $lang['Username'],
        'USERNAME' => $username)
    );
#
#-----[ AFTER, ADD ]------------------------------------------
#

   "SELECT user_level FROM " . USERS_TABLE . "
    WHERE user_level = 1 AND user_level = 2;";
    $nowarn = $db->sql_query($sql);
    $row = $db->sql_fetchrow($nowarn);

    if ($nowarn == 1 || $nowarn == 2)
    {
          $message = 'Nie możesz dać ostrzeżenia temu Użytkownikowi' . '<br /><br />' . sprintf($lang['Click_to_back'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
            message_die(GENERAL_MESSAGE, $message);
    }

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM


instrukcja krotka wiec zamieszczam od razu w poscie.

pawelooss - 28-02-2009, 19:32

Działa wyśmienicie. Mam tylko jedno pytanie. Czy gdy chce się dodać więcej "niewarnowalnych" użytkowników, to trzeba za każdym razem powtarzać ten kod z odpowiednim "if($userid == 'x')", czy można to zapisać w jednej linijce w postaci kilku ID po przecinku (czy jakoś w tym stylu)?
MagicalFire - 28-02-2009, 19:36

pawelooss napisał/a:
if($userid == 'x')",

nie
możesz dodawać po przecinku
np
Kod:
($userid == '2,32,44')

pawelooss - 28-02-2009, 19:44

Niestety chyba jednak tak się nie da. Wpisałem:
Kod:
if($userid == '2,3,4')

i userowi 2 faktycznie nie mogę dać warna, ale 3 i 4 już bez problemu.

maminowiec - 28-02-2009, 19:49

Kod:
$userid = "2,3,4"; //id rozdzielone przecinkami
$userid = explode(',', $userid);


Kod:
    if($userid == '2,3,4')
    $userid = explode(',', $userid);
   
    {
          $message = 'Nie możesz dać ostrzeżenia Administratorowi' . '<br /><br />' . sprintf($lang['Click_to_back'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
            message_die(GENERAL_MESSAGE, $message);
    }


Zobacz czy działa

pawelooss - 28-02-2009, 20:07

Niestety. Wtedy nie mogę dać warna nikomu - wszyscy userzy są "niewarnowalni". :P
lui754 - 28-02-2009, 20:59

Kod:
    if(in_array($userid, array(2,4,19,22,142)))
    {
          $message = 'Nie możesz dać ostrzeżenia Administratorowi' . '<br /><br />' . sprintf($lang['Click_to_back'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
            message_die(GENERAL_MESSAGE, $message);
    }


Może tak? :P


EDIT: // Dziękuje ;)

pawelooss - 28-02-2009, 21:07

Tak, teraz działa! 8) Dziękuję wszystkim za odpowiedzi! :)
Bucu - 28-02-2009, 21:11

uaktualniona wersja w zalaczniku, dzieki @lui754, dopisalem cie jako autora i pomógł juz dalem :)
Petermechanic - 01-03-2009, 10:26

Witam
Pomyślałem, że ten problem można rozwiązać inaczej bardziej "globalnie", bez wpisywania ID - czyli możliwości instalowania go na większej ilości forach:
Cytat:

->Otwórz languages/lang_polish/lang_warnings.php
->Znajdź:
Kod:
?>

->Przed tym, dodaj:
Kod:

$lang['you_cannot_add_warn_for_admin'] = 'Nie możesz dać ostrzeżenia Administratorowi';

->Otwórz languages/lang_english/lang_warnings.php
->Znajdź:
Kod:
?>

->Przed tym, dodaj:
Kod:

$lang['you_cannot_add_warn_for_admin'] = 'You can\'t add warn for Admin';

-> Otwórz warnings.php
->Znajdź:
Kod:
function get_user_id($username)
{
    global $db, $lang;
    $sql = "SELECT user_id
        FROM " . USERS_TABLE . "
        WHERE username = '" . str_replace("\'", "''", $username) . "'";
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, $lang['wrong_user']);
    }

    $rowname = $db->sql_fetchrow($result);
    if ( $rowname['user_id'] < 1 )
    {
        message_die(GENERAL_ERROR, $lang['wrong_user']);
    }

    return $rowname['user_id'];
}

->Zamień na:
Kod:
function get_user_id($username, $onlyid = true)
{
    global $db, $lang;
    if ($onlyid)
    {
        $sql = "SELECT user_id
            FROM " . USERS_TABLE . "
            WHERE username = '" . str_replace("\'", "''", $username) . "'";
    }
    else
    {
           $sql = "SELECT user_id, user_level
            FROM " . USERS_TABLE . "
            WHERE username = '" . str_replace("\'", "''", $username) . "'";
    }
   
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, $lang['wrong_user']);
    }

    $rowname = $db->sql_fetchrow($result);
    if ( $rowname['user_id'] < 1 )
    {
        message_die(GENERAL_ERROR, $lang['wrong_user']);
    }
   
    if ($onlyid)
    {
        return $rowname['user_id'];
    }
    else
    {
        return array($rowname['user_id'], $rowname['user_level']);
    }
}

->Znajdź:
Kod:
if ( $mode == 'add' && $action == 'warning' )
    {
        $userid = get_user_id($username);
        if ( $value < 1 || ( !$admin && $value > $board_config['mod_value_warning'] ))
        {
            $message = $lang['wrong_value'] . '<br /><br />' . sprintf($lang['Click_to_back'], '<a href="' . append_sid("warnings.$phpEx?mode=add&amp;userid=$userid") . '">', '</a>');
            message_die(GENERAL_MESSAGE, $message);
        }
       

->Zamień na
Kod:
 
    if ( $mode == 'add' && $action == 'warning' )
    {
        $userwinfo = get_user_id($username, false);
        $userid = $userwinfo[0];
        $userwl = $userwinfo[1];
        if ( $value < 1 || ( !$admin && $value > $board_config['mod_value_warning'] ))
        {
            $message = $lang['wrong_value'] . '<br /><br />' . sprintf($lang['Click_to_back'], '<a href="' . append_sid("warnings.$phpEx?mode=add&amp;userid=$userid") . '">', '</a>');
            message_die(GENERAL_MESSAGE, $message);
        }
        if ($userwl == ADMIN)
        {
            $message = $lang['you_are_not_add_warn_for_admin'] . '<br /><br />' . sprintf($lang['Click_to_back'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
                    message_die(GENERAL_MESSAGE, $message);
        }

->Zapisz i zamknij pliki oraz wyczyść cache

Uwaga, w ciągu 10 ostatnich minut pojawiły się poprawki do moda.

Bucu - 01-03-2009, 11:59

Petermechanic owszem dobre, ale chodzi o generalnie o to zeby ustalic w miare elastycznie komu wolno warna dodac, a komu nie.

Postaram sie dzis dopisac to do PA i zmienic sposob przechowywania ID na bazę danych.

Petermechanic - 01-03-2009, 17:35

Bucu, ale wg. mnie - żadnemu adminowi nie powinno się dawać ostrzeżenia, a co wtedy, jak ktoś zapomni dać ID? Taką opcję można, ale nie jako dla admina, tylko "użytkownicy, którzy nie mogą dostać ostrzeżeń", wtedy pomysł jest trafny.
Pozdrawiam

fastlone - 12-03-2009, 17:09

Bucu, przerobilbys tego moda tak, by był tez kompatybilny z http://www.przemo.org/php...pic.php?t=69257??
ditu - 21-04-2009, 22:12

Wszystko ładnie działa! :) wielkie dzięki za tego moda :D
Bucu - 19-07-2009, 11:37

poprawiona wersja w pierwszym poscie.


Powered by phpBB modified by Przemo © 2003 phpBB Group