Czy jest możliwe / istnieje modyfikacja umożliwiająca ukrycie członków dla wybranych grup społecznościowych?
Bo jak na razie nic nie znalazłem, ale może się ktoś spotkał z takim "ficzurem".
Wersja do druku
Czy jest możliwe / istnieje modyfikacja umożliwiająca ukrycie członków dla wybranych grup społecznościowych?
Bo jak na razie nic nie znalazłem, ale może się ktoś spotkał z takim "ficzurem".
Odpowiedzi na większość pytań można znaleźć na forum vBulletin.org. Warto i tam zaglądać...
Zobacz tutaj: Hide members of a private social group - vBulletin.org Forum
Ale ja tam zaglądam i to bardzo często :)
Modyfikacja zaproponowana przez john102774 nic nie daje bo wywala po prostu spis członków grup w dwóch szablonach. A ja bym chciał mieć taką możliwość dla wybranych grup, dodatkowo trzeba by jeszcze kastrować szablon profilu użytkownika, bo tam też pokazują się grupy usera. I pewnie gdzieś jeszcze o czym na razie nie wiem. W tej chwili znalazłem możliwość odnalezienia członków grupy w: stronie grupy, pod linkiem pokaż wszystkich w grupie i w profilu użytkownika. Prosta pętla if w 2 plikach vbulletinu, pozwala mi wyłączyć pokazywanie grup stworzonych w określonej kategorii. Opublikuje tutaj te zmiany jak będę ich pewien. I pytanie czy 3.8.x pokazuje gdzieś jeszcze członków grupy, lub do jakich grup należy member?
No to jedziemy ;)
Tworzymy nową kategorię, lub używamy starej. Sprawdzamy jej numer cat, np kikając na spis grup w kategorii i wyciągając jej numer z linka parametr "cat".
Aby ukryć ilość osób w grupie
includes/function_socialgrup.php
szukamy:
zamieniamy naKod php:
$group['members'] = vb_number_format($group['members']);
Gdzie A to numer kategorii która ma nie pokazywać ilości userów, a X to tekst zamiast całkowitej liczby userów, nie musi to być liczba.Kod php:
if ($group['socialgroupcategoryid'] == A) {
$group['members'] = 'X';
}
else
{
$group['members'] = vb_number_format($group['members']);
}
Teraz chowanie samego składu osobowego
groups.php
naKod php:
$groupmemberids = $vbulletin->db->query_read_slave("
SELECT userfield.*, usertextfield.*, user.*, UNIX_TIMESTAMP(passworddate) AS passworddate,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
" . ($vbulletin->options['avatarenabled'] ? ', avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width_thumb AS avwidth_thumb, customavatar.height_thumb AS avheight_thumb, customavatar.width as avwidth, customavatar.height as avheight, customavatar.filedata_thumb' : '') .
', customprofilepic.userid AS profilepic, customprofilepic.dateline AS profilepicdateline, customprofilepic.width AS ppwidth, customprofilepic.height AS ppheight' .
", user.icq AS icq, user.aim AS aim, user.yahoo AS yahoo, user.msn AS msn, user.skype AS skype
FROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember
INNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = socialgroupmember.userid)
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (user.userid = userfield.userid)
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)
" . ($vbulletin->options['avatarenabled'] ? "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON (avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON (customavatar.userid = user.userid) " : '') .
"LEFT JOIN " . TABLE_PREFIX . "customprofilepic AS customprofilepic ON (user.userid = customprofilepic.userid) " .
"WHERE socialgroupmember.groupid = " . $group['groupid'] . " AND socialgroupmember.type = 'member'
ORDER BY user.lastactivity DESC
LIMIT 20
");
$members_shown = $vbulletin->db->num_rows($groupmemberids);
iKod php:
if ($group['socialgroupcategoryid'] == A) {$vbulletin->db->free_result($groupmemberids); $members_shown = '0'; $totalmembers = '0';
}
else
{
$groupmemberids = $vbulletin->db->query_read_slave("
SELECT userfield.*, usertextfield.*, user.*, UNIX_TIMESTAMP(passworddate) AS passworddate,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
" . ($vbulletin->options['avatarenabled'] ? ', avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width_thumb AS avwidth_thumb, customavatar.height_thumb AS avheight_thumb, customavatar.width as avwidth, customavatar.height as avheight, customavatar.filedata_thumb' : '') .
', customprofilepic.userid AS profilepic, customprofilepic.dateline AS profilepicdateline, customprofilepic.width AS ppwidth, customprofilepic.height AS ppheight' .
", user.icq AS icq, user.aim AS aim, user.yahoo AS yahoo, user.msn AS msn, user.skype AS skype
FROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember
INNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = socialgroupmember.userid)
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (user.userid = userfield.userid)
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)
" . ($vbulletin->options['avatarenabled'] ? "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON (avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON (customavatar.userid = user.userid) " : '') .
"LEFT JOIN " . TABLE_PREFIX . "customprofilepic AS customprofilepic ON (user.userid = customprofilepic.userid) " .
"WHERE socialgroupmember.groupid = " . $group['groupid'] . " AND socialgroupmember.type = 'member'
ORDER BY user.lastactivity DESC
LIMIT 20
");
$members_shown = $vbulletin->db->num_rows($groupmemberids);
}
naKod php:
$groupmembers = $vbulletin->db->query_read_slave("
SELECT userfield.*, usertextfield.*, user.*, UNIX_TIMESTAMP(passworddate) AS passworddate,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible,
" . ($vbulletin->options['avatarenabled'] ? 'avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width AS avwidth, customavatar.height AS avheight,' : '') . "
customprofilepic.userid AS profilepic, customprofilepic.dateline AS profilepicdateline, customprofilepic.width AS ppwidth, customprofilepic.height AS ppheight,
user.icq AS icq, user.aim AS aim, user.yahoo AS yahoo, user.msn AS msn, user.skype AS skype
FROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember
INNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = socialgroupmember.userid)
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (user.userid = userfield.userid)
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)
" . ($vbulletin->options['avatarenabled'] ? "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON (avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON (customavatar.userid = user.userid) " : '') . "
LEFT JOIN " . TABLE_PREFIX . "customprofilepic AS customprofilepic ON (user.userid = customprofilepic.userid)
WHERE socialgroupmember.groupid = " . $vbulletin->GPC['groupid'] . " AND socialgroupmember.type = 'member'
ORDER BY user.username
LIMIT " . (($pagenumber - 1) * $perpage) . ", $perpage
");
require_once(DIR . '/includes/functions_bigthree.php');
gdzie znów w pierwszych linijkach we frazie $group['socialgroupcategoryid'] == A, A to numer kategorii w której chowamy użytkowników grupyKod php:
if ($group['socialgroupcategoryid'] == A) {$vbulletin->db->free_result($groupmemberids); }
else
{
$groupmembers = $vbulletin->db->query_read_slave("
SELECT userfield.*, usertextfield.*, user.*, UNIX_TIMESTAMP(passworddate) AS passworddate,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible,
" . ($vbulletin->options['avatarenabled'] ? 'avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width AS avwidth, customavatar.height AS avheight,' : '') . "
customprofilepic.userid AS profilepic, customprofilepic.dateline AS profilepicdateline, customprofilepic.width AS ppwidth, customprofilepic.height AS ppheight,
user.icq AS icq, user.aim AS aim, user.yahoo AS yahoo, user.msn AS msn, user.skype AS skype
FROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember
INNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = socialgroupmember.userid)
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (user.userid = userfield.userid)
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)
" . ($vbulletin->options['avatarenabled'] ? "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON (avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON (customavatar.userid = user.userid) " : '') . "
LEFT JOIN " . TABLE_PREFIX . "customprofilepic AS customprofilepic ON (user.userid = customprofilepic.userid)
WHERE socialgroupmember.groupid = " . $vbulletin->GPC['groupid'] . " AND socialgroupmember.type = 'member'
ORDER BY user.username
LIMIT " . (($pagenumber - 1) * $perpage) . ", $perpage
");
require_once(DIR . '/includes/functions_bigthree.php');
}
i w
includes/class_profileblock.php
Aby nie pokazywać grupy w profilu usera
naKod php:
AND socialgroupmember.type = 'member'
Gdzie znów A to numer grupy ukrywanej.Kod php:
AND socialgroupmember.type = 'member'
AND socialgroup.socialgroupcategoryid <> 'A'
I mamy kategorię w której nikt nie wie kto się znajduje oraz jaką ma liczebność.
Ciekawa modyfikacja, ale bazuje ona na głębokich zmianach w oryginalnych plikach skryptu które podczas każdej aktualizacji będzie trzeba ponownie edytować. Z tego też względu ja osobiście nie stosuję. Wolę zdecydowanie wtyczki które w każdej chwili można odinstalować szybko i przyjemnie.
Powyższy problem w tym wypadku może nie być tak uciążliwy ponieważ modyfikacja dotyczy starej wersji vBulletin, która być może nie będzie już aktualizowana, ale warto pomyśleć o przygotowaniu wtyczki o podobnych możliwościach.
Fakt to 3.8.3, bo już nie aktualizowałem go właśnie ze względu na głębokie modyfikacje w kodzie, które ze względu na specyfikę jednego z for były wymagane. Poza 2 manualnymi diffami w paczach security.
VB 4.0 to porażka w mojej ocenie.
Co do uciążliwości to tak naprawdę dodanie 5 linijek kodu w 3 plikach :)
Wtyczek nie umiem, tworzyć, tzn może umiem, ale nigdy nie zagłębiałem się w tematykę tworzenia pluginów do vb. Jakieś sensowne tutoriale znacie?
Jest dużo w tym prawdy, ale wersja 3.8.x nie jest już rozwijana, a więc i podatna na włamania.
Tutaj pięć, w innej (np GG) z 15 i jeszcze w paru innych kilkadziesiąt, więc może się tego nazbierać że przy aktualizacji staje się już dużym problemem. Już przerabiałem tego typu sprawy i nikomu nie polecam.
Nigdzie nie widziałem, ale prawdę powiedziawszy nie rozglądałem się za samouczkami do pluginów. Sądzę że na forach vbulletin.org lub vbulletin.com powinno coś być - oczywiście w wersji angielskiej.
Jako że trafiłem na bloga ;) to mały burak.
includes/function_socialgrup.php
Jeśli to co wpiszemy w miejsce X nie jest liczbą większą od 1, wtedy nie wyświetli nam się opcja zarządzania użytkownikami, którzy już dołączyli do grupy.Kod:if ($group['socialgroupcategoryid'] == A) {
$group['members'] = 'X';
}
else
{
$group['members'] = vb_number_format($group['members']);
}
W tym samym pliku znajdujemy
i zmieniamy naKod:AND $group['members'] > 1
Gdzie X to to co wpisaliśmy kilka linijek wyżej jako tekst zamiast liczby userów.Kod html:AND $group['members'] > 1 OR $group['members'] = 'X'