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 - Przynależność do grupy na określony czas

Majkelo - 04-12-2012, 21:52
Temat postu: Przynależność do grupy na określony czas
Przynależność do grupy na określony czas

Pozwala określić czas, na jaki wybrany użytkownik zostanie dodany do danej grupy.


Kod:
################################################################
## MOD Title: Przynależność do grupy na określony czas
## MOD Version: 1.0
## MOD Author: Majkelo < Mich.Pajor[at]gmail.com > Michał Pajor
## MOD Description: Pozwala określić czas, na jaki wybrany użytkownik zostanie dodany do danej grupy.
##
## Installation Level: Medium
## Installation Time: 6 Minute
## Files To Edit: (5)   
##                       groupcp.php
##                       admin/admin_groups.php
##                       language/lang_polish/lang_main.php
##                       templates/*/groucp_info_body.tpl
##                       index.php
##         
################################################################


Co modyfikacja potrafi:
:arrow: Podczas dodawania użytkownika do danej grupy jest możliwość wybrania na jak długo dany user ma być przydzielony do danej grupy,
:arrow: Przy dodawaniu/zmianie moderatora grupy - jego czas 'przynależenia' zawsze zmieniany jest na nieograniczony,
:arrow: W widoku grupy moderator grupy (admin itd. oczywiście też) widzą kto kiedy z danej grupy wyleci.

Ten kawałek:

Kod:
if ( rand(0, 8) == 8 )
{
    $sql = "DELETE FROM " . USER_GROUP_TABLE . "
        WHERE user_delete_time > 0
        AND user_delete_time <= " . CR_TIME . "";
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql);
    }
    if ( mysql_affected_rows() > 0 )
    {
        sql_cache('clear', 'groups_data');
    }
}


Odpowiada za usuwanie ludzi z grupy, których czas już minął. Jak widać, zrobiłem taki prowizoryczny warunek, dzięki czemu to zapytanie nie będzie wykonywanie cały czas, tylko wtedy, jeśli z przedziału 0-8 wylosowana zostanie cyfra 8. Jak ktoś chce to może ten warunek usunąć i wtedy to zapytanie będzie wykonywane cały czas przy wejściu w index.php, aczkolwiek przy średnio 80 użytkownikach, odwiedzających Twoje forum dziennie - nie ma sensu zbędnie obciążać forum.

No i oczywiście, jeśli chcecie dodać danego użytkownika na okres nieokreślony do grupy (na zawsze) to pole 'Na czas' zostawiacie puste. Jest tam z resztą nawet informacja o tym ;)
W modyfikacji '1 miesiąc' to 30 dni.

To chyba na tyle informacji.
Pozdrawiam!

Piwulek - 04-12-2012, 22:00

o to chodziło... postawiłbym ci Piwo z miłą chęcią :)
Czy będzie można kogoś dołączyć np... do końca danego roku kalendarzowego?

Majkelo - 04-12-2012, 22:06

Nie. Na screenie jest pokazane - wpisujesz wartość i dobierasz coś z przedziału minut/godzin/dni/miesięcy (30 dni) / lat.
Piwulek - 04-12-2012, 22:56

Źle się wyraziłem... chodziło mi o to, czy przewidujesz modyfikację idącą w tą stronę, żeby zaznaczyć konkretną datę :)
Majkelo - 05-12-2012, 07:05

Nie wiem, zobaczymy 8)
Anonymous - 06-12-2012, 08:33

Szczerze powiedziawszy, jeżeli nikt nie wejdzie do gorupcp to użytkownik nie zostanie usunięty z grupy :)
Lepiej jak zrobisz plik tymczasowy w którym będziesz zapisywać datę ( dzień po dniu [ nie chodzi o datę wygasania użytkownika ] ), jeżeli pliku nie będzie lub data nie jest aktualna to wykonujesz funkcję, która
kasuje użytkowników i uaktualnia plik tmp z datą.

Wszystko to zrobisz na bazie funkcji cachującej która jest wbudowana, warto dodać że wywołanie funkcji powinno znajdować się w pliku common oraz powinna ona być wywoływana po określonej godzinie.

Lub po prostu żyj crona :roll:

Piwulek - 06-12-2012, 09:35

Zainstalowane, sprawdzone i działa :)
Mimo tej małej niedoskonałości, o której wspomniałem powyżej, uważam tego moda za BARDZO przydatnego w moim przypadku :)

Majkelo - 06-12-2012, 13:48

Cytat:
Szczerze powiedziawszy, jeżeli nikt nie wejdzie do gorupcp to użytkownik nie zostanie usunięty z grupy


Zawsze moźna to umieścić w common.php, nie widzę problemu.

Pawlok - 09-12-2012, 22:11

Zainstalowalem. Dalem uzytkownikowi na 2 min ale po 15 min byl dalej w grupie :/ Nie wywalilo go z grupy;/
Anonymous - 10-12-2012, 12:51

Pawlok

mayerboss napisał/a:
Szczerze powiedziawszy, jeżeli nikt nie wejdzie do gorupcp to użytkownik nie zostanie usunięty z grupy :)

Majkelo - 11-12-2012, 12:44

Pawlok napisał/a:
Zainstalowalem. Dalem uzytkownikowi na 2 min ale po 15 min byl dalej w grupie :/ Nie wywalilo go z grupy;/


Wystarczy czytać dokładnie posty. Umieść sobie to w common.php, przed ?>, a gwarantuję, że usunie ;]


Kod:
    $sql = "DELETE FROM " . USER_GROUP_TABLE . "
        WHERE user_delete_time > 0
        AND user_delete_time <= " . CR_TIME . "";
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql);
    }
    sql_cache('clear', 'groups_data');

Anonymous - 11-12-2012, 14:26

Majkelo napisał/a:
$sql = "DELETE FROM " . USER_GROUP_TABLE . "
WHERE user_delete_time > 0
AND user_delete_time <= " . CR_TIME . "";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql);
}
sql_cache('clear', 'groups_data');


WTF ????!!!!

Nie dość że +1 zapytanie dodatkowe przy wywoływaniu strony za każdym razem to jeszcze zbędne ciągłe czyszczenie cachów grup. Zrób to porządnie !

Majkelo - 11-12-2012, 14:36

mayerboss napisał/a:
Nie dość że +1 zapytanie dodatkowe przy wywoływaniu strony za każdym razem to jeszcze zbędne ciągłe czyszczenie cachów grup. Zrób to porządnie !


Jest zrobione porządnie i jest to także opisane wyżej.

Anonymous - 11-12-2012, 14:37

Majkelo napisał/a:

Jest zrobione porządnie i jest to także opisane wyżej.


To masz pojęcie o tym co robisz, gz.
EoT.

Majkelo - 11-12-2012, 14:42

Porządnie zrobione jest w załączniku w pierwszym poście i opisane. Kolega Pawlok jak zwykle nie przeczytał posta i się wielce dziwi, że po pierwszym odświeżeniu strony, nie usunęło użytkownika z grupy i mu to nie odpowiada to dostał rozwiązanie, które jest mało optymalne, ale trudno - skoro on nie potrafi poświęcić 2 min na przeczytanie dokładnie tego co napisałem w pierwszym poście to ja nie będę tracił czasu na przepisywanie drugi raz tego samego fragmentu, dostał rozwiązanie mało optymalne - trudno ;]

mayerboss napisał/a:
To masz pojęcie o tym co robisz, gz.
EoT.


Owszem, mam.



Powered by phpBB modified by Przemo © 2003 phpBB Group