prefix . 'instagram_gallery_posts', $wpdb->prefix . 'instagram_gallery_log', ); foreach ($tables as $table) { $wpdb->query("DROP TABLE IF EXISTS {$table}"); } /** * Delete all transients */ $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_igsp_%' OR option_name LIKE '_transient_timeout_igsp_%'" ); /** * Remove uploaded images directory */ $upload_dir = wp_upload_dir(); $instagram_dir = $upload_dir['basedir'] . '/instagram-gallery'; if (is_dir($instagram_dir)) { igsp_recursive_delete($instagram_dir); } /** * Recursively delete a directory and its contents * * @param string $dir Directory path * @return bool */ function igsp_recursive_delete($dir) { if (!is_dir($dir)) { return false; } $files = array_diff(scandir($dir), array('.', '..')); foreach ($files as $file) { $path = $dir . '/' . $file; if (is_dir($path)) { igsp_recursive_delete($path); } else { unlink($path); } } return rmdir($dir); } /** * Clear scheduled cron events */ $timestamp = wp_next_scheduled('igsp_sync_instagram'); if ($timestamp) { wp_unschedule_event($timestamp, 'igsp_sync_instagram'); } // Clear any remaining cron events wp_clear_scheduled_hook('igsp_sync_instagram'); wp_clear_scheduled_hook('igsp_cleanup_logs'); /** * Flush rewrite rules */ flush_rewrite_rules();