aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Lib/Activity.php8
-rw-r--r--Zotlabs/Module/Apschema.php56
-rw-r--r--Zotlabs/Module/React.php8
-rwxr-xr-xboot.php2
-rw-r--r--include/connections.php23
5 files changed, 91 insertions, 6 deletions
diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php
index 12194664b..9d11cc201 100644
--- a/Zotlabs/Lib/Activity.php
+++ b/Zotlabs/Lib/Activity.php
@@ -566,6 +566,7 @@ class Activity {
return [];
}
+
if($i['target']) {
if(! is_array($i['target'])) {
$i['target'] = json_decode($i['target'],true);
@@ -710,7 +711,7 @@ class Activity {
// Reactions will just map to normal activities
if(strpos($verb,ACTIVITY_REACT) !== false)
- return 'Create';
+ return 'emojiReaction';
if(strpos($verb,ACTIVITY_MOOD) !== false)
return 'Create';
@@ -1486,7 +1487,7 @@ class Activity {
}
- if(in_array($act->type, [ 'Like', 'Dislike', 'Flag', 'Block', 'Announce', 'Accept', 'Reject', 'TentativeAccept' ])) {
+ if(in_array($act->type, [ 'Like', 'Dislike', 'Flag', 'Block', 'Announce', 'Accept', 'Reject', 'TentativeAccept', 'emojiReaction' ])) {
$response_activity = true;
@@ -1527,6 +1528,9 @@ class Activity {
if($act->type === 'Announce') {
$content['content'] = sprintf( t('🔁 Repeated %1$s\'s %2$s'), $mention, $act->obj['type']);
}
+ if ($act->type === 'emojiReaction') {
+ $content['content'] = (($act->tgt && $act->tgt['type'] === 'Image') ? '[img=32x32]' . $act->tgt['url'] . '[/img]' : '&#x' . $act->tgt['name'] . ';');
+ }
}
if(! $s['created'])
diff --git a/Zotlabs/Module/Apschema.php b/Zotlabs/Module/Apschema.php
new file mode 100644
index 000000000..5b249bfe8
--- /dev/null
+++ b/Zotlabs/Module/Apschema.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace Zotlabs\Module;
+
+
+class Apschema extends \Zotlabs\Web\Controller {
+
+ function init() {
+
+ $base = z_root();
+
+ $arr = [
+ '@context' => [
+ 'zot' => z_root() . '/apschema#',
+ 'id' => '@id',
+ 'type' => '@type',
+ 'commentPolicy' => 'as:commentPolicy',
+ 'meData' => 'zot:meData',
+ 'meDataType' => 'zot:meDataType',
+ 'meEncoding' => 'zot:meEncoding',
+ 'meAlgorithm' => 'zot:meAlgorithm',
+ 'meCreator' => 'zot:meCreator',
+ 'meSignatureValue' => 'zot:meSignatureValue',
+ 'locationAddress' => 'zot:locationAddress',
+ 'locationPrimary' => 'zot:locationPrimary',
+ 'locationDeleted' => 'zot:locationDeleted',
+ 'nomadicLocation' => 'zot:nomadicLocation',
+ 'nomadicHubs' => 'zot:nomadicHubs',
+ 'emojiReaction' => 'zot:emojiReaction',
+
+ 'magicEnv' => [
+ '@id' => 'zot:magicEnv',
+ '@type' => '@id'
+ ],
+
+ 'nomadicLocations' => [
+ '@id' => 'zot:nomadicLocations',
+ '@type' => '@id'
+ ],
+
+ 'ostatus' => 'http://ostatus.org#',
+ 'conversation' => 'ostatus:conversation'
+
+ ]
+ ];
+
+ header('Content-Type: application/ld+json');
+ echo json_encode($arr,JSON_UNESCAPED_SLASHES);
+ killme();
+
+ }
+
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Module/React.php b/Zotlabs/Module/React.php
index 3920301f5..f80b04a3f 100644
--- a/Zotlabs/Module/React.php
+++ b/Zotlabs/Module/React.php
@@ -59,6 +59,14 @@ class React extends \Zotlabs\Web\Controller {
$n['body'] = "\n\n[zmg=32x32]" . z_root() . '/images/emoji/' . $emoji . '.png[/zmg]' . "\n\n";
$n['author_xchan'] = $channel['channel_hash'];
+ $n['tgt_type'] = 'Image';
+ $n['target'] = [
+ 'type' => 'Image',
+ 'name' => $emoji,
+ 'url' => z_root() . '/images/emoji/' . $emoji . '.png'
+ ];
+
+
$x = item_store($n);
retain_item($postid);
diff --git a/boot.php b/boot.php
index 6a52c2ca4..89c6d5e1f 100755
--- a/boot.php
+++ b/boot.php
@@ -467,7 +467,7 @@ define ( 'NAMESPACE_YMEDIA', 'http://search.yahoo.com/mrss/' );
define ( 'ACTIVITYSTREAMS_JSONLD_REV', 'https://www.w3.org/ns/activitystreams' );
-define ( 'ZOT_APSCHEMA_REV', '/apschema/v1.3' );
+define ( 'ZOT_APSCHEMA_REV', '/apschema/v1.4' );
/**
* activity stream defines
*/
diff --git a/include/connections.php b/include/connections.php
index d97ea3887..6382250d5 100644
--- a/include/connections.php
+++ b/include/connections.php
@@ -373,19 +373,36 @@ function contact_remove($channel_id, $abook_id) {
if(intval($abook['abook_self']))
return false;
- $r = q("select id from item where (owner_xchan = '%s' or author_xchan = '%s') and uid = %d and item_retained = 0 and item_starred = 0",
+ $r = q("select id, parent from item where (owner_xchan = '%s' or author_xchan = '%s') and uid = %d and item_retained = 0 and item_starred = 0",
dbesc($abook['abook_xchan']),
dbesc($abook['abook_xchan']),
intval($channel_id)
);
if($r) {
foreach($r as $rr) {
- $x = q("select uid from term where otype = %d and oid = %d and ttype = %d limit 1",
+ $w = $x = $y = null;
+
+ // if this isn't the parent, see if the conversation was retained
+ if($rr['id'] != $rr['parent']) {
+ $w = q("select id from item where parent = %d and item_retained = 0",
+ intval($rr['parent'])
+ );
+ if($w) {
+ // see if the conversation was filed
+ $x = q("select uid from term where otype = %d and oid = %d and ttype = %d limit 1",
+ intval(TERM_OBJ_POST),
+ intval($w[0]['id']),
+ intval(TERM_FILE)
+ );
+ }
+ }
+ // see if this item was filed
+ $y = q("select uid from term where otype = %d and oid = %d and ttype = %d limit 1",
intval(TERM_OBJ_POST),
intval($rr['id']),
intval(TERM_FILE)
);
- if($x) {
+ if($w || $x || $y) {
continue;
}
drop_item($rr['id'],false);