mirror of
https://code.castopod.org/adaures/castopod
synced 2025-04-23 01:01:20 +00:00
77 lines
2.4 KiB
PHP
77 lines
2.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Modules\Analytics\Config;
|
|
|
|
use App\Entities\Episode;
|
|
use CodeIgniter\Config\BaseConfig;
|
|
use CodeIgniter\HTTP\URI;
|
|
use Modules\Analytics\OP3;
|
|
|
|
class Analytics extends BaseConfig
|
|
{
|
|
/**
|
|
* Gateway to analytic routes. By default, all analytics routes will be under `/analytics` path
|
|
*/
|
|
public string $gateway = 'analytics';
|
|
|
|
/**
|
|
* --------------------------------------------------------------------
|
|
* Route filters options
|
|
* --------------------------------------------------------------------
|
|
* @var array<string, string>
|
|
*/
|
|
public array $routeFilters = [
|
|
'analytics-full-data' => 'permission:podcast#.view',
|
|
'analytics-data' => 'permission:podcast#.view',
|
|
'analytics-filtered-data' => 'permission:podcast#.view',
|
|
];
|
|
|
|
/**
|
|
* --------------------------------------------------------------------------
|
|
* Secret Salt
|
|
* --------------------------------------------------------------------------
|
|
*
|
|
* The secret salt is a string of random characters that is used when hashing data.
|
|
* Each Castopod instance has its own secret salt so keys will never be the same.
|
|
*
|
|
* Example:
|
|
* Z&|qECKBrwgaaD>~;U/tXG1U%tSe_oi5Tzy)h>}5NC2npSrjvM0w_Q>cs=0o=H]*
|
|
*/
|
|
public string $salt = '';
|
|
|
|
/**
|
|
* --------------------------------------------------------------------------
|
|
* The Open Podcast Prefix Project Config
|
|
* --------------------------------------------------------------------------
|
|
*
|
|
* @var array<string, string>
|
|
*/
|
|
public array $OP3 = [
|
|
'host' => 'https://op3.dev/',
|
|
];
|
|
|
|
public bool $enableOP3 = false;
|
|
|
|
/**
|
|
* get the full audio file url
|
|
*/
|
|
public function getAudioUrl(Episode $episode, array $params): string
|
|
{
|
|
$audioFileURI = new URI(service('file_manager')->getUrl($episode->audio->file_key));
|
|
$audioFileURI->setQueryArray($params);
|
|
|
|
// Wrap episode url with OP3 if episode is public and OP3 is enabled on this podcast
|
|
if (! $episode->is_premium && service('settings')->get(
|
|
'Analytics.enableOP3',
|
|
'podcast:' . $episode->podcast_id
|
|
)) {
|
|
$op3 = new OP3($this->OP3);
|
|
$audioFileURI = new URI($op3->wrap($audioFileURI, $episode));
|
|
}
|
|
|
|
return (string) $audioFileURI;
|
|
}
|
|
}
|