11 KiB
11 KiB
File Restructuring Plan - feature/restructure-codebase
New Directory Structure
4WDCSA.co.za/
├── src/
│ ├── pages/
│ │ ├── index.php (homepage - moved from root)
│ │ ├── about.php
│ │ ├── contact.php
│ │ ├── privacy_policy.php
│ │ │
│ │ ├── auth/
│ │ │ ├── login.php
│ │ │ ├── register.php
│ │ │ ├── forgot_password.php
│ │ │ ├── reset_password.php
│ │ │ ├── verify.php
│ │ │ ├── resend_verification.php
│ │ │ ├── change_password.php
│ │ │ └── update_password.php
│ │ │
│ │ ├── memberships/
│ │ │ ├── membership.php
│ │ │ ├── membership_details.php
│ │ │ ├── membership_application.php
│ │ │ ├── membership_payment.php
│ │ │ ├── renew_membership.php
│ │ │ └── member_info.php
│ │ │
│ │ ├── bookings/
│ │ │ ├── bookings.php
│ │ │ ├── campsites.php
│ │ │ ├── campsite_booking.php
│ │ │ ├── trips.php
│ │ │ ├── trip-details.php
│ │ │ ├── course_details.php
│ │ │ └── driver_training.php
│ │ │
│ │ ├── shop/
│ │ │ ├── view_cart.php
│ │ │ ├── add_to_cart.php
│ │ │ ├── bar_tabs.php
│ │ │ ├── payment_confirmation.php
│ │ │ ├── confirm.php
│ │ │ └── confirm2.php
│ │ │
│ │ ├── events/
│ │ │ ├── events.php
│ │ │ ├── blog.php
│ │ │ ├── blog_details.php
│ │ │ ├── best_of_the_eastern_cape_2024.php
│ │ │ ├── 2025_agm_minutes.php
│ │ │ ├── agm_content.php
│ │ │ └── instapage.php
│ │ │
│ │ └── other/
│ │ ├── 404.php
│ │ ├── account_settings.php
│ │ ├── rescue_recovery.php
│ │ ├── bush_mechanics.php
│ │ ├── indemnity.php
│ │ ├── indemnity_waiver.php
│ │ ├── basic_indemnity.php
│ │ ├── view_indemnity.php
│ │ ├── ad_banner.php
│ │ ├── logos.php
│ │ ├── review_box.php
│ │ ├── comment_box.php
│ │ ├── modal.php
│ │ ├── insta_footer.php
│ │ └── index2.php
│ │
│ ├── admin/
│ │ ├── admin_members.php
│ │ ├── admin_payments.php
│ │ ├── admin_web_users.php
│ │ ├── admin_course_bookings.php
│ │ ├── admin_camp_bookings.php
│ │ ├── admin_trip_bookings.php
│ │ ├── admin_visitors.php
│ │ ├── admin_efts.php
│ │ └── add_campsite.php
│ │
│ ├── api/
│ │ ├── fetch_users.php
│ │ ├── fetch_drinks.php
│ │ ├── fetch_bar_tabs.php
│ │ ├── get_campsites.php
│ │ ├── get_tab_total.php
│ │ └── google_validate_login.php
│ │
│ ├── processors/
│ │ ├── validate_login.php
│ │ ├── register_user.php
│ │ ├── process_application.php
│ │ ├── process_booking.php
│ │ ├── process_camp_booking.php
│ │ ├── process_course_booking.php
│ │ ├── process_trip_booking.php
│ │ ├── process_membership_payment.php
│ │ ├── process_payments.php
│ │ ├── process_eft.php
│ │ ├── submit_order.php
│ │ ├── submit_pop.php
│ │ ├── process_signature.php
│ │ ├── create_bar_tab.php
│ │ ├── update_application.php
│ │ ├── update_user.php
│ │ ├── upload_profile_picture.php
│ │ ├── send_reset_link.php
│ │ └── logout.php
│ │
│ ├── config/
│ │ ├── connection.php (database service init)
│ │ ├── session.php
│ │ ├── env.php
│ │ └── functions.php
│ │
│ └── classes/
│ ├── DatabaseService.php
│ ├── FormValidator.php (future)
│ └── ... (other services)
│
├── components/
│ ├── header.php
│ ├── banner.php
│ ├── footer.php (unified)
│ └── ... (shared components)
│
├── assets/
│ ├── css/
│ ├── js/
│ ├── images/
│ ├── fonts/
│ ├── uploads/
│ └── sass/
│
├── vendor/ (Composer)
├── mailers/ (Mailer templates)
├── uploads/ (User uploads)
├── google-client/ (OAuth client)
│
├── .htaccess (already in root - stays there)
├── index.php (PHP entry point - stays in root, requires src/pages/index.php)
├── sitemap.xml
└── phpinfo.php (debug - should remove later)
Migration Strategy
Phase 1: Create Structure & Map Files ✅
- Create all directories
- Create this migration plan
- Create index.php router in root that includes src/pages/index.php
- Create .htaccess rules to serve from src/ transparently
Phase 2: Move Core Config Files
# Must do first - everything depends on these
- Move: connection.php → src/config/
- Move: session.php → src/config/
- Move: env.php → src/config/
- Move: functions.php → src/config/
- Update all includes in every file (this is automated by search/replace)
Phase 3: Move Page Files (45 files)
# Priority: High-traffic pages first
1. Auth pages (8 files) → src/pages/auth/
- login.php, register.php, forgot_password.php, etc.
2. Membership pages (6 files) → src/pages/memberships/
- membership.php, membership_application.php, etc.
3. Booking pages (7 files) → src/pages/bookings/
- campsites.php, bookings.php, trips.php, etc.
4. Shop/Bar pages (6 files) → src/pages/shop/
- view_cart.php, bar_tabs.php, etc.
5. Events/Blog pages (7 files) → src/pages/events/
- blog.php, events.php, etc.
6. Misc pages (11 files) → src/pages/other/
- about.php, contact.php, indemnity.php, etc.
Phase 4: Move Admin Files (9 files)
Move all admin_*.php files → src/admin/
- admin_members.php
- admin_payments.php
- etc.
Phase 5: Move API Files (6 files)
Move all fetch_*.php and get_*.php files → src/api/
- fetch_users.php
- fetch_drinks.php
- get_campsites.php
- etc.
Phase 6: Move Processor Files (18 files)
Move all process_*.php, validate_*.php, submit_*.php → src/processors/
- validate_login.php
- process_booking.php
- submit_order.php
- etc.
Phase 7: Update All Include Paths
# This is the critical step - all files reference each other
- connection.php → src/config/connection.php
- session.php → src/config/session.php
- env.php → src/config/env.php
- functions.php → src/config/functions.php
# Update relative includes in each file to use __DIR__ or __FILE__
# Example: require_once(__DIR__ . '/../../config/connection.php');
Phase 8: .htaccess Routes (Optional - Keep Simple for Now)
# Can be done separately - initially just use new paths as-is
# .htaccess rules to make old URLs still work (forward compatibility)
Include Path Changes
Before (Root-based includes):
require_once('connection.php');
require_once('session.php');
require_once('functions.php');
include_once('header.php');
After (New structure):
// From: src/pages/auth/login.php
require_once(__DIR__ . '/../../config/connection.php');
require_once(__DIR__ . '/../../config/session.php');
require_once(__DIR__ . '/../../config/functions.php');
include_once(__DIR__ . '/../../components/header.php');
// Or use a bootstrap loader in root index.php that sets up paths globally
Recommended: Bootstrap Approach
Create a common bootstrap file that all pages include:
// src/bootstrap.php
<?php
define('APP_ROOT', __DIR__ . '/..');
define('SRC_ROOT', APP_ROOT . '/src');
define('CONFIG_PATH', SRC_ROOT . '/config');
define('CLASSES_PATH', SRC_ROOT . '/classes');
define('COMPONENTS_PATH', APP_ROOT . '/components');
require_once(CONFIG_PATH . '/env.php');
require_once(CONFIG_PATH . '/connection.php');
require_once(CONFIG_PATH . '/session.php');
require_once(CONFIG_PATH . '/functions.php');
?>
Then every page only needs:
<?php require_once(__DIR__ . '/../../bootstrap.php'); ?>
Testing Strategy
Before Merge
- Test each moved file - Load page in browser, verify no 404s
- Test includes - Check all require_once/include work
- Test database - Verify queries still execute
- Test sessions - Login/logout still works
- Test links - Navigation between pages works
- Test APIs - AJAX endpoints respond correctly
Rollback Plan
# If issues found:
git reset --hard HEAD
git checkout main
# All original files restored
File Count Summary
├── Pages: 45 files (auth 8, memberships 6, bookings 7, shop 6, events 7, other 11)
├── Admin: 9 files
├── API: 6 files
├── Processors: 18 files
├── Config: 4 files (connection, session, env, functions)
├── Classes: 1 file (DatabaseService, more later)
└── Components: 2 files (header, banner)
Total: ~95 PHP files organized into logical groups
Benefits of This Structure
✅ Organization - Clear, logical file hierarchy
✅ Security - Can restrict web access to sensitive folders (API, processors)
✅ Maintenance - Related files grouped together
✅ Onboarding - New developers find files easily
✅ Testing - Can write tests per folder
✅ Scalability - Easy to add new features in existing folders
✅ Performance - Can set different caching rules per folder
✅ Version Control - Smaller diffs, easier to review changes
Next Steps
- Create bootstrap.php (centralizes all includes)
- Start Phase 2 - Move config files first
- Create find/replace automation for include path updates
- Test 1-2 files from each category
- If successful, batch move remaining files in each category
- Test full site
- Commit in batches by category
- Merge to main after validation
Commands Reference
# List files to move for each phase
ls *.php | grep -E '^(login|register|forgot)' | xargs -I {} mv {} src/pages/auth/
# Find all require_once and include statements
grep -r "require_once\|include" src/ | grep -v "vendor"
# Test that no broken includes exist
php -l src/**/*.php
Current Status
✅ Branch created: feature/restructure-codebase
✅ Directories created (all folders)
✅ This plan documented
Next Action: Create bootstrap.php and start Phase 2 (config files)