• Rejestracja
vBHELP.pl - polskie wsparcie vBulletin
  1. #1
    sirwiz jest nieaktywny Użytkownik
    Dołączył
    Jul 2009
    Posty
    21

    Domyślnie Ukrycie członków wybranych grup społecznościowych

    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".



  2. #2
    Marek jest nieaktywny Banned
    Dołączył
    May 2008
    Przegląda
    Where my hat is
    Posty
    0
    Przydatne posty
    26

    Domyślnie

    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
    Ostatnio edytowane przez Marek ; 30.06.2010 o 10:04


  3. #3
    sirwiz jest nieaktywny Użytkownik
    Dołączył
    Jul 2009
    Posty
    21

    Domyślnie

    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?


  4. #4
    sirwiz jest nieaktywny Użytkownik
    Dołączył
    Jul 2009
    Posty
    21

    Domyślnie

    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:

    Kod php:
    $group['members'] = vb_number_format($group['members']); 
    zamieniamy na

    Kod php:
    if ($group['socialgroupcategoryid'] == A) {
                
                
    $group['members'] = 'X';
                 
    }
            else
            {
            
    $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.

    Teraz chowanie samego składu osobowego

    groups.php

    Kod 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); 
    na

    Kod 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);
            } 
    i

    Kod 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'); 
    na
    Kod 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');
            } 
    gdzie znów w pierwszych linijkach we frazie $group['socialgroupcategoryid'] == A, A to numer kategorii w której chowamy użytkowników grupy

    i w

    includes/class_profileblock.php

    Aby nie pokazywać grupy w profilu usera

    Kod php:
    AND socialgroupmember.type 'member' 
    na

    Kod php:
    AND socialgroupmember.type 'member'
                        
    AND     socialgroup.socialgroupcategoryid <> 'A' 
    Gdzie znów A to numer grupy ukrywanej.

    I mamy kategorię w której nikt nie wie kto się znajduje oraz jaką ma liczebność.


  5. #5
    Marek jest nieaktywny Banned
    Dołączył
    May 2008
    Przegląda
    Where my hat is
    Posty
    0
    Przydatne posty
    26

    Domyślnie

    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.
    Ostatnio edytowane przez Marek ; 02.07.2010 o 06:57


  6. #6
    sirwiz jest nieaktywny Użytkownik
    Dołączył
    Jul 2009
    Posty
    21

    Domyślnie

    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?


  7. #7
    Marek jest nieaktywny Banned
    Dołączył
    May 2008
    Przegląda
    Where my hat is
    Posty
    0
    Przydatne posty
    26

    Domyślnie

    Cytat Zamieszczone przez sirwiz Zobacz posta
    VB 4.0 to porażka w mojej ocenie.
    Jest dużo w tym prawdy, ale wersja 3.8.x nie jest już rozwijana, a więc i podatna na włamania.


    Cytat Zamieszczone przez sirwiz Zobacz posta
    Co do uciążliwości to tak naprawdę dodanie 5 linijek kodu w 3 plikach
    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.

    Cytat Zamieszczone przez sirwiz Zobacz posta
    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?
    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.


  8. #8
    sirwiz jest nieaktywny Użytkownik
    Dołączył
    Jul 2009
    Posty
    21

    Domyślnie

    Jako że trafiłem na bloga to mały burak.

    includes/function_socialgrup.php

    Kod:
    if ($group['socialgroupcategoryid'] == A) {
                
                $group['members'] = 'X';
                 
    }
            else
            {
            $group['members'] = vb_number_format($group['members']);
                }
    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.

    W tym samym pliku znajdujemy

    Kod:
    AND $group['members'] > 1
    i zmieniamy na
    Kod html:
    AND $group['members'] > 1 OR $group['members'] = 'X'
    Gdzie X to to co wpisaliśmy kilka linijek wyżej jako tekst zamiast liczby userów.


Podobne wątki

  1. Polska społecznośc na vB.com
    By RadioErewan in forum Luźne dyskusje
    Odpowiedzi: 5
    Ostatni post / autor: 04.11.2009, 22:42
  2. Grupy społecznościowe
    By creative in forum Pytania i problemy
    Odpowiedzi: 2
    Ostatni post / autor: 11.12.2008, 19:03
  3. Grupa Społecznościowa: Opuszczenie
    By Gudowski in forum Bug Tracker
    Odpowiedzi: 1
    Ostatni post / autor: 22.09.2008, 00:49
  4. Tworzenie grup społecznościowych
    By delphi in forum Bug Tracker
    Odpowiedzi: 1
    Ostatni post / autor: 12.06.2008, 02:24
  5. Odpowiedzi: 0
    Ostatni post / autor: 27.05.2008, 22:27
Chmurka.pl

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67