is_timetics_connected() ) { return $tools; } // Meetings (read). $tools[] = new Timetics_List_Meetings_Tool(); $tools[] = new Timetics_Get_Meeting_Tool(); $tools[] = new Timetics_Search_Meetings_Tool(); // Meetings (write — approval-gated). $tools[] = new Timetics_Create_Meeting_Tool(); $tools[] = new Timetics_Update_Meeting_Tool(); $tools[] = new Timetics_Duplicate_Meeting_Tool(); // Meeting categories (read). $tools[] = new Timetics_List_Categories_Tool(); // Meeting categories (write — approval-gated). $tools[] = new Timetics_Create_Category_Tool(); $tools[] = new Timetics_Update_Category_Tool(); // Bookings (read). $tools[] = new Timetics_List_Bookings_Tool(); $tools[] = new Timetics_Get_Booking_Tool(); $tools[] = new Timetics_Search_Bookings_Tool(); $tools[] = new Timetics_Get_Available_Slots_Tool(); $tools[] = new Timetics_List_Payment_Methods_Tool(); // Bookings (write — approval-gated). $tools[] = new Timetics_Create_Booking_Tool(); $tools[] = new Timetics_Reschedule_Booking_Tool(); $tools[] = new Timetics_Cancel_Booking_Tool(); // Staff (read). $tools[] = new Timetics_List_Staff_Tool(); $tools[] = new Timetics_Get_Staff_Tool(); $tools[] = new Timetics_Search_Staff_Tool(); $tools[] = new Timetics_Get_Staff_Integrations_Tool(); // Staff (write — approval-gated). $tools[] = new Timetics_Create_Staff_Tool(); $tools[] = new Timetics_Update_Staff_Tool(); $tools[] = new Timetics_Reinvite_Staff_Tool(); // Customers (read). $tools[] = new Timetics_List_Customers_Tool(); $tools[] = new Timetics_Get_Customer_Tool(); $tools[] = new Timetics_Search_Customers_Tool(); $tools[] = new Timetics_Get_Customer_Bookings_Tool(); // Customers (write — approval-gated). $tools[] = new Timetics_Create_Customer_Tool(); $tools[] = new Timetics_Update_Customer_Tool(); // Settings + reports (read; settings write is a narrow, cosmetic-only whitelist). $tools[] = new Timetics_Get_Settings_Tool(); $tools[] = new Timetics_Update_Settings_Tool(); $tools[] = new Timetics_Get_Reports_Tool(); // Shortcodes. $tools[] = new Timetics_Get_Shortcodes_Tool(); return $tools; } /** * Check whether Timetics is active and connected via Aisentic settings. */ private function is_timetics_connected(): bool { // Not function_exists( 'timetics' ): that helper is namespaced. if ( ! class_exists( 'Timetics\Bootstrap' ) ) { return false; } $saved = get_option( Integration_Controller::OPTION_KEY, [] ); $status = $saved['timetics']['status'] ?? ''; return 'connected' === $status; } }