From c058be9908aa822bd31e21913c40bb21f44a4c52 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 28 Jan 2015 01:22:42 +0100 Subject: [PATCH] Issue 1323: Contact pictures from the acl selector weren't proxied. --- include/acl_selectors.php | 75 ++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 6137136305..668544b0bc 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -2,13 +2,14 @@ require_once("include/contact_selectors.php"); require_once("include/features.php"); +require_once("mod/proxy.php"); /** - * + * */ /** - * @package acl_selectors + * @package acl_selectors */ function group_select($selname,$selclass,$preselected = false,$size = 4) { @@ -245,7 +246,7 @@ function prune_deadguys($arr) { $r = q("select id from contact where id in ( " . $str . ") and blocked = 0 and pending = 0 and archive = 0 "); if($r) { $ret = array(); - foreach($r as $rr) + foreach($r as $rr) $ret[] = intval($rr['id']); return $ret; } @@ -257,7 +258,7 @@ function get_acl_permissions($user = null) { $allow_cid = $allow_gid = $deny_cid = $deny_gid = false; if(is_array($user)) { - $allow_cid = ((strlen($user['allow_cid'])) + $allow_cid = ((strlen($user['allow_cid'])) ? explode('><', $user['allow_cid']) : array() ); $allow_gid = ((strlen($user['allow_gid'])) ? explode('><', $user['allow_gid']) : array() ); @@ -417,21 +418,21 @@ function acl_lookup(&$a, $out_type = 'json') { } if ($type=='' || $type=='c'){ - $r = q("SELECT COUNT(*) AS c FROM `contact` - WHERE `uid` = %d AND `self` = 0 + $r = q("SELECT COUNT(*) AS c FROM `contact` + WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != '' $sql_extra2" , intval(local_user()) ); $contact_count = (int)$r[0]['c']; - } + } elseif ($type == 'm') { // autocomplete for Private Messages - $r = q("SELECT COUNT(*) AS c FROM `contact` - WHERE `uid` = %d AND `self` = 0 - AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 + $r = q("SELECT COUNT(*) AS c FROM `contact` + WHERE `uid` = %d AND `self` = 0 + AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `network` IN ('%s','%s','%s') $sql_extra2" , intval(local_user()), dbesc(NETWORK_DFRN), @@ -445,8 +446,8 @@ function acl_lookup(&$a, $out_type = 'json') { // autocomplete for Contacts - $r = q("SELECT COUNT(*) AS c FROM `contact` - WHERE `uid` = %d AND `self` = 0 + $r = q("SELECT COUNT(*) AS c FROM `contact` + WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra2" , intval(local_user()) ); @@ -455,22 +456,22 @@ function acl_lookup(&$a, $out_type = 'json') { } else { $contact_count = 0; } - - + + $tot = $group_count+$contact_count; - + $groups = array(); $contacts = array(); - + if ($type=='' || $type=='g'){ - + $r = q("SELECT `group`.`id`, `group`.`name`, GROUP_CONCAT(DISTINCT `group_member`.`contact-id` SEPARATOR ',') as uids - FROM `group`,`group_member` - WHERE `group`.`deleted` = 0 AND `group`.`uid` = %d + FROM `group`,`group_member` + WHERE `group`.`deleted` = 0 AND `group`.`uid` = %d AND `group_member`.`gid`=`group`.`id` $sql_extra GROUP BY `group`.`id` - ORDER BY `group`.`name` + ORDER BY `group`.`name` LIMIT %d,%d", intval(local_user()), intval($start), @@ -478,7 +479,7 @@ function acl_lookup(&$a, $out_type = 'json') { ); foreach($r as $g){ -// logger('acl: group: ' . $g['name'] . ' members: ' . $g['uids']); +// logger('acl: group: ' . $g['name'] . ' members: ' . $g['uids']); $groups[] = array( "type" => "g", "photo" => "images/twopeople.png", @@ -490,10 +491,10 @@ function acl_lookup(&$a, $out_type = 'json') { ); } } - + if ($type=='' || $type=='c'){ - - $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, forum FROM `contact` + + $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, forum FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != '' $sql_extra2 ORDER BY `name` ASC ", @@ -501,7 +502,7 @@ function acl_lookup(&$a, $out_type = 'json') { ); } elseif($type == 'm') { - $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact` + $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `network` IN ('%s','%s','%s') $sql_extra2 @@ -513,7 +514,7 @@ function acl_lookup(&$a, $out_type = 'json') { ); } elseif($type == 'a') { - $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact` + $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact` WHERE `uid` = %d AND `pending` = 0 $sql_extra2 ORDER BY `name` ASC ", @@ -533,7 +534,7 @@ function acl_lookup(&$a, $out_type = 'json') { $x['data'] = array(); if(count($r)) { foreach($r as $g) { - $x['photos'][] = $g['micro']; + $x['photos'][] = proxy_url($g['micro']); $x['links'][] = $g['url']; $x['suggestions'][] = $g['name']; $x['data'][] = intval($g['id']); @@ -547,7 +548,7 @@ function acl_lookup(&$a, $out_type = 'json') { foreach($r as $g){ $contacts[] = array( "type" => "c", - "photo" => $g['micro'], + "photo" => proxy_url($g['micro']), "name" => $g['name'], "id" => intval($g['id']), "network" => $g['network'], @@ -555,28 +556,28 @@ function acl_lookup(&$a, $out_type = 'json') { "nick" => ($g['attag']) ? $g['attag'] : $g['nick'], "forum" => $g['forum'] ); - } + } } - + $items = array_merge($groups, $contacts); if ($conv_id) { - /* if $conv_id is set, get unknow contacts in thread */ + /* if $conv_id is set, get unknow contacts in thread */ /* but first get know contacts url to filter them out */ function _contact_link($i){ return dbesc($i['link']); } $known_contacts = array_map(_contact_link, $contacts); $unknow_contacts=array(); - $r = q("select + $r = q("select `author-avatar`,`author-name`,`author-link` from item where parent=%d and ( `author-name` LIKE '%%%s%%' OR `author-link` LIKE '%%%s%%' - ) and + ) and `author-link` NOT IN ('%s') GROUP BY `author-link` ORDER BY `author-name` ASC - ", + ", intval($conv_id), dbesc($search), dbesc($search), @@ -592,7 +593,7 @@ function acl_lookup(&$a, $out_type = 'json') { // /nickname $unknow_contacts[] = array( "type" => "c", - "photo" => $row['author-avatar'], + "photo" => proxy_url($row['author-avatar']), "name" => $row['author-name'], "id" => '', "network" => "unknown", @@ -617,14 +618,14 @@ function acl_lookup(&$a, $out_type = 'json') { ); return $o; } - + $o = array( 'tot' => $tot, 'start' => $start, 'count' => $count, 'items' => $items, ); - + echo json_encode($o); killme();