diff options
author | git-marijus <mario@mariovavti.com> | 2017-07-18 14:26:08 +0200 |
---|---|---|
committer | git-marijus <mario@mariovavti.com> | 2017-07-18 14:26:08 +0200 |
commit | ac6ebeee473e2e4b0536b0884a9251e32ea5bcff (patch) | |
tree | ad3428838a67dfa080f9f4f251aaa9bf309c564c /Zotlabs | |
parent | 08c0d78296d4518a5ece4d6a2c05b9be83580aa8 (diff) | |
parent | 15e836b7dd2fed3f97f134928d88e13db1d8a7f4 (diff) | |
download | volse-hubzilla-ac6ebeee473e2e4b0536b0884a9251e32ea5bcff.tar.gz volse-hubzilla-ac6ebeee473e2e4b0536b0884a9251e32ea5bcff.tar.bz2 volse-hubzilla-ac6ebeee473e2e4b0536b0884a9251e32ea5bcff.zip |
Merge remote-tracking branch 'mike/master' into dev
Diffstat (limited to 'Zotlabs')
-rw-r--r-- | Zotlabs/Lib/ActivityStreams2.php | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/Zotlabs/Lib/ActivityStreams2.php b/Zotlabs/Lib/ActivityStreams2.php new file mode 100644 index 000000000..46852886b --- /dev/null +++ b/Zotlabs/Lib/ActivityStreams2.php @@ -0,0 +1,86 @@ +<?php + +namespace Zotlabs\Lib; + + +class ActivityStreams2 { + + public $data; + public $valid = false; + public $id = ''; + public $type = ''; + public $actor = null; + public $obj = null; + public $tgt = null; + + function __construct($string) { + + $this->data = json_decode($string,true); + if($this->data) { + $this->valid = true; + } + + if($this->is_valid()) { + $this->id = $this->get_property_obj('id'); + $this->type = $this->get_primary_type(); + $this->actor = $this->get_compound_property('actor'); + $this->obj = $this->get_compound_property('object'); + $this->tgt = $this->get_compound_property('target'); + } + } + + function is_valid() { + return $this->valid; + } + + function get_property_obj($property,$base = '') { + if(! $base) { + $base = $this->data; + } + return $base[$property]; + } + + function fetch_property($url) { + $redirects = 0; + $x = z_fetch_url($url,true,$redirects, + ['headers' => [ 'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"']]); + if($x['success']) + return json_decode($x['body'],true); + return null; + } + + function get_compound_property($property,$base = '') { + $x = $this->get_property_obj($property,$base); + if($this->is_url($x)) { + $x = $this->fetch_property($x); + } + return $x; + } + + function is_url($url) { + if(($url) && (! is_array($url)) && (strpos($url,'http') === 0)) { + return true; + } + return false; + } + + function get_primary_type($base = '') { + if(! $base) + $base = $this->data; + $x = $this->get_property_obj('type',$base); + if(is_array($x)) { + foreach($x as $y) { + if(strpos($y,':') === false) { + return $y; + } + } + } + return $x; + } + + function debug() { + $x = var_export($this,true); + return $x; + } + +}
\ No newline at end of file |