```mermaid classDiagram class QDR_TSS { -plugin_name: string -version: string -loader: QDR_TSS_Loader +__construct() +define_constants() -load_dependencies() -set_locale() -define_admin_hooks() -define_public_hooks() -define_rest_api_hooks() -define_cron_hooks() +run() +get_plugin_name(): string +get_loader(): QDR_TSS_Loader +get_version(): string } class QDR_TSS_Loader { -actions: array -filters: array +__construct() +add_action(hook, component, callback, priority, accepted_args) +add_filter(hook, component, callback, priority, accepted_args) -add(hooks, hook, component, callback, priority, accepted_args): array +run() } class QDR_TSS_i18n { +load_plugin_textdomain() } class QDR_TSS_Activator { +activate(): static } class QDR_TSS_Deactivator { +deactivate(): static } class QDR_TSS_DB_Manager { -$_instance: QDR_TSS_DB_Manager -table_name: string +instance(): QDR_TSS_DB_Manager +__construct() +create_table(): bool +get_item(id): object +get_item_by_media_id(media_id): object +get_items(args): array +insert_item(data): int|false +update_item(id, data): bool +update_item_by_media_id(media_id, data): bool +delete_item(id): bool +delete_item_by_media_id(media_id): bool +get_expired_items(): array +delete_expired_items(): int +increment_download_count(id): bool +get_total_storage(): int +would_exceed_storage_limit(file_size, max_size): bool -get_column_formats(data): array } class QDR_TSS_File_Manager { -$_instance: QDR_TSS_File_Manager +instance(): QDR_TSS_File_Manager +__construct() +init_file_system(): bool +create_dated_directory(date): string|false +init_chunked_upload(): string|false +store_chunk(upload_id, chunk_index, file): bool +check_all_chunks(upload_id, total_chunks): bool +finalize_chunked_upload(upload_id, total_chunks, original_filename): array|false -combine_chunks(upload_dir, total_chunks, file_path): bool -cleanup_chunks(upload_dir): bool +delete_file(file_path): bool +get_file_size(file_path): int|false +cleanup_empty_directories(directory): void } class QDR_TSS_Settings { -$_instance: QDR_TSS_Settings -option_name: string -defaults: array -settings: array +instance(): QDR_TSS_Settings +__construct() +load_settings(): void +get_settings(): array +get_setting(key, default): mixed +update_settings(settings): bool +update_setting(key, value): bool +generate_api_key(): string +validate_api_key(api_key): bool +format_bytes(bytes, precision): string } class QDR_TSS_Cron_Manager { -plugin_name: string -version: string +__construct(plugin_name, version) +purge_expired_files(): int +manual_purge_expired_files(): int +schedule_purge_event(): void +unschedule_purge_event(): void } class QDR_TSS_Admin { -plugin_name: string -version: string +__construct(plugin_name, version) +enqueue_styles(): void +enqueue_scripts(): void +add_admin_menu(): void +render_media_page(): void +render_settings_page(): void } class QDR_TSS_Media_Page { -plugin_name: string -version: string -db_manager: QDR_TSS_DB_Manager -file_manager: QDR_TSS_File_Manager +__construct(plugin_name, version) +ajax_get_items(): void +ajax_edit_item(): void +ajax_delete_item(): void +ajax_get_item_details(): void } class QDR_TSS_Settings_Page { -plugin_name: string -version: string -settings: QDR_TSS_Settings -cron_manager: QDR_TSS_Cron_Manager +__construct(plugin_name, version) +ajax_save_settings(): void +ajax_purge_expired(): void } class QDR_TSS_REST_Controller { -plugin_name: string -version: string -settings: QDR_TSS_Settings +__construct(plugin_name, version) +register_routes(): void +check_api_key(result): WP_Error|null +check_rest_permission(): bool -get_all_headers(): array } class QDR_TSS_Media_Controller { -plugin_name: string -version: string -namespace: string -base: string -db_manager: QDR_TSS_DB_Manager -file_manager: QDR_TSS_File_Manager +__construct(plugin_name, version) +register_routes(): void +check_permission(): bool +get_items(request): WP_REST_Response|WP_Error +get_item(request): WP_REST_Response|WP_Error +update_item(request): WP_REST_Response|WP_Error +delete_item(request): WP_REST_Response|WP_Error } class QDR_TSS_Upload_Controller { -plugin_name: string -version: string -namespace: string -db_manager: QDR_TSS_DB_Manager -file_manager: QDR_TSS_File_Manager -settings: QDR_TSS_Settings +__construct(plugin_name, version) +register_routes(): void +check_permission(): bool +init_chunked_upload(request): WP_REST_Response|WP_Error +upload_chunk(request): WP_REST_Response|WP_Error +finalize_chunked_upload(request): WP_REST_Response|WP_Error } class QDR_TSS_Public { -plugin_name: string -version: string +__construct(plugin_name, version) +enqueue_styles(): void +enqueue_scripts(): void +create_download_page(): void } class QDR_TSS_Shortcode { -plugin_name: string -version: string -download: QDR_TSS_Download +__construct(plugin_name, version) +register_shortcodes(): void +download_shortcode(atts): string } class QDR_TSS_Download { -plugin_name: string -version: string -db_manager: QDR_TSS_DB_Manager -file_manager: QDR_TSS_File_Manager +__construct(plugin_name, version) +process_download_request(atts): string -render_download_form(media_id): string } %% Relationships QDR_TSS --> QDR_TSS_Loader : uses QDR_TSS --> QDR_TSS_i18n : uses QDR_TSS --> QDR_TSS_Admin : uses QDR_TSS --> QDR_TSS_Public : uses QDR_TSS --> QDR_TSS_REST_Controller : uses QDR_TSS_Activator --> QDR_TSS_DB_Manager : uses QDR_TSS_Activator --> QDR_TSS_File_Manager : uses QDR_TSS_Activator --> QDR_TSS_Settings : uses QDR_TSS_Admin --> QDR_TSS_Media_Page : uses QDR_TSS_Admin --> QDR_TSS_Settings_Page : uses QDR_TSS_Media_Page --> QDR_TSS_DB_Manager : uses QDR_TSS_Media_Page --> QDR_TSS_File_Manager : uses QDR_TSS_Settings_Page --> QDR_TSS_Settings : uses QDR_TSS_Settings_Page --> QDR_TSS_Cron_Manager : uses QDR_TSS_REST_Controller --> QDR_TSS_Media_Controller : uses QDR_TSS_REST_Controller --> QDR_TSS_Upload_Controller : uses QDR_TSS_REST_Controller --> QDR_TSS_Settings : uses QDR_TSS_Media_Controller --> QDR_TSS_DB_Manager : uses QDR_TSS_Media_Controller --> QDR_TSS_File_Manager : uses QDR_TSS_Upload_Controller --> QDR_TSS_DB_Manager : uses QDR_TSS_Upload_Controller --> QDR_TSS_File_Manager : uses QDR_TSS_Upload_Controller --> QDR_TSS_Settings : uses QDR_TSS_Public --> QDR_TSS_Shortcode : uses QDR_TSS_Shortcode --> QDR_TSS_Download : uses QDR_TSS_Download --> QDR_TSS_DB_Manager : uses QDR_TSS_Download --> QDR_TSS_File_Manager : uses QDR_TSS_Cron_Manager --> QDR_TSS_DB_Manager : uses QDR_TSS_Cron_Manager --> QDR_TSS_File_Manager : uses ```