Recount Attachments in ConversationMessageRebuildDataWorker
authorTim Düsterhus <duesterhus@woltlab.com>
Mon, 19 Aug 2013 12:12:49 +0000 (14:12 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Mon, 19 Aug 2013 12:12:49 +0000 (14:12 +0200)
files/lib/system/worker/ConversationMessageRebuildDataWorker.class.php
objectType.xml

index 4d5408f25be471b96f1860a846c2b59659c6ed46..d061496e13103ca21ffa795a03454d5b3b067a8b 100644 (file)
@@ -1,6 +1,9 @@
 <?php
 namespace wcf\system\worker;
+use wcf\data\conversation\message\ConversationMessageEditor;
+use wcf\data\object\type\ObjectTypeCache;
 use wcf\system\search\SearchIndexManager;
+use wcf\system\WCF;
 
 /**
  * Worker implementation for updating conversation messages.
@@ -45,8 +48,26 @@ class ConversationMessageRebuildDataWorker extends AbstractRebuildDataWorker {
                        SearchIndexManager::getInstance()->reset('com.woltlab.wcf.conversation.message');
                }
                
+               // prepare statements
+               $attachmentObjectType = ObjectTypeCache::getInstance()->getObjectTypeByName('com.woltlab.wcf.attachment.objectType', 'com.woltlab.wcf.conversation.message');
+               $sql = "SELECT          COUNT(*) AS attachments
+                       FROM            wcf".WCF_N."_attachment
+                       WHERE           objectTypeID = ?
+                                       AND objectID = ?";
+               $attachmentStatement = WCF::getDB()->prepareStatement($sql);
+               
                foreach ($this->objectList as $message) {
                        SearchIndexManager::getInstance()->add('com.woltlab.wcf.conversation.message', $message->messageID, $message->message, ($message->subject ?: ''), $message->time, $message->userID, $message->username);
+                       
+                       $editor = new ConversationMessageEditor($message);
+                       $data = array();
+                       
+                       // count attachments
+                       $attachmentStatement->execute(array($attachmentObjectType->objectTypeID, $message->messageID));
+                       $row = $attachmentStatement->fetchArray();
+                       $data['attachments'] = $row['attachments'];
+                       
+                       $editor->update($data);
                }
        }
 }
index 19fb464a27dfa0cb8d2a3e2e27602dea9c7e652c..84104f2a445e17a19f14d1789db13eead718af44 100644 (file)
                        <name>com.woltlab.wcf.conversation</name>
                        <definitionname>com.woltlab.wcf.rebuildData</definitionname>
                        <classname><![CDATA[wcf\system\worker\ConversationRebuildDataWorker]]></classname>
-                       <nicevalue>-5</nicevalue>
                </type>
                <type>
                        <name>com.woltlab.wcf.conversation.message</name>
                        <definitionname>com.woltlab.wcf.rebuildData</definitionname>
                        <classname><![CDATA[wcf\system\worker\ConversationMessageRebuildDataWorker]]></classname>
+                       <nicevalue>-5</nicevalue>
                </type>
                <!-- /rebuild data workers -->
        </import>