implement the singleton delivery stuff
This commit is contained in:
parent
509f25e46a
commit
a67fa2651d
@ -499,6 +499,7 @@ function import_items($channel,$items,$sync = false) {
|
|||||||
$deliver = false; // Don't deliver any messages or notifications when importing
|
$deliver = false; // Don't deliver any messages or notifications when importing
|
||||||
|
|
||||||
foreach($items as $i) {
|
foreach($items as $i) {
|
||||||
|
$item_result = false;
|
||||||
$item = get_item_elements($i,$allow_code);
|
$item = get_item_elements($i,$allow_code);
|
||||||
if(! $item)
|
if(! $item)
|
||||||
continue;
|
continue;
|
||||||
@ -511,7 +512,13 @@ function import_items($channel,$items,$sync = false) {
|
|||||||
if($item['edited'] > $r[0]['edited']) {
|
if($item['edited'] > $r[0]['edited']) {
|
||||||
$item['id'] = $r[0]['id'];
|
$item['id'] = $r[0]['id'];
|
||||||
$item['uid'] = $channel['channel_id'];
|
$item['uid'] = $channel['channel_id'];
|
||||||
item_store_update($item,$allow_code,$deliver);
|
$item_result = item_store_update($item,$allow_code,$deliver);
|
||||||
|
if($sync && $item['item_wall']) {
|
||||||
|
// deliver singletons if we have any
|
||||||
|
if($item_result && $item_result['success']) {
|
||||||
|
proc_run('php','include/notifier.php','single_activity',$item_result['item_id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -520,8 +527,11 @@ function import_items($channel,$items,$sync = false) {
|
|||||||
$item['uid'] = $channel['channel_id'];
|
$item['uid'] = $channel['channel_id'];
|
||||||
$item_result = item_store($item,$allow_code,$deliver);
|
$item_result = item_store($item,$allow_code,$deliver);
|
||||||
}
|
}
|
||||||
if($sync) {
|
if($sync && $item['item_wall']) {
|
||||||
// deliver singletons if we have any
|
// deliver singletons if we have any
|
||||||
|
if($item_result && $item_result['success']) {
|
||||||
|
proc_run('php','include/notifier.php','single_activity',$item_result['item_id']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -842,7 +852,7 @@ function import_conv($channel,$convs) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
function import_mail($channel,$mails) {
|
function import_mail($channel,$mails,$sync = false) {
|
||||||
if($channel && $mails) {
|
if($channel && $mails) {
|
||||||
foreach($mails as $mail) {
|
foreach($mails as $mail) {
|
||||||
if(array_key_exists('flags',$mail) && in_array('deleted',$mail['flags'])) {
|
if(array_key_exists('flags',$mail) && in_array('deleted',$mail['flags'])) {
|
||||||
@ -866,12 +876,17 @@ function import_mail($channel,$mails) {
|
|||||||
|
|
||||||
$m['aid'] = $channel['channel_account_id'];
|
$m['aid'] = $channel['channel_account_id'];
|
||||||
$m['uid'] = $channel['channel_id'];
|
$m['uid'] = $channel['channel_id'];
|
||||||
mail_store($m);
|
$mail_id = mail_store($m);
|
||||||
|
if($sync && $mail_id) {
|
||||||
|
proc_run('php','include/notifier.php','single_mail',$mail_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sync_mail($channel,$mails) {
|
||||||
|
import_mail($channel,$mails,true);
|
||||||
|
}
|
||||||
|
|
||||||
function sync_files($channel,$files) {
|
function sync_files($channel,$files) {
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ function notifier_run($argv, $argc){
|
|||||||
$normal_mode = true;
|
$normal_mode = true;
|
||||||
$packet_type = 'undefined';
|
$packet_type = 'undefined';
|
||||||
|
|
||||||
if($cmd === 'mail') {
|
if($cmd === 'mail' || $cmd === 'single_mail') {
|
||||||
$normal_mode = false;
|
$normal_mode = false;
|
||||||
$mail = true;
|
$mail = true;
|
||||||
$private = true;
|
$private = true;
|
||||||
@ -280,7 +280,7 @@ function notifier_run($argv, $argc){
|
|||||||
logger('notifier: target item not forwardable: type ' . $target_item['item_type'], LOGGER_DEBUG);
|
logger('notifier: target item not forwardable: type ' . $target_item['item_type'], LOGGER_DEBUG);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(intval($target_item['item_unpublished']) || intval($target_item['item_delayed'])) {
|
if(intval($target_item['item_unpublished']) || intval($target_item['item_delayed']) || intval($target_item['item_hidden'])) {
|
||||||
logger('notifier: target item not published, so not forwardable', LOGGER_DEBUG);
|
logger('notifier: target item not published, so not forwardable', LOGGER_DEBUG);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -454,6 +454,7 @@ function notifier_run($argv, $argc){
|
|||||||
'uplink' => $uplink,
|
'uplink' => $uplink,
|
||||||
'cmd' => $cmd,
|
'cmd' => $cmd,
|
||||||
'mail' => $mail,
|
'mail' => $mail,
|
||||||
|
'single' => (($cmd === 'single_mail' || $cmd === 'single_activity') ? true : false),
|
||||||
'location' => $location,
|
'location' => $location,
|
||||||
'request' => $request,
|
'request' => $request,
|
||||||
'normal_mode' => $normal_mode,
|
'normal_mode' => $normal_mode,
|
||||||
@ -550,6 +551,7 @@ function notifier_run($argv, $argc){
|
|||||||
'uplink' => $uplink,
|
'uplink' => $uplink,
|
||||||
'cmd' => $cmd,
|
'cmd' => $cmd,
|
||||||
'mail' => $mail,
|
'mail' => $mail,
|
||||||
|
'single' => (($cmd === 'single_mail' || $cmd === 'single_activity') ? true : false),
|
||||||
'location' => $location,
|
'location' => $location,
|
||||||
'request' => $request,
|
'request' => $request,
|
||||||
'normal_mode' => $normal_mode,
|
'normal_mode' => $normal_mode,
|
||||||
@ -568,6 +570,19 @@ function notifier_run($argv, $argc){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// singleton deliveries by definition 'not got zot'.
|
||||||
|
// Single deliveries are other federated networks (plugins) and we're essentially
|
||||||
|
// delivering only to those that have this site url in their abook_instance
|
||||||
|
// and only from within a sync operation. This means if you post from a clone,
|
||||||
|
// and a connection is connected to one of your other clones; assuming that hub
|
||||||
|
// is running it will receive a sync packet. On receipt of this sync packet it
|
||||||
|
// will invoke a delivery to those connections which are connected to just that
|
||||||
|
// hub instance.
|
||||||
|
|
||||||
|
if($cmd === 'single_mail' || $cmd === 'single_activity') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// default: zot protocol
|
// default: zot protocol
|
||||||
|
|
||||||
$hash = random_string();
|
$hash = random_string();
|
||||||
|
@ -3121,7 +3121,7 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
|
|||||||
import_conv($channel,$arr['conv']);
|
import_conv($channel,$arr['conv']);
|
||||||
|
|
||||||
if(array_key_exists('mail',$arr) && $arr['mail'])
|
if(array_key_exists('mail',$arr) && $arr['mail'])
|
||||||
import_mail($channel,$arr['mail']);
|
sync_mail($channel,$arr['mail']);
|
||||||
|
|
||||||
if(array_key_exists('event',$arr) && $arr['event'])
|
if(array_key_exists('event',$arr) && $arr['event'])
|
||||||
sync_events($channel,$arr['event']);
|
sync_events($channel,$arr['event']);
|
||||||
|
Reference in New Issue
Block a user