aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriendika <info@friendika.com>2011-03-06 19:24:01 -0800
committerFriendika <info@friendika.com>2011-03-06 19:24:01 -0800
commit7f1f18675cb545ff92f9a2dedf83ce9a8f0964b2 (patch)
treede0b15ae96a314d164e6fd03f712dbb1c73517b4
parentfecef140d5181348e1f46cf8405f13bb05401b3e (diff)
downloadvolse-hubzilla-7f1f18675cb545ff92f9a2dedf83ce9a8f0964b2.tar.gz
volse-hubzilla-7f1f18675cb545ff92f9a2dedf83ce9a8f0964b2.tar.bz2
volse-hubzilla-7f1f18675cb545ff92f9a2dedf83ce9a8f0964b2.zip
sparkle links for friends-of-friends, bug #13
-rw-r--r--boot.php26
-rw-r--r--mod/network.php51
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('&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
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']) ? '<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']) : '');