X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Facl_selectors.php;h=dc2f8d4164cdfc46d1cff87d44a0959820b5cdeb;hb=c8430f4c44f34641953e29e65fd1e268bcc332b1;hp=b4d91e08e55966ef8e9706e7aff523e93ec3022b;hpb=de9a02b9aefdd0e7bdb5b0282da5501c076002b1;p=friendica.git diff --git a/include/acl_selectors.php b/include/acl_selectors.php index b4d91e08e5..dc2f8d4164 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) { @@ -35,11 +36,12 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) { $selected = " selected=\"selected\" "; else $selected = ''; + $trimmed = mb_substr($rr['name'],0,12); $o .= "\r\n"; } - + } $o .= "\r\n"; @@ -76,26 +78,26 @@ function contact_selector($selname, $selclass, $preselected = false, $options) { if(x($options,'networks')) { switch($options['networks']) { case 'DFRN_ONLY': - $networks = array('dfrn'); + $networks = array(NETWORK_DFRN); break; case 'PRIVATE': if(is_array($a->user) && $a->user['prvnets']) - $networks = array('dfrn','mail','dspr'); + $networks = array(NETWORK_DFRN,NETWORK_MAIL,NETWORK_DIASPORA); else - $networks = array('dfrn','face','mail', 'dspr'); + $networks = array(NETWORK_DFRN,NETWORK_FACEBOOK,NETWORK_MAIL, NETWORK_DIASPORA); break; case 'TWO_WAY': if(is_array($a->user) && $a->user['prvnets']) - $networks = array('dfrn','mail','dspr'); + $networks = array(NETWORK_DFRN,NETWORK_MAIL,NETWORK_DIASPORA); else - $networks = array('dfrn','face','mail','dspr','stat'); - break; + $networks = array(NETWORK_DFRN,NETWORK_FACEBOOK,NETWORK_MAIL,NETWORK_DIASPORA,NETWORK_OSTATUS); + break; default: break; } } } - + $x = array('options' => $options, 'size' => $size, 'single' => $single, 'mutual' => $mutual, 'exclude' => $exclude, 'networks' => $networks); call_hooks('contact_select_options', $x); @@ -117,15 +119,15 @@ function contact_selector($selname, $selclass, $preselected = false, $options) { $str_nets = implode(',',$x['networks']); $sql_extra .= " AND `network` IN ( $str_nets ) "; } - + $tabindex = (x($options, 'tabindex') ? "tabindex=\"" . $options["tabindex"] . "\"" : ""); if($x['single']) $o .= "\r\n"; - $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact` + $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != '' $sql_extra ORDER BY `name` ASC ", @@ -150,7 +152,7 @@ function contact_selector($selname, $selclass, $preselected = false, $options) { $o .= "\r\n"; } - + } $o .= "\r\n"; @@ -164,6 +166,8 @@ function contact_selector($selname, $selclass, $preselected = false, $options) { function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false, $tabindex = null) { + require_once("include/bbcode.php"); + $a = get_app(); $o = ''; @@ -177,21 +181,21 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p $sql_extra .= sprintf(" AND `rel` = %d ", intval(CONTACT_IS_FRIEND)); } - if($privmail) { - $sql_extra .= " AND `network` IN ( 'dfrn', 'dspr' ) "; - } - elseif($privatenet) { - $sql_extra .= " AND `network` IN ( 'dfrn', 'mail', 'face', 'dspr' ) "; - } + if($privmail) + $sql_extra .= sprintf(" AND `network` IN ('%s' , '%s') ", + NETWORK_DFRN, NETWORK_DIASPORA); + elseif($privatenet) + $sql_extra .= sprintf(" AND `network` IN ('%s' , '%s', '%s', '%s') ", + NETWORK_DFRN, NETWORK_MAIL, NETWORK_FACEBOOK, NETWORK_DIASPORA); $tabindex = ($tabindex > 0 ? "tabindex=\"$tabindex\"" : ""); if($privmail) $o .= "\r\n"; - $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact` + $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != '' $sql_extra ORDER BY `name` ASC ", @@ -212,11 +216,14 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p else $selected = ''; - $trimmed = mb_substr($rr['name'],0,20); + if($privmail) + $trimmed = GetProfileUsername($rr['url'], $rr['name'], false); + else + $trimmed = mb_substr($rr['name'],0,20); $o .= "\r\n"; } - + } $o .= "\r\n"; @@ -239,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; } @@ -251,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() ); @@ -321,13 +328,6 @@ function populate_acl($user = null,$celeb = false) { $o .= '' . "\r\n"; $o .= '
' . "\r\n";*/ - // Not totally sure what input values can come - // This is a hotfix to prevent massive php warnings - if (is_array($user) AND isset($user["uid"])) - $uid = $user["uid"]; - else - $uid = intval($user); - $tpl = get_markup_template("acl_selector.tpl"); $o = replace_macros($tpl, array( '$showall'=> t("Visible to everybody"), @@ -338,7 +338,7 @@ function populate_acl($user = null,$celeb = false) { '$denycid' => json_encode($perms['deny_cid']), '$denygid' => json_encode($perms['deny_gid']), '$features' => array( - "aclautomention"=>(feature_enabled($user,"aclautomention")?"true":"false") + "aclautomention"=>(feature_enabled($user['uid'],"aclautomention")?"true":"false") ), )); @@ -389,7 +389,7 @@ function acl_lookup(&$a, $out_type = 'json') { $count = (x($_REQUEST,'count')?$_REQUEST['count']:100); $search = (x($_REQUEST,'search')?$_REQUEST['search']:""); $type = (x($_REQUEST,'type')?$_REQUEST['type']:""); - + $conv_id = (x($_REQUEST,'conversation')?$_REQUEST['conversation']:null); // For use with jquery.autocomplete for private mail completion @@ -406,33 +406,33 @@ function acl_lookup(&$a, $out_type = 'json') { } else { $sql_extra = $sql_extra2 = ""; } - + // count groups and contacts if ($type=='' || $type=='g'){ - $r = q("SELECT COUNT(`id`) AS g FROM `group` WHERE `deleted` = 0 AND `uid` = %d $sql_extra", + $r = q("SELECT COUNT(*) AS g FROM `group` WHERE `deleted` = 0 AND `uid` = %d $sql_extra", intval(local_user()) ); $group_count = (int)$r[0]['g']; } else { $group_count = 0; } - + if ($type=='' || $type=='c'){ - $r = q("SELECT COUNT(`id`) 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()) + intval(local_user()), ); $contact_count = (int)$r[0]['c']; - } + } elseif ($type == 'm') { // autocomplete for Private Messages - $r = q("SELECT COUNT(`id`) 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), @@ -446,8 +446,8 @@ function acl_lookup(&$a, $out_type = 'json') { // autocomplete for Contacts - $r = q("SELECT COUNT(`id`) 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()) ); @@ -456,21 +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,11 +556,57 @@ 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 */ + /* 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 + `author-avatar`,`author-name`,`author-link` + from item where parent=%d + and ( + `author-name` LIKE '%%%s%%' OR + `author-link` LIKE '%%%s%%' + ) and + `author-link` NOT IN ('%s') + GROUP BY `author-link` + ORDER BY `author-name` ASC + ", + intval($conv_id), + dbesc($search), + dbesc($search), + implode("','", $known_contacts) + ); + if (is_array($r) && count($r)){ + foreach($r as $row) { + // nickname.. + $up = parse_url($row['author-link']); + $nick = explode("/",$up['path']); + $nick = $nick[count($nick)-1]; + $nick .= "@".$up['host']; + // /nickname + $unknow_contacts[] = array( + "type" => "c", + "photo" => proxy_url($row['author-avatar']), + "name" => $row['author-name'], + "id" => '', + "network" => "unknown", + "link" => $row['author-link'], + "nick" => $nick, + "forum" => false + ); + } + } + + $items = array_merge($items, $unknow_contacts); + $tot += count($unknow_contacts); + } if($out_type === 'html') { $o = array( @@ -571,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();