14.03.2016, 13:18
Hej!
Zastanawiam się nad przerobieniem pluginu TopStats, tak, aby największych posterów uwarunkować od ostatniego logowania. Forum jest dość stare, panowały inne zasady etc. i obecna topka posterów składa się z dawno nieaktywnych kont w większości.
To jest fragment pluginu odpowiadający za omawiany widget.
Pierwsza myśl była by kombinować w tym miejscu z dodaniem kolumny lastactive do zapytania mysql. Ogarnąć funkcję do pobrania obecnej daty w wymaganym formacie i napisać prosty warunek dla funkcji eval.
Problem w tym, że nie wiem czy ten pomysł jest dobry. Druga kwestia - znam tylko i wyłącznie podstawy języka, tak więc miałbym problem z stworzeniem funkcji do odczytu obecnego czasu.
Jakieś sugestie czy tok rozumowania jest dobry, a może ktoś się skusi dopomóc ?
Zastanawiam się nad przerobieniem pluginu TopStats, tak, aby największych posterów uwarunkować od ostatniego logowania. Forum jest dość stare, panowały inne zasady etc. i obecna topka posterów składa się z dawno nieaktywnych kont w większości.
Kod PHP:
global $db, $lang, $mybb, $templates, $theme, $topStats;
$tpl['ignore_groups'] = '';
if(!empty($mybb->settings['topStats_IgnoreGroups_Posters']))
{
$tpl['ignore_groups'] = " AND usergroup NOT IN ({$mybb->settings['topStats_IgnoreGroups_Posters']})";
}
$lang->topStats_topPosters = $lang->sprintf($lang->topStats_topPosters, (int)$this->getConfig('Limit_Posters'));
$tpl['row'] = '';
$sql = "SELECT username, usergroup, displaygroup, postnum, uid, avatar, avatardimensions
FROM ".TABLE_PREFIX."users
WHERE uid != '' ". $tpl['ignore_groups'] . "
ORDER BY postnum DESC
LIMIT ".(int)$this->getConfig('Limit_Posters')."";
$result = $db->query($sql);
while ($row = $db->fetch_array($result))
{
$tpl['username'] = format_name($row['username'], $row['usergroup'], $row['displaygroup']);
$tpl['profilelink'] = build_profile_link($tpl['username'], $row['uid']);
$tpl['postnum'] = my_number_format($row['postnum']);
$useravatar = format_avatar(htmlspecialchars_uni($row['avatar']), $row['avatardimensions'], my_strtolower($this->getConfig('AvatarWidth')));
(!$this->getConfig('Status_Avatar')) ? '' : eval("\$tpl['avatar'] = \"".$templates->get("topStats_PostersAvatar")."\";");
eval("\$tpl['row'] .= \"" . $templates->get("topStats_PostersRow") . "\";");
}
eval("\$topStats['Posters'] = \"" . $templates->get("topStats_Posters") . "\";");
To jest fragment pluginu odpowiadający za omawiany widget.
Pierwsza myśl była by kombinować w tym miejscu z dodaniem kolumny lastactive do zapytania mysql. Ogarnąć funkcję do pobrania obecnej daty w wymaganym formacie i napisać prosty warunek dla funkcji eval.
Problem w tym, że nie wiem czy ten pomysł jest dobry. Druga kwestia - znam tylko i wyłącznie podstawy języka, tak więc miałbym problem z stworzeniem funkcji do odczytu obecnego czasu.
Jakieś sugestie czy tok rozumowania jest dobry, a może ktoś się skusi dopomóc ?