<h4>Events Module — Critical Page Crash & Controller Fixes</h4><ul><li><strong>CRITICAL Fixed:</strong> Entire Events page was blank/truncated — onerror img attributes were added INSIDE PHP short tags (e.g. <code>&lt;?=$item['ImageFileA']? onerror=...</code>) causing parse errors in 8 files. The missing <code>?&gt;</code> closing tag meant PHP parsed the onerror as a ternary expression, producing a fatal syntax error. Fixed all 8 files: upcoming_events_data.php, past_events_data.php, canceled_events_data.php, ongoing_events_data.php, list_events_data.php, page/index.php, catch/list_events_data.php, catch/index.php.</li><li><strong>CRITICAL Fixed:</strong> TimeZone fatal crash — new DateTimeZone() received composite string 'America/New_York - (UTC-05:00) New York' instead of just 'America/New_York'. Added extractTimezoneId() helper in inc_event_listing_manager.php and fixed all 4 data view files + getSortedEvents() in controller.</li><li><strong>Fixed:</strong> Fatal error User::get_userByAcctId() called statically but is non-static. Created $userClass instance and used it via global in saveNotification().</li><li><strong>Fixed:</strong> Fatal error in savePost() — imgId passed as null, implode() requires array. Changed to empty array.</li><li><strong>Fixed:</strong> 14 undefined variable warnings in addEvent/updateEvent — optional POST fields (LocationMap, Feature1-5, mediaURL1-3, hasMeet, Cancel, Reason, etc.) not initialized after extract(). Added null coalescing defaults.</li><li><strong>Fixed:</strong> searchEvent crash when no events match type — added null coalescing on array key access.</li><li><strong>Fixed:</strong> Undefined index 'isOngoing' in upcoming_events_data.php — changed to \!empty() check.</li></ul><p><strong>Files:</strong> 8 view files in EventsManager/page/ and catch/, inc_event_listing_manager.php, controller/events/events.controller.php</p><p><strong>Result:</strong> Page renders fully (17,922 lines vs 5,585 truncated). All tabs work. Add Event works. All 11+ endpoints tested — 0 errors.</p>