SimplePortal

Customization => Custom Coding => Topic started by: bmac on November 16, 2008, 02:04:13 PM

Title: Top Poster This Week Block
Post by: bmac on November 16, 2008, 02:04:13 PM
Can someone please help me with a code for a custom block to show the top poster of the week. If possible it would be nice to have this configurable to show the top 5 or 10 posters from the last seven days.

I would also be interested in having a code for the Top Poster Today. Thanks for your help.

I have this installed on SMF 1.1.7

http://steelheadnotebook.net/forum/index.php (http://steelheadnotebook.net/forum/index.php)
Title: Re: Top Poster This Week Block
Post by: bmac on November 26, 2008, 05:26:06 PM
Anybody able to help me with this request?
Title: Re: Top Poster This Week Block
Post by: ccbtimewiz on November 26, 2008, 05:27:49 PM
Wouldn't the default top posters block do this for you?
Title: Re: Top Poster This Week Block
Post by: bmac on November 26, 2008, 08:33:50 PM
The default Top Posters is an all time count based on total posts. I am looking for a block that shows the Top Poster counting posts made during the previous Sunday - Saturday period only. I would also like to have a block for Top Poster Today, this would be for the current calendar day. If someone can point me to the right code to use I would appreciate it.

Actually, it would be even better just to have these as options under the Top Poster Block. You know, where you can select from a drop down menu the Top Poster for the Day, Week, Month, Year.
Title: Re: Top Poster This Week Block
Post by: hot rides on December 05, 2008, 11:07:47 AM
subscribed to se if anyone gets it before I can look into it
Title: Re: Top Poster This Week Block
Post by: techprince on December 05, 2008, 11:31:47 AM
Top Posters must have these parameters.
1) Today, Week, Month, Year.
2) Exclude MemberGroups, Member IDs.
Title: Re: Top Poster This Week Block
Post by: bmac on December 30, 2008, 11:48:42 AM
Bump,

Can Anybody help with this one?
Title: Re: Top Poster This Week Block
Post by: j1mmyj4m on January 15, 2009, 05:44:02 PM
I actually came to the forums looking for this specifically.  I'm not familiar with code yet, so any help in the right direction would be great.
Title: Re: Top Poster This Week Block
Post by: [SiNaN] on February 03, 2009, 06:47:00 AM
Top 10 Posters Today

SMF 1.x:

Code: [Select]
global $db_prefix, $scripturl, $context, $settings;

// Top 10 Posters so far today
// Change the time depending on server time offset
list($year, $month, $day) = explode('-', date('Y-m-d'));
    $starttime = mktime(0, 0, 0, $month, $day, $year);
// Offset based on forum time
$starttime = forum_time(false, $starttime);

$request = db_query("
SELECT me.ID_MEMBER, me.realName, COUNT(*) as count_posts
FROM {$db_prefix}messages AS m
LEFT JOIN {$db_prefix}members AS me ON (me.ID_MEMBER = m.ID_MEMBER)
WHERE m.posterTime > " . $starttime . "
AND m.ID_MEMBER != 0
GROUP BY me.ID_MEMBER
ORDER BY count_posts DESC
LIMIT 10", __FILE__, __LINE__);

$context['top_posters_day'] = array();
$max_num_posts = 1;
while ($row_members = mysql_fetch_assoc($request))
{
$context['top_posters_day'][] = array(
'name' => $row_members['realName'],
'id' => $row_members['ID_MEMBER'],
'num_posts' => $row_members['count_posts'],
'href' => $scripturl . '?action=profile;u=' . $row_members['ID_MEMBER'],
'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row_members['ID_MEMBER'] . '">' . $row_members['realName'] . '</a>'
);

if ($max_num_posts < $row_members['count_posts'])
$max_num_posts = $row_members['count_posts'];
}
mysql_free_result($request);

foreach ($context['top_posters_day'] as $i => $j)
$context['top_posters_day'][$i]['post_percent'] = round(($j['num_posts'] * 100) / $max_num_posts);

// Tidy up
unset($max_num_posts, $row_members, $j, $i);

echo '
<table border="0" cellpadding="1" cellspacing="0" width="100%">
<tr>
<th>Member</td>
<th colspan="2" style="text-align: right;">Posts</td>
</tr>';

foreach ($context['top_posters_day'] as $poster)
echo '
<tr>
<td width="60%" valign="top">', $poster['link'], '</td>
<td width="20%" align="left" valign="top">', $poster['num_posts'] > 0 ? '<img src="' . $settings['images_url'] . '/bar.gif" width="' . $poster['post_percent'] . '" height="15" alt="" />' : '&nbsp;', '</td>
<td width="20%" align="right" valign="top">', $poster['num_posts'], '</td>
</tr>';
echo '
</table>';

Top 10 Posters This Week

SMF 1.x:

Code: [Select]
global $db_prefix, $scripturl, $context, $settings;

// Top 10 Posters so far this week  (starts sunday)
$starttime = mktime(0, 0, 0, date("n"), date("j"), date("Y")) - (date("N")*3600*24);
// Offset based on forum time
$starttime = forum_time(false, $starttime);

$request = db_query("
SELECT me.ID_MEMBER, me.realName, COUNT(*) as count_posts
FROM {$db_prefix}messages AS m
LEFT JOIN {$db_prefix}members AS me ON (me.ID_MEMBER = m.ID_MEMBER)
WHERE m.posterTime > " . $starttime . "
AND m.ID_MEMBER != 0
GROUP BY me.ID_MEMBER
ORDER BY count_posts DESC
LIMIT 10", __FILE__, __LINE__);

$context['top_posters_week'] = array();
$max_num_posts = 1;
while ($row_members = mysql_fetch_assoc($request))
{
$context['top_posters_week'][] = array(
'name' => $row_members['realName'],
'id' => $row_members['ID_MEMBER'],
'num_posts' => $row_members['count_posts'],
'href' => $scripturl . '?action=profile;u=' . $row_members['ID_MEMBER'],
'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row_members['ID_MEMBER'] . '">' . $row_members['realName'] . '</a>'
);

if ($max_num_posts < $row_members['count_posts'])
$max_num_posts = $row_members['count_posts'];
}
mysql_free_result($request);

foreach ($context['top_posters_week'] as $i => $j)
$context['top_posters_week'][$i]['post_percent'] = round(($j['num_posts'] * 100) / $max_num_posts);

// Tidy up
unset($max_num_posts, $row_members, $j, $i);

echo '
<table border="0" cellpadding="1" cellspacing="0" width="100%">
<tr>
<th>Member</td>
<th colspan="2" style="text-align: right;">Posts</td>
</tr>';

foreach ($context['top_posters_week'] as $poster)
echo '
<tr>
<td width="60%" valign="top">', $poster['link'], '</td>
<td width="20%" align="left" valign="top">', $poster['num_posts'] > 0 ? '<img src="' . $settings['images_url'] . '/bar.gif" width="' . $poster['post_percent'] . '" height="15" alt="" />' : '&nbsp;', '</td>
<td width="20%" align="right" valign="top">', $poster['num_posts'], '</td>
</tr>';
echo '
</table>';
Title: Re: Top Poster This Week Block
Post by: [SiNaN] on February 03, 2009, 06:51:21 AM
Top 10 Posters Today

SMF 2.x:

Code: [Select]
global $smcFunc, $scripturl, $context, $settings;

// Top 10 Posters so far today
// Change the time depending on server time offset
list($year, $month, $day) = explode('-', date('Y-m-d'));
    $starttime = mktime(0, 0, 0, $month, $day, $year);
// Offset based on forum time
$starttime = forum_time(false, $starttime);

$request = $smcFunc['db_query']('', '
SELECT me.id_member, me.real_name, COUNT(*) as count_posts
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}members AS me ON (me.id_member = m.id_member)
WHERE m.poster_time > {int:start_time}
AND m.id_member != 0
GROUP BY me.id_member
ORDER BY count_posts DESC
LIMIT 10',
array(
'start_time' => $starttime,
)
);

$context['top_posters_day'] = array();
$max_num_posts = 1;
while ($row_members = $smcFunc['db_fetch_assoc']($request))
{
$context['top_posters_day'][] = array(
'name' => $row_members['real_name'],
'id' => $row_members['id_member'],
'num_posts' => $row_members['count_posts'],
'href' => $scripturl . '?action=profile;u=' . $row_members['id_member'],
'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row_members['id_member'] . '">' . $row_members['real_name'] . '</a>'
);

if ($max_num_posts < $row_members['count_posts'])
$max_num_posts = $row_members['count_posts'];
}
$smcFunc['db_free_result']($request);

foreach ($context['top_posters_day'] as $i => $j)
$context['top_posters_day'][$i]['post_percent'] = round(($j['num_posts'] * 100) / $max_num_posts);

// Tidy up
unset($max_num_posts, $row_members, $j, $i);

echo '
<table border="0" cellpadding="1" cellspacing="0" width="100%">
<tr>
<th>Member</td>
<th colspan="2" style="text-align: right;">Posts</td>
</tr>';

foreach ($context['top_posters_day'] as $poster)
echo '
<tr>
<td width="60%" valign="top">', $poster['link'], '</td>
<td width="20%" align="left" valign="top">', $poster['num_posts'] > 0 ? '<img src="' . $settings['images_url'] . '/bar.gif" width="' . $poster['post_percent'] . '" height="15" alt="" />' : '&nbsp;', '</td>
<td width="20%" align="right" valign="top">', $poster['num_posts'], '</td>
</tr>';
echo '
</table>';

Top 10 Posters This Week

SMF 2.x:

Code: [Select]
global $smcFunc, $scripturl, $context, $settings;

// Top 10 Posters so far this week  (starts sunday)
$starttime = mktime(0, 0, 0, date("n"), date("j"), date("Y")) - (date("N")*3600*24);
// Offset based on forum time
$starttime = forum_time(false, $starttime);

$request = $smcFunc['db_query']('', '
SELECT me.id_member, me.real_name, COUNT(*) as count_posts
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}members AS me ON (me.id_member = m.id_member)
WHERE m.poster_time > {int:start_time}
AND m.id_member != 0
GROUP BY me.id_member
ORDER BY count_posts DESC
LIMIT 10',
array(
'start_time' => $starttime,
)
);

$context['top_posters_week'] = array();
$max_num_posts = 1;
while ($row_members = $smcFunc['db_fetch_assoc']($request))
{
$context['top_posters_week'][] = array(
'name' => $row_members['real_name'],
'id' => $row_members['id_member'],
'num_posts' => $row_members['count_posts'],
'href' => $scripturl . '?action=profile;u=' . $row_members['id_member'],
'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row_members['id_member'] . '">' . $row_members['real_name'] . '</a>'
);

if ($max_num_posts < $row_members['count_posts'])
$max_num_posts = $row_members['count_posts'];
}
$smcFunc['db_free_result']($request);

foreach ($context['top_posters_week'] as $i => $j)
$context['top_posters_week'][$i]['post_percent'] = round(($j['num_posts'] * 100) / $max_num_posts);

// Tidy up
unset($max_num_posts, $row_members, $j, $i);

echo '
<table border="0" cellpadding="1" cellspacing="0" width="100%">
<tr>
<th>Member</td>
<th colspan="2" style="text-align: right;">Posts</td>
</tr>';

foreach ($context['top_posters_week'] as $poster)
echo '
<tr>
<td width="60%" valign="top">', $poster['link'], '</td>
<td width="20%" align="left" valign="top">', $poster['num_posts'] > 0 ? '<img src="' . $settings['images_url'] . '/bar.gif" width="' . $poster['post_percent'] . '" height="15" alt="" />' : '&nbsp;', '</td>
<td width="20%" align="right" valign="top">', $poster['num_posts'], '</td>
</tr>';
echo '
</table>';
Title: Re: Top Poster This Week Block
Post by: Divecall on November 26, 2009, 06:51:52 PM
Hello !

Is something new here ? Because i use SMF 2 RC2 with (the great) SP 2.3.1 and i use booth codes from the last Post.
But booth parts (Week and today) show only the top Poster of the Day.

Please, can somebody help me, because i like this kind of view without Avatars.

Thank you !
Title: Re: Top Poster This Week Block
Post by: Divecall on November 28, 2009, 06:13:37 PM
Uppss...

Looks like a generally problem in my forum, because the original "top poster" block (setting to: weekly) resets the counting too, at the end of the day.

have somebody the same problem ? any solutions or ideas ?
Title: Re: Top Poster This Week Block
Post by: Divecall on December 06, 2009, 07:18:35 PM
[push]

nobody an idea ?
SimplePortal 2.3.8 © 2008-2024, SimplePortal