mirror of
https://github.com/friendica/friendica
synced 2024-11-10 05:42:54 +00:00
give post a chance to arrive before rejecting photos from Diaspora
This commit is contained in:
parent
d62483f526
commit
1507ec37a4
6 changed files with 108 additions and 14 deletions
2
boot.php
2
boot.php
|
@ -14,7 +14,7 @@ require_once('include/features.php');
|
||||||
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
||||||
define ( 'FRIENDICA_VERSION', '3.1.1584' );
|
define ( 'FRIENDICA_VERSION', '3.1.1584' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1157 );
|
define ( 'DB_UPDATE_VERSION', 1158 );
|
||||||
|
|
||||||
define ( 'EOL', "<br />\r\n" );
|
define ( 'EOL', "<br />\r\n" );
|
||||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||||
|
|
14
database.sql
14
database.sql
|
@ -241,6 +241,20 @@ CREATE TABLE IF NOT EXISTS `deliverq` (
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `dsprphotoq`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `dsprphotoq` (
|
||||||
|
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
`uid` int(11) NOT NULL,
|
||||||
|
`msg` mediumtext NOT NULL,
|
||||||
|
`attempt` tinyint(4) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `event`
|
-- Table structure for table `event`
|
||||||
--
|
--
|
||||||
|
|
|
@ -16,7 +16,9 @@ function diaspora_dispatch_public($msg) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN ( SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s' ) AND `account_expired` = 0 AND `account_removed` = 0 ",
|
$r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN
|
||||||
|
( SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s' )
|
||||||
|
AND `account_expired` = 0 AND `account_removed` = 0 ",
|
||||||
dbesc(NETWORK_DIASPORA),
|
dbesc(NETWORK_DIASPORA),
|
||||||
dbesc($msg['author'])
|
dbesc($msg['author'])
|
||||||
);
|
);
|
||||||
|
@ -32,7 +34,7 @@ function diaspora_dispatch_public($msg) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function diaspora_dispatch($importer,$msg) {
|
function diaspora_dispatch($importer,$msg,$attempt=1) {
|
||||||
|
|
||||||
$ret = 0;
|
$ret = 0;
|
||||||
|
|
||||||
|
@ -88,7 +90,7 @@ function diaspora_dispatch($importer,$msg) {
|
||||||
$ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg);
|
$ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg);
|
||||||
}
|
}
|
||||||
elseif($xmlbase->photo) {
|
elseif($xmlbase->photo) {
|
||||||
$ret = diaspora_photo($importer,$xmlbase->photo,$msg);
|
$ret = diaspora_photo($importer,$xmlbase->photo,$msg,$attempt);
|
||||||
}
|
}
|
||||||
elseif($xmlbase->conversation) {
|
elseif($xmlbase->conversation) {
|
||||||
$ret = diaspora_conversation($importer,$xmlbase->conversation,$msg);
|
$ret = diaspora_conversation($importer,$xmlbase->conversation,$msg);
|
||||||
|
@ -1655,7 +1657,7 @@ function diaspora_message($importer,$xml,$msg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function diaspora_photo($importer,$xml,$msg) {
|
function diaspora_photo($importer,$xml,$msg,$attempt=1) {
|
||||||
|
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
|
||||||
|
@ -1693,7 +1695,14 @@ function diaspora_photo($importer,$xml,$msg) {
|
||||||
dbesc($status_message_guid)
|
dbesc($status_message_guid)
|
||||||
);
|
);
|
||||||
if(! count($r)) {
|
if(! count($r)) {
|
||||||
logger('diaspora_photo: parent item not found: parent: ' . $parent_guid . ' item: ' . $guid);
|
if($attempt <= 3) {
|
||||||
|
q("INSERT INTO dsprphotoq (uid, msg, attempt) VALUES (%d, '%s', %d)",
|
||||||
|
intval($importer['uid']),
|
||||||
|
dbesc(serialize($msg)),
|
||||||
|
intval($attempt + 1)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
logger('diaspora_photo: attempt = ' . $attempt . '; status message not found: ' . $status_message_guid . ' for photo: ' . $guid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2197,7 +2206,7 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
|
||||||
$images = array();
|
$images = array();
|
||||||
|
|
||||||
$title = $item['title'];
|
$title = $item['title'];
|
||||||
$body = $item['body'];
|
$body = fix_private_photos($item['body'], $owner['uid'], $item, $contact['id']);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// We're trying to match Diaspora's split message/photo protocol but
|
// We're trying to match Diaspora's split message/photo protocol but
|
||||||
|
@ -2320,12 +2329,12 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
|
||||||
// $theiraddr = $contact['addr'];
|
// $theiraddr = $contact['addr'];
|
||||||
|
|
||||||
// Diaspora doesn't support threaded comments
|
// Diaspora doesn't support threaded comments
|
||||||
/*if($item['thr-parent']) {
|
if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) {
|
||||||
$p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
|
$p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
|
||||||
dbesc($item['thr-parent'])
|
dbesc($item['thr-parent'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {*/
|
else {
|
||||||
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
|
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
|
||||||
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
|
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
|
||||||
// The only item with `parent` and `id` as the parent id is the parent item.
|
// The only item with `parent` and `id` as the parent id is the parent item.
|
||||||
|
@ -2333,7 +2342,7 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
|
||||||
intval($item['parent']),
|
intval($item['parent']),
|
||||||
intval($item['parent'])
|
intval($item['parent'])
|
||||||
);
|
);
|
||||||
//}
|
}
|
||||||
if(count($p))
|
if(count($p))
|
||||||
$parent = $p[0];
|
$parent = $p[0];
|
||||||
else
|
else
|
||||||
|
@ -2396,12 +2405,12 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||||
$text = html_entity_decode(bb2diaspora($body));
|
$text = html_entity_decode(bb2diaspora($body));
|
||||||
|
|
||||||
// Diaspora doesn't support threaded comments
|
// Diaspora doesn't support threaded comments
|
||||||
/*if($item['thr-parent']) {
|
if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) {
|
||||||
$p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
|
$p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
|
||||||
dbesc($item['thr-parent'])
|
dbesc($item['thr-parent'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {*/
|
else {
|
||||||
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
|
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
|
||||||
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
|
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
|
||||||
// The only item with `parent` and `id` as the parent id is the parent item.
|
// The only item with `parent` and `id` as the parent id is the parent item.
|
||||||
|
@ -2409,7 +2418,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||||
intval($item['parent']),
|
intval($item['parent']),
|
||||||
intval($item['parent'])
|
intval($item['parent'])
|
||||||
);
|
);
|
||||||
//}
|
}
|
||||||
if(count($p))
|
if(count($p))
|
||||||
$parent = $p[0];
|
$parent = $p[0];
|
||||||
else
|
else
|
||||||
|
|
50
include/dsprphotoq.php
Normal file
50
include/dsprphotoq.php
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
require_once("boot.php");
|
||||||
|
require_once('include/diaspora.php');
|
||||||
|
|
||||||
|
function dsprphotoq_run($argv, $argc){
|
||||||
|
global $a, $db;
|
||||||
|
|
||||||
|
if(is_null($a)){
|
||||||
|
$a = new App;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(is_null($db)){
|
||||||
|
@include(".htconfig.php");
|
||||||
|
require_once("include/dba.php");
|
||||||
|
$db = new dba($db_host, $db_user, $db_pass, $db_data);
|
||||||
|
unset($db_host, $db_user, $db_pass, $db_data);
|
||||||
|
};
|
||||||
|
|
||||||
|
logger("diaspora photo queue: running", LOGGER_DEBUG);
|
||||||
|
|
||||||
|
$r = q("SELECT * FROM dsprphotoq");
|
||||||
|
if(!$r)
|
||||||
|
return;
|
||||||
|
|
||||||
|
$dphotos = $r;
|
||||||
|
|
||||||
|
logger("diaspora photo queue: processing " . count($dphotos) . " photos");
|
||||||
|
|
||||||
|
foreach($dphotos as $dphoto) {
|
||||||
|
|
||||||
|
$r = q("SELECT * FROM user WHERE uid = %d",
|
||||||
|
intval($dphoto['uid'])
|
||||||
|
);
|
||||||
|
if(!$r) {
|
||||||
|
logger("diaspora photo queue: user " . $dphoto['uid'] . " not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$ret = diaspora_dispatch($r[0],unserialize($dphoto['msg']),$dphoto['attempt']);
|
||||||
|
q("DELETE FROM dsprphotoq WHERE id = %d",
|
||||||
|
intval($dphoto['id'])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (array_search(__file__,get_included_files())===0){
|
||||||
|
dsprphotoq_run($argv,$argc);
|
||||||
|
killme();
|
||||||
|
}
|
|
@ -62,6 +62,10 @@ function poller_run(&$argv, &$argc){
|
||||||
|
|
||||||
proc_run('php',"include/queue.php");
|
proc_run('php',"include/queue.php");
|
||||||
|
|
||||||
|
// run diaspora photo queue process in the background
|
||||||
|
|
||||||
|
proc_run('php',"include/dsprphotoq.php");
|
||||||
|
|
||||||
// expire any expired accounts
|
// expire any expired accounts
|
||||||
|
|
||||||
q("UPDATE user SET `account_expired` = 1 where `account_expired` = 0
|
q("UPDATE user SET `account_expired` = 1 where `account_expired` = 0
|
||||||
|
|
19
update.php
19
update.php
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1157 );
|
define( 'UPDATE_VERSION' , 1158 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -1369,3 +1369,20 @@ ADD INDEX ( `datasize` ) ");
|
||||||
if(!$r) return UPDATE_FAILED;
|
if(!$r) return UPDATE_FAILED;
|
||||||
return UPDATE_SUCCESS;
|
return UPDATE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_1157() {
|
||||||
|
$r = q("CREATE TABLE IF NOT EXISTS `dsprphotoq` (
|
||||||
|
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
`uid` int(11) NOT NULL,
|
||||||
|
`msg` mediumtext NOT NULL,
|
||||||
|
`attempt` tinyint(4) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8"
|
||||||
|
);
|
||||||
|
|
||||||
|
if($r)
|
||||||
|
return UPDATE_SUCCESS;
|
||||||
|
|
||||||
|
return UPDATE_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue