PDA

View Full Version : I need help showing and unshowing profile fields


Bjornicus
07-06-2013, 06:29 PM
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!

nerbert
07-06-2013, 08:29 PM
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


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 }

tbworld
07-07-2013, 03:58 AM
$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...
<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:
var_dump: $bbuserinfoarray(213) { ["userid"]=> string(2) "10" ["temp"]=> NULL ["field1"]=> string(0) "" ["field2"]=> string(0) "" ["field3"]=> string(0) "" ...

Bjornicus
07-08-2013, 05:00 PM
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.