push refresh messages, performance work on conversations and configs, doc updates

This commit is contained in:
friendica
2013-06-14 16:54:58 -07:00
parent 9b67e114ad
commit 765d6e0a97
37 changed files with 421 additions and 350 deletions

View File

@@ -129,19 +129,35 @@ function del_config($family,$key) {
function load_pconfig($uid,$family) {
global $a;
$r = q("SELECT * FROM `pconfig` WHERE `cat` = '%s' AND `uid` = %d",
dbesc($family),
intval($uid)
);
if(count($r)) {
if(! array_key_exists($uid,$a->config))
$a->config[$uid] = array();
if($family) {
$r = q("SELECT * FROM `pconfig` WHERE `cat` = '%s' AND `uid` = %d",
dbesc($family),
intval($uid)
);
}
else {
$r = q("SELECT * FROM `pconfig` WHERE `uid` = %d",
intval($uid)
);
}
if($r) {
foreach($r as $rr) {
$k = $rr['k'];
$a->config[$uid][$family][$k] = $rr['v'];
$c = $rr['cat'];
if(! array_key_exists($c,$a->config[$uid]))
$a->config[$uid][$c] = array();
$a->config[$uid][$c][$k] = $rr['v'];
}
} else if ($family != 'config') {
}
// else if ($family != 'config') {
// Negative caching
$a->config[$uid][$family] = "!<unset>!";
}
// $a->config[$uid][$family] = "!<unset>!";
// }
}

View File

@@ -365,7 +365,7 @@ function visible_activity($item) {
*
*/
if(!function_exists('conversation')) {
function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional') {
$tstart = dba_timer();
@@ -374,6 +374,8 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional') {
$ssl_state = ((local_user()) ? true : false);
if(local_user())
load_pconfig(local_user(),'');
$arr_blocked = null;
@@ -678,6 +680,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional') {
}
else
{
// Normal View
// logger('conv: items: ' . print_r($items,true));
@@ -790,7 +793,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional') {
return $o;
}}
}
function best_link_url($item) {

View File

@@ -23,11 +23,14 @@ function deliver_run($argv, $argc) {
if($r[0]['outq_posturl'] === z_root() . '/post') {
// local delivery
// we should probably batch these and save a few delivery processes
$msg = array('body' => json_encode(array('pickup' => array(array('notify' => json_decode($r[0]['outq_notify'],true),'message' => json_decode($r[0]['outq_msg'],true))))));
zot_import($msg);
$r = q("delete from outq where outq_hash = '%s' limit 1",
dbesc($argv[$x])
);
// If there is no outq_msg, this is a refresh_all message which does not require local handling
if($r[0]['outq_msg']) {
$msg = array('body' => json_encode(array('pickup' => array(array('notify' => json_decode($r[0]['outq_notify'],true),'message' => json_decode($r[0]['outq_msg'],true))))));
zot_import($msg);
$r = q("delete from outq where outq_hash = '%s' limit 1",
dbesc($argv[$x])
);
}
}
else {
$result = zot_zot($r[0]['outq_posturl'],$r[0]['outq_notify']);

View File

@@ -41,11 +41,16 @@ function directory_run($argv, $argc){
$url = DIRECTORY_FALLBACK_MASTER . '/post';
}
// ensure the upstream directory is updated
$packet = zot_build_packet($channel,'refresh');
$z = zot_zot($url,$packet);
// re-queue if unsuccessful
// Now update all the connections
proc_run('php','notifier','refresh_all',$channel['channel_id']);
}
if (array_search(__file__,get_included_files())===0){

View File

@@ -53,6 +53,7 @@ require_once('include/html2plain.php');
*
* ZOT
* permission_update abook_id
* refresh_all channel_id
* relay item_id (item was relayed to owner, we will deliver it as owner)
*
*/
@@ -136,6 +137,7 @@ function notifier_run($argv, $argc){
$recipients = array();
$url_recipients = array();
$normal_mode = true;
$packet_type = 'undefined';
if($cmd === 'mail') {
$normal_mode = false;
@@ -186,6 +188,27 @@ function notifier_run($argv, $argc){
$recipients[] = $suggest[0]['cid'];
$item = $suggest[0];
}
elseif($cmd === 'refresh_all') {
$s = q("select * from channel where channel_id = %d limit 1",
intval($item_id)
);
if($s)
$channel = $s[0];
$uid = $item_id;
$recipients = array();
$r = q("select * from abook where abook_channel = %d and not (abook_flags & %d) and not (abook_flags & %d)",
intval($item_id),
intval(ABOOK_FLAG_SELF),
intval(ABOOK_FLAG_PENDING)
);
if($r) {
foreach($r as $rr) {
$recipients[] = $rr['abook_xchan'];
}
}
$private = false;
$packet_type = 'refresh';
}
else {
// Normal items
@@ -346,18 +369,34 @@ function notifier_run($argv, $argc){
foreach($hubs as $hub) {
$hash = random_string();
$n = zot_build_packet($channel,'notify',$env_recips,(($private) ? $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($target_item['aid']),
intval($target_item['uid']),
dbesc($hub['hubloc_callback']),
intval(1),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc($n),
dbesc(json_encode($encoded_item))
);
if($packet_type === 'refresh') {
$n = zot_build_packet($channel,'refresh');
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('')
);
}
else {
$n = zot_build_packet($channel,'notify',$env_recips,(($private) ? $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($target_item['aid']),
intval($target_item['uid']),
dbesc($hub['hubloc_callback']),
intval(1),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc($n),
dbesc(json_encode($encoded_item))
);
}
$deliver[] = $hash;
if(count($deliver) >= $deliveries_per_process) {