Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/BbCode/Helper/Reddit.php
<?php

namespace XF\BbCode\Helper;

class
Reddit
{
    const
URL_REGEX = '#reddit\.com/r/(?P<group>\w+)/comments/(?P<postid>[A-Z0-9]+)(/\w+/(?P<commentid>[A-Z0-9]+))?#si';
    const
COMMENT_CHECK = '#/comments/(?<postid>\w+)/\w+/(?P<commentid>\w+)#si';

    public static function
matchCallback($url, $matchedId, \XF\Entity\BbCodeMediaSite $site, $siteId)
    {
        if (
preg_match(self::URL_REGEX, $url, $mediaInfo))
        {
           
$matchedId = $mediaInfo['group'] . '/comments/' . $mediaInfo['postid'];

            if (!empty(
$mediaInfo['commentid']))
            {
               
$matchedId .= '/_/' . $mediaInfo['commentid'];
            }
        }

        return
$matchedId;
    }

    public static function
htmlCallback($mediaKey, array $site, $siteId)
    {
       
$idUrl = str_replace('%2F', '/', rawurlencode($mediaKey));

        return \
XF::app()->templater()->renderTemplate('public:_media_site_embed_oembed', [
           
'provider' => $siteId,
           
'id' => $mediaKey,
           
'site' => $site,
           
'jsState' => preg_match(self::COMMENT_CHECK, $mediaKey) ? 'reddit_comment' : 'reddit',
           
'url' => str_replace('{$id}', $idUrl, $site['oembed_url_scheme'])
        ]);
    }
}