diff options
-rw-r--r-- | include/api.php | 111 |
1 files changed, 78 insertions, 33 deletions
diff --git a/include/api.php b/include/api.php index 09cca8d8d..0a038b038 100644 --- a/include/api.php +++ b/include/api.php @@ -865,8 +865,13 @@ logger('API: api_statuses_show: '.$id); //$include_entities = (x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:false); - //$sql_extra = ""; - if ($_GET["conversation"] == "true") $sql_extra .= " AND `item`.`parent` = %d ORDER BY `received` ASC "; else $sql_extra .= " AND `item`.`id` = %d"; + $conversation = (x($_REQUEST,'conversation')?1:0); + + $sql_extra = ''; + if ($conversation) + $sql_extra .= " AND `item`.`parent` = %d ORDER BY `received` ASC "; + else + $sql_extra .= " AND `item`.`id` = %d"; $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, @@ -876,16 +881,15 @@ WHERE `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`deleted` = 0 AND `contact`.`id` = `item`.`contact-id` AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - $sql_extra - ", + $sql_extra", intval($id) ); -//var_dump($r); + $ret = api_format_items($r,$user_info); -//var_dump($ret); - if ($_GET["conversation"] == "true") { + + if ($conversation) { $data = array('$statuses' => $ret); - return api_apply_template("timeline", $type, $data); + return api_apply_template("timeline", $type, $data); } else { $data = array('$status' => $ret[0]); /*switch($type){ @@ -1430,7 +1434,13 @@ 'logo' => $logo, 'fancy' => 'true', 'language' => 'en', 'email' => $email, 'broughtby' => '', 'broughtbyurl' => '', 'timezone' => 'UTC', 'closed' => $closed, 'inviteonly' => 'false', 'private' => $private, 'textlimit' => $textlimit, 'sslserver' => $sslserver, 'ssl' => $ssl, - 'shorturllength' => '30' + 'shorturllength' => '30', + 'friendica' => array( + 'FRIENDICA_PLATFORM' => FRIENDICA_PLATFORM, + 'FRIENDICA_VERSION' => FRIENDICA_VERSION, + 'DFRN_PROTOCOL_VERSION' => DFRN_PROTOCOL_VERSION, + 'DB_UPDATE_VERSION' => DB_UPDATE_VERSION + ) ), ); @@ -1504,21 +1514,36 @@ if (local_user()===false) return false; if (!x($_POST, "text") || !x($_POST,"screen_name")) return; - + $sender = api_get_user($a); + require_once("include/message.php"); + $r = q("SELECT `id` FROM `contact` WHERE `uid`=%d AND `nick`='%s'", intval(local_user()), dbesc($_POST['screen_name'])); - + $recipient = api_get_user($a, $r[0]['id']); - + $replyto = ''; + $sub = ''; + if (x($_REQUEST,'replyto')) { + $r = q('SELECT `parent-uri`, `title` FROM `mail` WHERE `uid`=%d AND `id`=%d', + intval(local_user()), + intval($_REQUEST['replyto'])); + $replyto = $r[0]['parent-uri']; + $sub = $r[0]['title']; + } + else { + if (x($_REQUEST,'title')) { + $sub = $_REQUEST['title']; + } + else { + $sub = ((strlen($_POST['text'])>10)?substr($_POST['text'],0,10)."...":$_POST['text']); + } + } + + $id = send_message($recipient['id'], $_POST['text'], $sub, $replyto); - require_once("include/message.php"); - $sub = ( (strlen($_POST['text'])>10)?substr($_POST['text'],0,10)."...":$_POST['text']); - $id = send_message($recipient['id'], $_POST['text'], $sub); - - if ($id>-1) { $r = q("SELECT * FROM `mail` WHERE id=%d", intval($id)); $item = $r[0]; @@ -1565,46 +1590,58 @@ $start = $page*$count; - + $profile_url = $a->get_baseurl() . '/profile/' . $a->user['nickname']; if ($box=="sentbox") { - $sql_extra = "`from-url`='%s'"; - } else { - $sql_extra = "`from-url`!='%s'"; + $sql_extra = "`from-url`='".dbesc( $profile_url )."'"; + } elseif ($box=="conversation") { + $sql_extra = "`parent-uri`='".dbesc( $_GET["uri"] ) ."'"; + } elseif ($box=="all") { + $sql_extra = "true"; + } elseif ($box=="inbox") { + $sql_extra = "`from-url`!='".dbesc( $profile_url )."'"; } $r = q("SELECT * FROM `mail` WHERE uid=%d AND $sql_extra ORDER BY created DESC LIMIT %d,%d", intval(local_user()), - dbesc( $a->get_baseurl() . '/profile/' . $a->user['nickname'] ), intval($start), intval($count) - ); + ); $ret = Array(); foreach($r as $item){ - switch ($box){ - case "inbox": + if ($box == "inbox" || $item['from-url'] != $profile_url){ $recipient = $user_info; $sender = api_get_user($a,$item['contact-id']); - break; - case "sentbox": + } elseif ($box == "sentbox" || $item['from-url'] != $profile_url){ $recipient = api_get_user($a,$item['contact-id']); $sender = $user_info; - break; } - $ret[]=Array( + $d=Array( 'id' => $item['id'], 'created_at'=> api_date($item['created']), 'sender_id'=> $sender['id'] , 'sender_screen_name'=> $sender['screen_name'], + 'sender_profile_img'=> $item['from-photo'], 'sender'=> $sender, 'recipient_id'=> $recipient['id'], 'recipient_screen_name'=> $recipient['screen_name'], 'recipient'=> $recipient, - - 'text'=> $item['title']."\n".html2plain(bbcode($item['body']), 0) , - ); - + //don't send title to regular StatusNET requests to avoid confusing these apps + if (isset($_GET["getText"])) { + $d['title'] = $item['title'] ; + if ($_GET["getText"] == "html") { + $d['text'] = bbcode($item['body']); + } elseif ($_GET["getText"] == "plain") { + $d['text'] = html2plain(bbcode($item['body']), 0); + } + } else { + $d['text'] = $item['title']."\n".html2plain(bbcode($item['body']), 0); + } + if (isset($_GET["getUserObjects"]) && $_GET["getUserObjects"] == "false") { + unset($d['sender']); unset($d['recipient']); + } + $ret[]=$d; } @@ -1625,6 +1662,14 @@ function api_direct_messages_inbox(&$a, $type){ return api_direct_messages_box($a, $type, "inbox"); } + function api_direct_messages_all(&$a, $type){ + return api_direct_messages_box($a, $type, "all"); + } + function api_direct_messages_conversation(&$a, $type){ + return api_direct_messages_box($a, $type, "conversation"); + } + api_register_func('api/direct_messages/conversation','api_direct_messages_conversation',true); + api_register_func('api/direct_messages/all','api_direct_messages_all',true); api_register_func('api/direct_messages/sent','api_direct_messages_sentbox',true); api_register_func('api/direct_messages','api_direct_messages_inbox',true); |