{"slug":"ireplay-tv-channel-radio","name":"iReplay TV Channel and Radio Station","description":"Turn your WordPress site into a 24/7 TV channel or radio station. Upload your videos, we turn them into a live linear broadcast.","author":"ireplaytv","active_installs":0,"version":"1.0.13","wp_org_url":"https://wordpress.org/plugins/ireplay-tv-channel-radio/","is_closed":false,"cleanup":{"has_uninstall_hook":true,"drops_tables_on_uninstall":true,"deletes_options_on_uninstall":false},"tables":[{"table_name":"ireplay_assets","full_table_name":"wp_ireplay_assets","description":"Stores ireplay assets data created by this plugin.","detection_method":"static","confidence":"medium","columns":[],"create_sql":null},{"table_name":"ireplay_channels","full_table_name":"wp_ireplay_channels","description":"Stores ireplay channels data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"BIGINT UNSIGNED","nullable":true,"primary_key":true},{"name":"remote_channel_id","type":"BIGINT UNSIGNED","nullable":true,"primary_key":false},{"name":"handle","type":"VARCHAR(63)","nullable":false,"primary_key":false},{"name":"name","type":"VARCHAR(255)","nullable":false,"primary_key":false},{"name":"description","type":"TEXT","nullable":true,"primary_key":false},{"name":"channel_type","type":"ENUM('webtv','webradio')","nullable":false,"primary_key":false},{"name":"primary_language","type":"VARCHAR(10)","nullable":true,"primary_key":false},{"name":"age_classification","type":"VARCHAR(5)","nullable":true,"primary_key":false},{"name":"scheduling_mode","type":"ENUM('weighted_random','manual')","nullable":true,"primary_key":false},{"name":"is_public","type":"TINYINT(1)","nullable":true,"primary_key":false},{"name":"is_active","type":"TINYINT(1)","nullable":true,"primary_key":false},{"name":"thumbnail_url","type":"VARCHAR(512)","nullable":true,"primary_key":false},{"name":"banner_url","type":"VARCHAR(512)","nullable":true,"primary_key":false},{"name":"schedule_status","type":"VARCHAR(20)","nullable":true,"primary_key":false},{"name":"ready_asset_count","type":"INT","nullable":true,"primary_key":false},{"name":"ready_duration_seconds","type":"DOUBLE","nullable":true,"primary_key":false},{"name":"viewer_count","type":"INT","nullable":true,"primary_key":false},{"name":"playlist_url","type":"VARCHAR(512)","nullable":true,"primary_key":false},{"name":"overlay_cta_url","type":"VARCHAR(512)","nullable":true,"primary_key":false},{"name":"overlay_cta_label","type":"VARCHAR(255)","nullable":true,"primary_key":false},{"name":"overlay_show_qr","type":"TINYINT(1)","nullable":true,"primary_key":false},{"name":"sync_status","type":"ENUM('synced','pending','error')","nullable":true,"primary_key":false},{"name":"sync_error","type":"TEXT","nullable":true,"primary_key":false},{"name":"last_synced_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"updated_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"remote_asset_id","type":"BIGINT UNSIGNED","nullable":true,"primary_key":false},{"name":"channel_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"title","type":"VARCHAR(255)","nullable":false,"primary_key":false},{"name":"description","type":"TEXT","nullable":true,"primary_key":false},{"name":"duration_seconds","type":"DOUBLE","nullable":true,"primary_key":false},{"name":"weight","type":"TINYINT","nullable":true,"primary_key":false},{"name":"tags","type":"VARCHAR(500)","nullable":true,"primary_key":false},{"name":"media_type","type":"ENUM('video','audio')","nullable":false,"primary_key":false},{"name":"original_filename","type":"VARCHAR(255)","nullable":true,"primary_key":false},{"name":"filesize_bytes","type":"BIGINT","nullable":true,"primary_key":false},{"name":"upload_status","type":"ENUM('uploading','pending','transcoding','downloading','ready','error')","nullable":true,"primary_key":false},{"name":"transcode_job_id","type":"BIGINT UNSIGNED","nullable":true,"primary_key":false},{"name":"transcode_progress","type":"TINYINT","nullable":true,"primary_key":false},{"name":"segment_count","type":"INT","nullable":true,"primary_key":false},{"name":"basename","type":"VARCHAR(255)","nullable":true,"primary_key":false},{"name":"thumbnail_url","type":"VARCHAR(512)","nullable":true,"primary_key":false},{"name":"local_dir","type":"VARCHAR(512)","nullable":true,"primary_key":false},{"name":"segment_url_prefix","type":"VARCHAR(512)","nullable":true,"primary_key":false},{"name":"error_message","type":"TEXT","nullable":true,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"updated_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"channel_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"start_unix","type":"BIGINT","nullable":false,"primary_key":false},{"name":"duration","type":"DOUBLE","nullable":false,"primary_key":false},{"name":"asset_id","type":"BIGINT UNSIGNED","nullable":true,"primary_key":false},{"name":"asset_title","type":"VARCHAR(255)","nullable":true,"primary_key":false},{"name":"asset_thumbnail","type":"VARCHAR(512)","nullable":true,"primary_key":false},{"name":"fetched_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"channel_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"date","type":"DATE","nullable":false,"primary_key":false},{"name":"peak_concurrent","type":"INT","nullable":true,"primary_key":false},{"name":"total_minutes","type":"DOUBLE","nullable":true,"primary_key":false},{"name":"total_sessions","type":"INT","nullable":true,"primary_key":false},{"name":"fetched_at","type":"DATETIME","nullable":true,"primary_key":false}],"create_sql":"CREATE TABLE wp_ireplay_channels ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, remote_channel_id BIGINT UNSIGNED DEFAULT NULL, handle VARCHAR(63) NOT NULL, name VARCHAR(255) NOT NULL, description TEXT, channel_type ENUM('webtv','webradio') NOT NULL DEFAULT 'webtv', primary_language VARCHAR(10) DEFAULT 'en', age_classification VARCHAR(5) DEFAULT '4+', scheduling_mode ENUM('weighted_random','manual') DEFAULT 'weighted_random', is_public TINYINT(1) DEFAULT 0, is_active TINYINT(1) DEFAULT 0, thumbnail_url VARCHAR(512) DEFAULT NULL, banner_url VARCHAR(512) DEFAULT NULL, schedule_status VARCHAR(20) DEFAULT 'inactive', ready_asset_count INT DEFAULT 0, ready_duration_seconds DOUBLE DEFAULT 0, viewer_count INT DEFAULT 0, playlist_url VARCHAR(512) DEFAULT NULL, overlay_cta_url VARCHAR(512) DEFAULT NULL, overlay_cta_label VARCHAR(255) DEFAULT NULL, overlay_show_qr TINYINT(1) DEFAULT 1, sync_status ENUM('synced','pending','error') DEFAULT 'pending', sync_error TEXT, last_synced_at DATETIME DEFAULT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_handle (handle), KEY idx_remote (remote_channel_id), KEY idx_sync (sync_status) ) $charset_collate;\"; // Assets table $sql[] = \"CREATE TABLE wp_ireplay_assets ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, remote_asset_id BIGINT UNSIGNED DEFAULT NULL, channel_id BIGINT UNSIGNED NOT NULL, title VARCHAR(255) NOT NULL, description TEXT, duration_seconds DOUBLE DEFAULT 0, weight TINYINT DEFAULT 5, tags VARCHAR(500) DEFAULT NULL, media_type ENUM('video','audio') NOT NULL DEFAULT 'video', original_filename VARCHAR(255) DEFAULT NULL, filesize_bytes BIGINT DEFAULT 0, upload_status ENUM('uploading','pending','transcoding','downloading','ready','error') DEFAULT 'uploading', transcode_job_id BIGINT UNSIGNED DEFAULT NULL, transcode_progress TINYINT DEFAULT 0, segment_count INT DEFAULT 0, basename VARCHAR(255) DEFAULT NULL, thumbnail_url VARCHAR(512) DEFAULT NULL, local_dir VARCHAR(512) DEFAULT NULL, segment_url_prefix VARCHAR(512) DEFAULT NULL, error_message TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY idx_channel (channel_id), KEY idx_remote (remote_asset_id), KEY idx_status (upload_status) ) $charset_collate;\"; // Schedule cache $sql[] = \"CREATE TABLE wp_ireplay_schedule_cache ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, channel_id BIGINT UNSIGNED NOT NULL, start_unix BIGINT NOT NULL, duration DOUBLE NOT NULL, asset_id BIGINT UNSIGNED DEFAULT NULL, asset_title VARCHAR(255) DEFAULT NULL, asset_thumbnail VARCHAR(512) DEFAULT NULL, fetched_at DATETIME DEFAULT CURRENT_TIMESTAMP, KEY idx_channel_time (channel_id, start_unix) ) $charset_collate;\"; // Usage cache $sql[] = \"CREATE TABLE wp_ireplay_usage_cache ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, channel_id BIGINT UNSIGNED NOT NULL, date DATE NOT NULL, peak_concurrent INT DEFAULT 0, total_minutes DOUBLE DEFAULT 0, total_sessions INT DEFAULT 0, fetched_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_channel_date (channel_id, date) ) $charset_collate;\"; require_once ABSPATH . 'wp-admin/includes/upgrade.php'; foreach ( $sql as $query ) { dbDelta( $query );"},{"table_name":"ireplay_schedule_cache","full_table_name":"wp_ireplay_schedule_cache","description":"A cache table that stores temporary computed or fetched data.","detection_method":"static","confidence":"medium","columns":[],"create_sql":null},{"table_name":"ireplay_usage_cache","full_table_name":"wp_ireplay_usage_cache","description":"A cache table that stores temporary computed or fetched data.","detection_method":"static","confidence":"medium","columns":[],"create_sql":null}],"table_count":4}