diff --git a/php/libraries/NDB_BVL_Instrument_LINST.class.inc b/php/libraries/NDB_BVL_Instrument_LINST.class.inc index 495843a4358..fbebdd2b13d 100644 --- a/php/libraries/NDB_BVL_Instrument_LINST.class.inc +++ b/php/libraries/NDB_BVL_Instrument_LINST.class.inc @@ -675,7 +675,10 @@ class NDB_BVL_Instrument_LINST extends \NDB_BVL_Instrument // The question should be added to the LinstQuestions in this // order, before the _date is stripped below for standard // dates to allow XINValidation to recognize the field name - $this->LinstQuestions[$pieces[1]] = ['type' => 'date']; + $this->LinstQuestions[$pieces[1]] = [ + 'type' => 'date', + 'dateFormat' => $dateFormat, + ]; if ($dateFormat === 'MonthYear') { // Shows date without day of month @@ -978,15 +981,27 @@ class NDB_BVL_Instrument_LINST extends \NDB_BVL_Instrument $q['UserRules'] = true; switch ($q['type']) { + // Selects (including multiselects), Basic Dates and MonthYears + // are the only type of rules that aren't part of a group + // the rest include a _status element case 'select': - // Selects are the only type of rules that aren't part - // of a group, the rest include a _status element $this->XINRegisterRule($question, $rules, $message); break; + case 'date': + if ($q['dateFormat'] === 'BasicDate' + || $q['dateFormat'] === 'MonthYear' + ) { + $this->XINRegisterRule($question, $rules, $message); + break; + } default: + $rules_array = array_merge( + $rules, + [$question.'_status{@}=={@}'] + ); $this->XINRegisterRule( $question, - $rules, + $rules_array, $message, $question . "_group" );