]> git.mxchange.org Git - friendica.git/commitdiff
Merge remote-tracking branch 'upstream/develop' into 1606-contact-id
authorMichael Vogel <icarus@dabo.de>
Mon, 20 Jun 2016 05:28:47 +0000 (07:28 +0200)
committerMichael Vogel <icarus@dabo.de>
Mon, 20 Jun 2016 05:28:47 +0000 (07:28 +0200)
17 files changed:
boot.php
database.sql
include/Contact.php
include/bbcode.php
include/conversation.php
include/dbstructure.php
include/dfrn.php
include/items.php
include/threads.php
mod/community.php
mod/display.php
mod/network.php
mod/notes.php
mod/profile.php
mod/search.php
object/Item.php
update.php

index 318a87346771e7f609bcb9ad2cdfbbbdbfdb1904..62baf116da28c57026b18cb01a670c9c17ede83d 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -38,7 +38,7 @@ define ( 'FRIENDICA_PLATFORM',     'Friendica');
 define ( 'FRIENDICA_CODENAME',     'Asparagus');
 define ( 'FRIENDICA_VERSION',      '3.5-dev' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1196      );
+define ( 'DB_UPDATE_VERSION',      1197      );
 
 /**
  * @brief Constant with a HTML line break.
index 8269a8bba086e80c68479eb3a439cdf4f43e6a53..4a36384d92f3d80cc79d6d783930be5dba4779da 100644 (file)
@@ -1,6 +1,6 @@
 -- ------------------------------------------
 -- Friendica 3.5-dev (Asparagus)
--- DB_UPDATE_VERSION 1196
+-- DB_UPDATE_VERSION 1197
 -- ------------------------------------------
 
 
@@ -458,9 +458,11 @@ CREATE TABLE IF NOT EXISTS `item` (
        `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `received` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+       `owner-id` int(11) NOT NULL DEFAULT 0,
        `owner-name` varchar(255) NOT NULL DEFAULT '',
        `owner-link` varchar(255) NOT NULL DEFAULT '',
        `owner-avatar` varchar(255) NOT NULL DEFAULT '',
+       `author-id` int(11) NOT NULL DEFAULT 0,
        `author-name` varchar(255) NOT NULL DEFAULT '',
        `author-link` varchar(255) NOT NULL DEFAULT '',
        `author-avatar` varchar(255) NOT NULL DEFAULT '',
@@ -962,6 +964,8 @@ CREATE TABLE IF NOT EXISTS `thread` (
        `uid` int(10) unsigned NOT NULL DEFAULT 0,
        `contact-id` int(11) unsigned NOT NULL DEFAULT 0,
        `gcontact-id` int(11) unsigned NOT NULL DEFAULT 0,
+       `owner-id` int(11) unsigned NOT NULL DEFAULT 0,
+       `author-id` int(11) unsigned NOT NULL DEFAULT 0,
        `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
index 86ef4a30fa1c015a55f435c0b1c6e080c0212445..3ee491e50538cd26d2347f294a223c9272399bf9 100644 (file)
@@ -255,11 +255,20 @@ function get_contact_details_by_url($url, $uid = -1, $default = array()) {
                                $profile["bd"] = (++$current_year)."-".$month."-".$day;
                } else
                        $profile["bd"] = "0000-00-00";
-       } else {
+       } else
                $profile = $default;
-               if (!isset($profile["thumb"]) AND isset($profile["photo"]))
-                       $profile["thumb"] = $profile["photo"];
-       }
+
+       if (($profile["photo"] == "") AND isset($default["photo"]))
+               $profile["photo"] = $default["photo"];
+
+       if (($profile["name"] == "") AND isset($default["name"]))
+               $profile["name"] = $default["name"];
+
+       if (($profile["network"] == "") AND isset($default["network"]))
+               $profile["network"] = $default["network"];
+
+       if (!isset($profile["thumb"]) AND isset($profile["photo"]))
+               $profile["thumb"] = $profile["photo"];
 
        if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND ($profile["gid"] != 0) AND
                in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
@@ -451,8 +460,18 @@ function get_contact($url, $uid = 0) {
                $data = probe_url($url);
 
        // Does this address belongs to a valid network?
-       if (!in_array($data["network"], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA)))
-               return 0;
+       if (!in_array($data["network"], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA))) {
+               if ($uid != 0)
+                       return 0;
+
+               // Get data from the gcontact table
+               $r = q("SELECT `name`, `nick`, `url`, `photo`, `addr`, `alias`, `network` FROM `gcontact` WHERE `nurl` = '%s'",
+                        dbesc(normalise_link($url)));
+               if (!$r)
+                       return 0;
+
+               $data = $r[0];
+       }
 
        $url = $data["url"];
 
@@ -490,6 +509,16 @@ function get_contact($url, $uid = 0) {
                        return 0;
 
                $contactid = $contact[0]["id"];
+
+               // Update the newly created contact from data in the gcontact table
+               $r = q("SELECT `location`, `about`, `keywords`, `gender` FROM `gcontact` WHERE `nurl` = '%s'",
+                        dbesc(normalise_link($data["url"])));
+               if ($r) {
+                       logger("Update contact ".$data["url"]);
+                       q("UPDATE `contact` SET `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d",
+                               dbesc($r["location"]), dbesc($r["about"]), dbesc($r["keywords"]),
+                               dbesc($r["gender"]), intval($contactid));
+               }
        }
 
        if ((count($contact) > 1) AND ($uid == 0) AND ($contactid != 0) AND ($url != ""))
index 01aae691b638bd900d92578c09b3c50321dbaf0d..359a7ba2f0333e4f34dcb7ede125a7288e049986 100644 (file)
@@ -408,6 +408,11 @@ function bb_ShareAttributes($share, $simplehtml) {
        if ($itemcache == "")
                $reldate = (($posted) ? " " . relative_date($posted) : '');
 
+       // We only call this so that a previously unknown contact can be added.
+       // This is important for the function "get_contact_details_by_url".
+       // This function then can fetch an entry from the contact table.
+       get_contact($profile, 0);
+
        $data = get_contact_details_by_url($profile);
 
        if (isset($data["name"]) AND isset($data["addr"]))
@@ -423,8 +428,8 @@ function bb_ShareAttributes($share, $simplehtml) {
        if (isset($data["name"]))
                $author = $data["name"];
 
-       if (isset($data["photo"]))
-               $avatar = $data["photo"];
+       if (isset($data["thumb"]))
+               $avatar = $data["thumb"];
 
        $preshare = trim($share[1]);
 
@@ -490,6 +495,8 @@ function bb_ShareAttributes($share, $simplehtml) {
                default:
                        $text = trim($share[1])."\n";
 
+                       $avatar = proxy_url($avatar, false, PROXY_SIZE_THUMB);
+
                        $tpl = get_markup_template('shared_content.tpl');
                        $text .= replace_macros($tpl,
                                        array(
index 87ad42b0438d44b79cba002e5d758aab733717fd..c4d4fcdde80b57273093f3321007842eddb33b24 100644 (file)
@@ -374,39 +374,27 @@ function visible_activity($item) {
 }
 
 /**
- * @brief List of all contact fields that are needed for the conversation function
+ * @brief SQL query for items
  */
-function contact_fieldlist() {
+function item_query() {
 
-       $fieldlist = "`contact`.`network`, `contact`.`url`, `contact`.`name`, `contact`.`writable`,
-                       `contact`.`self`, `contact`.`id` AS `cid`, `contact`.`alias`";
-
-       return $fieldlist;
-}
-
-/**
- * @brief SQL condition for contacts
- */
-function contact_condition() {
-
-       $condition = "NOT `contact`.`blocked` AND NOT `contact`.`pending`";
-
-       return $condition;
+       return "SELECT ".item_fieldlists()." FROM `item` ".
+               item_joins()." WHERE ".item_condition();
 }
 
 /**
- * @brief List of all item fields that are needed for the conversation function
+ * @brief List of all data fields that are needed for displaying items
  */
-function item_fieldlist() {
+function item_fieldlists() {
 
 /*
 These Fields are not added below (yet). They are here to for bug search.
 `item`.`type`,
+`item`.`object`,
 `item`.`extid`,
 `item`.`received`,
 `item`.`changed`,
-`item`.`author-avatar`,
-`item`.`object`,
+`item`.`moderated`,
 `item`.`target-type`,
 `item`.`target`,
 `item`.`resource-id`,
@@ -414,10 +402,8 @@ These Fields are not added below (yet). They are here to for bug search.
 `item`.`attach`,
 `item`.`inform`,
 `item`.`pubmail`,
-`item`.`moderated`,
 `item`.`visible`,
 `item`.`spam`,
-`item`.`starred`,
 `item`.`bookmark`,
 `item`.`unseen`,
 `item`.`deleted`,
@@ -430,28 +416,42 @@ These Fields are not added below (yet). They are here to for bug search.
 `item`.`shadow`,
 */
 
-       $fieldlist = "`item`.`author-link`, `item`.`verb`, `item`.`id`, `item`.`parent`, `item`.`file`,
-                       `item`.`uid`, `item`.`author-name`, `item`.`location`, `item`.`coord`,
-                       `item`.`title`, `item`.`uri`, `item`.`created`, `item`.`app`, `item`.`guid`,
-                       `item`.`contact-id`, `item`.`thr-parent`, `item`.`parent-uri`, `item`.`rendered-hash`,
-                       `item`.`body`, `item`.`rendered-html`, `item`.`private`, `item`.`edited`,
-                       `item`.`allow_cid`, `item`.`allow_gid`, `item`.`deny_cid`, `item`.`deny_gid`,
-                       `item`.`event-id`, `item`.`object-type`, `item`.`starred`, `item`.`created`,
-                       `item`.`postopts`, `item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`,
-                       `item`.`plink`, `item`.`wall`, `item`.`commented`,
-                       `item`.`id` AS `item_id`, `item`.`network` AS `item_network`";
-
-       return $fieldlist;
+       return "`item`.`author-link`, `item`.`author-name`, `item`.`author-avatar`,
+               `item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`,
+               `item`.`contact-id`, `item`.`uid`, `item`.`id`, `item`.`parent`,
+               `item`.`uri`, `item`.`thr-parent`, `item`.`parent-uri`,
+               `item`.`commented`, `item`.`created`, `item`.`edited`,
+               `item`.`verb`, `item`.`object-type`, `item`.`postopts`, `item`.`plink`,
+               `item`.`guid`, `item`.`wall`, `item`.`private`, `item`.`starred`,
+               `item`.`title`, `item`.`body`, `item`.`file`, `item`.`event-id`,
+               `item`.`location`, `item`.`coord`, `item`.`app`,
+               `item`.`rendered-hash`, `item`.`rendered-html`,
+               `item`.`allow_cid`, `item`.`allow_gid`, `item`.`deny_cid`, `item`.`deny_gid`,
+               `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
+
+               `author`.`thumb` AS `author-thumb`, `owner`.`thumb` AS `owner-thumb`,
+
+               `contact`.`network`, `contact`.`url`, `contact`.`name`, `contact`.`writable`,
+               `contact`.`self`, `contact`.`id` AS `cid`, `contact`.`alias`";
 }
 
 /**
- * @brief SQL condition for items
+ * @brief SQL join for contacts that are needed for displaying items
  */
-function item_condition() {
+function item_joins() {
+
+       return "STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND
+               NOT `contact`.`blocked` AND NOT `contact`.`pending`
+               LEFT JOIN `contact` AS `author` ON `author`.`id`=`item`.`author-id`
+               LEFT JOIN `contact` AS `owner` ON `owner`.`id`=`item`.`owner-id`";
+}
 
-       $condition = "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`";
+/**
+ * @brief SQL condition for items that are needed for displaying items
+ */
+function item_condition() {
 
-       return $condition;
+       return "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`";
 }
 
 /**
@@ -623,7 +623,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
 
                                $comment     = '';
                                $owner_url   = '';
-                               $owner_photo = '';
                                $owner_name  = '';
                                $sparkle     = '';
 
@@ -668,18 +667,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
                                        $tags[] = $prefix."<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>";
                                }
 
-                               /*foreach(explode(',',$item['tag']) as $tag){
-                                       $tag = trim($tag);
-                                       if ($tag!="") {
-                                               $t = bbcode($tag);
-                                               $tags[] = $t;
-                                               if($t[0] == '#')
-                                                       $hashtags[] = $t;
-                                               elseif($t[0] == '@')
-                                                       $mentions[] = $t;
-                                       }
-                               }*/
-
                                $sp = false;
                                $profile_link = best_link_url($item,$sp);
                                if($profile_link === 'mailbox')
@@ -689,12 +676,21 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
                                else
                                        $profile_link = zrl($profile_link);
 
-                               // Don't rely on the author-avatar. It is better to use the data from the contact table
-                               $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
-                               if ($author_contact["thumb"])
-                                       $profile_avatar = $author_contact["thumb"];
-                               else
-                                       $profile_avatar = $item['author-avatar'];
+                               if (!isset($item['author-thumb'])) {
+                                       $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
+                                       if ($author_contact["thumb"])
+                                               $item['author-thumb'] = $author_contact["thumb"];
+                                       else
+                                               $item['author-thumb'] = $item['author-avatar'];
+                               }
+
+                               if (!isset($item['owner-thumb'])) {
+                                       $owner_contact = get_contact_details_by_url($item['owner-link'], $profile_owner);
+                                       if ($owner_contact["thumb"])
+                                               $item['owner-thumb'] = $owner_contact["thumb"];
+                                       else
+                                               $item['owner-thumb'] = $item['owner-avatar'];
+                               }
 
                                $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
                                call_hooks('render_location',$locate);
@@ -762,7 +758,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
                                        'name' => $profile_name_e,
                                        'sparkle' => $sparkle,
                                        'lock' => $lock,
-                                       'thumb' => App::remove_baseurl(proxy_url($profile_avatar, false, PROXY_SIZE_THUMB)),
+                                       'thumb' => App::remove_baseurl(proxy_url($item['author-thumb'], false, PROXY_SIZE_THUMB)),
                                        'title' => $item['title_e'],
                                        'body' => $body_e,
                                        'tags' => $tags_e,
@@ -781,7 +777,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
                                        'indent' => '',
                                        'owner_name' => $owner_name_e,
                                        'owner_url' => $owner_url,
-                                       'owner_photo' => proxy_url($owner_photo, false, PROXY_SIZE_THUMB),
+                                       'owner_photo' => App::remove_baseurl(proxy_url($item['owner-thumb'], false, PROXY_SIZE_THUMB)),
                                        'plink' => get_plink($item),
                                        'edpost' => false,
                                        'isstarred' => $isstarred,
@@ -885,8 +881,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
 
 function best_link_url($item,&$sparkle,$ssl_state = false) {
 
-       $a = get_app();
-
        $best_url = '';
        $sparkle  = false;
 
@@ -913,7 +907,6 @@ function best_link_url($item,&$sparkle,$ssl_state = false) {
 
 if(! function_exists('item_photo_menu')){
 function item_photo_menu($item){
-       $a = get_app();
 
        $ssl_state = false;
 
index f89a3ff9268b60737edc5bcb4086e34478ed17ff..549d077ed38c07bee3fb852ba0f552e946ad12c6 100644 (file)
@@ -792,9 +792,11 @@ function db_definition() {
                                        "commented" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
                                        "received" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
                                        "changed" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
+                                       "owner-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
                                        "owner-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
                                        "owner-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
                                        "owner-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
+                                       "author-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
                                        "author-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
                                        "author-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
                                        "author-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
@@ -1296,6 +1298,8 @@ function db_definition() {
                                        "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"),
                                        "contact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
                                        "gcontact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
+                                       "owner-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
+                                       "author-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
                                        "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
                                        "edited" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
                                        "commented" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
index c9b907accdeb86bdd6f3d97792b3fb5738458cfe..9d91cbce7b585118f12b191089f069a4e01a39a3 100644 (file)
@@ -369,6 +369,7 @@ class dfrn {
                xml::add_element($doc, $relocate, "dfrn:url", $owner['url']);
                xml::add_element($doc, $relocate, "dfrn:name", $owner['name']);
                xml::add_element($doc, $relocate, "dfrn:addr", $owner['addr']);
+               xml::add_element($doc, $relocate, "dfrn:avatar", $owner['avatar']);
                xml::add_element($doc, $relocate, "dfrn:photo", $photos[4]);
                xml::add_element($doc, $relocate, "dfrn:thumb", $photos[5]);
                xml::add_element($doc, $relocate, "dfrn:micro", $photos[6]);
@@ -1548,6 +1549,7 @@ class dfrn {
                $relocate["url"] = $xpath->query("dfrn:url/text()", $relocation)->item(0)->nodeValue;
                $relocate["addr"] = $xpath->query("dfrn:addr/text()", $relocation)->item(0)->nodeValue;
                $relocate["name"] = $xpath->query("dfrn:name/text()", $relocation)->item(0)->nodeValue;
+               $relocate["avatar"] = $xpath->query("dfrn:avatar/text()", $relocation)->item(0)->nodeValue;
                $relocate["photo"] = $xpath->query("dfrn:photo/text()", $relocation)->item(0)->nodeValue;
                $relocate["thumb"] = $xpath->query("dfrn:thumb/text()", $relocation)->item(0)->nodeValue;
                $relocate["micro"] = $xpath->query("dfrn:micro/text()", $relocation)->item(0)->nodeValue;
@@ -1557,6 +1559,9 @@ class dfrn {
                $relocate["poll"] = $xpath->query("dfrn:poll/text()", $relocation)->item(0)->nodeValue;
                $relocate["sitepubkey"] = $xpath->query("dfrn:sitepubkey/text()", $relocation)->item(0)->nodeValue;
 
+               if (($relocate["avatar"] == "") AND ($relocate["photo"] != ""))
+                       $relocate["avatar"] = $relocate["photo"];
+
                if ($relocate["addr"] == "")
                        $relocate["addr"] = preg_replace("=(https?://)(.*)/profile/(.*)=ism", "$3@$2", $relocate["url"]);
 
@@ -1583,7 +1588,7 @@ class dfrn {
                                        `server_url` = '%s'
                        WHERE `nurl` = '%s';",
                                        dbesc($relocate["name"]),
-                                       dbesc($relocate["photo"]),
+                                       dbesc($relocate["avatar"]),
                                        dbesc($relocate["url"]),
                                        dbesc(normalise_link($relocate["url"])),
                                        dbesc($relocate["addr"]),
@@ -1595,9 +1600,7 @@ class dfrn {
                // Update the contact table. We try to find every entry.
                $x = q("UPDATE `contact` SET
                                        `name` = '%s',
-                                       `photo` = '%s',
-                                       `thumb` = '%s',
-                                       `micro` = '%s',
+                                       `avatar` = '%s',
                                        `url` = '%s',
                                        `nurl` = '%s',
                                        `addr` = '%s',
@@ -1608,9 +1611,7 @@ class dfrn {
                                        `site-pubkey` = '%s'
                        WHERE (`id` = %d AND `uid` = %d) OR (`nurl` = '%s');",
                                        dbesc($relocate["name"]),
-                                       dbesc($relocate["photo"]),
-                                       dbesc($relocate["thumb"]),
-                                       dbesc($relocate["micro"]),
+                                       dbesc($relocate["avatar"]),
                                        dbesc($relocate["url"]),
                                        dbesc(normalise_link($relocate["url"])),
                                        dbesc($relocate["addr"]),
@@ -1623,6 +1624,8 @@ class dfrn {
                                        intval($importer["importer_uid"]),
                                        dbesc(normalise_link($old["url"])));
 
+               update_contact_avatar($relocate["avatar"], $importer["importer_uid"], $importer["id"], true);
+
                if ($x === false)
                        return false;
 
@@ -1631,17 +1634,23 @@ class dfrn {
                $fields = array(
                        'owner-link' => array($old["url"], $relocate["url"]),
                        'author-link' => array($old["url"], $relocate["url"]),
-                       'owner-avatar' => array($old["photo"], $relocate["photo"]),
-                       'author-avatar' => array($old["photo"], $relocate["photo"]),
+                       //'owner-avatar' => array($old["photo"], $relocate["photo"]),
+                       //'author-avatar' => array($old["photo"], $relocate["photo"]),
                        );
-               foreach ($fields as $n=>$f){
-                       $x = q("UPDATE `item` SET `%s` = '%s' WHERE `%s` = '%s' AND `uid` = %d",
-                                       $n, dbesc($f[1]),
+               foreach ($fields as $n=>$f) {
+                       $r = q("SELECT `id` FROM `item` WHERE `%s` = '%s' AND `uid` = %d LIMIT 1",
                                        $n, dbesc($f[0]),
                                        intval($importer["importer_uid"]));
-                               if ($x === false)
-                                       return false;
+
+                       if ($r) {
+                               $x = q("UPDATE `item` SET `%s` = '%s' WHERE `%s` = '%s' AND `uid` = %d",
+                                               $n, dbesc($f[1]),
+                                               $n, dbesc($f[0]),
+                                               intval($importer["importer_uid"]));
+                                       if ($x === false)
+                                               return false;
                        }
+               }
 
                /// @TODO
                /// merge with current record, current contents have priority
index 203b7d0eee6755d0699d8261e3d2da2dedae7d46..f5e568306e4765c8a5a467a5ee5d8c7859f68d2b 100644 (file)
@@ -584,6 +584,12 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                                                                 "photo" => $arr['author-avatar'], "name" => $arr['author-name']));
        }
 
+       if ($arr["author-id"] == 0)
+               $arr["author-id"] = get_contact($arr["author-link"], 0);
+
+       if ($arr["owner-id"] == 0)
+               $arr["owner-id"] = get_contact($arr["owner-link"], 0);
+
        if ($arr['guid'] != "") {
                // Checking if there is already an item with the same guid
                logger('checking for an item for user '.$arr['uid'].' on network '.$arr['network'].' with the guid '.$arr['guid'], LOGGER_DEBUG);
index 0320eaa018e98b28a04179f79aae2b020bbd68da..0b2b26e8d242886b870fa3595563d031c23e4f32 100644 (file)
@@ -1,7 +1,9 @@
 <?php
 function add_thread($itemid, $onlyshadow = false) {
-       $items = q("SELECT `uid`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`, `gcontact-id`,
-                       `deleted`, `origin`, `forum_mode`, `mention`, `network`  FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
+       $items = q("SELECT `uid`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`,
+                       `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`, `gcontact-id`,
+                       `deleted`, `origin`, `forum_mode`, `mention`, `network`, `author-id`, `owner-id`
+               FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
 
        if (!$items)
                return;
index a83bd39ec247ac4824b2f37a300623e99e0efda0..06a96c7403f54ff933efa10c8cbaa1d3406a6830 100644 (file)
@@ -120,19 +120,17 @@ function community_getitems($start, $itemspage) {
        if (get_config('system','community_page_style') == CP_GLOBAL_COMMUNITY)
                return(community_getpublicitems($start, $itemspage));
 
-       $r = q("SELECT %s, %s, `user`.`nickname`
+       $r = q("SELECT %s
                FROM `thread` FORCE INDEX (`wall_private_received`)
                INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND NOT `user`.`hidewall`
                INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
                AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
                AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''
-               INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
-               AND %s AND `contact`.`self`
+               %s AND `contact`.`self`
                WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated`
                AND NOT `thread`.`private` AND `thread`.`wall`
                ORDER BY `thread`.`received` DESC LIMIT %d, %d",
-               item_fieldlist(), contact_fieldlist(),
-               contact_condition(),
+               item_fieldlists(), item_joins(),
                intval($start), intval($itemspage)
        );
 
@@ -142,14 +140,13 @@ function community_getitems($start, $itemspage) {
 
 function community_getpublicitems($start, $itemspage) {
 
-       $r = q("SELECT %s, `author-name` AS `name`, `owner-avatar` AS `photo`,
-                       `owner-link` AS `url`, `owner-avatar` AS `thumb`
+       $r = q("SELECT %s
                FROM `thread`
-               INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
+               INNER JOIN `item` ON `item`.`id` = `thread`.`iid` %s
                WHERE `thread`.`uid` = 0
                ORDER BY `thread`.`created` DESC LIMIT %d, %d",
-               item_fieldlist(), intval($start),
-               intval($itemspage)
+               item_fieldlists(), item_joins(),
+               intval($start), intval($itemspage)
        );
 
        return($r);
index 4ee26b7405ad48a3b9aebcd58e73cbdceae31d0c..f879a91aeca49ec4a135d7ed36e7d80520c148f1 100644 (file)
@@ -362,18 +362,15 @@ function display_content(&$a, $update = 0) {
                        return '';
        }
 
-       $r = q("SELECT %s, %s FROM `item`
-               INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
-               WHERE %s AND `item`.`uid` = %d
+       $r = q(item_query()." AND `item`.`uid` = %d
                AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE `id` = %d)
                $sql_extra
                ORDER BY `parent` DESC, `gravity` ASC, `id` ASC",
-               item_fieldlist(), contact_fieldlist(),
-               contact_condition(), item_condition(),
                intval($a->profile['uid']),
                intval($item_id)
        );
 
+
        if(!$r && local_user()) {
                // Check if this is another person's link to a post that we have
                $r = q("SELECT `item`.uri FROM `item`
@@ -385,13 +382,9 @@ function display_content(&$a, $update = 0) {
                if($r) {
                        $item_uri = $r[0]['uri'];
 
-                       $r = q("SELECT %s, %s FROM `item`
-                               INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
-                               WHERE %s AND `item`.`uid` = %d
+                       $r = q(item_query()." AND `item`.`uid` = %d
                                AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE `uri` = '%s' AND uid = %d)
                                ORDER BY `parent` DESC, `gravity` ASC, `id` ASC ",
-                               item_fieldlist(), contact_fieldlist(),
-                               contact_condition(), item_condition(),
                                intval(local_user()),
                                dbesc($item_uri),
                                intval(local_user())
@@ -399,7 +392,6 @@ function display_content(&$a, $update = 0) {
                }
        }
 
-
        if($r) {
 
                if((local_user()) && (local_user() == $a->profile['uid'])) {
index ba97b4a4c5017ce8a97d2c9c63fb4e82044c45a4..6d30797fe7166363f06971dd3d277036622c07a2 100644 (file)
@@ -682,8 +682,8 @@ function network_content(&$a, $update = 0) {
                if(get_config('system', 'old_pager')) {
                        $r = q("SELECT COUNT(*) AS `total`
                                FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = $sql_table.`contact-id`
-                               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                               WHERE $sql_table.`uid` = %d AND $sql_table.`visible` = 1 AND $sql_table.`deleted` = 0
+                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
+                               WHERE $sql_table.`uid` = %d AND $sql_table.`visible` AND NOT $sql_table.`deleted`
                                $sql_extra2 $sql_extra3
                                $sql_extra $sql_nets ",
                                intval($_SESSION['uid'])
@@ -714,20 +714,18 @@ function network_content(&$a, $update = 0) {
        }
 
        if($nouveau) {
-               $simple_update = (($update) ? " AND `item`.`unseen` = 1 " : '');
+               $simple_update = (($update) ? " AND `item`.`unseen` " : '');
 
                if ($sql_order == "")
                        $sql_order = "`item`.`received`";
 
                // "New Item View" - show all items unthreaded in reverse created date order
-               $items = q("SELECT %s, %s FROM $sql_table $sql_post_table
-                       INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
+               $items = q("SELECT %s FROM $sql_table $sql_post_table %s
                        WHERE %s AND `item`.`uid` = %d
                        $simple_update
                        $sql_extra $sql_nets
                        ORDER BY $sql_order DESC $pager_sql ",
-                       item_fieldlist(), contact_fieldlist(),
-                       contact_condition(), item_condition(),
+                       item_fieldlists(), item_joins(), item_condition(),
                        intval($_SESSION['uid'])
                );
 
@@ -755,28 +753,26 @@ function network_content(&$a, $update = 0) {
 
                // Fetch a page full of parent items for this page
                if($update) {
-                       if (!get_config("system", "like_no_comment"))
-                               $sql_extra4 = "(`item`.`deleted` = 0
-                                               OR `item`.`verb` = '".ACTIVITY_LIKE."' OR `item`.`verb` = '".ACTIVITY_DISLIKE."'
-                                               OR `item`.`verb` = '".ACTIVITY_ATTEND."' OR `item`.`verb` = '".ACTIVITY_ATTENDNO."'
-                                               OR `item`.`verb` = '".ACTIVITY_ATTENDMAYBE."')";
+                       if (get_config("system", "like_no_comment"))
+                               $sql_extra4 = " AND `item`.`verb` = '".ACTIVITY_POST."'";
                        else
-                               $sql_extra4 = "`item`.`deleted` = 0 AND `item`.`verb` = '".ACTIVITY_POST."'";
+                               $sql_extra4 = "";
 
                        $r = q("SELECT `item`.`parent` AS `item_id`, `item`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid`
                                FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-                               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                               WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND $sql_extra4
-                               AND `item`.`moderated` = 0 AND `item`.`unseen` = 1
-                               $sql_extra3 $sql_extra $sql_nets ORDER BY `item_id` DESC LIMIT 100",
+                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
+                               WHERE `item`.`uid` = %d AND `item`.`visible` AND NOT `item`.`deleted` $sql_extra4
+                               AND NOT `item`.`moderated` AND `item`.`unseen`
+                               $sql_extra3 $sql_extra $sql_nets
+                               ORDER BY `item_id` DESC LIMIT 100",
                                intval(local_user())
                        );
                } else {
                        $r = q("SELECT `thread`.`iid` AS `item_id`, `thread`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid`
                                FROM $sql_table $sql_post_table STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
-                               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                               WHERE `thread`.`uid` = %d AND `thread`.`visible` = 1 AND `thread`.`deleted` = 0
-                               AND `thread`.`moderated` = 0
+                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
+                               WHERE `thread`.`uid` = %d AND `thread`.`visible` AND NOT `thread`.`deleted`
+                               AND NOT `thread`.`moderated`
                                $sql_extra2 $sql_extra3 $sql_extra $sql_nets
                                ORDER BY $sql_order DESC $pager_sql ",
                                intval(local_user())
@@ -806,14 +802,9 @@ function network_content(&$a, $update = 0) {
                        $items = array();
 
                        foreach ($parents_arr AS $parents) {
-//                                     $sql_extra ORDER BY `item`.`commented` DESC LIMIT %d",
-                               $thread_items = q("SELECT %s, %s FROM `item`
-                                       INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
-                                       WHERE %s AND `item`.`uid` = %d
+                               $thread_items = q(item_query()." AND `item`.`uid` = %d
                                        AND `item`.`parent` = %d
                                        ORDER BY `item`.`commented` DESC LIMIT %d",
-                                       item_fieldlist(), contact_fieldlist(),
-                                       contact_condition(), item_condition(),
                                        intval(local_user()),
                                        intval($parents),
                                        intval($max_comments + 1)
index 8d93fc13d89ffce2547b439139ccae84debf53fa..a25d090ed701faad32ab49fb2dbc7012b13d8e2f 100644 (file)
@@ -73,11 +73,11 @@ function notes_content(&$a,$update = false) {
        $sql_extra = " AND `allow_cid` = '<" . $a->contact['id'] . ">' ";
 
        $r = q("SELECT COUNT(*) AS `total`
-               FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
+               FROM `item` %s
                WHERE %s AND `item`.`uid` = %d AND `item`.`type` = 'note'
                AND `contact`.`self` AND `item`.`id` = `item`.`parent` AND NOT `item`.`wall`
                $sql_extra ",
-               contact_condition(), item_condition(),
+               item_joins(), item_condition(),
                intval(local_user())
 
        );
@@ -87,13 +87,12 @@ function notes_content(&$a,$update = false) {
                $a->set_pager_itemspage(40);
        }
 
-       $r = q("SELECT `item`.`id` AS `item_id` FROM `item`
-               LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s AND `contact`.`self`
+       $r = q("SELECT `item`.`id` AS `item_id` FROM `item` %s
                WHERE %s AND `item`.`uid` = %d AND `item`.`type` = 'note'
                AND `item`.`id` = `item`.`parent` AND NOT `item`.`wall`
                $sql_extra
                ORDER BY `item`.`created` DESC LIMIT %d ,%d ",
-               contact_condition(), item_condition(),
+               item_joins(), item_condition(),
                intval(local_user()),
                intval($a->pager['start']),
                intval($a->pager['itemspage'])
@@ -108,13 +107,11 @@ function notes_content(&$a,$update = false) {
                        $parents_arr[] = $rr['item_id'];
                $parents_str = implode(', ', $parents_arr);
 
-               $r = q("SELECT %s, %s FROM `item`
-                       LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
+               $r = q("SELECT %s FROM `item` %s
                        WHERE %s AND `item`.`uid` = %d AND `item`.`parent` IN (%s)
                        $sql_extra
                        ORDER BY `parent` DESC, `gravity` ASC, `item`.`id` ASC ",
-                       item_fieldlist(), contact_fieldlist(),
-                       contact_condition(), item_condition(),
+                       item_fieldlists(), item_joins(), item_condition(),
                        intval(local_user()),
                        dbesc($parents_str)
                );
index 88de0227b6075a8192463a49746679564ed3efaa..67db5d0d9865d2be14e929768b53bbb180f2fc9e 100644 (file)
@@ -303,13 +303,9 @@ function profile_content(&$a, $update = 0) {
                        $parents_arr[] = $rr['item_id'];
                $parents_str = implode(', ', $parents_arr);
 
-               $items = q("SELECT %s, %s FROM `item`
-                       INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
-                       WHERE %s AND `item`.`uid` = %d
+               $items = q(item_query()." AND `item`.`uid` = %d
                        AND `item`.`parent` IN (%s)
                        $sql_extra ",
-                       item_fieldlist(), contact_fieldlist(),
-                       contact_condition(), item_condition(),
                        intval($a->profile['profile_uid']),
                        dbesc($parents_str)
                );
index 99ec6c5f7d2ec6336465e940d37435c0870818ff..d2251ce584a7ac4b1f3ec387b10ac8dbde2dcc4f 100644 (file)
@@ -191,14 +191,12 @@ function search_content(&$a) {
        if($tag) {
                logger("Start tag search for '".$search."'", LOGGER_DEBUG);
 
-               $r = q("SELECT STRAIGHT_JOIN %s, %s
+               $r = q("SELECT STRAIGHT_JOIN %s
                        FROM `term`
-                               INNER JOIN `item` ON `item`.`id`=`term`.`oid`
-                               INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
+                               INNER JOIN `item` ON `item`.`id`=`term`.`oid` %s
                        WHERE %s AND (`term`.`uid` = 0 OR (`term`.`uid` = %d AND NOT `term`.`global`)) AND `term`.`otype` = %d AND `term`.`type` = %d AND `term`.`term` = '%s'
                        ORDER BY term.created DESC LIMIT %d , %d ",
-                               item_fieldlist(), contact_fieldlist(),
-                               contact_condition(), item_condition(),
+                               item_fieldlists(), item_joins(), item_condition(),
                                intval(local_user()),
                                intval(TERM_OBJ_POST), intval(TERM_HASHTAG), dbesc(protect_sprintf($search)),
                                intval($a->pager['start']), intval($a->pager['itemspage']));
@@ -211,14 +209,12 @@ function search_content(&$a) {
                        $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
                }
 
-               $r = q("SELECT STRAIGHT_JOIN %s, %s
-                       FROM `item`
-                               INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
+               $r = q("SELECT STRAIGHT_JOIN %s
+                       FROM `item` %s
                        WHERE %s AND (`item`.`uid` = 0 OR (`item`.`uid` = %s AND NOT `item`.`global`))
                                $sql_extra
                        GROUP BY `item`.`uri` ORDER BY `item`.`id` DESC LIMIT %d , %d",
-                               item_fieldlist(), contact_fieldlist(),
-                               contact_condition(), item_condition(),
+                               item_fieldlists(), item_joins(), item_condition(),
                                intval(local_user()),
                                intval($a->pager['start']), intval($a->pager['itemspage']));
        }
index ad3da470144cfbd6a310f7ce1a17f8fd788d20d9..e6d6bd45f542b46ae1ad4b4535aa1e0d2416a22a 100644 (file)
@@ -150,12 +150,21 @@ class Item extends BaseObject {
                else
                        $profile_link = zrl($profile_link);
 
-               // Don't rely on the author-avatar. It is better to use the data from the contact table
-               $author_contact = get_contact_details_by_url($item['author-link'], $conv->get_profile_owner());
-               if ($author_contact["thumb"])
-                       $profile_avatar = $author_contact["thumb"];
-               else
-                       $profile_avatar = $item['author-avatar'];
+               if (!isset($item['author-thumb'])) {
+                       $author_contact = get_contact_details_by_url($item['author-link'], $conv->get_profile_owner());
+                       if ($author_contact["thumb"])
+                               $item['author-thumb'] = $author_contact["thumb"];
+                       else
+                               $item['author-thumb'] = $item['author-avatar'];
+               }
+
+               if (!isset($item['owner-thumb'])) {
+                       $owner_contact = get_contact_details_by_url($item['owner-link'], $conv->get_profile_owner());
+                       if ($owner_contact["thumb"])
+                               $item['owner-thumb'] = $owner_contact["thumb"];
+                       else
+                               $item['owner-thumb'] = $item['owner-avatar'];
+               }
 
                $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
                call_hooks('render_location',$locate);
@@ -364,7 +373,7 @@ class Item extends BaseObject {
                        'profile_url' => $profile_link,
                        'item_photo_menu' => item_photo_menu($item),
                        'name' => $name_e,
-                       'thumb' => $a->remove_baseurl(proxy_url($profile_avatar, false, PROXY_SIZE_THUMB)),
+                       'thumb' => $a->remove_baseurl(proxy_url($item['author-thumb'], false, PROXY_SIZE_THUMB)),
                        'osparkle' => $osparkle,
                        'sparkle' => $sparkle,
                        'title' => $title_e,
@@ -377,7 +386,7 @@ class Item extends BaseObject {
                        'indent' => $indent,
                        'shiny' => $shiny,
                        'owner_url' => $this->get_owner_url(),
-                       'owner_photo' => proxy_url($this->get_owner_photo(), false, PROXY_SIZE_THUMB),
+                       'owner_photo' => $a->remove_baseurl(proxy_url($item['owner-thumb'], false, PROXY_SIZE_THUMB)),
                        'owner_name' => htmlentities($owner_name_e),
                        'plink' => get_plink($item),
                        'edpost'    => ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''),
index 1189ac4a91b2c5e385e280f7a3908e95ee4e806d..f2d790aa4cb2eb8d15b4d306a6a5d6e5ec91f2e6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-define('UPDATE_VERSION' , 1196);
+define('UPDATE_VERSION' , 1197);
 
 /**
  *