X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FOStatus.php;h=c6f840a66e0b60150f9d57b0574e26df51b88527;hb=41678ec3cd24fadb5fa0649694f29b4dced0e75a;hp=1ff13c55db3eae097cb641778f26e563811b74a6;hpb=e609de295742fa1de70279206d6bea91900350ba;p=friendica.git diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 1ff13c55db..c6f840a66e 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -26,7 +26,6 @@ use DOMXPath; require_once 'include/dba.php'; require_once 'include/html2bbcode.php'; -require_once 'include/bbcode.php'; require_once 'include/items.php'; require_once 'mod/share.php'; require_once 'include/enotify.php'; @@ -71,55 +70,34 @@ class OStatus } $author["contact-id"] = $contact["id"]; - $found = false; - + $contact = null; if ($aliaslink != '') { $condition = ["`uid` = ? AND `alias` = ? AND `network` != ?", $importer["uid"], $aliaslink, NETWORK_STATUSNET]; - $r = dba::selectFirst('contact', [], $condition); - - if (DBM::is_result($r)) { - $found = true; - if ($r['blocked']) { - $r['id'] = -1; - } - $contact = $r; - $author["contact-id"] = $r["id"]; - } + $contact = dba::selectFirst('contact', [], $condition); } - if (!$found && ($author["author-link"] != "")) { + if (!DBM::is_result($contact) && $author["author-link"] != '') { if ($aliaslink == "") { $aliaslink = $author["author-link"]; } $condition = ["`uid` = ? AND `nurl` IN (?, ?) AND `network` != ?", $importer["uid"], normalise_link($author["author-link"]), normalise_link($aliaslink), NETWORK_STATUSNET]; - $r = dba::selectFirst('contact', [], $condition); - - if (DBM::is_result($r)) { - $found = true; - if ($r['blocked']) { - $r['id'] = -1; - } - $contact = $r; - $author["contact-id"] = $r["id"]; - } + $contact = dba::selectFirst('contact', [], $condition); } - if (!$found && ($addr != "")) { + if (!DBM::is_result($contact) && ($addr != '')) { $condition = ["`uid` = ? AND `addr` = ? AND `network` != ?", $importer["uid"], $addr, NETWORK_STATUSNET]; - $r = dba::selectFirst('contact', [], $condition); + $contact = dba::selectFirst('contact', [], $condition); + } - if (DBM::is_result($r)) { - $found = true; - if ($r['blocked']) { - $r['id'] = -1; - } - $contact = $r; - $author["contact-id"] = $r["id"]; + if (DBM::is_result($contact)) { + if ($contact['blocked']) { + $contact['id'] = -1; } + $author["contact-id"] = $contact["id"]; } $avatarlist = []; @@ -154,7 +132,7 @@ class OStatus $author["owner-avatar"] = $author["author-avatar"]; // Only update the contacts if it is an OStatus contact - if ($r && ($r['id'] > 0) && !$onlyfetch && ($contact["network"] == NETWORK_OSTATUS)) { + if (DBM::is_result($contact) && ($contact['id'] > 0) && !$onlyfetch && ($contact["network"] == NETWORK_OSTATUS)) { // Update contact data $current = $contact; @@ -208,7 +186,7 @@ class OStatus } // Ensure that we are having this contact (with uid=0) - $cid = Contact::getIdForURL($aliaslink, 0); + $cid = Contact::getIdForURL($aliaslink, 0, true); if ($cid) { $fields = ['url', 'nurl', 'name', 'nick', 'alias', 'about', 'location']; @@ -487,6 +465,11 @@ class OStatus if (!$valid) { // If not, then it depends on this setting $valid = !Config::get('system', 'ostatus_full_threads'); + if ($valid) { + logger("Item with uri ".self::$itemlist[0]['uri']." will be imported due to the system settings.", LOGGER_DEBUG); + } + } else { + logger("Item with uri ".self::$itemlist[0]['uri']." belongs to a contact (".self::$itemlist[0]['contact-id']."). It will be imported.", LOGGER_DEBUG); } if ($valid) { // Never post a thread when the only interaction by our contact was a like @@ -497,10 +480,16 @@ class OStatus $valid = true; } } + if ($valid) { + logger("Item with uri ".self::$itemlist[0]['uri']." will be imported since the thread contains posts or shares.", LOGGER_DEBUG); + } } } else { // But we will only import complete threads $valid = dba::exists('item', ['uid' => $importer["uid"], 'uri' => self::$itemlist[0]['parent-uri']]); + if ($valid) { + logger("Item with uri ".self::$itemlist[0]["uri"]." belongs to parent ".self::$itemlist[0]['parent-uri']." of user ".$importer["uid"].". It will be imported.", LOGGER_DEBUG); + } } if ($valid) { @@ -738,6 +727,7 @@ class OStatus $links = $xpath->query('//link'); if ($links) { + $file = ''; foreach ($links as $link) { $attribute = self::readAttributes($link); if (($attribute['rel'] == 'alternate') && ($attribute['type'] == 'application/atom+xml')) { @@ -1251,6 +1241,7 @@ class OStatus $root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET); $root->setAttribute("xmlns:mastodon", NAMESPACE_MASTODON); + $title = ''; switch ($filter) { case 'activity': $title = L10n::t('%s\'s timeline', $owner['name']); break; case 'posts' : $title = L10n::t('%s\'s posts' , $owner['name']); break; @@ -1385,17 +1376,14 @@ class OStatus */ private static function addAuthor($doc, $owner) { - $r = q("SELECT `homepage`, `publish` FROM `profile` WHERE `uid` = %d AND `is-default` LIMIT 1", intval($owner["uid"])); - if (DBM::is_result($r)) { - $profile = $r[0]; - } + $profile = dba::selectFirst('profile', ['homepage', 'publish'], ['uid' => $owner['uid'], 'is-default' => true]); $author = $doc->createElement("author"); XML::addElement($doc, $author, "id", $owner["url"]); XML::addElement($doc, $author, "activity:object-type", ACTIVITY_OBJ_PERSON); XML::addElement($doc, $author, "uri", $owner["url"]); XML::addElement($doc, $author, "name", $owner["nick"]); XML::addElement($doc, $author, "email", $owner["addr"]); - XML::addElement($doc, $author, "summary", bbcode($owner["about"], false, false, 7)); + XML::addElement($doc, $author, "summary", BBCode::convert($owner["about"], false, 7)); $attributes = ["rel" => "alternate", "type" => "text/html", "href" => $owner["url"]]; XML::addElement($doc, $author, "link", "", $attributes); @@ -1420,7 +1408,7 @@ class OStatus XML::addElement($doc, $author, "poco:preferredUsername", $owner["nick"]); XML::addElement($doc, $author, "poco:displayName", $owner["name"]); - XML::addElement($doc, $author, "poco:note", bbcode($owner["about"], false, false, 7)); + XML::addElement($doc, $author, "poco:note", BBCode::convert($owner["about"], false, 7)); if (trim($owner["location"]) != "") { $element = $doc->createElement("poco:address"); @@ -1428,15 +1416,15 @@ class OStatus $author->appendChild($element); } - if (trim($profile["homepage"]) != "") { - $urls = $doc->createElement("poco:urls"); - XML::addElement($doc, $urls, "poco:type", "homepage"); - XML::addElement($doc, $urls, "poco:value", $profile["homepage"]); - XML::addElement($doc, $urls, "poco:primary", "true"); - $author->appendChild($urls); - } + if (DBM::is_result($profile)) { + if (trim($profile["homepage"]) != "") { + $urls = $doc->createElement("poco:urls"); + XML::addElement($doc, $urls, "poco:type", "homepage"); + XML::addElement($doc, $urls, "poco:value", $profile["homepage"]); + XML::addElement($doc, $urls, "poco:primary", "true"); + $author->appendChild($urls); + } - if (count($profile)) { XML::addElement($doc, $author, "followers", "", ["url" => System::baseUrl()."/viewcontacts/".$owner["nick"]]); XML::addElement($doc, $author, "statusnet:profile_info", "", ["local_id" => $owner["uid"]]); } @@ -1495,6 +1483,8 @@ class OStatus */ private static function entry($doc, $item, $owner, $toplevel = false) { + $xml = null; + $repeated_guid = self::getResharedGuid($item); if ($repeated_guid != "") { $xml = self::reshareEntry($doc, $item, $owner, $repeated_guid, $toplevel); @@ -1899,7 +1889,7 @@ class OStatus $body = "[b]".$item['title']."[/b]\n\n".$body; } - $body = bbcode($body, false, false, 7); + $body = BBCode::convert($body, false, 7); XML::addElement($doc, $entry, "content", $body, ["type" => "html"]); @@ -2118,7 +2108,7 @@ class OStatus } $check_date = DateTimeFormat::utc($last_update); - $authorid = Contact::getIdForURL($owner["url"], 0); + $authorid = Contact::getIdForURL($owner["url"], 0, true); $sql_extra = ''; if ($filter === 'posts') { @@ -2138,6 +2128,7 @@ class OStatus AND `item`.`created` > '%s' AND NOT `item`.`deleted` AND NOT `item`.`private` + AND `item`.`visible` AND `thread`.`network` IN ('%s', '%s') $sql_extra ORDER BY `item`.`created` DESC LIMIT %d",