| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- ```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
- ```
|