SimplePortal

Customization => Custom Coding => Topic started by: Tarista on October 30, 2014, 02:17:13 PM

Title: Random member block?
Post by: Tarista on October 30, 2014, 02:17:13 PM
Hello all  :nervous-happy:

I didn't want to post in a several years old topic (http://simpleportal.net/index.php?topic=563.msg9262#msg9262), but I've been using this code and want to know how to change it a bit if possible. First I wonder how to make it display two members instead of just one? Changing the LIMIT to 2 didn't seem to work, I assume it might have to do with it being random?

Also I wonder if I could use this to somehow exclude members who have zero posts. Maybe even exclude members who haven't logged on for a while?

So, to make it simple, these are the changes I'm trying to make:
* Display two members instead of one.
Changing LIMIT to "2" doesn't seem to work?
* Exclude members with zero post.
Adding "AND posts >= 1" to WHERE seems to work?
* Exclude member who haven't logged in for 30 days.

I would greatly appreciate any help with this. If [SiNaN] doesn't want this code changed for some reason I totally understand.

Thanks!

For SMF 2.x:

Code: [Select]
global $smcFunc, $scripturl, $memberContext, $color_profile, $txt;

loadLanguage('Profile');

// Ids of users to exclude. (2,3,4)
$exclude_members = array();

$request = $smcFunc['db_query']('', '
SELECT id_member
FROM {db_prefix}members
WHERE is_activated = {int:is_activated}' . (!empty($exclude_members) ? '
AND id_member NOT IN ({array_int:exclude_members})' : '') . '
ORDER BY RAND()
LIMIT 1',
array(
'is_activated' => 1,
'exclude_members' => $exclude_members,
)
);
list ($member) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);

if (empty($member))
return 'No members.';

loadMemberData($member);
loadMemberContext($member);

$member_info = $memberContext[$member];

if (empty($modSettings['MemberColorLinkInstalled']) && sp_loadColors($member) !== false)
$member_info['colored_link'] = '<strong><a href="' . $scripturl . '?action=profile;u=' . $member_info['id'] . '" title="' . $txt['profile_of'] . ' ' . $member_info['name'] . '">' . $color_profile[$member]['colored_name'] . '</a></strong>';

echo '
<div style="text-align: center; width: %99;">';

// Colored member link.
echo '
', $member_info['colored_link'], '<br />';

// Member title.
if (!empty($member_info['title']))
echo '
', $member_info['title'], '<br />';

// Member group.
if (!empty($member_info['group']))
echo '
', $member_info['group'], '<br />';
else
echo '
', $member_info['post_group'], '<br />';

// Group stars.
echo '
', $member_info['group_stars'], '<br />';

// Member avatar.
if (!empty($member_info['avatar']['image']))
echo '
<br />
', $member_info['avatar']['image'], '<br />';

// Personal text.
if (!empty($member_info['blurb']))
echo '
', $member_info['blurb'], '<br />';

// Online image.
echo '
<img src="', $member_info['online']['image_href'], '" alt="', $member_info['online']['text'], '" /> ', $member_info['online']['text'], '<br />';

// Gender name and image.
if (!empty($member_info['gender']['name']))
echo '
', $member_info['gender']['image'], ' ', $member_info['gender']['name'], '<br />';

echo '
<ul style="list-style-type: none; text-align: left; padding: 0px 0px 0px 5px;">';

// Post count.
echo '
<li><strong>', $txt['posts'], ':</strong> ', $member_info['posts'], '</li>';

// Location.
if (!empty($member_info['location']))
echo '
<li><strong>', $txt['location'], ':</strong> ', $member_info['location'], '</li>';

// Date registered.
echo '
<li><strong>', $txt['date_registered'], ':</strong> ', $member_info['registered'], '</li>';

// Last login.
echo '
<li><strong>', $txt['lastLoggedIn'], ':</strong> ', $member_info['last_login'], '</li>';

echo '
</ul>
</div>';

I've used seperate 'echo' for each data, so that you can move things as you wish.

Title: Re: Random member block?
Post by: ccbtimewiz on October 30, 2014, 07:57:59 PM
Code: [Select]
global $smcFunc, $scripturl, $memberContext, $color_profile, $txt;

loadLanguage('Profile');

// Ids of users to exclude. (2,3,4)
$exclude_members = array();

// We're going to store all the members here.
$members = array();

$request = $smcFunc['db_query']('', '
SELECT id_member, posts
FROM {db_prefix}members
WHERE is_activated = {int:is_activated}' . (!empty($exclude_members) ? '
AND id_member NOT IN ({array_int:exclude_members})' : '') . '
AND posts >= 1
ORDER BY RAND()
LIMIT 2',
array(
'is_activated' => 1,
'exclude_members' => $exclude_members,
)
);
$members = $smcFunc['db_fetch_assoc']($request);
$smcFunc['db_free_result']($request);

if (empty($members))
return 'No members.';

loadMemberData($members);
loadMemberContext($members);

foreach ($members as $member)
{
$member_info = $memberContext[$member['id_member']];

if (empty($modSettings['MemberColorLinkInstalled']) && sp_loadColors($member) !== false)
$member_info['colored_link'] = '<strong><a href="' . $scripturl . '?action=profile;u=' . $member_info['id'] . '" title="' . $txt['profile_of'] . ' ' . $member_info['name'] . '">' . $color_profile[$member]['colored_name'] . '</a></strong>';

echo '
<div style="text-align: center; width: %99;">';

// Colored member link.
echo '
', $member_info['colored_link'], '<br />';

// Member title.
if (!empty($member_info['title']))
echo '
', $member_info['title'], '<br />';

// Member group.
if (!empty($member_info['group']))
echo '
', $member_info['group'], '<br />';
else
echo '
', $member_info['post_group'], '<br />';

// Group stars.
echo '
', $member_info['group_stars'], '<br />';

// Member avatar.
if (!empty($member_info['avatar']['image']))
echo '
<br />
', $member_info['avatar']['image'], '<br />';

// Personal text.
if (!empty($member_info['blurb']))
echo '
', $member_info['blurb'], '<br />';

// Online image.
echo '
<img src="', $member_info['online']['image_href'], '" alt="', $member_info['online']['text'], '" /> ', $member_info['online']['text'], '<br />';

// Gender name and image.
if (!empty($member_info['gender']['name']))
echo '
', $member_info['gender']['image'], ' ', $member_info['gender']['name'], '<br />';

echo '
<ul style="list-style-type: none; text-align: left; padding: 0px 0px 0px 5px;">';

// Post count.
echo '
<li><strong>', $txt['posts'], ':</strong> ', $member_info['posts'], '</li>';

// Location.
if (!empty($member_info['location']))
echo '
<li><strong>', $txt['location'], ':</strong> ', $member_info['location'], '</li>';

// Date registered.
echo '
<li><strong>', $txt['date_registered'], ':</strong> ', $member_info['registered'], '</li>';

// Last login.
echo '
<li><strong>', $txt['lastLoggedIn'], ':</strong> ', $member_info['last_login'], '</li>';

echo '
</ul>
</div>';
}

I have not tested it, but I believe the adjustments I made will make it work by adjusting the LIMIT
Title: Re: Random member block?
Post by: Tarista on November 06, 2014, 07:14:35 AM
Thank you :) I'll give that a try.

Edit:  No :/ It seems to be an issue with it.
It just displays the name and not even the ID if i hover over the link. First time I got myself twice too, and then random members but still it doesn't display avatars and posts and that stuff.  Thanks for your effort though :) I really appreciate it :)
Title: Re: Random member block?
Post by: [SiNaN] on November 06, 2014, 10:51:49 AM
Fixed the code above a little bit:

Code: [Select]
global $smcFunc, $scripturl, $memberContext, $color_profile, $txt;

loadLanguage('Profile');

// Ids of users to exclude. (2,3,4)
$exclude_members = array();

// We're going to store all the members here.
$members = array();

$request = $smcFunc['db_query']('', '
SELECT id_member, posts
FROM {db_prefix}members
WHERE is_activated = {int:is_activated}' . (!empty($exclude_members) ? '
AND id_member NOT IN ({array_int:exclude_members})' : '') . '
AND posts >= 1
ORDER BY RAND()
LIMIT 2',
array(
'is_activated' => 1,
'exclude_members' => $exclude_members,
)
);
$members = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
$members[] = $row;
$smcFunc['db_free_result']($request);

if (empty($members))
return 'No members.';

foreach ($members as $member)
{
loadMemberData($member['id_member']);
loadMemberContext($member['id_member']);

$member_info = $memberContext[$member['id_member']];

if (empty($modSettings['MemberColorLinkInstalled']) && sp_loadColors($member) !== false)
$member_info['colored_link'] = '<strong><a href="' . $scripturl . '?action=profile;u=' . $member_info['id'] . '" title="' . $txt['profile_of'] . ' ' . $member_info['name'] . '">' . $color_profile[$member['id_member']]['colored_name'] . '</a></strong>';

echo '
<div style="text-align: center; width: %99;">';

// Colored member link.
echo '
', $member_info['colored_link'], '<br />';

// Member title.
if (!empty($member_info['title']))
echo '
', $member_info['title'], '<br />';

// Member group.
if (!empty($member_info['group']))
echo '
', $member_info['group'], '<br />';
else
echo '
', $member_info['post_group'], '<br />';

// Group stars.
echo '
', $member_info['group_stars'], '<br />';

// Member avatar.
if (!empty($member_info['avatar']['image']))
echo '
<br />
', $member_info['avatar']['image'], '<br />';

// Personal text.
if (!empty($member_info['blurb']))
echo '
', $member_info['blurb'], '<br />';

// Online image.
echo '
<img src="', $member_info['online']['image_href'], '" alt="', $member_info['online']['text'], '" /> ', $member_info['online']['text'], '<br />';

// Gender name and image.
if (!empty($member_info['gender']['name']))
echo '
', $member_info['gender']['image'], ' ', $member_info['gender']['name'], '<br />';

echo '
<ul style="list-style-type: none; text-align: left; padding: 0px 0px 0px 5px;">';

// Post count.
echo '
<li><strong>', $txt['posts'], ':</strong> ', $member_info['posts'], '</li>';

// Location.
if (!empty($member_info['location']))
echo '
<li><strong>', $txt['location'], ':</strong> ', $member_info['location'], '</li>';

// Date registered.
echo '
<li><strong>', $txt['date_registered'], ':</strong> ', $member_info['registered'], '</li>';

// Last login.
echo '
<li><strong>', $txt['lastLoggedIn'], ':</strong> ', $member_info['last_login'], '</li>';

echo '
</ul>
</div>';
}
Title: Re: Random member block?
Post by: Tarista on November 06, 2014, 10:57:29 AM
Thank you [SiNaN] for taking the time :)
That one unfortunately only displays one person for some reason though.
Title: Re: Random member block?
Post by: [SiNaN] on November 06, 2014, 02:01:01 PM
Sorry, I don't know what I was thinking at the time. The code above should be correct now, hopefully.
Title: Re: Random member block?
Post by: Tarista on November 06, 2014, 02:19:10 PM
No worries :) Thank you for taking the time, I'll give it a try in a minute :)

Edit: I added the code you gave me and that worked :) Thank you! ;D Also, I figured out how to add time like I wanted by looking at the code so I solved that on my own.
SimplePortal 2.3.8 © 2008-2024, SimplePortal