+ notice( t('This account has not been configured for email. Request failed.') . EOL);
+ return;
+ }
+ }
+
+ $r = q("insert into contact ( uid, created, addr, name, nick, url, nurl, poll, notify, blocked, pending, network, rel )
+ values( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d ) ",
+ intval($uid),
+ dbesc(datetime_convert()),
+ dbesc($addr),
+ dbesc($name),
+ dbesc($nick),
+ dbesc($url),
+ dbesc($nurl),
+ dbesc($poll),
+ dbesc($notify),
+ intval($blocked),
+ intval($pending),
+ dbesc($network),
+ intval($rel)
+ );
+
+ $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'];
+
+ $def_gid = get_default_group($uid, $r[0]["network"]);
+ if (intval($def_gid)) {
+ require_once('include/group.php');
+ group_add_member($uid, '', $contact_id, $def_gid);
+ }
+
+ $photo = avatar_img($addr);
+
+ $r = q("UPDATE `contact` SET
+ `photo` = '%s',
+ `thumb` = '%s',
+ `micro` = '%s',
+ `name-date` = '%s',
+ `uri-date` = '%s',
+ `avatar-date` = '%s',
+ `hidden` = 0,
+ WHERE `id` = %d
+ ",
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval($contact_id)
+ );
+ }
+
+ // contact is created. Now create an introduction
+
+ $hash = random_string();
+
+ $r = q("insert into intro ( uid, `contact-id`, knowyou, note, hash, datetime, blocked )
+ values( %d , %d, %d, '%s', '%s', '%s', %d ) ",
+ intval($uid),
+ intval($contact_id),
+ ((x($_POST,'knowyou') && ($_POST['knowyou'] == 1)) ? 1 : 0),
+ dbesc(notags(trim($_POST['dfrn-request-message']))),
+ dbesc($hash),
+ dbesc(datetime_convert()),
+ 1
+ );
+
+ // Next send an email verify form to the requestor.
+
+ } else {
+ // Detect the network
+ $data = probe_url($url);
+ $network = $data["network"];
+
+ // Canonicalise email-style profile locator
+ $url = webfinger_dfrn($url,$hcard);
+
+ if (substr($url,0,5) === 'stat:') {
+
+ // Every time we detect the remote subscription we define this as OStatus.
+ // We do this even if it is not OStatus.
+ // we only need to pass this through another section of the code.
+ if ($network != NETWORK_DIASPORA)
+ $network = NETWORK_OSTATUS;
+
+ $url = substr($url,5);
+ } else
+ $network = NETWORK_DFRN;