@@ -625,14 +625,17 @@ public function searchForObjects(string $search, string $objectType, array $obje
625625 * @return Int
626626 * @since 9.0.0
627627 */
628- public function getNumberOfCommentsForObject ($ objectType , $ objectId , ?\DateTime $ notOlderThan = null , $ verb = '' ) {
628+ public function getNumberOfCommentsForObject ($ objectType , $ objectId , ?\DateTime $ notOlderThan = null , $ verb = '' ): int {
629+ return $ this ->getNumberOfCommentsForObjects ($ objectType , [$ objectId ], $ notOlderThan , $ verb )[$ objectId ];
630+ }
631+
632+ /** @inheritDoc */
633+ public function getNumberOfCommentsForObjects (string $ objectType , array $ objectIds , ?\DateTime $ notOlderThan = null , string $ verb = '' ): array {
629634 $ qb = $ this ->dbConn ->getQueryBuilder ();
630- $ query = $ qb ->select ($ qb ->func ()->count ('id ' ))
635+ $ query = $ qb ->select ($ qb ->func ()->count ('id ' ), ' object_id ' )
631636 ->from ('comments ' )
632- ->where ($ qb ->expr ()->eq ('object_type ' , $ qb ->createParameter ('type ' )))
633- ->andWhere ($ qb ->expr ()->eq ('object_id ' , $ qb ->createParameter ('id ' )))
634- ->setParameter ('type ' , $ objectType )
635- ->setParameter ('id ' , $ objectId );
637+ ->where ($ qb ->expr ()->eq ('object_type ' , $ qb ->createNamedParameter ($ objectType , IQueryBuilder::PARAM_STR )))
638+ ->andWhere ($ qb ->expr ()->in ('object_id ' , $ qb ->createNamedParameter ($ objectIds , IQueryBuilder::PARAM_STR_ARRAY )));
636639
637640 if (!is_null ($ notOlderThan )) {
638641 $ query
@@ -644,10 +647,15 @@ public function getNumberOfCommentsForObject($objectType, $objectId, ?\DateTime
644647 $ query ->andWhere ($ qb ->expr ()->eq ('verb ' , $ qb ->createNamedParameter ($ verb )));
645648 }
646649
650+ $ query ->groupBy ('object_id ' );
651+ $ comments = array_fill_keys ($ objectIds , 0 );
647652 $ resultStatement = $ query ->execute ();
648- $ data = $ resultStatement ->fetch (\PDO ::FETCH_NUM );
653+ while ($ data = $ resultStatement ->fetch ()) {
654+ $ comments [$ data [1 ]] = (int )$ data [0 ];
655+ }
649656 $ resultStatement ->closeCursor ();
650- return (int )$ data [0 ];
657+
658+ return $ comments ;
651659 }
652660
653661 /**
0 commit comments