SimplePortal
Support => English Support => Topic started by: Kyba on August 22, 2015, 03:18:27 PM
-
Hi there!
The situation is the following.
There are the administrators, the global mods, the local mods. Now, I also created my own membergroup which called "Moderator". It is basically a Global moderator because that group has global moderating priviledges but not as many possiblities as the actual GMods. I have edited the admin, gmod and lmod pictures to the red, blue and green star representing the admins/global mods/local mods AND the "mods" in the Themes/mytheme/images/sp.
I as administrator have so the red star next to my name on the staff list.
If I set someone to be a global mod, they have a blue star next to to their names.
So far everything good!
But if I set someone as a "Moderator" -> my membergroup, so not a local moderator, they still have a blue star!
How can I edit the stuff so if someone has the membergoup "Moderator" (with the id: 15) they get the fancy green star next to their names on the staff list?
I assume it's somewhere in here:
<?php
function sp_staff($parameters, $id, $return_parameters = false)
{
global $smcFunc, $sourcedir, $scripturl, $modSettings, $color_profile;
$block_parameters = array(
'lmod' => 'check',
);
if ($return_parameters)
return $block_parameters;
require_once($sourcedir . '/Subs-Members.php');
if (empty($parameters['lmod']))
{
$request = $smcFunc['db_query']('', '
SELECT id_member
FROM {db_prefix}moderators AS mods',
array(
)
);
$local_mods = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
$local_mods[$row['id_member']] = $row['id_member'];
$smcFunc['db_free_result']($request);
if (count($local_mods) > 10)
$local_mods = array();
}
else
$local_mods = array();
$global_mods = membersAllowedTo('moderate_board', 0);
$admins = membersAllowedTo('admin_forum');
$all_staff = array_merge($local_mods, $global_mods, $admins);
$all_staff = array_unique($all_staff);
$request = $smcFunc['db_query']('', '
SELECT
m.id_member, m.real_name, m.avatar, mg.group_name,
a.id_attach, a.attachment_type, a.filename
FROM {db_prefix}members AS m
LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = m.id_member)
LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = CASE WHEN m.id_group = {int:reg_group_id} THEN m.id_post_group ELSE m.id_group END)
WHERE m.id_member IN ({array_int:staff_list})',
array(
'staff_list' => $all_staff,
'reg_group_id' => 0,
)
);
$staff_list = array();
$colorids = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$colorids[$row['id_member']] = $row['id_member'];
if ($modSettings['avatar_action_too_large'] == 'option_html_resize' || $modSettings['avatar_action_too_large'] == 'option_js_resize')
{
$avatar_width = !empty($modSettings['avatar_max_width_external']) ? ' width="' . $modSettings['avatar_max_width_external'] . '"' : '';
$avatar_height = !empty($modSettings['avatar_max_height_external']) ? ' height="' . $modSettings['avatar_max_height_external'] . '"' : '';
}
else
{
$avatar_width = '';
$avatar_height = '';
}
if (in_array($row['id_member'], $admins))
$row['type'] = 1;
elseif (in_array($row['id_member'], $global_mods))
$row['type'] = 2;
else
$row['type'] = 3;
$staff_list[$row['type'] . '-' . $row['id_member']] = array(
'id' => $row['id_member'],
'name' => $row['real_name'],
'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['real_name'] . '</a>',
'group' => $row['group_name'],
'type' => $row['type'],
'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'])
),
);
}
$smcFunc['db_free_result']($request);
ksort($staff_list);
$staff_count = count($staff_list);
$count = 0;
$icons = array(1 => 'admin', 'gmod', 'lmod');
if (!empty($colorids) && sp_loadColors($colorids) !== false)
{
foreach ($staff_list as $k => $p)
{
if (!empty($color_profile[$p['id']]['link']))
$staff_list[$k]['link'] = $color_profile[$p['id']]['link'];
}
}
echo '
<table class="sp_fullwidth">';
foreach ($staff_list as $staff)
echo '
<tr>
<td class="sp_staff sp_center">', !empty($staff['avatar']['href']) ? '
<a href="' . $scripturl . '?action=profile;u=' . $staff['id'] . '"><img src="' . $staff['avatar']['href'] . '" alt="' . $staff['name'] . '" width="40" /></a>' : '', '
</td>
<td class="sp_staff_info', $staff_count != ++$count ? ' sp_staff_divider' : '', '">
', sp_embed_image($icons[$staff['type']]), ' ', $staff['link'], '<br />
', $staff['group'], '
</td>
</tr>';
echo '
</table>';
}
?>
I thought the part
if (in_array($row['id_member'], $admins))
$row['type'] = 1;
elseif (in_array($row['id_member'], $global_mods))
$row['type'] = 2;
else
$row['type'] = 3;
might be it, as 1=membergroup id 1 - admins
2= membergroup id 2 - global mods
3 = membergroup id 3 - local mods
So I changed the "3" to "15" (my membergroup's id) but it didn't work :D
If it's unclear, please let me know.
Screenshot:
https://gyazo.com/5011ebbf4c2253a50b0f43809fd71dc0
Thank a lot,
Kyba
-
Do you still need help with this?
-
Yes! Please.
K
-
Alright I'm looking at the source file now.
These are how these two groups are determined:
$global_mods = membersAllowedTo('moderate_board', 0);
$admins = membersAllowedTo('admin_forum');
Since your custom group meets the criteria for $global_mods, it recognizes them as global moderators and gives you the blue star. The reason your edit to $row['type'] = 3 did not work was because it was passing at the second criteria before it even hits.
You can do this....
./Sources/PortalBlocks.php
Find:
$all_staff = array_merge($local_mods, $global_mods, $admins);
$all_staff = array_unique($all_staff);
$request = $smcFunc['db_query']('', '
SELECT
m.id_member, m.real_name, m.avatar, mg.group_name,
Replace with:
$all_staff = array_merge($local_mods, $global_mods, $admins);
$all_staff = array_unique($all_staff);
$request = $smcFunc['db_query']('', '
SELECT
m.id_member, m.real_name, m.avatar, m.id_group, mg.group_name,
Find:
$staff_list[$row['type'] . '-' . $row['id_member']] = array(
'id' => $row['id_member'],
'name' => $row['real_name'],
'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['real_name'] . '</a>',
'group' => $row['group_name'],
Replace with:
$staff_list[$row['type'] . '-' . $row['id_member']] = array(
'id' => $row['id_member'],
'name' => $row['real_name'],
'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['real_name'] . '</a>',
'group' => $row['group_name'],
'id_group' => $row['id_group'],
Find:
foreach ($staff_list as $staff)
echo '
<tr>
<td class="sp_staff sp_center">', !empty($staff['avatar']['href']) ? '
<a href="' . $scripturl . '?action=profile;u=' . $staff['id'] . '"><img src="' . $staff['avatar']['href'] . '" alt="' . $staff['name'] . '" width="40" /></a>' : '', '
</td>
<td class="sp_staff_info', $staff_count != ++$count ? ' sp_staff_divider' : '', '">
', sp_embed_image($icons[$staff['type']]), ' ', $staff['link'], '<br />
', $staff['group'], '
</td>
</tr>';
Replace with:
foreach ($staff_list as $staff)
echo '
<tr>
<td class="sp_staff sp_center">', !empty($staff['avatar']['href']) ? '
<a href="' . $scripturl . '?action=profile;u=' . $staff['id'] . '"><img src="' . $staff['avatar']['href'] . '" alt="' . $staff['name'] . '" width="40" /></a>' : '', '
</td>
<td class="sp_staff_info', $staff_count != ++$count ? ' sp_staff_divider' : '', '">
', $staff['id_group'] == 15 ? sp_embed_image($icons[3]) : sp_embed_image($icons[$staff['type']]) ' ', $staff['link'], '<br />
', $staff['group'], '
</td>
</tr>';
-
Was this solution enough? If so could you mark the topic as solved? o:
-
Last time he was active has been earlier than your code-reply, so I don't really know when he will login again, if at all (in which case I ask myself if users really need what they ask for).