Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
  #1  
Old 07-06-2013, 06:29 PM
Bjornicus Bjornicus is offline
 
Join Date: Jun 2013
Location: California
Posts: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default I need help showing and unshowing profile fields

I want to have an individual usergroup (usergroup 1) that would have a field option like "interests" for the individual's profile. Then I want to have a organization usergroup (usergroup 2), but they would not receive the "interests" field as an option for their profile because it would be irrelevant.

I have pieced together this php code, but i still cant get it to work.

<vb:if condition="is_member_of($bbuserinfo) == 9?> {vb:raw userinfo.field6} </vb:if>
<vb:else condition="is_member_of($bbuserinfo) != 9?> {unset($userinfo.field6)} </vb:if>

I have tried it in two different templates.
memberinfo_block_aboutme
memberinfo_profilefield


Can someone please help me out. All the research I have done seems more geared toward vb version 3 and does not work either. Such as:

Restrict some profile fields to specific usergroup
https://vborg.vbsupport.ru/showthread.php?t=244946

Any help is greatly appreciated!
Reply With Quote
  #2  
Old 07-06-2013, 08:29 PM
nerbert nerbert is offline
 
Join Date: May 2008
Posts: 784
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You're not using is_member_of() correctly

is_member_of($bbuserinfo, 9)

or for several groups;

is_member_of($bbuserinfo, array(4,5,6,7))

I'm not 100% sure you can use that function in a template conditional though

Code:
941	 // #############################################################################
942	 /**
943	 * Works out if a user is a member of the specified usergroup(s)
944	 *
945	 * This function can be overloaded to test multiple usergroups: is_member_of($user, 1, 3, 4, 6...)
946	 *
947	 * @param    array    User info array - must contain userid, usergroupid and membergroupids fields
948	 * @param    integer    Usergroup ID to test
949	 * @param    boolean    Pull result from cache
950	 *
951	 * @return    boolean
952	 */
953	 function is_member_of($userinfo, $usergroupid, $cache = true)
954	 {
955	     static $user_memberships; 
956	
957	     switch (func_num_args())
958	     {
959	         // 1 can't happen
960	
961	         case 2: // note: func_num_args doesn't count args with default values unless they're overridden
962	             $groups = is_array($usergroupid) ? $usergroupid : array($usergroupid); 
963	         break; 
964	
965	         case 3:
966	             if (is_array($usergroupid))
967	             {
968	                 $groups = $usergroupid; 
969	                 $cache = (bool)$cache; 
970	             }
971	             else if (is_bool($cache))
972	             {
973	                 // passed in 1 group and a cache state
974	                 $groups = array($usergroupid); 
975	             }
976	             else
977	             {
978	                 // passed in 2 groups
979	                 $groups = array($usergroupid, $cache); 
980	                 $cache = true; 
981	             }
982	         break; 
983	
984	         default:
985	             // passed in 4+ args, which means it has to be in the 1,2,3 method
986	             $groups = func_get_args(); 
987	             unset($groups[0]); 
988	
989	             $cache = true; 
990	     }
991	
992	     if (!is_array($user_memberships["$userinfo[userid]"]) OR !$cache)
993	     {
994	         // fetch membergroup ids for this user
995	         $user_memberships["$userinfo[userid]"] = fetch_membergroupids_array($userinfo); 
996	     }
997	
998	     foreach ($groups AS $usergroupid)
999	     {
1000	         // is current group user's primary usergroup, or one of their membergroups?
1001	         if ($userinfo['usergroupid'] == $usergroupid OR in_array($usergroupid, $user_memberships["$userinfo[userid]"]))
1002	         {
1003	             // yes - return true
1004	             return true; 
1005	         }
1006	     }
1007	
1008	     // if we get here then the user doesn't belong to any of the groups.
1009	     return false; 
1010	 }
Reply With Quote
  #3  
Old 07-07-2013, 03:58 AM
tbworld tbworld is offline
 
Join Date: Oct 2008
Posts: 2,126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

$bbsuserinfo is a global template variable. I am not sure if it is populated with valid data to every template, but it is accessible. Function "is_member_of" is an already declared "safe function". So if you use Nerbert's example of how to use the function is_member_of correctly it should work.

I search my own templates and found I used it in showthread...
Code:
    <vb:if condition="is_member_of($bbuserinfo, array(2,18))">
        {vb:debugvardump $bbuserinfo}    <!-- Do not put this line in your code... It will not work. I left it here so you could see where I the output was generated from -->
    </vb:if>
In this case if the user was a member of primary usergroup '2' and secondary usergroup '18' the code would execute.


OUTPUT:
Code:
var_dump: $bbuserinfoarray(213) {   ["userid"]=>   string(2) "10"   ["temp"]=>   NULL   ["field1"]=>   string(0) ""   ["field2"]=>   string(0) ""   ["field3"]=>   string(0) "" ...
Reply With Quote
  #4  
Old 07-08-2013, 05:00 PM
Bjornicus Bjornicus is offline
 
Join Date: Jun 2013
Location: California
Posts: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you both nerbert and tbworld for responding. I played around with what you gave me but it seems to be a little over my head. I think I am just going to have to post a paid service request.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 09:14 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05594 seconds
  • Memory Usage 2,181KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (3)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (4)post_thanks_box
  • (4)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (4)post_thanks_postbit_info
  • (4)postbit
  • (4)postbit_onlinestatus
  • (4)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete