[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fnQkxfhVaaxxfJo7OuBrahx_NCTI0uCBp199zB64J8vM":3,"$f_VjQLiQIbCtqir8ZFSXzGbwtOQSzUhq6-SZFe3HbsME":985,"$fAbNogMyZEedmoJ4i9z0k-Wi1vgSONMQxej1727fjMew":989},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":24,"download_link":25,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28,"discovery_status":29,"vulnerabilities":30,"developer":31,"crawl_stats":27,"alternatives":37,"analysis":122,"fingerprints":928},"oryx-bookings","Oryx Bookings: WooCommerce Appointments & Scheduling (100% Free)","1.1.3","Rabie Eltegani","https:\u002F\u002Fprofiles.wordpress.org\u002Frabieelkheir\u002F","\u003Cblockquote>\n\u003Cp>\u003Cstrong>🚀 WHY CHOOSE ORYX BOOKINGS?\u003C\u002Fstrong>\u003Cbr \u002F>\n  Most booking plugins force you to buy a “Pro” version to accept payments or manage staff. \u003Cstrong>Oryx gives you everything for FREE.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>WooCommerce Integration?\u003C\u002Fstrong> ✅ \u003Cstrong>FREE\u003C\u002Fstrong> (Accept Stripe, PayPal, etc.)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Unlimited Services?\u003C\u002Fstrong> ✅ \u003Cstrong>FREE\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Unlimited Staff Members?\u003C\u002Fstrong> ✅ \u003Cstrong>FREE\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>6 Premium Form Designs?\u003C\u002Fstrong> ✅ \u003Cstrong>FREE\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Interactive Admin Calendar?\u003C\u002Fstrong> ✅ \u003Cstrong>FREE\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Stop paying monthly subscriptions. Oryx is the open-source solution for Salons, Clinics, and Service Businesses.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Cstrong>Oryx Bookings\u003C\u002Fstrong> is a complete appointment and service booking system for WordPress. Manage services, staff, schedules, and accept bookings with a beautiful frontend form.\u003C\u002Fp>\n\u003Ch4>🔥 KEY HIGHLIGHTS\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Unlimited Services & Staff\u003C\u002Fstrong> — Create as many services and team members as you need.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WooCommerce Ready\u003C\u002Fstrong> — Sell appointments like products and use any payment gateway.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Interactive Calendar\u003C\u002Fstrong> — Visual calendar view to manage all your bookings at a glance.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>6 Booking Form Templates\u003C\u002Fstrong> — Grid, Stepper, Accordion, Card Flow, Flat Split, and Focus Input.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Smart Scheduling\u003C\u002Fstrong> — Real-time availability with automatic double-booking prevention.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Secure & GDPR-Ready\u003C\u002Fstrong> — Built-in spam protection, rate limiting, reCAPTCHA v3, and WordPress privacy tools integration.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>🛠️ DETAILED FEATURES\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Services Management\u003C\u002Fstrong>\u003Cbr \u002F>\n* Custom name, duration, price, description, and featured image per service.\u003Cbr \u002F>\n* Rich content editor with media support.\u003Cbr \u002F>\n* Organize services into categories.\u003Cbr \u002F>\n* \u003Cstrong>Two scheduling modes:\u003C\u002Fstrong> Staff-based (user picks staff) or Service-only (auto-assign based on company hours).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Staff & Team\u003C\u002Fstrong>\u003Cbr \u002F>\n* Staff profiles with name, job title, and photo.\u003Cbr \u002F>\n* Flexible availability: follow company hours or set a custom weekly schedule.\u003Cbr \u002F>\n* Individual days off per staff member.\u003Cbr \u002F>\n* Assign multiple staff to each service.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Bookings & Workflow\u003C\u002Fstrong>\u003Cbr \u002F>\n* Real-time available time slots based on service duration.\u003Cbr \u002F>\n* \u003Cstrong>Booking statuses:\u003C\u002Fstrong> Pending, Confirmed, Cancelled, Completed.\u003Cbr \u002F>\n* Collects customer name, email, and optionally phone, address, and notes.\u003Cbr \u002F>\n* Configurable form fields — enable or disable optional fields from Settings.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Interactive Calendar\u003C\u002Fstrong>\u003Cbr \u002F>\n* Full interactive calendar (day, week, month, and list views).\u003Cbr \u002F>\n* Create, edit, drag-and-drop, and delete bookings directly from the calendar.\u003Cbr \u002F>\n* Filter by staff or service.\u003Cbr \u002F>\n* Visual color coding by booking status.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Working Hours & Holidays\u003C\u002Fstrong>\u003Cbr \u002F>\n* Set opening and closing times for each day of the week.\u003Cbr \u002F>\n* Mark specific days as closed.\u003Cbr \u002F>\n* Add company holidays — bookings are automatically blocked on those dates.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Elementor & Gutenberg Support\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Elementor Widget:\u003C\u002Fstrong> Drag-and-drop from the “Oryx Bookings” category with live preview.\u003Cbr \u002F>\n* \u003Cstrong>Gutenberg Block:\u003C\u002Fstrong> Search “Oryx – Booking Form” with server-side preview.\u003Cbr \u002F>\n* \u003Cstrong>Shortcode:\u003C\u002Fstrong> Use \u003Ccode>[oryx_bookings]\u003C\u002Fcode> anywhere.\u003C\u002Fp>\n\u003Ch4>🎨 CUSTOMIZATION\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Primary Color\u003C\u002Fstrong> — Match your brand with a single color setting.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Display Toggles\u003C\u002Fstrong> — Show or hide service image, description, price, duration, and staff image.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Labels\u003C\u002Fstrong> — Change step titles, button text, and the success message.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Redirect URL\u003C\u002Fstrong> — Send customers to a thank-you page after booking.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>🔒 SECURITY\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Rate limiting per IP for slot lookups and booking creation.\u003C\u002Fli>\n\u003Cli>Honeypot fields and time-based tokens to block bots.\u003C\u002Fli>\n\u003Cli>Google reCAPTCHA v3 support.\u003C\u002Fli>\n\u003Cli>Booking limits per email, IP, and phone number.\u003C\u002Fli>\n\u003Cli>Email and IP blocklist.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Third-Party Libraries\u003C\u002Fh3>\n\u003Cp>This plugin includes the following third-party libraries:\u003C\u002Fp>\n\u003Ch4>Flatpickr\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Version: 4.6.13\u003C\u002Fli>\n\u003Cli>License: MIT\u003C\u002Fli>\n\u003Cli>Copyright: Gregory Petrosyan\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>FullCalendar\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Version: 6.1.10\u003C\u002Fli>\n\u003Cli>License: MIT\u003C\u002Fli>\n\u003Cli>Copyright: Adam Shaw\u003C\u002Fli>\n\u003C\u002Ful>\n","The only 100% FREE Booking Plugin with WooCommerce Payments, Unlimited Staff, and 6 Premium Templates. No hidden costs.",90,870,0,"2026-02-09T04:46:00.000Z","6.9.5","6.0","7.4",[19,20,21,22,23],"appointment","booking","calendar","scheduling","woocommerce","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Foryx-bookings.1.1.3.zip",100,null,"2026-07-22T17:31:50.256Z","no_bundle",[],{"slug":32,"display_name":7,"profile_url":8,"plugin_count":33,"total_installs":11,"avg_security_score":26,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"rabieelkheir",1,30,94,"2026-08-29T22:26:25.100Z",[38,57,71,87,105],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":13,"downloaded":46,"rating":13,"num_ratings":13,"last_updated":47,"tested_up_to":48,"requires_at_least":49,"requires_php":50,"tags":51,"homepage":53,"download_link":54,"security_score":55,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":56},"bookingdaddy","BookingDaddy – Booking & Appointment Made Bold, Easy, and Smart","1.0.0","ConicPlex","https:\u002F\u002Fprofiles.wordpress.org\u002Fconicplex\u002F","\u003Cp>BookingDaddy is a powerful, flexible, and easy-to-use WooCommerce-based booking plugin that enables businesses to accept online bookings and appointments seamlessly. Whether you run a turf rental (futsal, box cricket), salon, swimming pool, clinic, fitness center, tuition classes, or offer hourly-based services, this plugin simplifies scheduling and payments.\u003C\u002Fp>\n\u003Cp>With real-time pricing updates, multiple time slot selection, customizable booking forms, and a powerful admin calendar view, BookingDaddy is the ideal solution for service-based businesses.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🔥 Why Choose BookingDaddy?\u003C\u002Fstrong>\u003Cbr \u002F>\n✅ \u003Cem>WooCommerce Integration\u003C\u002Fem> – Securely accept online payments via WooCommerce\u003Cbr \u002F>\n✅ \u003Cem>Flexible Bookings\u003C\u002Fem> – Set available days, off days, weekly off-days, and more\u003Cbr \u002F>\n✅ \u003Cem>Time Slot Management\u003C\u002Fem> – Auto-generate time slots based on start time, end time, duration & buffer time\u003Cbr \u002F>\n✅ \u003Cem>Real-time Price Calculation\u003C\u002Fem> – Base price + extra fees + price per adult or child (customizable)\u003Cbr \u002F>\n✅ \u003Cem>Multiple Time Selection\u003C\u002Fem> – Allow users to book multiple slots in one order (if enabled)\u003Cbr \u002F>\n✅ \u003Cem>Booking Calendar View\u003C\u002Fem> – Manage appointments with monthly, weekly, and daily views\u003Cbr \u002F>\n✅ \u003Cem>Fully Customizable\u003C\u002Fem> – Modify colors, borders, fonts, labels, and error messages\u003Cbr \u002F>\n✅ \u003Cem>Mobile-Friendly & Easy to Use\u003C\u002Fem> – No coding required, just install & start booking\u003Cbr \u002F>\n✅ \u003Cem>Seamless Email Notifications\u003C\u002Fem> – Keep customers informed about their bookings\u003Cbr \u002F>\n✅ \u003Cem>Multi-Niche Compatibility\u003C\u002Fem> – Perfect for various industries & business types\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎯 Ideal for:\u003C\u002Fstrong>\u003Cbr \u002F>\nTurf rentals & sports facilities – Futsal, box cricket, badminton courts\u003C\u002Fp>\n\u003Cp>Salons & spas – Appointment scheduling for beauty & wellness services\u003C\u002Fp>\n\u003Cp>Swimming pools – Booking pool slots & swimming classes\u003C\u002Fp>\n\u003Cp>Clinics & healthcare – Doctor & therapy session appointments\u003C\u002Fp>\n\u003Cp>Fitness centers & gyms – Personal training & class bookings\u003C\u002Fp>\n\u003Cp>Freelancers & consultants – Hourly-based service bookings\u003C\u002Fp>\n\u003Cp>Coaching & tuition classes – Scheduling online & offline sessions\u003C\u002Fp>\n\u003Cp>Event & workshop organizers – Managing workshop registrations\u003C\u002Fp>\n\u003Cp>And many more businesses that need online booking solutions\u003C\u002Fp>\n\u003Cp>\u003Cstrong>📌 Benefits for Your Business:\u003C\u002Fstrong>\u003Cbr \u002F>\n✔️ Automate appointment scheduling and save time\u003Cbr \u002F>\n✔️ Accept online payments securely via WooCommerce\u003Cbr \u002F>\n✔️ Avoid overbooking with real-time slot availability\u003Cbr \u002F>\n✔️ Offer a seamless mobile-friendly booking experience to customers\u003Cbr \u002F>\n✔️ Reduce no-shows with instant booking confirmations\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Benefits for Your Customers:\u003C\u002Fstrong>\u003Cbr \u002F>\n✔️ Simple and fast booking process\u003Cbr \u002F>\n✔️ Transparent pricing with real-time calculations\u003Cbr \u002F>\n✔️ Easy selection of available time slots\u003Cbr \u002F>\n✔️ Mobile-friendly interface for bookings on the go\u003Cbr \u002F>\n✔️ Secure payments and instant booking confirmation\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🚀 Demo\u003C\u002Fstrong>\u003Cbr \u002F>\nSee BookingDaddy in action!\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fconicplex.com\u002Fplugins\u002Fbookingdaddy\u002F\" rel=\"nofollow ugc\">Live Demo\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Credits & 3rd Party Services\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fconicplex.com\u002F\" rel=\"nofollow ugc\">ConicPlex.com\u003C\u002Fa>\u003C\u002Fstrong>: BookingDaddy uses \u003Ca href=\"https:\u002F\u002Fconicplex.com\u002F\" rel=\"nofollow ugc\">ConicPlex\u003C\u002Fa> (own website) to store plugin insights. Whenever the plugin is activated, deactivated, or uninstalled, an API request is sent to Conicplex to record the action. The API request includes the action, site URL, admin email, plugin version, plugin name, plugin text domain, WordPress version, site language, and site timezone. \u003Ca href=\"https:\u002F\u002Fconicplex.com\u002Fprivacy-policy\u002F\" rel=\"nofollow ugc\">Privacy Policy\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fconicplex.com\u002Fterms-conditions\u002F\" rel=\"nofollow ugc\">Terms & Conditions\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>📌 Ready to Simplify Your Booking System?\u003C\u002Fh3>\n\u003Cp>With BookingDaddy, managing online bookings has never been easier. Install today and start accepting booking and appointments effortlessly!\u003C\u002Fp>\n","BookingDaddy is a WooCommerce booking plugin for salons, clinics, turf rentals, and more. Accept online bookings and appointments!",471,"2025-05-15T12:16:00.000Z","6.8.5","5.2","7.2",[19,20,21,22,52],"woocommerce-booking","https:\u002F\u002Fconicplex.com\u002Fplugins\u002Fbookingdaddy\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbookingdaddy.1.0.0.zip",92,"2026-04-16T10:56:18.058Z",{"slug":58,"name":59,"version":60,"author":61,"author_profile":62,"description":63,"short_description":64,"active_installs":13,"downloaded":65,"rating":13,"num_ratings":13,"last_updated":66,"tested_up_to":15,"requires_at_least":67,"requires_php":17,"tags":68,"homepage":69,"download_link":70,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"client-sync","Client Sync","3.7.3","Joshua Jordan","https:\u002F\u002Fprofiles.wordpress.org\u002Fhsojhsoj\u002F","\u003Cp>📖 \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhsojhsoj\u002Fclient-sync-monorepo\u002Fwiki\" rel=\"nofollow ugc\">Full Documentation\u003C\u002Fa>\u003C\u002Fstrong> — Setup guides, shortcode reference, payment configuration, and more.\u003C\u002Fp>\n\u003Cp>Client Sync transforms your WordPress site into a complete client and appointment management powerhouse. Designed for service-based businesses, clinics, consultants, and professionals, this plugin provides a robust, scalable, and flexible system to handle the entire client journey.\u003C\u002Fp>\n\u003Cp>Whether you need simple one-on-one appointment booking, multi-day resource rentals, or complex group classes, Client Sync’s unique “Dimension” architecture and a single, powerful \u003Ccode>[clisyc_booking_form]\u003C\u002Fcode> shortcode can handle it all intelligently. The system automatically detects whether to show a time-slot calendar, a multi-day rental search, or a single property’s booking calendar based on the context of the page.\u003C\u002Fp>\n\u003Cp>Built on a high-performance architecture using custom database tables, Client Sync ensures your site remains fast and responsive, even with complex schedules and high appointment volumes.\u003C\u002Fp>\n\u003Ch4>Core Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Flexible Booking Modes:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Time Slots:\u003C\u002Fstrong> Perfect for standard appointments, coaching calls, and consultations.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Group Bookings (Multi-Capacity):\u003C\u002Fstrong> Easily manage classes, workshops, or tours by setting a capacity for any service. The system automatically tracks spots left.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multi-Day Bookings:\u003C\u002Fstrong> Ideal for rentals (equipment, rooms, vehicles) where clients select a start and end date. Features an intuitive drag-to-select date range picker.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Powerful & Intersecting Schedules:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Availability Dimensions:\u003C\u002Fstrong> Create schedules based on service type, location, or practitioner for dynamic booking systems.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Resource Scheduling (Pro):\u003C\u002Fstrong> Designate dimensions like “Rooms” or “Equipment” as Resources. A time slot is only bookable if the service, practitioner, AND the required resource are all available at the same time.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Visual Availability Management:\u003C\u002Fstrong> “Paint” available or blocked time on an admin calendar for one-off changes and overrides.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Availability Search Tool:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Add a powerful search form to your site with the \u003Ccode>[clisyc_availability_search]\u003C\u002Fcode> shortcode.\u003C\u002Fli>\n\u003Cli>Allows users to search for available items (rooms, boats, properties) across a specific date range, ensuring they only see results that are open for their entire trip.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Dynamic Conditional Fields:\u003C\u002Fstrong> Show or hide appointment fields based on the service selected. If a “House Rental” service is chosen, show “Bedrooms”. If “Car Rental” is chosen, show “Vehicle Type”. This creates a clean, relevant booking experience for any service.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Flexible Payment Options:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Stripe Direct Integration:\u003C\u002Fstrong> Accept payments directly through Stripe Checkout — no WooCommerce required. Just add your API keys and you’re ready to go.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Deep WooCommerce Integration:\u003C\u002Fstrong> Link each service to a unique WooCommerce product for accurate pricing, dynamic pricing rules (weekend surcharges, weekly discounts), and automatic totals for group and multi-day bookings.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>No Payment Mode:\u003C\u002Fstrong> Accept bookings without any payment gateway for free consultations or internal scheduling.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Extensible Custom Fields:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Unlimited fields for clients and appointments, including text, dropdowns, checkboxes, and a unique \u003Cstrong>Image Map\u003C\u002Fstrong> field (Pro).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Client & Manager Dashboards:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Clients view appointment history and update details via a dedicated account page.\u003C\u002Fli>\n\u003Cli>Manager shortcodes create frontend dashboards for staff to view\u002Fedit appointments without full admin access.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Automation & Reminders:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Auto-generate future availability from templates.\u003C\u002Fli>\n\u003Cli>Reduce no-shows with configurable email reminders.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>iCal Export:\u003C\u002Fstrong> One-click \u003Ccode>.ics\u003C\u002Fcode> file downloads for adding appointments to Google Calendar, Outlook, or Apple Calendar.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>This plugin includes optional integrations with the following third-party services.\u003C\u002Fp>\n\u003Ch4>Stripe Payments\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Purpose:\u003C\u002Fstrong> This service provides direct payment processing through Stripe Checkout. When enabled, clients are redirected to a secure Stripe-hosted payment page to complete their booking payment. This feature is \u003Cstrong>disabled by default\u003C\u002Fstrong> and must be explicitly enabled and configured by the site administrator in the plugin’s Payments settings tab.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Data Sent:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Backend (Your Server):\u003C\u002Fstrong> When a booking requires payment, your server sends the appointment details (amount, currency, description, and client email) to Stripe’s API to create a Checkout Session. A webhook endpoint receives payment confirmation events from Stripe, which are verified using HMAC-SHA256 signature validation.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Service Policies:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Use of Stripe is subject to the Stripe Services Agreement and Privacy Policy.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy Policy:\u003C\u002Fstrong> https:\u002F\u002Fstripe.com\u002Fprivacy\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Terms of Service:\u003C\u002Fstrong> https:\u002F\u002Fstripe.com\u002Flegal\u002Fssa\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Google reCAPTCHA v3\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Purpose:\u003C\u002Fstrong> This service analyzes user interactions to distinguish between human users and automated bots, helping to prevent spam submissions. This feature is \u003Cstrong>disabled by default\u003C\u002Fstrong> and must be explicitly enabled and configured by the site administrator in the plugin’s settings (Client Sync > Settings > Style & Behavior > Spam Protection).\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Data Sent:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Frontend (User’s Browser):\u003C\u002Fstrong> When reCAPTCHA is enabled, a JavaScript file is loaded from Google’s servers. The user’s browser sends hardware and software information, including device and application data and the results of integrity checks, to Google for analysis. The user’s IP address is also collected.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Backend (Your Server):\u003C\u002Fstrong> When a user submits a form, a verification token generated on the frontend is sent from your server to Google’s API for validation. This request includes the user’s IP address.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Service Policies:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Use of Google reCAPTCHA is subject to the Google Privacy Policy and Terms of Use.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy Policy:\u003C\u002Fstrong> https:\u002F\u002Fpolicies.google.com\u002Fprivacy\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Terms of Use:\u003C\u002Fstrong> https:\u002F\u002Fpolicies.google.com\u002Fterms\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Copyright\u003C\u002Fh3>\n\u003Cp>Client Sync uses the following third-party libraries:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>FullCalendar Scheduler\u003C\u002Fstrong>\n\u003Cul>\n\u003Cli>Source: https:\u002F\u002Ffullcalendar.io\u002Fscheduler\u003C\u002Fli>\n\u003Cli>License: GNU General Public License v3 (GPLv3)\u003C\u002Fli>\n\u003Cli>Copyright: 2023 Adam Shaw\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n","Manage client registrations, appointments, payments, and appointment notes from a single, integrated system.",652,"2026-04-20T08:13:00.000Z","5.8",[19,20,21,22,23],"https:\u002F\u002Fdependentmedia.com\u002Fclient-sync\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fclient-sync.3.7.3.zip",{"slug":72,"name":73,"version":41,"author":74,"author_profile":75,"description":76,"short_description":77,"active_installs":13,"downloaded":78,"rating":26,"num_ratings":33,"last_updated":79,"tested_up_to":80,"requires_at_least":67,"requires_php":17,"tags":81,"homepage":24,"download_link":86,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"slotify-appointment-booking-system","Slotify – Appointment Booking System","habexlabs","https:\u002F\u002Fprofiles.wordpress.org\u002Fhabexlabs\u002F","\u003Cp>Slotify is a modern appointment booking system for WordPress. It provides staff scheduling, services, a booking calendar, email confirmations, and optional WooCommerce payments.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Requirements\u003C\u002Fstrong>\u003Cbr \u002F>\n* WordPress 5.8 or higher\u003Cbr \u002F>\n* PHP 7.4 or higher\u003Cbr \u002F>\n* Optional: WooCommerce (for online payment integration)\u003C\u002Fp>\n\u003Ch3>Manual checks after activation\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Plugins \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Slotify – Appointment Booking System: Activate the plugin.\u003C\u002Fli>\n\u003Cli>Confirm Slotify menu (Dashboard, Bookings, Calendar, Services, Staff, Settings) appears in the admin.\u003C\u002Fli>\n\u003Cli>In your database tool, confirm the table \u003Ccode>wp_slotify_appointments\u003C\u002Fcode> (or \u003Ccode>{prefix}slotify_appointments\u003C\u002Fcode>) exists with the expected columns and indexes.\u003C\u002Fli>\n\u003C\u002Ful>\n","Modern appointment booking system with staff scheduling, services, calendar, and WooCommerce payments.",286,"2026-05-22T06:30:00.000Z","7.0.2",[82,83,84,85,23],"appointment-booking","booking-calendar","online-booking","staff-scheduling","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fslotify-appointment-booking-system.1.0.0.zip",{"slug":88,"name":89,"version":90,"author":91,"author_profile":92,"description":93,"short_description":94,"active_installs":95,"downloaded":96,"rating":11,"num_ratings":97,"last_updated":98,"tested_up_to":80,"requires_at_least":99,"requires_php":17,"tags":100,"homepage":103,"download_link":104,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"simplybook","SimplyBook.me – Booking and reservations calendar","3.3.1","Really Simple Plugins","https:\u002F\u002Fprofiles.wordpress.org\u002Freallysimpleplugins\u002F","\u003Cp>SimplyBook.me is the easiest way to start collecting bookings on your WordPress website. The plugin will allow you to register your free account and immediately publish your booking calendar on the front-end of your site. With a few clicks, you can easily add your services and service providers, and design the most beautiful booking widget. You will be collecting appointments and reservations in no-time!\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Easy appointment scheduling\u003C\u002Fli>\n\u003Cli>Simple plugin onboarding and configuration\u003C\u002Fli>\n\u003Cli>Manage your calendar and bookings using the powerful mobile app (iOS and Android)\u003C\u002Fli>\n\u003Cli>Accept touchless payments via the app on your onsite checkout\u003C\u002Fli>\n\u003Cli>High email deliverability for reservation confirmations and appointment reminders.\u003C\u002Fli>\n\u003Cli>Create multiple services, providers, categories and locations\u003C\u002Fli>\n\u003Cli>Send email and SMS notifications to your customers for their bookings\u003C\u002Fli>\n\u003Cli>Add “Book now” buttons on your Instagram, Facebook and Google Business Profile\u003C\u002Fli>\n\u003Cli>Sell Memberships, packages & gift cards\u003C\u002Fli>\n\u003Cli>Manage bookings for Classes & Events\u003C\u002Fli>\n\u003Cli>Increase sales by offering products and service add-ons in the booking process\u003C\u002Fli>\n\u003Cli>Marketing campaigns by emails and push notifications\u003C\u002Fli>\n\u003Cli>Waiting Lists and “Make me look busy” features\u003C\u002Fli>\n\u003Cli>Offer Coupons and a Loyalty System to enhance brand loyalty\u003C\u002Fli>\n\u003Cli>Insights and statistics about your bookings, reservations, cancellations, workload and revenues\u003C\u002Fli>\n\u003Cli>Adjust time zone settings if you have clients in different time zones\u003C\u002Fli>\n\u003Cli>Create individual schedules for staff\u003C\u002Fli>\n\u003Cli>Create multiple users related to providers\u003C\u002Fli>\n\u003Cli>Accepting payments and\u002For deposits to confirm the bookings in the booking process\u003C\u002Fli>\n\u003Cli>Easily implement your booking widget with a Gutenberg block, Elementor Widget or a shortcode\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>SimplyBook.me can be used for free up to 50 appointments per month. In addition, you can use one of the Special features for free! You will automatically be signed up for a Free 14-day trial, which allows you to test the Special Features without any restrictions, including advanced scheduling tools.\u003C\u002Fp>\n\u003Ch4>Why SimplyBook.me?\u003C\u002Fh4>\n\u003Cp>SimplyBook.me is an advanced online booking system that creates a professional booking widget on your WordPress site where your clients can book your services at any time. You will then have access to an admin interface where you can manage your bookings, calendar, and settings. On top of that you will get an admin app where you can manage all your bookings, handle appointments, adjust scheduling, and accept payments on the go. Thousands of clients all over the world have selected our booking system to make their business easy and comfortable to use (see our testimonials). SimplyBook.me provides users with a broad range of features so that you can tailor the system to your needs, irrespective of what industry you are in.\u003Cbr \u002F>\nFor a more detailed understanding of the SimplyBook.me service, you can explore at the following link: \u003Ca href=\"https:\u002F\u002Fsimplybook.me\u002F?ref=wordpress\" title=\"SimplyBook\" rel=\"friend nofollow ugc\">https:\u002F\u002Fsimplybook.me\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>This plugin is developed by SimplyBook.me, is ISO27001 compliant and utilizes its API to transmit and store all information, including settings and details of bookings, as well as other personal client data, directly on SimplyBook.me. Before using the plugin, we recommend that you familiarize yourself with the privacy policy and terms of use of SimplyBook.me at the following links:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fsimplybook.me\u002Fen\u002Fpolicy\" title=\"SimplyBook Privacy Policy\" rel=\"friend nofollow ugc\">Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fsimplybook.me\u002Fen\u002Fterms-and-conditions\" title=\"SimplyBook Terms of Use\" rel=\"friend nofollow ugc\">Terms of Use\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This will help you better understand the terms of use of the plugin and ensure your confidentiality.\u003C\u002Fp>\n\u003Cp>This is the official SimplyBook.me plugin, developed by SimplyBook.me and Really Simple Plugins\u003C\u002Fp>\n\u003Ch4>About Really Simple Plugins:\u003C\u002Fh4>\n\u003Cp>Really Simple Plugins is the creator of most-used plugins Really Simple Security and Complianz. With a total of ~6 million installs, we focus on making the most user-friendly and easy-to-use plugins. We work with SimplyBook.me to make the most powerful booking system available directly in your WordPress dashboard.\u003C\u002Fp>\n\u003Ch4>Benefits of the Online booking system\u003C\u002Fh4>\n\u003Cp>Integrating an online booking system like SimplyBook.me is crucial for service businesses aiming to improve customer experience and extend their market reach. By enabling clients to book appointments outside of traditional office hours, an online scheduling and booking system increases accessibility and customer satisfaction. This system simplifies the entire appointment process, automates important reminders, and reduces scheduling errors, freeing up staff to concentrate on delivering superior service.\u003Cbr \u002F>\nAdditionally, an online booking system offers powerful analytics that provide deep insights into customer behaviors and preferences. This data is essential for making informed adjustments to service offerings and planning effective marketing strategies. Last but not least it´s the best way to boost your sales by offering service add-ons and products for sale in the booking process, by sending tailored marketing email campaigns, offering coupons on less busy days, by prompting tips during check out and so much more, the options are endless!\u003C\u002Fp>\n","Simply add a booking calendar to your site to schedule bookings, reservations, appointments and to collect payments.",30000,164863,17,"2026-05-19T11:45:00.000Z","6.6",[101,20,21,102,22],"appointments","reservations","https:\u002F\u002Fhelp.simplybook.me\u002Findex.php?title=WordPress_integration","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsimplybook.3.3.1.zip",{"slug":106,"name":107,"version":108,"author":109,"author_profile":110,"description":111,"short_description":112,"active_installs":113,"downloaded":114,"rating":35,"num_ratings":115,"last_updated":116,"tested_up_to":80,"requires_at_least":117,"requires_php":24,"tags":118,"homepage":120,"download_link":121,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"woocommerce-easy-booking-system","Easy Booking – WooCommerce Booking & Reservation Plugin","3.5.1","Noushka","https:\u002F\u002Fprofiles.wordpress.org\u002Fmorki\u002F","\u003Cp>Easy Booking is a powerful yet intuitive WooCommerce booking and rental plugin, fully compatible with simple, variable, grouped, and bundle products. Designed to seamlessly integrate with your existing WooCommerce setup.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Flexible booking modes\u003C\u002Fstrong>: Choose between Days or Nights mode, and set custom booking durations and limits to match your business model.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Date selection\u003C\u002Fstrong>: offer single or dual-date bookings (e.g., check-in\u002Fcheck-out) for maximum flexibility.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Dashboard management\u003C\u002Fstrong>: Easily track and manage processing or upcoming bookings directly from your WordPress admin.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer-friendly\u003C\u002Fstrong>: Extend functionality with filters and action hooks for custom integrations.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Feasy-booking.pro\u002F\" rel=\"nofollow ugc\">Official website\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fdemo.easy-booking.pro\u002F\" rel=\"nofollow ugc\">Demo\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Feasy-booking.pro\u002Fdocumentation\u002F\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Feasy-booking.pro\u002Ffaq\u002F\" rel=\"nofollow ugc\">FAQ\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Why choose Easy Booking?\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>No complex setup\u003C\u002Fstrong>: Works natively with WooCommerce, no extra product types or complicated configurations.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Adaptable to your needs\u003C\u002Fstrong>: Whether you rent equipment, manage event registrations, or offer seasonal services, Easy Booking adjusts to your workflow.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Responsive support & clear documentation\u003C\u002Fstrong> : Get help when you need it, with detailed documentaiton and a quick, friendly developer ready to assist you.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Perfect for rentals, event bookings, or any date-based service, Easy Booking gives you the tools to streamline reservations.\u003C\u002Fp>\n\u003Ch4>Upgrade to Easy Booking PRO for advanced features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Stock management by date\u003C\u002Fstrong>: Automatic availability management for each date individually, ensuring no overbookings.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Disabled dates\u003C\u002Fstrong>: Block specific dates (holidays, closures, etc.) to match your business schedule.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Advanced pricing\u003C\u002Fstrong>: Set prices by date, season, or booking duration for maximum flexibility.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Date selection on shop page\u003C\u002Fstrong>: Let customers choose dates directly from the product listing, with real-time filtering of available products.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Manual booking import\u003C\u002Fstrong>: Add reservations manually without creating orders, ideal for phone bookings or external systems.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Unlock the full potential of your booking system with \u003Ca href=\"https:\u002F\u002Feasy-booking.pro\u002Fpro\u002F\" rel=\"nofollow ugc\">Easy Booking PRO\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Looking for time-based bookings instead?\u003C\u002Fh4>\n\u003Cp>Easy Booking focuses on rentals, accommodations, and date-based bookings without time selection.\u003C\u002Fp>\n\u003Cp>For appointments, services, classes, and bookings with time slots, take a look at \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fnoushka-easy-scheduling\u002F\" rel=\"ugc\">Easy Scheduling\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Demo\u003C\u002Fh4>\n\u003Cp>See Easy Booking in action: Check out the \u003Ca href=\"http:\u002F\u002Fdemo.easy-booking.pro\u002F\" rel=\"nofollow ugc\">demo\u003C\u002Fa> and explore all the features.\u003C\u002Fp>\n","A simple and flexible WooCommerce booking & reservation plugin to manage dates, availability and pricing on your products.",4000,338142,63,"2026-07-13T09:51:00.000Z","5.0",[19,20,21,119,23],"reservation","https:\u002F\u002Feasy-booking.pro\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwoocommerce-easy-booking-system.3.5.1.zip",{"attackSurface":123,"codeSignals":293,"taintFlows":364,"riskAssessment":922,"analyzedAt":927},{"hooks":124,"ajaxHandlers":249,"restRoutes":282,"shortcodes":283,"cronEvents":291,"entryPointCount":292,"unprotectedCount":13},[125,131,136,141,144,147,150,153,155,158,160,165,169,174,178,182,186,190,194,200,203,206,211,213,217,220,223,227,231,234,237,241,245],{"type":126,"name":127,"callback":128,"file":129,"line":130},"action","admin_enqueue_scripts","enqueue_assets","src\\Admin\\CalendarController.php",39,{"type":126,"name":132,"callback":133,"file":134,"line":135},"admin_init","handle_actions","src\\Admin\\CategoriesController.php",25,{"type":126,"name":137,"callback":138,"file":139,"line":140},"admin_menu","register_menus","src\\Admin\\MenuManager.php",45,{"type":126,"name":132,"callback":142,"file":139,"line":143},"handle_booking_actions",46,{"type":126,"name":127,"callback":145,"file":139,"line":146},"enqueue_admin_assets",47,{"type":126,"name":132,"callback":133,"file":148,"line":149},"src\\Admin\\ServicesController.php",41,{"type":126,"name":127,"callback":151,"file":148,"line":152},"enqueue_media_library",42,{"type":126,"name":132,"callback":133,"file":154,"line":97},"src\\Admin\\SettingsController.php",{"type":126,"name":132,"callback":133,"file":156,"line":157},"src\\Admin\\StaffController.php",38,{"type":126,"name":127,"callback":159,"file":156,"line":130},"enqueue_media_uploader",{"type":126,"name":161,"callback":162,"file":163,"line":164},"wp_enqueue_scripts","register_assets","src\\Elementor\\AssetsLoader.php",32,{"type":126,"name":166,"callback":167,"file":163,"line":168},"elementor\u002Ffrontend\u002Fafter_enqueue_scripts","enqueue_widget_assets",33,{"type":126,"name":170,"callback":171,"file":172,"line":173},"plugins_loaded","init","src\\Elementor\\ElementorLoader.php",43,{"type":126,"name":175,"callback":176,"file":172,"line":177},"admin_notices","admin_notice_minimum_elementor_version",58,{"type":126,"name":179,"callback":180,"file":172,"line":181},"elementor\u002Fwidgets\u002Fregister","register_widgets",66,{"type":126,"name":183,"callback":184,"file":172,"line":185},"elementor\u002Felements\u002Fcategories_registered","register_categories",69,{"type":126,"name":187,"callback":188,"file":172,"line":189},"elementor\u002Feditor\u002Fbefore_enqueue_scripts","editor_scripts",72,{"type":126,"name":191,"callback":192,"file":172,"line":193},"elementor\u002Fpreview\u002Fenqueue_styles","preview_styles",75,{"type":195,"name":196,"callback":197,"priority":33,"file":198,"line":199},"filter","block_categories_all","register_block_category","src\\Gutenberg\\GutenbergLoader.php",36,{"type":126,"name":171,"callback":201,"file":198,"line":202},"register_block",37,{"type":126,"name":204,"callback":205,"file":198,"line":157},"enqueue_block_editor_assets","enqueue_editor_data",{"type":126,"name":207,"callback":208,"file":209,"line":210},"woocommerce_order_status_processing","confirm_booking_from_order","src\\Integrations\\WooCommerceIntegration.php",24,{"type":126,"name":212,"callback":208,"file":209,"line":135},"woocommerce_order_status_completed",{"type":126,"name":214,"callback":215,"file":209,"line":216},"woocommerce_order_status_cancelled","cancel_booking_from_order",26,{"type":126,"name":218,"callback":215,"file":209,"line":219},"woocommerce_order_status_refunded",27,{"type":126,"name":221,"callback":215,"file":209,"line":222},"woocommerce_order_status_failed",28,{"type":126,"name":224,"callback":225,"file":209,"line":226},"woocommerce_product_query","hide_product_from_shop",31,{"type":195,"name":228,"callback":229,"priority":230,"file":209,"line":164},"woocommerce_order_item_name","customize_order_item_name",10,{"type":126,"name":170,"callback":232,"file":233,"line":216},"load_textdomain","src\\Plugin.php",{"type":126,"name":170,"callback":235,"file":233,"line":236},"maybe_install",29,{"type":126,"name":161,"callback":238,"file":239,"line":240},"enqueue_frontend_assets","src\\Presentation\\Frontend\\Shortcodes.php",55,{"type":195,"name":242,"callback":243,"file":244,"line":97},"wp_privacy_personal_data_exporters","register_exporter","src\\Privacy\\PersonalDataHandler.php",{"type":195,"name":246,"callback":247,"file":244,"line":248},"wp_privacy_personal_data_erasers","register_eraser",18,[250,256,259,262,265,268,270,274,276,280],{"action":251,"nopriv":252,"callback":253,"hasNonce":254,"hasCapCheck":254,"file":129,"line":255},"oryx_calendar_get_events",false,"ajax_get_events",true,35,{"action":257,"nopriv":252,"callback":258,"hasNonce":254,"hasCapCheck":254,"file":129,"line":199},"oryx_calendar_update_booking","ajax_update_booking",{"action":260,"nopriv":252,"callback":261,"hasNonce":254,"hasCapCheck":254,"file":129,"line":202},"oryx_calendar_delete_booking","ajax_delete_booking",{"action":263,"nopriv":252,"callback":264,"hasNonce":254,"hasCapCheck":254,"file":129,"line":157},"oryx_calendar_create_booking","ajax_create_booking",{"action":266,"nopriv":252,"callback":267,"hasNonce":254,"hasCapCheck":252,"file":239,"line":146},"oryx_bookings_get_slots","handle_get_slots",{"action":266,"nopriv":254,"callback":267,"hasNonce":254,"hasCapCheck":252,"file":239,"line":269},48,{"action":271,"nopriv":252,"callback":272,"hasNonce":254,"hasCapCheck":252,"file":239,"line":273},"oryx_bookings_create_booking","handle_create_booking",49,{"action":271,"nopriv":254,"callback":272,"hasNonce":254,"hasCapCheck":252,"file":239,"line":275},50,{"action":277,"nopriv":252,"callback":278,"hasNonce":254,"hasCapCheck":252,"file":239,"line":279},"oryx_bookings_get_available_dates","handle_get_available_dates",51,{"action":277,"nopriv":254,"callback":278,"hasNonce":254,"hasCapCheck":252,"file":239,"line":281},52,[],[284,287],{"tag":285,"callback":286,"file":239,"line":173},"oryx_bookings","render_booking_form",{"tag":288,"callback":289,"file":239,"line":290},"oryx_bookings_my_bookings","render_my_bookings",44,[],12,{"dangerousFunctions":294,"sqlUsage":295,"outputEscaping":342,"fileOperations":13,"externalRequests":33,"nonceChecks":222,"capabilityChecks":97,"bundledLibraries":363},[],{"prepared":296,"raw":297,"locations":298},101,19,[299,302,306,308,311,313,315,317,319,321,323,325,327,329,331,333,335,337,339],{"file":154,"line":300,"context":301},645,"$wpdb->get_results() with variable interpolation",{"file":303,"line":304,"context":305},"src\\Database\\Schema.php",186,"$wpdb->query() with variable interpolation",{"file":303,"line":307,"context":305},195,{"file":303,"line":309,"context":310},201,"$wpdb->get_var() with variable interpolation",{"file":303,"line":312,"context":305},204,{"file":303,"line":314,"context":305},213,{"file":303,"line":316,"context":305},220,{"file":303,"line":318,"context":305},229,{"file":303,"line":320,"context":305},236,{"file":303,"line":322,"context":305},245,{"file":303,"line":324,"context":305},252,{"file":303,"line":326,"context":305},261,{"file":303,"line":328,"context":305},268,{"file":303,"line":330,"context":305},277,{"file":303,"line":332,"context":305},279,{"file":303,"line":334,"context":305},288,{"file":303,"line":336,"context":305},290,{"file":303,"line":338,"context":305},299,{"file":340,"line":341,"context":301},"src\\Repositories\\StaffRepository.php",125,{"escaped":343,"rawEcho":344,"locations":345},1067,7,[346,349,351,353,356,359,361],{"file":139,"line":347,"context":348},275,"raw output",{"file":139,"line":350,"context":348},392,{"file":156,"line":352,"context":348},610,{"file":354,"line":355,"context":348},"src\\Elementor\\Widgets\\BookingFormWidget.php",1154,{"file":357,"line":358,"context":348},"src\\Gutenberg\\render.php",198,{"file":357,"line":360,"context":348},205,{"file":239,"line":362,"context":348},295,[],[365,382,391,400,408,417,426,440,452,464,473,485,496,527,536,545,563,587,608,618,630,656,666,687,752,760,777,791,841,858,875,892],{"entryPoint":366,"graph":367,"unsanitizedCount":13,"severity":381},"render_list (src\\Admin\\CategoriesController.php:152)",{"nodes":368,"edges":379},[369,374],{"id":370,"type":371,"label":372,"file":134,"line":373},"n0","source","$_GET['error']",174,{"id":375,"type":376,"label":377,"file":134,"line":373,"wp_function":378},"n1","sink","echo() [XSS]","echo",[380],{"from":370,"to":375,"sanitized":254},"low",{"entryPoint":383,"graph":384,"unsanitizedCount":13,"severity":381},"render_form (src\\Admin\\CategoriesController.php:226)",{"nodes":385,"edges":389},[386,388],{"id":370,"type":371,"label":372,"file":134,"line":387},248,{"id":375,"type":376,"label":377,"file":134,"line":387,"wp_function":378},[390],{"from":370,"to":375,"sanitized":254},{"entryPoint":392,"graph":393,"unsanitizedCount":13,"severity":381},"render_bookings_page (src\\Admin\\MenuManager.php:222)",{"nodes":394,"edges":398},[395,397],{"id":370,"type":371,"label":372,"file":139,"line":396},253,{"id":375,"type":376,"label":377,"file":139,"line":396,"wp_function":378},[399],{"from":370,"to":375,"sanitized":254},{"entryPoint":401,"graph":402,"unsanitizedCount":13,"severity":381},"\u003CMenuManager> (src\\Admin\\MenuManager.php:0)",{"nodes":403,"edges":406},[404,405],{"id":370,"type":371,"label":372,"file":139,"line":396},{"id":375,"type":376,"label":377,"file":139,"line":396,"wp_function":378},[407],{"from":370,"to":375,"sanitized":254},{"entryPoint":409,"graph":410,"unsanitizedCount":13,"severity":381},"render_list (src\\Admin\\ServicesController.php:261)",{"nodes":411,"edges":415},[412,414],{"id":370,"type":371,"label":372,"file":148,"line":413},283,{"id":375,"type":376,"label":377,"file":148,"line":413,"wp_function":378},[416],{"from":370,"to":375,"sanitized":254},{"entryPoint":418,"graph":419,"unsanitizedCount":13,"severity":381},"render_form (src\\Admin\\ServicesController.php:337)",{"nodes":420,"edges":424},[421,423],{"id":370,"type":371,"label":372,"file":148,"line":422},360,{"id":375,"type":376,"label":377,"file":148,"line":422,"wp_function":378},[425],{"from":370,"to":375,"sanitized":254},{"entryPoint":427,"graph":428,"unsanitizedCount":439,"severity":381},"save_security_settings (src\\Admin\\SettingsController.php:222)",{"nodes":429,"edges":437},[430,433],{"id":370,"type":371,"label":431,"file":154,"line":432},"$_POST (x23)",227,{"id":375,"type":376,"label":434,"file":154,"line":435,"wp_function":436},"update_option() [Settings Manipulation]",289,"update_option",[438],{"from":370,"to":375,"sanitized":252},23,{"entryPoint":441,"graph":442,"unsanitizedCount":451,"severity":381},"save_booking_lock_settings (src\\Admin\\SettingsController.php:326)",{"nodes":443,"edges":449},[444,447],{"id":370,"type":371,"label":445,"file":154,"line":446},"$_POST (x2)",331,{"id":375,"type":376,"label":434,"file":154,"line":448,"wp_function":436},339,[450],{"from":370,"to":375,"sanitized":252},2,{"entryPoint":453,"graph":454,"unsanitizedCount":463,"severity":381},"save_design_settings (src\\Admin\\SettingsController.php:346)",{"nodes":455,"edges":461},[456,459],{"id":370,"type":371,"label":457,"file":154,"line":458},"$_POST (x9)",375,{"id":375,"type":376,"label":434,"file":154,"line":460,"wp_function":436},376,[462],{"from":370,"to":375,"sanitized":252},9,{"entryPoint":465,"graph":466,"unsanitizedCount":13,"severity":381},"render_holidays_tab (src\\Admin\\SettingsController.php:635)",{"nodes":467,"edges":471},[468,470],{"id":370,"type":371,"label":372,"file":154,"line":469},664,{"id":375,"type":376,"label":377,"file":154,"line":469,"wp_function":378},[472],{"from":370,"to":375,"sanitized":254},{"entryPoint":474,"graph":475,"unsanitizedCount":484,"severity":381},"save_form_fields_settings (src\\Admin\\SettingsController.php:1525)",{"nodes":476,"edges":482},[477,480],{"id":370,"type":371,"label":478,"file":154,"line":479},"$_POST (x6)",1529,{"id":375,"type":376,"label":434,"file":154,"line":481,"wp_function":436},1537,[483],{"from":370,"to":375,"sanitized":252},6,{"entryPoint":486,"graph":487,"unsanitizedCount":33,"severity":381},"save_woocommerce_settings (src\\Admin\\SettingsController.php:2321)",{"nodes":488,"edges":494},[489,492],{"id":370,"type":371,"label":490,"file":154,"line":491},"$_POST",2325,{"id":375,"type":376,"label":434,"file":154,"line":493,"wp_function":436},2327,[495],{"from":370,"to":375,"sanitized":252},{"entryPoint":497,"graph":498,"unsanitizedCount":13,"severity":381},"\u003CSettingsController> (src\\Admin\\SettingsController.php:0)",{"nodes":499,"edges":522},[500,502,506,509,511,513,515,519],{"id":370,"type":371,"label":490,"file":154,"line":501},164,{"id":375,"type":376,"label":503,"file":154,"line":504,"wp_function":505},"get_var() [SQLi]",178,"get_var",{"id":507,"type":371,"label":508,"file":154,"line":432},"n2","$_POST (x41)",{"id":510,"type":376,"label":434,"file":154,"line":435,"wp_function":436},"n3",{"id":512,"type":371,"label":372,"file":154,"line":469},"n4",{"id":514,"type":376,"label":377,"file":154,"line":469,"wp_function":378},"n5",{"id":516,"type":371,"label":517,"file":154,"line":518},"n6","$_POST (x32)",231,{"id":520,"type":376,"label":377,"file":154,"line":521,"wp_function":378},"n7",798,[523,524,525,526],{"from":370,"to":375,"sanitized":254},{"from":507,"to":510,"sanitized":254},{"from":512,"to":514,"sanitized":254},{"from":516,"to":520,"sanitized":254},{"entryPoint":528,"graph":529,"unsanitizedCount":13,"severity":381},"render_list (src\\Admin\\StaffController.php:329)",{"nodes":530,"edges":534},[531,533],{"id":370,"type":371,"label":372,"file":156,"line":532},351,{"id":375,"type":376,"label":377,"file":156,"line":532,"wp_function":378},[535],{"from":370,"to":375,"sanitized":254},{"entryPoint":537,"graph":538,"unsanitizedCount":13,"severity":381},"render_form (src\\Admin\\StaffController.php:403)",{"nodes":539,"edges":543},[540,542],{"id":370,"type":371,"label":372,"file":156,"line":541},452,{"id":375,"type":376,"label":377,"file":156,"line":541,"wp_function":378},[544],{"from":370,"to":375,"sanitized":254},{"entryPoint":546,"graph":547,"unsanitizedCount":33,"severity":562},"ajax_update_booking (src\\Admin\\CalendarController.php:382)",{"nodes":548,"edges":559},[549,551,554],{"id":370,"type":371,"label":490,"file":129,"line":550},396,{"id":375,"type":552,"label":553,"file":129,"line":550},"transform","→ get_by_id()",{"id":507,"type":376,"label":555,"file":556,"line":557,"wp_function":558},"get_row() [SQLi]","src\\Repositories\\ServiceRepository.php",162,"get_row",[560,561],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},"high",{"entryPoint":564,"graph":565,"unsanitizedCount":33,"severity":562},"ajax_create_booking (src\\Admin\\CalendarController.php:557)",{"nodes":566,"edges":582},[567,569,571,573,575,577],{"id":370,"type":371,"label":490,"file":129,"line":568},624,{"id":375,"type":552,"label":570,"file":129,"line":568},"→ find()",{"id":507,"type":376,"label":555,"file":340,"line":572,"wp_function":558},102,{"id":510,"type":371,"label":490,"file":129,"line":574},630,{"id":512,"type":552,"label":576,"file":129,"line":574},"→ get_by_staff_and_weekday()",{"id":514,"type":376,"label":578,"file":579,"line":580,"wp_function":581},"get_results() [SQLi]","src\\Repositories\\AvailabilityRepository.php",124,"get_results",[583,584,585,586],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"from":510,"to":512,"sanitized":252},{"from":512,"to":514,"sanitized":254},{"entryPoint":588,"graph":589,"unsanitizedCount":451,"severity":562},"\u003CCalendarController> (src\\Admin\\CalendarController.php:0)",{"nodes":590,"edges":601},[591,592,593,594,595,596,597,598,599],{"id":370,"type":371,"label":490,"file":129,"line":550},{"id":375,"type":552,"label":553,"file":129,"line":550},{"id":507,"type":376,"label":555,"file":556,"line":557,"wp_function":558},{"id":510,"type":371,"label":490,"file":129,"line":568},{"id":512,"type":552,"label":570,"file":129,"line":568},{"id":514,"type":376,"label":555,"file":340,"line":572,"wp_function":558},{"id":516,"type":371,"label":490,"file":129,"line":574},{"id":520,"type":552,"label":576,"file":129,"line":574},{"id":600,"type":376,"label":578,"file":579,"line":580,"wp_function":581},"n8",[602,603,604,605,606,607],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"from":510,"to":512,"sanitized":252},{"from":512,"to":514,"sanitized":252},{"from":516,"to":520,"sanitized":252},{"from":520,"to":600,"sanitized":254},{"entryPoint":609,"graph":610,"unsanitizedCount":33,"severity":562},"handle_actions (src\\Admin\\CategoriesController.php:28)",{"nodes":611,"edges":615},[612,613,614],{"id":370,"type":371,"label":490,"file":134,"line":143},{"id":375,"type":552,"label":553,"file":134,"line":143},{"id":507,"type":376,"label":555,"file":556,"line":557,"wp_function":558},[616,617],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"entryPoint":619,"graph":620,"unsanitizedCount":33,"severity":562},"render (src\\Admin\\CategoriesController.php:117)",{"nodes":621,"edges":627},[622,625,626],{"id":370,"type":371,"label":623,"file":134,"line":624},"$_GET",133,{"id":375,"type":552,"label":553,"file":134,"line":624},{"id":507,"type":376,"label":555,"file":556,"line":557,"wp_function":558},[628,629],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"entryPoint":631,"graph":632,"unsanitizedCount":451,"severity":562},"\u003CCategoriesController> (src\\Admin\\CategoriesController.php:0)",{"nodes":633,"edges":649},[634,636,637,640,642,643,644,645,646,647],{"id":370,"type":371,"label":635,"file":134,"line":373},"$_GET['error'] (x2)",{"id":375,"type":376,"label":377,"file":134,"line":373,"wp_function":378},{"id":507,"type":371,"label":638,"file":134,"line":639},"$_GET (x4)",126,{"id":510,"type":376,"label":377,"file":134,"line":641,"wp_function":378},202,{"id":512,"type":371,"label":490,"file":134,"line":143},{"id":514,"type":552,"label":553,"file":134,"line":143},{"id":516,"type":376,"label":555,"file":556,"line":557,"wp_function":558},{"id":520,"type":371,"label":623,"file":134,"line":624},{"id":600,"type":552,"label":553,"file":134,"line":624},{"id":648,"type":376,"label":555,"file":556,"line":557,"wp_function":558},"n9",[650,651,652,653,654,655],{"from":370,"to":375,"sanitized":254},{"from":507,"to":510,"sanitized":254},{"from":512,"to":514,"sanitized":252},{"from":514,"to":516,"sanitized":252},{"from":520,"to":600,"sanitized":252},{"from":600,"to":648,"sanitized":252},{"entryPoint":657,"graph":658,"unsanitizedCount":33,"severity":562},"handle_actions (src\\Admin\\ServicesController.php:74)",{"nodes":659,"edges":663},[660,661,662],{"id":370,"type":371,"label":490,"file":148,"line":35},{"id":375,"type":552,"label":553,"file":148,"line":35},{"id":507,"type":376,"label":555,"file":556,"line":557,"wp_function":558},[664,665],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"entryPoint":667,"graph":668,"unsanitizedCount":686,"severity":562},"render (src\\Admin\\ServicesController.php:224)",{"nodes":669,"edges":681},[670,673,675,677,679,680],{"id":370,"type":371,"label":671,"file":148,"line":672},"$_GET (x2)",238,{"id":375,"type":552,"label":674,"file":148,"line":672},"→ render_form()",{"id":507,"type":376,"label":377,"file":156,"line":676,"wp_function":378},689,{"id":510,"type":371,"label":623,"file":148,"line":678},241,{"id":512,"type":552,"label":553,"file":148,"line":678},{"id":514,"type":376,"label":555,"file":556,"line":557,"wp_function":558},[682,683,684,685],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"from":510,"to":512,"sanitized":252},{"from":512,"to":514,"sanitized":252},3,{"entryPoint":688,"graph":689,"unsanitizedCount":751,"severity":562},"\u003CServicesController> (src\\Admin\\ServicesController.php:0)",{"nodes":690,"edges":737},[691,692,693,695,697,700,702,703,704,705,706,708,710,712,714,716,718,721,727,730,733],{"id":370,"type":371,"label":635,"file":148,"line":413},{"id":375,"type":376,"label":377,"file":148,"line":413,"wp_function":378},{"id":507,"type":371,"label":638,"file":148,"line":694},234,{"id":510,"type":376,"label":377,"file":148,"line":696,"wp_function":378},312,{"id":512,"type":371,"label":698,"file":148,"line":699},"$_POST (x3)",120,{"id":514,"type":376,"label":377,"file":148,"line":701,"wp_function":378},442,{"id":516,"type":371,"label":490,"file":148,"line":35},{"id":520,"type":552,"label":553,"file":148,"line":35},{"id":600,"type":376,"label":555,"file":556,"line":557,"wp_function":558},{"id":648,"type":371,"label":671,"file":148,"line":672},{"id":707,"type":552,"label":674,"file":148,"line":672},"n10",{"id":709,"type":376,"label":377,"file":156,"line":676,"wp_function":378},"n11",{"id":711,"type":371,"label":623,"file":148,"line":678},"n12",{"id":713,"type":552,"label":553,"file":148,"line":678},"n13",{"id":715,"type":376,"label":555,"file":556,"line":557,"wp_function":558},"n14",{"id":717,"type":371,"label":490,"file":148,"line":46},"n15",{"id":719,"type":552,"label":720,"file":148,"line":46},"n16","→ get_category_ids_for_service()",{"id":722,"type":376,"label":723,"file":724,"line":725,"wp_function":726},"n17","get_col() [SQLi]","src\\Repositories\\CategoryRepository.php",284,"get_col",{"id":728,"type":371,"label":490,"file":148,"line":729},"n18",530,{"id":731,"type":552,"label":732,"file":148,"line":729},"n19","→ get_staff_ids_for_service()",{"id":734,"type":376,"label":723,"file":735,"line":736,"wp_function":726},"n20","src\\Repositories\\ServiceStaffRepository.php",76,[738,739,740,741,742,743,744,745,746,747,748,749,750],{"from":370,"to":375,"sanitized":254},{"from":507,"to":510,"sanitized":254},{"from":512,"to":514,"sanitized":254},{"from":516,"to":520,"sanitized":252},{"from":520,"to":600,"sanitized":252},{"from":648,"to":707,"sanitized":252},{"from":707,"to":709,"sanitized":252},{"from":711,"to":713,"sanitized":252},{"from":713,"to":715,"sanitized":252},{"from":717,"to":719,"sanitized":252},{"from":719,"to":722,"sanitized":254},{"from":728,"to":731,"sanitized":252},{"from":731,"to":734,"sanitized":252},5,{"entryPoint":753,"graph":754,"unsanitizedCount":33,"severity":562},"add_company_day_off (src\\Admin\\SettingsController.php:157)",{"nodes":755,"edges":758},[756,757],{"id":370,"type":371,"label":490,"file":154,"line":501},{"id":375,"type":376,"label":503,"file":154,"line":504,"wp_function":505},[759],{"from":370,"to":375,"sanitized":252},{"entryPoint":761,"graph":762,"unsanitizedCount":686,"severity":562},"render (src\\Admin\\StaffController.php:222)",{"nodes":763,"edges":772},[764,766,767,768,770,771],{"id":370,"type":371,"label":623,"file":156,"line":765},244,{"id":375,"type":552,"label":570,"file":156,"line":765},{"id":507,"type":376,"label":555,"file":340,"line":572,"wp_function":558},{"id":510,"type":371,"label":671,"file":156,"line":769},247,{"id":512,"type":552,"label":674,"file":156,"line":769},{"id":514,"type":376,"label":377,"file":156,"line":676,"wp_function":378},[773,774,775,776],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"from":510,"to":512,"sanitized":252},{"from":512,"to":514,"sanitized":252},{"entryPoint":778,"graph":779,"unsanitizedCount":33,"severity":562},"add_staff_day_off (src\\Admin\\StaffController.php:752)",{"nodes":780,"edges":788},[781,783,785],{"id":370,"type":371,"label":490,"file":156,"line":782},774,{"id":375,"type":552,"label":784,"file":156,"line":782},"→ staff_day_off_exists()",{"id":507,"type":376,"label":503,"file":786,"line":787,"wp_function":505},"src\\Repositories\\DaysOffRepository.php",139,[789,790],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"entryPoint":792,"graph":793,"unsanitizedCount":751,"severity":562},"\u003CStaffController> (src\\Admin\\StaffController.php:0)",{"nodes":794,"edges":827},[795,796,797,800,802,804,806,807,808,809,810,811,812,814,816,818,820,822,824,825,826],{"id":370,"type":371,"label":635,"file":156,"line":532},{"id":375,"type":376,"label":377,"file":156,"line":532,"wp_function":378},{"id":507,"type":371,"label":798,"file":156,"line":799},"$_GET (x7)",242,{"id":510,"type":376,"label":377,"file":156,"line":801,"wp_function":378},379,{"id":512,"type":371,"label":698,"file":156,"line":803},160,{"id":514,"type":376,"label":377,"file":156,"line":805,"wp_function":378},476,{"id":516,"type":371,"label":623,"file":156,"line":765},{"id":520,"type":552,"label":570,"file":156,"line":765},{"id":600,"type":376,"label":555,"file":340,"line":572,"wp_function":558},{"id":648,"type":371,"label":671,"file":156,"line":769},{"id":707,"type":552,"label":674,"file":156,"line":769},{"id":709,"type":376,"label":377,"file":156,"line":676,"wp_function":378},{"id":711,"type":371,"label":623,"file":156,"line":813},412,{"id":713,"type":552,"label":815,"file":156,"line":813},"→ get_by_staff()",{"id":715,"type":376,"label":578,"file":579,"line":817,"wp_function":581},96,{"id":717,"type":371,"label":623,"file":156,"line":819},637,{"id":719,"type":552,"label":821,"file":156,"line":819},"→ get_staff_days_off()",{"id":722,"type":376,"label":578,"file":786,"line":823,"wp_function":581},89,{"id":728,"type":371,"label":490,"file":156,"line":782},{"id":731,"type":552,"label":784,"file":156,"line":782},{"id":734,"type":376,"label":503,"file":786,"line":787,"wp_function":505},[828,829,830,831,832,833,834,835,836,837,838,839,840],{"from":370,"to":375,"sanitized":254},{"from":507,"to":510,"sanitized":254},{"from":512,"to":514,"sanitized":254},{"from":516,"to":520,"sanitized":252},{"from":520,"to":600,"sanitized":252},{"from":648,"to":707,"sanitized":252},{"from":707,"to":709,"sanitized":252},{"from":711,"to":713,"sanitized":252},{"from":713,"to":715,"sanitized":254},{"from":717,"to":719,"sanitized":252},{"from":719,"to":722,"sanitized":252},{"from":728,"to":731,"sanitized":252},{"from":731,"to":734,"sanitized":252},{"entryPoint":842,"graph":843,"unsanitizedCount":451,"severity":562},"handle_get_slots (src\\Presentation\\Frontend\\Shortcodes.php:712)",{"nodes":844,"edges":853},[845,847,848,849,851,852],{"id":370,"type":371,"label":490,"file":239,"line":846},854,{"id":375,"type":552,"label":553,"file":239,"line":846},{"id":507,"type":376,"label":555,"file":556,"line":557,"wp_function":558},{"id":510,"type":371,"label":490,"file":239,"line":850},865,{"id":512,"type":552,"label":570,"file":239,"line":850},{"id":514,"type":376,"label":555,"file":340,"line":572,"wp_function":558},[854,855,856,857],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"from":510,"to":512,"sanitized":252},{"from":512,"to":514,"sanitized":252},{"entryPoint":859,"graph":860,"unsanitizedCount":451,"severity":562},"handle_get_available_dates (src\\Presentation\\Frontend\\Shortcodes.php:919)",{"nodes":861,"edges":870},[862,864,865,866,868,869],{"id":370,"type":371,"label":490,"file":239,"line":863},955,{"id":375,"type":552,"label":553,"file":239,"line":863},{"id":507,"type":376,"label":555,"file":556,"line":557,"wp_function":558},{"id":510,"type":371,"label":490,"file":239,"line":867},966,{"id":512,"type":552,"label":570,"file":239,"line":867},{"id":514,"type":376,"label":555,"file":340,"line":572,"wp_function":558},[871,872,873,874],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"from":510,"to":512,"sanitized":252},{"from":512,"to":514,"sanitized":252},{"entryPoint":876,"graph":877,"unsanitizedCount":451,"severity":562},"handle_create_booking (src\\Presentation\\Frontend\\Shortcodes.php:999)",{"nodes":878,"edges":887},[879,881,882,883,885,886],{"id":370,"type":371,"label":490,"file":239,"line":880},1152,{"id":375,"type":552,"label":553,"file":239,"line":880},{"id":507,"type":376,"label":555,"file":556,"line":557,"wp_function":558},{"id":510,"type":371,"label":490,"file":239,"line":884},1163,{"id":512,"type":552,"label":570,"file":239,"line":884},{"id":514,"type":376,"label":555,"file":340,"line":572,"wp_function":558},[888,889,890,891],{"from":370,"to":375,"sanitized":252},{"from":375,"to":507,"sanitized":252},{"from":510,"to":512,"sanitized":252},{"from":512,"to":514,"sanitized":252},{"entryPoint":893,"graph":894,"unsanitizedCount":344,"severity":562},"\u003CShortcodes> (src\\Presentation\\Frontend\\Shortcodes.php:0)",{"nodes":895,"edges":914},[896,898,900,901,902,903,904,905,906,909,911],{"id":370,"type":371,"label":490,"file":239,"line":897},768,{"id":375,"type":376,"label":377,"file":239,"line":899,"wp_function":378},1723,{"id":507,"type":371,"label":698,"file":239,"line":846},{"id":510,"type":552,"label":553,"file":239,"line":846},{"id":512,"type":376,"label":555,"file":556,"line":557,"wp_function":558},{"id":514,"type":371,"label":698,"file":239,"line":850},{"id":516,"type":552,"label":570,"file":239,"line":850},{"id":520,"type":376,"label":555,"file":340,"line":572,"wp_function":558},{"id":600,"type":371,"label":907,"file":239,"line":908},"$_SERVER",1650,{"id":648,"type":552,"label":910,"file":239,"line":908},"→ count_today_by_ip()",{"id":707,"type":376,"label":503,"file":912,"line":913,"wp_function":505},"src\\Repositories\\BookingRepository.php",302,[915,916,917,918,919,920,921],{"from":370,"to":375,"sanitized":254},{"from":507,"to":510,"sanitized":252},{"from":510,"to":512,"sanitized":252},{"from":514,"to":516,"sanitized":252},{"from":516,"to":520,"sanitized":252},{"from":600,"to":648,"sanitized":252},{"from":648,"to":707,"sanitized":252},{"summary":923,"deductions":924},"The Oryx Bookings plugin version 1.1.3 exhibits a generally strong security posture, with a significant emphasis on secure coding practices. The static analysis reveals a robust implementation of prepared statements for SQL queries (84%) and excellent output escaping (99%), significantly reducing the risk of common web vulnerabilities like SQL injection and cross-site scripting. The plugin also demonstrates a healthy use of nonce and capability checks, further hardening its entry points, which are all protected by authentication mechanisms.\n\nHowever, the taint analysis flags a concerning pattern. While no critical or high severity taint flows were identified, there are 17 high severity flows with unsanitized paths. This indicates a substantial number of instances where user-supplied data might be processed in a way that could lead to unexpected or insecure behavior, even if not immediately exploitable as a critical vulnerability. The absence of any known CVEs is a positive sign, suggesting a history of responsible development. Nonetheless, the high number of unsanitized paths in the taint analysis warrants careful investigation to ensure these flows do not represent potential security weaknesses.\n\nIn conclusion, Oryx Bookings version 1.1.3 has a commendable foundation in security. The developers have prioritized fundamental security controls like prepared statements and output escaping. The main area for improvement lies in thoroughly auditing and sanitizing the identified 17 high-severity taint flows. Addressing these could further solidify the plugin's security and prevent potential future vulnerabilities.",[925],{"reason":926,"points":97},"High severity taint flows with unsanitized paths","2026-03-16T23:53:46.331Z",{"wat":929,"direct":943},{"assetPaths":930,"generatorPatterns":933,"scriptPaths":934,"versionParams":940},[931,932],"\u002Fwp-content\u002Fplugins\u002Foryx-bookings\u002Fsrc\u002FPresentation\u002FAdmin\u002Fassets\u002Fcss\u002Fcalendar.css","\u002Fwp-content\u002Fplugins\u002Foryx-bookings\u002Fsrc\u002FPresentation\u002FAdmin\u002Fassets\u002Fjs\u002Fcalendar.js",[],[935,936,937,938,939,932],"\u002Fwp-content\u002Fplugins\u002Foryx-bookings\u002Fnode_modules\u002F@fullcalendar\u002Fcore\u002Findex.global.min.js","\u002Fwp-content\u002Fplugins\u002Foryx-bookings\u002Fnode_modules\u002F@fullcalendar\u002Fdaygrid\u002Findex.global.min.js","\u002Fwp-content\u002Fplugins\u002Foryx-bookings\u002Fnode_modules\u002F@fullcalendar\u002Ftimegrid\u002Findex.global.min.js","\u002Fwp-content\u002Fplugins\u002Foryx-bookings\u002Fnode_modules\u002F@fullcalendar\u002Flist\u002Findex.global.min.js","\u002Fwp-content\u002Fplugins\u002Foryx-bookings\u002Fnode_modules\u002F@fullcalendar\u002Finteraction\u002Findex.global.min.js",[941,942],"oryx-bookings\u002Fsrc\u002FPresentation\u002FAdmin\u002Fassets\u002Fcss\u002Fcalendar.css?ver=","oryx-bookings\u002Fsrc\u002FPresentation\u002FAdmin\u002Fassets\u002Fjs\u002Fcalendar.js?ver=",{"cssClasses":944,"htmlComments":946,"htmlAttributes":947,"restEndpoints":975,"jsGlobals":982,"shortcodeOutput":984},[945],"oryx-calendar-css",[],[948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974],"data-ajaxurl","data-nonce","data-staff","data-services","data-companydaysoff","data-closedweekdays","data-i18n-allstaff","data-i18n-allservices","data-i18n-editbooking","data-i18n-newbooking","data-i18n-provider","data-i18n-service","data-i18n-date","data-i18n-starttime","data-i18n-endtime","data-i18n-customername","data-i18n-customeremail","data-i18n-customerphone","data-i18n-internalnote","data-i18n-status","data-i18n-save","data-i18n-delete","data-i18n-close","data-i18n-pending","data-i18n-confirmed","data-i18n-cancelled","data-i18n-completed",[976,977,978,979,980,981],"\u002Fwp-json\u002Foryx-bookings\u002Fv1\u002Fbookings","\u002Fwp-json\u002Foryx-bookings\u002Fv1\u002Fstaff","\u002Fwp-json\u002Foryx-bookings\u002Fv1\u002Fservices","\u002Fwp-json\u002Foryx-bookings\u002Fv1\u002Favailability","\u002Fwp-json\u002Foryx-bookings\u002Fv1\u002Fcompany-days-off","\u002Fwp-json\u002Foryx-bookings\u002Fv1\u002Fcompany-working-hours",[983],"oryxCalendar",[],{"error":254,"url":986,"statusCode":987,"statusMessage":988,"message":988},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Foryx-bookings\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":484,"versions":990},[991,996,1003,1010,1017,1024],{"version":6,"download_url":25,"svn_tag_url":992,"released_at":27,"has_diff":252,"diff_files_changed":993,"diff_lines":27,"trac_diff_url":994,"vulnerabilities":995,"is_current":254},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Foryx-bookings\u002Ftags\u002F1.1.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Foryx-bookings%2Ftags%2F1.1.2&new_path=%2Foryx-bookings%2Ftags%2F1.1.3",[],{"version":997,"download_url":998,"svn_tag_url":999,"released_at":27,"has_diff":252,"diff_files_changed":1000,"diff_lines":27,"trac_diff_url":1001,"vulnerabilities":1002,"is_current":252},"1.1.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Foryx-bookings.1.1.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Foryx-bookings\u002Ftags\u002F1.1.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Foryx-bookings%2Ftags%2F1.1.1&new_path=%2Foryx-bookings%2Ftags%2F1.1.2",[],{"version":1004,"download_url":1005,"svn_tag_url":1006,"released_at":27,"has_diff":252,"diff_files_changed":1007,"diff_lines":27,"trac_diff_url":1008,"vulnerabilities":1009,"is_current":252},"1.1.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Foryx-bookings.1.1.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Foryx-bookings\u002Ftags\u002F1.1.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Foryx-bookings%2Ftags%2F1.1.0&new_path=%2Foryx-bookings%2Ftags%2F1.1.1",[],{"version":1011,"download_url":1012,"svn_tag_url":1013,"released_at":27,"has_diff":252,"diff_files_changed":1014,"diff_lines":27,"trac_diff_url":1015,"vulnerabilities":1016,"is_current":252},"1.1.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Foryx-bookings.1.1.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Foryx-bookings\u002Ftags\u002F1.1.0\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Foryx-bookings%2Ftags%2F1.0.1&new_path=%2Foryx-bookings%2Ftags%2F1.1.0",[],{"version":1018,"download_url":1019,"svn_tag_url":1020,"released_at":27,"has_diff":252,"diff_files_changed":1021,"diff_lines":27,"trac_diff_url":1022,"vulnerabilities":1023,"is_current":252},"1.0.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Foryx-bookings.1.0.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Foryx-bookings\u002Ftags\u002F1.0.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Foryx-bookings%2Ftags%2F1.0.0&new_path=%2Foryx-bookings%2Ftags%2F1.0.1",[],{"version":41,"download_url":1025,"svn_tag_url":1026,"released_at":27,"has_diff":252,"diff_files_changed":1027,"diff_lines":27,"trac_diff_url":27,"vulnerabilities":1028,"is_current":252},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Foryx-bookings.1.0.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Foryx-bookings\u002Ftags\u002F1.0.0\u002F",[],[]]