<?php
require_once '../Config/db.php';
$workflow_id = intval($_GET['workflow_id']);
// Get first state for this workflow
$state_sql = "SELECT pk_state FROM workflowManager_State
WHERE fk_Workflow_transitionsThrough = $workflow_id
ORDER BY stateNumber ASC LIMIT 1";
$state_result = mysqli_query($conn, $state_sql);
$state = mysqli_fetch_assoc($state_result);
$state_id = $state['pk_state'] ?? 0;
// Get fields for this state
$fields_sql = "SELECT pk_field, label, type, isOptional, options
FROM workflowManager_Field
WHERE fk_State_appliesTo = $state_id";
$fields_result = mysqli_query($conn, $fields_sql);
function render_field_input($field) {
$field_name = "field_{$field['pk_field']}";
$required_attr = !$field['isOptional'] ? 'required' : '';
switch ($field['type']) {
case 'textarea':
echo "<textarea name='$field_name' $required_attr></textarea>";
return;
case 'select':
// make attrbiute options with type JSON from database into a PHP object
$options = json_decode($field['options'] ?? '[]', true);
echo "<select name='$field_name' $required_attr>";
echo "<option value=''>-- Select --</option>";
foreach ($options as $value => $label) {
$value = htmlspecialchars($value);
$label = htmlspecialchars($label);
echo "<option value='$value'>$label</option>";
}
echo "</select>";
return;
case 'radio':
$options = json_decode($field['options'] ?? '[]', true);
echo "<div class='radio-group'>";
foreach ($options as $value => $label) {
$value = htmlspecialchars($value);
$label = htmlspecialchars($label);
echo "<label><input type='radio' name='$field_name' value='$value' $required_attr> $label</label> ";
}
echo "</div>";
return;
case 'checkbox':
echo "<input type='checkbox' name='$field_name' value='1' $required_attr>";
return;
case 'date':
echo "<input type='date' name='$field_name' $required_attr>";
return;
case 'datetime':
echo "<input type='datetime-local' name='$field_name' $required_attr>";
return;
case 'time':
echo "<input type='time' name='$field_name' $required_attr>";
return;
case 'number':
echo "<input type='number' name='$field_name' $required_attr>";
return;
case 'email':
echo "<input type='email' name='$field_name' $required_attr>";
return;
case 'file':
echo "<input type='file' name='$field_name' $required_attr>";
return;
case 'color':
echo "<input type='color' name='$field_name' $required_attr>";
return;
case 'range':
echo "<input type='range' name='$field_name' $required_attr>";
return;
default:
echo "<input type='text' name='$field_name' $required_attr>";
return;
}
}
?>
<?php while ($field = mysqli_fetch_assoc($fields_result)): ?>
<div class="form-group field-item">
<label>
<?= htmlspecialchars($field['label']) ?>
<?= !$field['isOptional'] ? '<span class="required">*</span>' : '' ?>
</label>
<?php render_field_input($field); ?>
</div>
<?php endwhile; ?>