X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=statusnet%2Fstatusnet.php;h=c3591356b6237c035b79edea23bc934b58e8a533;hb=b1af3c817b5f94b1693d7b0422dc842b2c89ba86;hp=fbd9bdd483144bb9e77f2f67f1d93648fee08432;hpb=fb14c7094ca2ffe4afee583000dc93b6e9158a4d;p=friendica-addons.git diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index fbd9bdd4..c3591356 100644 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -496,8 +496,13 @@ function statusnet_post_hook(&$a,&$b) { $orig_post = $r[0]; } - $nickname = "@[url=".$orig_post["author-link"]."]".$orig_post["contact_nick"]."[/url]"; - $nicknameplain = "@".$orig_post["contact_nick"]; + //$nickname = "@[url=".$orig_post["author-link"]."]".$orig_post["contact_nick"]."[/url]"; + //$nicknameplain = "@".$orig_post["contact_nick"]; + + $nick = preg_replace("=https?://(.*)/(.*)=ism", "$2", $orig_post["author-link"]); + + $nickname = "@[url=".$orig_post["author-link"]."]".$nick."[/url]"; + $nicknameplain = "@".$nick; logger("statusnet_post_hook: comparing ".$nickname." and ".$nicknameplain." with ".$b["body"], LOGGER_DEBUG); if ((strpos($b["body"], $nickname) === false) AND (strpos($b["body"], $nicknameplain) === false)) @@ -700,9 +705,13 @@ function statusnet_prepare_body(&$a,&$b) { if(count($r)) { $orig_post = $r[0]; + //$nickname = "@[url=".$orig_post["author-link"]."]".$orig_post["contact_nick"]."[/url]"; + //$nicknameplain = "@".$orig_post["contact_nick"]; - $nickname = "@[url=".$orig_post["author-link"]."]".$orig_post["contact_nick"]."[/url]"; - $nicknameplain = "@".$orig_post["contact_nick"]; + $nick = preg_replace("=https?://(.*)/(.*)=ism", "$2", $orig_post["author-link"]); + + $nickname = "@[url=".$orig_post["author-link"]."]".$nick."[/url]"; + $nicknameplain = "@".$nick; if ((strpos($item["body"], $nickname) === false) AND (strpos($item["body"], $nicknameplain) === false)) $item["body"] = $nickname." ".$item["body"]; @@ -1055,7 +1064,14 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi $postarray['gravity'] = 0; $postarray['uid'] = $uid; $postarray['wall'] = 0; - $postarray['uri'] = $hostname."::".$post->id; + + if (is_object($post->retweeted_status)) { + $content = $post->retweeted_status; + statusnet_fetch_contact($uid, $content->user, false); + } else + $content = $post; + + $postarray['uri'] = $hostname."::".$content->id; $r = q("SELECT * FROM `item` WHERE `extid` = '%s' AND `uid` = %d LIMIT 1", dbesc($postarray['uri']), @@ -1067,9 +1083,9 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi $contactid = 0; - if ($post->in_reply_to_status_id != "") { + if ($content->in_reply_to_status_id != "") { - $parent = $hostname."::".$post->in_reply_to_status_id; + $parent = $hostname."::".$content->in_reply_to_status_id; $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($parent), @@ -1078,6 +1094,8 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi if (count($r)) { $postarray['thr-parent'] = $r[0]["uri"]; $postarray['parent-uri'] = $r[0]["parent-uri"]; + $postarray['parent'] = $r[0]["parent"]; + $postarray['object-type'] = ACTIVITY_OBJ_COMMENT; } else { $r = q("SELECT * FROM `item` WHERE `extid` = '%s' AND `uid` = %d LIMIT 1", dbesc($parent), @@ -1086,16 +1104,19 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi if (count($r)) { $postarray['thr-parent'] = $r[0]['uri']; $postarray['parent-uri'] = $r[0]['parent-uri']; + $postarray['parent'] = $r[0]['parent']; + $postarray['object-type'] = ACTIVITY_OBJ_COMMENT; } else { $postarray['thr-parent'] = $postarray['uri']; $postarray['parent-uri'] = $postarray['uri']; + $postarray['object-type'] = ACTIVITY_OBJ_NOTE; } } // Is it me? $own_url = get_pconfig($uid, 'statusnet', 'own_url'); - if ($post->user->id == $own_url) { + if ($content->user->id == $own_url) { $r = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1", intval($uid)); @@ -1110,8 +1131,10 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi } // Don't create accounts of people who just comment something $create_user = false; - } else + } else { $postarray['parent-uri'] = $postarray['uri']; + $postarray['object-type'] = ACTIVITY_OBJ_NOTE; + } if ($contactid == 0) { $contactid = statusnet_fetch_contact($uid, $post->user, $create_user); @@ -1127,43 +1150,44 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi $postarray['contact-id'] = $contactid; $postarray['verb'] = ACTIVITY_POST; - $postarray['author-name'] = $postarray['owner-name']; - $postarray['author-link'] = $postarray['owner-link']; - $postarray['author-avatar'] = $postarray['owner-avatar']; + + $postarray['author-name'] = $content->user->name; + $postarray['author-link'] = $content->user->statusnet_profile_url; + $postarray['author-avatar'] = $content->user->profile_image_url; // To-Do: Maybe unreliable? Can the api be entered without trailing "/"? $hostname = str_replace("/api/", "/notice/", get_pconfig($uid, 'statusnet', 'baseapi')); - $postarray['plink'] = $hostname.$post->id; - $postarray['app'] = strip_tags($post->source); + $postarray['plink'] = $hostname.$content->id; + $postarray['app'] = strip_tags($content->source); - if ($post->user->protected) { + if ($content->user->protected) { $postarray['private'] = 1; $postarray['allow_cid'] = '<' . $self['id'] . '>'; } - $postarray['body'] = html2bbcode($post->statusnet_html); + $postarray['body'] = html2bbcode($content->statusnet_html); $converted = statusnet_convertmsg($a, $postarray['body'], false); $postarray['body'] = $converted["body"]; $postarray['tag'] = $converted["tags"]; - $postarray['created'] = datetime_convert('UTC','UTC',$post->created_at); - $postarray['edited'] = datetime_convert('UTC','UTC',$post->created_at); + $postarray['created'] = datetime_convert('UTC','UTC',$content->created_at); + $postarray['edited'] = datetime_convert('UTC','UTC',$content->created_at); - if (is_string($post->place->name)) - $postarray["location"] = $post->place->name; + if (is_string($content->place->name)) + $postarray["location"] = $content->place->name; - if (is_string($post->place->full_name)) - $postarray["location"] = $post->place->full_name; + if (is_string($content->place->full_name)) + $postarray["location"] = $content->place->full_name; - if (is_array($post->geo->coordinates)) - $postarray["coord"] = $post->geo->coordinates[0]." ".$post->geo->coordinates[1]; + if (is_array($content->geo->coordinates)) + $postarray["coord"] = $content->geo->coordinates[0]." ".$content->geo->coordinates[1]; - if (is_array($post->coordinates->coordinates)) - $postarray["coord"] = $post->coordinates->coordinates[1]." ".$post->coordinates->coordinates[0]; + if (is_array($content->coordinates->coordinates)) + $postarray["coord"] = $content->coordinates->coordinates[1]." ".$content->coordinates->coordinates[0]; - if (is_object($post->retweeted_status)) { + /*if (is_object($post->retweeted_status)) { $postarray['body'] = html2bbcode($post->retweeted_status->statusnet_html); $converted = statusnet_convertmsg($a, $postarray['body'], false); @@ -1176,13 +1200,15 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi $postarray['author-name'] = $post->retweeted_status->user->name; $postarray['author-link'] = $post->retweeted_status->user->statusnet_profile_url; $postarray['author-avatar'] = $post->retweeted_status->user->profile_image_url; - } + }*/ logger("statusnet_createpost: end", LOGGER_DEBUG); return($postarray); } function statusnet_checknotification($a, $uid, $own_url, $top_item, $postarray) { + // This function necer worked and need cleanup + $user = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` LIMIT 1", intval($uid) ); @@ -1231,7 +1257,7 @@ function statusnet_checknotification($a, $uid, $own_url, $top_item, $postarray) 'to_email' => $user[0]['email'], 'uid' => $user[0]['uid'], 'item' => $postarray, - 'link' => $a->get_baseurl() . '/display/' . $user[0]['nickname'] . '/' . $top_item, + 'link' => $a->get_baseurl().'/display/'.urlencode(get_item_guid($top_item)), 'source_name' => $postarray['author-name'], 'source_link' => $postarray['author-link'], 'source_photo' => $postarray['author-avatar'], @@ -1399,8 +1425,10 @@ function statusnet_fetchhometimeline($a, $uid) { dbesc($postarray['uri']), intval($uid) ); - if (count($r)) + if (count($r)) { $item = $r[0]['id']; + $parent_id = $r[0]['parent']; + } if ($item != 0) { require_once('include/enotify.php'); @@ -1412,12 +1440,13 @@ function statusnet_fetchhometimeline($a, $uid) { 'to_email' => $u[0]['email'], 'uid' => $u[0]['uid'], 'item' => $postarray, - 'link' => $a->get_baseurl() . '/display/' . $u[0]['nickname'] . '/' . $item, + 'link' => $a->get_baseurl().'/display/'.urlencode(get_item_guid($item)), 'source_name' => $postarray['author-name'], 'source_link' => $postarray['author-link'], 'source_photo' => $postarray['author-avatar'], 'verb' => ACTIVITY_TAG, - 'otype' => 'item' + 'otype' => 'item', + 'parent' => $parent_id, )); } } @@ -1530,7 +1559,7 @@ function statusnet_convertmsg($a, $body, $no_tags = false) { if (($footerlink != "") AND (trim($footer) != "")) { $removedlink = trim(str_replace($footerlink, "", $body)); - if (strstr($body, $removedlink)) + if (($removedlink == "") OR strstr($body, $removedlink)) $body = $removedlink; $body .= $footer;