collapse

* User Info

 
 
Welcome, Guest. Please login or register.
Did you miss your activation email?

* Who's Online

  • Dot Guests: 42
  • Dot Hidden: 0
  • Dot Users: 3
  • Dot Users Online:

* Shoutbox

Refresh History
  • Shoutbox is not for support!
  • rentner: sorry be wrong
    August 19, 2015, 07:56:53 am
  • rentner: beta 2.1
    August 19, 2015, 07:56:32 am
  • ♦ Ninja ZX-10RR ♦: Lol thanks for considering me that much
    August 15, 2015, 01:22:47 pm
  • David: Eliana!! WADDUP, GURL!!!  SiNaN... glad y'all are still around!
    August 15, 2015, 11:27:21 am
  • ♦ Ninja ZX-10RR ♦: Welcome back :)
    August 15, 2015, 11:24:52 am
  • David: I missed y'all!!
    August 15, 2015, 11:23:22 am
  • Eliana Tamerin: People with colored usernames are staff, please abide by their requests.
    August 13, 2015, 04:43:00 pm
  • ♦ Ninja ZX-10RR ♦: Once again, this topic is *NOT* for support, anyway. Thank you for your understanding.
    August 13, 2015, 03:37:51 pm
  • ♦ Ninja ZX-10RR ♦: Please refrain from using such language in the shoutbox. Also, try to read the documentation, it should tell you that and more. [link]
    August 13, 2015, 03:36:48 pm
  • psewolf: Where are the settings on the admin panel?
    August 13, 2015, 02:00:32 pm
  • psewolf: I'm not making a whole damn topic to ask where the settings are on the admin panel.
    August 13, 2015, 02:00:15 pm
  • ♦ Ninja ZX-10RR ♦: Please don't spam the shoutbox, post a topic instead. Thank you.
    August 13, 2015, 01:30:02 am
  • psewolf: Just installed SP, can't find the settings on smf anywhere
    August 12, 2015, 11:58:54 pm
  • ♦ Ninja ZX-10RR ♦: Hi dunpa, please post a topic if you need help. Thank you!
    August 08, 2015, 10:42:29 pm
  • * dunpa oops
    August 08, 2015, 10:06:04 pm
  • dunpa: /help
    August 08, 2015, 10:04:56 pm
  • ♦ Ninja ZX-10RR ♦: Por favor esta shoutbox no es para support ;)
    July 30, 2015, 01:02:07 am
  • Elliott: Sigo teniendo el mismo problema ayuda el ShoutBox de Simple Portal no se actualiza, escribo un mensaje y tengo que actualizar todo la pagina para que se actualice y vea el mensaje que escribi!
    July 29, 2015, 11:48:43 pm
  • sonkalem: Merhaba
    July 14, 2015, 02:27:54 pm
  • [SiNaN]: Hey! Glad to see that people find our little and simple mod useful. :)
    July 10, 2015, 08:38:39 am
NEED HELP? If you're looking for support with Simple Portal, look no further than the Support Board!

Author Topic: Block Help - Second Staff Block  (Read 1548 times)

0 Members and 1 Guest are viewing this topic.

Offline Kapwn

  • Newbie
  • Posts: 4
  • SMF Version: 2.0.2
  • SP Version: 2.3.5
Block Help - Second Staff Block
« on: February 01, 2013, 09:42:38 pm »
Hello, I'm trying to make a second staff block that is separate from the original and will show other member groups. So far I've added other groups to the block by adding a permission, however the administrator group is still on the list because it has the permission as well, which is the problem. I'm hoping someone can remove administrators from the block while still showing membergroups with the permission.

Code: [Select]
        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('spstaff_perm');

        $all_staff = array_merge($local_mods, $global_mods);
        $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'], $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>';

Thanks.

Offline Sayaka Maizono

  • Donator
  • *
  • Posts: 2087
  • Gender: Male
  • $("div.content:dd").hide();
  • SP Version: 2.3.6
Re: Block Help - Second Staff Block
« Reply #1 on: February 01, 2013, 10:17:28 pm »
In your code, can you find this:

Code: [Select]
$all_staff = array_unique($all_staff);
Then put this after it:

Code: [Select]
if ($context['user']['is_admin'])
{
    echo '<pre>';
    print_r($all_staff);
    echo '</pre>';
}

And then post what it shows?

Offline Kapwn

  • Newbie
  • Posts: 4
  • SMF Version: 2.0.2
  • SP Version: 2.3.5
Re: Block Help - Second Staff Block
« Reply #2 on: February 01, 2013, 10:33:30 pm »
Sorry, I'm new to this. Where is the echo that I should be posting? Also, I should have noted in the original topic that I'm doing this with a custom php block.

And is this how it's suppose to be added?
Code: [Select]
        $all_staff = array_unique($all_staff);
        if ($context['user']['is_admin'])
{
    echo '<pre>';
    print_r($all_staff);
    echo '</pre>';
}

Offline Sayaka Maizono

  • Donator
  • *
  • Posts: 2087
  • Gender: Male
  • $("div.content:dd").hide();
  • SP Version: 2.3.6
Re: Block Help - Second Staff Block
« Reply #3 on: February 01, 2013, 10:40:06 pm »
It should appear in the block, if not look in the HTML source of the page.

Yes, the edit looks fine.

Offline Kapwn

  • Newbie
  • Posts: 4
  • SMF Version: 2.0.2
  • SP Version: 2.3.5
Re: Block Help - Second Staff Block
« Reply #4 on: February 01, 2013, 10:56:26 pm »
Sorry, I still do not know what I am looking for.

Offline Sayaka Maizono

  • Donator
  • *
  • Posts: 2087
  • Gender: Male
  • $("div.content:dd").hide();
  • SP Version: 2.3.6
Re: Block Help - Second Staff Block
« Reply #5 on: February 01, 2013, 11:14:22 pm »
Create a new PHP block, as you are, and post the code with the edit I provided.

You should be presented with a large display of information that looks like

Array (
  [0] => stuff
  [1] => other stuff
)

This will help me identify what is being filled in that array at that given moment, letting me manipulate it afterwards to disclude the admin group.

Offline Kapwn

  • Newbie
  • Posts: 4
  • SMF Version: 2.0.2
  • SP Version: 2.3.5
Re: Block Help - Second Staff Block
« Reply #6 on: February 01, 2013, 11:31:36 pm »
Nothing appears on the block and I can't find anything in the HTML source page that looks like that.

Offline Chen Zhen

  • Support
  • *
  • Posts: 1103
  • Gender: Male
  • ベジータ王
    • WebDev
  • SMF Version: 2.0.9
  • SP Version: 2.3.6
Re: Block Help - Second Staff Block
« Reply #7 on: February 02, 2013, 02:40:38 pm »

Kapwn,
  Imo your code needs a revamp but to do what you request requires just one simple bit of mysql logic to add. Try this please:
Code: [Select]
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');
$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('spstaff_perm');
$all_staff = array_unique(array_merge($local_mods, $global_mods));
$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})
AND mg.id_group != 1', 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 = false;
$avatar_height = false;
}

if (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>';