save URIs of remote profiles marked for attention

This commit is contained in:
Evan Prodromou 2010-09-01 16:17:18 -04:00
parent 3baff9aa98
commit 2d4e0693c8

View File

@ -699,14 +699,16 @@ class Ostatus_profile extends Memcached_DataObject
} }
// Is the recipient a remote group? // Is the recipient a remote group?
$oprofile = Ostatus_profile::staticGet('uri', $recipient); $oprofile = Ostatus_profile::ensureProfileURI($recipient);
if ($oprofile) { if ($oprofile) {
if ($oprofile->isGroup()) { if ($oprofile->isGroup()) {
// Deliver to local members of this remote group. // Deliver to local members of this remote group.
// @fixme sender verification? // @fixme sender verification?
$groups[] = $oprofile->group_id; $groups[] = $oprofile->group_id;
} else { } else {
common_log(LOG_DEBUG, "Skipping reply to remote profile $recipient"); // may be canonicalized or something
$replies[] = $oprofile->uri;
} }
continue; continue;
} }
@ -1763,6 +1765,28 @@ class Ostatus_profile extends Memcached_DataObject
return $file; return $file;
} }
static function ensureProfileURI($uri)
{
$oprofile = null;
if (preg_match("/^(\w+)\:(.*)/", $uri, $match)) {
$protocol = $match[1];
switch ($protocol) {
case 'http':
case 'https':
$oprofile = Ostatus_profile::ensureProfileURL($uri);
break;
case 'acct':
case 'mailto':
$rest = $match[2];
$oprofile = Ostatus_profile::ensureWebfinger($rest);
default:
common_log("Unrecognized URI protocol for profile: $protocol ($uri)");
break;
}
}
}
} }
/** /**