Remove obsolete template code
[GitHub/WoltLab/com.woltlab.wcf.conversation.git] / files / lib / form / ConversationDraftEditForm.class.php
1 <?php
2 namespace wcf\form;
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;
9 use wcf\system\WCF;
10 use wcf\util\HeaderUtil;
11
12 /**
13 * Allows the editing of conversation drafts.
14 *
15 * @author Marcel Werk
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
19 */
20 class ConversationDraftEditForm extends ConversationAddForm {
21 /**
22 * @inheritDoc
23 */
24 public $templateName = 'conversationAdd';
25
26 /**
27 * conversation id
28 * @var integer
29 */
30 public $conversationID = 0;
31
32 /**
33 * conversation
34 * @var Conversation
35 */
36 public $conversation;
37
38 /**
39 * @inheritDoc
40 */
41 public function readParameters() {
42 parent::readParameters();
43
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();
48 }
49
50 $this->attachmentObjectID = $this->conversation->getFirstMessage()->messageID;
51 }
52
53 /**
54 * @inheritDoc
55 */
56 public function save() {
57 MessageForm::save();
58
59 // save message
60 $messageData = [
61 'data' => [],
62 'attachmentHandler' => $this->attachmentHandler,
63 'htmlInputProcessor' => $this->htmlInputProcessor,
64 ];
65 if (!$this->draft) {
66 // update timestamp
67 $messageData['data']['time'] = TIME_NOW;
68 }
69 $messageAction = new ConversationMessageAction([$this->conversation->getFirstMessage()], 'update', $messageData);
70 $messageAction->executeAction();
71
72 // save conversation
73 $data = array_merge($this->additionalFields, [
74 'subject' => $this->subject,
75 'isDraft' => $this->draft ? 1 : 0,
76 'participantCanInvite' => $this->participantCanInvite
77 ]);
78 if ($this->draft) {
79 $data['draftData'] = serialize([
80 'participants' => $this->participantIDs,
81 'invisibleParticipants' => $this->invisibleParticipantIDs
82 ]);
83 }
84 $conversationData = [
85 'data' => $data,
86 ];
87 if (!$this->draft) {
88 $conversationData['participants'] = $this->participantIDs;
89 $conversationData['invisibleParticipants'] = $this->invisibleParticipantIDs;
90 // update timestamp
91 $conversationData['data']['time'] = $conversationData['data']['lastPostTime'] = TIME_NOW;
92 }
93 $this->objectAction = new ConversationAction([$this->conversation], 'update', $conversationData);
94 $this->objectAction->executeAction();
95
96 MessageQuoteManager::getInstance()->saved();
97 $this->saved();
98
99 // forward
100 HeaderUtil::redirect($this->conversation->getLink());
101 exit;
102 }
103
104 /**
105 * @inheritDoc
106 */
107 public function readData() {
108 parent::readData();
109
110 if (empty($_POST)) {
111 $this->text = $this->conversation->getFirstMessage()->message;
112 $this->participantCanInvite = $this->conversation->participantCanInvite;
113 $this->subject = $this->conversation->subject;
114
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;
121 }
122 }
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;
127 }
128 }
129 }
130 }
131 }
132
133 /**
134 * @inheritDoc
135 */
136 public function assignVariables() {
137 parent::assignVariables();
138
139 WCF::getTPL()->assign([
140 'conversationID' => $this->conversationID,
141 'conversation' => $this->conversation,
142 'action' => 'edit'
143 ]);
144 }
145 }