diff --git a/app/Libraries/Analytics/Database/Migrations/2017-12-01-120000_add_analytics_podcasts.php b/app/Libraries/Analytics/Database/Migrations/2017-12-01-120000_add_analytics_podcasts.php index 8a4914f2..1db9da1a 100644 --- a/app/Libraries/Analytics/Database/Migrations/2017-12-01-120000_add_analytics_podcasts.php +++ b/app/Libraries/Analytics/Database/Migrations/2017-12-01-120000_add_analytics_podcasts.php @@ -27,7 +27,10 @@ class AddAnalyticsPodcasts extends Migration 'type' => 'DATE', ], 'duration' => [ - 'type' => 'INT', + // a hit in analytics podcast increments this value when a podcast is listened to in a given date. + // Here, the "cumulative listening time" on a podcast per day + // cannot surpass 999,999,999,999.999 seconds (~277,777,777 hours) - should be enough. + 'type' => 'DECIMAL(15,3)', 'unsigned' => true, ], 'bandwidth' => [ diff --git a/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php b/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php index 03c5fae4..c6baebef 100644 --- a/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php +++ b/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php @@ -36,7 +36,7 @@ class AddAnalyticsPodcastsProcedure extends Migration IN `p_os` VARCHAR(32), IN `p_bot` TINYINT(1) UNSIGNED, IN `p_filesize` INT UNSIGNED, - IN `p_duration` INT UNSIGNED, + IN `p_duration` DECIMAL(8,3) UNSIGNED, IN `p_age` INT UNSIGNED, IN `p_new_listener` TINYINT(1) UNSIGNED ) MODIFIES SQL DATA diff --git a/app/Libraries/Analytics/Entities/AnalyticsPodcasts.php b/app/Libraries/Analytics/Entities/AnalyticsPodcasts.php index 3912b729..12c9fc66 100644 --- a/app/Libraries/Analytics/Entities/AnalyticsPodcasts.php +++ b/app/Libraries/Analytics/Entities/AnalyticsPodcasts.php @@ -17,7 +17,7 @@ use CodeIgniter\Entity\Entity; /** * @property int $podcast_id * @property Time $date - * @property int $duration + * @property double $duration * @property int $bandwidth * @property int $unique_listeners * @property int $hits @@ -36,7 +36,7 @@ class AnalyticsPodcasts extends Entity */ protected $casts = [ 'podcast_id' => 'integer', - 'duration' => 'integer', + 'duration' => 'double', 'bandwidth' => 'integer', 'unique_listeners' => 'integer', 'hits' => 'integer', diff --git a/app/Libraries/Analytics/Helpers/analytics_helper.php b/app/Libraries/Analytics/Helpers/analytics_helper.php index 789cb409..ae215d52 100644 --- a/app/Libraries/Analytics/Helpers/analytics_helper.php +++ b/app/Libraries/Analytics/Helpers/analytics_helper.php @@ -252,7 +252,7 @@ if (! function_exists('podcast_hit')) { * @param integer $episodeId The Episode ID * @param integer $bytesThreshold The minimum total number of bytes that must be downloaded so that an episode is counted (>1mn) * @param integer $fileSize The podcast complete file size - * @param integer $duration The episode duration in seconds + * @param double $duration The episode duration in seconds * @param int $publicationTime The episode's publication time as a UNIX timestamp * @param string $serviceName The name of the service that had fetched the RSS feed */ @@ -261,7 +261,7 @@ if (! function_exists('podcast_hit')) { int $episodeId, int $bytesThreshold, int $fileSize, - int $duration, + float $duration, int $publicationTime, string $serviceName ): void {