. * */ namespace Friendica\Module\Api\Friendica\Profile; use Friendica\Collection\ProfileFields; use Friendica\Content\Text\BBCode; use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Profile; use Friendica\Module\BaseApi; use Friendica\Network\HTTPException; use Friendica\Repository\PermissionSet; /** * API endpoint: /api/friendica/profile/show */ class Show extends BaseApi { public static function rawContent(array $parameters = []) { if (self::login(self::SCOPE_READ) === false) { throw new HTTPException\ForbiddenException(); } // retrieve general information about profiles for user $directory = DI::config()->get('system', 'directory'); $profile = Profile::getByUID(self::$current_user_id); $profileFields = DI::profileField()->select(['uid' => self::$current_user_id, 'psid' => PermissionSet::PUBLIC]); $profile = self::formatProfile($profile, $profileFields); $profiles = []; if (self::$format == 'xml') { $profiles['0:profile'] = $profile; } else { $profiles[] = $profile; } // return settings, authenticated user and profiles data $self = Contact::selectFirst(['nurl'], ['uid' => self::$current_user_id, 'self' => true]); $result = [ 'multi_profiles' => false, 'global_dir' => $directory, 'friendica_owner' => self::getUser($self['nurl']), 'profiles' => $profiles ]; echo self::format('friendica_profiles', ['$result' => $result]); exit; } /** * @param array $profile_row array containing data from db table 'profile' * @param ProfileFields $profileFields * @return array * @throws HTTPException\InternalServerErrorException */ private static function formatProfile($profile_row, ProfileFields $profileFields) { $custom_fields = []; foreach ($profileFields as $profileField) { $custom_fields[] = [ 'label' => $profileField->label, 'value' => BBCode::convert($profileField->value, false, BBCode::API), ]; } return [ 'profile_id' => $profile_row['id'], 'profile_name' => null, 'is_default' => null, 'hide_friends' => $profile_row['hide-friends'] ? true : false, 'profile_photo' => $profile_row['photo'], 'profile_thumb' => $profile_row['thumb'], 'publish' => $profile_row['publish'] ? true : false, 'net_publish' => $profile_row['net-publish'] ? true : false, 'description' => $profile_row['about'], 'date_of_birth' => $profile_row['dob'], 'address' => $profile_row['address'], 'city' => $profile_row['locality'], 'region' => $profile_row['region'], 'postal_code' => $profile_row['postal-code'], 'country' => $profile_row['country-name'], 'hometown' => null, 'gender' => null, 'marital' => null, 'marital_with' => null, 'marital_since' => null, 'sexual' => null, 'politic' => null, 'religion' => null, 'public_keywords' => $profile_row['pub_keywords'], 'private_keywords' => $profile_row['prv_keywords'], 'likes' => null, 'dislikes' => null, 'about' => null, 'music' => null, 'book' => null, 'tv' => null, 'film' => null, 'interest' => null, 'romance' => null, 'work' => null, 'education' => null, 'social_networks' => null, 'homepage' => $profile_row['homepage'], 'users' => [], 'custom_fields' => $custom_fields, ]; } }