File size: 4.08Kb
<?php
namespace MMO\Hide\XF\Service\Message;
use MMO\CoreLib\Util\Plural;
use MMO\Hide\Data\HideTags;
class PreparerService extends XFCP_PreparerService
{
/**
* @param $message
*
* @return bool
*/
public function checkValidity($message)
{
parent::checkValidity($message);
/** @var \XF\BbCode\ProcessorAction\AnalyzeUsage $usage */
$usage = $this->bbCodeProcessor->getAnalyzer('usage');
/** @var HideTags $hideTags */
$hideTags = $this->app->data(HideTags::class);
foreach ($hideTags->getHideTags() as $tag)
{
if ($usage->getTagCount($tag) && !\XF::visitor()->canUseHideTag(ucfirst($tag)))
{
$this->errors[] = \XF::phraseDeferred("mh_tag_{$tag}_no_permission");
}
}
/** @var \MMO\Hide\BbCode\ProcessorAction\AnalyzeHideBbCodeUsage $hideUsage */
$hideUsage = $this->bbCodeProcessor->getAnalyzer('mhHideBbCodeUsage');
$hideOption = $hideUsage->option;
if($hideOption && $this->app->options()->mhHideEnableCheckCond) // and check option in xenforo for check user count in hide
{
$tag = strtolower($hideUsage->tag);
switch ($tag)
{
case 'posts':
$messageCount = \XF::visitor()->message_count;
if($messageCount < $hideOption)
{
$this->errors[] = \XF::phraseDeferred('mh_tag_posts_value_of_cond_can_not_be_higher', [
'option_value' => $hideOption,
'posts' => $messageCount,
'now_posts' => Plural::choice('mh_tag_posts_now_posts', $messageCount),
]);
}
break;
case 'likes':
$reactionCount = \XF::visitor()->reaction_score;
if($reactionCount < $hideOption)
{
$this->errors[] = \XF::phraseDeferred('mh_tag_likes_value_of_cond_can_not_be_higher', [
'option_value' => $hideOption,
'reactions' => $reactionCount,
'now_reactions' => Plural::choice('mh_tag_likes_now_reactions', $reactionCount),
]);
}
break;
case 'days':
$days = \intval((\XF::$time - \XF::visitor()->register_date) / 86400);
if($days < $hideOption)
{
$this->errors[] = \XF::phraseDeferred('mh_tag_days_value_of_cond_can_not_be_higher', [
'option_value' => $hideOption,
'days' => $days,
'now_days' => Plural::choice('mh_tag_days_now_days', $days)
]);
}
break;
case 'trophies':
$trophies = \XF::visitor()->trophy_points;
if($trophies < $hideOption)
{
$this->errors[] = \XF::phraseDeferred('mh_tag_trophies_value_of_cond_can_not_be_higher', [
'option_value' => $hideOption,
'trophies' => $trophies,
'now_trophies' => Plural::choice('mh_tag_trophies_now_trophies', $trophies)
]);
}
break;
}
$this->app->fire('mh_hide_check_condition', [$tag, $hideOption, &$this->errors]);
}
$this->isValid = (\count($this->errors) == 0);
return $this->isValid;
}
protected function getBbCodeProcessor()
{
$processor = parent::getBbCodeProcessor();
$bbCodeContainer = $this->app->bbCode();
$processor->addProcessorAction('mhHideBbCodeUsage', $bbCodeContainer->processorAction('mhHideBbCodeUsage'));
return $processor;
}
}