From f6ea87298643a1fb1b948ed78b059c39d1c070f2 Mon Sep 17 00:00:00 2001
From: Michael Vogel
Date: Thu, 9 Apr 2015 00:10:21 +0200
Subject: [PATCH 1/6] The behaviour when following a new contact is now
unified.
---
include/follow.php | 4 +-
mod/dfrn_request.php | 15 ++++++
mod/follow.php | 84 +++++++++++++++++++++++++++++++--
view/templates/auto_request.tpl | 13 ++++-
view/templates/dfrn_request.tpl | 13 ++++-
view/templates/follow.tpl | 2 +-
6 files changed, 121 insertions(+), 10 deletions(-)
mode change 100644 => 100755 mod/follow.php
diff --git a/include/follow.php b/include/follow.php
index ba036cd48..287a38b6b 100644
--- a/include/follow.php
+++ b/include/follow.php
@@ -15,7 +15,7 @@
function new_contact($uid,$url,$interactive = false) {
- $result = array('success' => false,'message' => '');
+ $result = array('cid' => -1, 'success' => false,'message' => '');
$a = get_app();
@@ -208,7 +208,7 @@ function new_contact($uid,$url,$interactive = false) {
$contact = $r[0];
$contact_id = $r[0]['id'];
-
+ $result['cid'] = $contact_id;
$g = q("select def_gid from user where uid = %d limit 1",
intval($uid)
diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php
index aee8c0306..62b6f4bd7 100644
--- a/mod/dfrn_request.php
+++ b/mod/dfrn_request.php
@@ -664,6 +664,21 @@ function dfrn_request_content(&$a) {
$dfrn_url = notags(trim(hex2bin($_GET['dfrn_url'])));
$aes_allow = (((x($_GET,'aes_allow')) && ($_GET['aes_allow'] == 1)) ? 1 : 0);
$confirm_key = (x($_GET,'confirm_key') ? $_GET['confirm_key'] : "");
+
+ // Checking fastlane for validity
+ if (x($_SESSION, "fastlane") AND (normalise_link($_SESSION["fastlane"]) == normalise_link($dfrn_url))) {
+ $_POST["dfrn_url"] = $dfrn_url;
+ $_POST["confirm_key"] = $confirm_key;
+ $_POST["localconfirm"] = 1;
+ $_POST["hidden-contact"] = 0;
+ $_POST["submit"] = t('Confirm');
+
+ dfrn_request_post($a);
+
+ killme();
+ return; // NOTREACHED
+ }
+
$tpl = get_markup_template("dfrn_req_confirm.tpl");
$o = replace_macros($tpl,array(
'$dfrn_url' => $dfrn_url,
diff --git a/mod/follow.php b/mod/follow.php
old mode 100644
new mode 100755
index 5c2c764c7..b9401ee82
--- a/mod/follow.php
+++ b/mod/follow.php
@@ -3,7 +3,7 @@
require_once('include/Scrape.php');
require_once('include/follow.php');
-function follow_init(&$a) {
+function follow_content(&$a) {
if(! local_user()) {
notice( t('Permission denied.') . EOL);
@@ -11,10 +11,85 @@ function follow_init(&$a) {
// NOTREACHED
}
+ $uid = local_user();
+ $url = notags(trim($_REQUEST['url']));
+
+ $r = q("SELECT `url` FROM `contact` WHERE `uid` = %d AND (`nurl` = '%s' OR `alias` = '%s' OR `alias` = '%s') LIMIT 1",
+ intval(local_user()), dbesc(normalise_link($url)), dbesc(normalise_link($url)), dbesc($url));
+
+ if ($r) {
+ notice(t('You already added this contact.').EOL);
+ goaway($_SESSION['return_url']);
+ // NOTREACHED
+ }
+
+ $ret = probe_url($url);
+
+ if($ret['network'] === NETWORK_DFRN) {
+ $request = $ret["request"];
+ $tpl = get_markup_template('dfrn_request.tpl');
+ } else {
+ $request = $a->get_baseurl()."/follow";
+ $tpl = get_markup_template('auto_request.tpl');
+ }
+
+ $r = q("SELECT `url` FROM `contact` WHERE `uid` = %d AND `self` LIMIT 1", intval($uid));
+
+ if (!$r) {
+ notice( t('Permission denied.') . EOL);
+ goaway($_SESSION['return_url']);
+ // NOTREACHED
+ }
+
+ $myaddr = $r[0]["url"];
+
+ // Makes the connection request for friendica contacts easier
+ $_SESSION["fastlane"] = $ret["url"];
+
+ $o = replace_macros($tpl,array(
+ '$header' => $ret["name"]." (".$ret["addr"].")",
+ '$photo' => $ret["photo"],
+ '$desc' => "",
+ '$pls_answer' => t('Please answer the following:'),
+ '$does_know_you' => array('knowyou', sprintf(t('Does %s know you?'),$ret["name"]), false, '', array(t('No'),t('Yes'))),
+ '$add_note' => t('Add a personal note:'),
+ '$page_desc' => "",
+ '$friendica' => "",
+ '$statusnet' => "",
+ '$diaspora' => "",
+ '$diasnote' => "",
+ '$your_address' => t('Your Identity Address:'),
+ '$invite_desc' => "",
+ '$emailnet' => "",
+ '$submit' => t('Submit Request'),
+ '$cancel' => t('Cancel'),
+ '$nickname' => "",
+ '$name' => $ret["name"],
+ '$url' => $ret["url"],
+ '$myaddr' => $myaddr,
+ '$request' => $request
+ ));
+ return $o;
+}
+
+function follow_post(&$a) {
+
+ if(! local_user()) {
+ notice( t('Permission denied.') . EOL);
+ goaway($_SESSION['return_url']);
+ // NOTREACHED
+ }
+
+ if ($_REQUEST['cancel'])
+ goaway($_SESSION['return_url']);
+
$uid = local_user();
$url = notags(trim($_REQUEST['url']));
$return_url = $_SESSION['return_url'];
+ // Makes the connection request for friendica contacts easier
+ // This is just a precaution if maybe this page is called somewhere directly via POST
+ $_SESSION["fastlane"] = $url;
$result = new_contact($uid,$url,true);
@@ -22,12 +97,13 @@ function follow_init(&$a) {
if($result['message'])
notice($result['message']);
goaway($return_url);
- }
+ } elseif ($result['cid'])
+ goaway($a->get_baseurl().'/contacts/'.$result['cid']);
- info( t('Contact added') . EOL);
+ info( t('Contact added').EOL);
if(strstr($return_url,'contacts'))
- goaway($a->get_baseurl() . '/contacts/' . $contact_id);
+ goaway($a->get_baseurl().'/contacts/'.$contact_id);
goaway($return_url);
// NOTREACHED
diff --git a/view/templates/auto_request.tpl b/view/templates/auto_request.tpl
index b987b7849..56653c655 100644
--- a/view/templates/auto_request.tpl
+++ b/view/templates/auto_request.tpl
@@ -20,16 +20,27 @@
{{/if}}
+{{if $request}}
+
+{{else}}
+{{/if}}
+
+{{if $photo}}
+
+{{/if}}
{{if $myaddr}}
{{$myaddr}}
-
+
{{else}}
{{/if}}
+ {{if $url}}
+
+ {{/if}}
diff --git a/view/templates/dfrn_request.tpl b/view/templates/dfrn_request.tpl
index 44c8ef1e6..6c63c5331 100644
--- a/view/templates/dfrn_request.tpl
+++ b/view/templates/dfrn_request.tpl
@@ -1,5 +1,3 @@
-
-
{{$header}}
{{if $myaddr}}
@@ -19,7 +17,15 @@
{{/if}}
+{{if $request}}
+
+{{else}}
+{{/if}}
+
+{{if $photo}}
+
+{{/if}}
@@ -29,6 +35,9 @@
{{else}}
{{/if}}
+ {{if $url}}
+
+ {{/if}}
diff --git a/view/templates/follow.tpl b/view/templates/follow.tpl
index c4d188765..ece5ed17b 100644
--- a/view/templates/follow.tpl
+++ b/view/templates/follow.tpl
@@ -2,7 +2,7 @@
From 015ebd7d1bef1dfbda1cc62a8e846b567a0ecbb3 Mon Sep 17 00:00:00 2001
From: Michael Vogel
Date: Thu, 9 Apr 2015 00:33:45 +0200
Subject: [PATCH 2/6] "fastlane" should now work with remote adding as well.
---
boot.php | 2 ++
1 file changed, 2 insertions(+)
diff --git a/boot.php b/boot.php
index 6da885117..eb5c7e5cb 100644
--- a/boot.php
+++ b/boot.php
@@ -1695,6 +1695,8 @@ if(! function_exists('profile_sidebar')) {
if($a->theme['template_engine'] === 'internal')
$location = template_escape($location);
+ if ($connect)
+ $_SESSION["fastlane"] = $p["url"];
$tpl = get_markup_template('profile_vcard.tpl');
$o .= replace_macros($tpl, array(
From ccbac6874baa8b82c2d0cede825c7f3572d3ea92 Mon Sep 17 00:00:00 2001
From: Michael Vogel
Date: Thu, 9 Apr 2015 07:45:48 +0200
Subject: [PATCH 3/6] The "connect" link ar the display page now directs to the
new "follow" page as well.
---
mod/display.php | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/mod/display.php b/mod/display.php
index f483977cd..02ff37bf8 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -193,11 +193,13 @@ function display_fetchauthor($a, $item) {
}
if (local_user()) {
- if ($profiledata["network"] == NETWORK_DFRN) {
- $connect = str_replace("/profile/", "/dfrn_request/", $profiledata["url"])."&addr=".bin2hex($a->get_baseurl()."/profile/".$a->user["nickname"]);
- $profiledata["remoteconnect"] = $connect;
- } elseif ($profiledata["network"] == NETWORK_DIASPORA)
- $profiledata["remoteconnect"] = $a->get_baseurl()."/contacts?add=".GetProfileUsername($profiledata["url"], "", true);
+ if (in_array($profiledata["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
+ $profiledata["remoteconnect"] = $a->get_baseurl()."/follow?url=".urlencode($profiledata["url"]);
+ //if ($profiledata["network"] == NETWORK_DFRN) {
+ // $connect = str_replace("/profile/", "/dfrn_request/", $profiledata["url"])."&addr=".bin2hex($a->get_baseurl()."/profile/".$a->user["nickname"]);
+ // $profiledata["remoteconnect"] = $connect;
+ //} elseif ($profiledata["network"] == NETWORK_DIASPORA)
+ // $profiledata["remoteconnect"] = $a->get_baseurl()."/contacts?add=".GetProfileUsername($profiledata["url"], "", true);
} elseif ($profiledata["network"] == NETWORK_DFRN) {
$connect = str_replace("/profile/", "/dfrn_request/", $profiledata["url"]);
$profiledata["remoteconnect"] = $connect;
From 98bf8d85fa81ada5096104a97ed206f86081f534 Mon Sep 17 00:00:00 2001
From: Michael Vogel
Date: Thu, 9 Apr 2015 19:35:17 +0200
Subject: [PATCH 4/6] The "fastlane" can be removed there.
---
boot.php | 3 ---
1 file changed, 3 deletions(-)
diff --git a/boot.php b/boot.php
index eb5c7e5cb..cb380ed99 100644
--- a/boot.php
+++ b/boot.php
@@ -1695,9 +1695,6 @@ if(! function_exists('profile_sidebar')) {
if($a->theme['template_engine'] === 'internal')
$location = template_escape($location);
- if ($connect)
- $_SESSION["fastlane"] = $p["url"];
-
$tpl = get_markup_template('profile_vcard.tpl');
$o .= replace_macros($tpl, array(
'$profile' => $p,
From 0e895e24f7791fbbfec99fc7b911ba27613cc135 Mon Sep 17 00:00:00 2001
From: Michael Vogel
Date: Sat, 11 Apr 2015 22:14:56 +0200
Subject: [PATCH 5/6] Code reworks: replaced hardcoded network text with the
corresponding constants.
---
include/acl_selectors.php | 14 +++++++-------
include/conversation.php | 2 +-
include/text.php | 2 +-
mod/contacts.php | 4 ++--
mod/dfrn_confirm.php | 3 ++-
mod/photos.php | 2 +-
mod/profperm.php | 12 +++++++-----
7 files changed, 21 insertions(+), 18 deletions(-)
diff --git a/include/acl_selectors.php b/include/acl_selectors.php
index 668544b0b..1e4343161 100644
--- a/include/acl_selectors.php
+++ b/include/acl_selectors.php
@@ -78,19 +78,19 @@ function contact_selector($selname, $selclass, $preselected = false, $options) {
if(x($options,'networks')) {
switch($options['networks']) {
case 'DFRN_ONLY':
- $networks = array('dfrn');
+ $networks = array(NETWORK_DFRN);
break;
case 'PRIVATE':
if(is_array($a->user) && $a->user['prvnets'])
- $networks = array('dfrn','mail','dspr');
+ $networks = array(NETWORK_DFRN,NETWORK_MAIL,NETWORK_DIASPORA);
else
- $networks = array('dfrn','face','mail', 'dspr');
+ $networks = array(NETWORK_DFRN,NETWORK_FACEBOOK,NETWORK_MAIL, NETWORK_DIASPORA);
break;
case 'TWO_WAY':
if(is_array($a->user) && $a->user['prvnets'])
- $networks = array('dfrn','mail','dspr');
+ $networks = array(NETWORK_DFRN,NETWORK_MAIL,NETWORK_DIASPORA);
else
- $networks = array('dfrn','face','mail','dspr','stat');
+ $networks = array(NETWORK_DFRN,NETWORK_FACEBOOK,NETWORK_MAIL,NETWORK_DIASPORA,NETWORK_OSTATUS);
break;
default:
break;
@@ -182,10 +182,10 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
}
if($privmail) {
- $sql_extra .= " AND `network` IN ( 'dfrn', 'dspr' ) ";
+ $sql_extra .= " AND `network` IN ( NETWORK_DFRN, NETWORK_DIASPORA ) ";
}
elseif($privatenet) {
- $sql_extra .= " AND `network` IN ( 'dfrn', 'mail', 'face', 'dspr' ) ";
+ $sql_extra .= " AND `network` IN ( NETWORK_DFRN, NETWORK_MAIL, NETWORK_FACEBOOK, NETWORK_DIASPORA ) ";
}
$tabindex = ($tabindex > 0 ? "tabindex=\"$tabindex\"" : "");
diff --git a/include/conversation.php b/include/conversation.php
index 20b54728c..a6ea4da81 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -908,7 +908,7 @@ function like_puller($a,$item,&$arr,$mode) {
if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) {
$url = $item['author-link'];
- if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
+ if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === NETWORK_DFRN) && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
$url = $a->get_baseurl(true) . '/redir/' . $item['contact-id'];
$sparkle = ' class="sparkle" ';
}
diff --git a/include/text.php b/include/text.php
index 8ce54b3c6..fd5ae0a2b 100644
--- a/include/text.php
+++ b/include/text.php
@@ -920,7 +920,7 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
if($redirect) {
$a = get_app();
$redirect_url = $a->get_baseurl() . '/redir/' . $contact['id'];
- if(local_user() && ($contact['uid'] == local_user()) && ($contact['network'] === 'dfrn')) {
+ if(local_user() && ($contact['uid'] == local_user()) && ($contact['network'] === NETWORK_DFRN)) {
$redir = true;
$url = $redirect_url;
$sparkle = ' sparkle';
diff --git a/mod/contacts.php b/mod/contacts.php
index 95b1944dc..4a0d34a46 100644
--- a/mod/contacts.php
+++ b/mod/contacts.php
@@ -33,7 +33,7 @@ function contacts_init(&$a) {
$vcard_widget = replace_macros(get_markup_template("vcard-widget.tpl"),array(
'$name' => $a->data['contact']['name'],
'$photo' => $a->data['contact']['photo'],
- '$url' => ($a->data['contact']['network'] == 'dfrn') ? $a->get_baseurl()."/redir/".$a->data['contact']['id'] : $a->data['contact']['url']
+ '$url' => ($a->data['contact']['network'] == NETWORK_DFRN) ? $a->get_baseurl()."/redir/".$a->data['contact']['id'] : $a->data['contact']['url']
));
$follow_widget = '';
}
@@ -681,7 +681,7 @@ function contacts_content(&$a) {
default:
break;
}
- if(($rr['network'] === 'dfrn') && ($rr['rel'])) {
+ if(($rr['network'] === NETWORK_DFRN) && ($rr['rel'])) {
$url = "redir/{$rr['id']}";
$sparkle = ' class="sparkle" ';
}
diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php
index f1ce296d9..1cc258853 100644
--- a/mod/dfrn_confirm.php
+++ b/mod/dfrn_confirm.php
@@ -340,7 +340,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
`pending` = 0,
`duplex` = %d,
`hidden` = %d,
- `network` = 'dfrn' WHERE `id` = %d
+ `network` = '%s' WHERE `id` = %d
",
dbesc($photos[0]),
dbesc($photos[1]),
@@ -351,6 +351,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
dbesc(datetime_convert()),
intval($duplex),
intval($hidden),
+ dbesc(NETWORK_DFRN),
intval($contact_id)
);
}
diff --git a/mod/photos.php b/mod/photos.php
index 003bcd915..f8bba01b0 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -1628,7 +1628,7 @@ function photos_content(&$a) {
if(local_user() && ($item['contact-uid'] == local_user())
- && ($item['network'] == 'dfrn') && (! $item['self'] )) {
+ && ($item['network'] == NETWORK_DFRN) && (! $item['self'] )) {
$profile_url = $redirect_url;
$sparkle = ' sparkle';
}
diff --git a/mod/profperm.php b/mod/profperm.php
index 444f7a5ea..077f695be 100644
--- a/mod/profperm.php
+++ b/mod/profperm.php
@@ -37,7 +37,8 @@ function profperm_content(&$a) {
if(($a->argc > 2) && intval($a->argv[1]) && intval($a->argv[2])) {
$r = q("SELECT `id` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `self` = 0
- AND `network` = 'dfrn' AND `id` = %d AND `uid` = %d LIMIT 1",
+ AND `network` = '%s' AND `id` = %d AND `uid` = %d LIMIT 1",
+ dbesc(NETWORK_DFRN),
intval($a->argv[2]),
intval(local_user())
);
@@ -130,10 +131,11 @@ function profperm_content(&$a) {
$o .= '' . t("All Contacts \x28with secure profile access\x29") . '
';
$o .= '';
$o .= '';
-
- $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0
- AND `network` = 'dfrn' ORDER BY `name` ASC",
- intval(local_user())
+
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0
+ AND `network` = '%s' ORDER BY `name` ASC",
+ intval(local_user()),
+ dbesc(NETWORK_DFRN)
);
if(count($r)) {
From 04d9d9863d114e14cea54517c753faf7f7d169ca Mon Sep 17 00:00:00 2001
From: Michael Vogel
Date: Sat, 11 Apr 2015 23:56:53 +0200
Subject: [PATCH 6/6] Fixed "Copy and paste" bug.
---
include/acl_selectors.php | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/acl_selectors.php b/include/acl_selectors.php
index 1e4343161..b2c4b31c8 100644
--- a/include/acl_selectors.php
+++ b/include/acl_selectors.php
@@ -181,12 +181,12 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
$sql_extra .= sprintf(" AND `rel` = %d ", intval(CONTACT_IS_FRIEND));
}
- if($privmail) {
- $sql_extra .= " AND `network` IN ( NETWORK_DFRN, NETWORK_DIASPORA ) ";
- }
- elseif($privatenet) {
- $sql_extra .= " AND `network` IN ( NETWORK_DFRN, NETWORK_MAIL, NETWORK_FACEBOOK, NETWORK_DIASPORA ) ";
- }
+ if($privmail)
+ $sql_extra .= sprintf(" AND `network` IN ('%s' , '%s') ",
+ NETWORK_DFRN, NETWORK_DIASPORA);
+ elseif($privatenet)
+ $sql_extra .= sprintf(" AND `network` IN ('%s' , '%s', '%s', '%s') ",
+ NETWORK_DFRN, NETWORK_MAIL, NETWORK_FACEBOOK, NETWORK_DIASPORA);
$tabindex = ($tabindex > 0 ? "tabindex=\"$tabindex\"" : "");