Merge pull request #5561 from MrPetovan/bug/4584-fix-twitter-gif-still-image
Restore source storing for Twitter conversations
This commit is contained in:
commit
ef1c73fb6b
7 changed files with 39 additions and 47 deletions
19
boot.php
19
boot.php
|
@ -179,25 +179,6 @@ define('CP_USERS_AND_GLOBAL', 2);
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* @name Protocols
|
|
||||||
* @deprecated since version 3.6
|
|
||||||
* @see Conversation
|
|
||||||
*
|
|
||||||
* Different protocols that we are storing
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
define('PROTOCOL_UNKNOWN' , Conversation::PROTOCOL_UNKNOWN);
|
|
||||||
define('PROTOCOL_DFRN' , Conversation::PROTOCOL_DFRN);
|
|
||||||
define('PROTOCOL_DIASPORA' , Conversation::PROTOCOL_DIASPORA);
|
|
||||||
define('PROTOCOL_OSTATUS_SALMON' , Conversation::PROTOCOL_OSTATUS_SALMON);
|
|
||||||
define('PROTOCOL_OSTATUS_FEED' , Conversation::PROTOCOL_OSTATUS_FEED); // Deprecated
|
|
||||||
define('PROTOCOL_GS_CONVERSATION', Conversation::PROTOCOL_GS_CONVERSATION); // Deprecated
|
|
||||||
define('PROTOCOL_SPLITTED_CONV' , Conversation::PROTOCOL_SPLITTED_CONV);
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name Network constants
|
* @name Network constants
|
||||||
* @deprecated since version 3.6
|
* @deprecated since version 3.6
|
||||||
|
|
|
@ -25,6 +25,7 @@ use Friendica\Core\System;
|
||||||
use Friendica\Core\Worker;
|
use Friendica\Core\Worker;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
use Friendica\Model\Conversation;
|
||||||
use Friendica\Model\Item;
|
use Friendica\Model\Item;
|
||||||
use Friendica\Protocol\Diaspora;
|
use Friendica\Protocol\Diaspora;
|
||||||
use Friendica\Protocol\Email;
|
use Friendica\Protocol\Email;
|
||||||
|
@ -643,7 +644,7 @@ function item_post(App $a) {
|
||||||
$datarray['api_source'] = $api_source;
|
$datarray['api_source'] = $api_source;
|
||||||
|
|
||||||
// This field is for storing the raw conversation data
|
// This field is for storing the raw conversation data
|
||||||
$datarray['protocol'] = PROTOCOL_DFRN;
|
$datarray['protocol'] = Conversation::PARCEL_DFRN;
|
||||||
|
|
||||||
$conversation = DBA::selectFirst('conversation', ['conversation-uri', 'conversation-href'], ['item-uri' => $datarray['parent-uri']]);
|
$conversation = DBA::selectFirst('conversation', ['conversation-uri', 'conversation-href'], ['item-uri' => $datarray['parent-uri']]);
|
||||||
if (DBA::isResult($conversation)) {
|
if (DBA::isResult($conversation)) {
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
/**
|
/**
|
||||||
* @file src/Model/Conversation
|
* @file src/Model/Conversation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Friendica\Model;
|
namespace Friendica\Model;
|
||||||
|
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
|
@ -11,13 +12,17 @@ require_once "include/dba.php";
|
||||||
|
|
||||||
class Conversation
|
class Conversation
|
||||||
{
|
{
|
||||||
const PROTOCOL_UNKNOWN = 0;
|
/*
|
||||||
const PROTOCOL_DFRN = 1;
|
* These constants represent the parcel format used to transport a conversation independently of the message protocol.
|
||||||
const PROTOCOL_DIASPORA = 2;
|
* It currently is stored in the "protocol" field for legacy reasons.
|
||||||
const PROTOCOL_OSTATUS_SALMON = 3;
|
*/
|
||||||
const PROTOCOL_OSTATUS_FEED = 4; // Deprecated
|
const PARCEL_UNKNOWN = 0;
|
||||||
const PROTOCOL_GS_CONVERSATION = 5; // Deprecated
|
const PARCEL_DFRN = 1;
|
||||||
const PROTOCOL_SPLITTED_CONV = 6;
|
const PARCEL_DIASPORA = 2;
|
||||||
|
const PARCEL_SALMON = 3;
|
||||||
|
const PARCEL_FEED = 4; // Deprecated
|
||||||
|
const PARCEL_SPLIT_CONVERSATION = 6;
|
||||||
|
const PARCEL_TWITTER = 67;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Store the conversation data
|
* @brief Store the conversation data
|
||||||
|
@ -25,8 +30,10 @@ class Conversation
|
||||||
* @param array $arr Item array with conversation data
|
* @param array $arr Item array with conversation data
|
||||||
* @return array Item array with removed conversation data
|
* @return array Item array with removed conversation data
|
||||||
*/
|
*/
|
||||||
public static function insert($arr) {
|
public static function insert(array $arr)
|
||||||
if (in_array(defaults($arr, 'network', NETWORK_PHANTOM), [NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS]) && !empty($arr['uri'])) {
|
{
|
||||||
|
if (in_array(defaults($arr, 'network', NETWORK_PHANTOM),
|
||||||
|
[NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS, NETWORK_TWITTER]) && !empty($arr['uri'])) {
|
||||||
$conversation = ['item-uri' => $arr['uri'], 'received' => DateTimeFormat::utcNow()];
|
$conversation = ['item-uri' => $arr['uri'], 'received' => DateTimeFormat::utcNow()];
|
||||||
|
|
||||||
if (isset($arr['parent-uri']) && ($arr['parent-uri'] != $arr['uri'])) {
|
if (isset($arr['parent-uri']) && ($arr['parent-uri'] != $arr['uri'])) {
|
||||||
|
@ -66,11 +73,13 @@ class Conversation
|
||||||
unset($conversation['source']);
|
unset($conversation['source']);
|
||||||
}
|
}
|
||||||
if (!DBA::update('conversation', $conversation, ['item-uri' => $conversation['item-uri']], $old_conv)) {
|
if (!DBA::update('conversation', $conversation, ['item-uri' => $conversation['item-uri']], $old_conv)) {
|
||||||
logger('Conversation: update for '.$conversation['item-uri'].' from '.$old_conv['protocol'].' to '.$conversation['protocol'].' failed', LOGGER_DEBUG);
|
logger('Conversation: update for ' . $conversation['item-uri'] . ' from ' . $old_conv['protocol'] . ' to ' . $conversation['protocol'] . ' failed',
|
||||||
|
LOGGER_DEBUG);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!DBA::insert('conversation', $conversation, true)) {
|
if (!DBA::insert('conversation', $conversation, true)) {
|
||||||
logger('Conversation: insert for '.$conversation['item-uri'].' (protocol '.$conversation['protocol'].') failed', LOGGER_DEBUG);
|
logger('Conversation: insert for ' . $conversation['item-uri'] . ' (protocol ' . $conversation['protocol'] . ') failed',
|
||||||
|
LOGGER_DEBUG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1240,7 +1240,7 @@ class Item extends BaseObject
|
||||||
$item['wall'] = 1;
|
$item['wall'] = 1;
|
||||||
$item['origin'] = 1;
|
$item['origin'] = 1;
|
||||||
$item['network'] = NETWORK_DFRN;
|
$item['network'] = NETWORK_DFRN;
|
||||||
$item['protocol'] = PROTOCOL_DFRN;
|
$item['protocol'] = Conversation::PARCEL_DFRN;
|
||||||
|
|
||||||
if (is_int($notify)) {
|
if (is_int($notify)) {
|
||||||
$priority = $notify;
|
$priority = $notify;
|
||||||
|
|
|
@ -20,12 +20,12 @@ use Friendica\Core\L10n;
|
||||||
use Friendica\Core\System;
|
use Friendica\Core\System;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
use Friendica\Model\Conversation;
|
||||||
use Friendica\Model\Event;
|
use Friendica\Model\Event;
|
||||||
use Friendica\Model\GContact;
|
use Friendica\Model\GContact;
|
||||||
use Friendica\Model\Group;
|
|
||||||
use Friendica\Model\Item;
|
use Friendica\Model\Item;
|
||||||
use Friendica\Model\Profile;
|
|
||||||
use Friendica\Model\PermissionSet;
|
use Friendica\Model\PermissionSet;
|
||||||
|
use Friendica\Model\Profile;
|
||||||
use Friendica\Model\User;
|
use Friendica\Model\User;
|
||||||
use Friendica\Object\Image;
|
use Friendica\Object\Image;
|
||||||
use Friendica\Util\Crypto;
|
use Friendica\Util\Crypto;
|
||||||
|
@ -2401,7 +2401,7 @@ class DFRN
|
||||||
|
|
||||||
$item = $header;
|
$item = $header;
|
||||||
|
|
||||||
$item["protocol"] = PROTOCOL_DFRN;
|
$item["protocol"] = Conversation::PARCEL_DFRN;
|
||||||
|
|
||||||
$item["source"] = $xml;
|
$item["source"] = $xml;
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ use Friendica\Core\System;
|
||||||
use Friendica\Core\Worker;
|
use Friendica\Core\Worker;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
use Friendica\Model\Conversation;
|
||||||
use Friendica\Model\GContact;
|
use Friendica\Model\GContact;
|
||||||
use Friendica\Model\Group;
|
use Friendica\Model\Group;
|
||||||
use Friendica\Model\Item;
|
use Friendica\Model\Item;
|
||||||
|
@ -1706,7 +1707,7 @@ class Diaspora
|
||||||
|
|
||||||
$datarray["object-type"] = ACTIVITY_OBJ_COMMENT;
|
$datarray["object-type"] = ACTIVITY_OBJ_COMMENT;
|
||||||
|
|
||||||
$datarray["protocol"] = PROTOCOL_DIASPORA;
|
$datarray["protocol"] = Conversation::PARCEL_DIASPORA;
|
||||||
$datarray["source"] = $xml;
|
$datarray["source"] = $xml;
|
||||||
|
|
||||||
$datarray["changed"] = $datarray["created"] = $datarray["edited"] = $created_at;
|
$datarray["changed"] = $datarray["created"] = $datarray["edited"] = $created_at;
|
||||||
|
@ -1968,7 +1969,7 @@ class Diaspora
|
||||||
|
|
||||||
$datarray = [];
|
$datarray = [];
|
||||||
|
|
||||||
$datarray["protocol"] = PROTOCOL_DIASPORA;
|
$datarray["protocol"] = Conversation::PARCEL_DIASPORA;
|
||||||
|
|
||||||
$datarray["uid"] = $importer["uid"];
|
$datarray["uid"] = $importer["uid"];
|
||||||
$datarray["contact-id"] = $author_contact["cid"];
|
$datarray["contact-id"] = $author_contact["cid"];
|
||||||
|
@ -2630,7 +2631,7 @@ class Diaspora
|
||||||
$datarray["verb"] = ACTIVITY_POST;
|
$datarray["verb"] = ACTIVITY_POST;
|
||||||
$datarray["gravity"] = GRAVITY_PARENT;
|
$datarray["gravity"] = GRAVITY_PARENT;
|
||||||
|
|
||||||
$datarray["protocol"] = PROTOCOL_DIASPORA;
|
$datarray["protocol"] = Conversation::PARCEL_DIASPORA;
|
||||||
$datarray["source"] = $xml;
|
$datarray["source"] = $xml;
|
||||||
|
|
||||||
$prefix = share_header(
|
$prefix = share_header(
|
||||||
|
@ -2858,7 +2859,7 @@ class Diaspora
|
||||||
$datarray["verb"] = ACTIVITY_POST;
|
$datarray["verb"] = ACTIVITY_POST;
|
||||||
$datarray["gravity"] = GRAVITY_PARENT;
|
$datarray["gravity"] = GRAVITY_PARENT;
|
||||||
|
|
||||||
$datarray["protocol"] = PROTOCOL_DIASPORA;
|
$datarray["protocol"] = Conversation::PARCEL_DIASPORA;
|
||||||
$datarray["source"] = $xml;
|
$datarray["source"] = $xml;
|
||||||
|
|
||||||
$datarray["body"] = self::replacePeopleGuid($body, $contact["url"]);
|
$datarray["body"] = self::replacePeopleGuid($body, $contact["url"]);
|
||||||
|
|
|
@ -370,7 +370,7 @@ class OStatus
|
||||||
$doc2->formatOutput = true;
|
$doc2->formatOutput = true;
|
||||||
$xml2 = $doc2->saveXML();
|
$xml2 = $doc2->saveXML();
|
||||||
|
|
||||||
$header["protocol"] = PROTOCOL_OSTATUS_SALMON;
|
$header["protocol"] = Conversation::PARCEL_SALMON;
|
||||||
$header["source"] = $xml2;
|
$header["source"] = $xml2;
|
||||||
} elseif (!$initialize) {
|
} elseif (!$initialize) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -798,7 +798,7 @@ class OStatus
|
||||||
|
|
||||||
$conv_data = [];
|
$conv_data = [];
|
||||||
|
|
||||||
$conv_data['protocol'] = PROTOCOL_SPLITTED_CONV;
|
$conv_data['protocol'] = Conversation::PARCEL_SPLIT_CONVERSATION;
|
||||||
$conv_data['network'] = NETWORK_OSTATUS;
|
$conv_data['network'] = NETWORK_OSTATUS;
|
||||||
$conv_data['uri'] = XML::getFirstNodeValue($xpath, 'atom:id/text()', $entry);
|
$conv_data['uri'] = XML::getFirstNodeValue($xpath, 'atom:id/text()', $entry);
|
||||||
|
|
||||||
|
@ -839,7 +839,7 @@ class OStatus
|
||||||
|
|
||||||
$conv_data['source'] = $doc2->saveXML();
|
$conv_data['source'] = $doc2->saveXML();
|
||||||
|
|
||||||
$condition = ['item-uri' => $conv_data['uri'],'protocol' => PROTOCOL_OSTATUS_FEED];
|
$condition = ['item-uri' => $conv_data['uri'],'protocol' => Conversation::PARCEL_FEED];
|
||||||
if (DBA::exists('conversation', $condition)) {
|
if (DBA::exists('conversation', $condition)) {
|
||||||
logger('Delete deprecated entry for URI '.$conv_data['uri'], LOGGER_DEBUG);
|
logger('Delete deprecated entry for URI '.$conv_data['uri'], LOGGER_DEBUG);
|
||||||
DBA::delete('conversation', ['item-uri' => $conv_data['uri']]);
|
DBA::delete('conversation', ['item-uri' => $conv_data['uri']]);
|
||||||
|
@ -863,7 +863,7 @@ class OStatus
|
||||||
*/
|
*/
|
||||||
private static function fetchSelf($self, array &$item)
|
private static function fetchSelf($self, array &$item)
|
||||||
{
|
{
|
||||||
$condition = ['`item-uri` = ? AND `protocol` IN (?, ?)', $self, PROTOCOL_DFRN, PROTOCOL_OSTATUS_SALMON];
|
$condition = ['`item-uri` = ? AND `protocol` IN (?, ?)', $self, Conversation::PARCEL_DFRN, Conversation::PARCEL_SALMON];
|
||||||
if (DBA::exists('conversation', $condition)) {
|
if (DBA::exists('conversation', $condition)) {
|
||||||
logger('Conversation '.$item['uri'].' is already stored.', LOGGER_DEBUG);
|
logger('Conversation '.$item['uri'].' is already stored.', LOGGER_DEBUG);
|
||||||
return;
|
return;
|
||||||
|
@ -882,7 +882,7 @@ class OStatus
|
||||||
$doc->formatOutput = true;
|
$doc->formatOutput = true;
|
||||||
$xml = $doc->saveXML();
|
$xml = $doc->saveXML();
|
||||||
|
|
||||||
$item["protocol"] = PROTOCOL_OSTATUS_SALMON;
|
$item["protocol"] = Conversation::PARCEL_SALMON;
|
||||||
$item["source"] = $xml;
|
$item["source"] = $xml;
|
||||||
|
|
||||||
logger('Conversation '.$item['uri'].' is now fetched.', LOGGER_DEBUG);
|
logger('Conversation '.$item['uri'].' is now fetched.', LOGGER_DEBUG);
|
||||||
|
@ -898,7 +898,7 @@ class OStatus
|
||||||
*/
|
*/
|
||||||
private static function fetchRelated($related, $related_uri, $importer)
|
private static function fetchRelated($related, $related_uri, $importer)
|
||||||
{
|
{
|
||||||
$condition = ['`item-uri` = ? AND `protocol` IN (?, ?)', $related_uri, PROTOCOL_DFRN, PROTOCOL_OSTATUS_SALMON];
|
$condition = ['`item-uri` = ? AND `protocol` IN (?, ?)', $related_uri, Conversation::PARCEL_DFRN, Conversation::PARCEL_SALMON];
|
||||||
$conversation = DBA::selectFirst('conversation', ['source', 'protocol'], $condition);
|
$conversation = DBA::selectFirst('conversation', ['source', 'protocol'], $condition);
|
||||||
if (DBA::isResult($conversation)) {
|
if (DBA::isResult($conversation)) {
|
||||||
$stored = true;
|
$stored = true;
|
||||||
|
@ -907,7 +907,7 @@ class OStatus
|
||||||
logger('Got valid cached XML for URI '.$related_uri, LOGGER_DEBUG);
|
logger('Got valid cached XML for URI '.$related_uri, LOGGER_DEBUG);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($conversation['protocol'] == PROTOCOL_OSTATUS_SALMON) {
|
if ($conversation['protocol'] == Conversation::PARCEL_SALMON) {
|
||||||
logger('Delete invalid cached XML for URI '.$related_uri, LOGGER_DEBUG);
|
logger('Delete invalid cached XML for URI '.$related_uri, LOGGER_DEBUG);
|
||||||
DBA::delete('conversation', ['item-uri' => $related_uri]);
|
DBA::delete('conversation', ['item-uri' => $related_uri]);
|
||||||
}
|
}
|
||||||
|
@ -978,7 +978,7 @@ class OStatus
|
||||||
|
|
||||||
// Finally we take the data that we fetched from "ostatus:conversation"
|
// Finally we take the data that we fetched from "ostatus:conversation"
|
||||||
if ($xml == '') {
|
if ($xml == '') {
|
||||||
$condition = ['item-uri' => $related_uri, 'protocol' => PROTOCOL_SPLITTED_CONV];
|
$condition = ['item-uri' => $related_uri, 'protocol' => Conversation::PARCEL_SPLIT_CONVERSATION];
|
||||||
$conversation = DBA::selectFirst('conversation', ['source'], $condition);
|
$conversation = DBA::selectFirst('conversation', ['source'], $condition);
|
||||||
if (DBA::isResult($conversation)) {
|
if (DBA::isResult($conversation)) {
|
||||||
$stored = true;
|
$stored = true;
|
||||||
|
|
Loading…
Reference in a new issue