Index: trunk/kernel/units/user_profile/user_profile_tp.php =================================================================== diff -u -N -r8620 -r8634 --- trunk/kernel/units/user_profile/user_profile_tp.php (.../user_profile_tp.php) (revision 8620) +++ trunk/kernel/units/user_profile/user_profile_tp.php (.../user_profile_tp.php) (revision 8634) @@ -12,12 +12,7 @@ $value = $this->Application->ProcessParsedTag('u.profile', 'Field', $params); } else { - $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'); - } - $value = $this->recallUserProfileVar($profile_user_id, $field); + $value = $this->recallUserProfileVar($field); } if (isset($params['checked']) && $params['checked']) { @@ -29,17 +24,37 @@ } /** + * 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($user_id, $var_name) + 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)'; @@ -71,6 +86,42 @@ 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(); + } } ?> \ No newline at end of file