X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Ftwitapidirect_messages.php;h=535795ca4321d6351edca4dbe6d2d2e3ced8ef2b;hb=2abe10b8ea4b5d69fc7f6513bf465541454ca2cf;hp=1ef543f814d3dad5961a349cf4b0d26d74c98a0e;hpb=dec2f29c6a77dd97383ebdbabdc0bff8e524bfa4;p=quix0rs-gnu-social.git diff --git a/actions/twitapidirect_messages.php b/actions/twitapidirect_messages.php index 1ef543f814..535795ca43 100644 --- a/actions/twitapidirect_messages.php +++ b/actions/twitapidirect_messages.php @@ -23,20 +23,6 @@ require_once(INSTALLDIR.'/lib/twitterapi.php'); class Twitapidirect_messagesAction extends TwitterapiAction { - function is_readonly() { - - static $write_methods = array( 'direct_messages', - 'sent'); - - $cmdtext = explode('.', $this->arg('method')); - - if (in_array($cmdtext[0], $write_methods)) { - return false; - } - - return true; - } - function direct_messages($args, $apidata) { parent::handle($args); return $this->show_messages($args, $apidata, 'received'); @@ -54,6 +40,8 @@ class Twitapidirect_messagesAction extends TwitterapiAction { $count = $this->arg('count'); $since = $this->arg('since'); $since_id = $this->arg('since_id'); + $before_id = $this->arg('before_id'); + $page = $this->arg('page'); if (!$page) { @@ -83,6 +71,21 @@ class Twitapidirect_messagesAction extends TwitterapiAction { $link = $server . $user->nickname . '/outbox'; } + if ($before_id) { + $message->whereAdd("id < $before_id"); + } + + if ($since_id) { + $message->whereAdd("id > $since_id"); + } + + $since = strtotime($this->arg('since')); + + if ($since) { + $d = date('Y-m-d H:i:s', $since); + $message->whereAdd("created > '$d'"); + } + $message->orderBy('created DESC, id DESC'); $message->limit((($page-1)*20), $count); $message->find(); @@ -104,7 +107,6 @@ class Twitapidirect_messagesAction extends TwitterapiAction { common_user_error(_('API method not found!'), $code = 404); } - exit(); } // had to change this from "new" to "create" to avoid PHP reserved word @@ -113,13 +115,14 @@ class Twitapidirect_messagesAction extends TwitterapiAction { if ($_SERVER['REQUEST_METHOD'] != 'POST') { $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']); - exit(); + return; } $user = $apidata['user']; - $source = $this->trimmed('source'); // Not supported by Twitter. + $source = $this->trimmed('source'); // Not supported by Twitter. - if (!$source) { + $reserved_sources = array('web', 'omb', 'mail', 'xmpp', 'api'); + if (!$source || in_array($source, $reserved_sources)) { $source = 'api'; } @@ -127,33 +130,37 @@ class Twitapidirect_messagesAction extends TwitterapiAction { if (!$content) { $this->client_error(_('No message text!'), $code = 406, $apidata['content-type']); - } else if (mb_strlen($status) > 140) { - $this->client_error(_('That\'s too long. Max message size is 140 chars.'), - $code = 406, $apidata['content-type']); - exit(); + } else { + $content_shortened = common_shorten_links($content); + if (mb_strlen($content_shortened) > 140) { + $this->client_error(_('That\'s too long. Max message size is 140 chars.'), + $code = 406, $apidata['content-type']); + return; + } } $other = $this->get_user($this->trimmed('user')); if (!$other) { $this->client_error(_('Recipient user not found.'), $code = 403, $apidata['content-type']); - exit(); + return; } else if (!$user->mutuallySubscribed($other)) { $this->client_error(_('Can\'t send direct messages to users who aren\'t your friend.'), $code = 403, $apidata['content-type']); - exit(); + return; } else if ($user->id == $other->id) { // Sending msgs to yourself is allowed by Twitter $this->client_error(_('Don\'t send a message to yourself; just say it to yourself quietly instead.'), $code = 403, $apidata['content-type']); - exit(); + return; } - $message = Message::saveNew($user->id, $other->id, $content, $source); + $message = Message::saveNew($user->id, $other->id, + html_entity_decode($content, ENT_NOQUOTES, 'UTF-8'), $source); if (is_string($message)) { $this->server_error($message); - exit(); + return; } $this->notify($user, $other, $message); @@ -164,13 +171,11 @@ class Twitapidirect_messagesAction extends TwitterapiAction { $this->show_single_json_dmsg($message); } - exit(); } function destroy($args, $apidata) { parent::handle($args); common_server_error(_('API method under construction.'), $code=501); - exit(); } function show_xml_dmsgs($message) { @@ -279,4 +284,4 @@ class Twitapidirect_messagesAction extends TwitterapiAction { # XXX: Jabber, SMS notifications... probably queued } -} \ No newline at end of file +}