prepare("SELECT id FROM process_instances WHERE processDefinitionId = ? AND personId IN ($placeholders)"); $params = array_merge([$process_id], $person_ids); $stmt->execute($params); $instance_ids = $stmt->fetchAll(PDO::FETCH_COLUMN); if (!empty($instance_ids)) { $instance_placeholders = implode(',', array_fill(0, count($instance_ids), '?')); // Update statuses $stmt_update = $pdo->prepare("UPDATE process_instances SET current_status = ?, lastActivityAt = NOW() WHERE id IN ($instance_placeholders)"); $stmt_update->execute(array_merge([$status], $instance_ids)); // Bulk insert events $event_sql = "INSERT INTO process_events (processInstanceId, event_type, message, createdById) VALUES "; $event_rows = []; $event_params = []; $message = "Status changed to $status"; foreach($instance_ids as $instance_id) { $event_rows[] = "(?, 'status_change', ?, ?)"; $event_params[] = $instance_id; $event_params[] = $message; $event_params[] = $userId; } $event_sql .= implode(', ', $event_rows); $stmt_event = $pdo->prepare($event_sql); $stmt_event->execute($event_params); } $_SESSION['flash_message'] = "Bulk status update completed."; header('Location: process_dashboard.php'); exit;