public function delete_items(WP_REST_Request $request)
 {
     // TODO refactor
     $args = array('older_than_seconds' => $request['older-than-seconds']);
     $db = new WP_REST_API_Log_DB();
     return rest_ensure_response(new WP_REST_API_Log_Delete_Response($db->delete($args)));
 }
 /**
  * Migrates records from the legacy custom tables into custom post type
  *
  * ## OPTIONS
  *
  * ## EXAMPLES
  *
  *     wp rest-api-log migrate
  *
  */
 function migrate()
 {
     WP_CLI::Line("Getting log entries that need to be migrated...");
     $db = new WP_REST_API_Log_DB();
     $ids = $db->get_log_ids_to_migrate();
     $count = count($ids);
     if (0 === $count) {
         WP_CLI::Line("There are no more log entries that need to be migrated.");
         return;
     }
     $progress_bar = WP_CLI\Utils\make_progress_bar("Migrating {$count} entries:", $count, 1);
     $progress_bar->display();
     foreach ($ids as $id) {
         $db->migrate_db_record($id);
         $progress_bar->tick();
     }
     $progress_bar->finish();
     WP_CLI::Success("Log entries migrated");
 }
 public function purge_old_records($days_old = false, $dry_run = false)
 {
     if (empty($days_old)) {
         $days_old = WP_REST_API_Log_Settings_General::setting_get('general', 'purge-days');
     }
     $days_old = absint($days_old);
     if (empty($days_old)) {
         return;
     }
     $db = new WP_REST_API_Log_DB();
     $args = array('fields' => 'ids', 'to' => date('Y-m-d H:i', current_time('timestamp') - DAY_IN_SECONDS * $days_old), 'posts_per_page' => -1);
     $ids = $db->search($args);
     $number_deleted = 0;
     if (!empty($ids) && is_array($ids)) {
         foreach ($ids as $id) {
             if (!$dry_run) {
                 wp_delete_post($id, true);
             }
             $number_deleted++;
         }
     }
     return $number_deleted;
 }