wersja skryptu MyBB: 1.8.3
adres forum:
na czym polega problem (screen, opis, komunikaty, nazwa i wersja wtyczki): Posiadam plugin TOPSTATS (wyświetla statystyki w panelu bocznym). Chce aby plugin wyświetlał czas spędzony na forum maksymalnie w dniach, bez ilości miesięcy.
Obecnie wygląda to tak:
Czas spędzony online: 1m-c, 6d, 23godz, 18min
A chce aby było:
Czas spędzony online: 37d, 23h, 18m
Pogrubione przedrostki chce też na taki sposób zamienić.
musisz sobie napisać funkcje w php która tak przetworzy czas, w starszych wersjach topstats masz gotowca, w tych nowszych wersjach wykorzystałem domyślne funkcje mybb
Czyli w starszej wersji wystarczy kod wziąć i podmienić do nowej?
Samemu funkcji nie napiszę bo się kompletnie na tym nie znam
Tam jest czas zwracany w sekundach, więc wystarczy się pobawić w dzielenie i resztę z niego.
Nie wiem czy dam radę to zrobić ale się okaże. Zajmę się tym później bo muszę opuścić hacjendę.
Niestety nie mam pojęcia jak to przekombinować. Ma ktoś pomysł jak to przerobić?
Tutaj masz funkcje. Dodaj ją do klasy pluginu (główny plik). Najbezpieczniej na końcu pliku przed ostatnim
Kod PHP:
/**
* Get friendly "during time"
*
* @param int $stamp Timestamp to calculate
* @return string WHERE statement
*/
private function getFriendlyTime($stamp = 0)
{
$nicetime = array();
$days = floor($stamp / 86400);
$stamp %= 86400;
$hours = floor($stamp / 3600);
$stamp %= 3600;
$minutes = floor($stamp / 60);
$stamp %= 60;
$seconds = $stamp;
if ($days == 1)
{
$nicetime['days'] = "1"."d";
}
else if ($days > 1)
{
$nicetime['days'] = $days."d";
}
if ($hours == 1)
{
$nicetime['hours'] = "1"."g";
}
else if ($hours > 1)
{
$nicetime['hours'] = $hours."g";
}
if ($minutes == 1)
{
$nicetime['minutes'] = "1"."m";
}
else if ($minutes > 1)
{
$nicetime['minutes'] = $minutes."m";
}
if ($seconds == 1)
{
$nicetime['seconds'] = "1"."s";
}
else if ($seconds > 1)
{
$nicetime['seconds'] = $seconds."s";
}
if (count($nicetime))
{
return implode(" ", $nicetime);
}
}
Znajdź linie ~505
Kod PHP:
$tpl['time'] = ($row['timeonline'] > 0) ? nice_time($row['timeonline'], array('years' => false, 'seconds' => false, 'short' => 1)) : $lang->none_registered;;
zamień na
Kod PHP:
$tpl['time'] = ($row['timeonline'] > 0) ? $this->getFriendlyTime($row['timeonline']) : $lang->none_registered;;
Wyśmienicie