assorted fixes to api direct messages

This commit is contained in:
friendica 2015-04-19 18:14:17 -07:00
parent 8757789213
commit 185ce2da69

View File

@ -267,40 +267,46 @@ require_once('include/items.php');
* Returns user info array. * Returns user info array.
*/ */
function api_get_user(&$a, $contact_id = null){ function api_get_user(&$a, $contact_id = null, $contact_xchan = null){
global $called_api; global $called_api;
$user = null; $user = null;
$extra_query = ""; $extra_query = "";
if(!is_null($contact_id)){ if(! is_null($contact_xchan)) {
$user=$contact_id; $user = local_channel();
$extra_query = " AND abook_id = %d "; $extra_query = " and abook_xchan = '" . dbesc($contact_xchan) . "' ";
} }
else {
if(is_null($user) && x($_GET, 'user_id')) { if(!is_null($contact_id)){
$user = intval($_GET['user_id']); $user=$contact_id;
$extra_query = " AND abook_id = %d ";
}
if(is_null($user) && x($_GET, 'screen_name')) {
$user = dbesc($_GET['screen_name']);
$extra_query = " AND xchan_addr like '%s@%%' ";
if (api_user()!==false)
$extra_query .= " AND abook_channel = ".intval(api_user());
}
if (is_null($user) && argc() > (count($called_api)-1)){
$argid = count($called_api);
list($user, $null) = explode(".",argv($argid));
if(is_numeric($user)){
$user = intval($user);
$extra_query = " AND abook_id = %d "; $extra_query = " AND abook_id = %d ";
} else { }
$user = dbesc($user);
if(is_null($user) && x($_GET, 'user_id')) {
$user = intval($_GET['user_id']);
$extra_query = " AND abook_id = %d ";
}
if(is_null($user) && x($_GET, 'screen_name')) {
$user = dbesc($_GET['screen_name']);
$extra_query = " AND xchan_addr like '%s@%%' "; $extra_query = " AND xchan_addr like '%s@%%' ";
if (api_user() !== false) if (api_user()!==false)
$extra_query .= " AND abook_channel = ".intval(api_user()); $extra_query .= " AND abook_channel = ".intval(api_user());
} }
if (is_null($user) && argc() > (count($called_api)-1)){
$argid = count($called_api);
list($user, $null) = explode(".",argv($argid));
if(is_numeric($user)){
$user = intval($user);
$extra_query = " AND abook_id = %d ";
} else {
$user = dbesc($user);
$extra_query = " AND xchan_addr like '%s@%%' ";
if (api_user() !== false)
$extra_query .= " AND abook_channel = ".intval(api_user());
}
}
} }
if (! $user) { if (! $user) {
@ -2021,15 +2027,13 @@ require_once('include/items.php');
$ret = Array(); $ret = Array();
if($r) { if($r) {
foreach($r as $item) { foreach($r as $item) {
if ($box == "inbox" || $item['from-url'] != $profile_url){ if ($item['from_xchan'] == $channel['channel_hash']) {
$recipient = $user_info;
// fixme to lookup recipient
$sender = api_get_user($a);
}
elseif ($box == "sentbox" || $item['from-url'] != $profile_url){
// fixme to lookup recipient
$recipient = api_get_user($a);
$sender = $user_info; $sender = $user_info;
$recipient = api_get_user($a, null, $item['to_xchan']);
}
else {
$sender = api_get_user($a, null, $item['from_xchan']);
$recipient = $user_info;
} }
$ret[]=api_format_message($item, $recipient, $sender); $ret[]=api_format_message($item, $recipient, $sender);