mirror of
https://code.castopod.org/adaures/castopod.git
synced 2024-09-10 20:43:22 +02:00
- https://iabtechlab.com/wp-content/uploads/2017/12/Podcast_Measurement_v2-Dec-20-2017.pdf - no IP address is ever stored on the server. Only aggregate data is stored in the dababase. - rolling 24-hour window - castopod does not do pre-load - IP Blacklisting https://github.com/client9/ipcat - user-agent Filtering https://github.com/opawg/user-agents - ignores 2 bytes range "Range: 0-1" (performed by official Apple iOS Podcast app) - in case of partial content, adds up all requests to check >1mn was downloaded - identifying Uniques is done with a combination of IP Address and User Agent - add AMcharts - add some graphs - add regions to analytics - add ipcat blacklist - enhance useragents performances - add filesize and header size in order to calculate 1mn downloads - update publisher ID3 field - update castopod icon - add disclaimer and warning import form translation - update docs/setup-development.md closes #10
62 lines
1.6 KiB
PHP
62 lines
1.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Class Analytics
|
|
* Creates Analytics controller
|
|
* @copyright 2020 Podlibre
|
|
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
|
|
* @link https://castopod.org/
|
|
*/
|
|
|
|
namespace App\Controllers;
|
|
|
|
use CodeIgniter\Controller;
|
|
|
|
class Analytics extends Controller
|
|
{
|
|
/**
|
|
* An array of helpers to be loaded automatically upon
|
|
* class instantiation. These helpers will be available
|
|
* to all other controllers that extend Analytics.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $helpers = ['analytics'];
|
|
|
|
/**
|
|
* Constructor.
|
|
*/
|
|
public function initController(
|
|
\CodeIgniter\HTTP\RequestInterface $request,
|
|
\CodeIgniter\HTTP\ResponseInterface $response,
|
|
\Psr\Log\LoggerInterface $logger
|
|
) {
|
|
// Do Not Edit This Line
|
|
parent::initController($request, $response, $logger);
|
|
|
|
//--------------------------------------------------------------------
|
|
// Preload any models, libraries, etc, here.
|
|
//--------------------------------------------------------------------
|
|
// E.g.:
|
|
// $this->session = \Config\Services::session();
|
|
|
|
set_user_session_deny_list_ip();
|
|
set_user_session_location();
|
|
set_user_session_player();
|
|
}
|
|
|
|
// Add one hit to this episode:
|
|
public function hit(
|
|
$podcastId,
|
|
$episodeId,
|
|
$bytesThreshold,
|
|
$fileSize,
|
|
...$filename
|
|
) {
|
|
helper('media');
|
|
|
|
podcast_hit($podcastId, $episodeId, $bytesThreshold, $fileSize);
|
|
return redirect()->to(media_url(implode('/', $filename)));
|
|
}
|
|
}
|