|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
[gotowa modyfikacja] Prośby o nowe linki |
Autor |
Wiadomość |
Warmix
Pomógł: 60 razy Posty: 328
|
Wysłany: 04-07-2012, 18:43 [gotowa modyfikacja] Prośby o nowe linki
|
|
|
Taka prosta modyfikacja na wzór DW, dla tych, którzy chcieliby z niej skorzystać...
Kod: | ##############################################################
## MOD Title: Prośby o nowe linki
## MOD Author: Warmix marcin7848@interia.pl http://www.przemo.org/phpBB2/forum/profile.php?mode=viewprofile,u,29980
## MOD Description: Modyfikacja dodaje możliwość poproszenia o nowe posty z linkami do wybranego tematu.
##
## MOD Version: 1.1
##
## Installation Level: (Easy)
## Installation Time: 5 Minutes
## Files To Edit (10):
## admin/modules_data.php
## includes/constants.php
## includes/usercp_viewprofile.php
## language/lang_polish/lang_admin.php
## language/lang_polish/lang_main.php
## templates/block/overall_header.tpl
## templates/block/profile_view_body.tpl
## templates/block/viewtopic_body.tpl
## posting.php
## viewtopic.php
##
## Included Files (7):
## admin/admin_prosby.php
## images/pojedyncze.png
## images/popros.gif
## images/prosbylogo.png
## templates/styl/admin/prosby_body_config.tpl
## templates/styl/prosby.tpl
## prosby.php
##
## License: GPL 3
## ang. http://www.gnu.org/licenses/gpl-3.0.txt
## PL http://itlaw.computerworld.pl/index.php/2008/03/10/tekst-licencji-gpl-v3-po-polsku-plus-prosba-o-pomoc/
############################################################# |
Opiszę co nieco działanie skryptu.
Po włączeniu modyfikacji każdy użytkownik może poprosić o nowe post w temacie. Działy, w których modyfikacja będzie działać, określa się w Panelu Administratora.
Każdy użytkownik wchodząc w temat ujrzy, obok 'Wiadomość' button obrazkowy: 'Poproś o nowe linki'. Klikając na niego, w panelu Próśb pojawi się nowa prośba (lub zaktualizuje już obecną, dodając do liczby próśb +1). Każda prośba o linki kosztuje 1 punkt. Standardowo na początku każdy ma 10 punktów (można zmodyfikować domyślą wartość podczas wysyłania zapytania sql bądź bezpośrednio po dodaniu w bazie danych mysql). W przypadku, gdy komuś zabraknie punktów, nie może on prosić o nowe linki. Aby zdobyć punkty i dalej móc prosić o nowe linki, trzeba spełnić prośbę o linki innego użytkownika. Każda prośba jest ważna do spełnienia jej, poprzez dodanie minimum 3 postów do tematu, niekoniecznie przez jednego użytkownika lub do utraty ważności prośby, czyli po upływie 7 dni od pojawienia się prośby. Nawet jeżeli któryś z kolei użytkownik poprosi o linki po upływie 6 dni, to prośba, bez względu na to, zostanie usunięta kolejnego dnia. Po upływie 7 dni, prośba zostaje skasowana, a do wszystkich użytkowników, którzy prosili o linki, zostaje wysłana prywatna wiadomość z informacją o niespełnionej prośbie (skrypt ten wywołuje plik prosby.php). Punkty zdobywamy poprzez spełnianie próśb innych użytkowników, jak już wcześniej pisałem. Warto wiedzieć, jak naliczane są punkty. Każdemu z 3 użytkowników spełniających prośbę innych, zostają przyznane punkty. 1 punkty za jedną prośbę, czyli jeżeli o dany link prosi jedna osoba, to każda z 3 osób spełniających prośbę (wymagane są 3 posty) otrzyma o 1 punkcie. Jeżeli proszących o link jest 10, to każda osoba spełniająca otrzyma 10 punktów. Teraz ograniczenia dla proszących i spełniających. Jedna osoba nie może prosić i spełniać w tym samym momencie w tym samym temacie. Dlatego też, jeżeli użytkownik poprosi o link, a później doda link do tego tematu, gdzie poprosił o linki, to punkty nie będą mu naliczane. To samo jest w drugą stronę. Jeżeli użytkownik spełnia już prośbę o linki w temacie, to nie może on poprosić o linki w tym temacie (żeby nie zdobywał dodatkowych punktów). Kolejnym ograniczeniem jest to, że jeden użytkownik nie może spełnić prośby. Jeżeli system dodał użytkownika jako jedną osobę ze spełniających, to jeżeli ta sama osoba doda kolejny post w tym temacie, nie będzie on ponownie zaliczony jako spełniający prośbę. Cały system spełniania jest zawarty w pliku posting.php, czyli skrypt aktywowany jest podczas wysyłania trzeciego spełniającego prośbę, czyli w momencie wysłania postu, który trafia na listę spełniających. Gdy prośba zostaje spełniona, każdemu z spełniających dodane są punkty, każdej osobie proszącej zostaje wysłana prywatna wiadomość o spełnionej prośbie oraz prośba zostaje usunięta. Na stronie głównej prosby.php są zawarte wszelkie informacje skryptu (ile spełniono, ile próśb itd.) oraz na stronie głównej standardowo wyświetlane są prośby w zależności od ilości próśb. Im więcej proszących => tym wyżej prośba. Wyświetlane są tylko prośby, które mają więcej niż 1 prośbę (można kliknąć na button 'Pojedyncze prośby', wtedy pokazuje nam tylko pojedyncze prośby, zaczynając od najstarszych). Wszystkie wyniki, nadal według ilości próśb, ale także z prośbami z 1 proszącym, są wyświetlane podczas sortowania próśb według działów. Na koniec dodam, że w panelu próśb można prosić tylko o te linki w tematach, w których już ktoś prosi (zapobiegnie to możliwości przypadkowego zmienienia ID topicu w pasku adresu).
Resztę poznasz, jak już zainstalujesz modyfikację.
Czekam na komentarze, czy wszystko działa w porządku, bo części nie chciało mi się testować, by działanie było oczywiście, ale gdzieś zawsze mogła wkraść się literówka :p
Jeżeli coś fajnego dodadzą do modyfikacji na DW, zrobię aktualizację.
prosby.png
|
|
Plik ściągnięto 284 raz(y) 53,65 KB |
Prośby o nowe linki.rar
|
Pobierz Plik ściągnięto 523 raz(y) 33,13 KB |
|
Ostatnio zmieniony przez Warmix 15-08-2012, 14:08, w całości zmieniany 3 razy |
|
|
|
|
Gadatliwa Kasia
|
|
|
|
kevin_
Pomógł: 768 razy Posty: 2680
|
Wysłany: 06-07-2012, 07:22
|
|
|
- po co za każdym wywołaniem prośby.php czyścisz board_config?
- teksty trzymałbym w langach i za pomocą np. sprintf przekazywał dodatkowe parametry typu id_tematu - choć w ogóle cały link powinieneś przefiltrować przez append_sid()
- 65 linijka podaność na atak sql injection - dopiero w 69 sprawdzasz czy jest numeryczna czy nie:F
- poczytaj o relacjach, bo z tego co mi się wydaje zapis z 124 linijki oraz 129 mógłbys złączyć jako jedno (143 i 148 to samo)
- 135#daty formatuj za pomocą funkcji gotowej z phpBB - ponieważ jak ktoś zmieni tam konfiguracje daty w edycji profilu bodajże to i tak ujrzy Twój standard.
- #180 nie filtrujesz danych
- #203 nie narzucaj swoich kolorów, tylko trzymaj się tych co ktoś ma zdefiniowane w stylu; tablica $theme zwraca komórki row1, row2 (kolory)
- sama tabela/konstrukcja prosi się o nałożenie indeksów na id_forum oraz id_topic
sprawdź czy dobrałeś też odpowiedni typ - czy id_forum to faktycznie int(11) z phpbb_forums i to samo dla tematów.
Pzdr. |
_________________ Prezes |
|
|
|
|
Majkelo
Pomógł: 1283 razy Posty: 3081
|
Wysłany: 06-07-2012, 07:42
|
|
|
Kod: | while($wynik = mysql_fetch_assoc($result)) |
Standardy + wszystkie powyższe uwagi. Brakuje też screenów, bez tego nie przeniosę modyfikacji do gotowych. |
|
|
|
|
Warmix
Pomógł: 60 razy Posty: 328
|
Wysłany: 06-07-2012, 07:49
|
|
|
ok, poprawię to wszystko, tylko nie dziś... bo jadę na basen.
Zdjęcia też zrobię |
|
|
|
|
zaba1992
Pomógł: 3 razy Posty: 524
|
Wysłany: 12-07-2012, 16:51
|
|
|
Można poprosić screen ?? |
|
|
|
|
Warmix
Pomógł: 60 razy Posty: 328
|
Wysłany: 15-07-2012, 09:01
|
|
|
Aktualizacja do wersji 1.1 |
|
|
|
|
zaba1992
Pomógł: 3 razy Posty: 524
|
Wysłany: 15-07-2012, 13:30
|
|
|
Po instalacji wywala mi blad viewtopic.php
Cytat: | Could not obtain post/user information.
DEBUG MODE
SQL Error : 1054 Unknown column 'u.prosby_pkt' in 'field list'
SELECT p.post_id, p.post_time, p.enable_sig, p.enable_html, p.enable_smilies, p.post_edit_count, p.post_edit_time, p.post_username, p.post_lp, p.post_approve, p.poster_delete, p.post_edit_by, p.post_parent, p.user_agent, p.post_attachment, p.post_expire, u.user_sig_image, u.user_birthday, u.user_from, u.user_regdate, u.user_gender, u.user_aim, u.user_viewaim, u.user_avatar_width, u.user_avatar_height, u.user_field_1, u.user_allow_field_1, u.user_field_2, u.user_allow_field_2, u.user_field_3, u.user_allow_field_3, u.user_id, u.username, u.user_level, u.user_jr, u.user_allowhtml, u.user_posts, u.user_points, u.user_allowsig, u.user_sig, u.user_sig_bbcode_uid, u.user_allowsmile, u.user_avatar_type, u.user_allowavatar, u.user_avatar, u.user_rank, u.user_viewemail, u.user_website, u.user_email, u.can_custom_ranks, u.user_custom_rank, u.user_session_time, u.user_allow_viewonline, u.prosby_pkt, u.user_spend_time, u.user_visit, pt.post_text, pt.bbcode_uid, pt.post_subject , ph.th_post_id FROM phpbb_posts p LEFT JOIN phpbb_posts_text_history ph ON (ph.th_post_id = p.post_id) LEFT JOIN phpbb_posts_text pt ON (pt.post_id = p.post_id) LEFT JOIN phpbb_users u ON (u.user_id = p.poster_id) WHERE p.topic_id = 1072 GROUP by p.post_id ORDER BY p.post_order, p.post_time ASC LIMIT 0, 15
Line : 957
File : viewtopic.php
Jeśli nie potrafisz znaleźć rozwiązania tego problemu,
możesz spróbować poszukać, lub zadać pytanie na forum: http://www.przemo.org/phpBB2/ |
|
|
|
|
|
Warmix
Pomógł: 60 razy Posty: 328
|
Wysłany: 16-07-2012, 07:00
|
|
|
zaba1992, wykonaj te zapytania:
Kod: | ALTER TABLE phpbb_users ADD `prosby_twoje` INT(11) DEFAULT '0';
ALTER TABLE phpbb_users ADD `prosby_spel` INT(11) DEFAULT '0';
ALTER TABLE phpbb_users ADD `prosby_pkt` INT(11) DEFAULT '10'; |
|
|
|
|
|
zaba1992
Pomógł: 3 razy Posty: 524
|
Wysłany: 16-07-2012, 19:16
|
|
|
Działa dzięki. Ale teraz jak chcę zgłosić "Prośbę o nowe linki " w danym temacie to wywala mi białą strone i
Cytat: | Not Found
The requested URL /topics7/1074.htm&start=1 was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the reque |
|
|
|
|
|
Warmix
Pomógł: 60 razy Posty: 328
|
Wysłany: 17-07-2012, 14:13
|
|
|
Sprawdź, czy poprawnie wykonałeś instrukcję dotyczącą viewtopic.php
W razie czego, daj mi ten plik.
PS. Widzę, że modyfikacja już Ci działa, więc OK. |
|
|
|
|
Boltex
Pomógł: 475 razy Posty: 2239
|
Wysłany: 12-08-2012, 15:44
|
|
|
Warmix napisał/a: | PS. Widzę, że modyfikacja już Ci działa, więc OK. |
Wyłączył przepisywanie linków to mu działa. Ogólnie to gryzie się z Spider Friendly. |
|
|
|
|
Warmix
Pomógł: 60 razy Posty: 328
|
Wysłany: 12-08-2012, 16:03
|
|
|
Boltex napisał/a: | Wyłączył przepisywanie linków to mu działa. Ogólnie to gryzie się z Spider Friendly. |
Może pomyślę nad jakimś patchem, żeby z SF też działało. |
|
|
|
|
Boltex
Pomógł: 475 razy Posty: 2239
|
Wysłany: 12-08-2012, 16:53
|
|
|
Warmix, jeszcze jest błąd w filtrowaniu. Jak poproszę o dwa linki z jednego działu to w filtracji dział pokazywany jest 2x(Filmy, Filmy), a powinien raz. |
|
|
|
|
Warmix
Pomógł: 60 razy Posty: 328
|
Wysłany: 12-08-2012, 17:12
|
|
|
Boltex, ale modyfikacja działa na tematach nie działach... działy są tylko podane informacyjnie. |
|
|
|
|
Gadatliwa Kasia
|
|
|
|
Boltex
Pomógł: 475 razy Posty: 2239
|
Wysłany: 12-08-2012, 17:11
|
|
|
Warmix napisał/a: | Boltex, ale modyfikacja działa na tematach nie działach... działy są tylko podane informacyjnie. | W takim razie jak poproszę o 100 filmów(każdy inny) to będę miał 100x dział Film w filtracji. Trochę bez sensu. |
Ostatnio zmieniony przez Boltex 14-08-2012, 18:24, w całości zmieniany 1 raz |
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!
Powered by phpBB modified by Przemo © 2003 phpBB
| Strona wygenerowana w 0,11 sekundy. Zapytań do SQL: 16 | |
|
|