prefix . 'dpsupport_tickets'; $from = wp_date( 'Y-m-d 00:00:00', time() - ( ( $days - 1 ) * DAY_IN_SECONDS ) ); $counts = array( 'active' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM %i WHERE archived_at IS NULL AND status NOT IN ('resolved','closed')", $table ) ), 'new' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM %i WHERE archived_at IS NULL AND status = 'new'", $table ) ), 'open' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM %i WHERE archived_at IS NULL AND status = 'open'", $table ) ), 'resolved' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM %i WHERE archived_at IS NULL AND status IN ('resolved','closed')", $table ) ), 'period' => (int) $wpdb->get_var( $wpdb->prepare( 'SELECT COUNT(*) FROM %i WHERE created_at >= %s', $table, $from ) ), ); $daily_rows = $wpdb->get_results( $wpdb->prepare( 'SELECT DATE(created_at) AS day, COUNT(*) AS amount FROM %i WHERE created_at >= %s GROUP BY DATE(created_at) ORDER BY day ASC', $table, $from ) ); $daily_map = array(); foreach ( (array) $daily_rows as $row ) { $daily_map[ (string) $row->day ] = absint( $row->amount ); } $daily = array(); for ( $i = $days - 1; $i >= 0; $i-- ) { $key = wp_date( 'Y-m-d', time() - ( $i * DAY_IN_SECONDS ) ); $daily[] = array( 'day' => $key, 'label' => wp_date( 'd.m.', strtotime( $key . ' 12:00:00' ) ), 'value' => absint( $daily_map[ $key ] ?? 0 ), ); } return array( 'counts' => $counts, 'daily' => $daily, ); } } // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching