Notice from web now saves context->attention too! ;)

This commit is contained in:
Mikael Nordfeldth 2016-01-07 23:24:15 +01:00
parent 6255e1dca3
commit c48871cf1b
3 changed files with 29 additions and 27 deletions

View File

@ -145,8 +145,6 @@ class NewnoticeAction extends FormAction
// simply no attached media to the new notice // simply no attached media to the new notice
} }
$content = $this->scoped->shortenLinks($content);
// Reject notice if it is too long (without the HTML) // 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 // This is done after MediaFile::fromUpload etc. just to act the same as the ApiStatusesUpdateAction
if (Notice::contentTooLong($content)) { if (Notice::contentTooLong($content)) {
@ -158,13 +156,6 @@ class NewnoticeAction extends FormAction
Notice::maxContent())); 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(); $act->context = new ActivityContext();
if ($parent instanceof Notice) { if ($parent instanceof Notice) {
@ -191,15 +182,21 @@ class NewnoticeAction extends FormAction
$act->context->location = Location::fromOptions($locOptions); $act->context->location = Location::fromOptions($locOptions);
} }
$author_id = $this->scoped->id; $content = $this->scoped->shortenLinks($content);
$text = $content;
// Does the heavy-lifting for getting "To:" information
ToSelector::fillOptions($this, $options);
// FIXME: Make sure NoticeTitle plugin gets a change to add the title to our activityobject! // 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))) { if (Event::handle('StartNoticeSaveWeb', array($this, $this->scoped, &$content, &$options))) {
// 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);
$actobj = new ActivityObject();
$actobj->type = ActivityObject::NOTE;
$actobj->content = common_render_content($content, $this->scoped, $parent);
// Finally add the activity object to our activity
$act->objects[] = $actobj;
$this->stored = Notice::saveActivity($act, $this->scoped, $options); $this->stored = Notice::saveActivity($act, $this->scoped, $options);

View 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->notice_id = $notice->getID();
$att->profile_id = $profile->getID(); $att->profile_id = $target->getID();
$att->reason = $reason; $att->reason = $reason;
$att->created = common_sql_now(); $att->created = common_sql_now();
$result = $att->insert(); $result = $att->insert();
if ($result === false) { if ($result === false) {
throw new Exception('Could not saveNew in Attention'); throw new Exception('Failed Attention::saveNew for notice id=='.$notice->getID().' target id=='.$target->getID().', reason=="'.$reason.'"');
}
} }
return $att; return $att;
} }

View File

@ -124,13 +124,13 @@ class NoticeTitlePlugin extends Plugin
* Validate notice title before saving * Validate notice title before saving
* *
* @param Action $action NewNoticeAction being executed * @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 string &$text Text of the notice
* @param array &$options Options array * @param array &$options Options array
* *
* @return boolean hook value * @return boolean hook value
*/ */
function onStartNoticeSaveWeb($action, &$authorId, &$text, &$options) function onStartNoticeSaveWeb(Action $action, Profile $author, &$content, &$options)
{ {
$title = $action->trimmed('notice_title'); $title = $action->trimmed('notice_title');
if (!empty($title) && $this->isAllowedRichEdit()) { if (!empty($title) && $this->isAllowedRichEdit()) {