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".
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?
EDIT: // Dziękuje
pawelooss - 28-02-2009, 21:07
Tak, teraz działa! 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ź:
->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ź:
->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&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&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, 23:12
Wszystko ładnie działa! wielkie dzięki za tego moda
Bucu - 19-07-2009, 12:37
poprawiona wersja w pierwszym poscie.
|
|
|