From 08d4627ddb8897f7b146cae34f8331cde6a612d0 Mon Sep 17 00:00:00 2001 From: sbassah Date: Thu, 19 Jan 2023 05:29:27 +0000 Subject: [PATCH 1/6] `gw-update-posts.php`: Added support to update post date and time. --- gravity-forms/gw-update-posts.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gravity-forms/gw-update-posts.php b/gravity-forms/gw-update-posts.php index 0b8b6165c..5a85dfda4 100644 --- a/gravity-forms/gw-update-posts.php +++ b/gravity-forms/gw-update-posts.php @@ -92,6 +92,31 @@ public function update_post_by_entry( $entry, $form ) { $post->post_name = rgar( $entry, $this->_args['slug'] ); } + if ( $this->_args['date_time'] ) { + $date = $this->_args['date_time']['date']; + $time = $this->_args['date_time']['time']; + + $date = rgar( $entry, $date ); + $time = rgar( $entry, $time ); + + if ( empty( $date ) ) { + $date = explode( ' ', $post->post_date )[0]; + } + + if ( $time ) { + list( $hour, $min, $am_pm ) = array_pad( preg_split( '/[: ]/', $time ), 3, false ); + if ( strtolower( $am_pm ) == 'pm' ) { + $hour += 12; + } + } else { + $hour = '00'; + $min = '00'; + } + + $new_date_time = date( 'Y-m-d H:i:s', strtotime( sprintf( '%s %s:%s:00', $date, $hour, $min ) ) ); + $post->post_date = $new_date_time; + } + if ( $this->_args['featured_image'] && is_callable( 'gp_media_library' ) ) { if ( rgar( $entry, $this->_args['featured_image'] ) ) { $image_id = gp_media_library()->get_file_ids( $entry['id'], $this->_args['featured_image'], 0 ); From 70b9c6422cdee4d7f58ba630dd7b70ccea5a5d3f Mon Sep 17 00:00:00 2001 From: sbassah Date: Thu, 19 Jan 2023 05:51:41 +0000 Subject: [PATCH 2/6] `gw-update-posts.php`: Added support to update post date gmt. --- gravity-forms/gw-update-posts.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gravity-forms/gw-update-posts.php b/gravity-forms/gw-update-posts.php index 5a85dfda4..e32bbbeb2 100644 --- a/gravity-forms/gw-update-posts.php +++ b/gravity-forms/gw-update-posts.php @@ -113,8 +113,9 @@ public function update_post_by_entry( $entry, $form ) { $min = '00'; } - $new_date_time = date( 'Y-m-d H:i:s', strtotime( sprintf( '%s %s:%s:00', $date, $hour, $min ) ) ); - $post->post_date = $new_date_time; + $new_date_time = date( 'Y-m-d H:i:s', strtotime( sprintf( '%s %s:%s:00', $date, $hour, $min ) ) ); + $post->post_date = $new_date_time; + $post->post_date_gmt = get_gmt_from_date( $new_date_time ); } if ( $this->_args['featured_image'] && is_callable( 'gp_media_library' ) ) { From ffd402005c6916e6ba414ae66c503b025cef79ec Mon Sep 17 00:00:00 2001 From: sbassah Date: Thu, 19 Jan 2023 14:59:22 +0000 Subject: [PATCH 3/6] `gw-update-posts.php`: Made requested changes. --- gravity-forms/gw-update-posts.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/gravity-forms/gw-update-posts.php b/gravity-forms/gw-update-posts.php index e32bbbeb2..b3a8a22f2 100644 --- a/gravity-forms/gw-update-posts.php +++ b/gravity-forms/gw-update-posts.php @@ -97,7 +97,7 @@ public function update_post_by_entry( $entry, $form ) { $time = $this->_args['date_time']['time']; $date = rgar( $entry, $date ); - $time = rgar( $entry, $time ); + $time = rgar( $entry, $time, '00:00 am' ); if ( empty( $date ) ) { $date = explode( ' ', $post->post_date )[0]; @@ -108,12 +108,9 @@ public function update_post_by_entry( $entry, $form ) { if ( strtolower( $am_pm ) == 'pm' ) { $hour += 12; } - } else { - $hour = '00'; - $min = '00'; } - $new_date_time = date( 'Y-m-d H:i:s', strtotime( sprintf( '%s %s:%s:00', $date, $hour, $min ) ) ); + $new_date_time = gmdate( 'Y-m-d H:i:s', strtotime( sprintf( '%s %s:%s:00', $date, $hour, $min ) ) ); $post->post_date = $new_date_time; $post->post_date_gmt = get_gmt_from_date( $new_date_time ); } From 0c2709dafcbe3e1bdce08cc365472874c6413ba6 Mon Sep 17 00:00:00 2001 From: sbassah Date: Wed, 1 Feb 2023 08:32:22 +0000 Subject: [PATCH 4/6] `gw-update-posts.php`: Added support to set post date. --- gravity-forms/gw-update-posts.php | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/gravity-forms/gw-update-posts.php b/gravity-forms/gw-update-posts.php index b3a8a22f2..745b73bc8 100644 --- a/gravity-forms/gw-update-posts.php +++ b/gravity-forms/gw-update-posts.php @@ -27,6 +27,7 @@ public function __construct( $args = array() ) { 'terms' => array(), 'meta' => array(), 'featured_image' => false, + 'post_date' => false, // If property is mapped but no entry value is submitted, delete the property. // Currently only works with 'featured_image' and custom fields specified in 'meta'. 'delete_if_empty' => false, @@ -92,17 +93,25 @@ public function update_post_by_entry( $entry, $form ) { $post->post_name = rgar( $entry, $this->_args['slug'] ); } - if ( $this->_args['date_time'] ) { - $date = $this->_args['date_time']['date']; - $time = $this->_args['date_time']['time']; - - $date = rgar( $entry, $date ); - $time = rgar( $entry, $time, '00:00 am' ); - - if ( empty( $date ) ) { - $date = explode( ' ', $post->post_date )[0]; + if ( $this->_args['post_date'] ) { + $post_date = array(); + if ( ! is_array( $this->_args['post_date'] ) ) { + + $field_one = GFAPI::get_field( $form, $this->_args['post_date'] ); + if ( $field_one->get_input_type() === 'date' ) { + $post_date['date'] = $this->_args['post_date']; + $post_date['time'] = ''; + } elseif ( $field_one->get_input_type() === 'time' ) { + $post_date['time'] = $this->_args['post_date']; + $post_date['date'] = ''; + } + } else { + $post_date = $this->_args['post_date']; } + $date = rgar( $entry, $post_date['date'], gmdate( 'm/d/Y' ) ); + $time = rgar( $entry, $post_date['time'], '00:00 am' ); + if ( $time ) { list( $hour, $min, $am_pm ) = array_pad( preg_split( '/[: ]/', $time ), 3, false ); if ( strtolower( $am_pm ) == 'pm' ) { From 7de91ddcf5e7b5c16ab21d0c6af046d2d0096e98 Mon Sep 17 00:00:00 2001 From: David Smith Date: Wed, 1 Feb 2023 12:03:10 -0500 Subject: [PATCH 5/6] ~ Functionality was getting beefy so I split it into its own function and tweaked slightly. --- gravity-forms/gw-update-posts.php | 60 +++++++++++++++++-------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/gravity-forms/gw-update-posts.php b/gravity-forms/gw-update-posts.php index 745b73bc8..d221019ca 100644 --- a/gravity-forms/gw-update-posts.php +++ b/gravity-forms/gw-update-posts.php @@ -27,7 +27,10 @@ public function __construct( $args = array() ) { 'terms' => array(), 'meta' => array(), 'featured_image' => false, - 'post_date' => false, + 'post_date' => array( + 'date' => false, + 'time' => false, + ), // If property is mapped but no entry value is submitted, delete the property. // Currently only works with 'featured_image' and custom fields specified in 'meta'. 'delete_if_empty' => false, @@ -94,32 +97,7 @@ public function update_post_by_entry( $entry, $form ) { } if ( $this->_args['post_date'] ) { - $post_date = array(); - if ( ! is_array( $this->_args['post_date'] ) ) { - - $field_one = GFAPI::get_field( $form, $this->_args['post_date'] ); - if ( $field_one->get_input_type() === 'date' ) { - $post_date['date'] = $this->_args['post_date']; - $post_date['time'] = ''; - } elseif ( $field_one->get_input_type() === 'time' ) { - $post_date['time'] = $this->_args['post_date']; - $post_date['date'] = ''; - } - } else { - $post_date = $this->_args['post_date']; - } - - $date = rgar( $entry, $post_date['date'], gmdate( 'm/d/Y' ) ); - $time = rgar( $entry, $post_date['time'], '00:00 am' ); - - if ( $time ) { - list( $hour, $min, $am_pm ) = array_pad( preg_split( '/[: ]/', $time ), 3, false ); - if ( strtolower( $am_pm ) == 'pm' ) { - $hour += 12; - } - } - - $new_date_time = gmdate( 'Y-m-d H:i:s', strtotime( sprintf( '%s %s:%s:00', $date, $hour, $min ) ) ); + $new_date_time = $this->get_post_date( $entry, $form ); $post->post_date = $new_date_time; $post->post_date_gmt = get_gmt_from_date( $new_date_time ); } @@ -231,4 +209,32 @@ public function return_ids_instead_of_names( $value, $field, $template_name, $po return $value; } + public function get_post_date( $entry, $form ) { + + $post_date = $this->_args['post_date']; + + if ( ! is_array( $this->_args['post_date'] ) ) { + $post_date_field = GFAPI::get_field( $form, $this->_args['post_date'] ); + if ( $post_date_field->get_input_type() === 'date' ) { + $post_date['date'] = $this->_args['post_date']; + $post_date['time'] = ''; + } elseif ( $post_date_field->get_input_type() === 'time' ) { + $post_date['time'] = $this->_args['post_date']; + $post_date['date'] = ''; + } + } + + $date = rgar( $entry, $post_date['date'], gmdate( 'm/d/Y' ) ); + $time = rgar( $entry, $post_date['time'], '00:00 am' ); + + if ( $time ) { + list( $hour, $min, $am_pm ) = array_pad( preg_split( '/[: ]/', $time ), 3, false ); + if ( strtolower( $am_pm ) == 'pm' ) { + $hour += 12; + } + } + + return gmdate( 'Y-m-d H:i:s', strtotime( sprintf( '%s %s:%s:00', $date, $hour, $min ) ) ); + } + } From dbb7bd7e479a8b49f3bf9b141cabc983ad6e7380 Mon Sep 17 00:00:00 2001 From: David Smith Date: Thu, 2 Feb 2023 11:24:43 -0500 Subject: [PATCH 6/6] ~ Fixed notice. --- gravity-forms/gw-update-posts.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/gravity-forms/gw-update-posts.php b/gravity-forms/gw-update-posts.php index d221019ca..99a280048 100644 --- a/gravity-forms/gw-update-posts.php +++ b/gravity-forms/gw-update-posts.php @@ -211,8 +211,6 @@ public function return_ids_instead_of_names( $value, $field, $template_name, $po public function get_post_date( $entry, $form ) { - $post_date = $this->_args['post_date']; - if ( ! is_array( $this->_args['post_date'] ) ) { $post_date_field = GFAPI::get_field( $form, $this->_args['post_date'] ); if ( $post_date_field->get_input_type() === 'date' ) {