@@ -23,9 +23,11 @@ final class LinkDatabaseExporter extends AbstractExporter
2323 'dev.hanashi.wsdb.links.category.acl ' => 'CategoryACLs ' ,
2424 'dev.hanashi.wsdb.links.option ' => 'Options ' ,
2525 'dev.hanashi.wsdb.links.links ' => 'Links ' ,
26+ // TODO: attachment importer
2627 'dev.hanashi.wsdb.links.option.values ' => 'OptionValues ' ,
2728 'dev.hanashi.wsdb.links.comment ' => 'Comments ' ,
2829 'dev.hanashi.wsdb.links.comment.response ' => 'CommentResponses ' ,
30+ 'dev.hanashi.wsdb.links.reaction ' => 'Reactions ' ,
2931 ];
3032
3133 #[\Override]
@@ -93,6 +95,9 @@ public function getQueue()
9395 $ queue [] = 'dev.hanashi.wsdb.links.comment.response ' ;
9496 }
9597 }
98+ if (\in_array ('dev.hanashi.wsdb.links.reaction ' , $ this ->selectedData )) {
99+ $ queue [] = 'dev.hanashi.wsdb.links.reaction ' ;
100+ }
96101 }
97102 }
98103
@@ -112,6 +117,7 @@ public function getSupportedData(): array
112117 'dev.hanashi.wsdb.links.option.values ' ,
113118 'dev.hanashi.wsdb.links.comment ' ,
114119 'dev.hanashi.wsdb.links.comment.response ' ,
120+ 'dev.hanashi.wsdb.links.reaction ' ,
115121 ],
116122 ];
117123 }
@@ -645,6 +651,56 @@ public function exportCommentResponses(int $offset, int $limit): void
645651 }
646652 }
647653
654+ public function countReactions (): int
655+ {
656+ $ objectType = ObjectTypeCache::getInstance ()->getObjectTypeByName (
657+ 'com.woltlab.wcf.like.likeableObject ' ,
658+ 'de.pehbeh.links.likeableLinkEntry '
659+ );
660+ if ($ objectType === null ) {
661+ return 0 ;
662+ }
663+
664+ $ sql = "SELECT COUNT(*)
665+ FROM wcf1_like
666+ WHERE objectTypeID = ? " ;
667+ $ statement = $ this ->database ->prepare ($ sql );
668+ $ statement ->execute ([$ objectType ->objectTypeID ]);
669+
670+ return $ statement ->fetchSingleColumn ();
671+ }
672+
673+ public function exportReactions (int $ offset , int $ limit ): void
674+ {
675+ $ objectType = ObjectTypeCache::getInstance ()->getObjectTypeByName (
676+ 'com.woltlab.wcf.like.likeableObject ' ,
677+ 'de.pehbeh.links.likeableLinkEntry '
678+ );
679+ if ($ objectType === null ) {
680+ return ;
681+ }
682+
683+ $ sql = "SELECT *
684+ FROM wcf1_like
685+ WHERE objectTypeID = ?
686+ ORDER BY likeID " ;
687+ $ statement = $ this ->database ->prepareUnmanaged ($ sql , $ limit , $ offset );
688+ $ statement ->execute ([$ objectType ->objectTypeID ]);
689+ while ($ row = $ statement ->fetchArray ()) {
690+ $ data = [
691+ 'objectID ' => $ row ['objectID ' ],
692+ 'objectUserID ' => $ row ['objectUserID ' ],
693+ 'userID ' => $ row ['userID ' ],
694+ 'likeValue ' => $ row ['likeValue ' ],
695+ 'time ' => $ row ['time ' ],
696+ ];
697+
698+ ImportHandler::getInstance ()
699+ ->getImporter ('dev.hanashi.wsdb.links.reaction ' )
700+ ->import (0 , $ data );
701+ }
702+ }
703+
648704 /**
649705 * @return array<int, string[]>
650706 */
0 commit comments