@@ -133,6 +133,39 @@ public static function render_admin_page() {
133133 ?>
134134 </p>
135135
136+ <h2>Advanced Options</h2>
137+ <p>
138+ <label>
139+ <input
140+ type="checkbox"
141+ id="use_date_range"
142+ name="use_date_range"
143+ <?php disabled ( $ current_job instanceof AsyncJob ); ?>
144+ />
145+ Specify date range for generation
146+ </label>
147+ </p>
148+ <div id="date_range_inputs" style="display: none;">
149+ <p>
150+ <label for="generate_start_date_input">Start date</label>
151+ <input
152+ id="generate_start_date_input"
153+ type="date"
154+ name="start_date"
155+ value="<?php echo esc_attr ( date ( 'Y-m-d ' ) ); ?> "
156+ <?php disabled ( $ current_job instanceof AsyncJob ); ?>
157+ />
158+ <label for="generate_end_date_input">End date</label>
159+ <input
160+ id="generate_end_date_input"
161+ type="date"
162+ name="end_date"
163+ value="<?php echo esc_attr ( date ( 'Y-m-d ' ) ); ?> "
164+ <?php disabled ( $ current_job instanceof AsyncJob ); ?>
165+ />
166+ </p>
167+ </div>
168+
136169 <?php
137170 submit_button (
138171 'Cancel current job ' ,
@@ -146,6 +179,24 @@ public static function render_admin_page() {
146179 <?php
147180
148181 self ::heartbeat_script ();
182+ self ::date_range_toggle_script ();
183+ }
184+
185+ /**
186+ * Script to toggle date range inputs visibility.
187+ *
188+ * @return void
189+ */
190+ protected static function date_range_toggle_script () {
191+ ?>
192+ <script>
193+ ( function( $ ) {
194+ $( '#use_date_range' ).on( 'change', function() {
195+ $( '#date_range_inputs' ).toggle( this.checked );
196+ } );
197+ } )( jQuery );
198+ </script>
199+ <?php
149200 }
150201
151202 /**
@@ -159,7 +210,7 @@ protected static function heartbeat_script() {
159210 ( function( $ ) {
160211 const $document = $( document );
161212 const $progress = $( '#smoothgenerator-progress-bar' );
162- const $controls = $( '[id^="generate_"]' );
213+ const $controls = $( '[id^="generate_"], #use_date_range, #date_range_inputs input ' );
163214 const $cancel = $( '#cancel_job' );
164215
165216 $document.on( 'ready', function () {
@@ -232,14 +283,21 @@ public static function receive_heartbeat( array $response, array $data, $screen_
232283 * Process the generation.
233284 */
234285 public static function process_page_submit () {
286+ $ args = array ();
287+
288+ if ( ! empty ( $ _POST ['use_date_range ' ] ) ) {
289+ $ args ['date-start ' ] = sanitize_text_field ( $ _POST ['start_date ' ] );
290+ $ args ['date-end ' ] = sanitize_text_field ( $ _POST ['end_date ' ] );
291+ }
292+
235293 if ( ! empty ( $ _POST ['generate_products ' ] ) && ! empty ( $ _POST ['num_products_to_generate ' ] ) ) {
236294 check_admin_referer ( 'generate ' , 'smoothgenerator_nonce ' );
237295 $ num_to_generate = absint ( $ _POST ['num_products_to_generate ' ] );
238- BatchProcessor::create_new_job ( 'products ' , $ num_to_generate );
296+ BatchProcessor::create_new_job ( 'products ' , $ num_to_generate, $ args );
239297 } else if ( ! empty ( $ _POST ['generate_orders ' ] ) && ! empty ( $ _POST ['num_orders_to_generate ' ] ) ) {
240298 check_admin_referer ( 'generate ' , 'smoothgenerator_nonce ' );
241299 $ num_to_generate = absint ( $ _POST ['num_orders_to_generate ' ] );
242- BatchProcessor::create_new_job ( 'orders ' , $ num_to_generate );
300+ BatchProcessor::create_new_job ( 'orders ' , $ num_to_generate, $ args );
243301 } else if ( ! empty ( $ _POST ['cancel_job ' ] ) ) {
244302 check_admin_referer ( 'generate ' , 'smoothgenerator_nonce ' );
245303 BatchProcessor::delete_current_job ();
0 commit comments