plugin-architecture-diagram.mermaid 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. ```mermaid
  2. classDiagram
  3. class QDR_TSS {
  4. -plugin_name: string
  5. -version: string
  6. -loader: QDR_TSS_Loader
  7. +__construct()
  8. +define_constants()
  9. -load_dependencies()
  10. -set_locale()
  11. -define_admin_hooks()
  12. -define_public_hooks()
  13. -define_rest_api_hooks()
  14. -define_cron_hooks()
  15. +run()
  16. +get_plugin_name(): string
  17. +get_loader(): QDR_TSS_Loader
  18. +get_version(): string
  19. }
  20. class QDR_TSS_Loader {
  21. -actions: array
  22. -filters: array
  23. +__construct()
  24. +add_action(hook, component, callback, priority, accepted_args)
  25. +add_filter(hook, component, callback, priority, accepted_args)
  26. -add(hooks, hook, component, callback, priority, accepted_args): array
  27. +run()
  28. }
  29. class QDR_TSS_i18n {
  30. +load_plugin_textdomain()
  31. }
  32. class QDR_TSS_Activator {
  33. +activate(): static
  34. }
  35. class QDR_TSS_Deactivator {
  36. +deactivate(): static
  37. }
  38. class QDR_TSS_DB_Manager {
  39. -$_instance: QDR_TSS_DB_Manager
  40. -table_name: string
  41. +instance(): QDR_TSS_DB_Manager
  42. +__construct()
  43. +create_table(): bool
  44. +get_item(id): object
  45. +get_item_by_media_id(media_id): object
  46. +get_items(args): array
  47. +insert_item(data): int|false
  48. +update_item(id, data): bool
  49. +update_item_by_media_id(media_id, data): bool
  50. +delete_item(id): bool
  51. +delete_item_by_media_id(media_id): bool
  52. +get_expired_items(): array
  53. +delete_expired_items(): int
  54. +increment_download_count(id): bool
  55. +get_total_storage(): int
  56. +would_exceed_storage_limit(file_size, max_size): bool
  57. -get_column_formats(data): array
  58. }
  59. class QDR_TSS_File_Manager {
  60. -$_instance: QDR_TSS_File_Manager
  61. +instance(): QDR_TSS_File_Manager
  62. +__construct()
  63. +init_file_system(): bool
  64. +create_dated_directory(date): string|false
  65. +init_chunked_upload(): string|false
  66. +store_chunk(upload_id, chunk_index, file): bool
  67. +check_all_chunks(upload_id, total_chunks): bool
  68. +finalize_chunked_upload(upload_id, total_chunks, original_filename): array|false
  69. -combine_chunks(upload_dir, total_chunks, file_path): bool
  70. -cleanup_chunks(upload_dir): bool
  71. +delete_file(file_path): bool
  72. +get_file_size(file_path): int|false
  73. +cleanup_empty_directories(directory): void
  74. }
  75. class QDR_TSS_Settings {
  76. -$_instance: QDR_TSS_Settings
  77. -option_name: string
  78. -defaults: array
  79. -settings: array
  80. +instance(): QDR_TSS_Settings
  81. +__construct()
  82. +load_settings(): void
  83. +get_settings(): array
  84. +get_setting(key, default): mixed
  85. +update_settings(settings): bool
  86. +update_setting(key, value): bool
  87. +generate_api_key(): string
  88. +validate_api_key(api_key): bool
  89. +format_bytes(bytes, precision): string
  90. }
  91. class QDR_TSS_Cron_Manager {
  92. -plugin_name: string
  93. -version: string
  94. +__construct(plugin_name, version)
  95. +purge_expired_files(): int
  96. +manual_purge_expired_files(): int
  97. +schedule_purge_event(): void
  98. +unschedule_purge_event(): void
  99. }
  100. class QDR_TSS_Admin {
  101. -plugin_name: string
  102. -version: string
  103. +__construct(plugin_name, version)
  104. +enqueue_styles(): void
  105. +enqueue_scripts(): void
  106. +add_admin_menu(): void
  107. +render_media_page(): void
  108. +render_settings_page(): void
  109. }
  110. class QDR_TSS_Media_Page {
  111. -plugin_name: string
  112. -version: string
  113. -db_manager: QDR_TSS_DB_Manager
  114. -file_manager: QDR_TSS_File_Manager
  115. +__construct(plugin_name, version)
  116. +ajax_get_items(): void
  117. +ajax_edit_item(): void
  118. +ajax_delete_item(): void
  119. +ajax_get_item_details(): void
  120. }
  121. class QDR_TSS_Settings_Page {
  122. -plugin_name: string
  123. -version: string
  124. -settings: QDR_TSS_Settings
  125. -cron_manager: QDR_TSS_Cron_Manager
  126. +__construct(plugin_name, version)
  127. +ajax_save_settings(): void
  128. +ajax_purge_expired(): void
  129. }
  130. class QDR_TSS_REST_Controller {
  131. -plugin_name: string
  132. -version: string
  133. -settings: QDR_TSS_Settings
  134. +__construct(plugin_name, version)
  135. +register_routes(): void
  136. +check_api_key(result): WP_Error|null
  137. +check_rest_permission(): bool
  138. -get_all_headers(): array
  139. }
  140. class QDR_TSS_Media_Controller {
  141. -plugin_name: string
  142. -version: string
  143. -namespace: string
  144. -base: string
  145. -db_manager: QDR_TSS_DB_Manager
  146. -file_manager: QDR_TSS_File_Manager
  147. +__construct(plugin_name, version)
  148. +register_routes(): void
  149. +check_permission(): bool
  150. +get_items(request): WP_REST_Response|WP_Error
  151. +get_item(request): WP_REST_Response|WP_Error
  152. +update_item(request): WP_REST_Response|WP_Error
  153. +delete_item(request): WP_REST_Response|WP_Error
  154. }
  155. class QDR_TSS_Upload_Controller {
  156. -plugin_name: string
  157. -version: string
  158. -namespace: string
  159. -db_manager: QDR_TSS_DB_Manager
  160. -file_manager: QDR_TSS_File_Manager
  161. -settings: QDR_TSS_Settings
  162. +__construct(plugin_name, version)
  163. +register_routes(): void
  164. +check_permission(): bool
  165. +init_chunked_upload(request): WP_REST_Response|WP_Error
  166. +upload_chunk(request): WP_REST_Response|WP_Error
  167. +finalize_chunked_upload(request): WP_REST_Response|WP_Error
  168. }
  169. class QDR_TSS_Public {
  170. -plugin_name: string
  171. -version: string
  172. +__construct(plugin_name, version)
  173. +enqueue_styles(): void
  174. +enqueue_scripts(): void
  175. +create_download_page(): void
  176. }
  177. class QDR_TSS_Shortcode {
  178. -plugin_name: string
  179. -version: string
  180. -download: QDR_TSS_Download
  181. +__construct(plugin_name, version)
  182. +register_shortcodes(): void
  183. +download_shortcode(atts): string
  184. }
  185. class QDR_TSS_Download {
  186. -plugin_name: string
  187. -version: string
  188. -db_manager: QDR_TSS_DB_Manager
  189. -file_manager: QDR_TSS_File_Manager
  190. +__construct(plugin_name, version)
  191. +process_download_request(atts): string
  192. -render_download_form(media_id): string
  193. }
  194. %% Relationships
  195. QDR_TSS --> QDR_TSS_Loader : uses
  196. QDR_TSS --> QDR_TSS_i18n : uses
  197. QDR_TSS --> QDR_TSS_Admin : uses
  198. QDR_TSS --> QDR_TSS_Public : uses
  199. QDR_TSS --> QDR_TSS_REST_Controller : uses
  200. QDR_TSS_Activator --> QDR_TSS_DB_Manager : uses
  201. QDR_TSS_Activator --> QDR_TSS_File_Manager : uses
  202. QDR_TSS_Activator --> QDR_TSS_Settings : uses
  203. QDR_TSS_Admin --> QDR_TSS_Media_Page : uses
  204. QDR_TSS_Admin --> QDR_TSS_Settings_Page : uses
  205. QDR_TSS_Media_Page --> QDR_TSS_DB_Manager : uses
  206. QDR_TSS_Media_Page --> QDR_TSS_File_Manager : uses
  207. QDR_TSS_Settings_Page --> QDR_TSS_Settings : uses
  208. QDR_TSS_Settings_Page --> QDR_TSS_Cron_Manager : uses
  209. QDR_TSS_REST_Controller --> QDR_TSS_Media_Controller : uses
  210. QDR_TSS_REST_Controller --> QDR_TSS_Upload_Controller : uses
  211. QDR_TSS_REST_Controller --> QDR_TSS_Settings : uses
  212. QDR_TSS_Media_Controller --> QDR_TSS_DB_Manager : uses
  213. QDR_TSS_Media_Controller --> QDR_TSS_File_Manager : uses
  214. QDR_TSS_Upload_Controller --> QDR_TSS_DB_Manager : uses
  215. QDR_TSS_Upload_Controller --> QDR_TSS_File_Manager : uses
  216. QDR_TSS_Upload_Controller --> QDR_TSS_Settings : uses
  217. QDR_TSS_Public --> QDR_TSS_Shortcode : uses
  218. QDR_TSS_Shortcode --> QDR_TSS_Download : uses
  219. QDR_TSS_Download --> QDR_TSS_DB_Manager : uses
  220. QDR_TSS_Download --> QDR_TSS_File_Manager : uses
  221. QDR_TSS_Cron_Manager --> QDR_TSS_DB_Manager : uses
  222. QDR_TSS_Cron_Manager --> QDR_TSS_File_Manager : uses
  223. ```