From 265bb0e29999f4938f218b3f199f5f91e2b7ec73 Mon Sep 17 00:00:00 2001 From: Sebastian Pedersen Date: Wed, 16 Jul 2025 13:19:42 -0700 Subject: [PATCH 1/3] `gpnf-sort-nested-form-entries.php`: Added support for sorting by Date fields. --- .../gpnf-sort-nested-form-entries.php | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gp-nested-forms/gpnf-sort-nested-form-entries.php b/gp-nested-forms/gpnf-sort-nested-form-entries.php index 154d8f1e7..4c44fd112 100644 --- a/gp-nested-forms/gpnf-sort-nested-form-entries.php +++ b/gp-nested-forms/gpnf-sort-nested-form-entries.php @@ -17,6 +17,7 @@ class GPNF_Sort_Nested_Entries { private $_args = array(); + private $_is_date_field = false; public function __construct( $args = array() ) { $this->_args = wp_parse_args( $args, array( @@ -30,10 +31,26 @@ public function __construct( $args = array() ) { } public function init() { + $this->_is_date_field = $this->is_date_field(); add_filter( "gpnf_template_args_{$this->_args['parent_form_id']}_{$this->_args['nested_field_id']}", array( $this, 'sort_entries_php' ) ); add_filter( 'gform_pre_render', array( $this, 'load_form_script' ), 10, 2 ); } + private function is_date_field() { + $nested_field = GFAPI::get_field( $this->_args['parent_form_id'], $this->_args['nested_field_id'] ); + if ( ! $nested_field || empty( $nested_field->gpnfForm ) ) { + return false; + } + + $child_form = GFAPI::get_form( $nested_field->gpnfForm ); + if ( ! $child_form ) { + return false; + } + + $sort_field = GFAPI::get_field( $child_form, $this->_args['sort_field_id'] ); + return $sort_field && $sort_field->type === 'date'; + } + public function sort_entries_php( $args ) { $field_id = $this->_args['sort_field_id']; $order = strtolower( $this->_args['sort_order'] ); @@ -47,6 +64,11 @@ public function sort_entries_php( $args ) { return 0; } + if ( $this->_is_date_field ) { + $first = strtotime( $first ); + $second = strtotime( $second ); + } + if ( $order === 'asc' ) { return ( $first < $second ) ? -1 : 1; } else { @@ -73,6 +95,7 @@ public function output_script() { 'nestedFieldId' => (int) $this->_args['nested_field_id'], 'sortFieldId' => (int) $this->_args['sort_field_id'], 'sortOrder' => strtolower( $this->_args['sort_order'] ), + 'isDateField' => $this->_is_date_field, ); ?> @@ -80,6 +103,7 @@ public function output_script() { (function($) { const sortFieldId = ""; const sortOrder = ""; + const isDateField = ; window.gform.addFilter('gpnf_sorted_entries', function(entries, formId, fieldId, gpnf) { if (!entries || !entries.length || !entries[0][sortFieldId]) { @@ -91,6 +115,16 @@ public function output_script() { let valA = a[sortFieldId]?.label || ''; let valB = b[sortFieldId]?.label || ''; + if (isDateField) { + const dateA = new Date(valA); + const dateB = new Date(valB); + + if (sortOrder === 'desc') { + return dateB - dateA; + } + return dateA - dateB; + } + if (sortOrder === 'desc') { return valB.localeCompare(valA); } From 295a85ad9c5de160715d2137eb90ec1fe4f83849 Mon Sep 17 00:00:00 2001 From: SebastianWiz <165194375+SebastianWiz@users.noreply.github.com> Date: Thu, 17 Jul 2025 15:35:32 -0700 Subject: [PATCH 2/3] `gpnf-sort-nested-form-entries.php`: Added support for sorting by Date fields. --- gp-nested-forms/gpnf-sort-nested-form-entries.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gp-nested-forms/gpnf-sort-nested-form-entries.php b/gp-nested-forms/gpnf-sort-nested-form-entries.php index 4c44fd112..3594290cb 100644 --- a/gp-nested-forms/gpnf-sort-nested-form-entries.php +++ b/gp-nested-forms/gpnf-sort-nested-form-entries.php @@ -119,10 +119,13 @@ public function output_script() { const dateA = new Date(valA); const dateB = new Date(valB); + const timeA = isNaN(dateA.getTime()) ? 0 : dateA.getTime(); + const timeB = isNaN(dateB.getTime()) ? 0 : dateB.getTime(); + if (sortOrder === 'desc') { - return dateB - dateA; + return timeB - timeA; } - return dateA - dateB; + return timeA - timeB; } if (sortOrder === 'desc') { From d23a5279230a0abe8824dc69f499158631853f90 Mon Sep 17 00:00:00 2001 From: SebastianWiz <165194375+SebastianWiz@users.noreply.github.com> Date: Thu, 17 Jul 2025 16:31:43 -0700 Subject: [PATCH 3/3] `gpnf-sort-nested-form-entries.php`: Added support for sorting by Date fields. --- gp-nested-forms/gpnf-sort-nested-form-entries.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gp-nested-forms/gpnf-sort-nested-form-entries.php b/gp-nested-forms/gpnf-sort-nested-form-entries.php index 3594290cb..83995cc0e 100644 --- a/gp-nested-forms/gpnf-sort-nested-form-entries.php +++ b/gp-nested-forms/gpnf-sort-nested-form-entries.php @@ -65,8 +65,11 @@ public function sort_entries_php( $args ) { } if ( $this->_is_date_field ) { - $first = strtotime( $first ); - $second = strtotime( $second ); + $first_time = strtotime( $first ); + $second_time = strtotime( $second ); + + $first = ( $first_time !== false ) ? $first_time : 0; + $second = ( $second_time !== false ) ? $second_time : 0; } if ( $order === 'asc' ) {