collapse

* User Info

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

* Who's Online

  • Dot Guests: 134
  • Dot Hidden: 0
  • Dot Users: 1
  • Dot Users Online:

* Shoutbox

Refresh History
  • Shoutbox is not for support!
  • Schnuffeltier: :D
    June 24, 2016, 05:22:34 am
  • Jade Elizabeth: SHOUTBOX IS FOR SHOUTING AAAAAAHHHHHHHHHHH!!
    June 24, 2016, 12:57:05 am
  • [DFg]DJF-1975: Thank you, SP!
    June 21, 2016, 01:35:09 pm
  • Skhilled: phpBB is a good product but has a steeper learning curve.
    June 21, 2016, 08:19:04 am
  • ♦ Ninja ZX-10RR ♦: Hmm, not so sure about it, Eliana: [link]
    May 05, 2016, 02:03:02 am
  • Eliana Tamerin: That may have faded away now, or gotten better. I hope so. I see a lot of happy phpBB users, so I have to imagine someone is having success.
    April 25, 2016, 12:48:06 am
  • Eliana Tamerin: @andy, the phpBB folks had (at one point, not sure how it is now) a specific set of rules you had to follow to get support. Anyone not found doing so would have their topic ignored.
    April 25, 2016, 12:47:40 am
  • andy: SP team is a breath of fresh air...
    April 24, 2016, 11:24:32 pm
  • andy: Yes they are difficult to deal with at SMF. I never experienced anybody like that at phpbb several years ago.
    April 24, 2016, 11:24:03 pm
  • D.Va: Their team is very antagonistic and I prefer this forum and this staff far more. So kudos to SP for doing it right.
    April 24, 2016, 09:18:21 pm
  • andy: When SMF went gold there was a lot of optimism about progress and talk of 3.0.  Five years on and that soulds like SF.
    April 24, 2016, 08:37:31 pm
  • andy: Just my frustration at the slow pace of SMF. I suppose we have an alternative now.
    April 24, 2016, 08:34:38 pm
  • Burke Knight: Andy, as long as the SMF team keeps like they are doing, there's always going to be bugs, mainly due to SMF issues, because the team can't get their stuff straight.
    April 24, 2016, 08:25:41 pm
  • andy: Found another bug in Simple Portal.... SMF 2
    April 21, 2016, 03:46:54 am
  • ♦ Ninja ZX-10RR ♦: I guess it's because it works perfectly then :P Glad you enjoy it!
    April 20, 2016, 08:10:13 am
  • [DFg]DJF-1975: I haven't been here in a long time. THANK YOU AGAIN for SP!
    April 20, 2016, 04:41:43 am
  • andy: my shoutbox is now working properly and users are happy...  :nervous-happy: but I'm now a minimalist SMF user - thats the way to go to avoid problems.
    April 19, 2016, 10:18:09 am
  • ♦ Ninja ZX-10RR ♦: Seeing your topic, after changing the database collation, it does :)
    April 16, 2016, 10:36:36 pm
  • ZJbrandon: oh, wow, wish my shoutbox worked. :-[
    April 14, 2016, 07:26:40 pm
  • ZJbrandon: hello, test?
    April 14, 2016, 07:26:15 pm

* Recent Posts

Re: Security Breach on Community Forums by Jade Elizabeth
[Yesterday at 10:01:50 pm]


Re: Button forum login page SMF 2.0.11 by emanuele
[Yesterday at 12:08:33 pm]


Re: Guests Only... by emanuele
[Yesterday at 12:02:47 pm]


Guests Only... by FrizzleFried
[Yesterday at 11:15:54 am]


Button forum login page SMF 2.0.11 by BELFA
[Yesterday at 10:26:55 am]

Welcome to SimplePortal.net! You can download SimplePortal from the Downloads Area!

Author Topic: Block Help - Second Staff Block  (Read 1823 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.

Online D.Va

  • Hero Member
  • *****
  • Posts: 2147
  • Gender: Male
  • $("div.content:dd").hide();
  • SMF Version: 2.0.11
  • SP Version: 2.3.6
  • Elkarte Version: None
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?
Previous names:
Sayaka Maizono, Classic Sonic, Rhode

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>';
}

Online D.Va

  • Hero Member
  • *****
  • Posts: 2147
  • Gender: Male
  • $("div.content:dd").hide();
  • SMF Version: 2.0.11
  • SP Version: 2.3.6
  • Elkarte Version: None
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.
Previous names:
Sayaka Maizono, Classic Sonic, Rhode

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.

Online D.Va

  • Hero Member
  • *****
  • Posts: 2147
  • Gender: Male
  • $("div.content:dd").hide();
  • SMF Version: 2.0.11
  • SP Version: 2.3.6
  • Elkarte Version: None
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.
Previous names:
Sayaka Maizono, Classic Sonic, Rhode

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

  • The Underdog
  • Support
  • *
  • Posts: 1208
  • Gender: Male
  • Can I borrow your underwear?
    • WebDev
  • SMF Version: 2.0.11
  • SP Version: 2.3.6
  • Elkarte Version: None
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>';