@@ -81,7 +81,10 @@ public function getQueue()
8181 }
8282 if (\in_array ('dev.hanashi.wsdb.links.links ' , $ this ->selectedData )) {
8383 $ queue [] = 'dev.hanashi.wsdb.links.links ' ;
84- if (\in_array ('dev.hanashi.wsdb.links.option.values ' , $ this ->selectedData )) {
84+ if (
85+ \in_array ('dev.hanashi.wsdb.links.option ' , $ this ->selectedData )
86+ && \in_array ('dev.hanashi.wsdb.links.option.values ' , $ this ->selectedData )
87+ ) {
8588 $ queue [] = 'dev.hanashi.wsdb.links.option.values ' ;
8689 }
8790 if (\in_array ('dev.hanashi.wsdb.links.comment ' , $ this ->selectedData )) {
@@ -479,6 +482,57 @@ public function exportLinks(int $offset, int $limit): void
479482 }
480483 }
481484
485+ public function countOptionValues (): int
486+ {
487+ return $ this ->countLinks ();
488+ }
489+
490+ public function exportOptionValues (int $ offset , int $ limit ): void
491+ {
492+ $ sql = "SELECT linkID
493+ FROM wcf1_links
494+ ORDER BY linkID " ;
495+ $ statement = $ this ->database ->prepare ($ sql , $ limit , $ offset );
496+ $ statement ->execute ();
497+ $ linkIDs = $ statement ->fetchAll (\PDO ::FETCH_COLUMN );
498+ if ($ linkIDs === []) {
499+ return ;
500+ }
501+
502+ $ conditionBuilder = new PreparedStatementConditionBuilder ();
503+ $ conditionBuilder ->add ('links_option_value.linkID IN (?) ' , [$ linkIDs ]);
504+
505+ $ sql = "SELECT links_option_value.*,
506+ links_option.optionType
507+ FROM wcf1_links_option_value links_option_value
508+ INNER JOIN wcf1_links_option links_option
509+ ON links_option.optionID = links_option_value.optionID
510+ " . $ conditionBuilder . "
511+ ORDER BY links_option_value.linkID " ;
512+ $ statement = $ this ->database ->prepare ($ sql );
513+ $ statement ->execute ($ conditionBuilder ->getParameters ());
514+
515+ $ optionValues = [];
516+ while ($ row = $ statement ->fetchArray ()) {
517+ $ optionValues [$ row ['linkID ' ]][] = $ row ;
518+ }
519+ if ($ optionValues === []) {
520+ return ;
521+ }
522+
523+ foreach ($ optionValues as $ linkID => $ data ) {
524+ ImportHandler::getInstance ()
525+ ->getImporter ('dev.hanashi.wsdb.links.option.values ' )
526+ ->import (
527+ 0 ,
528+ $ data ,
529+ [
530+ 'linkID ' => $ linkID ,
531+ ]
532+ );
533+ }
534+ }
535+
482536 /**
483537 * @return array<int, string[]>
484538 */
0 commit comments