static function validateUri($uri)
{
// Check mailto: URIs first
+ $validate = new Validate();
if (preg_match('/^mailto:(.*)$/', $uri, $match)) {
- return Validate::email($match[1], common_config('email', 'check_domain'));
+ return $validate->email($match[1], common_config('email', 'check_domain'));
}
- if (Validate::uri($uri)) {
+ if ($validate->uri($uri)) {
return true;
}
// Possibly an upstream bug; tag: URIs aren't validated properly
// unless you explicitly ask for them. All other schemes are accepted
// for basic URI validation without asking.
- if (Validate::uri($uri, array('allowed_scheme' => array('tag')))) {
+ if ($validate->uri($uri, array('allowed_scheme' => array('tag')))) {
return true;
}
return false;
}
- static function getFeedAuthor($feedEl)
+ static function getFeedAuthor(DOMElement $feedEl)
{
// Try old and deprecated activity:subject
return null;
}
- static function compareTypes($type, $objects) // this does verbs too!
+ static function compareTypes($type, $objects)
{
- $type = self::resolveUri($type);
+ $type = self::resolveUri($type, false);
foreach ((array)$objects as $object) {
if ($type === self::resolveUri($object)) {
return true;
return false;
}
+ static function compareVerbs($type, $objects)
+ {
+ return self::compareTypes($type, $objects);
+ }
+
static function resolveUri($uri, $make_relative=false)
{
if (empty($uri)) {
}
static function findLocalObject(array $uris, $type=ActivityObject::NOTE) {
- $object = null;
- // TODO: Extend this in plugins etc.
- if (Event::handle('StartFindLocalActivityObject', array($uris, $type, &$object))) {
+ $obj_class = null;
+ // TODO: Extend this in plugins etc. and describe in EVENTS.txt
+ if (Event::handle('StartFindLocalActivityObject', array($uris, $type, &$obj_class))) {
switch (self::resolveUri($type)) {
case ActivityObject::PERSON:
// GROUP will also be here in due time...
- $object = new Profile();
+ $obj_class = 'Profile';
break;
default:
- $object = new Notice();
+ $obj_class = 'Notice';
}
}
- foreach (array_unique($uris) as $uri) {
+ $object = null;
+ $uris = array_unique($uris);
+ foreach ($uris as $uri) {
try {
// the exception thrown will cancel before reaching $object
- $object = call_user_func(array($object, 'fromUri'), $uri);
+ $object = call_user_func("{$obj_class}::fromUri", $uri);
break;
- } catch (Exception $e) {
- common_debug('Could not find local activity object from uri: '.$uri);
+ } catch (UnknownUriException $e) {
+ common_debug('Could not find local activity object from uri: '.$e->object_uri);
}
}
- if (!empty($object)) {
- Event::handle('EndFindLocalActivityObject', array($object->getUri(), $type, $object));
- } else {
- throw new Exception('Could not find any activityobject stored locally with given URI');
+ if (!$object instanceof Managed_DataObject) {
+ throw new ServerException('Could not find any activityobject stored locally with given URIs: '.var_export($uris,true));
}
+ Event::handle('EndFindLocalActivityObject', array($object->getUri(), $object->getObjectType(), $object));
return $object;
}
return $profile;
}
+
+ static public function typeToTitle($type)
+ {
+ return ucfirst(self::resolveUri($type, true));
+ }
+
+ static public function verbToTitle($verb)
+ {
+ return ucfirst(self::resolveUri($verb, true));
+ }
}