Merge pull request #1505 from annando/1504-unified-follow

The behaviour when following a new contact is now unified
This commit is contained in:
fabrixxm 2015-04-12 08:48:36 +02:00
commit 8b2742dc7d
8 changed files with 128 additions and 16 deletions

View file

@ -1695,7 +1695,6 @@ if(! function_exists('profile_sidebar')) {
if($a->theme['template_engine'] === 'internal') if($a->theme['template_engine'] === 'internal')
$location = template_escape($location); $location = template_escape($location);
$tpl = get_markup_template('profile_vcard.tpl'); $tpl = get_markup_template('profile_vcard.tpl');
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
'$profile' => $p, '$profile' => $p,

View file

@ -15,7 +15,7 @@
function new_contact($uid,$url,$interactive = false) { function new_contact($uid,$url,$interactive = false) {
$result = array('success' => false,'message' => ''); $result = array('cid' => -1, 'success' => false,'message' => '');
$a = get_app(); $a = get_app();
@ -208,7 +208,7 @@ function new_contact($uid,$url,$interactive = false) {
$contact = $r[0]; $contact = $r[0];
$contact_id = $r[0]['id']; $contact_id = $r[0]['id'];
$result['cid'] = $contact_id;
$g = q("select def_gid from user where uid = %d limit 1", $g = q("select def_gid from user where uid = %d limit 1",
intval($uid) intval($uid)

View file

@ -664,6 +664,21 @@ function dfrn_request_content(&$a) {
$dfrn_url = notags(trim(hex2bin($_GET['dfrn_url']))); $dfrn_url = notags(trim(hex2bin($_GET['dfrn_url'])));
$aes_allow = (((x($_GET,'aes_allow')) && ($_GET['aes_allow'] == 1)) ? 1 : 0); $aes_allow = (((x($_GET,'aes_allow')) && ($_GET['aes_allow'] == 1)) ? 1 : 0);
$confirm_key = (x($_GET,'confirm_key') ? $_GET['confirm_key'] : ""); $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"); $tpl = get_markup_template("dfrn_req_confirm.tpl");
$o = replace_macros($tpl,array( $o = replace_macros($tpl,array(
'$dfrn_url' => $dfrn_url, '$dfrn_url' => $dfrn_url,

View file

@ -193,11 +193,13 @@ function display_fetchauthor($a, $item) {
} }
if (local_user()) { if (local_user()) {
if ($profiledata["network"] == NETWORK_DFRN) { if (in_array($profiledata["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
$connect = str_replace("/profile/", "/dfrn_request/", $profiledata["url"])."&addr=".bin2hex($a->get_baseurl()."/profile/".$a->user["nickname"]); $profiledata["remoteconnect"] = $a->get_baseurl()."/follow?url=".urlencode($profiledata["url"]);
$profiledata["remoteconnect"] = $connect; //if ($profiledata["network"] == NETWORK_DFRN) {
} elseif ($profiledata["network"] == NETWORK_DIASPORA) // $connect = str_replace("/profile/", "/dfrn_request/", $profiledata["url"])."&addr=".bin2hex($a->get_baseurl()."/profile/".$a->user["nickname"]);
$profiledata["remoteconnect"] = $a->get_baseurl()."/contacts?add=".GetProfileUsername($profiledata["url"], "", true); // $profiledata["remoteconnect"] = $connect;
//} elseif ($profiledata["network"] == NETWORK_DIASPORA)
// $profiledata["remoteconnect"] = $a->get_baseurl()."/contacts?add=".GetProfileUsername($profiledata["url"], "", true);
} elseif ($profiledata["network"] == NETWORK_DFRN) { } elseif ($profiledata["network"] == NETWORK_DFRN) {
$connect = str_replace("/profile/", "/dfrn_request/", $profiledata["url"]); $connect = str_replace("/profile/", "/dfrn_request/", $profiledata["url"]);
$profiledata["remoteconnect"] = $connect; $profiledata["remoteconnect"] = $connect;

80
mod/follow.php Normal file → Executable file
View file

@ -3,7 +3,7 @@
require_once('include/Scrape.php'); require_once('include/Scrape.php');
require_once('include/follow.php'); require_once('include/follow.php');
function follow_init(&$a) { function follow_content(&$a) {
if(! local_user()) { if(! local_user()) {
notice( t('Permission denied.') . EOL); notice( t('Permission denied.') . EOL);
@ -11,10 +11,85 @@ function follow_init(&$a) {
// NOTREACHED // 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(); $uid = local_user();
$url = notags(trim($_REQUEST['url'])); $url = notags(trim($_REQUEST['url']));
$return_url = $_SESSION['return_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); $result = new_contact($uid,$url,true);
@ -22,7 +97,8 @@ function follow_init(&$a) {
if($result['message']) if($result['message'])
notice($result['message']); notice($result['message']);
goaway($return_url); goaway($return_url);
} } elseif ($result['cid'])
goaway($a->get_baseurl().'/contacts/'.$result['cid']);
info( t('Contact added').EOL); info( t('Contact added').EOL);

View file

@ -20,16 +20,27 @@
</p> </p>
{{/if}} {{/if}}
{{if $request}}
<form action="{{$request}}" method="post" />
{{else}}
<form action="dfrn_request/{{$nickname}}" method="post" /> <form action="dfrn_request/{{$nickname}}" method="post" />
{{/if}}
{{if $photo}}
<img src="{{$photo}}" alt="" id="dfrn-request-photo">
{{/if}}
<div id="dfrn-request-url-wrapper" > <div id="dfrn-request-url-wrapper" >
<label id="dfrn-url-label" for="dfrn-url" >{{$your_address}}</label> <label id="dfrn-url-label" for="dfrn-url" >{{$your_address}}</label>
{{if $myaddr}} {{if $myaddr}}
{{$myaddr}} {{$myaddr}}
<input type="hidden" name="dfrn_url" id="dfrn-url" size="32" value="{{$myaddr|escape:'html'}}" /> <input type="hidden" name="dfrn_url" id="dfrn-url" value="{{$myaddr|escape:'html'}}" />
{{else}} {{else}}
<input type="text" name="dfrn_url" id="dfrn-url" size="32" value="{{$myaddr|escape:'html'}}" /> <input type="text" name="dfrn_url" id="dfrn-url" size="32" value="{{$myaddr|escape:'html'}}" />
{{/if}} {{/if}}
{{if $url}}
<input type="hidden" name="url" id="url" value="{{$url|escape:'html'}}" />
{{/if}}
<div id="dfrn-request-url-end"></div> <div id="dfrn-request-url-end"></div>
</div> </div>

View file

@ -1,5 +1,3 @@
<h1>{{$header}}</h1> <h1>{{$header}}</h1>
{{if $myaddr}} {{if $myaddr}}
@ -19,7 +17,15 @@
</p> </p>
{{/if}} {{/if}}
{{if $request}}
<form action="{{$request}}" method="post" />
{{else}}
<form action="dfrn_request/{{$nickname}}" method="post" /> <form action="dfrn_request/{{$nickname}}" method="post" />
{{/if}}
{{if $photo}}
<img src="{{$photo}}" alt="" id="dfrn-request-photo">
{{/if}}
<div id="dfrn-request-url-wrapper" > <div id="dfrn-request-url-wrapper" >
<label id="dfrn-url-label" for="dfrn-url" >{{$your_address}}</label> <label id="dfrn-url-label" for="dfrn-url" >{{$your_address}}</label>
@ -29,6 +35,9 @@
{{else}} {{else}}
<input type="text" name="dfrn_url" id="dfrn-url" size="32" value="{{$myaddr|escape:'html'}}" /> <input type="text" name="dfrn_url" id="dfrn-url" size="32" value="{{$myaddr|escape:'html'}}" />
{{/if}} {{/if}}
{{if $url}}
<input type="hidden" name="url" id="url" value="{{$url|escape:'html'}}" />
{{/if}}
<div id="dfrn-request-url-end"></div> <div id="dfrn-request-url-end"></div>
</div> </div>

View file

@ -2,7 +2,7 @@
<div id="follow-sidebar" class="widget"> <div id="follow-sidebar" class="widget">
<h3>{{$connect}}</h3> <h3>{{$connect}}</h3>
<div id="connect-desc">{{$desc}}</div> <div id="connect-desc">{{$desc}}</div>
<form action="follow" method="post" > <form action="follow" method="get" >
<input id="side-follow-url" type="text" name="url" value="{{$value|escape:'html'}}" size="24" placeholder="{{$hint|escape:'html'}}" title="{{$hint|escape:'html'}}" /><input id="side-follow-submit" type="submit" name="submit" value="{{$follow|escape:'html'}}" /> <input id="side-follow-url" type="text" name="url" value="{{$value|escape:'html'}}" size="24" placeholder="{{$hint|escape:'html'}}" title="{{$hint|escape:'html'}}" /><input id="side-follow-submit" type="submit" name="submit" value="{{$follow|escape:'html'}}" />
</form> </form>
</div> </div>