]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OStatus/lib/salmonaction.php
saving notices in salmon actions
[quix0rs-gnu-social.git] / plugins / OStatus / lib / salmonaction.php
index 7085e4583e20fe166b186e039f0896dfbb9e49d5..41e8322e8904fd677be6c7abd5c533bb6b0ea7b5 100644 (file)
@@ -81,6 +81,9 @@ class SalmonAction extends Action
             case ActivityVerb::FAVORITE:
                 $this->handleFavorite();
                 break;
+            case ActivityVerb::UNFAVORITE:
+                $this->handleUnfavorite();
+                break;
             case ActivityVerb::FOLLOW:
             case ActivityVerb::FRIEND:
                 $this->handleFollow();
@@ -228,4 +231,49 @@ class SalmonAction extends Action
             return null;
         }
     }
+
+    function saveNotice()
+    {
+        $oprofile = $this->ensureProfile();
+
+        // Get (safe!) HTML and text versions of the content
+
+        require_once(INSTALLDIR.'/extlib/HTMLPurifier/HTMLPurifier.auto.php');
+
+        $html = $this->act->object->content;
+
+        $rendered = HTMLPurifier::purify($html);
+        $content = html_entity_decode(strip_tags($rendered));
+
+        $options = array('is_local' => Notice::REMOTE_OMB,
+                         'uri' => $this->act->object->id,
+                         'url' => $this->act->object->link,
+                         'rendered' => $rendered);
+
+        if (!empty($this->act->context->location)) {
+            $options['lat'] = $location->lat;
+            $options['lon'] = $location->lon;
+            if ($location->location_id) {
+                $options['location_ns'] = $location->location_ns;
+                $options['location_id'] = $location->location_id;
+            }
+        }
+
+        if (!empty($this->act->context->replyToID)) {
+            $orig = Notice::staticGet('uri',
+                                      $this->act->context->replyToID);
+            if (!empty($orig)) {
+                $options['reply_to'] = $orig->id;
+            }
+        }
+
+        if (!empty($this->act->time)) {
+            $options['created'] = common_sql_time($this->act->time);
+        }
+
+        return Notice::saveNew($oprofile->profile_id,
+                               $content,
+                               'ostatus+salmon',
+                               $options);
+    }
 }