Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

prostats data

Błąd   Założony przez  musicfan.

Adres forum:
https://handsupowo.pl


Wersja silnika:
1.8.20


Opis problemu:
po migracji forum na inny serwer dedykowany pojawił się problem w statystkach prostats odnośnie daty
   
A na forum te tematy pokazują prawidłowa datę,?
@Supryk 
na forum data jest poprawna
Próbowałeś reinstalować wtyczkę? Dziwna sprawa
Odinstalowalem, zainstalowałem ponownie i dalej taki błąd
W ustawieniach pluginu chyba jest format daty, zmień go na

M-d, h:i
Na tym ustawieniu wyświetla miesiąc i dzień poprzedniego dnia (zamiast np yesterday) ale przynajmniej nie ma tych zer
Poprzednio miałem m-d, H:i

Ustawiłem na M-d, H:i (zamiast godzina 18 miałem 6)
Zauważyłem że każde 0 to 1 litera czyli ile liter w słowie yesterday tyle zer się tam pojawia
gdzies wyczytalem ze plugin pisany byl na wersje php 5.x a Ty masz pewnie nowsza wiec problemy beda
no tak, na chwilę obecną mam 7.0.33 bo przy nowszym jak bym chciał dać (7.1.33, 7.2.34 lub najnowszy 7.3.27) wyskakuje sporo błędów z inc/plugins/prostats.php (przy dezaktywacji pluginu nie ma błędów)
Ten błąd jest powodowany przez nieprawidłowe użycie funkcji daty przez autora pluginu. Próbował coś łatać aby przejść na datę generowaną funkcją MyBB, ale IMO przedobrzył :D


Tak na prawdę wystarczy wyedytować plik prostats.php i powywalać wszystkie zbędne linijki mające na celu zmianę daty na relatywną. Funkcja MyBB my_date() już to załatwia, a autor dodatkowo jeszcze sam próbuje coś kombinować i przez to się wszystko rozwala - być może jak wszystko jest w języku natywnym (en), to jego rozwiązanie działa, ale jak forum jest ustawione w innych językach, to już nie jest cacy.

Ja u siebie na forum problem rozwiązałem tak:

1). pobrałem tę wersję plugin-u: https://github.com/vintagedaddyo/MyBB_Plugin-Prostats (1.9.7.4).
2). wyedytowałem plik "inc/plugins/prostats.php" w zakresie poniżej:


od linii nr 1346, funkcja ps_GetNewestPosts():
///////////////////////////////////


if ($active_cells['Date'])
 {
     $isty = ps_GetTY($mybb->settings['ps_date_format_ty'], $newest_threads['lastpost'], $offset="", $ty=1);
     if ($isty)
     {
         // Relative Time:
         //if(TIME_NOW - $newest_threads['lastpost'] < 43200)
         //{
             $datetime = my_date('relative', $newest_threads['lastpost'], "", 1);
         //} else {
            //$dateformat = preg_replace('#'.$mybb->settings['ps_date_format_ty'].'#', "vvv", $dateformat);
            //$datetime = my_date($dateformat, $newest_threads['lastpost'], NULL, 1);
            //$datetime = my_date('relative', $newest_threads['lastpost'], "", 1);
            //$datetime = preg_replace('#vvv#', $isty, $datetime);
         //}
     } else {
         $datetime = my_date($dateformat, $newest_threads['lastpost'], NULL, 1);
     }
 }

/////////////////

U mnie działa OK. Nie wiem, jak to będzie na forach mniej ruchliwych, gdzie posty są publikowane dość rzadko i do statystyk wskoczą posty starsze niż 2 dni...

Napiszcie, jak u Was :)


Aha, używam PHP 7.4.
Odpal:
inc/plugins/prostats.php

Znajdz:
$datetime = preg_replace('#vvv#', $isty, $datetime);

Dodaj pod spodem:
$datetime = preg_replace('#000000000#', $isty, $datetime);

P.S Dla mnie to pomogło.



Użytkownicy przeglądający ten wątek:

1 gości