From 7baeb451836752a612ca976db04aeffcafeb621d Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 2 Mar 2014 19:40:59 -0800 Subject: some anomolies found when viewing connections in various cases. --- boot.php | 4 +--- include/text.php | 12 +++++++++--- include/zot.php | 21 +++++++++++++++++++++ mod/zfinger.php | 16 ++++++++++++++-- view/css/mod_viewconnections.css | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 78 insertions(+), 8 deletions(-) create mode 100644 view/css/mod_viewconnections.css diff --git a/boot.php b/boot.php index 1c7e5f147..e2a168156 100755 --- a/boot.php +++ b/boot.php @@ -1810,9 +1810,7 @@ function construct_page(&$a) { if(! count($a->layout)) { $n = 'mod_' . $a->module . '.pdl' ; - $u = get_theme_uid(); - if((! $u) && $a->profile_uid) - $u = $a->profile_uid; + $u = comanche_get_channel_id(); if($u) $s = get_pconfig($u,'system',$n); if((! $s) && (($p = theme_include($n)) != '')) diff --git a/include/text.php b/include/text.php index dfd35c769..839e63f5e 100755 --- a/include/text.php +++ b/include/text.php @@ -665,8 +665,11 @@ function contact_block() { if((! is_array($a->profile)) || ($a->profile['hide_friends'])) return $o; - $r = q("SELECT COUNT(abook_id) AS total FROM abook WHERE abook_channel = %d and abook_flags = 0", - intval($a->profile['uid']) + $r = q("SELECT COUNT(abook_id) AS total FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d and abook_flags = 0 and not (xchan_flags & %d) and not (xchan_flags & %d) and not (xchan_flags & %d)", + intval($a->profile['uid']), + intval(XCHAN_FLAGS_HIDDEN), + intval(XCHAN_FLAGS_ORPHAN), + intval(XCHAN_FLAGS_DELETED) ); if(count($r)) { $total = intval($r[0]['total']); @@ -677,8 +680,11 @@ function contact_block() { } else { - $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash WHERE abook_channel = %d AND abook_flags = 0 ORDER BY RAND() LIMIT %d", + $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash WHERE abook_channel = %d AND abook_flags = 0 and not (xchan_flags & %d ) and not (xchan_flags & %d ) and not (xchan_flags & %d ) ORDER BY RAND() LIMIT %d", intval($a->profile['uid']), + intval(XCHAN_FLAGS_HIDDEN), + intval(XCHAN_FLAGS_ORPHAN), + intval(XCHAN_FLAGS_DELETED), intval($shown) ); diff --git a/include/zot.php b/include/zot.php index d7d7eb419..a52abfecd 100644 --- a/include/zot.php +++ b/include/zot.php @@ -330,8 +330,15 @@ function zot_refresh($them,$channel = null, $force = false) { else $permissions = $j['permissions']; + $connected_set = false; + if($permissions && is_array($permissions)) { foreach($permissions as $k => $v) { + // The connected permission means you are in their address book + if($k === 'connected') { + $connected_set = intval($v); + continue; + } if($v) { $their_perms = $their_perms | intval($global_perms[$k][1]); } @@ -353,6 +360,20 @@ function zot_refresh($them,$channel = null, $force = false) { intval($channel['channel_id']), intval(ABOOK_FLAG_SELF) ); + if($connected_set === 0) { + + // if they are in your address book but you aren't in theirs, mark their address book entry hidden. + + $y1 = q("update abook set abook_flags = (abook_flags | %d) + where abook_xchan = '%s' and abook_channel = %d + and not (abook_flags & %d) limit 1", + intval(ABOOK_FLAG_HIDDEN), + dbesc($x['hash']), + intval($channel['channel_id']), + intval(ABOOK_FLAG_SELF) + ); + } + if(! $y) logger('abook update failed'); else { diff --git a/mod/zfinger.php b/mod/zfinger.php index 94671271b..75abfefe4 100644 --- a/mod/zfinger.php +++ b/mod/zfinger.php @@ -176,10 +176,22 @@ function zfinger_init(&$a) { $ret['follow_url'] = z_root() . '/follow?f=&url=%s'; - $permissions = get_all_perms($e['channel_id'],(($ztarget && $zsig) + $ztarget_hash = (($ztarget && $zsig) ? base64url_encode(hash('whirlpool',$ztarget . $zsig,true)) - : '' ),false); + : '' ); + $permissions = get_all_perms($e['channel_id'],$ztarget_hash,false); + + $permissions['connected'] = false; + + if($ztarget_hash) { + $b = q("select * from abook where abook_xchan = '%s' and abook_channel = %d limit 1", + dbesc($ztarget_hash), + intval($e['channel_id']) + ); + if($b) + $permissions['connected'] = true; + } $ret['permissions'] = (($ztarget && $zkey) ? aes_encapsulate(json_encode($permissions),$zkey) : $permissions); diff --git a/view/css/mod_viewconnections.css b/view/css/mod_viewconnections.css new file mode 100644 index 000000000..56add4cac --- /dev/null +++ b/view/css/mod_viewconnections.css @@ -0,0 +1,33 @@ + + +.contact-entry-wrapper { + float: left; + width: 120px; + height: 120px; + padding: 10px; +} + +#contacts-search { + font-size: 1em; + width: 300px; +} + +#contacts-search-end { + margin-bottom: 10px; +} + +.contact-entry-photo-end { + clear: both; +} + +.contact-entry-name { + float: left; + margin-left: 0px; + margin-right: 10px; + width: 120px; + overflow: hidden; +} + +.contact-entry-end { + clear: both; +} -- cgit v1.2.3