XiZa
07-07-2008, 10:00 PM
Hello,
I've made a code modification to hide invite only social groups from the group.php page (including search). If you are an admin, you will still see those groups listed even if you are not a member of them.
Anyway so this hack does the following:
- Removes all invite only social groups from the group list page.
- Shows an error when you try to access the group by URL if you're not a member or not invited.
Same for picture page, etc.
I just made this today and it seems like it works, but please for now test it locally first!
I didn't make a plugin since there don't seem to be hooks in the locations that I need.
Instructions:
Download the new group.php and replace your old one. Alternatively, find all the sections labeled //WESLEY mod and do the replacements manually.
UPDATE:
I also added two other replacement files, you can either just download them or follow along here to do the updates yourself..
To also remove the invitation only social groups from the list on the profile page, open includes/class_profileblock.php and go to line 1130 or so.
Remove this:
/*
$socialgroups = $this->registry->db->query_read_slave("
SELECT socialgroup.*
FROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember
INNER JOIN " . TABLE_PREFIX . "socialgroup AS socialgroup ON
(socialgroup.groupid = socialgroupmember.groupid)
WHERE
socialgroupmember.userid = " . $this->profile->userinfo['userid'] . "
AND socialgroupmember.type = 'member'
ORDER BY socialgroup.name
");
*/
//REMOVED BY WESLEY
Replace by this
//changed by wesley
$sql = "SELECT socialgroup.*
FROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember
INNER JOIN " . TABLE_PREFIX . "socialgroup AS socialgroup ON
(socialgroup.groupid = socialgroupmember.groupid)
WHERE
socialgroupmember.userid = " . $this->profile->userinfo['userid'] . "
AND socialgroupmember.type = 'member' " .
(!can_moderate(0, 'caneditsocialgroups') ? " AND socialgroup.type != 'inviteonly'" : "") . "
ORDER BY socialgroup.name";
$socialgroups = $this->registry->db->query_read_slave($sql);
//changed by wesley
Lastly, if you do not want to show a link to the social group from the last activity bit ("Viewing social group: link") open includes/functions_online.php
Go to line 2182
Change
WHERE groupid IN (0$socialgroupids)
to
WHERE groupid IN (0$socialgroupids) AND type != 'inviteonly'
If the group is invite only it will now just display "Viewing social group".
I've made a code modification to hide invite only social groups from the group.php page (including search). If you are an admin, you will still see those groups listed even if you are not a member of them.
Anyway so this hack does the following:
- Removes all invite only social groups from the group list page.
- Shows an error when you try to access the group by URL if you're not a member or not invited.
Same for picture page, etc.
I just made this today and it seems like it works, but please for now test it locally first!
I didn't make a plugin since there don't seem to be hooks in the locations that I need.
Instructions:
Download the new group.php and replace your old one. Alternatively, find all the sections labeled //WESLEY mod and do the replacements manually.
UPDATE:
I also added two other replacement files, you can either just download them or follow along here to do the updates yourself..
To also remove the invitation only social groups from the list on the profile page, open includes/class_profileblock.php and go to line 1130 or so.
Remove this:
/*
$socialgroups = $this->registry->db->query_read_slave("
SELECT socialgroup.*
FROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember
INNER JOIN " . TABLE_PREFIX . "socialgroup AS socialgroup ON
(socialgroup.groupid = socialgroupmember.groupid)
WHERE
socialgroupmember.userid = " . $this->profile->userinfo['userid'] . "
AND socialgroupmember.type = 'member'
ORDER BY socialgroup.name
");
*/
//REMOVED BY WESLEY
Replace by this
//changed by wesley
$sql = "SELECT socialgroup.*
FROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember
INNER JOIN " . TABLE_PREFIX . "socialgroup AS socialgroup ON
(socialgroup.groupid = socialgroupmember.groupid)
WHERE
socialgroupmember.userid = " . $this->profile->userinfo['userid'] . "
AND socialgroupmember.type = 'member' " .
(!can_moderate(0, 'caneditsocialgroups') ? " AND socialgroup.type != 'inviteonly'" : "") . "
ORDER BY socialgroup.name";
$socialgroups = $this->registry->db->query_read_slave($sql);
//changed by wesley
Lastly, if you do not want to show a link to the social group from the last activity bit ("Viewing social group: link") open includes/functions_online.php
Go to line 2182
Change
WHERE groupid IN (0$socialgroupids)
to
WHERE groupid IN (0$socialgroupids) AND type != 'inviteonly'
If the group is invite only it will now just display "Viewing social group".