X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=inline;f=mod%2Fdfrn_request.php;h=60106661cb38afd37d07f3581a731c5446716617;hb=e70551eeec9a1652d16c526dc4885b4ff243caa0;hp=3c16e2560a14851aeb1637f44429e2473650c167;hpb=033935c19406c8468ed75fdd15a3a532f4e25319;p=friendica.git diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 3c16e2560a..60106661cb 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -44,8 +44,8 @@ function dfrn_request_post(&$a) { if(x($dfrn_url)) { - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' LIMIT 1", - intval(get_uid()), + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `self` = 0 LIMIT 1", + intval(local_user()), dbesc($dfrn_url) ); @@ -96,13 +96,14 @@ function dfrn_request_post(&$a) { dbesc_array($parms); - $r = q("INSERT INTO `contact` ( `uid`, `created`,`url`, `name`, `photo`, `site-pubkey`, + $r = q("INSERT INTO `contact` ( `uid`, `created`,`url`, `name`, `nick`, `photo`, `site-pubkey`, `request`, `confirm`, `notify`, `poll`, `aes_allow`) - VALUES ( %d, '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', %d)", - intval(get_uid()), + VALUES ( %d, '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)", + intval(local_user()), datetime_convert(), dbesc($dfrn_url), $parms['fn'], + $parms['nick'], $parms['photo'], $parms['key'], $parms['dfrn-request'], @@ -191,6 +192,8 @@ function dfrn_request_post(&$a) { $network = 'dfrn'; } + logger('dfrn_request: url: ' . $url); + if(! strlen($url)) { notice( t("Unable to resolve your name at the provided location.") . EOL); return; @@ -198,7 +201,7 @@ function dfrn_request_post(&$a) { if($network === 'dfrn') { - $ret = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' LIMIT 1", + $ret = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `self` = 0 LIMIT 1", intval($uid), dbesc($url) ); @@ -208,11 +211,16 @@ function dfrn_request_post(&$a) { notice( t('You have already introduced yourself here.') . EOL ); return; } + elseif($ret[0]['rel'] == REL_BUD) { + notice( t('Apparently you are already friends with .') . $a->profile['name'] . EOL); + return; + } else { $contact_record = $ret[0]; $parms = array('dfrn-request' => $ret[0]['request']); } } + $issued_id = random_string(); if(is_array($contact_record)) { @@ -266,13 +274,14 @@ function dfrn_request_post(&$a) { dbesc_array($parms); - $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `name`, `issued-id`, `photo`, `site-pubkey`, + $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `name`, `nick`, `issued-id`, `photo`, `site-pubkey`, `request`, `confirm`, `notify`, `poll` ) - VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )", + VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )", intval($uid), datetime_convert(), $parms['url'], $parms['fn'], + $parms['nick'], $parms['issued-id'], $parms['photo'], $parms['key'], @@ -314,8 +323,7 @@ function dfrn_request_post(&$a) { ); } - - // This notice will only be seen by the requestor if the requestor and requestee are on the same server. + // This notice will only be seen by the requestor if the requestor and requestee are on the same server. if(! $failed) notice( t('Your introduction has been sent.') . EOL ); @@ -417,9 +425,13 @@ function dfrn_request_content(&$a) { WHERE `contact`.`id` = %d LIMIT 1", intval($intro[0]['contact-id']) ); - if(count($r)) { - if($r[0]['notify-flags'] & NOTIFY_INTRO) { + $auto_confirm = false; + + if(count($r)) { + if($r[0]['page-flags'] != PAGE_NORMAL) + $auto_confirm = true; + if(($r[0]['notify-flags'] & NOTIFY_INTRO) && (! $auto_confirm)) { $email_tpl = load_view_file('view/request_notify_eml.tpl'); $email = replace_macros($email_tpl, array( '$requestor' => ((strlen(stripslashes($r[0]['name']))) ? stripslashes($r[0]['name']) : t('[Name Withheld]')), @@ -431,25 +443,48 @@ function dfrn_request_content(&$a) { $res = mail($r[0]['email'], t("Introduction received at ") . $a->config['sitename'], $email, - 'From: ' . t('Administrator') . '@' . $_SERVER[SERVER_NAME] ); + 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] ); // This is a redundant notification - no point throwing errors if it fails. } + if($auto_confirm) { + require_once('mod/dfrn_confirm.php'); + $handsfree = array( + 'uid' => $r[0]['uid'], + 'node' => $r[0]['nickname'], + 'dfrn_id' => $r[0]['issued-id'], + 'intro_id' => $intro[0]['id'], + 'duplex' => (($r[0]['page-flags'] == PAGE_FREELOVE) ? 1 : 0) + ); + dfrn_confirm_post($a,$handsfree); + } + } - $r = q("UPDATE `intro` SET `blocked` = 0 WHERE `hash` = '%s' LIMIT 1", - dbesc($_GET['confirm_key']) - ); + if(! $auto_confirm) { + + // If we are auto_confirming, this record will have already been nuked + // in dfrn_confirm_post() + $r = q("UPDATE `intro` SET `blocked` = 0 WHERE `hash` = '%s' LIMIT 1", + dbesc($_GET['confirm_key']) + ); + } } killme(); return; // NOTREACHED } else { - + $myaddr = ((x($_GET,'address')) ? urldecode($_GET['address']) : ''); // Normal web request. Display our user's introduction form. - - $o = load_view_file("view/dfrn_request.tpl"); - $o = replace_macros($o,array('$nickname' => $a->argv[1])); + if($a->profile['page-flags'] == PAGE_NORMAL) + $tpl = load_view_file('view/dfrn_request.tpl'); + else + $tpl = load_view_file('view/auto_request.tpl'); + $o .= replace_macros($tpl,array( + '$nickname' => $a->argv[1], + '$name' => $a->profile['name'], + '$myaddr' => $myaddr + )); return $o; }