Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Repository/BbCodeMediaSite.php
<?php

namespace XF\Repository;

use
XF\Mvc\Entity\Finder;
use
XF\Mvc\Entity\Repository;

class
BbCodeMediaSite extends Repository
{
   
/**
     * @return Finder
     */
   
public function findBbCodeMediaSitesForList()
    {
        return
$this->finder('XF:BbCodeMediaSite')->order(['media_site_id']);
    }

   
/**
     * @return Finder
     */
   
public function findActiveMediaSites()
    {
        return
$this->finder('XF:BbCodeMediaSite')
            ->
where('active', 1)
            ->
whereAddOnActive()
            ->
order('media_site_id');
    }

    public function
getBbCodeMediaSiteCacheData()
    {
       
$sites = $this->findActiveMediaSites()->fetch();

       
$cache = [];

        foreach (
$sites AS $siteId => $site)
        {
           
$cache[$siteId] = [
               
'site_title' => $site->site_title,
               
'site_url' => $site->site_url,
               
'supported' => $site->supported,
               
'oembed_enabled' => $site->oembed_enabled,
               
'oembed_url_scheme' => $site->oembed_url_scheme
           
];

            if (
$site->embed_html_callback_class && $site->embed_html_callback_method)
            {
               
$cache[$siteId]['callback'] = [$site->embed_html_callback_class, $site->embed_html_callback_method];
            }
        }

        return
$cache;
    }

    public function
rebuildBbCodeMediaSiteCache()
    {
       
$cache = $this->getBbCodeMediaSiteCacheData();
        \
XF::registry()->set('bbCodeMedia', $cache);
        return
$cache;
    }

    public function
urlMatchesMediaSiteList($url, $mediaSites)
    {
        if (
$url != $this->app()->stringFormatter()->censorText($url))
        {
            return
null;
        }

        foreach (
$mediaSites AS $site)
        {
           
/** @var \XF\Entity\BbCodeMediaSite $site */
           
$mediaId = $site->getMediaIdFromUrl($url);
            if (
$mediaId)
            {
                return [
                   
'site' => $site,
                   
'media_site_id' => $site->media_site_id,
                   
'media_id' => $mediaId
               
];
            }
        }

        return
null;
    }
}