Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Repository/LikedContent.php
<?php

namespace XF\Repository;

use
XF\Mvc\Entity\Finder;
use
XF\Mvc\Entity\Repository;

class
LikedContent extends Repository
{
   
/**
     * @param string $contentType
     * @param int $contentId
     * @param int $userId
     *
     * @return \XF\Entity\LikedContent|null
     */
   
public function getLikeByContentAndLiker($contentType, $contentId, $userId)
    {
        return
$this->finder('XF:LikedContent')->where([
           
'content_type' => $contentType,
           
'content_id' => $contentId,
           
'like_user_id' => $userId
       
])->fetchOne();
    }

   
/**
     * @param string $contentType
     * @param int $contentId
     *
     * @return Finder
     */
   
public function findContentLikes($contentType, $contentId)
    {
        return
$this->finder('XF:LikedContent')
            ->
where([
               
'content_type' => $contentType,
               
'content_id' => $contentId
           
])->setDefaultOrder('like_date', 'DESC');
    }

   
/**
     * @param $likeUserId
     *
     * @return Finder
     */
   
public function findLikesByLikeUserId($likeUserId)
    {
        if (
$likeUserId instanceof \XF\Entity\User)
        {
           
$likeUserId = $likeUserId->user_id;
        }

        return
$this->finder('XF:LikedContent')
            ->
where('like_user_id', $likeUserId)
            ->
setDefaultOrder('like_date');
    }

    public function
toggleLike($contentType, $contentId, \XF\Entity\User $likeUser, $publish = true)
    {
       
$reactionRepo = $this->getReactionRepo();

        return
$reactionRepo->reactToContent(1, $contentType, $contentId, $likeUser, $publish, true);
    }

    public function
insertLike($contentType, $contentId, \XF\Entity\User $likeUser, $publish = true)
    {
       
$reactionRepo = $this->getReactionRepo();

        return
$reactionRepo->insertReaction(1, $contentType, $contentId, $likeUser, $publish, true);
    }

   
/**
     * @return \XF\Like\AbstractHandler[]
     */
   
public function getLikeHandlers()
    {
        return
$this->getReactionRepo()->getReactionHandlers(true);
    }

   
/**
     * @param string $type
     * @param bool $throw
     *
     * @return \XF\Like\AbstractHandler|null
     */
   
public function getLikeHandler($type, $throw = false)
    {
        return
$this->getReactionRepo()->getReactionHandler($type, $throw, true);
    }

   
/**
     * @param \XF\Mvc\Entity\ArrayCollection|\XF\Entity\LikedContent[] $likes
     */
   
public function addContentToLikes($likes)
    {
       
$this->getReactionRepo()->addContentToReactions($likes);
    }

    public function
rebuildContentLikeCache($contentType, $contentId, $throw = true)
    {
        return
$this->getReactionRepo()->rebuildContentReactionCache($contentType, $contentId, true, $throw);
    }

    public function
recalculateLikeIsCounted($contentType, $contentIds, $updateLikeCount = true)
    {
       
$this->getReactionRepo()->recalculateReactionIsCounted($contentType, $contentIds, $updateLikeCount, true);
    }

    public function
fastUpdateLikeIsCounted($contentType, $contentIds, $newValue, $updateLikeCount = true)
    {
       
$this->getReactionRepo()->fastUpdateReactionIsCounted($contentType, $contentIds, $newValue, $updateLikeCount);
    }

    public function
fastDeleteLikes($contentType, $contentIds, $updateLikeCount = true)
    {
       
$this->getReactionRepo()->fastDeleteReactions($contentType, $contentIds, $updateLikeCount);
    }

    public function
getUserLikeCount($userId)
    {
        return
$this->getReactionRepo()->getUserReactionScore($userId);
    }

   
/**
     * @param $userId
     *
     * @return Finder
     */
   
public function findUserLikes($userId)
    {
       
$reactionFinder = $this->getReactionRepo()->findUserReactions($userId);

       
$reactionFinder->where('reaction_id', 1);

        return
$reactionFinder;
    }

   
/**
     * @return Repository|Reaction
     */
   
protected function getReactionRepo()
    {
        return
$this->repository('XF:Reaction');
    }
}