aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Zotlabs/Lib')
-rw-r--r--Zotlabs/Lib/ActivityStreams.php43
1 files changed, 42 insertions, 1 deletions
diff --git a/Zotlabs/Lib/ActivityStreams.php b/Zotlabs/Lib/ActivityStreams.php
index 3bbe3b190..686f4a140 100644
--- a/Zotlabs/Lib/ActivityStreams.php
+++ b/Zotlabs/Lib/ActivityStreams.php
@@ -14,6 +14,8 @@ class ActivityStreams {
public $origin = null;
public $owner = null;
+ public $recips = null;
+
function __construct($string) {
$this->data = json_decode($string,true);
@@ -28,7 +30,7 @@ class ActivityStreams {
$this->obj = $this->get_compound_property('object');
$this->tgt = $this->get_compound_property('target');
$this->origin = $this->get_compound_property('origin');
- $this->owner = $this->get_compound_property('owner','','http://purl.org/zot/protocol');
+ $this->recips = $this->collect_recips();
if(($this->type === 'Note') && (! $this->obj)) {
$this->obj = $this->data;
@@ -41,6 +43,45 @@ class ActivityStreams {
return $this->valid;
}
+ function collect_recips($base = '',$namespace = 'https://www.w3.org/ns/activitystreams') {
+ $x = [];
+ $fields = [ 'to','cc','bto','bcc','audience'];
+ foreach($fields as $f) {
+ $y = $this->get_compound_property($f,$base,$namespace);
+ if($y)
+ $x = array_merge($x,$y);
+ }
+// not yet ready for prime time
+// $x = $this->expand($x,$base,$namespace);
+ return $x;
+ }
+
+ function expand($arr,$base = '',$namespace = 'https://www.w3.org/ns/activitystreams') {
+ $ret = [];
+
+ // right now use a hardwired recursion depth of 5
+
+ for($z = 0; $z < 5; $z ++) {
+ if(is_array($arr) && $arr) {
+ foreach($arr as $a) {
+ if(is_array($a)) {
+ $ret[] = $a;
+ }
+ else {
+ $x = $this->get_compound_property($a,$base,$namespace);
+ if($x) {
+ $ret = array_merge($ret,$x);
+ }
+ }
+ }
+ }
+ }
+
+ // @fixme de-duplicate
+
+ return $ret;
+ }
+
function get_namespace($base,$namespace) {
$key = null;