CommentList::renderItem PHP Method

renderItem() public method

This is the default rendering for development/testing/demonstration purposes It may be used for production, but only if it meets your needs already. Typically you'll want to render the comments using your own code in your templates.
See also: CommentArray::render()
public renderItem ( Comment $comment, $depth ) : string
$comment Comment
return string
    public function renderItem(Comment $comment, $depth = 0)
    {
        $text = $comment->getFormatted('text');
        $cite = $comment->getFormatted('cite');
        $gravatar = '';
        if ($this->options['useGravatar']) {
            $imgUrl = $comment->gravatar($this->options['useGravatar'], $this->options['useGravatarImageset']);
            if ($imgUrl) {
                $gravatar = "\n\t\t<img class='CommentGravatar' src='{$imgUrl}' alt='{$cite}' />";
            }
        }
        $website = '';
        if ($comment->website) {
            $website = $comment->getFormatted('website');
        }
        if ($website) {
            $cite = "<a href='{$website}' rel='nofollow' target='_blank'>{$cite}</a>";
        }
        $created = wireDate($this->options['dateFormat'], $comment->created);
        if (empty($this->options['commentHeader'])) {
            $header = "<span class='CommentCite'>{$cite}</span> <small class='CommentCreated'>{$created}</small> ";
            if ($this->options['useStars']) {
                $header .= $this->renderStars($comment);
            }
            if ($this->options['useVotes']) {
                $header .= $this->renderVotes($comment);
            }
        } else {
            $header = str_replace(array('{cite}', '{created}'), array($cite, $created), $this->options['commentHeader']);
            if (strpos($header, '{votes}') !== false) {
                $header = str_replace('{votes}', $this->renderVotes($comment), $header);
            }
            if (strpos($header, '{stars}') !== false) {
                $header = str_replace('{stars}', $this->renderStars($comment), $header);
            }
        }
        $liClass = '';
        $replies = $this->options['depth'] > 0 ? $this->renderList($comment->id, $depth + 1) : '';
        if ($replies) {
            $liClass .= ' CommentHasReplies';
        }
        if ($comment->status == Comment::statusPending) {
            $liClass .= ' CommentStatusPending';
        } else {
            if ($comment->status == Comment::statusSpam) {
                $liClass .= ' CommentStatusSpam';
            }
        }
        $out = "\n\t<li id='Comment{$comment->id}' class='CommentListItem{$liClass}' data-comment='{$comment->id}'>" . $gravatar . "\n\t\t<p class='CommentHeader'>{$header}</p>" . "\n\t\t<div class='CommentText'>" . "\n\t\t\t<p>{$text}</p>" . "\n\t\t</div>";
        if ($this->options['usePermalink']) {
            $permalink = $comment->getPage()->httpUrl;
            $urlSegmentStr = $this->wire('input')->urlSegmentStr;
            if ($urlSegmentStr) {
                $permalink .= rtrim($permalink, '/') . $urlSegmentStr . '/';
            }
            $permalink .= '#Comment' . $comment->id;
            $permalink = "<a class='CommentActionPermalink' href='{$permalink}'>" . $this->_('Permalink') . "</a>";
        } else {
            $permalink = '';
        }
        if ($this->options['depth'] > 0 && $depth < $this->options['depth']) {
            $out .= "\n\t\t<div class='CommentFooter'>" . "\n\t\t\t<p class='CommentAction'>" . "\n\t\t\t\t<a class='CommentActionReply' data-comment-id='{$comment->id}' href='#Comment{$comment->id}'>" . $this->options['replyLabel'] . "</a> " . ($permalink ? "\n\t\t\t\t{$permalink}" : "") . "\n\t\t\t</p>" . "\n\t\t</div>";
            if ($replies) {
                $out .= $replies;
            }
        } else {
            $out .= "\n\t\t<div class='CommentFooter'></div>";
        }
        $out .= "\n\t</li>";
        return $out;
    }