View file MMO-Hide-2.3.4/upload/src/addons/MMO/Hide/BbCode/Tag/HideReacts.php

File size: 1.6Kb
<?php

namespace MMO\Hide\BbCode\Tag;

use MMO\Hide\BbCode\AbstractTag;

class HideReacts extends AbstractTag
{
    /**
     * @inheritDoc
     */
    public function render($content, array $tagChildren, $tagOption, array $tag, array $options)
    {
        $canView = false;
        $requiredReactions = \explode(',', $tagOption);
        $reactedUsers = $options['entity']['reaction_users'] ?? [];
        $userReactionId = null;

        if(isset($options['entity']))
        {
            foreach ($reactedUsers AS $reactedUser)
            {
                if ($reactedUser['user_id'] != $this->visitor()->user_id)
                {
                    continue;
                }

                if (\in_array($reactedUser['reaction_id'], $requiredReactions))
                {
                    $canView = true;
                    $userReactionId = $reactedUser['reaction_id'];
                }
            }
        }

        $hiddenTitle = $this->templater->renderTemplate('public:mh_tag_react_hidden', [
            'reactions' => $requiredReactions
        ]);

        // For visible state, use template showing the user's reaction
        $visibleTitle = $this->templater->renderTemplate('public:mh_tag_react_visible', [
            'reaction_id' => $userReactionId
        ]);

        $title = [
            'visible' => $visibleTitle,
            'hidden' => $hiddenTitle
        ];


        return $this->renderTemplate($content, $title, [
            'canView' => $canView,
            'options' => $options,
            'tag' => $tag['tag']
        ]);
    }
}