1
0
Fork 0

The post-reason / protocol is now filled in most cases

This commit is contained in:
Michael 2022-07-31 15:54:35 +00:00
commit b6da15557b
10 changed files with 69 additions and 29 deletions

View file

@ -1830,8 +1830,6 @@ class DFRN
$item = $header;
$item['protocol'] = $protocol;
$item['source'] = $xml;
// Get the uri
@ -2260,10 +2258,12 @@ class DFRN
$header = [];
$header['uid'] = $importer['importer_uid'];
$header['network'] = Protocol::DFRN;
$header['protocol'] = $protocol;
$header['wall'] = 0;
$header['origin'] = 0;
$header['contact-id'] = $importer['id'];
$header['direction'] = $direction;
$header = Diaspora::setDirection($header, $direction);
if ($direction === Conversation::RELAY) {
$header['post-reason'] = Item::PR_RELAY;

View file

@ -1535,13 +1535,7 @@ class Diaspora
$datarray['owner-id'] = Contact::getIdForURL($contact['url'], 0);
// Will be overwritten for sharing accounts in Item::insert
if (in_array($direction, [self::FETCHED, self::FORCED_FETCH])) {
$datarray['post-reason'] = Item::PR_FETCHED;
} elseif ($datarray['uid'] == 0) {
$datarray['post-reason'] = Item::PR_GLOBAL;
} else {
$datarray['post-reason'] = Item::PR_COMMENT;
}
$datarray = self::setDirection($datarray, $direction);
$datarray['guid'] = $guid;
$datarray['uri'] = self::getUriFromGuid($author, $guid);
@ -1557,7 +1551,8 @@ class Diaspora
$datarray['protocol'] = Conversation::PARCEL_DIASPORA;
$datarray['source'] = $xml;
$datarray['direction'] = in_array($direction, [self::FETCHED, self::FORCED_FETCH]) ? Conversation::PULL : Conversation::PUSH;
$datarray = self::setDirection($datarray, $direction);
$datarray['changed'] = $datarray['created'] = $datarray['edited'] = $created_at;
@ -1786,12 +1781,13 @@ class Diaspora
$datarray = [];
$datarray['protocol'] = Conversation::PARCEL_DIASPORA;
$datarray['direction'] = in_array($direction, [self::FETCHED, self::FORCED_FETCH]) ? Conversation::PULL : Conversation::PUSH;
$datarray['uid'] = $importer['uid'];
$datarray['contact-id'] = $author_contact['cid'];
$datarray['network'] = $author_contact['network'];
$datarray = self::setDirection($datarray, $direction);
$datarray['owner-link'] = $datarray['author-link'] = $person['url'];
$datarray['owner-id'] = $datarray['author-id'] = Contact::getIdForURL($person['url'], 0);
@ -1965,12 +1961,13 @@ class Diaspora
$datarray = [];
$datarray['protocol'] = Conversation::PARCEL_DIASPORA;
$datarray['direction'] = in_array($direction, [self::FETCHED, self::FORCED_FETCH]) ? Conversation::PULL : Conversation::PUSH;
$datarray['uid'] = $importer['uid'];
$datarray['contact-id'] = $author_contact['cid'];
$datarray['network'] = $author_contact['network'];
$datarray = self::setDirection($datarray, $direction);
$datarray['owner-link'] = $datarray['author-link'] = $person['url'];
$datarray['owner-id'] = $datarray['author-id'] = Contact::getIdForURL($person['url'], 0);
@ -2382,6 +2379,7 @@ class Diaspora
$datarray['protocol'] = $item['protocol'];
$datarray['source'] = $item['source'];
$datarray['direction'] = $item['direction'];
$datarray['post-reason'] = $item['post-reason'];
$datarray['plink'] = self::plink($author, $datarray['guid']);
$datarray['private'] = $item['private'];
@ -2468,7 +2466,8 @@ class Diaspora
$datarray['protocol'] = Conversation::PARCEL_DIASPORA;
$datarray['source'] = $xml;
$datarray['direction'] = in_array($direction, [self::FETCHED, self::FORCED_FETCH]) ? Conversation::PULL : Conversation::PUSH;
$datarray = self::setDirection($datarray, $direction);
/// @todo Copy tag data from original post
@ -2690,6 +2689,29 @@ class Diaspora
Post\Media::insert($data);
}
/**
* Set direction and post reason
*
* @param array $datarray
* @param integer $direction
*
* @return array
*/
public static function setDirection(array $datarray, int $direction): array
{
$datarray['direction'] = in_array($direction, [self::FETCHED, self::FORCED_FETCH]) ? Conversation::PULL : Conversation::PUSH;
if (in_array($direction, [self::FETCHED, self::FORCED_FETCH])) {
$datarray['post-reason'] = Item::PR_FETCHED;
} elseif ($datarray['uid'] == 0) {
$datarray['post-reason'] = Item::PR_GLOBAL;
} else {
$datarray['post-reason'] = Item::PR_PUSHED;
}
return $datarray;
}
/**
* Receives status messages
*
@ -2780,13 +2802,8 @@ class Diaspora
$datarray['protocol'] = Conversation::PARCEL_DIASPORA;
$datarray['source'] = $xml;
$datarray['direction'] = in_array($direction, [self::FETCHED, self::FORCED_FETCH]) ? Conversation::PULL : Conversation::PUSH;
if (in_array($direction, [self::FETCHED, self::FORCED_FETCH])) {
$datarray['post-reason'] = Item::PR_FETCHED;
} elseif ($datarray['uid'] == 0) {
$datarray['post-reason'] = Item::PR_GLOBAL;
}
$datarray = self::setDirection($datarray, $direction);
$datarray['body'] = self::replacePeopleGuid($body, $contact['url']);
$datarray['raw-body'] = self::replacePeopleGuid($raw_body, $contact['url']);

View file

@ -33,6 +33,7 @@ use Friendica\Core\Protocol;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
use Friendica\Model\Conversation;
use Friendica\Model\Item;
use Friendica\Model\Post;
use Friendica\Model\Tag;
@ -98,9 +99,11 @@ class Feed
$author = [];
$entries = null;
$protocol = Conversation::PARCEL_UNKNOWN;
// Is it RDF?
if ($xpath->query('/rdf:RDF/rss:channel')->length > 0) {
$protocol = Conversation::PARCEL_RDF;
$author['author-link'] = XML::getFirstNodeValue($xpath, '/rdf:RDF/rss:channel/rss:link/text()');
$author['author-name'] = XML::getFirstNodeValue($xpath, '/rdf:RDF/rss:channel/rss:title/text()');
@ -112,6 +115,7 @@ class Feed
// Is it Atom?
if ($xpath->query('/atom:feed')->length > 0) {
$protocol = Conversation::PARCEL_ATOM;
$alternate = XML::getFirstAttributes($xpath, "atom:link[@rel='alternate']");
if (is_object($alternate)) {
foreach ($alternate as $attribute) {
@ -195,6 +199,7 @@ class Feed
// Is it RSS?
if ($xpath->query('/rss/channel')->length > 0) {
$protocol = Conversation::PARCEL_RSS;
$author['author-link'] = XML::getFirstNodeValue($xpath, '/rss/channel/link/text()');
$author['author-name'] = XML::getFirstNodeValue($xpath, '/rss/channel/title/text()');
@ -250,6 +255,8 @@ class Feed
$header = [];
$header['uid'] = $importer['uid'] ?? 0;
$header['network'] = Protocol::FEED;
$datarray['protocol'] = $protocol;
$datarray['direction'] = Conversation::PULL;
$header['wall'] = 0;
$header['origin'] = 0;
$header['gravity'] = GRAVITY_PARENT;