File size: 1.9Kb
<?php
namespace MMO\Hide\BbCode\Traits;
use XF\Finder\ReactionContentFinder;
use XF\Mvc\Entity\Entity;
trait HasReactionTrait
{
/**
* @param array $options
* @param int $userId
* @param array $reactionId
* @return Entity|null
*/
protected function hasReaction(array $options, int $userId, array $reactionId): ?Entity
{
return $this->finder(ReactionContentFinder::class)->where([
'reaction_id' => $reactionId,
'content_type' => $options['entity']->getEntityContentType(),
'content_id' => $options['entity']->getEntityId(),
'reaction_user_id' => $userId,
])->fetchOne();
}
/**
* @param array $options
* @return bool|Entity|null
*/
protected function checkLike(array $options)
{
if ($this->options()->mhHideUseCachingReactions)
{
return $this->canReactionView($options);
}
if(isset($options['entity']))
{
return $this->hasReaction($options, $this->visitor()->user_id, [1]);
}
return false;
}
/**
* @param array $options
* @return bool
*/
protected function canReactionView(array $options): bool
{
if (isset($options['likes']))
{
$reactionIds = \array_map(function ($v)
{
return $v['user_id'];
}, $options['likes']);
}
elseif (isset($options['entity']['reaction_users']))
{
$reactionIds = \array_map(function ($v)
{
return $v['user_id'];
}, $options['entity']['reaction_users']);
}
if (isset($reactionIds))
{
return \in_array(\XF::visitor()->user_id, $reactionIds);
}
else
{
return false;
}
}
}