SimplePortal

Customization => Blocks and Modifications => Block Requests => Topic started by: Kobar on March 16, 2011, 07:59:28 AM

Title: [SMF 2.0 RC5] Profile Statuses Block
Post by: Kobar on March 16, 2011, 07:59:28 AM
Hi there,

I need a block for ''The last 5 Profile statuses updates'' :)

See mod: http://custom.simplemachines.org/mods/index.php?mod=2888

I hope someone could make me happy :)
Title: Re: [SMF 2.0 RC5] Profile Statuses Block
Post by: grafitus on March 16, 2011, 01:23:38 PM
I think/hope this will work perfectly:
Code: [Select]
global $smcFunc, $scripturl;

$limit = 5;

$request = $smcFunc['db_query']('', '
SELECT ls.id_status, ls.id_member, mem.real_name, ls.post_date, ls.post, COUNT(lsr.*) AS num_replies
FROM {db_prefix}log_statuses AS ls
LEFT JOIN {db_prefix}log_status_replies AS lsr ON (ls.id_status = lsr.id_status)
INNER JOIN {db_prefix}members AS mem  ON (ls.id_member = mem.id_member)
ORDER BY {raw:sort}
LIMIT {int:limit}',
array(
'sort' => 'id_status DESC',
'limit' => $limit,
)
);
$statuses = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$statuses[] = array(
'id' => $row['id_status'],
'id_member' => $row['id_member'],
'poster' => '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['real_name'] . '</a>',
'time' => timeformat($row['post_date']),
'post' => parse_bbc($row['post']),
'num_replies' => comma_format($row['num_replies']),
);
}
$smcFunc['db_free_result']($request);

if (empty($statuses))
return;
else
$statuses[count($statuses) - 1]['is_last'] = true;

foreach ($statuses as $status)
echo '
', sp_embed_image('star'), '', $status['post'], '<span class="smalltext">', $txt['by'], ': ', $status['poster'], ' | ', $txt['posts'], ': ', $status['num_replies'], '</span><br />[', $item['time'], ']', empty($item['is_last']) ? '<hr />' : '';

Create a new PHP block, and, copy code to its body. ;)
Title: Re: [SMF 2.0 RC5] Profile Statuses Block
Post by: Kobar on March 16, 2011, 03:23:02 PM
I think/hope this will work perfectly:
Code: [Select]
global $smcFunc, $scripturl;

$limit = 5;

$request = $smcFunc['db_query']('', '
SELECT ls.id_status, ls.id_member, mem.real_name, ls.post_date, ls.post, COUNT(lsr.*) AS num_replies
FROM {db_prefix}log_statuses AS ls
LEFT JOIN {db_prefix}log_status_replies AS lsr ON (ls.id_status = lsr.id_status)
INNER JOIN {db_prefix}members AS mem  ON (ls.id_member = mem.id_member)
ORDER BY {raw:sort}
LIMIT {int:limit}',
array(
'sort' => 'id_status DESC',
'limit' => $limit,
)
);
$statuses = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$statuses[] = array(
'id' => $row['id_status'],
'id_member' => $row['id_member'],
'poster' => '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['real_name'] . '</a>',
'time' => timeformat($row['post_date']),
'post' => parse_bbc($row['post']),
'num_replies' => comma_format($row['num_replies']),
);
}
$smcFunc['db_free_result']($request);

if (empty($statuses))
return;
else
$statuses[count($statuses) - 1]['is_last'] = true;

foreach ($statuses as $status)
echo '
', sp_embed_image('star'), '', $status['post'], '<span class="smalltext">', $txt['by'], ': ', $status['poster'], ' | ', $txt['posts'], ': ', $status['num_replies'], '</span><br />[', $item['time'], ']', empty($item['is_last']) ? '<hr />' : '';

Create a new PHP block, and, copy code to its body. ;)

Thanks but it's not good. :)

Code: [Select]
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) AS num_replies
FROM smf_log_statuses AS ls
LEFT JOIN smf_log_statu' at line 1
Bestand: /var/www/vhosts/solar-xl.nl/httpdocs/forum/Sources/PortalBlocks.php(3351) : eval()'d code
Regel: 16
Title: Re: [SMF 2.0 RC5] Profile Statuses Block
Post by: Kobar on March 18, 2011, 06:02:39 PM
Something wrong with my database?
Title: Re: [SMF 2.0 RC5] Profile Statuses Block
Post by: grafitus on March 19, 2011, 08:05:33 AM
Code: [Select]
global $smcFunc, $scripturl, $txt;

$limit = 5;

$request = $smcFunc['db_query']('', '
SELECT ls.id_status, ls.id_member, mem.real_name, ls.post_date AS time, ls.post, ls.reply_count AS num_replies
FROM {db_prefix}log_statuses AS ls
INNER JOIN {db_prefix}members AS mem  ON (ls.id_member = mem.id_member)
ORDER BY {raw:sort}
LIMIT {int:limit}',
array(
'sort' => 'id_status DESC',
'limit' => $limit,
)
);
$statuses = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$statuses[] = array(
'id' => $row['id_status'],
'id_member' => $row['id_member'],
'poster' => '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['real_name'] . '</a>',
'time' => timeformat($row['time']),
'post' => parse_bbc($row['post']),
'num_replies' => comma_format($row['num_replies']),
);
}
$smcFunc['db_free_result']($request);

if (empty($statuses))
return;
else
$statuses[count($statuses) - 1]['is_last'] = true;

foreach ($statuses as $status)
echo
sp_embed_image('star'), ' <i>', $status['post'], '</i> <span class="smalltext">', $txt['by'], ': ', $status['poster'], ' | ', $txt['posts'], ': ', $status['num_replies'], '</span><br />[', $status['time'], ']', empty($status['is_last']) ? '<hr />' : '<br />';
Title: Re: [SMF 2.0 RC5] Profile Statuses Block
Post by: Kobar on March 19, 2011, 10:58:37 AM
It works thanks! :)

is it possible to customize it a bit like this:
(http://www.decashare.com/images/l68DaATGV-Untitled-6.jpg)

Also comptable with the member color link? :)
Title: Re: [SMF 2.0 RC5] Profile Statuses Block
Post by: grafitus on March 19, 2011, 01:04:01 PM
I think I'm in my good day. ;P
Code: [Select]
global $smcFunc, $modSettings, $scripturl, $txt, $color_profile;

$limit = 5;
$txt['comments'] = 'Comments';

$request = $smcFunc['db_query']('', '
SELECT ls.id_status, ls.id_member, mem.real_name, mem.avatar,
a.id_attach, a.attachment_type, a.filename,
ls.post_date AS time, ls.post, ls.reply_count AS num_replies
FROM {db_prefix}log_statuses AS ls
INNER JOIN {db_prefix}members AS mem  ON (ls.id_member = mem.id_member)
LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = mem.id_member)
ORDER BY {raw:sort}
LIMIT {int:limit}',
array(
'sort' => 'id_status DESC',
'limit' => $limit,
)
);
$statuses = array();
$colorids = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
{
if (!empty($row['id_member']))
$colorids[$row['id_member']] = $row['id_member'];

$statuses[] = array(
'id' => $row['id_status'],
'id_member' => $row['id_member'],
'member' => array(
'id' => $row['id_member'],
'name' => $row['real_name'],
'href' => $scripturl . '?action=profile;u=' . $row['id_member'],
'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['real_name'] . '</a>',
'avatar' => array(
'name' => $row['avatar'],
'image' => $row['avatar'] == '' ? ($row['id_attach'] > 0 ? '<img src="' . (empty($row['attachment_type']) ? $scripturl . '?action=dlattach;attach=' . $row['id_attach'] . ';type=avatar' : $modSettings['custom_avatar_url'] . '/' . $row['filename']) . '" alt="" class="avatar" border="0" />' : '') : (stristr($row['avatar'], 'http://') ? '<img src="' . $row['avatar'] . '"' . $avatar_width . $avatar_height . ' alt="" class="avatar" border="0" />' : '<img src="' . $modSettings['avatar_url'] . '/' . htmlspecialchars($row['avatar']) . '" alt="" class="avatar" border="0" />'),
'href' => $row['avatar'] == '' ? ($row['id_attach'] > 0 ? (empty($row['attachment_type']) ? $scripturl . '?action=dlattach;attach=' . $row['id_attach'] . ';type=avatar' : $modSettings['custom_avatar_url'] . '/' . $row['filename']) : '') : (stristr($row['avatar'], 'http://') ? $row['avatar'] : $modSettings['avatar_url'] . '/' . $row['avatar']),
'url' => $row['avatar'] == '' ? '' : (stristr($row['avatar'], 'http://') ? $row['avatar'] : $modSettings['avatar_url'] . '/' . $row['avatar'])
),
),
'time' => timeformat($row['time']),
'post' => parse_bbc($row['post']),
'num_replies' => comma_format($row['num_replies']),
);
}
$smcFunc['db_free_result']($request);

if (empty($statuses))
return;
else
$statuses[count($statuses) - 1]['is_last'] = true;

if (!empty($colorids) && sp_loadColors($colorids) !== false)
foreach ($statuses as $k => $status)
if (!empty($color_profile[$status['member']['id']]['link']))
$statuses[$k]['member']['link'] = $color_profile[$status['member']['id']]['link'];
echo '
<table class="sp_fullwidth">';
foreach ($statuses as $status)
echo '
<tr>
<td class="sp_top_poster sp_center">', !empty($status['member']['avatar']['href']) ? '
<img src="' . $status['member']['avatar']['href'] . '" alt="' . $status['member']['name'] . '" width="40" />' : '', '
</td>
<td>
', $status['post'], '<br />
', $txt['by'], ': ', $status['member']['link'], '<br />
', $txt['comments'], ': ', $status['num_replies'], '<br />
', $status['time'], (empty($status['is_last']) ? '<hr />' : ''), '
</td>
</tr>';
echo '
</table>';
Title: Re: [SMF 2.0 RC5] Profile Statuses Block
Post by: Kobar on March 19, 2011, 01:32:32 PM
You are the best!  :D

Thank u so much!
SimplePortal 2.3.8 © 2008-2024, SimplePortal