getProfileMapping(); $field = $this->SelectParam($params, 'name,field'); if (isset($params['profile_field']) && $params['profile_field']) { $params['name'] = $profile_mapping[$field]; $value = $this->Application->ProcessParsedTag('u.profile', 'Field', $params); } else { $value = $this->recallUserProfileVar($field); } if (isset($params['checked']) && $params['checked']) { $checked_value = isset($params['value']) ? $params['value'] : 1; $value = ($value == $checked_value) ? 'checked' : ''; } return $value; } /** * Returns user_id to view profile from (same as u:getPassedID) * * @return int */ function getProfileUserID() { $profile_user_id = $this->Application->GetVar('user_id'); if (!$profile_user_id) { // if none user_id given use current user id $profile_user_id = $this->Application->RecallVar('user_id'); } return $profile_user_id; } /** * Allows to get persistent var from other user * * @param int $user_id * @param string $var_name * @return mixed */ function recallUserProfileVar($var_name, $user_id = null) { static $cached_vars = null; if (!isset($cached_vars)) { if (!isset($user_id)) { $user_id = $this->getProfileUserID(); } $sql = 'SELECT VariableValue, VariableName FROM '.TABLE_PREFIX.'PersistantSessionData WHERE (PortalUserId = '.$user_id.') AND (LENGTH(VariableValue) < 10)'; $cached_vars = $this->Conn->GetCol($sql, 'VariableName'); } return isset($cached_vars[$var_name]) ? $cached_vars[$var_name] : false; } /** * Returns mapping between persistent var name and user profile field * * @return Array */ function getProfileMapping() { $profile_mapping = Array ( 'pp_firstname' => 'FirstName', 'pp_lastname' => 'LastName', 'pp_dob' => 'dob', 'pp_email' => 'Email', 'pp_phone' => 'Phone', 'pp_street' => 'Street', 'pp_city' => 'City', 'pp_state' => 'State', 'pp_zip' => 'Zip', 'pp_country' => 'Country', ); return $profile_mapping; } /** * Returns visible field count in user profile * * @param Array $params * @return int */ function ProfileFieldCount($params) { static $field_count = null; if (!isset($field_count)) { $profile_mapping = $this->getProfileMapping(); $field_count = 0; foreach ($profile_mapping as $var_name => $field_name) { if ($this->recallUserProfileVar($var_name) == 1) { $field_count++; } } } return $field_count; } /** * Allows to detect that not all fields were shown * * @param Array $params * @return bool */ function NotLastField($params) { $counter = (int)$this->Application->GetVar($params['counter']); return $counter < $this->ProfileFieldCount(); } } ?>