370 lines
11 KiB
Markdown
370 lines
11 KiB
Markdown
# 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 ✅
|
|
- [x] Create all directories
|
|
- [x] 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
|
|
```bash
|
|
# 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)
|
|
```bash
|
|
# 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)
|
|
```bash
|
|
Move all admin_*.php files → src/admin/
|
|
- admin_members.php
|
|
- admin_payments.php
|
|
- etc.
|
|
```
|
|
|
|
### Phase 5: Move API Files (6 files)
|
|
```bash
|
|
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)
|
|
```bash
|
|
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
|
|
```bash
|
|
# 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)
|
|
```bash
|
|
# 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):
|
|
```php
|
|
require_once('connection.php');
|
|
require_once('session.php');
|
|
require_once('functions.php');
|
|
include_once('header.php');
|
|
```
|
|
|
|
### After (New structure):
|
|
```php
|
|
// 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:
|
|
|
|
```php
|
|
// 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
|
|
<?php require_once(__DIR__ . '/../../bootstrap.php'); ?>
|
|
```
|
|
|
|
---
|
|
|
|
## Testing Strategy
|
|
|
|
### Before Merge
|
|
1. **Test each moved file** - Load page in browser, verify no 404s
|
|
2. **Test includes** - Check all require_once/include work
|
|
3. **Test database** - Verify queries still execute
|
|
4. **Test sessions** - Login/logout still works
|
|
5. **Test links** - Navigation between pages works
|
|
6. **Test APIs** - AJAX endpoints respond correctly
|
|
|
|
### Rollback Plan
|
|
```bash
|
|
# 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
|
|
|
|
1. Create bootstrap.php (centralizes all includes)
|
|
2. Start Phase 2 - Move config files first
|
|
3. Create find/replace automation for include path updates
|
|
4. Test 1-2 files from each category
|
|
5. If successful, batch move remaining files in each category
|
|
6. Test full site
|
|
7. Commit in batches by category
|
|
8. Merge to main after validation
|
|
|
|
---
|
|
|
|
## Commands Reference
|
|
|
|
```bash
|
|
# 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)
|