aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/settings.php33
-rw-r--r--include/zot.php8
2 files changed, 35 insertions, 6 deletions
diff --git a/include/settings.php b/include/settings.php
index 94cb6f65b..e53cfedfa 100644
--- a/include/settings.php
+++ b/include/settings.php
@@ -1,9 +1,17 @@
<?php /** @file */
-function build_sync_packet($packet = null) {
+/**
+ * Send a zot packet to all hubs where this channel is duplicated, refreshing
+ * such things as personal settings, channel permissions, address book updates, etc.
+ */
+
+
+function build_sync_packet($uid = 0, $packet = null) {
$a = get_app();
- $uid = local_user();
+ if(! $uid)
+ $uid = local_user();
+
if(! $uid)
return;
@@ -27,6 +35,15 @@ function build_sync_packet($packet = null) {
if(! $synchubs)
return;
+ $r = q("select xchan_guid, xchan_guid_sig from xchan where xchan_hash = '%s' limit 1",
+ dbesc($channel['channel_hash'])
+ );
+ if(! $r)
+ return;
+
+ $env_recips = array();
+ $env_recips[] = array('guid' => $r[0]['xchan_guid'],'guid_sig' => $r[0]['xchan_guid_sig']);
+
$info = (($packet) ? $packet : array());
if(array_key_exists($uid,$a->config) && array_key_exists('transient',$a->config[$uid])) {
@@ -41,10 +58,14 @@ function build_sync_packet($packet = null) {
foreach($channel as $k => $v) {
if(strpos('channel_',$k) !== 0)
continue;
- if($k === 'channel_id')
- continue;
- if($k === 'channel_account_id')
+
+ // don't pass these elements, they should not be synchronised
+
+ $disallowed = array('channel_id','channel_account_id','channel_primary','channel_prvkey');
+
+ if(in_array($k,$disallowed))
continue;
+
$info['channel'][$k] = $v;
}
}
@@ -55,7 +76,7 @@ function build_sync_packet($packet = null) {
foreach($synchubs as $hub) {
$hash = random_string();
- $n = zot_build_packet($channel,'channel_sync');
+ $n = zot_build_packet($channel,'channel_sync',$env_recips,$hub['hubloc_sitekey'],null,$hash);
q("insert into outq ( outq_hash, outq_account, outq_channel, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg ) values ( '%s', %d, %d, '%s', %d, '%s', '%s', '%s', '%s' )",
dbesc($hash),
intval($channel['channel_account']),
diff --git a/include/zot.php b/include/zot.php
index 689af2dac..14a29005d 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -874,8 +874,16 @@ function zot_import($arr) {
$result = process_profile_delivery($i['notify']['sender'],$arr,$deliveries);
}
+ elseif($i['message']['type'] === 'channel_sync') {
+// $arr = get_channelsync_elements($i['message']);
+ $arr = $i['message'];
+ logger('Channel sync received: ' . print_r($arr,true), LOGGER_DATA);
+ logger('Channel sync recipients: ' . print_r($deliveries,true), LOGGER_DATA);
+
+// $result = process_channelsync_delivery($i['notify']['sender'],$arr,$deliveries);
+ }
}
if($result)
$return = array_merge($return,$result);