Polanger Ticket System for WooCommerce (Free)
Developer Hooks Reference

This file contains the full hook and filter list for the free plugin.
For a shorter overview, see readme.txt > "Available Hooks for Developers".

== Actions (do_action) ==

* PGTS_after_new_ticket_form - After the new-ticket template wrapper ends
* PGTS_after_ticket_category_priority - After category/priority fields block
* PGTS_after_ticket_created - After ticket row and first message are stored (AJAX create); args: ticket_id, message_id, data array
* PGTS_after_ticket_message_field - After message textarea (new ticket form)
* PGTS_after_ticket_notification - After new-ticket notification is sent; args: ticket_id, user_id
* PGTS_after_ticket_product_selection - After product/order selection block
* PGTS_after_ticket_submit - After submit button row (still inside form)
* PGTS_after_ticket_subject_field - After subject input
* PGTS_admin_composer_tools - Admin reply composer toolbar area; arg: ticket object
* PGTS_admin_message_after_content - After each message body in admin ticket view; args: message object, ticket object
* PGTS_admin_ticket_detail_modals - End of admin ticket detail (e.g. modals); arg: ticket object
* PGTS_admin_ticket_header_after_title - After title in admin ticket header; arg: ticket object
* PGTS_admin_ticket_sidebar_product_order - Sidebar product/order card area; args: ticket object, order object or null
* PGTS_before_new_ticket_form - Before new-ticket template output
* PGTS_before_render_new_ticket_form - Before rendering new-ticket form (PHP); arg: user_id
* PGTS_before_ticket_category_priority - Before category/priority fields
* PGTS_before_ticket_message_field - Before message field
* PGTS_before_ticket_product_selection - Before product selection block
* PGTS_before_ticket_submit - Before submit/actions row
* PGTS_before_ticket_subject_field - Before subject field
* PGTS_before_ticket_validation - Before server-side validation (AJAX create); arg: sanitized POST array
* PGTS_message_added - After a ticket message row is stored; args: message_id, ticket_id, message text, is_admin_reply bool, user_id
* PGTS_message_after_content - After each message body on customer ticket view; args: message object, ticket object
* PGTS_new_ticket_form_end - End of form (before closing template section)
* PGTS_new_ticket_form_start - Start of <form> (new ticket)
* PGTS_new_ticket_header - Inside form header next to title
* PGTS_reply_form_actions - Customer reply form actions area; arg: ticket object
* PGTS_reply_form_before_textarea - Before customer reply textarea; arg: ticket object
* PGTS_ticket_category_priority_fields - Inside category/priority row (extra fields)
* PGTS_ticket_created - When ticket row is inserted; args: ticket_id, data array
* PGTS_ticket_created_before_message - After ticket row, before first message insert; args: ticket_id, data array
* PGTS_ticket_closed - When status changes to closed or resolved (fires with ticket_closed action); args: ticket_id, ticket object
* PGTS_ticket_deleted - After permanent admin delete; args: ticket_id, ticket object
* PGTS_ticket_detail_after_category - Admin sidebar after category block; arg: ticket object
* PGTS_ticket_detail_after_messages - Customer view after messages list; arg: ticket object
* PGTS_ticket_detail_sidebar_after_customer - Admin sidebar after customer card; args: user_id, ticket object
* PGTS_ticket_form_actions_end - End of submit/actions row (new ticket)
* PGTS_ticket_form_actions_start - Start of submit/actions row (new ticket)
* PGTS_ticket_attachments_field - Extension point for attachment UI (free outputs nothing here; Pro uses it)
* PGTS_ticket_status_changed - After status update; args: ticket_id, new status, old status, ticket object
* PGTS_tickets_list_header_columns - Extra <th> cells in admin tickets table header
* PGTS_tickets_list_row_columns - Extra <td> cells per row; arg: ticket object
* PGTS_settings_tab_content_{$tab} - Settings page tab body (dynamic hook name; $tab is the tab slug)

== Filters (apply_filters) ==

* PGTS_new_ticket_categories - Categories array passed to new-ticket template; args: array, user_id
* PGTS_new_ticket_form_title - New ticket page <h2> text
* PGTS_new_ticket_orders - Orders-with-products for selection; args: array, user_id
* PGTS_new_ticket_priorities - Priorities array for new-ticket template; args: array, user_id
* PGTS_new_ticket_purchased_products - Purchased products for selection; args: array, user_id
* PGTS_new_ticket_template_data - Extra template variables; args: array, user_id
* PGTS_prevent_new_ticket_form - Return true to block rendering new-ticket form; args: false, user_id
* PGTS_purchase_order_statuses - WooCommerce order statuses accepted as valid purchases; default: completed, processing, on-hold
* PGTS_settings_tabs - Admin settings tabs array
* PGTS_template_path - Subfolder under your theme for template overrides (default: polanger-ticket-system-for-woocommerce/)
* PGTS_ticket_categories - Global categories list (from options/DB)
* PGTS_ticket_created_response - AJAX JSON after ticket created
* PGTS_ticket_custom_fields_data - Custom field values merged into ticket creation; args: array, sanitized POST
* PGTS_ticket_default_priority - Default selected priority slug (default: normal)
* PGTS_ticket_message_minlength - Min message length (validation + HTML attribute)
* PGTS_ticket_message_placeholder - Message textarea placeholder
* PGTS_ticket_message_rows - Textarea rows attribute
* PGTS_ticket_priorities - Global priorities list
* PGTS_ticket_statuses - Status slug => label map
* PGTS_ticket_subject_maxlength - Subject max length attribute
* PGTS_ticket_subject_minlength - Min subject length (validation + HTML attribute)
* PGTS_ticket_subject_placeholder - Subject input placeholder
* PGTS_ticket_submit_button_text - New ticket submit button label
* PGTS_ticket_validation_error - Return WP_Error or string to fail validation; args: null, sanitized POST
