// 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)) {
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) {
$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);
);
}
- 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;
}
* 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()) {