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

Propozycje modyfikacji - [beta] USERCALL NOTIFY with userlinks 1.0 by MQs

MQs - 27-11-2012, 16:49
Temat postu: [beta] USERCALL NOTIFY with userlinks 1.0 by MQs
Miała być wersja finalna na mikołaja, ale będę zajęty i nie będę miał czasu na testy (i mniejsze dodatki), więc wrzucam teraz jako beta...

USERCALL NOTIFY with userlinks 1.0 by MQs

Kod:
#################################################################
# Nazwa: USERCALL NOTIFY with userlinks
# Autor: MQs
# ver. 1.0 (beta) 27/11/2012
# ------------------------------------------------------------------------------
#
# Opis: Nick użytkownika umieszczony pomiędzy gwiazdkami (np. *MQs*)
#       zostanie wyświetlony w poście jako link do profilu. (userlink)
#
#       Wysłanie postu zawierającego taki link powoduje jednoczesne
#       wysłanie "nagłówka" prywatnej wiadomości z zawiadomieniem
#       przywoływanego użytkownika w postaci linka do postu. (usercall)
#
# Poziom instalacji: N/A
# Czas instalacji:   N/A
#
# UWAGA: Pliki sa pogrupowane. Po instalacji każdej KOLEJNEJ grupy
#        modyfikacja będzie działać w ograniczonym zakresie.
#        (można instalować etapami)
#        NAJPIERW WYKONAJ ZAPYTANIA SQL!
#
# Pliki do edycji (22):
#
#    [UESRLINK]
#
# includes/bbcode.php
# posting.php
# viewtopic.php
# images/jsscipts.js
# templates/*/bbcode.tpl
#
#    [USERCALL]
#
# includes/functions_post.php
# includes/functions_add.php
# privmsg.php
# language/lang_polish/lang_main.php
# language/lang_english/lang_main.php
# templates/*/privmsgs_body.tpl
#
#    [USER PREFS & BOARD CONFIG]
#
# admin/admin_board.php
# admin/admin_users.php
# includes/usercp_register.php
# includes/usercp_avatar.php
# language/lang_polish/lang_profile.php
# language/lang_polish/lang_admin_board.php
# language/lang_english/lang_profile.php
# language/lang_english/lang_admin_board.php
# templates/*/admin/board_config_body.tpl
# templates/*/profile_add_body.tpl
# templates/*/admin/user_edit_body.tpl
#
#################################################################


Będę wdzięczny za testy i sugestie oraz wskazówki dalszej optymalizacji. W instrukcji też mogą być błędy (niechcący zmieniłem wszystko na małe litery w pewnym momencie :mrgreen: )

Zasady działania:
:arrow: Linki są widoczne dla zarejestrowanych użytkowników (goście/boty widzą pogrubiony tekst)
:arrow: Zamiana na linki następuje po znalezieniu użytkownika w bazie danych.(*nieistniejący_nick* lub *...tekst...* pozostanie w niezmienionej formie)
:arrow: Userlink w poście/bazie danych zapisany jest w postaci ukrytego tagu "user" z jego numerem id np:
Kod:
[user=125]nickname[/user]

:arrow: Wpisanie poprawnej składni ręcznie z niepoprawnym id zostanie zmienione na poprawny link
:arrow: Wpisanie poprawnej składni z nieistniejącym użytkownikiem (np. nickname) zostanie zmienione na *nickname*
:arrow: Nie wyśle powiadomienia użytkownikom w cytowanym tekście, mimo że wyświetli ich jako linki
:arrow: Powiadamia też autora cytatu (instalacja automatycznego dodawania linka opcjonalna) jeśli chcemy taki link dodać ręcznie to zapiszemy tag "quote" w postaci:
Kod:
[quote="*nick*"] ... [/quote]

:arrow: Nie wyśle żadnego powiadomienia jeśli post zawiera więcej niż 5 różnych nicków (limit moda=20, admin/jradmin=50) - antyflood.
:arrow: Nie wysyła powiadomień do postu, o którym powiadomienie znajduje się w skrzynce użytkownika (np. przy edycji postu)
:arrow: Nie wysyła powiadomień od ignorowanych użytkowników
:arrow: Jeśli użytkownik ma zablokowane wysyłanie PM to nie wysyła też powiadomień
:arrow: Powiadomienie wyświetla jako nieprzeczytane jeśli nie przeczytany jest linkowany w nim post
:arrow: Liczba powiadomień nie wlicza się do limitu pozostałych wiadomości (oddzielny limit)
:arrow: Jeżeli powiadomienie powoduje przekroczenie limitu (domyślnie 10, 30 mod, 60 admin) najstarsze jest usuwane.
:arrow: Nie wysyła powiadomień do tematów na forach, do których użytkownik nie ma dostępu


:idea: Update 1 (27/11/2012 17:53): Dodałem małą poprawkę - zmienione wyświetlanie userlinków w overlib tematu (includes/functions_add.php)
:idea: Update 2 (30/11/2012 0:38): Wyłączenie powiadomień do tematów z brakiem dostępu (includes/functions_add.php, includes/functions_post.php)

Do zrobienia:
- dodanie filtra wiadomości/powiadomień na liście
- optymalizacja wysyłania PW.
- kolorowanie nicków wg grup/rang w postach (?)

namelanzu - 15-01-2013, 12:15

Bardzo przydatne ! Jesteś wielki !;)
Aciel - 22-02-2013, 17:32

Kod:
# viewtopic.php ################################################################
#
#---{ ZNAJDŹ }------------------------------------------------------------------
# [autor cytatu jako userlink]

javascript:em(\'[b]' . str_replace("'", "\'", $poster_username) . '[/b], \')

#
#---{ zamień na }---------------------------------------------------------------
#

javascript:em(\'*' . str_replace("'", "\'", $poster_username) . '*, \')


Niestety w moim viewtopic.php , nie ma tej linijki. Da się jakoś rozwiązać mój problem?

czesio56560 - 22-02-2013, 17:37

Daj swój viewtopic.php
Aciel - 22-02-2013, 18:40

Proszę.
czesio56560 - 22-02-2013, 19:13

Wpisz poprawny adres forum w profilu.
MQs - 22-02-2013, 20:39

Aciel, Wygląda na to, że masz usuniętą funkcję, gdzie kliknięcie na nick autora posta powoduje wpisanie go do szybkiej odpowiedzi (zamiast tego ink do profilu?), albo masz to rozwiązane inaczej
Możesz pominąć ten krok.

Czaston - 23-03-2013, 10:29

A nie lepiej przywoływać użytkownika komendami @user lub "@user 2"? Takie właśnie jest zastosowanie w tym modzie do phpBB3.
MQs - 23-03-2013, 15:32

Nazwy userów mogą zawierać spacje oraz znak @ - ciężko wyłowić nicka bez unikalnych ograniczników (z dwóch stron). Oczywiście można to zrobić, ale skrypt będzie dużo bardziej męczył bazę o nieistniejące nicki (kolejne wyrazy lub części), czasem wykryje dwóch. np. (@Jan Kowalski i @Jan), a czasem nie wykryje istniejącego. Ewentualnie można wprowadzić to dla nowych forów i zastosować ograniczenia w zestawie znaków dostępnych w nazwie usera (najchętniej pozbył bym się spacji). Jeszcze inna możliwość to masowa zmiana spacji na podkreślenie.
Czaston - 21-04-2013, 23:09

Tyle, że wpisywanie tagów [user=id][/user] z konkretnym ID może stać się męczące i cała ta czynność będzie prowadziła tylko do odstawienia modyfikacji ze względu na swoją niepraktyczność.
Na małych/średnich forach każdy user przeważnie przegląda wszystkie tematy, w których pojawiły się nowe wpisy i nawet bez specjalnych modyfikacji zauważy, że post/temat dotyczy się jego osoby.
Trzeba pomyśleć nad innym rozwiązaniem, który nie będzie obciążał bazy i jednocześnie będzie dobry w obsłudze.

MQs - 21-04-2013, 23:25

Czaston napisał/a:
Tyle, że wpisywanie tagów [user=id][/user] z konkretnym ID może stać się męczące...
Przecież właśnie dlatego ten tag to tylko mechanizm, którego użytkownik nie widzi (przeczytaj dokładniej opis). Jest jedynie zapisywany w bazie na potrzeby dekodowania linka. Pisząc wiadomość wpisujesz jedynie *nick* a skrypt zamieni to sobie na tag (i z powrotem na gwiazdki w przypadku edycji/overliba).
Czaston - 24-04-2013, 14:00

Przepraszam, mój błąd. Nie do końca zrozumiałem to tagowanie.
Aciel - 31-05-2014, 13:36

Mam jakiś błąd.
Zapytania wykonane, wszystkie pliki edytowane.
Wyskakuje mi przy wejściu na forum:
Kod:
Could not obtain user information

DEBUG MODE

SQL Error : 1146 Table 'aniolowi_as.users_table' doesn't exist

SELECT user_id, username FROM users_table WHERE username IN ('')

Line : 958
File : bbcode.php


W załączniku wrzucam moje bbcode.php. Z góry dzięki za pomoc.

Woytec - 02-06-2014, 20:38

Sprawdź teraz
Aciel - 04-06-2014, 10:01

Niestety bez zmian.


Powered by phpBB modified by Przemo © 2003 phpBB Group