add namespaces to activitystreams parser
This commit is contained in:
parent
18c57eeaa0
commit
f15d96bebe
@ -11,6 +11,8 @@ class ActivityStreams {
|
|||||||
public $actor = null;
|
public $actor = null;
|
||||||
public $obj = null;
|
public $obj = null;
|
||||||
public $tgt = null;
|
public $tgt = null;
|
||||||
|
public $origin = null;
|
||||||
|
public $owner = null;
|
||||||
|
|
||||||
function __construct($string) {
|
function __construct($string) {
|
||||||
|
|
||||||
@ -26,6 +28,7 @@ class ActivityStreams {
|
|||||||
$this->obj = $this->get_compound_property('object');
|
$this->obj = $this->get_compound_property('object');
|
||||||
$this->tgt = $this->get_compound_property('target');
|
$this->tgt = $this->get_compound_property('target');
|
||||||
$this->origin = $this->get_compound_property('origin');
|
$this->origin = $this->get_compound_property('origin');
|
||||||
|
$this->owner = $this->get_compound_property('owner','','http://purl.org/zot/protocol');
|
||||||
|
|
||||||
if(($this->type === 'Note') && (! $this->obj)) {
|
if(($this->type === 'Note') && (! $this->obj)) {
|
||||||
$this->obj = $this->data;
|
$this->obj = $this->data;
|
||||||
@ -38,9 +41,47 @@ class ActivityStreams {
|
|||||||
return $this->valid;
|
return $this->valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_property_obj($property,$base = '') {
|
function get_namespace($base,$namespace) {
|
||||||
|
|
||||||
|
$key = null;
|
||||||
|
|
||||||
|
foreach( [ $this->data, $base ] as $b ) {
|
||||||
|
if(! $b)
|
||||||
|
continue;
|
||||||
|
if(array_key_exists('@context',$b)) {
|
||||||
|
if(is_array($b['@context'])) {
|
||||||
|
foreach($b['@context'] as $ns) {
|
||||||
|
if(is_array($ns)) {
|
||||||
|
foreach($ns as $k => $v) {
|
||||||
|
if($namespace === $v)
|
||||||
|
$key = $k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if($namespace === $ns) {
|
||||||
|
$key = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if($namespace === $b['@context']) {
|
||||||
|
$key = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $key;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function get_property_obj($property,$base = '',$namespace = 'https://www.w3.org/ns/activitystreams') {
|
||||||
|
$prefix = $this->get_namespace($base,$namespace);
|
||||||
|
if($prefix === null)
|
||||||
|
return null;
|
||||||
$base = (($base) ? $base : $this->data);
|
$base = (($base) ? $base : $this->data);
|
||||||
return ((array_key_exists($property,$base)) ? $base[$property] : null);
|
$propname = (($prefix) ? $prefix . ':' : '') . $property;
|
||||||
|
return ((array_key_exists($propname,$base)) ? $base[$propname] : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetch_property($url) {
|
function fetch_property($url) {
|
||||||
@ -57,8 +98,8 @@ class ActivityStreams {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_compound_property($property,$base = '') {
|
function get_compound_property($property,$base = '',$namespace = 'https://www.w3.org/ns/activitystreams') {
|
||||||
$x = $this->get_property_obj($property,$base);
|
$x = $this->get_property_obj($property,$base,$namespace);
|
||||||
if($this->is_url($x)) {
|
if($this->is_url($x)) {
|
||||||
$x = $this->fetch_property($x);
|
$x = $this->fetch_property($x);
|
||||||
}
|
}
|
||||||
@ -72,10 +113,10 @@ class ActivityStreams {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_primary_type($base = '') {
|
function get_primary_type($base = '',$namespace = 'https://www.w3.org/ns/activitystreams') {
|
||||||
if(! $base)
|
if(! $base)
|
||||||
$base = $this->data;
|
$base = $this->data;
|
||||||
$x = $this->get_property_obj('type',$base);
|
$x = $this->get_property_obj('type',$base,$namespace);
|
||||||
if(is_array($x)) {
|
if(is_array($x)) {
|
||||||
foreach($x as $y) {
|
foreach($x as $y) {
|
||||||
if(strpos($y,':') === false) {
|
if(strpos($y,':') === false) {
|
||||||
|
Reference in New Issue
Block a user