From 7f1f18675cb545ff92f9a2dedf83ce9a8f0964b2 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 6 Mar 2011 19:24:01 -0800 Subject: sparkle links for friends-of-friends, bug #13 --- boot.php | 26 ++++++++++++++++++++++++++ mod/network.php | 51 ++++++++++++++++++++++++--------------------------- 2 files changed, 50 insertions(+), 27 deletions(-) diff --git a/boot.php b/boot.php index ed7c9956c..6bd78b87d 100644 --- a/boot.php +++ b/boot.php @@ -2591,3 +2591,29 @@ function unamp($s) { return str_replace('&', '&', $s); }} +if(! function_exists('extract_item_authors')) { +function extract_item_authors($arr,$uid) { + + if((! $uid) || (! is_array($arr)) || (! count($arr))) + return array(); + $urls = array(); + foreach($arr as $rr) { + if(! in_array("'" . dbesc($rr['author-link']) . "'",$urls)) + $urls[] = "'" . dbesc($rr['author-link']) . "'"; + } + + // pre-quoted, don't put quotes on %s + if(count($urls)) { + $r = q("SELECT `id`,`url` FROM `contact` WHERE `uid` = %d AND `url` IN ( %s ) AND `network` = 'dfrn' AND `self` = 0 AND `blocked` = 0 ", + intval($uid), + implode(',',$urls) + ); + if(count($r)) { + $ret = array(); + foreach($r as $rr) + $ret[$rr['url']] = $rr['id']; + return $ret; + } + } + return array(); +}} \ No newline at end of file diff --git a/mod/network.php b/mod/network.php index 65e6855a2..92dc98608 100644 --- a/mod/network.php +++ b/mod/network.php @@ -196,12 +196,13 @@ function network_content(&$a, $update = 0) { AND `item`.`parent` = `parentitem`.`id` $sql_extra ORDER BY `parentitem`.`created` DESC, `item`.`gravity` ASC, `item`.`created` ASC LIMIT %d ,%d ", - intval($_SESSION['uid']), + intval(local_user()), intval($a->pager['start']), intval($a->pager['itemspage']) ); } + $author_contacts = extract_item_authors($r,local_user()); $cmnt_tpl = load_view_file('view/comment_item.tpl'); $like_tpl = load_view_file('view/like.tpl'); @@ -232,10 +233,16 @@ function network_content(&$a, $update = 0) { $redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ; - if(strlen($item['author-link']) && link_compare($item['author-link'],$item['url']) - && ($item['network'] === 'dfrn') && (! $item['self'])) { - $profile_link = $redirect_url; - $sparkle = ' sparkle'; + if(strlen($item['author-link']) && link_compare($item['author-link'],$item['url'])) { + if(($item['network'] === 'dfrn') && (! $item['self'])) { + $profile_link = $redirect_url; + $sparkle = ' sparkle'; + } + elseif(isset($author_contacts[$item['author-link']])) { + $profile_link = $a->get_baseurl() . '/redir/' . $author_contacts[$item['author-link']]; + $sparkle = ' sparkle'; + } + } $location = (($item['location']) ? '' . $item['location'] . '' : ''); @@ -289,14 +296,14 @@ function network_content(&$a, $update = 0) { $comment = ''; $template = $tpl; $commentww = ''; + $sparkle = ''; $owner_url = $owner_photo = $owner_name = ''; - $profile_url = $item['url']; + if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) && ($item['id'] != $item['parent'])) + continue; $redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ; - if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) && ($item['id'] != $item['parent'])) - continue; $lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) @@ -333,7 +340,6 @@ function network_content(&$a, $update = 0) { $owner_url = $redirect_url; $osparkle = ' sparkle'; } - } } @@ -364,13 +370,6 @@ function network_content(&$a, $update = 0) { $drop = replace_macros(load_view_file('view/wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete'))); - - - if(($item['network'] === 'dfrn') && (! $item['self'] )) { - $profile_url = $redirect_url; - $sparkle = ' sparkle'; - } - $photo = $item['photo']; $thumb = $item['thumb']; @@ -381,22 +380,20 @@ function network_content(&$a, $update = 0) { $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']); $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $thumb); - - $profile_link = $profile_url; - - // Can we use our special contact URL for this author? - - if(strlen($item['author-link'])) { - if((link_compare($item['author-link'],$item['url'])) && ($item['network'] === 'dfrn') && (! $item['self'])) { + if(strlen($item['author-link']) && link_compare($item['author-link'],$item['url'])) { + if(($item['network'] === 'dfrn') && (! $item['self'])) { $profile_link = $redirect_url; $sparkle = ' sparkle'; } - else { - $profile_link = $item['author-link']; - $sparkle = ''; + elseif(isset($author_contacts[$item['author-link']])) { + $profile_link = $a->get_baseurl() . '/redir/' . $author_contacts[$item['author-link']]; + $sparkle = ' sparkle'; } + else + $profile_link = $item['author-link']; } - + else + $profile_link = $item['url']; $like = ((x($alike,$item['id'])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : ''); $dislike = ((x($dlike,$item['id'])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : ''); -- cgit v1.2.3