]> git.mxchange.org Git - friendica.git/blobdiff - include/api.php
Issue 2122: Make sure to always return the correct number of entries
[friendica.git] / include / api.php
index 2fd7d6d45a0999a32b7aa8130a152c61653f4247..531b66814f16ba81d6a82e48539b84b146920b52 100644 (file)
         * Unique contact to contact url.
         */
        function api_unique_id_to_url($id){
-               $r = q("SELECT url FROM unique_contacts WHERE id=%d LIMIT 1",
+               $r = q("SELECT `url` FROM `unique_contacts` WHERE `id`=%d LIMIT 1",
                        intval($id));
                if ($r)
                        return ($r[0]["url"]);
                        $r = array();
 
                        if ($url != "")
-                               $r = q("SELECT * FROM unique_contacts WHERE url='%s' LIMIT 1", $url);
+                               $r = q("SELECT * FROM `unique_contacts` WHERE `url`='%s' LIMIT 1", $url);
                        elseif ($nick != "")
-                               $r = q("SELECT * FROM unique_contacts WHERE nick='%s' LIMIT 1", $nick);
+                               $r = q("SELECT * FROM `unique_contacts` WHERE `nick`='%s' LIMIT 1", $nick);
 
                        if ($r) {
                                // If no nick where given, extract it from the address
                }
 
                // Fetching unique id
-               $r = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1", dbesc(normalise_link($uinfo[0]['url'])));
+               $r = q("SELECT id FROM `unique_contacts` WHERE `url`='%s' LIMIT 1", dbesc(normalise_link($uinfo[0]['url'])));
 
                // If not there, then add it
                if (count($r) == 0) {
-                       q("INSERT INTO unique_contacts (url, name, nick, avatar) VALUES ('%s', '%s', '%s', '%s')",
+                       q("INSERT INTO `unique_contacts` (`url`, `name`, `nick`, `avatar`) VALUES ('%s', '%s', '%s', '%s')",
                                dbesc(normalise_link($uinfo[0]['url'])), dbesc($uinfo[0]['name']),dbesc($uinfo[0]['nick']), dbesc($uinfo[0]['micro']));
 
-                       $r = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1", dbesc(normalise_link($uinfo[0]['url'])));
+                       $r = q("SELECT `id` FROM `unique_contacts` WHERE `url`='%s' LIMIT 1", dbesc(normalise_link($uinfo[0]['url'])));
                }
 
                $network_name = network_to_name($uinfo[0]['network'], $uinfo[0]['url']);
                        'verified' => true,
                        'statusnet_blocking' => false,
                        'notifications' => false,
-                       'statusnet_profile_url' => $a->get_baseurl()."/contacts/".$uinfo[0]['cid'],
+                       //'statusnet_profile_url' => $a->get_baseurl()."/contacts/".$uinfo[0]['cid'],
+                       'statusnet_profile_url' => $uinfo[0]['url'],
                        'uid' => intval($uinfo[0]['uid']),
                        'cid' => intval($uinfo[0]['cid']),
                        'self' => $uinfo[0]['self'],
 
        function api_item_get_user(&$a, $item) {
 
-               $author = q("SELECT * FROM unique_contacts WHERE url='%s' LIMIT 1",
+               $author = q("SELECT * FROM `unique_contacts` WHERE `url`='%s' LIMIT 1",
                        dbesc(normalise_link($item['author-link'])));
 
                if (count($author) == 0) {
-                       q("INSERT INTO unique_contacts (url, name, avatar) VALUES ('%s', '%s', '%s')",
-                       dbesc(normalise_link($item["author-link"])), dbesc($item["author-name"]), dbesc($item["author-avatar"]));
+                       q("INSERT INTO `unique_contacts` (`url`, `name`, `avatar`) VALUES ('%s', '%s', '%s')",
+                               dbesc(normalise_link($item["author-link"])), dbesc($item["author-name"]), dbesc($item["author-avatar"]));
 
-                       $author = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1",
+                       $author = q("SELECT `id` FROM `unique_contacts` WHERE `url`='%s' LIMIT 1",
                                dbesc(normalise_link($item['author-link'])));
                } else if ($item["author-link"].$item["author-name"] != $author[0]["url"].$author[0]["name"]) {
-                       q("UPDATE unique_contacts SET name = '%s', avatar = '%s' WHERE url = '%s'",
-                       dbesc($item["author-name"]), dbesc($item["author-avatar"]), dbesc(normalise_link($item["author-link"])));
+                       $r = q("SELECT `id` FROM `unique_contacts` WHERE `name` = '%s' AND `avatar` = '%s' AND url = '%s'",
+                               dbesc($item["author-name"]), dbesc($item["author-avatar"]),
+                               dbesc(normalise_link($item["author-link"])));
+
+                       if (!$r)
+                               q("UPDATE `unique_contacts` SET `name` = '%s', `avatar` = '%s' WHERE `url` = '%s'",
+                                       dbesc($item["author-name"]), dbesc($item["author-avatar"]),
+                                       dbesc(normalise_link($item["author-link"])));
                }
 
-               $owner = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1",
+               $owner = q("SELECT `id` FROM `unique_contacts` WHERE `url`='%s' LIMIT 1",
                        dbesc(normalise_link($item['owner-link'])));
 
                if (count($owner) == 0) {
-                       q("INSERT INTO unique_contacts (url, name, avatar) VALUES ('%s', '%s', '%s')",
-                       dbesc(normalise_link($item["owner-link"])), dbesc($item["owner-name"]), dbesc($item["owner-avatar"]));
+                       q("INSERT INTO `unique_contacts` (`url`, `name`, `avatar`) VALUES ('%s', '%s', '%s')",
+                               dbesc(normalise_link($item["owner-link"])), dbesc($item["owner-name"]), dbesc($item["owner-avatar"]));
 
-                       $owner = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1",
+                       $owner = q("SELECT `id` FROM `unique_contacts` WHERE `url`='%s' LIMIT 1",
                                dbesc(normalise_link($item['owner-link'])));
                } else if ($item["owner-link"].$item["owner-name"] != $owner[0]["url"].$owner[0]["name"]) {
-                       q("UPDATE unique_contacts SET name = '%s', avatar = '%s' WHERE url = '%s'",
-                       dbesc($item["owner-name"]), dbesc($item["owner-avatar"]), dbesc(normalise_link($item["owner-link"])));
+                       $r = q("SELECT `id` FROM `unique_contacts` WHERE `name` = '%s' AND `avatar` = '%s' AND url = '%s'",
+                               dbesc($item["owner-name"]), dbesc($item["owner-avatar"]),
+                               dbesc(normalise_link($item["owner-link"])));
+
+                       if (!$r)
+                               q("UPDATE `unique_contacts` SET `name` = '%s', `avatar` = '%s' WHERE `url` = '%s'",
+                                       dbesc($item["owner-name"]), dbesc($item["owner-avatar"]),
+                                       dbesc(normalise_link($item["owner-link"])));
                }
 
                // Comments in threads may appear as wall-to-wall postings.
 
                logger('api_status_show: user_info: '.print_r($user_info, true), LOGGER_DEBUG);
 
+               if ($type == "raw")
+                       $privacy_sql = "AND `item`.`allow_cid`='' AND `item`.`allow_gid`='' AND `item`.`deny_cid`='' AND `item`.`deny_gid`=''";
+               else
+                       $privacy_sql = "";
+
                // get last public wall message
                $lastwall = q("SELECT `item`.*, `i`.`contact-id` as `reply_uid`, `i`.`author-link` AS `item-author`
                                FROM `item`, `item` as `i`
                                WHERE `item`.`contact-id` = %d AND `item`.`uid` = %d
                                        AND ((`item`.`author-link` IN ('%s', '%s')) OR (`item`.`owner-link` IN ('%s', '%s')))
                                        AND `i`.`id` = `item`.`parent`
-                                       AND `item`.`type`!='activity'
-                                       AND `item`.`allow_cid`='' AND `item`.`allow_gid`='' AND `item`.`deny_cid`='' AND `item`.`deny_gid`=''
+                                       AND `item`.`type`!='activity' $privacy_sql
                                ORDER BY `item`.`created` DESC
                                LIMIT 1",
                                intval($user_info['cid']),
                                $in_reply_to_status_id= intval($lastwall['parent']);
                                $in_reply_to_status_id_str = (string) intval($lastwall['parent']);
 
-                               $r = q("SELECT * FROM unique_contacts WHERE `url` = '%s'", dbesc(normalise_link($lastwall['item-author'])));
+                               $r = q("SELECT * FROM `unique_contacts` WHERE `url` = '%s'", dbesc(normalise_link($lastwall['item-author'])));
                                if ($r) {
                                        if ($r[0]['nick'] == "")
                                                $r[0]['nick'] = api_get_nick($r[0]["url"]);
                                $in_reply_to_screen_name = NULL;
                        }
 
-                       $converted = api_convert_item($item);
+                       $converted = api_convert_item($lastwall);
 
                        $status_info = array(
                                'created_at' => api_date($lastwall['created']),
                        unset($status_info["user"]["self"]);
                }
 
+               logger('status_info: '.print_r($status_info, true), LOGGER_DEBUG);
+
                if ($type == "raw")
                        return($status_info);
 
                                        $in_reply_to_status_id = intval($lastwall['parent']);
                                        $in_reply_to_status_id_str = (string) intval($lastwall['parent']);
 
-                                       $r = q("SELECT * FROM unique_contacts WHERE `url` = '%s'", dbesc(normalise_link($reply[0]['item-author'])));
+                                       $r = q("SELECT * FROM `unique_contacts` WHERE `url` = '%s'", dbesc(normalise_link($reply[0]['item-author'])));
                                        if ($r) {
                                                if ($r[0]['nick'] == "")
                                                        $r[0]['nick'] = api_get_nick($r[0]["url"]);
                                }
                        }
 
-                       $converted = api_convert_item($item);
+                       $converted = api_convert_item($lastwall);
 
                        $user_info['status'] = array(
                                'text' => $converted["text"],
                $userlist = array();
 
                if (isset($_GET["q"])) {
-                       $r = q("SELECT id FROM unique_contacts WHERE name='%s'", dbesc($_GET["q"]));
+                       $r = q("SELECT id FROM `unique_contacts` WHERE `name`='%s'", dbesc($_GET["q"]));
                        if (!count($r))
-                               $r = q("SELECT id FROM unique_contacts WHERE nick='%s'", dbesc($_GET["q"]));
+                               $r = q("SELECT `id` FROM `unique_contacts` WHERE `nick`='%s'", dbesc($_GET["q"]));
 
                        if (count($r)) {
                                foreach ($r AS $user) {
                                        intval(api_user()),
                                        intval($in_reply_to_status_id));
                                if ($r) {
-                                       $r = q("SELECT * FROM unique_contacts WHERE `url` = '%s'", dbesc(normalise_link($r[0]['author-link'])));
+                                       $r = q("SELECT * FROM `unique_contacts` WHERE `url` = '%s'", dbesc(normalise_link($r[0]['author-link'])));
 
                                        if ($r) {
                                                if ($r[0]['nick'] == "")
 
                $stringify_ids = (x($_REQUEST,'stringify_ids')?$_REQUEST['stringify_ids']:false);
 
-               $r = q("SELECT unique_contacts.id FROM contact, unique_contacts WHERE contact.nurl = unique_contacts.url AND `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 $sql_extra",
+               $r = q("SELECT `unique_contact`.`id` FROM contact, `unique_contacts` WHERE contact.nurl = unique_contacts.url AND `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 $sql_extra",
                        intval(api_user())
                );
 
@@ -2831,15 +2850,29 @@ function api_share_as_retweet(&$item) {
 
 function api_get_nick($profile) {
 /* To-Do:
- - remove trailing jung from profile url
+ - remove trailing junk from profile url
  - pump.io check has to check the website
 */
 
        $nick = "";
 
-       $friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2", $profile);
-       if ($friendica != $profile)
-               $nick = $friendica;
+       $r = q("SELECT `nick` FROM `gcontact` WHERE `nurl` = '%s'",
+               dbesc(normalise_link($profile)));
+       if ($r)
+               $nick = $r[0]["nick"];
+
+       if (!$nick == "") {
+               $r = q("SELECT `nick` FROM `contact` WHERE `uid` = 0 AND `nurl` = '%s'",
+                       dbesc(normalise_link($profile)));
+               if ($r)
+                       $nick = $r[0]["nick"];
+       }
+
+       if (!$nick == "") {
+               $friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2", $profile);
+               if ($friendica != $profile)
+                       $nick = $friendica;
+       }
 
        if (!$nick == "") {
                $diaspora = preg_replace("=https?://(.*)/u/(.*)=ism", "$2", $profile);
@@ -2877,8 +2910,8 @@ function api_get_nick($profile) {
        //}
 
        if ($nick != "") {
-               q("UPDATE unique_contacts SET nick = '%s' WHERE url = '%s'",
-                       dbesc($nick), dbesc(normalise_link($profile)));
+               q("UPDATE `unique_contacts` SET `nick` = '%s' WHERE `nick` != '%s' AND url = '%s'",
+                       dbesc($nick), dbesc($nick), dbesc(normalise_link($profile)));
                return($nick);
        }