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

namespace XF\BbCode\Helper;

use function
count;

class
AppleMusic
{
    const
URL_REGEX = '#\.com/(?P<country>[a-z-]+)/(?P<type>album|playlist|post)/([^/]+/)?(?P<id>[a-z0-9-.]+)(\?i=(?P<song>\d+))?#i';

    public static function
matchCallback($url, $matchedId, \XF\Entity\BbCodeMediaSite $site, $siteId)
    {
        if (
preg_match(self::URL_REGEX, $url, $media))
        {
            if (!empty(
$media['song']))
            {
               
$media['type'] = 'song';
               
$media['id'] = $media['song'];
            }
           
$matchedId = $media['country'] . '/' . $media['type'] . '/' . self::getPrefix($media['type']) . $media['id'];

            return
$matchedId;
        }

        return
false;
    }

    protected static function
getPrefix($type)
    {
        switch (
strtolower($type))
        {
            case
'post':
                return
'id';

            default:
                return
'';
        }
    }

    public static function
htmlCallback($mediaKey, array $site, $siteId)
    {
       
$parts = explode('/', $mediaKey);
        if (
count($parts) != 3)
        {
            return
'';
        }

        list(
$country, $type, $id) = $parts;

       
$country = rawurlencode($country);
       
$type = rawurlencode($type);
       
$id = rawurlencode($id);

       
$url = "//embed.music.apple.com/{$country}/{$type}/{$id}?app=music";
       
$style = '';
       
$scrolling = 'auto';

        switch (
$type)
        {
            case
'post':
               
$height = 315;
               
$url = "//embed.itunes.apple.com/embedded-player/{$country}/{$type}/{$id}";
               
$scrolling = 'no';
                break;

            case
'song':
               
$height = 150;
                break;

            case
'album':
            case
'playlist':
            default:
               
$height = 500;
        }

        return \
XF::app()->templater()->renderTemplate('public:_media_site_embed_applemusic', [
           
'country' => $country,
           
'type' => $type,
           
'id' => $id,
           
'url' => $url,
           
'height' => $height,
           
'style' => $style,
           
'scrolling' => $scrolling
       
]);
    }
}