]> git.mxchange.org Git - friendica.git/commitdiff
sparkle links for friends-of-friends, bug #13
authorFriendika <info@friendika.com>
Mon, 7 Mar 2011 03:24:01 +0000 (19:24 -0800)
committerFriendika <info@friendika.com>
Mon, 7 Mar 2011 03:24:01 +0000 (19:24 -0800)
boot.php
mod/network.php

index ed7c9956cf536fd61124be595bc86fecf4248ce4..6bd78b87d538043daa94db50291b28f8c068dfad 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -2591,3 +2591,29 @@ function unamp($s) {
        return str_replace('&amp;', '&', $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
index 65e6855a233c530188106bd3adf2fb726b979136..92dc986080bbcb6cecb29fa6f9a833a56e977089 100644 (file)
@@ -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']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
@@ -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']) : '');