public function php($data)
 {
     if (!parent::php($data)) {
         return false;
     }
     // Skip unsaved records
     if (!$this->record || !$this->record->exists()) {
         return true;
     }
     // Skip validation if not required
     if (empty($data['Required'])) {
         return;
     }
     // Skip validation if no rules
     $count = EditableCustomRule::get()->filter('ParentID', $this->record->ID)->count();
     if ($count == 0) {
         return true;
     }
     // Both required = true and rules > 0 should error
     $this->validationError('Required_Error', _t("EditableFormFieldValidator.REQUIRED_ERROR", "Form fields cannot be required and have conditional display rules."), 'error');
     return false;
 }
 /**
  * Create or find an existing field with the matched specification
  *
  * @param EditableFormField $field
  * @param string $stage
  * @param string $conditionOption
  * @param string $display
  * @param string $conditionFieldName
  * @param string $value
  * @return EditableCustomRule
  */
 protected function findOrCreateRule(EditableFormField $field, $stage, $conditionOption, $display, $conditionFieldName, $value)
 {
     // Get id of field
     $conditionField = $conditionFieldName ? EditableFormField::get()->filter('Name', $conditionFieldName)->first() : null;
     // If live, search stage record for matching one
     if ($stage === 'Live') {
         $list = Versioned::get_by_stage('EditableCustomRule', 'Stage')->filter(array('ParentID' => $field->ID, 'ConditionFieldID' => $conditionField ? $conditionField->ID : 0, 'Display' => $display, 'ConditionOption' => $conditionOption));
         if ($value) {
             $list = $list->filter('FieldValue', $value);
         } else {
             $list = $list->where('"FieldValue" IS NULL OR "FieldValue" = \'\'');
         }
         $rule = $list->first();
         if ($rule) {
             $rule->write();
             $rule->publish("Stage", "Live");
             return $rule;
         }
     }
     // If none found, or in stage, create new record
     $rule = new EditableCustomRule();
     $rule->ParentID = $field->ID;
     $rule->ConditionFieldID = $conditionField ? $conditionField->ID : 0;
     $rule->Display = $display;
     $rule->ConditionOption = $conditionOption;
     $rule->FieldValue = $value;
     $rule->write();
     return $rule;
 }