Code restructure push
This commit is contained in:
369
docs/RESTRUCTURING_PLAN.md
Normal file
369
docs/RESTRUCTURING_PLAN.md
Normal file
@@ -0,0 +1,369 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user