aboutsummaryrefslogtreecommitdiffstats
path: root/mod/follow.php
diff options
context:
space:
mode:
authorSimon L'nu <simon.lnu@gmail.com>2012-05-09 14:00:54 -0400
committerSimon L'nu <simon.lnu@gmail.com>2012-05-09 14:00:54 -0400
commit39a7926015f06c96aeb3ae1439fdec97fc123c59 (patch)
tree2e0fc7f6e58e8b1d216f1a03809d55e5fdcd1e96 /mod/follow.php
parent34d3d455892cbad299aac8710016daffefb1c4cb (diff)
parent53157bb954acb7597347c6b4a87e64e7a2f6cc79 (diff)
downloadvolse-hubzilla-39a7926015f06c96aeb3ae1439fdec97fc123c59.tar.gz
volse-hubzilla-39a7926015f06c96aeb3ae1439fdec97fc123c59.tar.bz2
volse-hubzilla-39a7926015f06c96aeb3ae1439fdec97fc123c59.zip
Merge branch 'master', remote-tracking branch 'remotes/upstream/master'
* remotes/upstream/master: send browser back to correct page (with query args) after posting slight improvement in a couple of queries Diabook-dark - do things the right way instead of the stupid way. Fix TinyMCE, but needs adding to theme.php Fix jquery.fancybox, but still needs adding to theme.php Diabook-dark cleaned up a bit. don't provide 'show more' on remote friends in common unless there are actually more make it optional to optimize the item table after expire wrap private message autocomplete in an ifdef to make it easier to test/develop DE update for the strings make mod-follow hookable (e.g. service class limits) and also begin to prepare it for functionalisation * master:
Diffstat (limited to 'mod/follow.php')
-rw-r--r--mod/follow.php45
1 files changed, 28 insertions, 17 deletions
diff --git a/mod/follow.php b/mod/follow.php
index ae8cb200c..4a7f99bf0 100644
--- a/mod/follow.php
+++ b/mod/follow.php
@@ -10,7 +10,10 @@ function follow_init(&$a) {
// NOTREACHED
}
+ $uid = local_user();
$url = $orig_url = notags(trim($_REQUEST['url']));
+ $return_url = $_SESSION['return_url'];
+
// remove ajax junk, e.g. Twitter
@@ -18,19 +21,25 @@ function follow_init(&$a) {
if(! allowed_url($url)) {
notice( t('Disallowed profile URL.') . EOL);
- goaway($_SESSION['return_url']);
+ goaway($return_url);
// NOTREACHED
}
if(! $url) {
notice( t('Connect URL missing.') . EOL);
- goaway($_SESSION['return_url']);
+ goaway($return_url);
// NOTREACHED
}
+ $arr = array('url' => $url, 'contact' => array());
+
+ call_hooks('follow', $arr);
- $ret = probe_url($url);
+ if(x($arr['contact'],'name'))
+ $ret = $arr['contact'];
+ else
+ $ret = probe_url($url);
if($ret['network'] === NETWORK_DFRN) {
if(strlen($a->path))
@@ -46,11 +55,11 @@ function follow_init(&$a) {
if(get_config('system','dfrn_only')) {
notice( t('This site is not configured to allow communications with other networks.') . EOL);
notice( t('No compatible communication protocols or feeds were discovered.') . EOL);
- goaway($_SESSION['return_url']);
+ goaway($return_url);
}
}
- // This just confuses things, remove it
+ // This extra param just confuses things, remove it
if($ret['network'] === NETWORK_DIASPORA)
$ret['url'] = str_replace('?absolute=true','',$ret['url']);
@@ -65,9 +74,11 @@ function follow_init(&$a) {
notice( t('An author or name was not found.') . EOL);
if(! x($ret,'url'))
notice( t('No browser URL could be matched to this address.') . EOL);
- if(strpos($url,'@') !== false)
- notice('Unable to match @-style Identity Address with a known protocol or email contact');
- goaway($_SESSION['return_url']);
+ if(strpos($url,'@') !== false) {
+ notice( t('Unable to match @-style Identity Address with a known protocol or email contact.') . EOL);
+ notice( t('Use mailto: in front of address to force email check.') . EOL);
+ }
+ goaway($return_url);
}
if($ret['network'] === NETWORK_OSTATUS && get_config('system','ostatus_disabled')) {
@@ -94,7 +105,7 @@ function follow_init(&$a) {
// indirect links or webfinger links
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `poll` = '%s' LIMIT 1",
- intval(local_user()),
+ intval($uid),
dbesc($ret['poll'])
);
@@ -104,7 +115,7 @@ function follow_init(&$a) {
q("UPDATE `contact` SET `rel` = %d , `readonly` = 0 WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval(CONTACT_IS_FRIEND),
intval($r[0]['id']),
- intval(local_user())
+ intval($uid)
);
}
}
@@ -118,7 +129,7 @@ function follow_init(&$a) {
$r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `batch`, `notify`, `poll`, `poco`, `name`, `nick`, `photo`, `network`, `pubkey`, `rel`, `priority`,
`writable`, `hidden`, `blocked`, `readonly`, `pending` )
VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, 0, 0, 0 ) ",
- intval(local_user()),
+ intval($uid),
dbesc(datetime_convert()),
dbesc($ret['url']),
dbesc(normalise_link($ret['url'])),
@@ -142,12 +153,12 @@ function follow_init(&$a) {
$r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1",
dbesc($ret['url']),
- intval(local_user())
+ intval($uid)
);
if(! count($r)) {
notice( t('Unable to retrieve contact information.') . EOL);
- goaway($_SESSION['return_url']);
+ goaway($return_url);
// NOTREACHED
}
@@ -156,7 +167,7 @@ function follow_init(&$a) {
require_once("Photo.php");
- $photos = import_profile_photo($ret['photo'],local_user(),$contact_id);
+ $photos = import_profile_photo($ret['photo'],$uid,$contact_id);
$r = q("UPDATE `contact` SET `photo` = '%s',
`thumb` = '%s',
@@ -200,7 +211,7 @@ function follow_init(&$a) {
$r = q("SELECT `contact`.*, `user`.* FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
- intval(local_user())
+ intval($uid)
);
if(count($r)) {
@@ -215,9 +226,9 @@ function follow_init(&$a) {
}
}
- if(strstr($_SESSION['return_url'],'contacts'))
+ if(strstr($return_url,'contacts'))
goaway($a->get_baseurl() . '/contacts/' . $contact_id);
- goaway($_SESSION['return_url']);
+ goaway($return_url);
// NOTREACHED
}