diff options
-rw-r--r-- | include/acl_selectors.php | 4 | ||||
-rw-r--r-- | include/notifier.php | 10 | ||||
-rw-r--r-- | mod/follow.php | 21 |
3 files changed, 28 insertions, 7 deletions
diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 9bbd6bcb4..d0952421e 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -40,7 +40,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p $sql_extra = ''; if($privmail || $celeb) { - $sql_extra = sprintf(" AND `rel` = %d ", intval(REL_BUD)); + $sql_extra .= sprintf(" AND `rel` = %d ", intval(REL_BUD)); } if($privmail) @@ -49,7 +49,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p $o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" >\r\n"; $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact` - WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 + WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != '' $sql_extra ORDER BY `name` ASC ", intval(local_user()) diff --git a/include/notifier.php b/include/notifier.php index 405688ab1..f22917e4f 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -257,7 +257,7 @@ $deliver_status = dfrn_deliver($owner,$contact,$atom); break; default: - if($followup) { + if($followup && $contact['notify']) { slapper($owner,$contact['notify'],$slap); } else { @@ -268,7 +268,9 @@ if(count($slaps) && $notify_hub) { logger('notifier: slapdelivery: ' . $contact['name']); foreach($slaps as $slappy) { - slapper($owner,$contact['notify'],$slappy); + if($contact['notify']) { + slapper($owner,$contact['notify'],$slappy); + } } } } @@ -289,7 +291,9 @@ foreach($url_recipients as $url) { logger('notifier: urldelivery: ' . $url); foreach($slaps as $slappy) { - slapper($owner,$url,$slappy); + if($url) { + slapper($owner,$url,$slappy); + } } } } diff --git a/mod/follow.php b/mod/follow.php index d839a04d4..dfc394502 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -50,6 +50,14 @@ function follow_post(&$a) { if($hcard) { $vcard = scrape_vcard($hcard); + + // Google doesn't use absolute url in profile photos + + if((x($vcard,'photo')) && substr($vcard['photo'],0,1) == '/') { + $h = parse_url($hcard); + if($h) + $vcard['photo'] = $h['scheme'] . '://' . $h['host'] . $vcard['photo']; + } } if(! $profile) @@ -61,10 +69,16 @@ function follow_post(&$a) { if(x($vcard,'nick')) $vcard['fn'] = $vcard['nick']; - if(! ((x($vcard['fn'])) && ($poll) && ($notify) && ($profile))) { + logger('follow: poll=' . $poll . ' notify=' . $notify . ' profile=' . $profile . ' vcard=' . print_r($vcard,true)); + + if(! ((x($vcard['fn'])) && ($poll) && ($profile))) { notice( t('The profile address specified does not provide adequate information.') . EOL); goaway($_SESSION['return_url']); - } + } + + if(! $notify) { + notice( t('Limited profile. This person will be unable to receive direct/personal notifications from you.') . EOL); + } if(! x($vcard,'photo')) $vcard['photo'] = $a->get_baseurl() . '/images/default-profile.jpg' ; @@ -77,6 +91,7 @@ function follow_post(&$a) { intval(local_user()), dbesc($poll) ); + if(count($r)) { // update contact if($r[0]['rel'] == REL_VIP) { @@ -104,10 +119,12 @@ function follow_post(&$a) { intval(REL_FAN) ); } + $r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1", dbesc($profile), intval(local_user()) ); + if(! count($r)) { notice( t('Unable to retrieve contact information.') . EOL); goaway($_SESSION['return_url']); |