# Savvy Membership Plugin - Modular Structure

## Overview
The Savvy Membership plugin has been reorganized into a modular structure for better maintainability and code organization. The main plugin file now serves as a loader that includes all the necessary modules.

## File Structure

### Main Plugin File
- `savvy-membership.php` - Main plugin file that defines constants and includes all modules

### Modules (in `/includes/` directory)

#### 1. **user-roles.php** - User Roles and Capabilities Management
- `savvy_membership_add_member_role()` - Creates the Savvy Member role
- `modify_savvy_member_capabilities()` - Modifies member capabilities
- `savvy_membership_member_custom_capabilities()` - Adds custom capabilities
- `deactivate_savvy_member_role()` - Removes role on deactivation
- `savvy_membership_member_role_and_capabilities()` - Sets up role and capabilities
- `savvy_membership_featured_image_capability()` - Adds featured image capability
- `savvme_admin_full_access()` - Ensures admin access
- `savvme_grant_admin_savvy_member_role()` - Grants admin users the member role

#### 2. **custom-post-types.php** - Custom Post Type Management
- `savvy_membership_properties_post_type()` - Registers the savvy_premium post type
- `savvy_flush_rewrite_rules()` - Flushes rewrite rules
- `savvy_add_rewrite_rules()` - Adds custom rewrite rules
- `savvy_premium_template_include()` - Handles template loading
- `savvy_add_query_vars()` - Adds custom query vars
- `savvy_premium_post_link()` - Handles post links
- `savvy_add_premium_capabilities()` - Adds premium content capabilities
- `savvy_allow_acf_editing()` - Allows ACF editing

#### 3. **shortcodes.php** - Shortcode Management
- `savvy_premium_shortcode()` - Premium content display shortcode
- `savvy_add_favorite_heart()` - Favorite heart shortcode
- `savvy_add_reminder_button()` - Reminder button shortcode
- `savvy_display_favorites()` - Display favorites shortcode
- `savvy_newsletter_signup_shortcode()` - Newsletter signup shortcode

#### 4. **admin-management.php** - Admin Interface Management
- `savvy_add_admin_menu()` - Adds admin menu pages under "Savvy Membership"
- `savvy_render_dashboard_page()` - Renders dashboard page
- `savvy_render_settings_page()` - Renders settings & shortcodes page
- `savvy_delete_member_callback()` - AJAX handler for deleting members
- `render_savvy_register_member_page()` - Renders registered members page
- `savvy_enqueue_admin_scripts()` - Enqueues admin scripts

**Admin Menu Structure:**
- **Savvy Membership** (Main Menu)
  - Dashboard
  - Settings & Shortcodes
  - Registered Members
  - Premium Content

#### 5. **favorites-system.php** - Favorites System
- `savvy_toggle_favorite_callback()` - AJAX handler for toggling favorites
- `savvy_enqueue_favorite_scripts()` - Enqueues favorite scripts
- `load_jquery_properly()` - Loads jQuery

#### 6. **reminders-system.php** - Reminders System
- `savvy_reminder_modal()` - Renders reminder modal
- `savvy_save_reminder()` - AJAX handler for saving reminders
- `savvy_enqueue_scripts()` - Enqueues reminder scripts
- `savvy_add_cron_schedule()` - Adds custom cron schedule
- `savvy_send_reminder_emails()` - Sends reminder emails
- `savvy_create_reminder_table()` - Creates reminder table

#### 7. **frontend-assets.php** - Frontend Assets and Styling
- `savvy_enqueue_custom_styles()` - Enqueues custom styles
- `enqueue_fontawesome_assets()` - Enqueues FontAwesome
- `savvy_enqueue_scripts_registration()` - Enqueues registration scripts
- `add_icon_to_menu()` - Adds menu icons

#### 8. **page-management.php** - Page Management and Utilities
- `savvy_create_login_page()` - Creates login page
- `savvy_create_savvy_account_page()` - Creates account page
- `create_savvy_registration_table()` - Creates registration table
- `savvy_handle_logout()` - Handles logout
- Template redirect for premium content access control

#### 9. **registration_form.php** - Registration Form (existing)
- Registration form functionality
- `is_savvy_user_logged_in()` - Helper function

#### 10. **login_form.php** - Login Form (existing)
- Login form functionality

## Benefits of This Structure

1. **Maintainability**: Each module focuses on a specific functionality
2. **Readability**: Code is organized logically and easy to navigate
3. **Scalability**: New features can be added as separate modules
4. **Debugging**: Issues can be isolated to specific modules
5. **Collaboration**: Multiple developers can work on different modules
6. **Testing**: Individual modules can be tested separately

## Constants

The main plugin file defines these constants:
- `SAVVY_MEMBERSHIP_VERSION` - Plugin version
- `SAVVY_MEMBERSHIP_PLUGIN_FILE` - Plugin file path

## Usage

All modules are automatically loaded when the plugin is activated. No changes are needed to existing functionality - this is purely an organizational improvement.

## Future Development

When adding new features:
1. Create a new module file in the `/includes/` directory
2. Add the require_once statement to the main plugin file
3. Follow the existing naming conventions and structure
4. Update this documentation

## Version History

- **1.3.11.68**: Fixed admin menu organization under single "Savvy Membership" menu
- **1.3.11.67**: Reorganized into modular structure
- Previous versions: Monolithic structure 