Skip to content

Commit 9086cb5

Browse files
committed
Fix messageID=0 in message embedded objects
The “messageID” has not been validated, which may have resulted in orphaned entries in existing installations.
1 parent 152fe5f commit 9086cb5

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
use wcf\system\WCF;
4+
5+
// Remove orphaned entries associated with `messageID=0`.
6+
$sql = "DELETE FROM wcf1_message_embedded_object WHERE messageID = ?";
7+
$statement = WCF::getDB()->prepare($sql);
8+
$statement->execute([0]);

wcfsetup/install/files/lib/system/message/embedded/object/MessageEmbeddedObjectManager.class.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ public function registerObjects(HtmlInputProcessor $htmlInputProcessor, $isBulk
100100
$messageObjectTypeID = $context['objectTypeID'];
101101
$messageID = $context['objectID'];
102102

103+
if (!$messageID) {
104+
throw new \BadMethodCallException("No 'messageID' was set.");
105+
}
106+
103107
// delete existing assignments
104108
if ($removeExistingObjects) {
105109
if ($isBulk) {
@@ -195,6 +199,10 @@ public function commitBulkOperation()
195199
*/
196200
public function registerSimpleObjects($messageObjectType, $messageID, array $embeddedContent)
197201
{
202+
if (!$messageID) {
203+
throw new \BadMethodCallException("No 'messageID' was given.");
204+
}
205+
198206
$messageObjectTypeID = ObjectTypeCache::getInstance()
199207
->getObjectTypeIDByName('com.woltlab.wcf.message', $messageObjectType);
200208

0 commit comments

Comments
 (0)