Strona 1 z 1

Ograniczenie odpowiedzi w tematach

: 05 stycznia 2009, 18:57
autor: Belial
Witam
Nie wiem jak ograniczyć ilość odpowiedzi w danym temacie. Ktoś zakłada temat, inni mogą odpowiadać, ale tylko jeden raz. Można modyfikować swoją wypowiedź, ale nie można dodać nowej. Coś na zasadzie udzielenia jednorazowej pomocy - bez dyskusji. Oczywiście można tworzyć dowolną ilość tematów i jednorazowo odpisywać we wszystkich. Szukam tego i nie mogę znaleźć.

Pozdrawiam i z góry dziękuję za chęć pomocy :)

Re: Ograniczenie odpowiedzi w tematach

: 05 stycznia 2009, 21:28
autor: Belial
W skrócie chodzi o to, żeby można było tylko jeden raz odpisać w danym temacie.

Re: Ograniczenie odpowiedzi w tematach

: 06 stycznia 2009, 15:53
autor: daroPL
Przenoszę do Fora modyfikacji -> Poszukiwania.

Spróbuj tego:
otwórz posting.php

znajdź:

Kod: Zaznacz cały

if (!$is_authed)
{
    $check_auth = ($mode == 'quote') ? 'reply' : $mode; 
przed tym dodaj:

Kod: Zaznacz cały

$sql = 'SELECT COUNT(post_id) as posts
    FROM ' . POSTS_TABLE . '
    WHERE topic_id = ' . $topic_id;
$result = $db->sql_query($sql);
$posts = $db->sql_fetchfield('posts');

if (in_array($mode, array('reply', 'quote')) && $posts == 2)
{
    trigger_error('MAX_REPLIES');
} 
W tym wypadku WSZĘDZIE będzie obowiązywać ograniczenia do 1 odpowiedzi w temacie, aby zrobić to dla konkretnych forów zamiast kodu powyżej wklej:

Kod: Zaznacz cały

$sql = 'SELECT COUNT(post_id) as posts
    FROM ' . POSTS_TABLE . '
    WHERE topic_id = ' . $topic_id;
$result = $db->sql_query($sql);
$posts = $db->sql_fetchfield('posts');

if (in_array($mode, array('reply', 'quote')) && $posts == 2 && in_array($forum_id, array(ID_pierwszego_forum, ID_drugiego_forum, ID_trzeciego_forum_itd)))
{
    trigger_error('MAX_REPLIES');
} 
ID_pierwszego_forum, ID_drugiego_forum, ID_trzeciego_forum_itd powinno wyglądać np. tak: 1,6,23,31

Na koniec (w obu omówionych powyżej przypadkach) w pliku language/pl/posting.php
na końcu pliku przed

Kod: Zaznacz cały

); 
dodaj:

Kod: Zaznacz cały

'MAX_REPLIES' => 'W jednym temacie może pojawić się tylko jedna odpowiedź.', 

Kod pisany bez testowania więc nie musi działać. Proszę o informacje czy wszystko tak jak trzeba.

Re: Ograniczenie odpowiedzi w tematach

: 07 stycznia 2009, 03:08
autor: Belial
Działa prawie dobrze.
Po założeniu tematu można w nim odpisać jeden raz, ale tyczy się to wszystkich. Jedna osoba zakłada temat, inna odpisuje i na tym się kończy. Nikt więcej nie może pisać. Nie wiem, czy się dobrze zrozumieliśmy, ale chodziło mi o to, żeby każdy mógł pisać po jednej odpowiedzi. Teraz wygląda - kto pierwszy, ten lepszy - ciach i temat zamknięty :)

W każdym razie odpaliło od strzała i za to dziękuję. Mogę liczyć na poprawkę? :)

ps
Dla lepszego zrozumienia
'MAX_REPLIES' => 'Twój limit odpowiedzi w tym temacie został wyczerpany.',

Re: Ograniczenie odpowiedzi w tematach

: 07 stycznia 2009, 15:22
autor: daroPL
Ok. W takim razie znajdź:

Kod: Zaznacz cały

if (!$is_authed)
{
    $check_auth = ($mode == 'quote') ? 'reply' : $mode;  
przed tym dodaj:

Kod: Zaznacz cały

$sql = 'SELECT COUNT(post_id) as posts
    FROM ' . POSTS_TABLE . '
    WHERE topic_id = ' . $topic_id . '
        AND poster_id = ' . $user->data['user_id'];
$result = $db->sql_query($sql);
$posts = $db->sql_fetchfield('posts');

if (in_array($mode, array('reply', 'quote')) && $posts)
{
    trigger_error('MAX_REPLIES');
}  
W tym wypadku WSZĘDZIE będzie obowiązywać ograniczenia do 1 odpowiedzi w temacie, aby zrobić to dla konkretnych forów zamiast kodu powyżej wklej:

Kod: Zaznacz cały

$sql = 'SELECT COUNT(post_id) as posts
    FROM ' . POSTS_TABLE . '
    WHERE topic_id = ' . $topic_id . '
        AND poster_id = ' . $user->data['user_id'];
$result = $db->sql_query($sql);
$posts = $db->sql_fetchfield('posts');

if (in_array($mode, array('reply', 'quote')) && $posts && in_array($forum_id, array(ID_pierwszego_forum, ID_drugiego_forum, ID_trzeciego_forum_itd)))
{
    trigger_error('MAX_REPLIES');
} 
ID_pierwszego_forum, ID_drugiego_forum, ID_trzeciego_forum_itd powinno wyglądać np. tak: 1,6,23,31

Na koniec (w obu omówionych powyżej przypadkach) w pliku language/pl/posting.php
na końcu pliku przed

Kod: Zaznacz cały

); 
dodaj

Kod: Zaznacz cały

'MAX_REPLIES' => 'Możesz udzielić tylko jednej odpowiedzi w tematach na tym forum.', 

Re: Ograniczenie odpowiedzi w tematach

: 09 marca 2009, 09:20
autor: Belial
Witam po dłuższej nieobecności.

Sprawdziłem drugą wersję kodu i znowu ruszyła bez problemu, co mnie nie zdziwiło :)
Ucieszony powodzeniem zacząłem rozbudowywać swoje forum i w chwili obecnej mam:
5 głównych kategorii
10 podkategorii
65 pod-podkategorii
w tym ponad 950 for
Przed rozbudową mozolnie dopisywałem ID poszczególnych for, ale z czasem stało się to na tyle uciążliwe, że postanowiłem jeszcze raz poprosić tutaj o pomoc.
W związku z tym mam pytanie. Jak zmodyfikować powyższy kod, żeby można było podać ID kategorii (nie forum), i żeby ograniczenia odpowiedzi dotyczyły wówczas całego drzewa w dół.
W powyższym wypadku, po wpisaniu ID czterech z pięciu głównych kategorii, miałbym ustawione wszystkie fora. Jedna z głównych kategorii zostaje bez ograniczeń dla normalnej dyskusji.

Dziękuję i pozdrawiam.

Re: Ograniczenie odpowiedzi w tematach

: 11 kwietnia 2009, 09:53
autor: Belial
Witam

Jak zmodyfikować powyższy kod, żeby działał odwrotnie? Miałby blokować całe forum, a po podaniu ID_forum wyłączałby ten temat z ograniczenia.
Dużo z tym jest pracy?

Dzięki.

Re: Ograniczenie odpowiedzi w tematach

: 12 maja 2009, 10:27
autor: Belial
Witam ponownie :)
Znajdzie się chętny, który odpłatnie dokończy ze mną ten wątek?