]> git.mxchange.org Git - friendica.git/commitdiff
better handling of api comments/replies
authorFriendika <info@friendika.com>
Mon, 1 Aug 2011 00:52:36 +0000 (17:52 -0700)
committerFriendika <info@friendika.com>
Mon, 1 Aug 2011 00:52:36 +0000 (17:52 -0700)
include/api.php
mod/item.php

index 62dc7850649f7ffebac285f0251471b8f97f8155..0d446d1a77959e9dc2c2a93dc6b04a508b1b2762 100644 (file)
 
                // convert $_POST array items to the form we use for web posts.
 
+               // logger('api_post: ' . print_r($_POST,true));
+
                $_POST['body'] = urldecode(requestdata('status'));
-               $_POST['parent'] = requestdata('in_reply_to_status_id');
+
+               $parent = requestdata('in_reply_to_status_id');
+               if(ctype_digit($parent))
+                       $_POST['parent'] = $parent;
+               else
+                       $_POST['parent_uri'] = $parent;
+
                if(requestdata('lat') && requestdata('long'))
                        $_POST['coord'] = sprintf("%s %s",requestdata('lat'),requestdata('long'));
                $_POST['profile_uid'] = local_user();
index f6f665a189da2e56185e428a13be12a77d353936..c4b4351c1801279477d974e782dcf86f3234715e 100644 (file)
@@ -34,21 +34,34 @@ function item_post(&$a) {
        call_hooks('post_local_start', $_POST);
 
        $parent = ((x($_POST,'parent')) ? intval($_POST['parent']) : 0);
+       $parent_uri = ((x($_POST,'parent_uri')) ? trim($_POST['parent_uri']) : '');
 
        $parent_item = null;
        $parent_contact = null;
+       $r = false;
 
-       if($parent) {
-               $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1",
-                       intval($parent)
-               );
-               if(! count($r)) {
+       if($parent || $parent_uri) {
+               if($parent) {
+                       $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1",
+                               intval($parent)
+                       );
+               }
+               elseif($parent_uri && local_user()) {
+                       // This is coming from an API source, we are logged in
+                       $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
+                               dbesc($parent_uri),
+                               intval(local_user())
+                       );
+               }
+
+               if(($r === false) || (! count($r))) {
                        notice( t('Unable to locate original post.') . EOL);
                        if(x($_POST,'return')) 
                                goaway($a->get_baseurl() . "/" . $_POST['return'] );
                        killme();
                }
                $parent_item = $r[0];
+               $parent = $r[0]['id'];
                if($parent_item['contact-id'] && $uid) {
                        $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
                                intval($parent_item['contact-id']),
@@ -59,6 +72,8 @@ function item_post(&$a) {
                }
        }
 
+       if($parent) logger('mod_post: parent=' . $parent);
+
        $profile_uid = ((x($_POST,'profile_uid')) ? intval($_POST['profile_uid']) : 0);
        $post_id     = ((x($_POST['post_id']))    ? intval($_POST['post_id'])     : 0);
        $app         = ((x($_POST['source']))     ? strip_tags($_POST['source'])  : '');