aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/config.php21
-rw-r--r--include/settings.php77
-rw-r--r--mod/settings.php11
-rw-r--r--version.inc2
4 files changed, 102 insertions, 9 deletions
diff --git a/include/config.php b/include/config.php
index 6a134deae..1f7a4dbd7 100644
--- a/include/config.php
+++ b/include/config.php
@@ -195,7 +195,18 @@ function set_pconfig($uid,$family,$key,$value) {
if(! array_key_exists($family,$a->config[$uid]))
$a->config[$uid][$family] = array();
+ // keep a separate copy for all variables which were
+ // set in the life of this page. We need this to
+ // synchronise channel clones.
+
+ if(! array_key_exists('transient',$a->config[$uid]))
+ $a->config[$uid]['transient'] = array();
+ if(! array_key_exists($family,$a->config[$uid]['transient']))
+ $a->config[$uid]['transient'][$family] = array();
+
$a->config[$uid][$family][$key] = $value;
+ $a->config[$uid]['transient'][$family][$key] = $value;
+
$ret = q("INSERT INTO pconfig ( uid, cat, k, v ) VALUES ( %d, '%s', '%s', '%s' ) ",
intval($uid),
dbesc($family),
@@ -214,7 +225,17 @@ function set_pconfig($uid,$family,$key,$value) {
dbesc($key)
);
+ // keep a separate copy for all variables which were
+ // set in the life of this page. We need this to
+ // synchronise channel clones.
+
+ if(! array_key_exists('transient',$a->config[$uid]))
+ $a->config[$uid]['transient'] = array();
+ if(! array_key_exists($family,$a->config[$uid]['transient']))
+ $a->config[$uid]['transient'][$family] = array();
+
$a->config[$uid][$family][$key] = $value;
+ $a->config[$uid]['transient'][$family][$key] = $value;
if($ret)
return $value;
diff --git a/include/settings.php b/include/settings.php
new file mode 100644
index 000000000..9266932f2
--- /dev/null
+++ b/include/settings.php
@@ -0,0 +1,77 @@
+<?php /** @file */
+
+function build_sync_packet($packet = null) {
+ $a = get_app();
+
+ $uid = local_user();
+ if(! $uid)
+ return;
+
+ $channel = $a->get_channel();
+
+ $h = q("select * from hubloc where hubloc_hash = '%s'",
+ dbesc($channel['channel_hash'])
+ );
+
+ if(! $h)
+ return;
+
+ $synchubs = array();
+
+ foreach($h as $x) {
+ if($x['host'] == $a->get_hostname())
+ continue;
+ $synchubs[] = $x;
+ }
+
+ if(! $synchubs)
+ return;
+
+ $info = (($packet) ? $packet : array());
+
+ if(array_key_exists($uid,$a->config) && array_key_exists('transient',$a->config[$uid])) {
+ $settings = $a->config[$uid]['transient'];
+ if($settings) {
+ $info['config'] = $settings;
+ }
+ }
+
+ if($channel) {
+ $info['channel'] = array();
+ foreach($channel as $k => $v) {
+ if(strpos('channel_',$k) !== 0)
+ continue;
+ if($k === 'channel_id')
+ continue;
+ if($k === 'channel_account_id')
+ continue;
+ $info['channel'][$k] = $v;
+ }
+ }
+
+ $interval = ((get_config('system','delivery_interval') !== false)
+ ? intval(get_config('system','delivery_interval')) : 2 );
+
+
+ foreach($synchubs as $hub) {
+ $hash = random_string();
+ $n = zot_build_packet($channel,'channel_sync');
+ 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']),
+ intval($channel['channel_id']),
+ dbesc($hub['hubloc_callback']),
+ intval(1),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc($n),
+ dbesc($info)
+ );
+
+ proc_run('php','include/deliver.php',$hash);
+ if($interval)
+ @time_sleep_until(microtime(true) + (float) $interval);
+ }
+
+
+} \ No newline at end of file
diff --git a/mod/settings.php b/mod/settings.php
index a6d45e9b8..788514eca 100644
--- a/mod/settings.php
+++ b/mod/settings.php
@@ -1,5 +1,7 @@
<?php
+require_once('include/settings.php');
+
function get_theme_config_file($theme){
@@ -115,13 +117,6 @@ function settings_post(&$a) {
return;
-// if(count($a->user) && x($a->user,'uid') && $a->user['uid'] != local_user()) {
-// notice( t('Permission denied.') . EOL);
-// return;
-// }
-
- $old_page_flags = $a->user['page-flags'];
-
if((argc() > 1) && (argv(1) === 'oauth') && x($_POST,'remove')){
check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth');
@@ -292,7 +287,7 @@ function settings_post(&$a) {
$errs[] = t('Not valid email.');
$adm = trim(get_config('system','admin_email'));
if(($adm) && (strcasecmp($email,$adm) == 0)) {
- $errs[] = t('Protected email. Cannot change to that email.');
+ $errs[] = t('Protected email address. Cannot change to that email.');
$email = $a->user['email'];
}
if(! $errs) {
diff --git a/version.inc b/version.inc
index 2d9eb22c5..8cf348b02 100644
--- a/version.inc
+++ b/version.inc
@@ -1 +1 @@
-2013-06-23.353
+2013-06-25.355