X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fdfrn_request.php;h=7fe2527f3d73c9401654243c4bcaa1b2cf29d757;hb=7c9a0ec4594fa6d45cc615f8bde914bcc131226d;hp=5455996069d0b5fd3324e0073b5c1e2d7d8b10fe;hpb=95bfa17254e655af74e6cbe7a93785be011b2d62;p=friendica.git diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 5455996069..7fe2527f3d 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -11,6 +11,8 @@ require_once('include/enotify.php'); require_once('include/Scrape.php'); +require_once('include/Probe.php'); +require_once('include/group.php'); if(! function_exists('dfrn_request_init')) { function dfrn_request_init(&$a) { @@ -115,7 +117,7 @@ function dfrn_request_post(&$a) { * Scrape the other site's profile page to pick up the dfrn links, key, fn, and photo */ - $parms = scrape_dfrn($dfrn_url); + $parms = Probe::profile($dfrn_url); if(! count($parms)) { notice( t('Profile location is not valid or does not contain profile information.') . EOL ); @@ -126,7 +128,7 @@ function dfrn_request_post(&$a) { notice( t('Warning: profile location has no identifiable owner name.') . EOL ); if(! x($parms,'photo')) notice( t('Warning: profile location has no profile photo.') . EOL ); - $invalid = validate_dfrn($parms); + $invalid = Probe::valid_dfrn($parms); if($invalid) { notice( sprintf( tt("%d required parameter was not found at the given location", "%d required parameters were not found at the given location", @@ -137,6 +139,8 @@ function dfrn_request_post(&$a) { $dfrn_request = $parms['dfrn-request']; + $photo = $parms["photo"]; + /********* Escape the entire array ********/ dbesc_array($parms); @@ -174,19 +178,19 @@ function dfrn_request_post(&$a) { info( t("Introduction complete.") . EOL); } - $r = q("select id from contact where uid = %d and url = '%s' and `site-pubkey` = '%s' limit 1", + $r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `site-pubkey` = '%s' LIMIT 1", intval(local_user()), dbesc($dfrn_url), $parms['key'] // this was already escaped ); if(count($r)) { - $g = q("select def_gid from user where uid = %d limit 1", - intval(local_user()) - ); - if($g && intval($g[0]['def_gid'])) { - require_once('include/group.php'); - group_add_member(local_user(),'',$r[0]['id'],$g[0]['def_gid']); - } + $def_gid = get_default_group(local_user(), $r[0]["network"]); + if(intval($def_gid)) + group_add_member(local_user(), '', $r[0]['id'], $def_gid); + + if (isset($photo)) + update_contact_avatar($photo, local_user(), $r[0]["id"], true); + $forwardurl = $a->get_baseurl()."/contacts/".$r[0]['id']; } else $forwardurl = $a->get_baseurl()."/contacts"; @@ -388,20 +392,16 @@ function dfrn_request_post(&$a) { intval($rel) ); - $r = q("select id from contact where poll = '%s' and uid = %d limit 1", + $r = q("SELECT `id`, `network` FROM `contact` WHERE `poll` = '%s' AND `uid` = %d LIMIT 1", dbesc($poll), intval($uid) ); if(count($r)) { $contact_id = $r[0]['id']; - $g = q("select def_gid from user where uid = %d limit 1", - intval($uid) - ); - if($g && intval($g[0]['def_gid'])) { - require_once('include/group.php'); - group_add_member($uid,'',$contact_id,$g[0]['def_gid']); - } + $def_gid = get_default_group($uid, $r[0]["network"]); + if (intval($def_gid)) + group_add_member($uid, '', $contact_id, $def_gid); $photo = avatar_img($addr); @@ -448,7 +448,7 @@ function dfrn_request_post(&$a) { $network = $data["network"]; // Canonicalise email-style profile locator - $url = webfinger_dfrn($url,$hcard); + $url = Probe::webfinger_dfrn($url,$hcard); if (substr($url,0,5) === 'stat:') { @@ -512,7 +512,7 @@ function dfrn_request_post(&$a) { require_once('include/Scrape.php'); - $parms = scrape_dfrn(($hcard) ? $hcard : $url); + $parms = Probe::profile(($hcard) ? $hcard : $url); if(! count($parms)) { notice( t('Profile location is not valid or does not contain profile information.') . EOL ); @@ -523,7 +523,7 @@ function dfrn_request_post(&$a) { notice( t('Warning: profile location has no identifiable owner name.') . EOL ); if(! x($parms,'photo')) notice( t('Warning: profile location has no profile photo.') . EOL ); - $invalid = validate_dfrn($parms); + $invalid = Probe::valid_dfrn($parms); if($invalid) { notice( sprintf( tt("%d required parameter was not found at the given location", "%d required parameters were not found at the given location", @@ -536,7 +536,7 @@ function dfrn_request_post(&$a) { $parms['url'] = $url; $parms['issued-id'] = $issued_id; - + $photo = $parms["photo"]; dbesc_array($parms); $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `name`, `nick`, `issued-id`, `photo`, `site-pubkey`, @@ -545,7 +545,7 @@ function dfrn_request_post(&$a) { intval($uid), dbesc(datetime_convert()), $parms['url'], - dbesc(normalise_link($parms['url'])), + dbesc(normalise_link($url)), $parms['addr'], $parms['fn'], $parms['nick'], @@ -568,8 +568,10 @@ function dfrn_request_post(&$a) { $parms['url'], $parms['issued-id'] ); - if(count($r)) + if(count($r)) { $contact_record = $r[0]; + update_contact_avatar($photo, $uid, $contact_record["id"], true); + } } }