3 use wcf\data\conversation\message\ConversationMessageAction
;
4 use wcf\data\conversation\Conversation
;
5 use wcf\data\conversation\ConversationAction
;
6 use wcf\data\user\UserProfile
;
7 use wcf\system\exception\IllegalLinkException
;
8 use wcf\system\message\quote\MessageQuoteManager
;
10 use wcf\util\HeaderUtil
;
13 * Allows the editing of conversation drafts.
16 * @copyright 2001-2019 WoltLab GmbH
17 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
18 * @package WoltLabSuite\Core\Form
20 class ConversationDraftEditForm
extends ConversationAddForm
{
24 public $templateName = 'conversationAdd';
30 public $conversationID = 0;
41 public function readParameters() {
42 parent
::readParameters();
44 if (isset($_REQUEST['id'])) $this->conversationID
= intval($_REQUEST['id']);
45 $this->conversation
= new Conversation($this->conversationID
);
46 if ($this->conversation
->userID
!= WCF
::getUser()->userID ||
!$this->conversation
->isDraft
) {
47 throw new IllegalLinkException();
50 $this->attachmentObjectID
= $this->conversation
->getFirstMessage()->messageID
;
56 public function save() {
62 'attachmentHandler' => $this->attachmentHandler
,
63 'htmlInputProcessor' => $this->htmlInputProcessor
,
67 $messageData['data']['time'] = TIME_NOW
;
69 $messageAction = new ConversationMessageAction([$this->conversation
->getFirstMessage()], 'update', $messageData);
70 $messageAction->executeAction();
73 $data = array_merge($this->additionalFields
, [
74 'subject' => $this->subject
,
75 'isDraft' => $this->draft ?
1 : 0,
76 'participantCanInvite' => $this->participantCanInvite
79 $data['draftData'] = serialize([
80 'participants' => $this->participantIDs
,
81 'invisibleParticipants' => $this->invisibleParticipantIDs
88 $conversationData['participants'] = $this->participantIDs
;
89 $conversationData['invisibleParticipants'] = $this->invisibleParticipantIDs
;
91 $conversationData['data']['time'] = $conversationData['data']['lastPostTime'] = TIME_NOW
;
93 $this->objectAction
= new ConversationAction([$this->conversation
], 'update', $conversationData);
94 $this->objectAction
->executeAction();
96 MessageQuoteManager
::getInstance()->saved();
100 HeaderUtil
::redirect($this->conversation
->getLink());
107 public function readData() {
111 $this->text
= $this->conversation
->getFirstMessage()->message
;
112 $this->participantCanInvite
= $this->conversation
->participantCanInvite
;
113 $this->subject
= $this->conversation
->subject
;
115 if ($this->conversation
->draftData
) {
116 $draftData = @unserialize
($this->conversation
->draftData
);
117 if (!empty($draftData['participants'])) {
118 foreach (UserProfile
::getUserProfiles($draftData['participants']) as $user) {
119 if (!empty($this->participants
)) $this->participants
.= ', ';
120 $this->participants
.= $user->username
;
123 if (!empty($draftData['invisibleParticipants'])) {
124 foreach (UserProfile
::getUserProfiles($draftData['invisibleParticipants']) as $user) {
125 if (!empty($this->invisibleParticipants
)) $this->invisibleParticipants
.= ', ';
126 $this->invisibleParticipants
.= $user->username
;
136 public function assignVariables() {
137 parent
::assignVariables();
139 WCF
::getTPL()->assign([
140 'conversationID' => $this->conversationID
,
141 'conversation' => $this->conversation
,