//USAGE: {USER_EXTENDED=.[text|value|icon|text_value].} //EXAMPLE: {USER_EXTENDED=user_gender.value.5} will show the value of the extended field user_gender for user #5 include(e_LANGUAGEDIR.e_LANGUAGE."/lan_user_extended.php"); $parms = explode(".", $parm); global $currentUser, $tp, $loop_uid, $e107, $sc_style; if(isset($loop_uid) && intval($loop_uid) == 0) { return ""; } $key = $parms[0].".".$parms[1]; $sc_style['USER_EXTENDED']['pre'] = (isset($sc_style['USER_EXTENDED'][$key]['pre']) ? $sc_style['USER_EXTENDED'][$key]['pre'] : ""); $sc_style['USER_EXTENDED']['post'] = (isset($sc_style['USER_EXTENDED'][$key]['post']) ? $sc_style['USER_EXTENDED'][$key]['post'] : ""); include_once(e_HANDLER."user_extended_class.php"); $ueStruct = e107_user_extended::user_extended_getStruct(); $uid = intval($parms[2]); if($uid == 0) { if(isset($loop_uid) && intval($loop_uid) > 0) { $uid = $loop_uid; } else { $uid = USERID; } } $udata = get_user_data($uid); $udata['user_class'] .= ($udata['user_class'] == "" ? "" : ","); $udata['user_class'] .= e_UC_PUBLIC.",".e_UC_MEMBER; if($udata['user_admin'] == 1) { $udata['user_class'].= ",".e_UC_ADMIN; } // Need to pick up the 'miscellaneous' category - anything which isn't in a named category. Have to control visibility on a field by field basis if ($parms[0] != LAN_410) { $ret_cause = 0; if (!check_class($ueStruct["user_".$parms[0]]['user_extended_struct_applicable'], $udata['user_class'])) $ret_cause = 1; if (!check_class($ueStruct["user_".$parms[0]]['user_extended_struct_read'], $udata['user_class'])) $ret_cause = 2; if (($ueStruct["user_".$parms[0]]['user_extended_struct_read'] == e_UC_READONLY && (!ADMIN && $udata['user_id'] != USERID))) $ret_cause = 3; if ((!ADMIN && substr($ueStruct["user_".$parms[0]]['user_extended_struct_parms'], -1) == 1 && strpos($udata['user_hidden_fields'], "^user_".$parms[0]."^") !== FALSE && $uid != USERID)) $ret_cause = 4; if ($ret_cause != 0) { return FALSE; } } if($parms[1] == 'text_value') { $_value = $tp->parseTemplate("{USER_EXTENDED={$parms[0]}.value}"); if($_value) { $__pre = (isset($sc_style['USER_EXTENDED'][$key]['pre']) ? $sc_style['USER_EXTENDED'][$key]['pre'] : ""); $__post = (isset($sc_style['USER_EXTENDED'][$key]['post']) ? $sc_style['USER_EXTENDED'][$key]['post'] : ""); $_text = $tp->parseTemplate("{USER_EXTENDED={$parms[0]}.text}"); $_mid = (isset($sc_style['USER_EXTENDED'][$key]['mid']) ? $sc_style['USER_EXTENDED'][$key]['mid'] : ""); return $__pre.$_text.$_mid.$_value.$__post; } return false; } if ($parms[1] == 'text') { $text_val = $ueStruct["user_".$parms[0]]['user_extended_struct_text']; if($text_val) { return (defined($text_val) ? constant($text_val) : $text_val); } else { return TRUE; } } if ($parms[1] == 'icon') { if(defined(strtoupper($parms[0])."_ICON")) { return constant(strtoupper($parms[0])."_ICON"); } elseif(file_exists(e_IMAGE."user_icons/{$parms[0]}.png")) { return ""; } return ""; } if ($parms[1] == 'value') { $uVal = str_replace(chr(1), "", $udata['user_'.$parms[0]]); switch ($ueStruct["user_".$parms[0]]['user_extended_struct_type']) { case EUF_DB_FIELD : // check for db_lookup type $tmp = explode(",",$ueStruct["user_".$parms[0]]['user_extended_struct_values']); $sql_ue = new db; // Use our own DB object to avoid conflicts if($sql_ue->db_Select($tmp[0],"{$tmp[1]}, {$tmp[2]}","{$tmp[1]} = '{$uVal}'")) { $row = $sql_ue->db_Fetch(); $ret_data = $row[$tmp[2]]; } else { $ret_data = FALSE; } break; case EUF_DATE : //check for 0000-00-00 in date field if($uVal == "0000-00-00") { $uVal = ""; } $ret_data = $uVal; break; case EUF_PREDEFINED : // Predefined field - have to look up display string in relevant file $ret_data = e107_user_extended::user_extended_display_text($ueStruct["user_".$parms[0]]['user_extended_struct_values'],$uVal); break; default : $ret_data = $uVal; } if($ret_data != "") { return $tp->toHTML($ret_data, TRUE, "no_make_clickable", "class:{$udata['user_class']}"); } return FALSE; } return TRUE;