OEModule\PatientTicketing\components\PatientTicketing_API::extractQueueData PHP Method

extractQueueData() public method

Filters and purifies passed array to get data relevant to a ticket queue assignment.
public extractQueueData ( Queue $queue, $data, boolean $validate = false ) : array
$queue OEModule\PatientTicketing\models\Queue
$data
$validate boolean
return array
    public function extractQueueData(Queue $queue, $data, $validate = false)
    {
        $result = array();
        $errors = array();
        $p = new \CHtmlPurifier();
        foreach ($queue->getFormFields() as $field) {
            $field_name = $field['form_name'];
            if (@$field['type'] == 'widget') {
                $class_name = 'OEModule\\PatientTicketing\\widgets\\' . $field['widget_name'];
                $widget = new $class_name();
                if (isset($data[$field['form_name']])) {
                    // if widget is missing don't validate
                    $result[$field_name] = $widget->extractFormData($data[$field['form_name']]);
                    if ($validate) {
                        $errors = array_merge($errors, $widget->validate($data[$field['form_name']]));
                    }
                }
            } else {
                $result[$field_name] = $p->purify(@$data[$field_name]);
                if ($validate) {
                    if ($field['required'] && !@$data[$field_name]) {
                        $errors[$field_name] = $field['label'] . ' is required';
                    } elseif (@$field['choices'] && @$data[$field_name]) {
                        $match = false;
                        foreach ($field['choices'] as $k => $v) {
                            if ($data[$field_name] == $k) {
                                $match = true;
                                break;
                            }
                        }
                        if (!$match) {
                            $errors[$field_name] = $field['label'] . ': invalid choice';
                        }
                    }
                }
            }
        }
        if ($validate) {
            return array($result, $errors);
        } else {
            return $result;
        }
    }