| @@ -20,8 +20,9 @@ | ||
| 20 | 20 | // Schedule cron jobs. |
| 21 | 21 | add_action( 'init', array( __CLASS__, 'schedule_events' ) ); |
| 22 | 22 | |
| 23 | 23 | // cron event callbacks. |
| 24 | + add_action( 'wpsc_auto_archive_closed_tickets', array( __CLASS__, 'auto_archive_closed_tickets' ) ); | |
| 24 | 25 | add_action( 'wpsc_permanently_delete_archive_tickets', array( __CLASS__, 'permanently_delete_archive_tickets' ) ); |
| 25 | 26 | add_action( 'wpsc_permanently_delete_tickets', array( __CLASS__, 'permanently_delete_tickets' ) ); |
| 26 | 27 | |
| 27 | 28 | // run background processes. |
| @@ -85,10 +86,13 @@ | ||
| 85 | 86 | 'wpsc_license_checker' |
| 86 | 87 | ); |
| 87 | 88 | } |
| 88 | 89 | |
| 89 | - // Auto-archive closed tickets cron has been disabled. | |
| 90 | - wp_clear_scheduled_hook( 'wpsc_auto_archive_closed_tickets' ); | |
| 90 | + // Auto-archive closed tickets. | |
| 91 | + $auto_archive_time = isset( $advanced['auto-archive-tickets-time'] ) ? $advanced['auto-archive-tickets-time'] : 0; | |
| 92 | + if ( $auto_archive_time > 0 && ! wp_next_scheduled( 'wpsc_auto_archive_closed_tickets' ) ) { | |
| 93 | + wp_schedule_single_event( time(), 'wpsc_auto_archive_closed_tickets' ); | |
| 94 | + } | |
| 91 | 95 | |
| 92 | 96 | // Permanently delete archive tickets. |
| 93 | 97 | $permanent_archive_time = isset( $advanced['permanent-archive-tickets-time'] ) ? $advanced['permanent-archive-tickets-time'] : 0; |
| 94 | 98 | if ( $permanent_archive_time > 0 && ! wp_next_scheduled( 'wpsc_permanently_delete_archive_tickets' ) ) { |
| @@ -129,11 +133,8 @@ | ||
| 129 | 133 | $timestamp = wp_next_scheduled( 'wpsc_cron_daily' ); |
| 130 | 134 | if ( $timestamp ) { |
| 131 | 135 | wp_unschedule_event( $timestamp, 'wpsc_cron_daily' ); |
| 132 | 136 | } |
| 133 | - | |
| 134 | - // Remove auto-archive closed tickets cron. | |
| 135 | - wp_clear_scheduled_hook( 'wpsc_auto_archive_closed_tickets' ); | |
| 136 | 137 | } |
| 137 | 138 | |
| 138 | 139 | /** |
| 139 | 140 | * Provide mid-night unix timestamp |
| @@ -182,32 +183,28 @@ | ||
| 182 | 183 | break; |
| 183 | 184 | } |
| 184 | 185 | |
| 185 | 186 | // Arguments for fetching closed tickets to be archived. |
| 186 | - $args = array( | |
| 187 | + $filters = array( | |
| 187 | 188 | 'items_per_page' => 20, |
| 188 | 189 | 'orderby' => 'date_closed', |
| 189 | 190 | 'order' => 'ASC', |
| 190 | - ); | |
| 191 | - | |
| 192 | - // Add closed status condition in arguments. | |
| 193 | - $filters = array( 'relation' => 'AND' ); | |
| 194 | - $filters[] = array( | |
| 195 | - array( | |
| 196 | - 'slug' => 'status', | |
| 197 | - 'compare' => 'IN', | |
| 198 | - 'val' => $ad_settings['closed-ticket-statuses'], | |
| 191 | + 'meta_query' => array( | |
| 192 | + 'relation' => 'AND', | |
| 193 | + array( | |
| 194 | + 'slug' => 'status', | |
| 195 | + 'compare' => 'IN', | |
| 196 | + 'val' => $ad_settings['closed-ticket-statuses'], | |
| 197 | + ), | |
| 198 | + array( | |
| 199 | + 'slug' => 'date_closed', | |
| 200 | + 'compare' => '<', | |
| 201 | + 'val' => $age->format( 'Y-m-d' ), | |
| 202 | + ), | |
| 199 | 203 | ), |
| 200 | - array( | |
| 201 | - 'slug' => 'date_closed', | |
| 202 | - 'compare' => '<', | |
| 203 | - 'val' => $age->format( 'Y-m-d' ), | |
| 204 | - ), | |
| 205 | 204 | ); |
| 206 | 205 | |
| 207 | - $filters = array_merge( $args, array( 'meta_query' => $filters ) ); | |
| 208 | 206 | $filters = apply_filters( 'wpsc_auto_archive_closed_tickets_query', $filters ); |
| 209 | - | |
| 210 | 207 | // Get tickets to be archive. |
| 211 | 208 | $tickets = WPSC_Ticket::find( $filters ); |
| 212 | 209 | |
| 213 | 210 | // Archive tickets. |