diff options
author | friendica <info@friendica.com> | 2013-06-25 18:15:17 -0700 |
---|---|---|
committer | friendica <info@friendica.com> | 2013-06-25 18:15:17 -0700 |
commit | 57c7f725f67ac868b54d0dbff2d4fb0122af3954 (patch) | |
tree | e107cfdc48e8b49141a672559ca82d441adf6a1a | |
parent | a0a91fc9719c0eb665043417ea582727f24a2cde (diff) | |
download | volse-hubzilla-57c7f725f67ac868b54d0dbff2d4fb0122af3954.tar.gz volse-hubzilla-57c7f725f67ac868b54d0dbff2d4fb0122af3954.tar.bz2 volse-hubzilla-57c7f725f67ac868b54d0dbff2d4fb0122af3954.zip |
begin code to sync channel changes across all channel clones.
-rw-r--r-- | include/config.php | 21 | ||||
-rw-r--r-- | include/settings.php | 77 | ||||
-rw-r--r-- | mod/settings.php | 11 | ||||
-rw-r--r-- | version.inc | 2 |
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 |