plugin-structure.md 7.4 KB

QDR Temporary Shared Storage - Plugin Structure

Directory Structure

qdr-temporary-shared-storage/
├── qdr-temporary-shared-storage.php       # Main plugin file (bootstrap)
├── uninstall.php                          # Clean uninstallation
│
├── includes/                              # Core functionality
│   ├── class-qdr-tss.php                  # Core plugin class
│   ├── class-qdr-tss-activator.php        # Plugin activation
│   ├── class-qdr-tss-deactivator.php      # Plugin deactivation
│   ├── class-qdr-tss-db-manager.php       # Database operations
│   ├── class-qdr-tss-file-manager.php     # File operations
│   ├── class-qdr-tss-settings.php         # Settings management
│   ├── class-qdr-tss-cron-manager.php     # Scheduled tasks
│   ├── class-qdr-tss-loader.php           # Hook loader (registers all hooks)
│   ├── class-qdr-tss-i18n.php             # Internationalization
│   └── functions.php                      # Helper functions
│
├── admin/                                 # Admin-related functionality
│   ├── class-qdr-tss-admin.php            # Admin controller
│   ├── class-qdr-tss-media-page.php       # Media page UI
│   ├── class-qdr-tss-settings-page.php    # Settings page UI
│   ├── partials/                          # Admin UI templates
│   │   ├── media-page.php                 # Media listing page template
│   │   └── settings-page.php              # Settings page template
│   ├── js/
│   │   └── admin.js                       # Admin JavaScript
│   └── css/
│       └── admin.css                      # Admin styles
│
├── public/                                # Public-facing functionality
│   ├── class-qdr-tss-public.php           # Public controller
│   ├── class-qdr-tss-shortcode.php        # Shortcode functionality
│   ├── class-qdr-tss-download.php         # Download functionality
│   ├── js/
│   │   └── public.js                      # Public JavaScript
│   └── css/
│       └── public.css                     # Public styles
│
├── rest-api/                              # REST API functionality
│   ├── class-qdr-tss-rest-controller.php  # REST API base controller
│   ├── class-qdr-tss-media-controller.php # Media endpoints
│   └── class-qdr-tss-upload-controller.php# Upload endpoints
│
├── languages/                             # Translation files
│   ├── qdr-temporary-shared-storage.pot   # Translation template
│   └── qdr-temporary-shared-storage-cs_CZ.po # Czech translation
│
└── docs/                                  # Documentation
    ├── integration-guide.md               # Integration guide
    ├── plugin-structure.md                # Plugin structure documentation
    ├── rest-api-docs.md                   # REST API documentation
    └── testing-guide.md                   # Testing guide

Class Responsibilities

Core Classes

QDR_TSS (Main Plugin Class)

  • Initialize the plugin
  • Load dependencies
  • Register hooks
  • Define plugin-wide constants
  • Load translations

QDR_TSS_Activator

  • Handle plugin activation
  • Create database tables
  • Create directories
  • Create .htaccess files
  • Set default options
  • Create download page

QDR_TSS_Deactivator

  • Handle plugin deactivation
  • Clear scheduled hooks

QDR_TSS_Loader

  • Register actions and filters
  • Orchestrate all hooks for the plugin

QDR_TSS_i18n

  • Load text domain
  • Enable internationalization

QDR_TSS_DB_Manager

  • Create/update custom tables
  • Database migrations
  • Database queries for media items
  • CRUD operations for media items
  • Storage size calculations

QDR_TSS_File_Manager

  • Handle file operations
  • Create file directories
  • Manage chunked uploads
  • Delete files
  • Clean up empty directories

QDR_TSS_Settings

  • Get/set plugin settings
  • Settings validation
  • Default settings
  • API key management

QDR_TSS_Cron_Manager

  • Register cron schedules
  • Handle expired files cleanup
  • Schedule checks

Admin Classes

QDR_TSS_Admin

  • Register admin menu items
  • Enqueue admin scripts/styles
  • Handle AJAX requests
  • Initialize admin hooks

QDR_TSS_Media_Page

  • Render Media Shared Storage page
  • Handle media listing
  • Edit/delete functionality
  • AJAX handlers for media operations

QDR_TSS_Settings_Page

  • Render Settings page
  • Save settings
  • AJAX handlers for settings operations
  • Storage management
  • Handle purge expired files

Public Classes

QDR_TSS_Public

  • Register public scripts/styles
  • Public hooks
  • Create download page

QDR_TSS_Shortcode

  • Register shortcodes
  • Render download forms

QDR_TSS_Download

  • Handle download requests
  • Verify passwords and references
  • Process file download
  • Update download stats

REST API Classes

QDR_TSS_REST_Controller

  • Base REST API functionality
  • Authentication
  • Permissions

QDR_TSS_Media_Controller

  • GET/PUT/DELETE media endpoints
  • List media collection
  • Media properties management

QDR_TSS_Upload_Controller

  • Chunked upload endpoints
  • File validation
  • Upload initialization
  • Chunk handling
  • Upload finalization

File Dependencies

Here's a list of the main file dependencies:

  1. qdr-temporary-shared-storage.php - Loads:

    • class-qdr-tss-activator.php
    • class-qdr-tss-deactivator.php
    • class-qdr-tss.php
  2. class-qdr-tss.php - Loads:

    • class-qdr-tss-loader.php
    • class-qdr-tss-i18n.php
    • class-qdr-tss-db-manager.php
    • class-qdr-tss-file-manager.php
    • class-qdr-tss-settings.php
    • class-qdr-tss-cron-manager.php
    • functions.php
    • class-qdr-tss-admin.php
    • class-qdr-tss-media-page.php
    • class-qdr-tss-settings-page.php
    • class-qdr-tss-public.php
    • class-qdr-tss-shortcode.php
    • class-qdr-tss-download.php
    • class-qdr-tss-rest-controller.php
    • class-qdr-tss-media-controller.php
    • class-qdr-tss-upload-controller.php
  3. class-qdr-tss-admin.php - Loads:

    • admin/js/admin.js
    • admin/css/admin.css
  4. class-qdr-tss-public.php - Loads:

    • public/js/public.js
    • public/css/public.css

Additional Files Needed

Based on the review of the source code, the following files need to be created/renamed:

  1. class-qdr-tss-loader.php - Rename existing class-qdr-tss-file-loader.php to this name to match references in the code
  2. admin/js/admin.js - Create this file for admin JavaScript functionality (currently referenced but not included)

Database Schema

The plugin uses a custom database table with the following schema:

CREATE TABLE {$wpdb->prefix}qdr_temporary_shared_storage (
    id bigint(20) NOT NULL AUTO_INCREMENT,
    media_id bigint(20) NOT NULL,
    original_file_name varchar(255) NOT NULL,
    description text NULL,
    message text NULL,
    active_from datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
    active_to datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
    password varchar(255) NOT NULL,
    reference varchar(255) NULL,
    upload_date datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
    download_count int DEFAULT 0 NOT NULL,
    last_download datetime DEFAULT '0000-00-00 00:00:00' NULL,
    file_path varchar(255) NOT NULL,
    file_size bigint(20) NOT NULL,
    PRIMARY KEY  (id),
    KEY media_id (media_id),
    KEY reference (reference),
    KEY active_to (active_to)
)