bookmark-pages/Classes/Domain/Repository/LikeRepository.php
2021-08-20 13:33:13 +02:00

76 lines
2.1 KiB
PHP

<?php
namespace WapplerSystems\BookmarksLikesRatings\Domain\Repository;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
use TYPO3\CMS\Core\Utility\DebugUtility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use WapplerSystems\BookmarksLikesRatings\Domain\Model\Rating;
use WapplerSystems\BookmarksLikesRatings\Domain\Model\Vote;
use WapplerSystems\BookmarksLikesRatings\Domain\Model\Voter;
use TYPO3\CMS\Extbase\Persistence\Repository;
/**
*/
class LikeRepository extends Repository
{
public function countByUserTablenameObjectUid($userUid, $tablename, $objectUid)
{
$query = $this->createQuery();
return $query->matching(
$query->logicalAnd(
[
$query->equals('user', $userUid),
$query->equals('tablename', $tablename),
$query->equals('objectUid', $objectUid)
]
)
)->execute()->count();
}
public function removeByUserTablenameObjectUid($userUid, $tablename, $objectUid)
{
$query = $this->createQuery();
$objs = $query->matching(
$query->logicalAnd(
[
$query->equals('user', $userUid),
$query->equals('tablename', $tablename),
$query->equals('objectUid', $objectUid)
]
)
)->execute()->toArray();
foreach ($objs as $obj) {
$this->remove($obj);
}
}
public function getTop($limit)
{
/** @var QueryBuilder $queryBuilder */
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_bookmarkslikesratings_domain_model_like');
return $queryBuilder
->select('tablename')
->addSelect('object_uid')
->addSelectLiteral('count(*) as number')
->from('tx_bookmarkslikesratings_domain_model_like')
->groupBy('tablename')
->addGroupBy('object_uid')
->orderBy('number', 'DESC')
->setMaxResults($limit)
->execute()->fetchAll();
}
}