]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Notice from web now saves context->attention too! ;)
authorMikael Nordfeldth <mmn@hethane.se>
Thu, 7 Jan 2016 22:24:15 +0000 (23:24 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Thu, 7 Jan 2016 22:24:15 +0000 (23:24 +0100)
actions/newnotice.php
classes/Attention.php
plugins/NoticeTitle/NoticeTitlePlugin.php

index 4a864b25c3c926e2b2964c4892484096d69fb58e..f874e6f9cb3b268c1bc6fc5b9e847e0878e058d7 100644 (file)
@@ -145,8 +145,6 @@ class NewnoticeAction extends FormAction
             // simply no attached media to the new notice
         }
 
-        $content = $this->scoped->shortenLinks($content);
-
         // Reject notice if it is too long (without the HTML)
         // This is done after MediaFile::fromUpload etc. just to act the same as the ApiStatusesUpdateAction
         if (Notice::contentTooLong($content)) {
@@ -158,13 +156,6 @@ class NewnoticeAction extends FormAction
                                               Notice::maxContent()));
         }
 
-        $actobj = new ActivityObject();
-        $actobj->type = ActivityObject::NOTE;
-        $actobj->content = common_render_content($content, $this->scoped, $parent);
-
-        $act->objects[] = $actobj;
-
-
         $act->context = new ActivityContext();
 
         if ($parent instanceof Notice) {
@@ -191,15 +182,21 @@ class NewnoticeAction extends FormAction
             $act->context->location = Location::fromOptions($locOptions);
         }
 
-        $author_id = $this->scoped->id;
-        $text      = $content;
+        $content = $this->scoped->shortenLinks($content);
+
+        // FIXME: Make sure NoticeTitle plugin gets a change to add the title to our activityobject!
+        if (Event::handle('StartNoticeSaveWeb', array($this, $this->scoped, &$content, &$options))) {
 
-        // Does the heavy-lifting for getting "To:" information
+            // FIXME: We should be able to get the attentions from common_render_content!
+            // and maybe even directly save whether they're local or not!
+            $act->context->attention = common_find_attentions($content, $this->scoped, $parent);
 
-        ToSelector::fillOptions($this, $options);
+            $actobj = new ActivityObject();
+            $actobj->type = ActivityObject::NOTE;
+            $actobj->content = common_render_content($content, $this->scoped, $parent);
 
-        // FIXME: Make sure NoticeTitle plugin gets a change to add the title to our activityobject!
-        if (Event::handle('StartNoticeSaveWeb', array($this, &$author_id, &$text, &$options))) {
+            // Finally add the activity object to our activity
+            $act->objects[] = $actobj;
 
             $this->stored = Notice::saveActivity($act, $this->scoped, $options);
 
index c15a118e122f7a6f397b2323a8684c4094f20f14..5299a095aedfff50c4c9cae08f555a1cca154b96 100644 (file)
@@ -49,18 +49,23 @@ class Attention extends Managed_DataObject
         );
     }
 
-    public static function saveNew(Notice $notice, Profile $profile, $reason=null)
+    public static function saveNew(Notice $notice, Profile $target, $reason=null)
     {
-        $att = new Attention();
+        try {
+            $att = Attention::getByKeys(['notice_id'=>$notice->getID(), 'profile_id'=>$target->getID()]);
+            throw new AlreadyFulfilledException('Attention already exists with reason: '.var_export($att->reason,true));
+        } catch (NoResultException $e) {
+            $att = new Attention();
         
-        $att->notice_id = $notice->getID();
-        $att->profile_id = $profile->getID();
-        $att->reason = $reason;
-        $att->created = common_sql_now();
-        $result = $att->insert();
+            $att->notice_id = $notice->getID();
+            $att->profile_id = $target->getID();
+            $att->reason = $reason;
+            $att->created = common_sql_now();
+            $result = $att->insert();
 
-        if ($result === false) {
-            throw new Exception('Could not saveNew in Attention');
+            if ($result === false) {
+                throw new Exception('Failed Attention::saveNew for notice id=='.$notice->getID().' target id=='.$target->getID().', reason=="'.$reason.'"');
+            }
         }
         return $att;
     }
index 960cb935f715ced90e5ec2102c353a2e8f619351..22528d0b50e785a79296ab43005198dfdf25ec2b 100644 (file)
@@ -124,13 +124,13 @@ class NoticeTitlePlugin extends Plugin
      * Validate notice title before saving
      *
      * @param Action  $action    NewNoticeAction being executed
-     * @param integer &$authorId Author ID
+     * @param Profile $author    Profile object for the author of the notice being saved
      * @param string  &$text     Text of the notice
      * @param array   &$options  Options array
      *
      * @return boolean hook value
      */
-    function onStartNoticeSaveWeb($action, &$authorId, &$text, &$options)
+    function onStartNoticeSaveWeb(Action $action, Profile $author, &$content, &$options)
     {
         $title = $action->trimmed('notice_title');
         if (!empty($title) && $this->isAllowedRichEdit()) {