Merge pull request #2790 from gerhard6380/develop
New API /api/friendica/profile/show
This commit is contained in:
commit
1cfcc939c0
3 changed files with 159 additions and 0 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -42,3 +42,9 @@ nbproject
|
||||||
|
|
||||||
#ignore local folder
|
#ignore local folder
|
||||||
/local/
|
/local/
|
||||||
|
|
||||||
|
#ignore config files from Visual Studio
|
||||||
|
/.vs/
|
||||||
|
/php_friendica.phpproj
|
||||||
|
/php_friendica.sln
|
||||||
|
/php_friendica.phpproj.user
|
||||||
|
|
32
doc/api.md
32
doc/api.md
|
@ -744,6 +744,38 @@ On success:
|
||||||
On error:
|
On error:
|
||||||
* different JSON returns {"result":"error","message":"searchstring not specified"}
|
* different JSON returns {"result":"error","message":"searchstring not specified"}
|
||||||
|
|
||||||
|
---
|
||||||
|
### friendica/profile/show (GET; AUTH)
|
||||||
|
show data of all profiles or a single profile of the authenticated user
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
* profile_id: id of the profile to be returned (optional, if omitted all profiles are returned by default)
|
||||||
|
|
||||||
|
#### Return values
|
||||||
|
On success: Array of:
|
||||||
|
|
||||||
|
* multi_profiles: true if user has activated multi_profiles
|
||||||
|
* global_dir: URL of the global directory set in server settings
|
||||||
|
* friendica_owner: user data of the authenticated user
|
||||||
|
* profiles: array of the profile data
|
||||||
|
|
||||||
|
On error:
|
||||||
|
HTTP 403 Forbidden: when no authentication provided
|
||||||
|
HTTP 400 Bad Request: if given profile_id is not in db or not assigned to authenticated user
|
||||||
|
|
||||||
|
General description of profile data in API returns:
|
||||||
|
* profile_id
|
||||||
|
* profile_name
|
||||||
|
* is_default: true if this is the public profile
|
||||||
|
* hide_friends: true if friends are hidden
|
||||||
|
* profile_photo
|
||||||
|
* profile_thumb
|
||||||
|
* publish: true if published on the server's local directory
|
||||||
|
* net_publish: true if published to global_dir
|
||||||
|
* description ... homepage: different data fields from 'profile' table in database
|
||||||
|
* users: array with the users allowed to view this profile (empty if is_default=true)
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
## Not Implemented API calls
|
## Not Implemented API calls
|
||||||
The following API calls are implemented in GNU Social but not in Friendica: (incomplete)
|
The following API calls are implemented in GNU Social but not in Friendica: (incomplete)
|
||||||
|
|
121
include/api.php
121
include/api.php
|
@ -2412,6 +2412,59 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief return data from profiles
|
||||||
|
*
|
||||||
|
* @param array $profile array containing data from db table 'profile'
|
||||||
|
* @param string $type Known types are 'atom', 'rss', 'xml' and 'json'
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function api_format_items_profiles(&$profile = null, $type = "json") {
|
||||||
|
if ($profile != null) {
|
||||||
|
$profile = array('profile_id' => $profile['id'],
|
||||||
|
'profile_name' => $profile['profile-name'],
|
||||||
|
'is_default' => $profile['is-default'] ? true : false,
|
||||||
|
'hide_friends'=> $profile['hide-friends'] ? true : false,
|
||||||
|
'profile_photo' => $profile['photo'],
|
||||||
|
'profile_thumb' => $profile['thumb'],
|
||||||
|
'publish' => $profile['publish'] ? true : false,
|
||||||
|
'net_publish' => $profile['net-publish'] ? true : false,
|
||||||
|
'description' => $profile['pdesc'],
|
||||||
|
'date_of_birth' => $profile['dob'],
|
||||||
|
'address' => $profile['address'],
|
||||||
|
'city' => $profile['locality'],
|
||||||
|
'region' => $profile['region'],
|
||||||
|
'postal_code' => $profile['postal-code'],
|
||||||
|
'country' => $profile['country-name'],
|
||||||
|
'hometown' => $profile['hometown'],
|
||||||
|
'gender' => $profile['gender'],
|
||||||
|
'marital' => $profile['marital'],
|
||||||
|
'marital_with' => $profile['with'],
|
||||||
|
'marital_since' => $profile['howlong'],
|
||||||
|
'sexual' => $profile['sexual'],
|
||||||
|
'politic' => $profile['politic'],
|
||||||
|
'religion' => $profile['religion'],
|
||||||
|
'public_keywords' => $profile['pub_keywords'],
|
||||||
|
'private_keywords' => $profile['prv_keywords'],
|
||||||
|
'likes' => bbcode(api_clean_plain_items($profile['likes']), false, false, 2, true),
|
||||||
|
'dislikes' => bbcode(api_clean_plain_items($profile['dislikes']), false, false, 2, true),
|
||||||
|
'about' => bbcode(api_clean_plain_items($profile['about']), false, false, 2, true),
|
||||||
|
'music' => bbcode(api_clean_plain_items($profile['music']), false, false, 2, true),
|
||||||
|
'book' => bbcode(api_clean_plain_items($profile['book']), false, false, 2, true),
|
||||||
|
'tv' => bbcode(api_clean_plain_items($profile['tv']), false, false, 2, true),
|
||||||
|
'film' => bbcode(api_clean_plain_items($profile['film']), false, false, 2, true),
|
||||||
|
'interest' => bbcode(api_clean_plain_items($profile['interest']), false, false, 2, true),
|
||||||
|
'romance' => bbcode(api_clean_plain_items($profile['romance']), false, false, 2, true),
|
||||||
|
'work' => bbcode(api_clean_plain_items($profile['work']), false, false, 2, true),
|
||||||
|
'education' => bbcode(api_clean_plain_items($profile['education']), false, false, 2, true),
|
||||||
|
'social_networks' => bbcode(api_clean_plain_items($profile['contact']), false, false, 2, true),
|
||||||
|
'homepage' => $profile['homepage'],
|
||||||
|
'users' => null);
|
||||||
|
return $profile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief format items to be returned by api
|
* @brief format items to be returned by api
|
||||||
*
|
*
|
||||||
|
@ -3880,6 +3933,71 @@
|
||||||
api_register_func('api/friendica/direct_messages_search', 'api_friendica_direct_messages_search', true);
|
api_register_func('api/friendica/direct_messages_search', 'api_friendica_direct_messages_search', true);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief return data of all the profiles a user has to the client
|
||||||
|
*
|
||||||
|
* @param string $type Known types are 'atom', 'rss', 'xml' and 'json'
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function api_friendica_profile_show($type){
|
||||||
|
$a = get_app();
|
||||||
|
|
||||||
|
if (api_user()===false) throw new ForbiddenException();
|
||||||
|
|
||||||
|
// input params
|
||||||
|
$profileid = (x($_REQUEST,'profile_id') ? $_REQUEST['profile_id'] : 0);
|
||||||
|
|
||||||
|
// retrieve general information about profiles for user
|
||||||
|
$multi_profiles = feature_enabled(api_user(),'multi_profiles');
|
||||||
|
$directory = get_config('system', 'directory');
|
||||||
|
|
||||||
|
// get data of the specified profile id or all profiles of the user if not specified
|
||||||
|
if ($profileid != 0) {
|
||||||
|
$r = q("SELECT * FROM `profile` WHERE `uid` = %d AND `id` = %d",
|
||||||
|
intval(api_user()),
|
||||||
|
intval($profileid));
|
||||||
|
// error message if specified gid is not in database
|
||||||
|
if (count($r) == 0)
|
||||||
|
throw new BadRequestException("profile_id not available");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$r = q("SELECT * FROM `profile` WHERE `uid` = %d",
|
||||||
|
intval(api_user()));
|
||||||
|
|
||||||
|
// loop through all returned profiles and retrieve data and users
|
||||||
|
$k = 0;
|
||||||
|
foreach ($r as $rr) {
|
||||||
|
$profile = api_format_items_profiles($rr, $type);
|
||||||
|
|
||||||
|
// select all users from contact table, loop and prepare standard return for user data
|
||||||
|
$users = array();
|
||||||
|
$r = q("SELECT `id`, `nurl` FROM `contact` WHERE `uid`= %d AND `profile-id` = %d",
|
||||||
|
intval(api_user()),
|
||||||
|
intval($rr['profile_id']));
|
||||||
|
|
||||||
|
foreach ($r as $rr) {
|
||||||
|
$user = api_get_user($a, $rr['nurl']);
|
||||||
|
($type == "xml") ? $users[$k++.":user"] = $user : $users[] = $user;
|
||||||
|
}
|
||||||
|
$profile['users'] = $users;
|
||||||
|
|
||||||
|
// add prepared profile data to array for final return
|
||||||
|
if ($type == "xml") {
|
||||||
|
$profiles[$k++.":profile"] = $profile;
|
||||||
|
} else {
|
||||||
|
$profiles[] = $profile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// return settings, authenticated user and profiles data
|
||||||
|
$result = array('multi_profiles' => $multi_profiles ? true : false,
|
||||||
|
'global_dir' => $directory,
|
||||||
|
'friendica_owner' => api_get_user($a, intval(api_user())),
|
||||||
|
'profiles' => $profiles);
|
||||||
|
return api_format_data("friendica_profiles", $type, array('$result' => $result));
|
||||||
|
}
|
||||||
|
api_register_func('api/friendica/profile/show', 'api_friendica_profile_show', true, API_METHOD_GET);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
To.Do:
|
To.Do:
|
||||||
[pagename] => api/1.1/statuses/lookup.json
|
[pagename] => api/1.1/statuses/lookup.json
|
||||||
|
@ -3905,6 +4023,9 @@ account/update_profile_background_image
|
||||||
account/update_profile_image
|
account/update_profile_image
|
||||||
blocks/create
|
blocks/create
|
||||||
blocks/destroy
|
blocks/destroy
|
||||||
|
friendica/profile/update
|
||||||
|
friendica/profile/create
|
||||||
|
friendica/profile/delete
|
||||||
|
|
||||||
Not implemented in status.net:
|
Not implemented in status.net:
|
||||||
statuses/retweeted_to_me
|
statuses/retweeted_to_me
|
||||||
|
|
Loading…
Reference in a new issue